diff --git a/AUTHORS b/AUTHORS
index 59ecce0..acf34368 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -1403,8 +1403,9 @@
 Endless Mobile, Inc. <*@endlessm.com>
 EngFlow, Inc. <*@engflow.com>
 Estimote, Inc. <*@estimote.com>
-Facebook, Inc. <*@fb.com>
-Facebook, Inc. <*@oculus.com>
+Meta Platforms, Inc. <*@fb.com>
+Meta Platforms, Inc. <*@meta.com>
+Meta Platforms, Inc. <*@oculus.com>
 Google Inc. <*@google.com>
 Grammarly, Inc. <*@grammarly.com>
 Hewlett-Packard Development Company, L.P. <*@hp.com>
diff --git a/BUILD.gn b/BUILD.gn
index 99ac291..f6ad16d1 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -1439,7 +1439,6 @@
         "//third_party/blink/web_tests/FlagSpecificConfig",
         "//third_party/blink/web_tests/FlagExpectations/",
         "//third_party/blink/web_tests/flag-specific/",
-        "//third_party/blink/web_tests/SmokeTests/",
       ]
     }
   }
@@ -1505,7 +1504,6 @@
         "//third_party/blink/web_tests/FlagSpecificConfig",
         "//third_party/blink/web_tests/FlagExpectations/",
         "//third_party/blink/web_tests/flag-specific/",
-        "//third_party/blink/web_tests/SmokeTests/",
       ]
     }
   }
diff --git a/DEPS b/DEPS
index 3f8303b..90989ed 100644
--- a/DEPS
+++ b/DEPS
@@ -251,7 +251,7 @@
   # luci-go CIPD package version.
   # Make sure the revision is uploaded by infra-packagers builder.
   # https://ci.chromium.org/p/infra-internal/g/infra-packagers/console
-  'luci_go': 'git_revision:c893d7a542f324fe7c1a63c83e57ccea23631ffe',
+  'luci_go': 'git_revision:68db0a380b05a254176063bc957469b5f3e3ee7d',
 
   # This can be overridden, e.g. with custom_vars, to build clang from HEAD
   # instead of downloading the prebuilt pinned revision.
@@ -308,19 +308,19 @@
   # 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': 'f3f2e87572c1540efcb5fcdc0577a5ac1d4a83d7',
+  'skia_revision': '42060c2b591fd809c6569279f6cb9471e383b390',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling V8
   # and whatever else without interference from each other.
-  'v8_revision': '81548eeb2d168bf576ee74db3ab6c18cf378b431',
+  'v8_revision': 'a5fec6ea50cbddae378b8f9dc1f867c4a91557ae',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling ANGLE
   # and whatever else without interference from each other.
-  'angle_revision': '2b3c8aaf1a9326592b4b931784ef9fb31eca5551',
+  'angle_revision': '1b5cf9f05ba33e6f1013fd97e89bb6bdab5a8298',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling SwiftShader
   # and whatever else without interference from each other.
-  'swiftshader_revision': '8e7ad8bdf906f6e2706b4797728340d582f60c46',
+  'swiftshader_revision': 'acdfa394561fda026e627704d16565f36d162749',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling PDFium
   # and whatever else without interference from each other.
@@ -387,7 +387,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': 'e24bc6f45caddd883af3be6ac5de0d8c53e9e4eb',
+  'devtools_frontend_revision': '2a4c4e04b39bc48e9e059ce4d7d72c734862486b',
   # 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.
@@ -423,7 +423,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': '39e4d0df3f8033ca1ad63803b55eccda3b9de7d8',
+  'dawn_revision': 'b68cd1a212de14515b2c13aca2203591b5f2cf2c',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
@@ -491,7 +491,7 @@
 
   # If you change this, also update the libc++ revision in
   # //buildtools/deps_revisions.gni.
-  'libcxx_revision':       'eddc4cee0995875d2d91a944edaa08112174a172',
+  'libcxx_revision':       '31d65528d85f27f0363a4f8c71dc5646fca6eff0',
 
   # GN CIPD package version.
   'gn_version': 'git_revision:b9c6c19be95a3863e02f00f1fe403b2502e345b6',
@@ -690,7 +690,7 @@
       'packages': [
         {
           'package': 'chromium/third_party/updater/chrome_win_x86',
-          'version': 'em43A4AKh3oOpCoZpuUNcLGHrCXvvhbN0ZmH496fxJIC',
+          'version': 'rqP-urpwa5NOuHhuLVNHyT9d_Psk1xDc8ELSstaIkUUC',
         },
       ],
   },
@@ -701,7 +701,7 @@
       'packages': [
         {
           'package': 'chromium/third_party/updater/chrome_win_x86_64',
-          'version': 'DCttrzwwk19ogJm0ex2eqLSWWtSKjvNYwsvCRQsquhAC',
+          'version': '7nSN9jjsZ507lwEcJQKUFM_Z2wHmjJmU3nzo1s-r8-UC',
         },
       ],
   },
@@ -736,7 +736,7 @@
       'packages': [
         {
           'package': 'chromium/third_party/updater/chromium_win_x86',
-          'version': 'uOq6n_KBa1dlVKW_KFtLKAp0Pm6KyZJegG06QbKLbJUC',
+          'version': '2yELAOdPaRyB3HuFsiecHXc4zcXVupx9cLa9ZAh-Z2wC',
         },
       ],
   },
@@ -747,7 +747,7 @@
       'packages': [
         {
           'package': 'chromium/third_party/updater/chromium_win_x86_64',
-          'version': 'wKB8ION1Ag7GToknXXyg9vDJH3-qYafDygZ68-yy-ccC',
+          'version': 'vuc_q-ghg3H11b1O-ENURYlDO8hrcpCc4AuN1Expx3gC',
         },
       ],
   },
@@ -907,7 +907,7 @@
       'packages': [
         {
           'package': 'chromium/rts/model/linux-amd64',
-          'version': 'RV3twOJ8K7WBGlq2B-9Zkbsem7pujW5MDoVf8hznrGwC',
+          'version': 'yIE69wB0f5XdqwOlmxfQdoNs-ayxXJ1SiPr5oir-7xIC',
         },
       ],
       'dep_type': 'cipd',
@@ -918,7 +918,7 @@
       'packages': [
         {
           'package': 'chromium/rts/model/mac-amd64',
-          'version': 'I0RCUqcPKQdL_Pud9K1lYo_MnhvJHbBr7-bLh2KLbvMC',
+          'version': 'HtPtEya0hECwt5SE4qT5W9mLGjstjLpoxIZQ7T3p55cC',
         },
       ],
       'dep_type': 'cipd',
@@ -929,7 +929,7 @@
       'packages': [
         {
           'package': 'chromium/rts/model/windows-amd64',
-          'version': '4gHX9lYR7n7h4tZfqa-j3DShNT8EaTsX22JRCZKVs5gC',
+          'version': 'iUsNYwv2rceaNv_fERIKCD_54IUd7FQSFdRXHL_MCVYC',
         },
       ],
       'dep_type': 'cipd',
@@ -1212,7 +1212,7 @@
   # Tools used when building Chrome for Chrome OS. This affects both the Simple
   # Chrome workflow, as well as the chromeos-chrome ebuild.
   'src/third_party/chromite': {
-      'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + '598848a5bf8af20155e76522560a7a8680639b3b',
+      'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + '5aedd8da0ae2159a81d77158463d6a0da221bde7',
       'condition': 'checkout_chromeos',
   },
 
@@ -1240,13 +1240,13 @@
   },
 
   'src/third_party/depot_tools':
-    Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + 'c9127e51dcc18a2c91968af10ba6303cf9a5abd4',
+    Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '17b26efb65199176f999fc4193a2350be03afc53',
 
   'src/third_party/devtools-frontend/src':
     Var('chromium_git') + '/devtools/devtools-frontend' + '@' + Var('devtools_frontend_revision'),
 
   'src/third_party/devtools-frontend-internal': {
-      'url': 'https://chrome-internal.googlesource.com/devtools/devtools-internal.git' + '@' + 'b8bdc32e47e5f7f72c0dad0b0f52f4e0a0f12117',
+      'url': 'https://chrome-internal.googlesource.com/devtools/devtools-internal.git' + '@' + '13f1232798b513379d69c0592cdb2c87d0e785b4',
     'condition': 'checkout_src_internal',
   },
 
@@ -1661,7 +1661,7 @@
   },
 
   'src/third_party/perfetto':
-    Var('android_git') + '/platform/external/perfetto.git' + '@' + '6f9968b593b7f806a59655e7fa1f3682b5c2f5aa',
+    Var('android_git') + '/platform/external/perfetto.git' + '@' + '626735b5d9b233ae6ce10bf70f7fa397398e103f',
 
   'src/third_party/perl': {
       'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + '6f3e5028eb65d0b4c5fdd792106ac4c84eee1eb3',
@@ -1806,7 +1806,7 @@
       'dep_type': 'cipd',
   },
 
-  'src/third_party/vulkan-deps': '{chromium_git}/vulkan-deps@1172dba338881bb88803651e0f05885d9987335a',
+  'src/third_party/vulkan-deps': '{chromium_git}/vulkan-deps@b8a1b66505f175089378580833f925a3cd34e4f2',
 
   'src/third_party/vulkan_memory_allocator':
     Var('chromium_git') + '/external/github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git' + '@' + 'ebe84bec02c041d28f902da0214bf442743fc907',
@@ -1843,7 +1843,7 @@
     Var('chromium_git') + '/external/khronosgroup/webgl.git' + '@' + 'd1b65aa5a88f6efd900604dfcda840154e9f16e2',
 
   'src/third_party/webgpu-cts/src':
-    Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + 'f0dacbbf2cde8826f3c0fea86f60a7f639af5e03',
+    Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + '74b1f15354f71608a0c08416b21988423e13b65b',
 
   'src/third_party/webrtc':
     Var('webrtc_git') + '/src.git' + '@' + 'b15faaa2640d137d6341b09fd3670813e3aaf99e',
@@ -1873,7 +1873,7 @@
       'packages': [
         {
           'package': 'skia/tools/goldctl/linux-amd64',
-          'version': 'pnprsw4_qiLaFOB3waX424Uaz5zX3MSh6Iz5A3OwpR8C',
+          'version': 'VPUjqZuvMQQmwpM8-FufcGkxocGMs34xB62iXpQ6BuYC',
         },
       ],
       'dep_type': 'cipd',
@@ -1883,7 +1883,7 @@
       'packages': [
         {
           'package': 'skia/tools/goldctl/windows-amd64',
-          'version': 'wEIMZs5miJMkTVDLFMkQjh4dJWrLB4k8VQDU4aUPSwYC',
+          'version': 'FDPEAN3OigJWEnrBFrWb_L1mrYWr4BfeXIHWiB58Hf4C',
         },
       ],
       'dep_type': 'cipd',
@@ -1894,7 +1894,7 @@
       'packages': [
         {
           'package': 'skia/tools/goldctl/mac-amd64',
-          'version': 'qMTthZODlW9LCvkQX3upPhaL6t3VwQcYrs9cDYwP75oC',
+          'version': 'OgVJnj4Oda06vRSiPpPSeZqyNWOigS_0X2lz-Oj7WXgC',
         },
       ],
       'dep_type': 'cipd',
@@ -1905,7 +1905,7 @@
       'packages': [
         {
           'package': 'skia/tools/goldctl/mac-arm64',
-          'version': '3NLkdA7AHyUKOEdv0Dc16lTUNJN9FjFkDIzVXthPsDkC',
+          'version': '_toq6ekAyC0c3H9U-EjwD0j_rL0YDpIGqd8gZZ2W0jEC',
         },
       ],
       'dep_type': 'cipd',
@@ -1916,7 +1916,7 @@
     Var('chromium_git') + '/v8/v8.git' + '@' +  Var('v8_revision'),
 
   'src-internal': {
-    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@655d080a8cb39b75d297f41a6358f7eaccbdaa0a',
+    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@ef12e0c34eecbd74dfb9468491f45d740b0e9179',
     'condition': 'checkout_src_internal',
   },
 
@@ -1935,7 +1935,7 @@
     'packages': [
       {
         'package': 'chromeos_internal/apps/eche_app/app',
-        'version': 'yesiSRdiGQK7STQgGw0zFkf-x7WzV1e1NrQ8w995Wo4C',
+        'version': '9yLWNtuRvV_dzod1dEYo01glLiFRGZ2yqhtYQapXSm4C',
       },
     ],
     'condition': 'checkout_chromeos and checkout_src_internal',
@@ -1946,7 +1946,7 @@
     'packages': [
       {
         'package': 'chromeos_internal/apps/help_app/app',
-        'version': 'LmzU-_ggtC1QiTHwR1qdvtevqtEQQTsC7RSRhMpaK-oC',
+        'version': '_GDTTl1-itmHgAZO4q0yA0rSo9NpOfMLByXDNw0l7rcC',
       },
     ],
     'condition': 'checkout_chromeos and checkout_src_internal',
@@ -1957,7 +1957,7 @@
     'packages': [
       {
         'package': 'chromeos_internal/apps/media_app/app',
-        'version': '78eD6h7EEu9l7TGSA1DwiZSMuGV2JV92PAsIyL2NGMMC',
+        'version': '4ZjRKzLEv-rw1RyqmG7foogCvzHAwN_qiQXIqy6W0IUC',
       },
     ],
     'condition': 'checkout_chromeos and checkout_src_internal',
@@ -2503,6 +2503,17 @@
       'dep_type': 'cipd',
   },
 
+  'src/third_party/android_deps/libs/com_google_android_annotations': {
+      'packages': [
+          {
+              'package': 'chromium/third_party/android_deps/libs/com_google_android_annotations',
+              'version': 'version:2@4.1.1.4.cr1',
+          },
+      ],
+      'condition': 'checkout_android',
+      'dep_type': 'cipd',
+  },
+
   'src/third_party/android_deps/libs/com_google_android_apps_common_testing_accessibility_framework_accessibility_test_framework': {
       'packages': [
           {
@@ -2837,7 +2848,7 @@
       'packages': [
           {
               'package': 'chromium/third_party/android_deps/libs/com_google_code_gson_gson',
-              'version': 'version:2@2.8.0.cr1',
+              'version': 'version:2@2.9.0.cr1',
           },
       ],
       'condition': 'checkout_android',
@@ -3134,7 +3145,7 @@
       'packages': [
           {
               'package': 'chromium/third_party/android_deps/libs/com_google_guava_guava_android',
-              'version': 'version:2@31.0-android.cr1',
+              'version': 'version:2@31.1-android.cr1',
           },
       ],
       'condition': 'checkout_android',
@@ -3178,7 +3189,7 @@
       'packages': [
           {
               'package': 'chromium/third_party/android_deps/libs/com_google_protobuf_protobuf_javalite',
-              'version': 'version:2@3.19.3.cr1',
+              'version': 'version:2@3.21.1.cr1',
           },
       ],
       'condition': 'checkout_android',
@@ -3229,6 +3240,83 @@
       'dep_type': 'cipd',
   },
 
+  'src/third_party/android_deps/libs/io_grpc_grpc_api': {
+      'packages': [
+          {
+              'package': 'chromium/third_party/android_deps/libs/io_grpc_grpc_api',
+              'version': 'version:2@1.49.0.cr1',
+          },
+      ],
+      'condition': 'checkout_android',
+      'dep_type': 'cipd',
+  },
+
+  'src/third_party/android_deps/libs/io_grpc_grpc_binder': {
+      'packages': [
+          {
+              'package': 'chromium/third_party/android_deps/libs/io_grpc_grpc_binder',
+              'version': 'version:2@1.49.0.cr1',
+          },
+      ],
+      'condition': 'checkout_android',
+      'dep_type': 'cipd',
+  },
+
+  'src/third_party/android_deps/libs/io_grpc_grpc_context': {
+      'packages': [
+          {
+              'package': 'chromium/third_party/android_deps/libs/io_grpc_grpc_context',
+              'version': 'version:2@1.49.0.cr1',
+          },
+      ],
+      'condition': 'checkout_android',
+      'dep_type': 'cipd',
+  },
+
+  'src/third_party/android_deps/libs/io_grpc_grpc_core': {
+      'packages': [
+          {
+              'package': 'chromium/third_party/android_deps/libs/io_grpc_grpc_core',
+              'version': 'version:2@1.49.0.cr1',
+          },
+      ],
+      'condition': 'checkout_android',
+      'dep_type': 'cipd',
+  },
+
+  'src/third_party/android_deps/libs/io_grpc_grpc_protobuf_lite': {
+      'packages': [
+          {
+              'package': 'chromium/third_party/android_deps/libs/io_grpc_grpc_protobuf_lite',
+              'version': 'version:2@1.49.0.cr1',
+          },
+      ],
+      'condition': 'checkout_android',
+      'dep_type': 'cipd',
+  },
+
+  'src/third_party/android_deps/libs/io_grpc_grpc_stub': {
+      'packages': [
+          {
+              'package': 'chromium/third_party/android_deps/libs/io_grpc_grpc_stub',
+              'version': 'version:2@1.49.0.cr1',
+          },
+      ],
+      'condition': 'checkout_android',
+      'dep_type': 'cipd',
+  },
+
+  'src/third_party/android_deps/libs/io_perfmark_perfmark_api': {
+      'packages': [
+          {
+              'package': 'chromium/third_party/android_deps/libs/io_perfmark_perfmark_api',
+              'version': 'version:2@0.25.0.cr1',
+          },
+      ],
+      'condition': 'checkout_android',
+      'dep_type': 'cipd',
+  },
+
   'src/third_party/android_deps/libs/javax_annotation_javax_annotation_api': {
       'packages': [
           {
@@ -3376,7 +3464,7 @@
       'packages': [
           {
               'package': 'chromium/third_party/android_deps/libs/org_codehaus_mojo_animal_sniffer_annotations',
-              'version': 'version:2@1.17.cr1',
+              'version': 'version:2@1.21.cr1',
           },
       ],
       'condition': 'checkout_android',
diff --git a/WATCHLISTS b/WATCHLISTS
index 497c431..36e3e63 100644
--- a/WATCHLISTS
+++ b/WATCHLISTS
@@ -758,7 +758,6 @@
                   '|chromeos/ash/components/hid_detection/'\
                   '|chromeos/ash/services/bluetooth_config/'\
                   '|chrome/browser/ui/webui/chromeos/bluetooth'\
-                  '|chrome/browser/resources/settings/chromeos/bluetooth_page/'\
                   '|chrome/browser/resources/settings/chromeos/os_bluetooth_page/'\
                   '|chrome/browser/resources/chromeos/bluetooth_pairing_dialog/'\
                   '|chrome/test/data/webui/cr_components/chromeos/bluetooth/'\
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 e78b780..535189d 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
@@ -379,7 +379,8 @@
                     "Switches skia to use DMSAA instead of MSAA for tile raster"),
             Flag.baseFeature(
                     CcFeatures.AVOID_RASTER_DURING_ELASTIC_OVERSCROLL, "No effect on webview"),
-
+            Flag.baseFeature(BlinkFeatures.DOCUMENT_EVENT_NODE_PATH_CACHING,
+                    "Enables a performance optimization that caches event paths."),
             // Add new commandline switches and features above. The final entry should have a
             // trailing comma for cleaner diffs.
     };
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AwAutofillTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/AwAutofillTest.java
index 76aa035..d0c2f63 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/AwAutofillTest.java
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/AwAutofillTest.java
@@ -2258,6 +2258,7 @@
     @Test
     @SmallTest
     @Feature({"AndroidWebView"})
+    @DisabledTest(message = "https://crbug.com/1372519")
     public void testServerPredictionArrivesBeforeAutofillStart() throws Throwable {
         final String data = "<html><head></head><body><form action='a.html' name='formname'>"
                 + "<input type='text' id='text1' name='username'>"
@@ -2361,6 +2362,7 @@
     @Test
     @SmallTest
     @Feature({"AndroidWebView"})
+    @DisabledTest(message = "https://crbug.com/1372519")
     public void testServerPredictionArrivesAfterAutofillStart() throws Throwable {
         final String data = "<html><head></head><body><form action='a.html' name='formname'>"
                 + "<input type='text' id='text1' name='username'>"
@@ -2497,6 +2499,7 @@
     @Test
     @SmallTest
     @Feature({"AndroidWebView"})
+    @DisabledTest(message = "https://crbug.com/1372519")
     public void testServerPredictionArrivesBeforeCallbackRegistered() throws Throwable {
         final String data = "<html><head></head><body><form action='a.html' name='formname'>"
                 + "<input type='text' id='text1' name='username'>"
diff --git a/ash/BUILD.gn b/ash/BUILD.gn
index 7f338d5..cd20ec4 100644
--- a/ash/BUILD.gn
+++ b/ash/BUILD.gn
@@ -1115,8 +1115,6 @@
     "system/bluetooth/bluetooth_detailed_view_controller.h",
     "system/bluetooth/bluetooth_detailed_view_impl.cc",
     "system/bluetooth/bluetooth_detailed_view_impl.h",
-    "system/bluetooth/bluetooth_detailed_view_legacy.cc",
-    "system/bluetooth/bluetooth_detailed_view_legacy.h",
     "system/bluetooth/bluetooth_device_list_controller.cc",
     "system/bluetooth/bluetooth_device_list_controller.h",
     "system/bluetooth/bluetooth_device_list_controller_impl.cc",
@@ -1133,20 +1131,8 @@
     "system/bluetooth/bluetooth_disabled_detailed_view.h",
     "system/bluetooth/bluetooth_feature_pod_controller.cc",
     "system/bluetooth/bluetooth_feature_pod_controller.h",
-    "system/bluetooth/bluetooth_feature_pod_controller_legacy.cc",
-    "system/bluetooth/bluetooth_feature_pod_controller_legacy.h",
     "system/bluetooth/bluetooth_notification_controller.cc",
     "system/bluetooth/bluetooth_notification_controller.h",
-    "system/bluetooth/bluetooth_power_controller.cc",
-    "system/bluetooth/bluetooth_power_controller.h",
-    "system/bluetooth/tray_bluetooth_helper.cc",
-    "system/bluetooth/tray_bluetooth_helper.h",
-    "system/bluetooth/tray_bluetooth_helper_experimental.cc",
-    "system/bluetooth/tray_bluetooth_helper_experimental.h",
-    "system/bluetooth/tray_bluetooth_helper_legacy.cc",
-    "system/bluetooth/tray_bluetooth_helper_legacy.h",
-    "system/bluetooth/unified_bluetooth_detailed_view_controller.cc",
-    "system/bluetooth/unified_bluetooth_detailed_view_controller.h",
     "system/brightness/brightness_controller_chromeos.cc",
     "system/brightness/brightness_controller_chromeos.h",
     "system/brightness/unified_brightness_slider_controller.cc",
@@ -2854,13 +2840,10 @@
     "system/bluetooth/bluetooth_disabled_detailed_view_unittest.cc",
     "system/bluetooth/bluetooth_feature_pod_controller_unittest.cc",
     "system/bluetooth/bluetooth_notification_controller_unittest.cc",
-    "system/bluetooth/bluetooth_power_controller_unittest.cc",
     "system/bluetooth/fake_bluetooth_detailed_view.cc",
     "system/bluetooth/fake_bluetooth_detailed_view.h",
     "system/bluetooth/fake_bluetooth_device_list_controller.cc",
     "system/bluetooth/fake_bluetooth_device_list_controller.h",
-    "system/bluetooth/tray_bluetooth_helper_legacy_unittest.cc",
-    "system/bluetooth/unified_bluetooth_detailed_view_controller_unittest.cc",
     "system/camera/autozoom_toast_controller_unittest.cc",
     "system/caps_lock_notification_controller_unittest.cc",
     "system/channel_indicator/channel_indicator_quick_settings_view_unittest.cc",
diff --git a/ash/accelerators/accelerator_table.h b/ash/accelerators/accelerator_table.h
index 2abedcf..0f2a829f 100644
--- a/ash/accelerators/accelerator_table.h
+++ b/ash/accelerators/accelerator_table.h
@@ -175,14 +175,200 @@
 
 // A map between accelerator action id and accelerator description ID.
 // Adding a new accelerator must add a new entry to this map.
-ASH_EXPORT constexpr auto kAccelerateActionToStringIdMap =
+ASH_EXPORT constexpr auto kAcceleratorActionToStringIdMap =
     base::MakeFixedFlatMap<AcceleratorAction, int>({
         {BRIGHTNESS_DOWN, IDS_ASH_ACCELERATOR_ACTION_BRIGHTNESS_DOWN},
         {BRIGHTNESS_UP, IDS_ASH_ACCELERATOR_ACTION_BRIGHTNESS_UP},
+        {CYCLE_BACKWARD_MRU, IDS_ASH_ACCELERATOR_ACTION_CYCLE_BACKWARD_MRU},
+        {CYCLE_FORWARD_MRU, IDS_ASH_ACCELERATOR_ACTION_CYCLE_FORWARD_MRU},
         {DESKS_ACTIVATE_DESK_LEFT,
          IDS_ASH_ACCELERATOR_ACTION_DESKS_ACTIVATE_DESK_LEFT},
         {DESKS_ACTIVATE_DESK_RIGHT,
          IDS_ASH_ACCELERATOR_ACTION_DESKS_ACTIVATE_DESK_RIGHT},
+        {DESKS_MOVE_ACTIVE_ITEM_LEFT,
+         IDS_ASH_ACCELERATOR_ACTION_DESKS_MOVE_ACTIVE_ITEM_LEFT},
+        {DESKS_MOVE_ACTIVE_ITEM_RIGHT,
+         IDS_ASH_ACCELERATOR_ACTION_DESKS_MOVE_ACTIVE_ITEM_RIGHT},
+        {DESKS_NEW_DESK, IDS_ASH_ACCELERATOR_ACTION_DESKS_NEW_DESK},
+        {DESKS_REMOVE_CURRENT_DESK,
+         IDS_ASH_ACCELERATOR_ACTION_DESKS_REMOVE_CURRENT_DESK},
+        {DESKS_ACTIVATE_0, IDS_ASH_ACCELERATOR_ACTION_DESKS_ACTIVATE},
+        {DESKS_ACTIVATE_1, IDS_ASH_ACCELERATOR_ACTION_DESKS_ACTIVATE},
+        {DESKS_ACTIVATE_2, IDS_ASH_ACCELERATOR_ACTION_DESKS_ACTIVATE},
+        {DESKS_ACTIVATE_3, IDS_ASH_ACCELERATOR_ACTION_DESKS_ACTIVATE},
+        {DESKS_ACTIVATE_4, IDS_ASH_ACCELERATOR_ACTION_DESKS_ACTIVATE},
+        {DESKS_ACTIVATE_5, IDS_ASH_ACCELERATOR_ACTION_DESKS_ACTIVATE},
+        {DESKS_ACTIVATE_6, IDS_ASH_ACCELERATOR_ACTION_DESKS_ACTIVATE},
+        {DESKS_ACTIVATE_7, IDS_ASH_ACCELERATOR_ACTION_DESKS_ACTIVATE},
+        {DESKS_TOGGLE_ASSIGN_TO_ALL_DESKS,
+         IDS_ASH_ACCELERATOR_ACTIONDESKS_TOGGLE_ASSIGN_TO_ALL_DESKS},
+        {DISABLE_CAPS_LOCK, IDS_ASH_ACCELERATOR_ACTION_DISABLE_CAPS_LOCK},
+        {EXIT, IDS_ASH_ACCELERATOR_ACTION_EXIT},
+        {FOCUS_CAMERA_PREVIEW, IDS_ASH_ACCELERATOR_ACTION_FOCUS_CAMERA_PREVIEW},
+        {FOCUS_NEXT_PANE, IDS_ASH_ACCELERATOR_ACTION_FOCUS_NEXT_PANE},
+        {FOCUS_PREVIOUS_PANE, IDS_ASH_ACCELERATOR_ACTION_FOCUS_PREVIOUS_PANE},
+        {FOCUS_SHELF, IDS_ASH_ACCELERATOR_ACTION_FOCUS_SHELF},
+        {FOCUS_PIP, IDS_ASH_ACCELERATOR_ACTION_FOCUS_PIP},
+        {KEYBOARD_BACKLIGHT_TOGGLE,
+         IDS_ASH_ACCELERATOR_ACTION_KEYBOARD_BACKLIGHT_TOGGLE},
+        {KEYBOARD_BRIGHTNESS_DOWN,
+         IDS_ASH_ACCELERATOR_ACTION_KEYBOARD_BRIGHTNESS_DOWN},
+        {KEYBOARD_BRIGHTNESS_UP,
+         IDS_ASH_ACCELERATOR_ACTION_KEYBOARD_BRIGHTNESS_UP},
+        {LAUNCH_APP_0, IDS_ASH_ACCELERATOR_ACTION_LAUNCH_APP},
+        {LAUNCH_APP_1, IDS_ASH_ACCELERATOR_ACTION_LAUNCH_APP},
+        {LAUNCH_APP_2, IDS_ASH_ACCELERATOR_ACTION_LAUNCH_APP},
+        {LAUNCH_APP_3, IDS_ASH_ACCELERATOR_ACTION_LAUNCH_APP},
+        {LAUNCH_APP_4, IDS_ASH_ACCELERATOR_ACTION_LAUNCH_APP},
+        {LAUNCH_APP_5, IDS_ASH_ACCELERATOR_ACTION_LAUNCH_APP},
+        {LAUNCH_APP_6, IDS_ASH_ACCELERATOR_ACTION_LAUNCH_APP},
+        {LAUNCH_APP_7, IDS_ASH_ACCELERATOR_ACTION_LAUNCH_APP},
+        {LAUNCH_LAST_APP, IDS_ASH_ACCELERATOR_ACTION_LAUNCH_LAST_APP},
+        {LOCK_PRESSED, IDS_ASH_ACCELERATOR_ACTION_LOCK_PRESSED},
+        {LOCK_RELEASED, IDS_ASH_ACCELERATOR_ACTION_LOCK_RELEASED},
+        {LOCK_SCREEN, IDS_ASH_ACCELERATOR_ACTION_LOCK_SCREEN},
+        {MAGNIFIER_ZOOM_IN, IDS_ASH_ACCELERATOR_ACTION_MAGNIFIER_ZOOM_IN},
+        {MAGNIFIER_ZOOM_OUT, IDS_ASH_ACCELERATOR_ACTION_MAGNIFIER_ZOOM_OUT},
+        {MEDIA_FAST_FORWARD, IDS_ASH_ACCELERATOR_ACTION_MEDIA_FAST_FORWARD},
+        {MEDIA_NEXT_TRACK, IDS_ASH_ACCELERATOR_ACTION_MEDIA_NEXT_TRACK},
+        {MEDIA_PAUSE, IDS_ASH_ACCELERATOR_ACTION_MEDIA_PAUSE},
+        {MEDIA_PLAY, IDS_ASH_ACCELERATOR_ACTION_MEDIA_PLAY},
+        {MEDIA_PLAY_PAUSE, IDS_ASH_ACCELERATOR_ACTION_MEDIA_PLAY_PAUSE},
+        {MEDIA_PREV_TRACK, IDS_ASH_ACCELERATOR_ACTION_MEDIA_PREV_TRACK},
+        {MEDIA_REWIND, IDS_ASH_ACCELERATOR_ACTION_MEDIA_REWIND},
+        {MEDIA_STOP, IDS_ASH_ACCELERATOR_ACTION_MEDIA_STOP},
+        {MICROPHONE_MUTE_TOGGLE,
+         IDS_ASH_ACCELERATOR_ACTION_MICROPHONE_MUTE_TOGGLE},
+        {MOVE_ACTIVE_WINDOW_BETWEEN_DISPLAYS,
+         IDS_ASH_ACCELERATOR_ACTION_MOVE_ACTIVE_WINDOW_BETWEEN_DISPLAYS},
+        {NEW_INCOGNITO_WINDOW, IDS_ASH_ACCELERATOR_ACTION_NEW_INCOGNITO_WINDOW},
+        {NEW_TAB, IDS_ASH_ACCELERATOR_ACTION_NEW_TAB},
+        {NEW_WINDOW, IDS_ASH_ACCELERATOR_ACTION_NEW_WINDOW},
+        {OPEN_CALCULATOR, IDS_ASH_ACCELERATOR_ACTION_OPEN_CALCULATOR},
+        {OPEN_CROSH, IDS_ASH_ACCELERATOR_ACTION_OPEN_CROSH},
+        {OPEN_DIAGNOSTICS, IDS_ASH_ACCELERATOR_ACTION_OPEN_DIAGNOSTICS},
+        {OPEN_FEEDBACK_PAGE, IDS_ASH_ACCELERATOR_ACTION_OPEN_FEEDBACK_PAGE},
+        {OPEN_FILE_MANAGER, IDS_ASH_ACCELERATOR_ACTION_OPEN_FILE_MANAGER},
+        {OPEN_GET_HELP, IDS_ASH_ACCELERATOR_ACTION_OPEN_GET_HELP},
+        {POWER_PRESSED, IDS_ASH_ACCELERATOR_ACTION_POWER_PRESSED},
+        {POWER_RELEASED, IDS_ASH_ACCELERATOR_ACTION_POWER_RELEASED},
+        {PRINT_UI_HIERARCHIES, IDS_ASH_ACCELERATOR_ACTION_PRINT_UI_HIERARCHIES},
+        {PRIVACY_SCREEN_TOGGLE,
+         IDS_ASH_ACCELERATOR_ACTION_PRIVACY_SCREEN_TOGGLE},
+        {RESTORE_TAB, IDS_ASH_ACCELERATOR_ACTION_RESTORE_TAB},
+        {ROTATE_SCREEN, IDS_ASH_ACCELERATOR_ACTION_ROTATE_SCREEN},
+        {ROTATE_WINDOW, IDS_ASH_ACCELERATOR_ACTION_ROTATE_WINDOW},
+        {SCALE_UI_DOWN, IDS_ASH_ACCELERATOR_ACTION_SCALE_UI_DOWN},
+        {SCALE_UI_RESET, IDS_ASH_ACCELERATOR_ACTION_SCALE_UI_RESET},
+        {SCALE_UI_UP, IDS_ASH_ACCELERATOR_ACTION_SCALE_UI_UP},
+        {SHOW_EMOJI_PICKER, IDS_ASH_ACCELERATOR_ACTION_SHOW_EMOJI_PICKER},
+        {TOGGLE_IME_MENU_BUBBLE,
+         IDS_ASH_ACCELERATOR_ACTION_TOGGLE_IME_MENU_BUBBLE},
+        {SHOW_SHORTCUT_VIEWER, IDS_ASH_ACCELERATOR_ACTION_SHOW_SHORTCUT_VIEWER},
+        {SHOW_STYLUS_TOOLS, IDS_ASH_ACCELERATOR_ACTION_SHOW_STYLUS_TOOLS},
+        {SHOW_TASK_MANAGER, IDS_ASH_ACCELERATOR_ACTION_SHOW_TASK_MANAGER},
+        {START_AMBIENT_MODE, IDS_ASH_ACCELERATOR_ACTION_START_AMBIENT_MODE},
+        {START_ASSISTANT, IDS_ASH_ACCELERATOR_ACTION_START_ASSISTANT},
+        {SUSPEND, IDS_ASH_ACCELERATOR_ACTION_SUSPEND},
+        {SWAP_PRIMARY_DISPLAY, IDS_ASH_ACCELERATOR_ACTION_SWAP_PRIMARY_DISPLAY},
+        {SWITCH_IME, IDS_ASH_ACCELERATOR_ACTION_SWITCH_IME},
+        {SWITCH_TO_LAST_USED_IME,
+         IDS_ASH_ACCELERATOR_ACTION_SWITCH_TO_LAST_USED_IME},
+        {SWITCH_TO_NEXT_IME, IDS_ASH_ACCELERATOR_ACTION_SWITCH_TO_NEXT_IME},
+        {SWITCH_TO_NEXT_USER, IDS_ASH_ACCELERATOR_ACTION_SWITCH_TO_NEXT_USER},
+        {SWITCH_TO_PREVIOUS_USER,
+         IDS_ASH_ACCELERATOR_ACTION_SWITCH_TO_PREVIOUS_USER},
+        {TAKE_PARTIAL_SCREENSHOT,
+         IDS_ASH_ACCELERATOR_ACTION_TAKE_PARTIAL_SCREENSHOT},
+        {TAKE_SCREENSHOT, IDS_ASH_ACCELERATOR_ACTION_TAKE_SCREENSHOT},
+        {TAKE_WINDOW_SCREENSHOT,
+         IDS_ASH_ACCELERATOR_ACTION_TAKE_WINDOW_SCREENSHOT},
+        {TOGGLE_APP_LIST, IDS_ASH_ACCELERATOR_ACTION_TOGGLE_APP_LIST},
+        {TOGGLE_CALENDAR, IDS_ASH_ACCELERATOR_ACTION_TOGGLE_CALENDAR},
+        {TOGGLE_CAPS_LOCK, IDS_ASH_ACCELERATOR_ACTION_TOGGLE_CAPS_LOCK},
+        {TOGGLE_CLIPBOARD_HISTORY,
+         IDS_ASH_ACCELERATOR_ACTION_TOGGLE_CLIPBOARD_HISTORY},
+        {TOGGLE_DICTATION, IDS_ASH_ACCELERATOR_ACTION_TOGGLE_DICTATION},
+        {TOGGLE_DOCKED_MAGNIFIER,
+         IDS_ASH_ACCELERATOR_ACTION_TOGGLE_DOCKED_MAGNIFIER},
+        {TOGGLE_FLOATING, IDS_ASH_ACCELERATOR_ACTION_TOGGLE_FLOATING},
+        {TOGGLE_FULLSCREEN, IDS_ASH_ACCELERATOR_ACTION_TOGGLE_FULLSCREEN},
+        {TOGGLE_FULLSCREEN_MAGNIFIER,
+         IDS_ASH_ACCELERATOR_ACTION_TOGGLE_FULLSCREEN_MAGNIFIER},
+        {TOGGLE_HIGH_CONTRAST, IDS_ASH_ACCELERATOR_ACTION_TOGGLE_HIGH_CONTRAST},
+        {TOGGLE_MAXIMIZED, IDS_ASH_ACCELERATOR_ACTION_TOGGLE_MAXIMIZED},
+        {TOGGLE_MESSAGE_CENTER_BUBBLE,
+         IDS_ASH_ACCELERATOR_ACTION_TOGGLE_MESSAGE_CENTER_BUBBLE},
+        {TOGGLE_MIRROR_MODE, IDS_ASH_ACCELERATOR_ACTION_TOGGLE_MIRROR_MODE},
+        {TOGGLE_OVERVIEW, IDS_ASH_ACCELERATOR_ACTION_TOGGLE_OVERVIEW},
+        {TOGGLE_PROJECTOR_MARKER,
+         IDS_ASH_ACCELERATOR_ACTION_TOGGLE_PROJECTOR_MARKER},
+        {TOGGLE_RESIZE_LOCK_MENU,
+         IDS_ASH_ACCELERATOR_ACTION_TOGGLE_RESIZE_LOCK_MENU},
+        {TOGGLE_SPOKEN_FEEDBACK,
+         IDS_ASH_ACCELERATOR_ACTION_TOGGLE_SPOKEN_FEEDBACK},
+        {TOGGLE_SYSTEM_TRAY_BUBBLE,
+         IDS_ASH_ACCELERATOR_ACTION_TOGGLE_SYSTEM_TRAY_BUBBLE},
+        {TOGGLE_WIFI, IDS_ASH_ACCELERATOR_ACTION_TOGGLE_WIFI},
+        {TOUCH_HUD_CLEAR, IDS_ASH_ACCELERATOR_ACTION_TOUCH_HUD_CLEAR},
+        {TOUCH_HUD_MODE_CHANGE,
+         IDS_ASH_ACCELERATOR_ACTION_TOUCH_HUD_MODE_CHANGE},
+        {UNPIN, IDS_ASH_ACCELERATOR_ACTION_UNPIN},
+        {VOLUME_DOWN, IDS_ASH_ACCELERATOR_ACTION_VOLUME_DOWN},
+        {VOLUME_MUTE, IDS_ASH_ACCELERATOR_ACTION_VOLUME_MUTE},
+        {VOLUME_UP, IDS_ASH_ACCELERATOR_ACTION_VOLUME_UP},
+        {WINDOW_CYCLE_SNAP_LEFT,
+         IDS_ASH_ACCELERATOR_ACTION_WINDOW_CYCLE_SNAP_LEFT},
+        {WINDOW_CYCLE_SNAP_RIGHT,
+         IDS_ASH_ACCELERATOR_ACTION_WINDOW_CYCLE_SNAP_RIGHT},
+        {WINDOW_MINIMIZE, IDS_ASH_ACCELERATOR_ACTION_WINDOW_MINIMIZE},
+        {MINIMIZE_TOP_WINDOW_ON_BACK,
+         IDS_ASH_ACCELERATOR_ACTION_MINIMIZE_TOP_WINDOW_ON_BACK},
+        {DEBUG_DUMP_CALENDAR_MODEL,
+         IDS_ASH_ACCELERATOR_ACTION_DEBUG_DUMP_CALENDAR_MODEL},
+        {DEBUG_KEYBOARD_BACKLIGHT_TOGGLE,
+         IDS_ASH_ACCELERATOR_ACTION_DEBUG_KEYBOARD_BACKLIGHT_TOGGLE},
+        {DEBUG_MICROPHONE_MUTE_TOGGLE,
+         IDS_ASH_ACCELERATOR_ACTION_DEBUG_MICROPHONE_MUTE_TOGGLE},
+        {DEBUG_PRINT_LAYER_HIERARCHY,
+         IDS_ASH_ACCELERATOR_ACTION_DEBUG_PRINT_LAYER_HIERARCHY},
+        {DEBUG_PRINT_VIEW_HIERARCHY,
+         IDS_ASH_ACCELERATOR_ACTION_DEBUG_PRINT_VIEW_HIERARCHY},
+        {DEBUG_PRINT_WINDOW_HIERARCHY,
+         IDS_ASH_ACCELERATOR_ACTION_DEBUG_PRINT_WINDOW_HIERARCHY},
+        {DEBUG_SHOW_TOAST, IDS_ASH_ACCELERATOR_ACTION_DEBUG_SHOW_TOAST},
+        {DEBUG_TUCK_FLOATED_WINDOW_LEFT,
+         IDS_ASH_ACCELERATOR_ACTION_DEBUG_TUCK_FLOATED_WINDOW_LEFT},
+        {DEBUG_TUCK_FLOATED_WINDOW_RIGHT,
+         IDS_ASH_ACCELERATOR_ACTION_DEBUG_TUCK_FLOATED_WINDOW_RIGHT},
+        {DEBUG_TOGGLE_DARK_MODE,
+         IDS_ASH_ACCELERATOR_ACTION_DEBUG_TOGGLE_DARK_MODE},
+        {DEBUG_TOGGLE_DYNAMIC_COLOR,
+         IDS_ASH_ACCELERATOR_ACTION_DEBUG_TOGGLE_DYNAMIC_COLOR},
+        {DEBUG_TOGGLE_GLANCEABLES,
+         IDS_ASH_ACCELERATOR_ACTION_DEBUG_TOGGLE_GLANCEABLES},
+        {DEBUG_TOGGLE_SHOW_DEBUG_BORDERS,
+         IDS_ASH_ACCELERATOR_ACTION_DEBUG_TOGGLE_SHOW_DEBUG_BORDERS},
+        {DEBUG_TOGGLE_SHOW_FPS_COUNTER,
+         IDS_ASH_ACCELERATOR_ACTION_DEBUG_TOGGLE_SHOW_FPS_COUNTER},
+        {DEBUG_TOGGLE_SHOW_PAINT_RECTS,
+         IDS_ASH_ACCELERATOR_ACTION_DEBUG_TOGGLE_SHOW_PAINT_RECTS},
+        {DEBUG_TOGGLE_TOUCH_PAD,
+         IDS_ASH_ACCELERATOR_ACTION_DEBUG_TOGGLE_TOUCH_PAD},
+        {DEBUG_TOGGLE_TOUCH_SCREEN,
+         IDS_ASH_ACCELERATOR_ACTION_DEBUG_TOGGLE_TOUCH_SCREEN},
+        {DEBUG_TOGGLE_TABLET_MODE,
+         IDS_ASH_ACCELERATOR_ACTION_DEBUG_TOGGLE_TABLET_MODE},
+        {DEBUG_TOGGLE_WALLPAPER_MODE,
+         IDS_ASH_ACCELERATOR_ACTION_DEBUG_TOGGLE_WALLPAPER_MODE},
+        {DEBUG_TRIGGER_CRASH, IDS_ASH_ACCELERATOR_ACTION_DEBUG_TRIGGER_CRASH},
+        {DEBUG_TOGGLE_HUD_DISPLAY,
+         IDS_ASH_ACCELERATOR_ACTION_DEBUG_TOGGLE_HUD_DISPLAY},
+        {DEV_ADD_REMOVE_DISPLAY,
+         IDS_ASH_ACCELERATOR_ACTION_DEV_ADD_REMOVE_DISPLAY},
+        {DEV_TOGGLE_APP_LIST, IDS_ASH_ACCELERATOR_ACTION_DEV_TOGGLE_APP_LIST},
+        {DEV_TOGGLE_UNIFIED_DESKTOP,
+         IDS_ASH_ACCELERATOR_ACTION_DEV_TOGGLE_UNIFIED_DESKTOP},
     });
 
 }  // namespace ash
diff --git a/ash/accelerators/ash_accelerator_configuration.cc b/ash/accelerators/ash_accelerator_configuration.cc
index d845129..0cf73991 100644
--- a/ash/accelerators/ash_accelerator_configuration.cc
+++ b/ash/accelerators/ash_accelerator_configuration.cc
@@ -17,6 +17,7 @@
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/utf_string_conversions.h"
 #include "ui/base/accelerators/accelerator.h"
+#include "ui/base/l10n/l10n_util.h"
 #include "ui/base/ui_base_features.h"
 
 namespace {
@@ -220,12 +221,8 @@
       mojom::AcceleratorLayoutInfo::New();
   layout_info->category = layout_details.category;
   layout_info->sub_category = layout_details.sub_category;
-  // TODO(jimmyxgong): Create a mapping between action_id and description.
-  const std::string stub_description =
-      base::StrCat({"action: ", base::NumberToString(data.action),
-                    " : keycode: ", base::NumberToString(data.keycode),
-                    " : modifiers: ", base::NumberToString(data.modifiers)});
-  layout_info->description = base::UTF8ToUTF16(stub_description);
+  layout_info->description = l10n_util::GetStringUTF16(
+      kAcceleratorActionToStringIdMap.at(data.action));
   layout_info->style = layout_details.layout_style;
   layout_info->source = mojom::AcceleratorSource::kAsh;
   layout_info->action = static_cast<uint32_t>(data.action);
diff --git a/ash/accelerators/ash_accelerator_configuration_unittest.cc b/ash/accelerators/ash_accelerator_configuration_unittest.cc
index f7007b4..a63b034 100644
--- a/ash/accelerators/ash_accelerator_configuration_unittest.cc
+++ b/ash/accelerators/ash_accelerator_configuration_unittest.cc
@@ -191,4 +191,19 @@
   ValidateAcceleratorLayouts(actual_layouts);
 }
 
+TEST_F(AshAcceleratorConfigurationTest,
+       ValidatekAcceleratorActionToStringIdMap) {
+  // Initialize with all default accelerators.
+  config_->Initialize();
+  const std::vector<mojom::AcceleratorLayoutInfoPtr>& layouts =
+      config_->GetAcceleratorLayoutInfos();
+
+  for (const auto& layout : layouts) {
+    // kAcceleratorActionToStringIdMap should contain all actions in
+    // AcceleratorAction. Adding a new accelerator must add a new entry to this
+    // map.
+    EXPECT_TRUE(ash::kAcceleratorActionToStringIdMap.contains(layout->action))
+        << "Unknown accelerator action id: " << layout->action;
+  }
+}
 }  // namespace ash
diff --git a/ash/ambient/ui/media_string_view.cc b/ash/ambient/ui/media_string_view.cc
index a8d727f..68951a18 100644
--- a/ash/ambient/ui/media_string_view.cc
+++ b/ash/ambient/ui/media_string_view.cc
@@ -44,63 +44,6 @@
 
 namespace {
 
-// A layer delegate used for mask layer, with left and right gradient fading out
-// zones.
-class FadeoutLayerDelegate : public ui::LayerDelegate {
- public:
-  FadeoutLayerDelegate() : layer_(ui::LAYER_TEXTURED) {
-    layer_.set_delegate(this);
-    layer_.SetFillsBoundsOpaquely(false);
-  }
-
-  ~FadeoutLayerDelegate() override { layer_.set_delegate(nullptr); }
-
-  ui::Layer* layer() { return &layer_; }
-
- private:
-  // ui::LayerDelegate:
-  void OnPaintLayer(const ui::PaintContext& context) override {
-    const gfx::Size& size = layer()->size();
-    gfx::Rect left_rect(0, 0, kMediaStringGradientWidthDip, size.height());
-    gfx::Rect right_rect(size.width() - kMediaStringGradientWidthDip, 0,
-                         kMediaStringGradientWidthDip, size.height());
-
-    views::PaintInfo paint_info =
-        views::PaintInfo::CreateRootPaintInfo(context, size);
-    const auto& prs = paint_info.paint_recording_size();
-
-    // Pass the scale factor when constructing PaintRecorder so the MaskLayer
-    // size is not incorrectly rounded (see https://crbug.com/921274).
-    ui::PaintRecorder recorder(context, paint_info.paint_recording_size(),
-                               static_cast<float>(prs.width()) / size.width(),
-                               static_cast<float>(prs.height()) / size.height(),
-                               nullptr);
-
-    gfx::Canvas* canvas = recorder.canvas();
-    // Clear the canvas.
-    canvas->DrawColor(SK_ColorBLACK, SkBlendMode::kSrc);
-    // Draw left gradient zone.
-    cc::PaintFlags flags;
-    flags.setBlendMode(SkBlendMode::kSrc);
-    flags.setAntiAlias(false);
-    flags.setShader(gfx::CreateGradientShader(
-        gfx::Point(), gfx::Point(kMediaStringGradientWidthDip, 0),
-        SK_ColorTRANSPARENT, SK_ColorBLACK));
-    canvas->DrawRect(left_rect, flags);
-
-    // Draw right gradient zone.
-    flags.setShader(gfx::CreateGradientShader(
-        gfx::Point(size.width() - kMediaStringGradientWidthDip, 0),
-        gfx::Point(size.width(), 0), SK_ColorBLACK, SK_ColorTRANSPARENT));
-    canvas->DrawRect(right_rect, flags);
-  }
-
-  void OnDeviceScaleFactorChanged(float old_device_scale_factor,
-                                  float new_device_scale_factor) override {}
-
-  ui::Layer layer_;
-};
-
 // Typography.
 constexpr char16_t kMiddleDotSeparator[] = u" • ";
 
@@ -289,17 +232,28 @@
 
 void MediaStringView::UpdateMaskLayer() {
   if (!NeedToAnimate()) {
-    media_text_container_->layer()->SetMaskLayer(nullptr);
+    media_text_container_->layer()->SetGradientMask(
+        gfx::LinearGradient::GetEmpty());
     return;
   }
 
-  if (!fadeout_layer_delegate_) {
-    fadeout_layer_delegate_ = std::make_unique<FadeoutLayerDelegate>();
-    fadeout_layer_delegate_->layer()->SetBounds(
-        media_text_container_->layer()->bounds());
+  // Invalid container width.
+  if (media_text_container_->layer()->size().width() == 0) {
+    media_text_container_->layer()->SetGradientMask(
+        gfx::LinearGradient::GetEmpty());
+    return;
   }
-  media_text_container_->layer()->SetMaskLayer(
-      fadeout_layer_delegate_->layer());
+
+  if (media_text_container_->layer()->gradient_mask().IsEmpty()) {
+    float fade_position = static_cast<float>(kMediaStringGradientWidthDip) /
+                          media_text_container_->layer()->size().width();
+    gfx::LinearGradient gradient_mask(/*angle=*/0);
+    gradient_mask.AddStep(/*fraction=*/0, /*alpha=*/0);
+    gradient_mask.AddStep(fade_position, 255);
+    gradient_mask.AddStep(1 - fade_position, 255);
+    gradient_mask.AddStep(1, 0);
+    media_text_container_->layer()->SetGradientMask(gradient_mask);
+  }
 }
 
 bool MediaStringView::NeedToAnimate() const {
diff --git a/ash/ambient/ui/media_string_view.h b/ash/ambient/ui/media_string_view.h
index f6553b32..636c7f1 100644
--- a/ash/ambient/ui/media_string_view.h
+++ b/ash/ambient/ui/media_string_view.h
@@ -23,10 +23,6 @@
 
 namespace ash {
 
-namespace {
-class FadeoutLayerDelegate;
-}
-
 // Container for displaying ongoing media information, including the name of the
 // media and the artist, formatted with a proceding music note symbol and a
 // middle dot separator.
@@ -105,8 +101,6 @@
   // With an extra copy of media info text for scrolling animation.
   views::Label* media_text_ = nullptr;
 
-  std::unique_ptr<FadeoutLayerDelegate> fadeout_layer_delegate_;
-
   // Used to receive updates to the active media controller.
   mojo::Remote<media_session::mojom::MediaController> media_controller_remote_;
   mojo::Receiver<media_session::mojom::MediaControllerObserver>
diff --git a/ash/ambient/ui/media_string_view_unittest.cc b/ash/ambient/ui/media_string_view_unittest.cc
index fc3c010d..c881fd2 100644
--- a/ash/ambient/ui/media_string_view_unittest.cc
+++ b/ash/ambient/ui/media_string_view_unittest.cc
@@ -278,7 +278,8 @@
 
   EXPECT_LT(GetMediaStringViewTextLabel()->GetPreferredSize().width(),
             kMediaStringMaxWidthDip);
-  EXPECT_FALSE(GetMediaStringViewTextContainer()->layer()->layer_mask_layer());
+  EXPECT_TRUE(
+      GetMediaStringViewTextContainer()->layer()->gradient_mask().IsEmpty());
 }
 
 TEST_F(MediaStringViewTest, HasMaskLayerWithLongText) {
@@ -298,7 +299,8 @@
 
   EXPECT_GT(GetMediaStringViewTextLabel()->GetPreferredSize().width(),
             kMediaStringMaxWidthDip);
-  EXPECT_TRUE(GetMediaStringViewTextContainer()->layer()->layer_mask_layer());
+  EXPECT_FALSE(
+      GetMediaStringViewTextContainer()->layer()->gradient_mask().IsEmpty());
 }
 
 TEST_F(MediaStringViewTest, MaskLayerShouldUpdate) {
@@ -318,7 +320,8 @@
 
   EXPECT_LT(GetMediaStringViewTextLabel()->GetPreferredSize().width(),
             kMediaStringMaxWidthDip);
-  EXPECT_FALSE(GetMediaStringViewTextContainer()->layer()->layer_mask_layer());
+  EXPECT_TRUE(
+      GetMediaStringViewTextContainer()->layer()->gradient_mask().IsEmpty());
 
   // Change to long text.
   metadata.title = u"A super duper long title";
@@ -331,7 +334,8 @@
 
   EXPECT_GT(GetMediaStringViewTextLabel()->GetPreferredSize().width(),
             kMediaStringMaxWidthDip);
-  EXPECT_TRUE(GetMediaStringViewTextContainer()->layer()->layer_mask_layer());
+  EXPECT_FALSE(
+      GetMediaStringViewTextContainer()->layer()->gradient_mask().IsEmpty());
 
   // Change to short text.
   metadata.title = u"title";
@@ -344,7 +348,8 @@
 
   EXPECT_LT(GetMediaStringViewTextLabel()->GetPreferredSize().width(),
             kMediaStringMaxWidthDip);
-  EXPECT_FALSE(GetMediaStringViewTextContainer()->layer()->layer_mask_layer());
+  EXPECT_TRUE(
+      GetMediaStringViewTextContainer()->layer()->gradient_mask().IsEmpty());
 }
 
 TEST_F(MediaStringViewTest, ShowWhenMediaIsPlaying) {
diff --git a/ash/app_list/app_list_presenter_unittest.cc b/ash/app_list/app_list_presenter_unittest.cc
index dea79c7..3db2089 100644
--- a/ash/app_list/app_list_presenter_unittest.cc
+++ b/ash/app_list/app_list_presenter_unittest.cc
@@ -2742,7 +2742,7 @@
 }
 
 // Tests that app list folder item reparenting drag to another folder.
-TEST_P(AppListBubbleAndTabletTest, AppsGridItemReparentToFolderDrag) {
+TEST_P(ProductivityLauncherTest, AppsGridItemReparentToFolderDrag) {
   UpdateDisplay("1200x600");
 
   app_list_test_model_->PopulateApps(2);
@@ -2793,17 +2793,13 @@
   EXPECT_EQ(dragged_item->folder_id(),
             apps_grid_view_->GetItemViewAt(3)->item()->id());
 
-  // With productivity launcher enabled, newly created folder should open and
-  // have the name input focused.
-  EXPECT_EQ(productivity_launcher_param(),
-            GetAppListTestHelper()->IsInFolderView());
-  if (productivity_launcher_param()) {
-    EXPECT_EQ(dragged_item->folder_id(), folder_view()->folder_item()->id());
-    EXPECT_TRUE(folder_view()
-                    ->folder_header_view()
-                    ->GetFolderNameViewForTest()
-                    ->HasFocus());
-  }
+  // Newly created folder should open and have the name input focused.
+  EXPECT_TRUE(GetAppListTestHelper()->IsInFolderView());
+  EXPECT_EQ(dragged_item->folder_id(), folder_view()->folder_item()->id());
+  EXPECT_TRUE(folder_view()
+                  ->folder_header_view()
+                  ->GetFolderNameViewForTest()
+                  ->HasFocus());
 }
 
 // Tests that an item can be removed just after creating a folder that contains
diff --git a/ash/app_list/views/apps_grid_view.cc b/ash/app_list/views/apps_grid_view.cc
index 944a5d9..dc38ffde 100644
--- a/ash/app_list/views/apps_grid_view.cc
+++ b/ash/app_list/views/apps_grid_view.cc
@@ -86,8 +86,8 @@
 // Maximum vertical and horizontal spacing between tiles.
 constexpr int kMaximumTileSpacing = 96;
 
-// Maximum horizontal spacing between tiles for productivity launcher.
-constexpr int kMaximumHorizontalTileSpacingForProductivityLauncher = 128;
+// Maximum horizontal spacing between tiles.
+constexpr int kMaximumHorizontalTileSpacing = 128;
 
 // The ratio of the slide offset to the tile size.
 constexpr float kFadeAnimationOffsetRatio = 0.25f;
@@ -283,16 +283,14 @@
       items_container_, /*use_transforms=*/true);
   bounds_animator_->AddObserver(this);
   bounds_animator_->SetAnimationDuration(kItemBoundsAnimationDuration);
-  if (features::IsProductivityLauncherEnabled()) {
-    bounds_animator_->set_tween_type(gfx::Tween::ACCEL_40_DECEL_100_3);
+  bounds_animator_->set_tween_type(gfx::Tween::ACCEL_40_DECEL_100_3);
 
-    GetViewAccessibility().OverrideRole(ax::mojom::Role::kGroup);
+  GetViewAccessibility().OverrideRole(ax::mojom::Role::kGroup);
 
-    // Override the a11y name of top level apps grid.
-    if (!folder_delegate) {
-      GetViewAccessibility().OverrideName(
-          l10n_util::GetStringUTF16(IDS_ASH_LAUNCHER_APPS_GRID_A11Y_NAME));
-    }
+  // Override the a11y name of top level apps grid.
+  if (!folder_delegate) {
+    GetViewAccessibility().OverrideName(
+        l10n_util::GetStringUTF16(IDS_ASH_LAUNCHER_APPS_GRID_A11Y_NAME));
   }
 
   if (!IsTabletMode()) {
@@ -376,13 +374,8 @@
 gfx::Size AppsGridView::GetMaximumTileGridSize(int cols,
                                                int rows_per_page) const {
   const gfx::Size tile_size = GetTileViewSize();
-  const int max_horizontal_spacing =
-      features::IsProductivityLauncherEnabled()
-          ? kMaximumHorizontalTileSpacingForProductivityLauncher
-          : kMaximumTileSpacing;
-
   return gfx::Size(
-      tile_size.width() * cols + max_horizontal_spacing * (cols - 1),
+      tile_size.width() * cols + kMaximumHorizontalTileSpacing * (cols - 1),
       tile_size.height() * rows_per_page +
           kMaximumTileSpacing * (rows_per_page - 1));
 }
@@ -684,7 +677,7 @@
         if (MoveItemToFolder(drag_item_, drop_target_, kMoveByDragIntoFolder,
                              &target_folder_id, &is_new_folder)) {
           MaybeCreateFolderDroppingAccessibilityEvent();
-          if (is_new_folder && features::IsProductivityLauncherEnabled()) {
+          if (is_new_folder) {
             folder_to_open_after_drag_icon_animation_ = target_folder_id;
             SetOpenFolderInfo(target_folder_id, drop_target_,
                               reorder_placeholder_);
@@ -1043,12 +1036,10 @@
     if (drag_view_ == details.child)
       drag_view_ = nullptr;
 
-    if (features::IsProductivityLauncherEnabled()) {
-      if (current_ghost_view_ == details.child)
-        current_ghost_view_ = nullptr;
-      if (last_ghost_view_ == details.child)
-        last_ghost_view_ = nullptr;
-    }
+    if (current_ghost_view_ == details.child)
+      current_ghost_view_ = nullptr;
+    if (last_ghost_view_ == details.child)
+      last_ghost_view_ = nullptr;
 
     if (reordering_folder_view_ && *reordering_folder_view_ == details.child)
       reordering_folder_view_.reset();
@@ -1141,7 +1132,6 @@
   const bool is_syncing =
       model_ && model_->status() == AppListModelStatus::kStatusSyncing;
   const bool should_animate_placeholder_swap =
-      ash::features::IsProductivityLauncherEnabled() &&
       pulsing_blocks_model_.view_size() > 0 && is_syncing &&
       placeholder_in_view_index;
 
@@ -1732,7 +1722,7 @@
         moving_view_title, target_view_title, target_view_is_folder);
     AppListItemView* folder_view = GetItemViewForItem(folder_id);
     if (folder_view) {
-      if (is_new_folder && features::IsProductivityLauncherEnabled()) {
+      if (is_new_folder) {
         SetOpenFolderInfo(folder_id, target_index, source_index);
         ShowFolderForView(folder_view, /*new_folder=*/true);
       } else {
@@ -1891,7 +1881,7 @@
         // If move to folder created a folder, layout the grid to ensure the
         // created folder's bounds are correct.
         Layout();
-        if (is_new_folder && features::IsProductivityLauncherEnabled()) {
+        if (is_new_folder) {
           folder_to_open_after_drag_icon_animation_ = target_folder_id;
           SetOpenFolderInfo(target_folder_id, drop_target_,
                             reorder_placeholder_);
@@ -2902,9 +2892,6 @@
   if (page < 0 || page >= GetTotalPages())
     return 0;
 
-  if (!folder_delegate_ && !features::IsProductivityLauncherEnabled())
-    return view_structure_.items_on_page(page);
-
   // We are guaranteed not on the last page, so the page must be full.
   if (page < GetTotalPages() - 1)
     return TilesPerPage(page);
@@ -2978,8 +2965,6 @@
 }
 
 void AppsGridView::CreateGhostImageView() {
-  if (!features::IsProductivityLauncherEnabled())
-    return;
   if (!drag_item_)
     return;
 
@@ -3023,9 +3008,6 @@
 }
 
 void AppsGridView::BeginHideCurrentGhostImageView() {
-  if (!features::IsProductivityLauncherEnabled())
-    return;
-
   current_ghost_location_ = GridIndex();
 
   if (current_ghost_view_)
diff --git a/ash/app_list/views/apps_grid_view_unittest.cc b/ash/app_list/views/apps_grid_view_unittest.cc
index edd24e6..375581e 100644
--- a/ash/app_list/views/apps_grid_view_unittest.cc
+++ b/ash/app_list/views/apps_grid_view_unittest.cc
@@ -3917,6 +3917,40 @@
   EXPECT_TRUE(ShelfModel::Get()->items().empty());
 }
 
+TEST_P(AppsGridViewDragTest, DragAndPinItemToEmptyShelf) {
+  model_->PopulateApps(2);
+  UpdateLayout();
+
+  ShelfModel::Get()->ToggleShelfParty();
+
+  AppListItemView* const item_view = GetItemViewInTopLevelGrid(1);
+
+  auto* generator = GetEventGenerator();
+  generator->MoveMouseTo(item_view->GetBoundsInScreen().CenterPoint());
+  generator->PressLeftButton();
+  item_view->FireMouseDragTimerForTest();
+  generator->MoveMouseBy(10, 10);
+  EXPECT_EQ(1, GetHapticTickEventsCount());
+
+  // Verify that item drag has started.
+  ASSERT_TRUE(apps_grid_view_->drag_item());
+  ASSERT_TRUE(apps_grid_view_->IsDragging());
+  ASSERT_EQ(item_view->item(), apps_grid_view_->drag_item());
+
+  // Shelf should start handling the drag if it moves within its bounds.
+  auto* shelf_view = GetPrimaryShelf()->GetShelfViewForTesting();
+  generator->MoveMouseTo(shelf_view->GetBoundsInScreen().left_center());
+  ASSERT_TRUE(apps_grid_view_->FireDragToShelfTimerForTest());
+
+  EXPECT_EQ("Item 1", shelf_view->drag_and_drop_shelf_id().app_id);
+
+  // Releasing drag over shelf should pin the dragged app.
+  generator->ReleaseLeftButton();
+  EXPECT_TRUE(ShelfModel::Get()->IsAppPinned("Item 1"));
+  EXPECT_EQ("Item 1", ShelfModel::Get()->items()[0].id.app_id);
+  EXPECT_EQ(1, GetHapticTickEventsCount());
+}
+
 TEST_P(AppsGridViewDragTest, MousePointerIsGrabbingDuringDrag) {
   auto* cursor_manager = Shell::Get()->cursor_manager();
   auto previous_cursor_type = cursor_manager->GetCursor().type();
diff --git a/ash/ash_prefs.cc b/ash/ash_prefs.cc
index 0d3f793..128a0f8 100644
--- a/ash/ash_prefs.cc
+++ b/ash/ash_prefs.cc
@@ -30,7 +30,6 @@
 #include "ash/session/fullscreen_controller.h"
 #include "ash/shelf/shelf_controller.h"
 #include "ash/style/dark_light_mode_controller_impl.h"
-#include "ash/system/bluetooth/bluetooth_power_controller.h"
 #include "ash/system/camera/autozoom_controller_impl.h"
 #include "ash/system/camera/autozoom_nudge_controller.h"
 #include "ash/system/caps_lock_notification_controller.h"
@@ -80,8 +79,6 @@
   AutozoomControllerImpl::RegisterProfilePrefs(registry);
   AutozoomNudgeController::RegisterProfilePrefs(registry);
   AmbientController::RegisterProfilePrefs(registry);
-  if (!ash::features::IsBluetoothRevampEnabled())
-    BluetoothPowerController::RegisterProfilePrefs(registry);
   CalendarController::RegisterProfilePrefs(registry);
   CapsLockNotificationController::RegisterProfilePrefs(registry, for_test);
   CaptureModeController::RegisterProfilePrefs(registry);
@@ -149,8 +146,6 @@
 void RegisterLocalStatePrefs(PrefRegistrySimple* registry, bool for_test) {
   PaletteTray::RegisterLocalStatePrefs(registry);
   WallpaperPrefManager::RegisterLocalStatePrefs(registry);
-  if (!ash::features::IsBluetoothRevampEnabled())
-    BluetoothPowerController::RegisterLocalStatePrefs(registry);
   DetachableBaseHandler::RegisterPrefs(registry);
   PowerPrefs::RegisterLocalStatePrefs(registry);
   DisplayPrefs::RegisterLocalStatePrefs(registry);
diff --git a/ash/ash_strings.grd b/ash/ash_strings.grd
index 48b8236..ceb6b22 100644
--- a/ash/ash_strings.grd
+++ b/ash/ash_strings.grd
@@ -2421,9 +2421,6 @@
       <message name="IDS_ASH_STATUS_TRAY_BLUETOOTH_REJECT" desc="Message on button to reject Bluetooth pairing request.">
         Reject
       </message>
-      <message name="IDS_ASH_STATUS_TRAY_BLUETOOTH_PAIRED" desc="Notification shown when a new device is paired with the computer.">
-        Bluetooth device "<ph name="DEVICE_NAME">$1<ex>Nexus S</ex></ph>" has been paired and is now available to all users. You may remove this pairing using Settings.
-      </message>
 
       <!-- Ash multi-user warning dialog -->
       <message name="IDS_DESKTOP_CASTING_ACTIVE_TITLE" desc="The title for the dialog which tells the user that desktop casting is in progress, asking if the casting should be stopped before switching - or - the switch should be aborted.">
@@ -3001,12 +2998,384 @@
       <message name="IDS_ASH_ACCELERATOR_ACTION_BRIGHTNESS_UP" translateable="false" desc="Label for accelerator action - Turn brightness up.">
         Turn brightness up
       </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_CYCLE_BACKWARD_MRU" translateable="false" desc="Label for accelerator action - Cycle backwards in the MRU window list.">
+        Cycle backwards in the MRU window list
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_CYCLE_FORWARD_MRU" translateable="false" desc="Label for accelerator action - Cycle forwards in the MRU window list.">
+        Cycle forwards in the MRU window list
+      </message>
       <message name="IDS_ASH_ACCELERATOR_ACTION_DESKS_ACTIVATE_DESK_LEFT" translateable="false" desc="Label for accelerator action - Activate desk on left.">
         Activate desk on left
       </message>
       <message name="IDS_ASH_ACCELERATOR_ACTION_DESKS_ACTIVATE_DESK_RIGHT" translateable="false" desc="Label for accelerator action - Activate desk on right.">
         Activate desk on right
       </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_DESKS_MOVE_ACTIVE_ITEM_LEFT" translateable="false" desc="Label for accelerator action - Move active window to desk on left.">
+        Move active window to desk on left
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_DESKS_MOVE_ACTIVE_ITEM_RIGHT" translateable="false" desc="Label for accelerator action - Move active window to desk on right.">
+        Move active window to desk on right
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_DESKS_NEW_DESK" translateable="false" desc="Label for accelerator action - Create new desk.">
+        Create new desk
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_DESKS_REMOVE_CURRENT_DESK" translateable="false" desc="Label for accelerator action - Remove current desk.">
+        Remove current desk
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_DESKS_ACTIVATE" translateable="false" desc="Label for accelerator action - Go to desk 1 to 8.">
+        Go to desk 1 to 8
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTIONDESKS_TOGGLE_ASSIGN_TO_ALL_DESKS" translateable="false" desc="Label for accelerator action - Assign active window to all desk.">
+        Assign active window to all desks
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_DISABLE_CAPS_LOCK" translateable="false" desc="Label for accelerator action - Disable Caps Lock.">
+        Disable Caps Lock
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_EXIT" translateable="false" desc="Label for accelerator action - Sign out.">
+        Sign out
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_FOCUS_CAMERA_PREVIEW" translateable="false" desc="Label for accelerator action - Focus on the camera preview.">
+        Focus on the camera preview
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_FOCUS_NEXT_PANE" translateable="false" desc="Label for accelerator action - Next pane.">
+        Next pane
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_FOCUS_PIP" translateable="false" desc="Label for accelerator action - Focus on the Picture-in-Picture window.">
+        Focus on the Picture-in-Picture window
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_FOCUS_PREVIOUS_PANE" translateable="false" desc="Label for accelerator action - Previous pane.">
+        Previous pane
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_FOCUS_SHELF" translateable="false" desc="Label for accelerator action - Highlight launcher button on shelf.">
+        Highlight launcher button on shelf
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_KEYBOARD_BACKLIGHT_TOGGLE" translateable="false" desc="Label for accelerator action - Toggle keyboard backlight.">
+        Toggle keyboard backlight
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_KEYBOARD_BRIGHTNESS_DOWN" translateable="false" desc="Label for accelerator action - Dim keyboard.">
+        Dim keyboard
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_KEYBOARD_BRIGHTNESS_UP" translateable="false" desc="Label for accelerator action - Make keyboard brighter.">
+        Make keyboard brighter
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_LAUNCH_APP" translateable="false" desc="Label for accelerator action - Click or tap shelf icons 1-8.">
+        Click or tap shelf icons 1-8
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_LAUNCH_LAST_APP" translateable="false" desc="Label for accelerator action - Click or tap last icon on shelf.">
+        Click or tap last icon on shelf
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_LOCK_PRESSED" translateable="false" desc="Label for accelerator action - Lock pressed.">
+        Lock pressed
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_LOCK_RELEASED" translateable="false" desc="Label for accelerator action - Lock released.">
+        Lock released
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_LOCK_SCREEN" translateable="false" desc="Label for accelerator action - Lock screen.">
+        Lock screen
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_MAGNIFIER_ZOOM_IN" translateable="false" desc="Label for accelerator action - Zoom in when magnifier is on.">
+        Zoom in when magnifier is on
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_MAGNIFIER_ZOOM_OUT" translateable="false" desc="Label for accelerator action - Zoom out when magnifier is on.">
+        Zoom out when magnifier is on
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_MEDIA_FAST_FORWARD" translateable="false" desc="Label for accelerator action - Fast forward the media.">
+        Fast forward media
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_MEDIA_NEXT_TRACK" translateable="false" desc="Label for accelerator action - Go to next track.">
+        Go to next track
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_MEDIA_PAUSE" translateable="false" desc="Label for accelerator action - Pause media.">
+        Pause media
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_MEDIA_PLAY" translateable="false" desc="Label for accelerator action - Play media.">
+        Play media
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_MEDIA_PLAY_PAUSE" translateable="false" desc="Label for accelerator action - Play or pause media.">
+        Play or pause media
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_MEDIA_PREV_TRACK" translateable="false" desc="Label for accelerator action - Go to previous track.">
+        Go to previous track
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_MEDIA_REWIND" translateable="false" desc="Label for accelerator action - Rewind media.">
+        Rewind media
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_MEDIA_STOP" translateable="false" desc="Label for accelerator action - Stop media.">
+        Stop media
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_MICROPHONE_MUTE_TOGGLE" translateable="false" desc="Label for accelerator action - Toggle mute microphone.">
+        Toggle mute microphone
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_MOVE_ACTIVE_WINDOW_BETWEEN_DISPLAYS" translateable="false" desc="Label for accelerator action - Move active window between displays.">
+        Move active window between displays
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_NEW_INCOGNITO_WINDOW" translateable="false" desc="Label for accelerator action - Open new Incognito window.">
+        Open new Incognito window
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_NEW_TAB" translateable="false" desc="Label for accelerator action - Open new tab.">
+        Open new tab
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_NEW_WINDOW" translateable="false" desc="Label for accelerator action - Open new window.">
+        Open new window
+      </message>
+       <message name="IDS_ASH_ACCELERATOR_ACTION_OPEN_CALCULATOR" translateable="false" desc="Label for accelerator action - Open calculator.">
+        Open calculator
+      </message>
+       <message name="IDS_ASH_ACCELERATOR_ACTION_OPEN_CROSH" translateable="false" desc="Label for accelerator action - Open Crosh window.">
+        Open Crosh window
+      </message>
+       <message name="IDS_ASH_ACCELERATOR_ACTION_OPEN_DIAGNOSTICS" translateable="false" desc="Label for accelerator action - Open Diagnostics App.">
+        Open Diagnostics App
+      </message>
+       <message name="IDS_ASH_ACCELERATOR_ACTION_OPEN_FEEDBACK_PAGE" translateable="false" desc="Label for accelerator action - Submit feedback.">
+        Submit feedback
+      </message>
+       <message name="IDS_ASH_ACCELERATOR_ACTION_OPEN_FILE_MANAGER" translateable="false" desc="Label for accelerator action - Open new window.">
+        Open Files app
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_OPEN_GET_HELP" translateable="false" desc="Label for accelerator action - Open Help Center.">
+        Open Help Center
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_POWER_PRESSED" translateable="false" desc="Label for accelerator action - Power pressed.">
+        Power pressed
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_POWER_RELEASED" translateable="false" desc="Label for accelerator action - Power released.">
+        Power released
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_PRINT_UI_HIERARCHIES" translateable="false" desc="Label for accelerator action - Print UI hierarchies.">
+        Print UI hierarchies.
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_PRIVACY_SCREEN_TOGGLE" translateable="false" desc="Label for accelerator action - Toggle privacy screen.">
+        Toggle privacy screen
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_RESTORE_TAB" translateable="false" desc="Label for accelerator action - Reopen the last tab or window closed.">
+        Reopen the last tab or window closed
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_ROTATE_SCREEN" translateable="false" desc="Label for accelerator action - Rotate window 90 degrees clockwise.">
+        Rotate window 90 degrees clockwise
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_ROTATE_WINDOW" translateable="false" desc="Label for accelerator action - Rotate window.">
+        Rotate window
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_SCALE_UI_DOWN" translateable="false" desc="Label for accelerator action - Zoom in on screen.">
+        Zoom in on screen
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_SCALE_UI_RESET" translateable="false" desc="Label for accelerator action - Reset zoom level.">
+        Reset zoom level
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_SCALE_UI_UP" translateable="false" desc="Label for accelerator action - Zoom out on screen.">
+        Zoom out on screen
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_SHOW_EMOJI_PICKER" translateable="false" desc="Label for accelerator action - Open Emoji Picker.">
+        Open Emoji Picker
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_TOGGLE_IME_MENU_BUBBLE" translateable="false" desc="Label for accelerator action - Show list of available input methods.">
+        Show list of available input methods
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_SHOW_SHORTCUT_VIEWER" translateable="false" desc="Label for accelerator action - See Keyboard Shortcut Helper.">
+        See Keyboard Shortcut Helper
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_SHOW_STYLUS_TOOLS" translateable="false" desc="Label for accelerator action - Show stylus tools.">
+        Show stylus tools
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_SHOW_TASK_MANAGER" translateable="false" desc="Label for accelerator action - Open task manager.">
+        Open task manager
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_START_AMBIENT_MODE" translateable="false" desc="Label for accelerator action - Start ambient mode.">
+        Start ambient mode
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_START_ASSISTANT" translateable="false" desc="Label for accelerator action - Toggle Google assistant.">
+        Toggle Google assistant.
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_SUSPEND" translateable="false" desc="Label for accelerator action - Put device in sleep mode.">
+        Put device in sleep mode
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_SWAP_PRIMARY_DISPLAY" translateable="false" desc="Label for accelerator action - Swap primary monitor.">
+        Swap primary monitor
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_SWITCH_IME" translateable="false" desc="Label for accelerator action - Switch input method.">
+        Switch input method
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_SWITCH_TO_LAST_USED_IME" translateable="false" desc="Label for accelerator action - Switch to last language selected.">
+        Switch to last language selected
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_SWITCH_TO_NEXT_IME" translateable="false" desc="Label for accelerator action - Switch to next available language.">
+        Switch to next available language
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_SWITCH_TO_NEXT_USER" translateable="false" desc="Label for accelerator action - Switch to next user.">
+        Switch to next user
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_SWITCH_TO_PREVIOUS_USER" translateable="false" desc="Label for accelerator action - Switch to previous user.">
+        Switch to previous user
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_TAKE_PARTIAL_SCREENSHOT" translateable="false" desc="Label for accelerator action - Take partial screenshot/recording.">
+        Take partial screenshot/recording
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_TAKE_SCREENSHOT" translateable="false" desc="Label for accelerator action - Take screenshot or recording.">
+        Take screenshot or recording
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_TAKE_WINDOW_SCREENSHOT" translateable="false" desc="Label for accelerator action - Take window screenshot or recording.">
+        Take window screenshot or recording
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_TOGGLE_APP_LIST" translateable="false" desc="Label for accelerator action - Open/close launcher.">
+        Open/close launcher
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_TOGGLE_CALENDAR" translateable="false" desc="Label for accelerator action - Open/close calender.">
+        Open/close calender
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_TOGGLE_CAPS_LOCK" translateable="false" desc="Label for accelerator action - Turn Caps Lock on and off.">
+        Turn Caps Lock on and off
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_TOGGLE_CLIPBOARD_HISTORY" translateable="false" desc="Label for accelerator action - Open Clipboard.">
+        Open Clipboard
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_TOGGLE_DICTATION" translateable="false" desc="Label for accelerator action - Open/close dictation.">
+        Open/close dictation
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_TOGGLE_DOCKED_MAGNIFIER" translateable="false" desc="Label for accelerator action - Turn magnifier on or off.">
+        Turn magnifier on or off
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_TOGGLE_FLOATING" translateable="false" desc="Label for accelerator action - Toggle floating.">
+        Toggle floating
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_TOGGLE_FULLSCREEN" translateable="false" desc="Label for accelerator action - Enter or exit fullscreen.">
+        Enter or exit fullscreen
+      </message>
+       <message name="IDS_ASH_ACCELERATOR_ACTION_TOGGLE_FULLSCREEN_MAGNIFIER" translateable="false" desc="Label for accelerator action - Turn fullscreen magnifer on or off.">
+        Turn fullscreen magnifer on or off
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_TOGGLE_HIGH_CONTRAST" translateable="false" desc="Label for accelerator action - Turn on high contrast mode.">
+        Turn on high contrast mode
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_TOGGLE_MAXIMIZED" translateable="false" desc="Label for accelerator action - Maximize window.">
+        Maximize window
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_TOGGLE_MESSAGE_CENTER_BUBBLE" translateable="false" desc="Label for accelerator action - See notifications.">
+        See notifications
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_TOGGLE_MIRROR_MODE" translateable="false" desc="Label for accelerator action - Mirror monitors.">
+        Mirror monitors
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_TOGGLE_OVERVIEW" translateable="false" desc="Label for accelerator action - Overview mode.">
+        Overview mode
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_TOGGLE_PROJECTOR_MARKER" translateable="false" desc="Label for accelerator action - Toggle projector marker.">
+        Toggle projector marker
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_TOGGLE_RESIZE_LOCK_MENU" translateable="false" desc="Label for accelerator action - Toggle menu to resize lock mode.">
+        Toggle menu to resize lock mode
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_TOGGLE_SPOKEN_FEEDBACK" translateable="false" desc="Label for accelerator action - Turn ChromeVox (spoken feedback) on or off.">
+        Turn ChromeVox (spoken feedback) on or off
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_TOGGLE_SYSTEM_TRAY_BUBBLE" translateable="false" desc="Label for accelerator action - Open system settings.">
+        Open system settings
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_TOGGLE_WIFI" translateable="false" desc="Label for accelerator action - Turn wifi on or off.">
+        Turn wifi on or off
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_TOUCH_HUD_CLEAR" translateable="false" desc="Label for accelerator action - Touch hud clear.">
+        Touch Hud clear
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_TOUCH_HUD_MODE_CHANGE" translateable="false" desc="Label for accelerator action - Touch hud mode change.">
+        Touch hud mode change
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_UNPIN" translateable="false" desc="Label for accelerator action - Unpin an app.">
+        Unpin an app
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_VOLUME_DOWN" translateable="false" desc="Label for accelerator action - Turn volume down.">
+        Turn volume down
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_VOLUME_MUTE" translateable="false" desc="Label for accelerator action - Turn volume down.">
+        Turn volume up
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_VOLUME_UP" translateable="false" desc="Label for accelerator action - Turn volume up.">
+        Turn volume up
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_WINDOW_CYCLE_SNAP_LEFT" translateable="false" desc="Label for accelerator action - Turn volume down.">
+        Keep window on left
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_WINDOW_CYCLE_SNAP_RIGHT" translateable="false" desc="Label for accelerator action - Keep window on right.">
+        Keep window on right
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_WINDOW_MINIMIZE" translateable="false" desc="Label for accelerator action - Minimize window.">
+        Minimize window
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_MINIMIZE_TOP_WINDOW_ON_BACK" translateable="false" desc="Label for accelerator action - Minimize top window on back.">
+        Minimize top window on back
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_DEBUG_DUMP_CALENDAR_MODEL" translateable="false" desc="Label for accelerator action - Dump calendar model.">
+        Dump calendar model
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_DEBUG_KEYBOARD_BACKLIGHT_TOGGLE" translateable="false" desc="Label for accelerator action - Turn keyboard backlight on or off.">
+        Turn keyboard backlight on or off
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_DEBUG_MICROPHONE_MUTE_TOGGLE" translateable="false" desc="Label for accelerator action - Mute or unmute microphone.">
+        Mute or unmute microphone
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_DEBUG_PRINT_LAYER_HIERARCHY" translateable="false" desc="Label for accelerator action - Print layer hierarchy.">
+        Print layer hierarchy
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_DEBUG_PRINT_VIEW_HIERARCHY" translateable="false" desc="Label for accelerator action - Print view hierarchy.">
+        Print view hierarchy
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_DEBUG_PRINT_WINDOW_HIERARCHY" translateable="false" desc="Label for accelerator action - Print window hierarchy.">
+        Print window hierarchy
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_DEBUG_SHOW_TOAST" translateable="false" desc="Label for accelerator action - Show Toast.">
+        Show Toast
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_DEBUG_TUCK_FLOATED_WINDOW_LEFT" translateable="false" desc="Label for accelerator action - Tuck floated window to leftt.">
+        Tuck floated window to left
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_DEBUG_TUCK_FLOATED_WINDOW_RIGHT" translateable="false" desc="Label for accelerator action -Tuck floated window to right.">
+        Tuck floated window to right
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_DEBUG_TOGGLE_DARK_MODE" translateable="false" desc="Label for accelerator action - Turn on or off dark mode.">
+        Turn on or off dark mode
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_DEBUG_TOGGLE_DYNAMIC_COLOR" translateable="false" desc="Label for accelerator action - Turn on or off dynamic color.">
+        Turn on or off dynamic color
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_DEBUG_TOGGLE_GLANCEABLES" translateable="false" desc="Label for accelerator action - Toggle Glanceables.">
+        Toggle Glanceables
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_DEBUG_TOGGLE_SHOW_DEBUG_BORDERS" translateable="false" desc="Label for accelerator action - Show debug borders.">
+        Show debug borders
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_DEBUG_TOGGLE_SHOW_FPS_COUNTER" translateable="false" desc="Label for accelerator action - Show fps counter.">
+        Show fps counter
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_DEBUG_TOGGLE_SHOW_PAINT_RECTS" translateable="false" desc="Label for accelerator action - Show paint rects.">
+        Show paint rects
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_DEBUG_TOGGLE_TOUCH_PAD" translateable="false" desc="Label for accelerator action - Toggle touch pad.">
+        Toggle touch pad
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_DEBUG_TOGGLE_TOUCH_SCREEN" translateable="false" desc="Label for accelerator action - Toggle touch screen.">
+        Toggle touch screen
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_DEBUG_TOGGLE_TABLET_MODE" translateable="false" desc="Label for accelerator action - Turn Tablet mode on or off.">
+        Turn tablet mode on or off
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_DEBUG_TOGGLE_WALLPAPER_MODE" translateable="false" desc="Label for accelerator action - Turn wallpapaer mode on or off.">
+        Turn wallpapaer mode on or off
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_DEBUG_TRIGGER_CRASH" translateable="false" desc="Label for accelerator action - Trigger crash.">
+        Trigger crash
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_DEBUG_TOGGLE_HUD_DISPLAY" translateable="false" desc="Label for accelerator action - Toggle hud display.">
+        Toggle hud display
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_DEV_ADD_REMOVE_DISPLAY" translateable="false" desc="Label for accelerator action - Add or remove display.">
+        Add or remove display
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_DEV_TOGGLE_APP_LIST" translateable="false" desc="Label for accelerator action - Toggle app list.">
+        Toggle app list
+      </message>
+      <message name="IDS_ASH_ACCELERATOR_ACTION_DEV_TOGGLE_UNIFIED_DESKTOP" translateable="false" desc="Label for accelerator action - Toggle unified desktop.">
+        Toggle unified desktop
+      </message>
 
       <!-- Tray scale strings -->
       <message name="IDS_ASH_STATUS_TRAY_SCALE" desc="The label used in scale setting detailed page of ash tray popup.">
diff --git a/ash/ash_strings_grd/IDS_ASH_STATUS_TRAY_BLUETOOTH_PAIRED_OR_CONNECTED_TOAST.png.sha1 b/ash/ash_strings_grd/IDS_ASH_STATUS_TRAY_BLUETOOTH_PAIRED_OR_CONNECTED_TOAST.png.sha1
deleted file mode 100644
index 099f0d74..0000000
--- a/ash/ash_strings_grd/IDS_ASH_STATUS_TRAY_BLUETOOTH_PAIRED_OR_CONNECTED_TOAST.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-87bd6f70ba8e07d89e749e2eaaf56404d8256364
\ No newline at end of file
diff --git a/ash/components/BUILD.gn b/ash/components/BUILD.gn
index cfa0869..7d56e94a 100644
--- a/ash/components/BUILD.gn
+++ b/ash/components/BUILD.gn
@@ -27,7 +27,6 @@
     "//ash/components/peripheral_notification:unit_tests",
     "//ash/components/phonehub:unit_tests",
     "//ash/components/tether:unit_tests",
-    "//ash/components/trial_group:unit_tests",
     "//ash/strings",
     "//base/test:test_support",
     "//mojo/core/embedder",
diff --git a/ash/components/arc/volume_mounter/arc_volume_mounter_bridge.cc b/ash/components/arc/volume_mounter/arc_volume_mounter_bridge.cc
index 28111ba..62a673c 100644
--- a/ash/components/arc/volume_mounter/arc_volume_mounter_bridge.cc
+++ b/ash/components/arc/volume_mounter/arc_volume_mounter_bridge.cc
@@ -131,8 +131,8 @@
 }
 
 ArcVolumeMounterBridge::~ArcVolumeMounterBridge() {
-  if (DiskMountManager::GetInstance())  // for testing
-    DiskMountManager::GetInstance()->RemoveObserver(this);
+  DCHECK(DiskMountManager::GetInstance());
+  DiskMountManager::GetInstance()->RemoveObserver(this);
   arc_bridge_service_->volume_mounter()->SetHost(nullptr);
   arc_bridge_service_->volume_mounter()->RemoveObserver(this);
 }
diff --git a/ash/components/arc/volume_mounter/arc_volume_mounter_bridge_unittest.cc b/ash/components/arc/volume_mounter/arc_volume_mounter_bridge_unittest.cc
index 00634f5..3ff00e4 100644
--- a/ash/components/arc/volume_mounter/arc_volume_mounter_bridge_unittest.cc
+++ b/ash/components/arc/volume_mounter/arc_volume_mounter_bridge_unittest.cc
@@ -25,16 +25,22 @@
   void SetUp() override {
     ash::disks::DiskMountManager::InitializeForTesting(
         new ash::disks::MockDiskMountManager);
-    bridge_ = ArcVolumeMounterBridge::GetForBrowserContextForTesting(&context_);
+    context_ = std::make_unique<TestBrowserContext>();
+    bridge_ =
+        ArcVolumeMounterBridge::GetForBrowserContextForTesting(context_.get());
   }
-  void TearDown() override { ash::disks::DiskMountManager::Shutdown(); }
+
+  void TearDown() override {
+    context_.reset();
+    ash::disks::DiskMountManager::Shutdown();
+  }
 
   ArcVolumeMounterBridge* bridge() { return bridge_; }
 
  private:
   content::BrowserTaskEnvironment task_environment_;
   ArcServiceManager arc_service_manager_;
-  TestBrowserContext context_;
+  std::unique_ptr<TestBrowserContext> context_;
   ArcVolumeMounterBridge* bridge_ = nullptr;
 };
 
diff --git a/ash/constants/ash_features.cc b/ash/constants/ash_features.cc
index c9a7d29..7e2ef43 100644
--- a/ash/constants/ash_features.cc
+++ b/ash/constants/ash_features.cc
@@ -291,12 +291,6 @@
              "BluetoothQualityReport",
              base::FEATURE_DISABLED_BY_DEFAULT);
 
-// Enables or disables the ChromeOS Bluetooth Revamp, which updates Bluetooth
-// system UI and related infrastructure. See https://crbug.com/1010321.
-BASE_FEATURE(kBluetoothRevamp,
-             "BluetoothRevamp",
-             base::FEATURE_ENABLED_BY_DEFAULT);
-
 // Enables or disables Bluetooth WBS microphone be selected as default
 // audio input option.
 BASE_FEATURE(kBluetoothWbsDogfood,
@@ -1006,6 +1000,11 @@
              "HandwritingLibraryDlc",
              base::FEATURE_DISABLED_BY_DEFAULT);
 
+// Enables new histogram logic for ChromeOS HaTS surveys.
+BASE_FEATURE(kHatsUseNewHistograms,
+             "HatsUseNewHistograms",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+
 // Enables the Background Page in the help app.
 BASE_FEATURE(kHelpAppBackgroundPage,
              "HelpAppBackgroundPage",
@@ -1101,6 +1100,11 @@
 // the Chromebook to share its cellular internet connection to other devices.
 BASE_FEATURE(kHotspot, "Hotspot", base::FEATURE_DISABLED_BY_DEFAULT);
 
+// If enabled, allows the user to cycle between windows of an app using Alt + `.
+BASE_FEATURE(kSameAppWindowCycle,
+             "SameAppWindowCycle",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+
 // Controls whether the snooping protection prototype is enabled.
 BASE_FEATURE(kSnoopingProtection,
              "SnoopingProtection",
@@ -1743,6 +1747,24 @@
              "ShelfAutoHideSeparation",
              base::FEATURE_DISABLED_BY_DEFAULT);
 
+// Enables the "V1" focus ordering of shelf items. Once the drag handle has
+// accessibility focus the focus ordering is as follows:
+//   1. If the drag handle is pressed: the hotseat gets focus before and after
+//      the drag handle, but once the hotseat has focus that focus cannot
+//      naturally return to the drag handle (i.e. the hotseat's previous focus
+//      becomes the shelf navigation area and its next focus becomes the status
+//      area).
+//   2. If the drag handle is not pressed: the shelf navigation area gets the
+//      previous focus, and the status area gets the next focus.
+// Note that the drag handle is never included in the natural focus order, i.e.
+// the navigation area's next focus and the status area's previous focus is
+// always the hotseat (even if the hotseat is currently hidden). In other words,
+// this change simply allows the focus to more easily move to other parts of the
+// shelf when the drag handle is forcibly focused.
+BASE_FEATURE(kShelfFocusOrderV1,
+             "ShelfFocusOrderV1",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+
 // Enables shelf gestures (swipe to show hotseat, swipe to go home or overview)
 // in tablet mode when virtual keyboard is shown.
 BASE_FEATURE(kShelfGesturesWithVirtualKeyboard,
@@ -2240,10 +2262,6 @@
   return base::FeatureList::IsEnabled(kBluetoothQualityReport);
 }
 
-bool IsBluetoothRevampEnabled() {
-  return base::FeatureList::IsEnabled(kBluetoothRevamp);
-}
-
 bool IsCalendarViewEnabled() {
   return base::FeatureList::IsEnabled(kCalendarView);
 }
@@ -2460,6 +2478,10 @@
   return base::FeatureList::IsEnabled(kGuestOsFiles);
 }
 
+bool IsHatsUseNewHistogramsEnabled() {
+  return base::FeatureList::IsEnabled(kHatsUseNewHistograms);
+}
+
 bool IsHibernateEnabled() {
   return base::FeatureList::IsEnabled(kHibernate);
 }
@@ -2671,8 +2693,7 @@
 }
 
 bool IsOobeHidDetectionRevampEnabled() {
-  return base::FeatureList::IsEnabled(kOobeHidDetectionRevamp) &&
-         base::FeatureList::IsEnabled(kBluetoothRevamp);
+  return base::FeatureList::IsEnabled(kOobeHidDetectionRevamp);
 }
 
 bool IsKioskEnrollmentInOobeEnabled() {
@@ -2853,6 +2874,10 @@
   return base::FeatureList::IsEnabled(kRgbKeyboard);
 }
 
+bool IsSameAppWindowCycleEnabled() {
+  return base::FeatureList::IsEnabled(kSameAppWindowCycle);
+}
+
 bool IsSamlNotificationOnPasswordChangeSuccessEnabled() {
   return base::FeatureList::IsEnabled(
       kEnableSamlNotificationOnPasswordChangeSuccess);
diff --git a/ash/constants/ash_features.h b/ash/constants/ash_features.h
index 652ad96..eab3ff57 100644
--- a/ash/constants/ash_features.h
+++ b/ash/constants/ash_features.h
@@ -100,7 +100,6 @@
 COMPONENT_EXPORT(ASH_CONSTANTS)
 BASE_DECLARE_FEATURE(kBluetoothFixA2dpPacketSize);
 COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kBluetoothQualityReport);
-COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kBluetoothRevamp);
 COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kBluetoothWbsDogfood);
 COMPONENT_EXPORT(ASH_CONSTANTS)
 BASE_DECLARE_FEATURE(kRobustAudioDeviceSelectLogic);
@@ -131,7 +130,6 @@
 COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kClipboardHistoryReorder);
 COMPONENT_EXPORT(ASH_CONSTANTS)
 BASE_DECLARE_FEATURE(kConsumerAutoUpdateToggleAllowed);
-COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kDesksCloseAll);
 COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kContextualNudges);
 COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kCroshSWA);
 COMPONENT_EXPORT(ASH_CONSTANTS)
@@ -143,6 +141,7 @@
 COMPONENT_EXPORT(ASH_CONSTANTS)
 BASE_DECLARE_FEATURE(kCrossDeviceAttestationCertificateGeneration);
 COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kCrostiniBullseyeUpgrade);
+COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kDesksCloseAll);
 COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kDesksTemplates);
 COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kCrostiniDiskResizing);
 COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kCrostiniGpuSupport);
@@ -306,6 +305,7 @@
 COMPONENT_EXPORT(ASH_CONSTANTS)
 BASE_DECLARE_FEATURE(kHandwritingLegacyRecognitionAllLang);
 COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kHandwritingLibraryDlc);
+COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kHatsUseNewHistograms);
 COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kHelpAppBackgroundPage);
 COMPONENT_EXPORT(ASH_CONSTANTS)
 BASE_DECLARE_FEATURE(kHelpAppDiscoverTabNotificationAllChannels);
@@ -481,6 +481,7 @@
 BASE_DECLARE_FEATURE(kReleaseNotesSuggestionChip);
 COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kReleaseTrackUi);
 COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kReverseScrollGestures);
+COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kSameAppWindowCycle);
 COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kScalableStatusArea);
 COMPONENT_EXPORT(ASH_CONSTANTS)
 BASE_DECLARE_FEATURE(kSeamlessRefreshRateSwitching);
@@ -498,6 +499,7 @@
 COMPONENT_EXPORT(ASH_CONSTANTS)
 BASE_DECLARE_FEATURE(kSettingsAppThemeChangeAnimation);
 COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kShelfAutoHideSeparation);
+COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kShelfFocusOrderV1);
 COMPONENT_EXPORT(ASH_CONSTANTS)
 BASE_DECLARE_FEATURE(kShelfGesturesWithVirtualKeyboard);
 COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kShelfLauncherNudge);
@@ -552,6 +554,7 @@
 COMPONENT_EXPORT(ASH_CONSTANTS)
 BASE_DECLARE_FEATURE(kUseAuthsessionAuthentication);
 COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kUseAuthFactors);
+// TODO(b/231254441): Remove kUseBluetoothSystemInAsh flag.
 COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kUseBluetoothSystemInAsh);
 COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kUseLoginShelfWidget);
 COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kUseMessagesStagingUrl);
@@ -618,7 +621,6 @@
 COMPONENT_EXPORT(ASH_CONSTANTS) bool IsBackgroundBlurEnabled();
 COMPONENT_EXPORT(ASH_CONSTANTS) bool IsBentoBarEnabled();
 COMPONENT_EXPORT(ASH_CONSTANTS) bool IsBluetoothQualityReportEnabled();
-COMPONENT_EXPORT(ASH_CONSTANTS) bool IsBluetoothRevampEnabled();
 COMPONENT_EXPORT(ASH_CONSTANTS) bool IsCalendarViewEnabled();
 COMPONENT_EXPORT(ASH_CONSTANTS) bool IsCalendarModelDebugModeEnabled();
 COMPONENT_EXPORT(ASH_CONSTANTS) bool IsCaptivePortalUI2022Enabled();
@@ -636,7 +638,6 @@
 COMPONENT_EXPORT(ASH_CONSTANTS) bool IsCrosNextWMPEnabled();
 COMPONENT_EXPORT(ASH_CONSTANTS)
 bool IsCrossDeviceAttestationCertificateGenerationEnabled();
-COMPONENT_EXPORT(ASH_CONSTANTS) bool IsDesksCloseAllEnabled();
 COMPONENT_EXPORT(ASH_CONSTANTS) bool IsCryptohomeRecoveryFlowEnabled();
 COMPONENT_EXPORT(ASH_CONSTANTS) bool IsCryptohomeRecoveryFlowUIEnabled();
 COMPONENT_EXPORT(ASH_CONSTANTS) bool IsCryptohomeRecoverySetupEnabled();
@@ -645,6 +646,7 @@
 COMPONENT_EXPORT(ASH_CONSTANTS) bool IsDemoModeSWAEnabled();
 COMPONENT_EXPORT(ASH_CONSTANTS)
 bool IsDeprecateAssistantStylusFeaturesEnabled();
+COMPONENT_EXPORT(ASH_CONSTANTS) bool IsDesksCloseAllEnabled();
 COMPONENT_EXPORT(ASH_CONSTANTS) bool IsDeskTemplateSyncEnabled();
 COMPONENT_EXPORT(ASH_CONSTANTS) bool IsDisplayAlignmentAssistanceEnabled();
 COMPONENT_EXPORT(ASH_CONSTANTS) bool IsDragUnpinnedAppToPinEnabled();
@@ -676,6 +678,7 @@
 COMPONENT_EXPORT(ASH_CONSTANTS) bool IsFullscreenAlertBubbleEnabled();
 COMPONENT_EXPORT(ASH_CONSTANTS) bool IsGaiaReauthEndpointEnabled();
 COMPONENT_EXPORT(ASH_CONSTANTS) bool AreGlanceablesEnabled();
+COMPONENT_EXPORT(ASH_CONSTANTS) bool IsHatsUseNewHistogramsEnabled();
 COMPONENT_EXPORT(ASH_CONSTANTS) bool IsHibernateEnabled();
 COMPONENT_EXPORT(ASH_CONSTANTS) bool IsHideArcMediaNotificationsEnabled();
 COMPONENT_EXPORT(ASH_CONSTANTS) bool IsHideShelfControlsInTabletModeEnabled();
@@ -786,6 +789,7 @@
 COMPONENT_EXPORT(ASH_CONSTANTS) bool IsReleaseTrackUiEnabled();
 COMPONENT_EXPORT(ASH_CONSTANTS) bool IsReverseScrollGesturesEnabled();
 COMPONENT_EXPORT(ASH_CONSTANTS) bool IsRgbKeyboardEnabled();
+COMPONENT_EXPORT(ASH_CONSTANTS) bool IsSameAppWindowCycleEnabled();
 COMPONENT_EXPORT(ASH_CONSTANTS)
 bool IsSamlNotificationOnPasswordChangeSuccessEnabled();
 COMPONENT_EXPORT(ASH_CONSTANTS) bool IsSavedDesksEnabled();
diff --git a/ash/constants/notifier_catalogs.h b/ash/constants/notifier_catalogs.h
index 76d3996f..ab85933 100644
--- a/ash/constants/notifier_catalogs.h
+++ b/ash/constants/notifier_catalogs.h
@@ -77,7 +77,7 @@
   kFirmwareUpdate = 62,
   kPeripheralBattery = 63,
   kBluetoothPairingRequest = 64,
-  kBluetoothPairedDevice = 65,
+  // [Deprecated] kBluetoothPairedDevice = 65,
   kCellularSetup = 66,
   kScreenSecurity = 67,
   kWifiToggle = 68,
diff --git a/ash/public/cpp/holding_space/holding_space_constants.h b/ash/public/cpp/holding_space/holding_space_constants.h
index bc06365..17854dd8 100644
--- a/ash/public/cpp/holding_space/holding_space_constants.h
+++ b/ash/public/cpp/holding_space/holding_space_constants.h
@@ -59,30 +59,31 @@
 // View IDs.
 constexpr int kHoldingSpaceDownloadsSectionHeaderId = 1;
 constexpr int kHoldingSpaceFilesAppChipId = 2;
-constexpr int kHoldingSpaceItemCancelButtonId = 3;
-constexpr int kHoldingSpaceItemCheckmarkId = 4;
-constexpr int kHoldingSpaceItemImageId = 5;
-constexpr int kHoldingSpaceItemPauseButtonId = 6;
-constexpr int kHoldingSpaceItemPinButtonId = 7;
-constexpr int kHoldingSpaceItemPrimaryActionContainerId = 8;
-constexpr int kHoldingSpaceItemPrimaryChipLabelId = 9;
-constexpr int kHoldingSpaceItemResumeButtonId = 10;
-constexpr int kHoldingSpaceItemSecondaryActionContainerId = 11;
-constexpr int kHoldingSpaceItemSecondaryChipLabelId = 12;
-constexpr int kHoldingSpacePinnedFilesBubbleId = 13;
-constexpr int kHoldingSpacePinnedFilesSectionId = 14;
-constexpr int kHoldingSpacePinnedFilesSectionPlaceholderGSuiteIconsId = 15;
-constexpr int kHoldingSpacePinnedFilesSectionPlaceholderLabelId = 16;
-constexpr int kHoldingSpaceRecentFilesBubbleId = 17;
-constexpr int kHoldingSpaceRecentFilesPlaceholderId = 18;
-constexpr int kHoldingSpaceScreenCapturePlayIconId = 19;
-constexpr int kHoldingSpaceSuggestionsChevronIconId = 20;
-constexpr int kHoldingSpaceSuggestionsSectionContainerId = 21;
-constexpr int kHoldingSpaceSuggestionsSectionHeaderId = 22;
-constexpr int kHoldingSpaceSuggestionsSectionId = 23;
-constexpr int kHoldingSpaceTrayDefaultIconId = 24;
-constexpr int kHoldingSpaceTrayDropTargetOverlayId = 25;
-constexpr int kHoldingSpaceTrayPreviewsIconId = 26;
+constexpr int kHoldingSpaceHeaderLabelId = 3;
+constexpr int kHoldingSpaceItemCancelButtonId = 4;
+constexpr int kHoldingSpaceItemCheckmarkId = 5;
+constexpr int kHoldingSpaceItemImageId = 6;
+constexpr int kHoldingSpaceItemPauseButtonId = 7;
+constexpr int kHoldingSpaceItemPinButtonId = 8;
+constexpr int kHoldingSpaceItemPrimaryActionContainerId = 9;
+constexpr int kHoldingSpaceItemPrimaryChipLabelId = 10;
+constexpr int kHoldingSpaceItemResumeButtonId = 11;
+constexpr int kHoldingSpaceItemSecondaryActionContainerId = 12;
+constexpr int kHoldingSpaceItemSecondaryChipLabelId = 13;
+constexpr int kHoldingSpacePinnedFilesBubbleId = 14;
+constexpr int kHoldingSpacePinnedFilesSectionId = 15;
+constexpr int kHoldingSpacePinnedFilesSectionPlaceholderGSuiteIconsId = 16;
+constexpr int kHoldingSpacePinnedFilesSectionPlaceholderLabelId = 17;
+constexpr int kHoldingSpaceRecentFilesBubbleId = 18;
+constexpr int kHoldingSpaceRecentFilesPlaceholderId = 19;
+constexpr int kHoldingSpaceScreenCapturePlayIconId = 20;
+constexpr int kHoldingSpaceSuggestionsChevronIconId = 21;
+constexpr int kHoldingSpaceSuggestionsSectionContainerId = 22;
+constexpr int kHoldingSpaceSuggestionsSectionHeaderId = 23;
+constexpr int kHoldingSpaceSuggestionsSectionId = 24;
+constexpr int kHoldingSpaceTrayDefaultIconId = 25;
+constexpr int kHoldingSpaceTrayDropTargetOverlayId = 26;
+constexpr int kHoldingSpaceTrayPreviewsIconId = 27;
 
 // The maximum allowed age for files restored into the holding space model.
 // Note that this is not enforced for pinned items.
diff --git a/ash/quick_pair/keyed_service/quick_pair_mediator.cc b/ash/quick_pair/keyed_service/quick_pair_mediator.cc
index e273e0f0..a2c4cc7 100644
--- a/ash/quick_pair/keyed_service/quick_pair_mediator.cc
+++ b/ash/quick_pair/keyed_service/quick_pair_mediator.cc
@@ -109,13 +109,11 @@
                    !has_at_least_one_discovery_session_);
   quick_pair_process::SetProcessManager(process_manager_.get());
 
-  if (ash::features::IsBluetoothRevampEnabled()) {
-    // Asynchronously bind to CrosBluetoothConfig so that we don't attempt to
-    // bind to it before it has initialized.
-    base::ThreadTaskRunnerHandle::Get()->PostTask(
-        FROM_HERE, base::BindOnce(&Mediator::BindToCrosBluetoothConfig,
-                                  weak_ptr_factory_.GetWeakPtr()));
-  }
+  // Asynchronously bind to CrosBluetoothConfig so that we don't attempt to
+  // bind to it before it has initialized.
+  base::ThreadTaskRunnerHandle::Get()->PostTask(
+      FROM_HERE, base::BindOnce(&Mediator::BindToCrosBluetoothConfig,
+                                weak_ptr_factory_.GetWeakPtr()));
 }
 
 Mediator::~Mediator() {
diff --git a/ash/quick_pair/repository/fast_pair_repository_impl.cc b/ash/quick_pair/repository/fast_pair_repository_impl.cc
index 1b3f72b..2247d3e9 100644
--- a/ash/quick_pair/repository/fast_pair_repository_impl.cc
+++ b/ash/quick_pair/repository/fast_pair_repository_impl.cc
@@ -362,6 +362,7 @@
     return;
   }
 
+  pending_write_store_->AddPairedDevice(mac_address, hex_model_id);
   footprints_fetcher_->AddUserFastPairInfo(
       BuildFastPairInfo(hex_model_id, account_key, mac_address, metadata),
       base::BindOnce(&FastPairRepositoryImpl::OnAddDeviceToFootprintsComplete,
@@ -373,11 +374,28 @@
     const std::vector<uint8_t>& account_key,
     bool success) {
   if (!success) {
-    // TODO(b/221126805): Handle caching to disk + retries.
+    QP_LOG(WARNING)
+        << __func__
+        << ": Failed to add device to Footprints--"
+           "deferring addition to SavedDeviceRegistry until we succeed.";
+    return;
+  }
+  QP_LOG(INFO) << __func__ << ": Successfully added device to Footprints.";
+
+  // Remove pending add on successful Footprints write
+  pending_write_store_->OnPairedDeviceSaved(mac_address);
+
+  // save/update account key in saved device registry
+  saved_device_registry_->SaveAccountKey(mac_address, account_key);
+
+  if (saved_device_registry_->IsAccountKeySavedToRegistry(account_key)) {
+    QP_LOG(INFO) << __func__
+                 << ": Successfully added device to Saved Device Registry.";
     return;
   }
 
-  saved_device_registry_->SaveAccountKey(mac_address, account_key);
+  QP_LOG(WARNING) << __func__
+                  << ": Failed to add device to Saved Device Registry.";
 }
 
 void FastPairRepositoryImpl::CheckOptInStatus(
diff --git a/ash/quick_pair/repository/fast_pair_repository_impl_unittest.cc b/ash/quick_pair/repository/fast_pair_repository_impl_unittest.cc
index 2f8c434..0a8ba2c9 100644
--- a/ash/quick_pair/repository/fast_pair_repository_impl_unittest.cc
+++ b/ash/quick_pair/repository/fast_pair_repository_impl_unittest.cc
@@ -1158,5 +1158,20 @@
   base::RunLoop().RunUntilIdle();
 }
 
+TEST_F(FastPairRepositoryImplTest,
+       AddDeviceToFootprints_RemoveDeviceFromPendingWriteStore) {
+  auto device = base::MakeRefCounted<Device>(kValidModelId, kTestBLEAddress,
+                                             Protocol::kFastPairInitial);
+  device->set_classic_address(kTestClassicAddress1);
+  fast_pair_repository_->AssociateAccountKey(device, kAccountKey1);
+  base::RunLoop().RunUntilIdle();
+  ASSERT_TRUE(footprints_fetcher_->ContainsKey(kAccountKey1));
+  ASSERT_TRUE(
+      saved_device_registry_->IsAccountKeySavedToRegistry(kAccountKey1));
+
+  // After a successful Footprints add, pending adds list should be empty
+  ASSERT_EQ(0u, pending_write_store_->GetPendingAdds().size());
+}
+
 }  // namespace quick_pair
 }  // namespace ash
diff --git a/ash/services/secure_channel/ble_weave_client_connection_unittest.cc b/ash/services/secure_channel/ble_weave_client_connection_unittest.cc
index 4d610fb..552ede7a 100644
--- a/ash/services/secure_channel/ble_weave_client_connection_unittest.cc
+++ b/ash/services/secure_channel/ble_weave_client_connection_unittest.cc
@@ -45,6 +45,7 @@
 using ::testing::NiceMock;
 using ::testing::Return;
 using ::testing::SaveArg;
+using ::testing::WithArgs;
 
 typedef BluetoothLowEnergyWeaveClientConnection::SubStatus SubStatus;
 typedef BluetoothLowEnergyWeavePacketReceiver::State ReceiverState;
@@ -433,14 +434,18 @@
   void ConnectGatt(TestBluetoothLowEnergyWeaveClientConnection* connection) {
     if (connection->should_set_low_connection_latency()) {
       EXPECT_CALL(*mock_bluetooth_device_,
-                  SetConnectionLatency_(
+                  SetConnectionLatency(
                       device::BluetoothDevice::CONNECTION_LATENCY_LOW, _, _))
-          .WillOnce(DoAll(MoveArg<1>(&connection_latency_callback_),
-                          MoveArg<2>(&connection_latency_error_callback_)));
+          .WillOnce(WithArgs<1, 2>(
+              [&](base::OnceClosure callback,
+                  device::BluetoothDevice::ErrorCallback error_callback) {
+                connection_latency_callback_ = std::move(callback);
+                connection_latency_error_callback_ = std::move(error_callback);
+              }));
     }
 
     // Preparing |connection| for a CreateGattConnection call.
-    EXPECT_CALL(*mock_bluetooth_device_, CreateGattConnection_(_))
+    EXPECT_CALL(*mock_bluetooth_device_, CreateGattConnection(_, _))
         .WillOnce(DoAll(MoveArg<0>(&create_gatt_connection_callback_)));
 
     connection->Connect();
@@ -1366,11 +1371,15 @@
       CreateConnection(true /* should_set_low_connection_latency */));
 
   EXPECT_CALL(*mock_bluetooth_device_,
-              SetConnectionLatency_(
+              SetConnectionLatency(
                   device::BluetoothDevice::CONNECTION_LATENCY_LOW, _, _))
-      .WillOnce(DoAll(MoveArg<1>(&connection_latency_callback_),
-                      MoveArg<2>(&connection_latency_error_callback_)));
-  EXPECT_CALL(*mock_bluetooth_device_, CreateGattConnection_(_))
+      .WillOnce(WithArgs<1, 2>(
+          [&](base::OnceClosure callback,
+              device::BluetoothDevice::ErrorCallback error_callback) {
+            connection_latency_callback_ = std::move(callback);
+            connection_latency_error_callback_ = std::move(error_callback);
+          }));
+  EXPECT_CALL(*mock_bluetooth_device_, CreateGattConnection(_, _))
       .WillOnce(DoAll(MoveArg<0>(&create_gatt_connection_callback_)));
 
   // No GATT connection should be created before the delay.
@@ -1418,16 +1427,20 @@
       CreateConnection(true /* should_set_low_connection_latency */));
 
   EXPECT_CALL(*mock_bluetooth_device_,
-              SetConnectionLatency_(
+              SetConnectionLatency(
                   device::BluetoothDevice::CONNECTION_LATENCY_LOW, _, _))
-      .WillOnce(DoAll(MoveArg<1>(&connection_latency_callback_),
-                      MoveArg<2>(&connection_latency_error_callback_)));
+      .WillOnce(WithArgs<1, 2>(
+          [&](base::OnceClosure callback,
+              device::BluetoothDevice::ErrorCallback error_callback) {
+            connection_latency_callback_ = std::move(callback);
+            connection_latency_error_callback_ = std::move(error_callback);
+          }));
 
   // Even if setting the connection interval fails, we should still connect.
   connection->Connect();
   ASSERT_FALSE(connection_latency_error_callback_.is_null());
 
-  EXPECT_CALL(*mock_bluetooth_device_, CreateGattConnection_(_))
+  EXPECT_CALL(*mock_bluetooth_device_, CreateGattConnection(_, _))
       .WillOnce(DoAll(MoveArg<0>(&create_gatt_connection_callback_)));
   std::move(connection_latency_error_callback_).Run();
   ASSERT_FALSE(create_gatt_connection_callback_.is_null());
@@ -1463,10 +1476,14 @@
       CreateConnection(true /* should_set_low_connection_latency */));
 
   EXPECT_CALL(*mock_bluetooth_device_,
-              SetConnectionLatency_(
+              SetConnectionLatency(
                   device::BluetoothDevice::CONNECTION_LATENCY_LOW, _, _))
-      .WillOnce(DoAll(MoveArg<1>(&connection_latency_callback_),
-                      MoveArg<2>(&connection_latency_error_callback_)));
+      .WillOnce(WithArgs<1, 2>(
+          [&](base::OnceClosure callback,
+              device::BluetoothDevice::ErrorCallback error_callback) {
+            connection_latency_callback_ = std::move(callback);
+            connection_latency_error_callback_ = std::move(error_callback);
+          }));
 
   // Call Connect(), which should set the connection latency.
   connection->Connect();
@@ -1475,7 +1492,7 @@
   ASSERT_FALSE(connection_latency_callback_.is_null());
   ASSERT_FALSE(connection_latency_error_callback_.is_null());
 
-  EXPECT_CALL(*mock_bluetooth_device_, CreateGattConnection_(_))
+  EXPECT_CALL(*mock_bluetooth_device_, CreateGattConnection(_, _))
       .WillOnce(DoAll(MoveArg<0>(&create_gatt_connection_callback_)));
 
   // Simulate a timeout.
@@ -1519,13 +1536,17 @@
       CreateConnection(true /* should_set_low_connection_latency */));
 
   EXPECT_CALL(*mock_bluetooth_device_,
-              SetConnectionLatency_(
+              SetConnectionLatency(
                   device::BluetoothDevice::CONNECTION_LATENCY_LOW, _, _))
-      .WillOnce(DoAll(MoveArg<1>(&connection_latency_callback_),
-                      MoveArg<2>(&connection_latency_error_callback_)));
+      .WillOnce(WithArgs<1, 2>(
+          [&](base::OnceClosure callback,
+              device::BluetoothDevice::ErrorCallback error_callback) {
+            connection_latency_callback_ = std::move(callback);
+            connection_latency_error_callback_ = std::move(error_callback);
+          }));
 
   // Preparing |connection| for a CreateGattConnection call.
-  EXPECT_CALL(*mock_bluetooth_device_, CreateGattConnection_(_))
+  EXPECT_CALL(*mock_bluetooth_device_, CreateGattConnection(_, _))
       .WillOnce(DoAll(MoveArg<0>(&create_gatt_connection_callback_)));
 
   connection->Connect();
diff --git a/ash/shelf/shelf_view.cc b/ash/shelf/shelf_view.cc
index 9051b656..aed2772 100644
--- a/ash/shelf/shelf_view.cc
+++ b/ash/shelf/shelf_view.cc
@@ -1571,6 +1571,18 @@
 }
 
 void ShelfView::MoveDragViewTo(int primary_axis_coordinate) {
+  if (visible_views_indices_.empty()) {
+    DCHECK(model_->in_shelf_party());
+    if (shelf_->IsHorizontalAlignment()) {
+      if (drag_view_->x() != app_icons_layout_offset_)
+        drag_view_->SetX(app_icons_layout_offset_);
+    } else {
+      if (drag_view_->y() != app_icons_layout_offset_)
+        drag_view_->SetY(app_icons_layout_offset_);
+    }
+    return;
+  }
+
   const size_t current_item_index =
       view_model_->GetIndexOfView(drag_view_).value();
   const std::pair<size_t, size_t> indices(GetDragRange(current_item_index));
@@ -1844,6 +1856,11 @@
   if (!features::IsDragUnpinnedAppToPinEnabled())
     return false;
 
+  if (visible_views_indices_.empty()) {
+    DCHECK(model_->in_shelf_party());
+    return false;
+  }
+
   DCHECK(base::Contains(visible_views_indices_, dragged_view_index));
   bool is_moved_item_pinned =
       IsPinnedShelfItemType(model_->items()[dragged_view_index].type);
diff --git a/ash/shell.cc b/ash/shell.cc
index b6ffe0e060..65f1e7a7 100644
--- a/ash/shell.cc
+++ b/ash/shell.cc
@@ -116,9 +116,6 @@
 #include "ash/system/audio/display_speaker_controller.h"
 #include "ash/system/bluetooth/bluetooth_device_status_ui_handler.h"
 #include "ash/system/bluetooth/bluetooth_notification_controller.h"
-#include "ash/system/bluetooth/bluetooth_power_controller.h"
-#include "ash/system/bluetooth/tray_bluetooth_helper_experimental.h"
-#include "ash/system/bluetooth/tray_bluetooth_helper_legacy.h"
 #include "ash/system/brightness/brightness_controller_chromeos.h"
 #include "ash/system/brightness_control_delegate.h"
 #include "ash/system/camera/autozoom_controller_impl.h"
@@ -604,20 +601,6 @@
   keyboard_controller_ =
       std::make_unique<KeyboardControllerImpl>(session_controller_.get());
 
-  if (!ash::features::IsBluetoothRevampEnabled()) {
-    if (base::FeatureList::IsEnabled(features::kUseBluetoothSystemInAsh)) {
-      mojo::PendingRemote<device::mojom::BluetoothSystemFactory>
-          bluetooth_system_factory;
-      shell_delegate_->BindBluetoothSystemFactory(
-          bluetooth_system_factory.InitWithNewPipeAndPassReceiver());
-      tray_bluetooth_helper_ =
-          std::make_unique<TrayBluetoothHelperExperimental>(
-              std::move(bluetooth_system_factory));
-    } else {
-      tray_bluetooth_helper_ = std::make_unique<TrayBluetoothHelperLegacy>();
-    }
-  }
-
   PowerStatus::Initialize();
 
   session_controller_->AddObserver(this);
@@ -763,8 +746,6 @@
 
   toast_manager_.reset();
 
-  tray_bluetooth_helper_.reset();
-
   // Accesses root window containers.
   logout_confirmation_controller_.reset();
 
@@ -950,9 +931,6 @@
   power_event_observer_.reset();
 
   session_controller_->RemoveObserver(this);
-  // BluetoothPowerController depends on the PrefService and must be destructed
-  // before it.
-  bluetooth_power_controller_ = nullptr;
   // TouchDevicesController depends on the PrefService and must be destructed
   // before it.
   touch_devices_controller_ = nullptr;
@@ -1027,10 +1005,6 @@
     privacy_hub_controller_ = std::make_unique<PrivacyHubController>();
   }
   touch_devices_controller_ = std::make_unique<TouchDevicesController>();
-  if (!ash::features::IsBluetoothRevampEnabled()) {
-    bluetooth_power_controller_ =
-        std::make_unique<BluetoothPowerController>(local_state_);
-  }
   detachable_base_handler_ =
       std::make_unique<DetachableBaseHandler>(local_state_);
   detachable_base_notification_controller_ =
@@ -1377,11 +1351,6 @@
   logout_confirmation_controller_ =
       std::make_unique<LogoutConfirmationController>();
 
-  if (!ash::features::IsBluetoothRevampEnabled()) {
-    // May trigger initialization of the Bluetooth adapter.
-    tray_bluetooth_helper_->Initialize();
-  }
-
   // Create AshTouchTransformController before
   // WindowTreeHostManager::InitDisplays()
   // since AshTouchTransformController listens on
@@ -1437,12 +1406,8 @@
           user_activity_detector_.get(), std::move(fingerprint));
   video_activity_notifier_ =
       std::make_unique<VideoActivityNotifier>(video_detector_.get());
-
-  if (ash::features::IsBluetoothRevampEnabled()) {
-    bluetooth_device_status_ui_handler_ =
-        std::make_unique<BluetoothDeviceStatusUiHandler>();
-  }
-
+  bluetooth_device_status_ui_handler_ =
+      std::make_unique<BluetoothDeviceStatusUiHandler>();
   bluetooth_notification_controller_ =
       std::make_unique<BluetoothNotificationController>(
           message_center::MessageCenter::Get());
diff --git a/ash/shell.h b/ash/shell.h
index 4d08bf31..fd54b4bf 100644
--- a/ash/shell.h
+++ b/ash/shell.h
@@ -101,7 +101,6 @@
 class BacklightsForcedOffSetter;
 class BluetoothDeviceStatusUiHandler;
 class BluetoothNotificationController;
-class BluetoothPowerController;
 class BrightnessControlDelegate;
 class CalendarController;
 class CaptureModeController;
@@ -215,7 +214,6 @@
 class ClipboardHistoryControllerImpl;
 class TouchDevicesController;
 class TrayAction;
-class TrayBluetoothHelper;
 class UserMetricsRecorder;
 class VideoActivityNotifier;
 class VideoDetector;
@@ -384,10 +382,6 @@
   BacklightsForcedOffSetter* backlights_forced_off_setter() {
     return backlights_forced_off_setter_.get();
   }
-  BluetoothPowerController* bluetooth_power_controller() {
-    DCHECK(!ash::features::IsBluetoothRevampEnabled());
-    return bluetooth_power_controller_.get();
-  }
   BrightnessControlDelegate* brightness_control_delegate() {
     return brightness_control_delegate_.get();
   }
@@ -646,10 +640,6 @@
   }
   TrayAction* tray_action() { return tray_action_.get(); }
 
-  // Will return |nullptr| when the |kBluetoothRevamp| feature flag is enabled.
-  TrayBluetoothHelper* tray_bluetooth_helper() {
-    return tray_bluetooth_helper_.get();
-  }
   UserMetricsRecorder* metrics() { return user_metrics_recorder_.get(); }
   VideoDetector* video_detector() { return video_detector_.get(); }
   WallpaperControllerImpl* wallpaper_controller() {
@@ -975,10 +965,6 @@
       bluetooth_notification_controller_;
   std::unique_ptr<BluetoothDeviceStatusUiHandler>
       bluetooth_device_status_ui_handler_;
-  std::unique_ptr<BluetoothPowerController> bluetooth_power_controller_;
-
-  // Will be |nullptr| when the |kBluetoothRevamp| feature flag is enabled.
-  std::unique_ptr<TrayBluetoothHelper> tray_bluetooth_helper_;
   std::unique_ptr<KeyboardControllerImpl> keyboard_controller_;
   std::unique_ptr<DisplayAlignmentController> display_alignment_controller_;
   std::unique_ptr<DisplayColorManager> display_color_manager_;
diff --git a/ash/strings/ash_strings_af.xtb b/ash/strings/ash_strings_af.xtb
index dca987f..2f2386d 100644
--- a/ash/strings/ash_strings_af.xtb
+++ b/ash/strings/ash_strings_af.xtb
@@ -159,6 +159,15 @@
 <translation id="1797271123677381264">Wagwoord vergeet</translation>
 <translation id="181103072419391116">Seinsterkte <ph name="SIGNAL_STRENGTH" />, deur jou administrateur bestuur</translation>
 <translation id="1812997170047690955">Wat wys op my skerm?</translation>
+<translation id="1823280932251546115">Statuslaai, tyd <ph name="TIME" />,
+        <ph name="BATTERY" />
+        <ph name="CHANNEL" />
+        <ph name="NETWORK" />,
+        <ph name="PRIVACY" />,
+        <ph name="MANAGED" />
+        <ph name="NOTIFICATION" />,
+        <ph name="IME" />
+        <ph name="LOCALE" /></translation>
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1830308660060964064"><ph name="ITEM_TITLE" /> is ontspeld</translation>
 <translation id="1836215606488044471">Assistent (laai tans …)</translation>
@@ -457,6 +466,8 @@
 <translation id="3600061223661453002">Af</translation>
 <translation id="3604801046548457007">Lessenaar <ph name="DESK_TITILE" /> is geskep</translation>
 <translation id="3606978283550408104">Braille-skerm gekoppel.</translation>
+<translation id="3609301425104788351"><ph name="MIC" />,
+        <ph name="CAMERA" /></translation>
 <translation id="3615926715408477684">As mobiele data geaktiveer word, sal dit Bluetooth aktiveer</translation>
 <translation id="3616883743181209306">Kieslys is na die skerm se hoek regs bo geskuif.</translation>
 <translation id="3619536907358025872">Skermskootinstellings</translation>
diff --git a/ash/strings/ash_strings_as.xtb b/ash/strings/ash_strings_as.xtb
index 541308a..e5e27799 100644
--- a/ash/strings/ash_strings_as.xtb
+++ b/ash/strings/ash_strings_as.xtb
@@ -653,7 +653,7 @@
 <translation id="4666082839192943839">সকলো সময়তে আটাইবোৰ কেমেৰা অৱৰোধ কৰিবলৈ এই ডিভাইচটোত কেমেৰাৰ এক্সেছ অফ কৰক।</translation>
 <translation id="4667099493359681081"><ph name="FILENAME" /> ডাউনল’ড কৰি থকা হৈছে</translation>
 <translation id="4690510401873698237">শ্বেল্ফ একেবাৰে তলিত আছে</translation>
-<translation id="4696813013609194136">অভিভাৱকৰ প্ৰৱেশ ক'ডৰ সহায়ত ডিভাইচ আনলক কৰক</translation>
+<translation id="4696813013609194136">অভিভাৱকৰ এক্সেছ ক'ডৰ সহায়ত ডিভাইচ আনলক কৰক</translation>
 <translation id="4702647871202761252">গোপনীয়তাৰ স্ক্ৰীনখন অফ আছে</translation>
 <translation id="470644585772471629">ৰং বিপৰীতকৰণ</translation>
 <translation id="4717575069099566988">আপোনাৰ USB-C কে’বলে USB4 সমৰ্থন নকৰে। ডিভাইচৰ কাৰ্যক্ষমতা সীমিত হ’ব পাৰে।</translation>
@@ -1108,7 +1108,7 @@
 <translation id="7382680553121047388">অন কৰক</translation>
 <translation id="7384028040782072252">আপোনাৰ এপ্ পুনৰ সজাবলৈ যিকোনো ঠাইতে ৰাইট-ক্লিক কৰক</translation>
 <translation id="7392563512730092880">আপুনি ছেটিঙৰ পৰা পাছত যিকোনো সময়তে ছেট আপ কৰিব পাৰে।</translation>
-<translation id="7405710164030118432">ডিভাইচটো আনলক কৰিবলৈ আপোনাৰ Family Linkৰ অভিভাৱকৰ প্ৰৱেশ ক'ডটো দিয়ক</translation>
+<translation id="7405710164030118432">ডিভাইচটো আনলক কৰিবলৈ আপোনাৰ Family Linkৰ অভিভাৱকৰ এক্সেছ ক'ডটো দিয়ক</translation>
 <translation id="7406608787870898861">আপোনাৰ ম’বাইল নেটৱৰ্ক ছেট আপ কৰা সমাপ্ত কৰক</translation>
 <translation id="740790383907119240">এপ্‌ শ্বৰ্টকাট</translation>
 <translation id="7413851974711031813">বন্ধ কৰিবলৈ এস্কে’প টিপক</translation>
diff --git a/ash/strings/ash_strings_az.xtb b/ash/strings/ash_strings_az.xtb
index 138eb272..c239c4b 100644
--- a/ash/strings/ash_strings_az.xtb
+++ b/ash/strings/ash_strings_az.xtb
@@ -159,6 +159,15 @@
 <translation id="1797271123677381264">Şifrəni unutmuşam</translation>
 <translation id="181103072419391116">Siqnal Gücü <ph name="SIGNAL_STRENGTH" />, Administratorunuz tərəfindən idarə olunur</translation>
 <translation id="1812997170047690955">Ekranımda nə var?</translation>
+<translation id="1823280932251546115">Status bölməsi, vaxt: <ph name="TIME" />,
+        <ph name="BATTERY" />
+        <ph name="CHANNEL" />
+        <ph name="NETWORK" />,
+        <ph name="PRIVACY" />,
+        <ph name="MANAGED" />
+        <ph name="NOTIFICATION" />,
+        <ph name="IME" />
+        <ph name="LOCALE" /></translation>
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1830308660060964064"><ph name="ITEM_TITLE" /> çıxarıldı</translation>
 <translation id="1836215606488044471">Assistent (yüklənir...)</translation>
@@ -458,6 +467,8 @@
 <translation id="3600061223661453002">Deaktiv</translation>
 <translation id="3604801046548457007">Masa <ph name="DESK_TITILE" /> yaradıldı</translation>
 <translation id="3606978283550408104">Brayl displeyi qoşuludur.</translation>
+<translation id="3609301425104788351"><ph name="MIC" />,
+        <ph name="CAMERA" /></translation>
 <translation id="3615926715408477684">Mobil datanın aktiv edilməsi ilə Bluetooh da aktiv ediləcək</translation>
 <translation id="3616883743181209306">Menyu ekranın yuxarı sağ küncünə köçürülüb.</translation>
 <translation id="3619536907358025872">Ekran çəkilişi ayarları</translation>
diff --git a/ash/strings/ash_strings_bg.xtb b/ash/strings/ash_strings_bg.xtb
index 5433201..2921b64 100644
--- a/ash/strings/ash_strings_bg.xtb
+++ b/ash/strings/ash_strings_bg.xtb
@@ -414,6 +414,7 @@
 <translation id="3368922792935385530">Има връзка</translation>
 <translation id="3371140690572404006">устройство с USB-C (предният десен порт)</translation>
 <translation id="3375634426936648815">Свързано</translation>
+<translation id="3378438761594387761">Тук ще намерите скорошните си изтегляния и екранни снимки</translation>
 <translation id="3378442621503952303">Установява се връзка с профил за мобилна мрежа. Изчакайте няколко минути.</translation>
 <translation id="3386978599540877378">Лупата за увеличаване на целия екран</translation>
 <translation id="3387527074123400161">Chromium OS</translation>
@@ -720,6 +721,7 @@
 <translation id="5083553833479578423">Отключете още функции на Асистент.</translation>
 <translation id="509790653408515442">Когато предавате поточно приложенията на телефона си, те ще се показват тук</translation>
 <translation id="5098537242461068432">Работният кът и прозорците бяха отворени отново</translation>
+<translation id="5104236669533825617">Не може да се създаде скрийнкаст</translation>
 <translation id="5107522548814527560">Мрежата</translation>
 <translation id="5117590920725113268">Показване на следващия месец</translation>
 <translation id="5136175204352732067">Свързана е различна клавиатура</translation>
@@ -765,6 +767,7 @@
 <translation id="5344128444027639014"><ph name="BATTERY_PERCENTAGE" />% (дясна)</translation>
 <translation id="5352250171825660495">Тъмната тема е включена</translation>
 <translation id="5356963482258194581">Превключвайте между тъмната и светлата тема. Кликнете с десния бутон върху работния плот и изберете „Тапет и стил“.</translation>
+<translation id="536019650977002321">Администраторът ви не разрешава записване на аудио. За повече информация се обърнете към него.</translation>
 <translation id="5363163447017455357"><ph name="DELIMITER" /> Към този раздел</translation>
 <translation id="5379115545237091094">Твърде много опити</translation>
 <translation id="5391307769715781764">Да се замени ли запазеният работен кът?</translation>
diff --git a/ash/strings/ash_strings_bs.xtb b/ash/strings/ash_strings_bs.xtb
index 3488933..81d1586b 100644
--- a/ash/strings/ash_strings_bs.xtb
+++ b/ash/strings/ash_strings_bs.xtb
@@ -159,6 +159,15 @@
 <translation id="1797271123677381264">Zaboravljena lozinka</translation>
 <translation id="181103072419391116">Jačina signala <ph name="SIGNAL_STRENGTH" />, upravlja vaš administrator</translation>
 <translation id="1812997170047690955">Šta je na ekranu?</translation>
+<translation id="1823280932251546115">Statusna traka, vrijeme <ph name="TIME" />,
+        <ph name="BATTERY" />
+        <ph name="CHANNEL" />
+        <ph name="NETWORK" />,
+        <ph name="PRIVACY" />,
+        <ph name="MANAGED" />
+        <ph name="NOTIFICATION" />,
+        <ph name="IME" />
+        <ph name="LOCALE" /></translation>
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1830308660060964064">Stavka <ph name="ITEM_TITLE" /> je otkačena</translation>
 <translation id="1836215606488044471">Asistent (učitavanje...)</translation>
@@ -458,6 +467,8 @@
 <translation id="3600061223661453002">Isključeno</translation>
 <translation id="3604801046548457007">Radna površina <ph name="DESK_TITILE" /> je kreirana</translation>
 <translation id="3606978283550408104">Brajev je redak povezan.</translation>
+<translation id="3609301425104788351"><ph name="MIC" />,
+        <ph name="CAMERA" /></translation>
 <translation id="3615926715408477684">Omogućavanjem prijenosa podataka na mobilnoj mreži omogućit će se Bluetooth</translation>
 <translation id="3616883743181209306">Meni je pomjeren u gornji desni ugao ekrana.</translation>
 <translation id="3619536907358025872">Postavke snimanja ekrana</translation>
diff --git a/ash/strings/ash_strings_ca.xtb b/ash/strings/ash_strings_ca.xtb
index 0387075..d19bf96 100644
--- a/ash/strings/ash_strings_ca.xtb
+++ b/ash/strings/ash_strings_ca.xtb
@@ -414,6 +414,7 @@
 <translation id="3368922792935385530">Connectat</translation>
 <translation id="3371140690572404006">Dispositiu USB-C (port frontal dret)</translation>
 <translation id="3375634426936648815">Connectat</translation>
+<translation id="3378438761594387761">Aquí trobaràs les captures de pantalla i les baixades recents</translation>
 <translation id="3378442621503952303">S'està connectant a un perfil. Espera uns minuts.</translation>
 <translation id="3386978599540877378">la lupa de pantalla completa</translation>
 <translation id="3387527074123400161">Chromium OS</translation>
@@ -720,6 +721,7 @@
 <translation id="5083553833479578423">Desbloqueja més funcions de l'Assistent.</translation>
 <translation id="509790653408515442">Quan reprodueixis en continu aplicacions del telèfon, apareixeran aquí</translation>
 <translation id="5098537242461068432">S'han tornat a obrir l'escriptori i les finestres</translation>
+<translation id="5104236669533825617">No es pot crear la captura de pantalla de vídeo</translation>
 <translation id="5107522548814527560">Web</translation>
 <translation id="5117590920725113268">Mostra el mes següent</translation>
 <translation id="5136175204352732067">S'ha connectat un altre teclat</translation>
@@ -765,6 +767,7 @@
 <translation id="5344128444027639014"><ph name="BATTERY_PERCENTAGE" />% (auricular dret)</translation>
 <translation id="5352250171825660495">El tema fosc està activat</translation>
 <translation id="5356963482258194581">Canvia entre els temes clar i fosc. Fes clic amb el botó dret a l'escriptori i selecciona Estil i fons de pantalla.</translation>
+<translation id="536019650977002321">L'administrador no permet la captura d'àudio. Contacta-hi per obtenir més informació.</translation>
 <translation id="5363163447017455357"><ph name="DELIMITER" /> Ves a aquesta pestanya</translation>
 <translation id="5379115545237091094">Massa intents</translation>
 <translation id="5391307769715781764">Vols substituir l'escriptori desat?</translation>
diff --git a/ash/strings/ash_strings_cy.xtb b/ash/strings/ash_strings_cy.xtb
index ce5852ba..35c2043 100644
--- a/ash/strings/ash_strings_cy.xtb
+++ b/ash/strings/ash_strings_cy.xtb
@@ -414,6 +414,7 @@
 <translation id="3368922792935385530">Wedi cysylltu</translation>
 <translation id="3371140690572404006">Dyfais USB-C (porth de ar y blaen)</translation>
 <translation id="3375634426936648815">Wedi cysylltu</translation>
+<translation id="3378438761594387761">Byddwch yn gweld eich lawrlwythiadau diweddar a'ch sgrinluniau yma</translation>
 <translation id="3378442621503952303">Wrthi'n cysylltu â'r proffil. Arhoswch ychydig funudau.</translation>
 <translation id="3386978599540877378">y chwyddwydr sgrîn lawn</translation>
 <translation id="3387527074123400161">ChromiumOS</translation>
@@ -720,6 +721,7 @@
 <translation id="5083553833479578423">Datgloi rhagor o nodweddion Assistant.</translation>
 <translation id="509790653408515442">Pan fyddwch yn ffrydio apiau eich ffôn, byddant yn ymddangos yma</translation>
 <translation id="5098537242461068432">Desg a ffenestri wedi'u hailagor</translation>
+<translation id="5104236669533825617">Methu â chreu sgrinlediad</translation>
 <translation id="5107522548814527560">Y We</translation>
 <translation id="5117590920725113268">Dangos y mis nesaf</translation>
 <translation id="5136175204352732067">Mae bysellfwrdd gwahanol wedi'i gysylltu</translation>
@@ -765,6 +767,7 @@
 <translation id="5344128444027639014"><ph name="BATTERY_PERCENTAGE" />% (Dde)</translation>
 <translation id="5352250171825660495">Mae'r thema dywyll ymlaen</translation>
 <translation id="5356963482258194581">Newidiwch rhwng thema dywyll a thema olau. De-gliciwch ar y bwrdd gwaith a dewiswch Papur wal ac arddull.</translation>
+<translation id="536019650977002321">Nid yw eich gweinyddwr yn caniatáu cipio sain. Cysylltwch â'ch gweinyddwr am ragor o wybodaeth.</translation>
 <translation id="5363163447017455357"><ph name="DELIMITER" /> Ewch i'r tab hwn</translation>
 <translation id="5379115545237091094">Gormod o ymgeisiau</translation>
 <translation id="5391307769715781764">Disodli'r ddesg sydd wedi'i chadw?</translation>
diff --git a/ash/strings/ash_strings_da.xtb b/ash/strings/ash_strings_da.xtb
index b2f4147..45d9c3d 100644
--- a/ash/strings/ash_strings_da.xtb
+++ b/ash/strings/ash_strings_da.xtb
@@ -414,6 +414,7 @@
 <translation id="3368922792935385530">Tilsluttet</translation>
 <translation id="3371140690572404006">USB-C-enhed (porten foran i højre side)</translation>
 <translation id="3375634426936648815">Forbundet</translation>
+<translation id="3378438761594387761">Her finder du dine seneste downloads og screenshots</translation>
 <translation id="3378442621503952303">Der oprettes forbindelse til profilen. Vent et par minutter.</translation>
 <translation id="3386978599540877378">luppen i fuld skærm</translation>
 <translation id="3387527074123400161">Chromium OS</translation>
@@ -720,6 +721,7 @@
 <translation id="5083553833479578423">Få adgang til endnu flere Assistent-funktioner.</translation>
 <translation id="509790653408515442">Når du streamer din telefons apps, vises de her</translation>
 <translation id="5098537242461068432">Skrivebordet og vinduer er genåbnet</translation>
+<translation id="5104236669533825617">Screencasten kan ikke oprettes</translation>
 <translation id="5107522548814527560">Internet</translation>
 <translation id="5117590920725113268">Vis næste måned</translation>
 <translation id="5136175204352732067">Du har tilsluttet et andet tastatur</translation>
@@ -765,6 +767,7 @@
 <translation id="5344128444027639014"><ph name="BATTERY_PERCENTAGE" /> % (højre)</translation>
 <translation id="5352250171825660495">Mørkt tema er aktiveret</translation>
 <translation id="5356963482258194581">Skift mellem Mørkt og Lyst tema. Højreklik på skrivebordet, og vælg Baggrund og stil.</translation>
+<translation id="536019650977002321">Din administrator tillader ikke lydoptagelse. Kontakt din administrator for at få flere oplysninger.</translation>
 <translation id="5363163447017455357"><ph name="DELIMITER" /> Gå til denne fane</translation>
 <translation id="5379115545237091094">For mange forsøg</translation>
 <translation id="5391307769715781764">Vil du erstatte det gemte skrivebord?</translation>
diff --git a/ash/strings/ash_strings_el.xtb b/ash/strings/ash_strings_el.xtb
index 0144df1..cd77f1e0 100644
--- a/ash/strings/ash_strings_el.xtb
+++ b/ash/strings/ash_strings_el.xtb
@@ -414,6 +414,7 @@
 <translation id="3368922792935385530">Σε σύνδεση</translation>
 <translation id="3371140690572404006">Συσκευή USB-C (δεξιά μπροστινή θύρα)</translation>
 <translation id="3375634426936648815">Συνδέθηκε</translation>
+<translation id="3378438761594387761">Εδώ θα βρείτε τις πρόσφατες λήψεις και τις καταγραφές οθόνης</translation>
 <translation id="3378442621503952303">Η σύνδεση στο προφίλ βρίσκεται σε εξέλιξη. Περιμένετε λίγα λεπτά.</translation>
 <translation id="3386978599540877378">ο μεγεθυντικός φακός πλήρους οθόνης</translation>
 <translation id="3387527074123400161">Chromium OS</translation>
@@ -720,6 +721,7 @@
 <translation id="5083553833479578423">Ξεκλειδώστε περισσότερες λειτουργίες του Βοηθού.</translation>
 <translation id="509790653408515442">Όταν μεταδίδετε τις εφαρμογές του τηλεφώνου σας σε ροή, θα εμφανίζονται εδώ.</translation>
 <translation id="5098537242461068432">Εκ νέου άνοιγμα γραφείου και παραθύρων</translation>
+<translation id="5104236669533825617">Δεν είναι δυνατή η δημιουργία ψηφιακής εγγραφής οθόνης</translation>
 <translation id="5107522548814527560">Ιστός</translation>
 <translation id="5117590920725113268">Εμφάνιση επόμενου μήνα</translation>
 <translation id="5136175204352732067">Συνδέθηκε διαφορετικό πληκτρολόγιο</translation>
@@ -765,6 +767,7 @@
 <translation id="5344128444027639014"><ph name="BATTERY_PERCENTAGE" />% (Δεξί)</translation>
 <translation id="5352250171825660495">Το Σκούρο θέμα είναι ενεργοποιημένο.</translation>
 <translation id="5356963482258194581">Εναλλαγή μεταξύ Σκούρου και Φωτεινού θέματος. Κάντε δεξί κλικ στην επιφάνεια εργασίας και επιλέξτε Ταπετσαρία και στιλ.</translation>
+<translation id="536019650977002321">Ο διαχειριστής σας δεν επιτρέπει την καταγραφή ήχου. Επικοινωνήστε με τον διαχειριστή σας για περισσότερες πληροφορίες.</translation>
 <translation id="5363163447017455357"><ph name="DELIMITER" /> Μετάβαση σε αυτήν την καρτέλα</translation>
 <translation id="5379115545237091094">Πάρα πολλές προσπάθειες</translation>
 <translation id="5391307769715781764">Αντικατάσταση αποθηκευμένου γραφείου;</translation>
diff --git a/ash/strings/ash_strings_es.xtb b/ash/strings/ash_strings_es.xtb
index 87f4944..d16993a 100644
--- a/ash/strings/ash_strings_es.xtb
+++ b/ash/strings/ash_strings_es.xtb
@@ -259,7 +259,7 @@
 <translation id="2412593942846481727">Actualización disponible</translation>
 <translation id="2426051945783024481">Encuadre de cámara centrado automáticamente</translation>
 <translation id="2427507373259914951">Clic con el botón izquierdo</translation>
-<translation id="2429753432712299108">El dispositivo Bluetooth "<ph name="DEVICE_NAME" />" solicita permiso para emparejarse. Antes de aceptar, comprueba que la clave de contraseña <ph name="PASSKEY" /> aparezca en el dispositivo</translation>
+<translation id="2429753432712299108">El dispositivo Bluetooth "<ph name="DEVICE_NAME" />" solicita permiso para emparejarse. Antes de aceptar, comprueba que la llave de acceso <ph name="PASSKEY" /> aparezca en el dispositivo</translation>
 <translation id="2435457462613246316">Mostrar contraseña</translation>
 <translation id="243878895369688216">Abierto ayer</translation>
 <translation id="2441427462554639370">Se ha dejado de grabar porque queda muy poco espacio de almacenamiento</translation>
@@ -985,7 +985,7 @@
 <translation id="6643169293433369663">Deshacer order por nombre</translation>
 <translation id="6649641931981131786">Ajusta la cámara para ponerte en el centro de la pantalla.</translation>
 <translation id="6650072551060208490"><ph name="ORIGIN_NAME" /> quiere confirmar que eres tú</translation>
-<translation id="6650933572246256093">El dispositivo Bluetooth "<ph name="DEVICE_NAME" />" solicita permiso para emparejarse. Introduce la clave de contraseña <ph name="PASSKEY" /> en el dispositivo</translation>
+<translation id="6650933572246256093">El dispositivo Bluetooth "<ph name="DEVICE_NAME" />" solicita permiso para emparejarse. Introduce la llave de acceso <ph name="PASSKEY" /> en el dispositivo</translation>
 <translation id="6657585470893396449">Contraseña</translation>
 <translation id="6665545700722362599">Dar permiso a los sitios web, las aplicaciones y las extensiones para usar los servicios de ubicación, el micrófono del dispositivo, la cámara y otras funciones.</translation>
 <translation id="6667908387435388584">Conéctate al punto de acceso de tu teléfono, silencia y localiza tu dispositivo, y visualiza las pestañas de Chrome recientes abiertas en tu teléfono</translation>
diff --git a/ash/strings/ash_strings_fi.xtb b/ash/strings/ash_strings_fi.xtb
index 9263092..fdd3c93e 100644
--- a/ash/strings/ash_strings_fi.xtb
+++ b/ash/strings/ash_strings_fi.xtb
@@ -414,6 +414,7 @@
 <translation id="3368922792935385530">Yhdistetty</translation>
 <translation id="3371140690572404006">C-tyypin USB-laite (oikean sivun etummainen portti)</translation>
 <translation id="3375634426936648815">Yhdistetty</translation>
+<translation id="3378438761594387761">Löydät viimeaikaiset lataukset ja kuvakaappaukset täältä</translation>
 <translation id="3378442621503952303">Muodostetaan yhteyttä profiiliin. Odota muutama minuutti.</translation>
 <translation id="3386978599540877378">koko näytön suurentaja</translation>
 <translation id="3387527074123400161">Chromium-käyttöjärjestelmä</translation>
@@ -720,6 +721,7 @@
 <translation id="5083553833479578423">Käytä lisää Assistantin ominaisuuksia.</translation>
 <translation id="509790653408515442">Kun striimaat puhelimen sovelluksia, ne näkyvät täällä</translation>
 <translation id="5098537242461068432">Työpöytä ja ikkunat avattu uudelleen</translation>
+<translation id="5104236669533825617">Ruutukaappausvideota ei voi luoda</translation>
 <translation id="5107522548814527560">Verkko</translation>
 <translation id="5117590920725113268">Näytä seuraava kuukausi</translation>
 <translation id="5136175204352732067">Eri näppäimistö kytketty</translation>
@@ -765,6 +767,7 @@
 <translation id="5344128444027639014"><ph name="BATTERY_PERCENTAGE" /> % (oikea)</translation>
 <translation id="5352250171825660495">Tumma teema on päällä</translation>
 <translation id="5356963482258194581">Vaihda tumman ja vaalean teeman välillä. Klikkaa työpöytää kakkospainikkeella ja valitse Taustakuva ja tyyli.</translation>
+<translation id="536019650977002321">Järjestelmänvalvoja ei salli äänen tallentamista. Pyydä lisätietoa järjestelmänvalvojalta.</translation>
 <translation id="5363163447017455357"><ph name="DELIMITER" /> – Siirry tälle välilehdelle</translation>
 <translation id="5379115545237091094">Liian monta yritystä</translation>
 <translation id="5391307769715781764">Korvataanko tallennettu työpöytä?</translation>
diff --git a/ash/strings/ash_strings_fil.xtb b/ash/strings/ash_strings_fil.xtb
index ff41e2d..5fdd35ca 100644
--- a/ash/strings/ash_strings_fil.xtb
+++ b/ash/strings/ash_strings_fil.xtb
@@ -414,6 +414,7 @@
 <translation id="3368922792935385530">Nakakonekta</translation>
 <translation id="3371140690572404006">USB-C device (port sa kanang bahagi sa harap)</translation>
 <translation id="3375634426936648815">Nakakonekta</translation>
+<translation id="3378438761594387761">Makikita mo rito ang iyong mga kamakailang download at screen capture</translation>
 <translation id="3378442621503952303">Kumokonekta sa profile. Maghintay nang ilang minuto.</translation>
 <translation id="3386978599540877378">ang full-screen magnifier</translation>
 <translation id="3387527074123400161">ChromiumOS</translation>
@@ -720,6 +721,7 @@
 <translation id="5083553833479578423">Mag-unlock ng higit pang feature ng Assistant.</translation>
 <translation id="509790653408515442">Kapag na-stream mo ang mga app sa iyong telepono, lalabas ang mga ito dito</translation>
 <translation id="5098537242461068432">Binuksan ulit ang desk at mga window</translation>
+<translation id="5104236669533825617">Hindi makagawa ng screencast</translation>
 <translation id="5107522548814527560">Web</translation>
 <translation id="5117590920725113268">Ipakita ang susunod na buwan</translation>
 <translation id="5136175204352732067">Ibang keyboard ang nakakonekta</translation>
@@ -765,6 +767,7 @@
 <translation id="5344128444027639014"><ph name="BATTERY_PERCENTAGE" />% (Kanan)</translation>
 <translation id="5352250171825660495">Naka-on ang Madilim na tema</translation>
 <translation id="5356963482258194581">Magpalipat-lipat sa madilim at maliwanag na tema. Mag-right click sa desktop at piliin ang Wallpaper at style.</translation>
+<translation id="536019650977002321">Hindi pinapayagan ng iyong administrator ang pag-capture ng audio. Makipag-ugnayan sa iyong administrator para sa higit pang impormasyon.</translation>
 <translation id="5363163447017455357"><ph name="DELIMITER" /> Pumunta sa tab na ito</translation>
 <translation id="5379115545237091094">Masyadong maraming pagtatangka</translation>
 <translation id="5391307769715781764">Palitan ang naka-save na desk?</translation>
diff --git a/ash/strings/ash_strings_gu.xtb b/ash/strings/ash_strings_gu.xtb
index 2665aa7..5954faf9 100644
--- a/ash/strings/ash_strings_gu.xtb
+++ b/ash/strings/ash_strings_gu.xtb
@@ -414,6 +414,7 @@
 <translation id="3368922792935385530">કનેક્ટેડ</translation>
 <translation id="3371140690572404006">USB-C ઉપકરણ (જમણી બાજુનું આગળનું પોર્ટ)</translation>
 <translation id="3375634426936648815">કનેક્ટ કરેલું</translation>
+<translation id="3378438761594387761">તમને તમારા તાજેતરનાં ડાઉનલોડ અને સ્ક્રીન કૅપ્ચર અહીં મળશે</translation>
 <translation id="3378442621503952303">પ્રોફાઇલ સાથે કનેક્ટ કરી રહ્યાં છીએ. થોડીવાર રાહ જુઓ.</translation>
 <translation id="3386978599540877378">પૂર્ણ-સ્ક્રીન મેગ્નિફાયર</translation>
 <translation id="3387527074123400161">ChromiumOS</translation>
@@ -720,6 +721,7 @@
 <translation id="5083553833479578423">Assistantની વધુ સુવિધાઓને અનલૉક કરો.</translation>
 <translation id="509790653408515442">જ્યારે તમે તમારા ફોનની ઍપ સ્ટ્રીમ કરશો, ત્યારે તે અહીં દેખાશે</translation>
 <translation id="5098537242461068432">ડેસ્ક અને વિન્ડો ફરીથી ખોલવામાં આવી</translation>
+<translation id="5104236669533825617">સ્ક્રીનકાસ્ટ બનાવી શકાતું નથી</translation>
 <translation id="5107522548814527560">વેબ</translation>
 <translation id="5117590920725113268">આગલો મહિનો દર્શાવો</translation>
 <translation id="5136175204352732067">અલગ કીબોર્ડ કનેક્ટ કર્યું</translation>
@@ -765,6 +767,7 @@
 <translation id="5344128444027639014"><ph name="BATTERY_PERCENTAGE" />% (જમણે)</translation>
 <translation id="5352250171825660495">ઘેરી થીમ ચાલુ છે</translation>
 <translation id="5356963482258194581">ઘેરી અને ઝાંખી થીમ વચ્ચે સ્વિચ કરો. ડેસ્કટૉપ આઇકન પર રાઇટ ક્લિક કરો અને વૉલપેપર અને સ્ટાઇલ પસંદ કરો.</translation>
+<translation id="536019650977002321">તમારા ઍડમિનિસ્ટ્રેટર ઑડિયો કૅપ્ચર કરવાની મંજૂરી આપતા નથી. વધુ માહિતી માટે તમારા ઍડમિનિસ્ટ્રેટરનો સંપર્ક કરો.</translation>
 <translation id="5363163447017455357"><ph name="DELIMITER" /> આ ટૅબ પર જાઓ</translation>
 <translation id="5379115545237091094">ઘણા બધા પ્રયાસો</translation>
 <translation id="5391307769715781764">શું સાચવેલી ડેસ્ક બદલવી છે?</translation>
diff --git a/ash/strings/ash_strings_hr.xtb b/ash/strings/ash_strings_hr.xtb
index ebddc11..a7e7d6a 100644
--- a/ash/strings/ash_strings_hr.xtb
+++ b/ash/strings/ash_strings_hr.xtb
@@ -159,6 +159,15 @@
 <translation id="1797271123677381264">Zaboravljena zaporka</translation>
 <translation id="181103072419391116">Jačina signala <ph name="SIGNAL_STRENGTH" />, upravlja administrator</translation>
 <translation id="1812997170047690955">Što je na mojem zaslonu?</translation>
+<translation id="1823280932251546115">Traka statusa, vrijeme <ph name="TIME" />,
+        <ph name="BATTERY" />
+        <ph name="CHANNEL" />
+        <ph name="NETWORK" />,
+        <ph name="PRIVACY" />,
+        <ph name="MANAGED" />
+        <ph name="NOTIFICATION" />,
+        <ph name="IME" />
+        <ph name="LOCALE" /></translation>
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1830308660060964064">Otkvačena je stavka <ph name="ITEM_TITLE" /></translation>
 <translation id="1836215606488044471">Asistent (učitavanje...)</translation>
@@ -457,6 +466,7 @@
 <translation id="3600061223661453002">Isključi</translation>
 <translation id="3604801046548457007">Izrađena je radna površina <ph name="DESK_TITILE" /></translation>
 <translation id="3606978283550408104">Brajev je redak povezan.</translation>
+<translation id="3609301425104788351"><ph name="MIC" />, <ph name="CAMERA" /></translation>
 <translation id="3615926715408477684">Omogućivanjem mobilnih podataka omogućit će se Bluetooth</translation>
 <translation id="3616883743181209306">Izbornik je premješten u gornji desni kut zaslona.</translation>
 <translation id="3619536907358025872">Postavke snimanja zaslona</translation>
diff --git a/ash/strings/ash_strings_hu.xtb b/ash/strings/ash_strings_hu.xtb
index 16af391..ba35977 100644
--- a/ash/strings/ash_strings_hu.xtb
+++ b/ash/strings/ash_strings_hu.xtb
@@ -414,6 +414,7 @@
 <translation id="3368922792935385530">Kapcsolódva</translation>
 <translation id="3371140690572404006">C típusú USB-vel kompatibilis eszköz (jobb első port)</translation>
 <translation id="3375634426936648815">Csatlakozva</translation>
+<translation id="3378438761594387761">Itt találja a legutóbbi letöltéseket és képernyőfelvételeket</translation>
 <translation id="3378442621503952303">Csatlakozás a profilhoz. Várjon néhány percet.</translation>
 <translation id="3386978599540877378">teljes képernyős nagyító</translation>
 <translation id="3387527074123400161">ChromiumOS</translation>
@@ -721,6 +722,7 @@
 <translation id="5083553833479578423">Hozzáférés a Segéd további funkcióihoz</translation>
 <translation id="509790653408515442">Telefonja alkalmazásai itt jelennek majd meg streameléskor</translation>
 <translation id="5098537242461068432">Asztal és ablakok újra megnyitva</translation>
+<translation id="5104236669533825617">Nem sikerült létrehozni a képernyőfelvételt</translation>
 <translation id="5107522548814527560">Internet</translation>
 <translation id="5117590920725113268">A következő hónap megjelenítése</translation>
 <translation id="5136175204352732067">Új billentyűzet lett csatlakoztatva</translation>
@@ -766,6 +768,7 @@
 <translation id="5344128444027639014"><ph name="BATTERY_PERCENTAGE" />% (jobb)</translation>
 <translation id="5352250171825660495">Sötét téma bekapcsolva.</translation>
 <translation id="5356963482258194581">Válthat a sötét és a világos téma között. Kattintson jobb egérgombbal az asztalon, majd válassza a Háttérkép és stílus elemet.</translation>
+<translation id="536019650977002321">A rendszergazda nem engedélyezi hangfelvételek rögzítését. További információért forduljon a rendszergazdához.</translation>
 <translation id="5363163447017455357"><ph name="DELIMITER" /> Ugrás erre a lapra</translation>
 <translation id="5379115545237091094">Túl sok próbálkozás</translation>
 <translation id="5391307769715781764">Lecseréli a mentett asztalt?</translation>
diff --git a/ash/strings/ash_strings_id.xtb b/ash/strings/ash_strings_id.xtb
index 7479dfb..36920a9 100644
--- a/ash/strings/ash_strings_id.xtb
+++ b/ash/strings/ash_strings_id.xtb
@@ -414,6 +414,7 @@
 <translation id="3368922792935385530">Terhubung</translation>
 <translation id="3371140690572404006">Perangkat USB-C (port depan sebelah kanan)</translation>
 <translation id="3375634426936648815">Terhubung</translation>
+<translation id="3378438761594387761">Anda akan menemukan download dan screenshot terbaru di sini</translation>
 <translation id="3378442621503952303">Menghubungkan ke profil. Tunggu beberapa menit.</translation>
 <translation id="3386978599540877378">kaca pembesar layar penuh</translation>
 <translation id="3387527074123400161">ChromiumOS</translation>
@@ -720,6 +721,7 @@
 <translation id="5083553833479578423">Dapatkan lebih banyak fitur Asisten.</translation>
 <translation id="509790653408515442">Aplikasi yang di-streaming pada ponsel Anda akan ditampilkan di sini</translation>
 <translation id="5098537242461068432">Desktop dan jendela dibuka kembali</translation>
+<translation id="5104236669533825617">Tidak dapat membuat screencast</translation>
 <translation id="5107522548814527560">Web</translation>
 <translation id="5117590920725113268">Tampilkan bulan berikutnya</translation>
 <translation id="5136175204352732067">Keyboard yang berbeda terhubung</translation>
@@ -765,6 +767,7 @@
 <translation id="5344128444027639014"><ph name="BATTERY_PERCENTAGE" />% (Kanan)</translation>
 <translation id="5352250171825660495">Tema gelap aktif</translation>
 <translation id="5356963482258194581">Berpindah-pindah antara tema gelap dan terang. Klik kanan desktop lalu pilih Wallpaper &amp; Gaya.</translation>
+<translation id="536019650977002321">Administrator tidak mengizinkan perekaman audio. Hubungi administrator untuk mendapatkan info selengkapnya.</translation>
 <translation id="5363163447017455357"><ph name="DELIMITER" /> Buka tab ini</translation>
 <translation id="5379115545237091094">Terlalu banyak upaya gagal</translation>
 <translation id="5391307769715781764">Ganti desktop tersimpan?</translation>
diff --git a/ash/strings/ash_strings_ja.xtb b/ash/strings/ash_strings_ja.xtb
index c3c1d7d..3039985 100644
--- a/ash/strings/ash_strings_ja.xtb
+++ b/ash/strings/ash_strings_ja.xtb
@@ -165,6 +165,7 @@
 <translation id="1838895407229022812">夜間モードはオフです。</translation>
 <translation id="1862380676329487333">更新してログアウト</translation>
 <translation id="1864454756846565995">USB-C デバイス(背面のポート)</translation>
+<translation id="1869497990620230175">クイック ファイル</translation>
 <translation id="1879018240766558464">シークレット ウィンドウは現在サポートされていません。他のアプリは保存されます。</translation>
 <translation id="1882814835921407042">モバイル ネットワークに接続されていません</translation>
 <translation id="1882897271359938046"><ph name="DISPLAY_NAME" /> へミラーリング</translation>
diff --git a/ash/strings/ash_strings_ka.xtb b/ash/strings/ash_strings_ka.xtb
index 9d32e70d..d9f4ed45 100644
--- a/ash/strings/ash_strings_ka.xtb
+++ b/ash/strings/ash_strings_ka.xtb
@@ -159,6 +159,15 @@
 <translation id="1797271123677381264">პაროლი დამავიწყდა</translation>
 <translation id="181103072419391116">სიგნალის სიძლიერე: <ph name="SIGNAL_STRENGTH" />, მართავს თქვენი ადმინისტრატორი</translation>
 <translation id="1812997170047690955">რა არის ჩემს ეკრანზე?</translation>
+<translation id="1823280932251546115">სტატუსის პანელი, დრო <ph name="TIME" />,
+        <ph name="BATTERY" />
+        <ph name="CHANNEL" />
+        <ph name="NETWORK" />,
+        <ph name="PRIVACY" />,
+        <ph name="MANAGED" />
+        <ph name="NOTIFICATION" />,
+        <ph name="IME" />
+        <ph name="LOCALE" /></translation>
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1830308660060964064"><ph name="ITEM_TITLE" /> აღარ არის ჩამაგრებული</translation>
 <translation id="1836215606488044471">ასისტენტი (იტვირთება...)</translation>
@@ -458,6 +467,8 @@
 <translation id="3600061223661453002">გამორთვა</translation>
 <translation id="3604801046548457007">სამუშაო მაგიდა <ph name="DESK_TITILE" /> შექმნილია</translation>
 <translation id="3606978283550408104">ბრაილის დისპლეი შეერთებულია.</translation>
+<translation id="3609301425104788351"><ph name="MIC" />,
+        <ph name="CAMERA" /></translation>
 <translation id="3615926715408477684">მობილური ინტერნეტის ჩართვის შემთხვევაში, ჩაირთვება Bluetooth</translation>
 <translation id="3616883743181209306">მენიუ გადატანილია ეკრანის ზედა მარჯვენა კუთხეში.</translation>
 <translation id="3619536907358025872">ეკრანის აღბეჭდვის პარამეტრები</translation>
diff --git a/ash/strings/ash_strings_kn.xtb b/ash/strings/ash_strings_kn.xtb
index 5807cfa..36931688 100644
--- a/ash/strings/ash_strings_kn.xtb
+++ b/ash/strings/ash_strings_kn.xtb
@@ -414,6 +414,7 @@
 <translation id="3368922792935385530">ಕನೆಕ್ಟ್ ಆಗಿದೆ</translation>
 <translation id="3371140690572404006">USB-C ಸಾಧನ (ಬಲ ಭಾಗದ ಮುಂದಿನ ಪೋರ್ಟ್‌)</translation>
 <translation id="3375634426936648815">ಕನೆಕ್ಟ್ ಮಾಡಲಾಗಿದೆ</translation>
+<translation id="3378438761594387761">ನಿಮ್ಮ ಇತ್ತೀಚಿನ ಡೌನ್‌ಲೋಡ್‌ಗಳು ಹಾಗೂ ಸ್ಕ್ರೀನ್ ಕ್ಯಾಪ್ಚರ್‌ಗಳನ್ನು ಇಲ್ಲಿ ನೋಡಬಹುದು</translation>
 <translation id="3378442621503952303">ಪ್ರೊಫೈಲ್‌ಗೆ ಕನೆಕ್ಟ್ ಮಾಡಲಾಗುತ್ತಿದೆ. ಕೆಲವು ನಿಮಿಷಗಳು ಕಾಯಿರಿ.</translation>
 <translation id="3386978599540877378">ಪೂರ್ಣ ಪರದೆಯ ವರ್ಧಕ</translation>
 <translation id="3387527074123400161">ChromiumOS</translation>
@@ -720,6 +721,7 @@
 <translation id="5083553833479578423">ಇನ್ನಷ್ಟು ಅಸಿಸ್ಟೆಂಟ್ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಅನ್‌ಲಾಕ್‌ ಮಾಡಿ.</translation>
 <translation id="509790653408515442">ನಿಮ್ಮ ಫೋನ್‌ನ ಆ್ಯಪ್‌ಗಳನ್ನು ನೀವು ಸ್ಟ್ರೀಮ್ ಮಾಡಿದಾಗ, ಅವು ಇಲ್ಲಿ ಗೋಚರಿಸುತ್ತವೆ</translation>
 <translation id="5098537242461068432">ಡೆಸ್ಕ್ ಹಾಗೂ ವಿಂಡೋಗಳನ್ನು ಪುನಃ ತೆರೆಯಲಾಗಿದೆ</translation>
+<translation id="5104236669533825617">ಸ್ಕ್ರೀನ್‌ಕ್ಯಾಸ್ಟ್ ರಚಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ</translation>
 <translation id="5107522548814527560">ವೆಬ್</translation>
 <translation id="5117590920725113268">ಮುಂದಿನ ತಿಂಗಳು ತೋರಿಸಿ</translation>
 <translation id="5136175204352732067">ವಿವಿಧ ಕೀಬೋರ್ಡ್ ಸಂಪರ್ಕಗೊಂಡಿದೆ</translation>
@@ -765,6 +767,7 @@
 <translation id="5344128444027639014"><ph name="BATTERY_PERCENTAGE" />% (ಬಲಬದಿ)</translation>
 <translation id="5352250171825660495">ಡಾರ್ಕ್‌ ಥೀಮ್ ಆನ್ ಆಗಿದೆ</translation>
 <translation id="5356963482258194581">ಡಾರ್ಕ್ ಮತ್ತು ಲೈಟ್ ಥೀಮ್‌ಗಳ ನಡುವೆ ಬದಲಿಸಿ. ಡೆಸ್ಕ್‌ಟಾಪ್ ಮೇಲೆ ಬಲ-ಕ್ಲಿಕ್ ಮಾಡಿ ಮತ್ತು ವಾಲ್‌ಪೇಪರ್ &amp; ಸ್ಟೈಲ್ ಅನ್ನು ಆಯ್ಕೆಮಾಡಿ.</translation>
+<translation id="536019650977002321">ನಿಮ್ಮ ನಿರ್ವಾಹಕರು ಆಡಿಯೋ ಕ್ಯಾಪ್ಚರ್ ಮಾಡಲು ಅನುಮತಿಸುವುದಿಲ್ಲ. ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ ನಿಮ್ಮ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ.</translation>
 <translation id="5363163447017455357"><ph name="DELIMITER" /> ಈ ಟ್ಯಾಬ್‌ಗೆ ಹೋಗಿ</translation>
 <translation id="5379115545237091094">ಹಲವು ಬಾರಿ ಪ್ರಯತ್ನಿಸಿದ್ದೀರಿ</translation>
 <translation id="5391307769715781764">ಉಳಿಸಿದ ಡೆಸ್ಕ್ ಅನ್ನು ಬದಲಿಸಬೇಕೇ?</translation>
diff --git a/ash/strings/ash_strings_ky.xtb b/ash/strings/ash_strings_ky.xtb
index b5c91d8..9135450 100644
--- a/ash/strings/ash_strings_ky.xtb
+++ b/ash/strings/ash_strings_ky.xtb
@@ -159,6 +159,15 @@
 <translation id="1797271123677381264">Сырсөздү унутуп калдым</translation>
 <translation id="181103072419391116">Сигналдын күчү <ph name="SIGNAL_STRENGTH" />, Администраторуңуз башкарат</translation>
 <translation id="1812997170047690955">Экранымда эмне көрсөтүлүп турат?</translation>
+<translation id="1823280932251546115">Абал түпкүчү, убакыт <ph name="TIME" />,
+        <ph name="BATTERY" />
+        <ph name="CHANNEL" />
+        <ph name="NETWORK" />,
+        <ph name="PRIVACY" />,
+        <ph name="MANAGED" />
+        <ph name="NOTIFICATION" />,
+        <ph name="IME" />
+        <ph name="LOCALE" /></translation>
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1830308660060964064"><ph name="ITEM_TITLE" /> бошотулду</translation>
 <translation id="1836215606488044471">Жардамчы (жүктөлүүдө...)</translation>
@@ -457,6 +466,8 @@
 <translation id="3600061223661453002">Өчүк</translation>
 <translation id="3604801046548457007"><ph name="DESK_TITILE" /> иш тактасы түзүлдү</translation>
 <translation id="3606978283550408104">Брайль дисплеи туташты.</translation>
+<translation id="3609301425104788351"><ph name="MIC" />,
+        <ph name="CAMERA" /></translation>
 <translation id="3615926715408477684">Мобилдик трафик иштетилсе, Bluetooth да иштетилет</translation>
 <translation id="3616883743181209306">Меню экрандын жогорку оң бурчуна жылдырылды.</translation>
 <translation id="3619536907358025872">Экранды тартып алуу жөндөөлөрү</translation>
diff --git a/ash/strings/ash_strings_lo.xtb b/ash/strings/ash_strings_lo.xtb
index f29e708..2f50de7 100644
--- a/ash/strings/ash_strings_lo.xtb
+++ b/ash/strings/ash_strings_lo.xtb
@@ -414,6 +414,7 @@
 <translation id="3368922792935385530">ເຊື່ອມ​ຕໍ່​ແລ້ວ</translation>
 <translation id="3371140690572404006">ອຸປະກອນ USB-C (ຊ່ອງທາງໜ້າເບື້ອງຂວາ)</translation>
 <translation id="3375634426936648815">ເຊື່ອມຕໍ່ແລ້ວ</translation>
+<translation id="3378438761594387761">ທ່ານຈະເຫັນການດາວໂຫຼດ ແລະ ການຖ່າຍຮູບໜ້າຈໍຫຼ້າສຸດຂອງທ່ານຢູ່ບ່ອນນີ້</translation>
 <translation id="3378442621503952303">ກຳລັງເຊື່ອມຕໍ່ຫາໂປຣໄຟລ໌. ກະລຸນາລໍຖ້າສອງສາມນາທີ.</translation>
 <translation id="3386978599540877378">ແວ່ນຂະຫຍາຍແບບເຕັມຈໍ</translation>
 <translation id="3387527074123400161">ChromiumOS</translation>
@@ -720,6 +721,7 @@
 <translation id="5083553833479578423">ປົດລັອກຄຸນສົມບັດເພີ່ມເຕີມຂອງຜູ້ຊ່ວຍ.</translation>
 <translation id="509790653408515442">ເມື່ອທ່ານສະຕຣີມແອັບຂອງໂທລະສັບທ່ານ, ພວກມັນຈະປາກົດຢູ່ບ່ອນນີ້</translation>
 <translation id="5098537242461068432">ເປີດໂຕະ ແລະ ໜ້າຈໍຄືນໃໝ່ແລ້ວ</translation>
+<translation id="5104236669533825617">ບໍ່ສາມາດສ້າງ screencast ໄດ້</translation>
 <translation id="5107522548814527560">ເວັບ</translation>
 <translation id="5117590920725113268">ສະ​ແດງ​ເດືອນ​ຕໍ່​ໄປ</translation>
 <translation id="5136175204352732067">ເຊື່ອມຕໍ່ແປ້ນພິມອື່ນແລ້ວ</translation>
@@ -765,6 +767,7 @@
 <translation id="5344128444027639014"><ph name="BATTERY_PERCENTAGE" />% (ຂວາ)</translation>
 <translation id="5352250171825660495">ຮູບແບບສີສັນມືດເປີດຢູ່</translation>
 <translation id="5356963482258194581">ສະຫຼັບລະຫວ່າງຮູບແບບສີສັນມືດ ແລະ ແຈ້ງ. ຄລິກຂວາຢູ່ເດັສທັອບແລ້ວເລືອກຮູບພື້ນຫຼັງ ແລະ ຮູບແບບ.</translation>
+<translation id="536019650977002321">ຜູ້ເບິ່ງແຍງລະບົບຂອງທ່ານບໍ່ອະນຸຍາດໃຫ້ບັນທຶກສຽງ. ກະລຸນາຕິດຕໍ່ຜູ້ເບິ່ງແຍງລະບົບຂອງທ່ານສຳລັບຂໍ້ມູນເພີ່ມເຕີມ.</translation>
 <translation id="5363163447017455357"><ph name="DELIMITER" /> ໄປຫາແຖບນີ້</translation>
 <translation id="5379115545237091094">ພະຍາຍາມຫຼາຍເທື່ອເກີນໄປ</translation>
 <translation id="5391307769715781764">ແທນທີ່ໂຕະທີ່ບັນທຶກໄວ້ບໍ?</translation>
diff --git a/ash/strings/ash_strings_mk.xtb b/ash/strings/ash_strings_mk.xtb
index 6e52e44..ed251e395 100644
--- a/ash/strings/ash_strings_mk.xtb
+++ b/ash/strings/ash_strings_mk.xtb
@@ -159,6 +159,15 @@
 <translation id="1797271123677381264">Ја заборавивте лозинката</translation>
 <translation id="181103072419391116">Јачина на сигналот: <ph name="SIGNAL_STRENGTH" />, управувана од администраторот</translation>
 <translation id="1812997170047690955">Што има на мојот екран?</translation>
+<translation id="1823280932251546115">Фиока за статусот, време <ph name="TIME" />,
+        <ph name="BATTERY" />
+        <ph name="CHANNEL" />
+        <ph name="NETWORK" />,
+        <ph name="PRIVACY" />,
+        <ph name="MANAGED" />
+        <ph name="NOTIFICATION" />,
+        <ph name="IME" />
+        <ph name="LOCALE" /></translation>
 <translation id="1823873187264960516">Етернет: <ph name="ADDRESS" /></translation>
 <translation id="1830308660060964064"><ph name="ITEM_TITLE" /> веќе не е закачена</translation>
 <translation id="1836215606488044471">„Помошник“ (се вчитува…)</translation>
@@ -458,6 +467,8 @@
 <translation id="3600061223661453002">Исклучи</translation>
 <translation id="3604801046548457007">Работниот простор <ph name="DESK_TITILE" /> е создаден</translation>
 <translation id="3606978283550408104">Поврзан екран за брајово писмо.</translation>
+<translation id="3609301425104788351"><ph name="MIC" />,
+        <ph name="CAMERA" /></translation>
 <translation id="3615926715408477684">Ако овозможите мобилен интернет, ќе се овозможи и Bluetooth</translation>
 <translation id="3616883743181209306">Менито е преместено во горниот десен агол на екранот.</translation>
 <translation id="3619536907358025872">Поставки за снимање на екранот</translation>
diff --git a/ash/strings/ash_strings_mr.xtb b/ash/strings/ash_strings_mr.xtb
index a23d5c3..f3f1bfc 100644
--- a/ash/strings/ash_strings_mr.xtb
+++ b/ash/strings/ash_strings_mr.xtb
@@ -414,6 +414,7 @@
 <translation id="3368922792935385530">कनेक्ट केले</translation>
 <translation id="3371140690572404006">USB-C डिव्‍हाइस (उजव्‍या बाजूचे पुढील पोर्ट)</translation>
 <translation id="3375634426936648815">कनेक्ट केले आहे</translation>
+<translation id="3378438761594387761">तुम्हाला तुमचे अलीकडील डाउनलोड आणि स्‍क्रीन कॅप्‍चर येथे दिसतील</translation>
 <translation id="3378442621503952303">प्रोफाइलशी कनेक्ट करत आहे. काही मिनिटे प्रतीक्षा करा.</translation>
 <translation id="3386978599540877378">फुल-स्क्रीन मॅग्निफायर</translation>
 <translation id="3387527074123400161">ChromiumOS</translation>
@@ -720,6 +721,7 @@
 <translation id="5083553833479578423">असिस्टंटची आणखी वैशिष्ट्ये अनलॉक करा.</translation>
 <translation id="509790653408515442">तुम्ही तुमच्या फोनची अ‍ॅप्स स्ट्रीम कराल, तेव्हा ती येथे दिसतील</translation>
 <translation id="5098537242461068432">डेस्‍क आणि विंडो पुन्हा उघडल्या</translation>
+<translation id="5104236669533825617">स्क्रीनकास्ट तयार करू शकत नाही</translation>
 <translation id="5107522548814527560">वेब</translation>
 <translation id="5117590920725113268">पुढील महिना दर्शवा</translation>
 <translation id="5136175204352732067">वेगळा कीबोर्ड कनेक्ट केला आहे</translation>
@@ -765,6 +767,7 @@
 <translation id="5344128444027639014"><ph name="BATTERY_PERCENTAGE" />% (उजवे)</translation>
 <translation id="5352250171825660495">गडद थीम सुरू आहे</translation>
 <translation id="5356963482258194581">गडद आणि फिकट थीमदरम्यान स्विच करा. डेस्कटॉपवर राइट-क्लिक करा आणि वॉलपेपर आणि स्टाइल निवडा.</translation>
+<translation id="536019650977002321">तुमचा अ‍ॅडमिनिस्ट्रेटर ऑडिओ कॅप्चरला अनुमती देत नाही. अधिक माहितीसाठी तुमच्या अ‍ॅडमिनिस्ट्रेटरशी संपर्क साधा.</translation>
 <translation id="5363163447017455357"><ph name="DELIMITER" /> या टॅबवर जा</translation>
 <translation id="5379115545237091094">खूप जास्त प्रयत्न</translation>
 <translation id="5391307769715781764">सेव्ह केलेले डेस्क बदलायचे आहे का?</translation>
diff --git a/ash/strings/ash_strings_ms.xtb b/ash/strings/ash_strings_ms.xtb
index a02b769..5248b2d5 100644
--- a/ash/strings/ash_strings_ms.xtb
+++ b/ash/strings/ash_strings_ms.xtb
@@ -414,6 +414,7 @@
 <translation id="3368922792935385530">Disambungkan</translation>
 <translation id="3371140690572404006">Peranti USB-C (port depan sebelah kanan)</translation>
 <translation id="3375634426936648815">Disambungkan</translation>
+<translation id="3378438761594387761">Anda akan menemukan muat turun terbaharu dan tangkapan skrin anda di sini</translation>
 <translation id="3378442621503952303">Menyambung kepada profil. Tunggu beberapa minit.</translation>
 <translation id="3386978599540877378">penggadang skrin penuh</translation>
 <translation id="3387527074123400161">Chromium OS</translation>
@@ -721,6 +722,7 @@
 <translation id="5083553833479578423">Buka kunci pelbagai lagi ciri Assistant.</translation>
 <translation id="509790653408515442">Apabila anda menstrim apl telefon anda, apl itu akan dipaparkan di sini</translation>
 <translation id="5098537242461068432">Meja dan tingkap dibuka semula</translation>
+<translation id="5104236669533825617">Tidak dapat membuat rakaman skrin</translation>
 <translation id="5107522548814527560">Web</translation>
 <translation id="5117590920725113268">Tunjukkan bulan seterusnya</translation>
 <translation id="5136175204352732067">Papan kekunci lain disambungkan</translation>
@@ -766,6 +768,7 @@
 <translation id="5344128444027639014"><ph name="BATTERY_PERCENTAGE" />% (Kanan)</translation>
 <translation id="5352250171825660495">Tema gelap dihidupkan</translation>
 <translation id="5356963482258194581">Beralih antara tema gelap dengan cerah. Klik kanan pada desktop dan pilih Kertas dinding &amp; gaya.</translation>
+<translation id="536019650977002321">Pentadbir anda tidak membenarkan rakaman audio. Hubungi pentadbir anda untuk mendapatkan maklumat lanjut.</translation>
 <translation id="5363163447017455357"><ph name="DELIMITER" /> Pergi ke tab ini</translation>
 <translation id="5379115545237091094">Terlalu banyak percubaan</translation>
 <translation id="5391307769715781764">Gantikan meja yang disimpan?</translation>
diff --git a/ash/strings/ash_strings_my.xtb b/ash/strings/ash_strings_my.xtb
index 776e205..dd2c677 100644
--- a/ash/strings/ash_strings_my.xtb
+++ b/ash/strings/ash_strings_my.xtb
@@ -414,6 +414,7 @@
 <translation id="3368922792935385530">ချိတ်ဆက်ထားပြီ</translation>
 <translation id="3371140690572404006">USB-C ကိရိယာ (ညာ ပို့တ် အရှေ့ပိုင်း)</translation>
 <translation id="3375634426936648815">ချိတ်ဆက်ထားသည်</translation>
+<translation id="3378438761594387761">သင်၏ မကြာသေးမီက ဒေါင်းလုဒ်များနှင့် ဖန်သားပြင် ပုံဖမ်းမှုများကို ဤတွင်တွေ့ရမည်</translation>
 <translation id="3378442621503952303">ပရိုဖိုင်ကို ချိတ်ဆက်နေသည်။ မိနစ်အနည်းငယ် စောင့်ပါ။</translation>
 <translation id="3386978599540877378">မျက်နှာပြင်အပြည့် မှန်ဘီလူး</translation>
 <translation id="3387527074123400161">ChromiumOS</translation>
@@ -720,6 +721,7 @@
 <translation id="5083553833479578423">နောက်ထပ် Assistant ဝန်ဆောင်မှုများကို ဖွင့်ပါ</translation>
 <translation id="509790653408515442">သင့်ဖုန်း၏ အက်ပ်များကို တိုက်ရိုက်လွှင့်သောအခါ ၎င်းတို့က ဤနေရာတွင် ပေါ်လာမည်</translation>
 <translation id="5098537242461068432">မျက်နှာပြင်နှင့် ဝင်းဒိုးများ ပြန်ဖွင့်ထားသည်</translation>
+<translation id="5104236669533825617">ဖန်သားပြင်ထုတ်လွှင့်မှု ပြုလုပ်၍မရပါ</translation>
 <translation id="5107522548814527560">ဝဘ်</translation>
 <translation id="5117590920725113268">လာမည့် လကို ပြရန်</translation>
 <translation id="5136175204352732067">မတူညီသည့် ကီးဘုတ်ကို ချိတ်ဆက်ထားသည်</translation>
@@ -765,6 +767,7 @@
 <translation id="5344128444027639014"><ph name="BATTERY_PERCENTAGE" />% (ညာ)</translation>
 <translation id="5352250171825660495">အမှောင်နောက်ခံ ဖွင့်ထားသည်</translation>
 <translation id="5356963482258194581">အမှောင်နောက်ခံနှင့် အလင်းနောက်ခံကို ပြောင်းသုံးနိုင်သည်။ ဒက်စ်တော့ပေါ်တွင် ညာဘက်ခလုတ်ကို နှိပ်၍ ‘နောက်ခံနှင့် စတိုင်’ ကို ရွေးပါ။</translation>
+<translation id="536019650977002321">သင့်စီမံခန့်ခွဲသူက အသံဖမ်းယူခြင်းကို ခွင့်မပြုပါ။ နောက်ထပ် အချက်အလက်အတွက် သင်၏စီမံခန့်ခွဲသူကို ဆက်သွယ်ပါ။</translation>
 <translation id="5363163447017455357"><ph name="DELIMITER" /> ဤတဘ်သို့သွားရန်</translation>
 <translation id="5379115545237091094">စမ်းသပ်သည့်အကြိမ်ရေ အလွန်များနေပါပြီ</translation>
 <translation id="5391307769715781764">သိမ်းထားသောမျက်နှာပြင်ကို အစားထိုးမလား။</translation>
diff --git a/ash/strings/ash_strings_nl.xtb b/ash/strings/ash_strings_nl.xtb
index 1a4e5677..de23b98 100644
--- a/ash/strings/ash_strings_nl.xtb
+++ b/ash/strings/ash_strings_nl.xtb
@@ -159,6 +159,15 @@
 <translation id="1797271123677381264">Wachtwoord vergeten</translation>
 <translation id="181103072419391116">Signaalsterkte <ph name="SIGNAL_STRENGTH" />, beheerd door je beheerder</translation>
 <translation id="1812997170047690955">Wat wordt er op mijn scherm getoond?</translation>
+<translation id="1823280932251546115">Statusvak, tijd <ph name="TIME" />,
+<ph name="BATTERY" />
+<ph name="CHANNEL" />
+<ph name="NETWORK" />,
+<ph name="PRIVACY" />,
+<ph name="MANAGED" />
+<ph name="NOTIFICATION" />,
+<ph name="IME" />
+<ph name="LOCALE" /></translation>
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1830308660060964064"><ph name="ITEM_TITLE" /> is losgemaakt</translation>
 <translation id="1836215606488044471">Assistent (laden...)</translation>
@@ -414,6 +423,7 @@
 <translation id="3368922792935385530">Verbonden</translation>
 <translation id="3371140690572404006">USB-C-apparaat (poort rechts aan de voorkant)</translation>
 <translation id="3375634426936648815">Verbonden</translation>
+<translation id="3378438761594387761">Hier vind je je recente downloads en schermopnamen</translation>
 <translation id="3378442621503952303">Verbinding maken met profiel. Wacht een paar minuten.</translation>
 <translation id="3386978599540877378">het vergrootglas op volledige schermgrootte</translation>
 <translation id="3387527074123400161">Chromium OS</translation>
@@ -457,6 +467,8 @@
 <translation id="3600061223661453002">Uit</translation>
 <translation id="3604801046548457007">Bureaublad <ph name="DESK_TITILE" /> gemaakt</translation>
 <translation id="3606978283550408104">Braillescherm gekoppeld.</translation>
+<translation id="3609301425104788351"><ph name="MIC" />,
+<ph name="CAMERA" /></translation>
 <translation id="3615926715408477684">Als je mobiele data aanzet, wordt bluetooth aangezet</translation>
 <translation id="3616883743181209306">Menu verplaatst naar rechtsboven in het scherm.</translation>
 <translation id="3619536907358025872">Instellingen voor Screenshot</translation>
@@ -720,6 +732,7 @@
 <translation id="5083553833479578423">Ontgrendel meer functies van de Assistent.</translation>
 <translation id="509790653408515442">Als je de apps van je telefoon streamt, zie je ze hier</translation>
 <translation id="5098537242461068432">Bureau en vensters weer geopend</translation>
+<translation id="5104236669533825617">Kan screencast niet maken</translation>
 <translation id="5107522548814527560">Internet</translation>
 <translation id="5117590920725113268">Volgende maand bekijken</translation>
 <translation id="5136175204352732067">Ander toetsenbord aangesloten</translation>
@@ -765,6 +778,7 @@
 <translation id="5344128444027639014"><ph name="BATTERY_PERCENTAGE" />% (rechts)</translation>
 <translation id="5352250171825660495">Donker thema staat aan</translation>
 <translation id="5356963482258194581">Schakelen tussen het donkere en lichte thema. Klik met de rechtermuisknop op het bureaublad en selecteer Achtergrond en stijl.</translation>
+<translation id="536019650977002321">Je beheerder staat geen audio-opnamen toe. Neem contact op met je beheerder voor meer informatie.</translation>
 <translation id="5363163447017455357"><ph name="DELIMITER" /> Naar dit tabblad gaan</translation>
 <translation id="5379115545237091094">Te veel pogingen</translation>
 <translation id="5391307769715781764">Opgeslagen bureau vervangen?</translation>
diff --git a/ash/strings/ash_strings_no.xtb b/ash/strings/ash_strings_no.xtb
index 0dc4299..28a3dc6 100644
--- a/ash/strings/ash_strings_no.xtb
+++ b/ash/strings/ash_strings_no.xtb
@@ -159,6 +159,15 @@
 <translation id="1797271123677381264">Glemt passord</translation>
 <translation id="181103072419391116">Signalstyrke <ph name="SIGNAL_STRENGTH" /> – administreres av administratoren din</translation>
 <translation id="1812997170047690955">Hva er på skjermen?</translation>
+<translation id="1823280932251546115">Statusfelt, kl. <ph name="TIME" />,
+        <ph name="BATTERY" />
+        <ph name="CHANNEL" />
+        <ph name="NETWORK" />,
+        <ph name="PRIVACY" />,
+        <ph name="MANAGED" />
+        <ph name="NOTIFICATION" />,
+        <ph name="IME" />
+        <ph name="LOCALE" /></translation>
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1830308660060964064">Løsnet <ph name="ITEM_TITLE" /></translation>
 <translation id="1836215606488044471">Assistent (laster inn …)</translation>
@@ -299,7 +308,7 @@
 <translation id="2689613560355655046">Skrivebord 8</translation>
 <translation id="2695305337569143674">nett</translation>
 <translation id="2700493154570097719">Velg tastatur</translation>
-<translation id="2704781753052663061">Koble til andre Wi-Fi-nettverk</translation>
+<translation id="2704781753052663061">Koble til andre Wifi-nettverk</translation>
 <translation id="2705001408393684014">Slå av/på mikrofonen. <ph name="STATE_TEXT" /></translation>
 <translation id="2706462751667573066">Opp</translation>
 <translation id="2718395828230677721">Nattlys</translation>
@@ -414,6 +423,7 @@
 <translation id="3368922792935385530">Tilkoblet</translation>
 <translation id="3371140690572404006">USB-C-enhet (porten foran på høyre side)</translation>
 <translation id="3375634426936648815">Tilkoblet</translation>
+<translation id="3378438761594387761">Her finner du nylige nedlastinger og skjermdumper</translation>
 <translation id="3378442621503952303">Kobler til profilen. Vent i noen minutter.</translation>
 <translation id="3386978599540877378">fullskjermlupen</translation>
 <translation id="3387527074123400161">ChromiumOS</translation>
@@ -441,7 +451,7 @@
 <translation id="352245152354538528">{0,plural, =1{Oppdater enheten innen 1 minutt}other{Oppdater enheten innen # minutter}}</translation>
 <translation id="353086728817903341">Koblet til <ph name="NUM_DEVICES" /> enheter</translation>
 <translation id="3542066395059568317">Du ser anbefalinger, slik at du kan fortsette der du slapp. Høyreklikk for å fjerne anbefalinger.</translation>
-<translation id="3552189655002856821">Wi-Fi er slått av</translation>
+<translation id="3552189655002856821">Wifi er slått av</translation>
 <translation id="3554637740840164787">Festet <ph name="ITEM_TITLE" /></translation>
 <translation id="3563775809269155755">Slå på wifi-sone</translation>
 <translation id="3566240529365775567">Åpnet nå nettopp</translation>
@@ -457,6 +467,8 @@
 <translation id="3600061223661453002">Av</translation>
 <translation id="3604801046548457007">Opprettet skrivebord <ph name="DESK_TITILE" /></translation>
 <translation id="3606978283550408104">En leselist er tilkoblet.</translation>
+<translation id="3609301425104788351"><ph name="MIC" />,
+        <ph name="CAMERA" /></translation>
 <translation id="3615926715408477684">Hvis du slår på mobildata, blir Bluetooth også slått på</translation>
 <translation id="3616883743181209306">Menyen ble flyttet til øvre høyre hjørne av skjermen.</translation>
 <translation id="3619536907358025872">Innstillinger for skjermopptak</translation>
@@ -471,7 +483,7 @@
 <translation id="3659814201068740063">Omtrent <ph name="TIME_LEFT" /> igjen (<ph name="PERCENTAGE" /> %).
 Koble enheten til strøm.</translation>
 <translation id="366222428570480733"><ph name="USER_EMAIL_ADDRESS" /> – administrert bruker</translation>
-<translation id="36813544980941320">Wi-Fi-nettverk blir delt mellom telefonen din og <ph name="DEVICE_NAME" /></translation>
+<translation id="36813544980941320">Wifi-nettverk blir delt mellom telefonen din og <ph name="DEVICE_NAME" /></translation>
 <translation id="3694122362646626770">Nettsteder</translation>
 <translation id="3702809606464356667">Viser vinduer fra det nåværende skrivebordet. Trykk på oppoverpiltasten for å vise vinduer fra alle skrivebord</translation>
 <translation id="3702846122927433391">Antall innbyggere i Nigeria</translation>
@@ -555,7 +567,7 @@
 <translation id="4197790712631116042">Av</translation>
 <translation id="4201033867194214117"><ph name="FEATURE_NAME" /> er ikke tilgjengelig.</translation>
 <translation id="4201051445878709314">Se forrige måned</translation>
-<translation id="4209973997261364186">Wi-Fi er slått på</translation>
+<translation id="4209973997261364186">Wifi er slått på</translation>
 <translation id="4212472694152630271">Bytt til PIN-kode</translation>
 <translation id="4215497585250573029">VPN-innstillinger</translation>
 <translation id="4217571870635786043">Diktering</translation>
@@ -720,6 +732,7 @@
 <translation id="5083553833479578423">Lås opp flere Assistent-funksjoner.</translation>
 <translation id="509790653408515442">Når du strømmer appene på telefonen din, vises de her</translation>
 <translation id="5098537242461068432">Skrivebordet og vinduene er åpnet på nytt</translation>
+<translation id="5104236669533825617">Kan ikke opprette skjermopptaket</translation>
 <translation id="5107522548814527560">Nettet</translation>
 <translation id="5117590920725113268">Se neste måned</translation>
 <translation id="5136175204352732067">Et annet tastatur er koblet til</translation>
@@ -765,6 +778,7 @@
 <translation id="5344128444027639014"><ph name="BATTERY_PERCENTAGE" /> % (høyre)</translation>
 <translation id="5352250171825660495">Mørkt tema er på</translation>
 <translation id="5356963482258194581">Bytt mellom mørkt og lyst tema. Høyreklikk på skrivebordet, og velg Bakgrunn og stil.</translation>
+<translation id="536019650977002321">Administratoren din tillater ikke lydopptak. Kontakt administratoren for å få mer informasjon.</translation>
 <translation id="5363163447017455357"><ph name="DELIMITER" /> Gå til denne fanen</translation>
 <translation id="5379115545237091094">For mange forsøk</translation>
 <translation id="5391307769715781764">Vil du erstatte det lagrede skrivebordet?</translation>
@@ -1224,7 +1238,7 @@
 <translation id="7995804128062002838">Kunne ikke ta opp skjermen</translation>
 <translation id="8000066093800657092">Ingen nettverk</translation>
 <translation id="8004512796067398576">Øk</translation>
-<translation id="8029247720646289474">Tilkoblingen til Wi-Fi-sonen mislyktes</translation>
+<translation id="8029247720646289474">Tilkoblingen til wifi-sonen mislyktes</translation>
 <translation id="8029629653277878342">PIN-kode eller passord kreves for mer sikkerhet</translation>
 <translation id="8030169304546394654">Frakoblet</translation>
 <translation id="8036504271468642248">Forrige setning</translation>
@@ -1356,7 +1370,7 @@
 <translation id="8788027118671217603"><ph name="STATE_TEXT" />. <ph name="ENTERPRISE_TEXT" /></translation>
 <translation id="8806053966018712535">Mappen <ph name="FOLDER_NAME" /></translation>
 <translation id="880709030178078220">«Hjelp»</translation>
-<translation id="8814190375133053267">Wi-Fi</translation>
+<translation id="8814190375133053267">Wifi</translation>
 <translation id="881757059229893486">Innstillinger for inndatametoder</translation>
 <translation id="8818320199597151042">Fjerner profilen. Vent i noen minutter.</translation>
 <translation id="8819728065740986820">Tilpasset lading er på</translation>
@@ -1405,7 +1419,7 @@
 <translation id="9074739597929991885">Bluetooth</translation>
 <translation id="9077404278023321866">Maler</translation>
 <translation id="9077515519330855811">Mediekontroller – <ph name="MEDIA_TITLE" /> spilles nå</translation>
-<translation id="9079731690316798640">Wi-Fi: <ph name="ADDRESS" /></translation>
+<translation id="9079731690316798640">Wifi: <ph name="ADDRESS" /></translation>
 <translation id="9080073830732419341">Kameraet er festet til øvre venstre hjørne</translation>
 <translation id="9080132581049224423">Sveip opp for å gå til startskjermen</translation>
 <translation id="9080206825613744995">Mikrofonen er i bruk.</translation>
diff --git a/ash/strings/ash_strings_or.xtb b/ash/strings/ash_strings_or.xtb
index 614db65b..d76affa72 100644
--- a/ash/strings/ash_strings_or.xtb
+++ b/ash/strings/ash_strings_or.xtb
@@ -159,6 +159,15 @@
 <translation id="1797271123677381264">ପାସୱାର୍ଡ ଭୁଲି ଯାଇଛନ୍ତି</translation>
 <translation id="181103072419391116">ସିଗ୍‍ନାଲ୍‍ର କ୍ଷମତା <ph name="SIGNAL_STRENGTH" />, ଆପଣଙ୍କର ଆଡ୍‍ମିନିଷ୍ଟ୍ରେଟର୍‍ଙ୍କ ଦ୍ୱାରା ପରିଚାଳିତ</translation>
 <translation id="1812997170047690955">ମୋ ସ୍କ୍ରିନ୍‌ରେ କ’ଣ ଅଛି?</translation>
+<translation id="1823280932251546115">ସ୍ଥିତି ଟ୍ରେ, ସମୟ <ph name="TIME" />,
+        <ph name="BATTERY" />
+        <ph name="CHANNEL" />
+        <ph name="NETWORK" />,
+        <ph name="PRIVACY" />,
+        <ph name="MANAGED" />
+        <ph name="NOTIFICATION" />,
+        <ph name="IME" />
+        <ph name="LOCALE" /></translation>
 <translation id="1823873187264960516">ଇଥର୍ନେଟ୍: <ph name="ADDRESS" /></translation>
 <translation id="1830308660060964064"><ph name="ITEM_TITLE" />କୁ ଅନ୍‌ପିନ୍ କରାଯାଇଛି</translation>
 <translation id="1836215606488044471">ଆସିଷ୍ଟାଣ୍ଟ (ଲୋଡ୍‌ ହେଉଛି...)</translation>
@@ -458,6 +467,8 @@
 <translation id="3600061223661453002">ବନ୍ଦ ଅଛି</translation>
 <translation id="3604801046548457007"><ph name="DESK_TITILE" /> ଡେସ୍କ ତିଆରି କରାଯାଇଛି</translation>
 <translation id="3606978283550408104">ବ୍ରେଲିର ଡିସ୍‌ପ୍ଲେ ସଂଯୋଗ କରାଯାଇଛି।</translation>
+<translation id="3609301425104788351"><ph name="MIC" />,
+        <ph name="CAMERA" /></translation>
 <translation id="3615926715408477684">ମୋବାଇଲ ଡାଟା ସକ୍ଷମ କରିବା ଫଳରେ ବ୍ଲୁଟୁଥ୍ ସକ୍ଷମ ହେବ</translation>
 <translation id="3616883743181209306">ସ୍କ୍ରିନର ଶୀର୍ଷ ଡାହାଣ କୋଣକୁ ମେନୁ ମୁଭ୍ କରାଯାଇଛି।</translation>
 <translation id="3619536907358025872">ସ୍କ୍ରିନ କ୍ୟାପଚର ସେଟିଂସ</translation>
diff --git a/ash/strings/ash_strings_pa.xtb b/ash/strings/ash_strings_pa.xtb
index de53433..b1da3d2 100644
--- a/ash/strings/ash_strings_pa.xtb
+++ b/ash/strings/ash_strings_pa.xtb
@@ -159,6 +159,15 @@
 <translation id="1797271123677381264">ਪਾਸਵਰਡ ਭੁੱਲ ਗਏ</translation>
 <translation id="181103072419391116">ਸਿਗਨਲ ਦੀ ਤੀਬਰਤਾ <ph name="SIGNAL_STRENGTH" />, ਤੁਹਾਡੇ ਪ੍ਰਸ਼ਾਸਕ ਵੱਲੋਂ ਪ੍ਰਬੰਧਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ</translation>
 <translation id="1812997170047690955">ਮੇਰੀ ਸਕ੍ਰੀਨ 'ਤੇ ਕਿਹੜੀ ਸਮੱਗਰੀ ਮੌਜੂਦ ਹੈ?</translation>
+<translation id="1823280932251546115">ਸਥਿਤੀ ਟ੍ਰੇ, ਸਮਾਂ <ph name="TIME" />,
+        <ph name="BATTERY" />
+        <ph name="CHANNEL" />
+        <ph name="NETWORK" />,
+        <ph name="PRIVACY" />,
+        <ph name="MANAGED" />
+        <ph name="NOTIFICATION" />,
+        <ph name="IME" />
+        <ph name="LOCALE" /></translation>
 <translation id="1823873187264960516">ਈਥਰਨੈੱਟ: <ph name="ADDRESS" /></translation>
 <translation id="1830308660060964064"><ph name="ITEM_TITLE" /> ਨੂੰ ਅਨਪਿੰਨ ਕੀਤਾ ਗਿਆ ਸੀ</translation>
 <translation id="1836215606488044471">Assistant ਨੂੰ (ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ...)</translation>
@@ -457,6 +466,8 @@
 <translation id="3600061223661453002">ਬੰਦ ਕਰੋ</translation>
 <translation id="3604801046548457007">ਡੈਸਕ <ph name="DESK_TITILE" /> ਬਣਾਇਆ ਗਿਆ</translation>
 <translation id="3606978283550408104">ਬ੍ਰੇਲ ਡਿਸਪਲੇ ਕਨੈਕਟ ਕੀਤਾ।</translation>
+<translation id="3609301425104788351"><ph name="MIC" />,
+        <ph name="CAMERA" /></translation>
 <translation id="3615926715408477684">ਮੋਬਾਈਲ ਡਾਟਾ ਚਾਲੂ ਕਰਨ ਨਾਲ ਬਲੂਟੁੱਥ ਵੀ ਚਾਲੂ ਹੋ ਜਾਵੇਗਾ</translation>
 <translation id="3616883743181209306">ਮੀਨੂ ਨੂੰ ਸਕ੍ਰੀਨ ਦੇ ਉੱਪਰਲੇ ਸੱਜੇ ਕੋਨੇ ਵਿੱਚ ਲਿਜਾਇਆ ਗਿਆ।</translation>
 <translation id="3619536907358025872">ਸਕ੍ਰੀਨ ਕੈਪਚਰ ਸੈਟਿੰਗਾਂ</translation>
diff --git a/ash/strings/ash_strings_pl.xtb b/ash/strings/ash_strings_pl.xtb
index a7f0001e..b8f71de 100644
--- a/ash/strings/ash_strings_pl.xtb
+++ b/ash/strings/ash_strings_pl.xtb
@@ -159,6 +159,15 @@
 <translation id="1797271123677381264">Nie pamiętam hasła</translation>
 <translation id="181103072419391116">Siła sygnału: <ph name="SIGNAL_STRENGTH" />, zarządzana przez administratora</translation>
 <translation id="1812997170047690955">Co widać na moim ekranie?</translation>
+<translation id="1823280932251546115">Pasek stanu, godzina <ph name="TIME" />,
+        <ph name="BATTERY" />
+        <ph name="CHANNEL" />
+        <ph name="NETWORK" />,
+        <ph name="PRIVACY" />,
+        <ph name="MANAGED" />
+        <ph name="NOTIFICATION" />,
+        <ph name="IME" />
+        <ph name="LOCALE" /></translation>
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1830308660060964064">Element <ph name="ITEM_TITLE" /> został odpięty</translation>
 <translation id="1836215606488044471">Asystent (ładuję…)</translation>
@@ -457,6 +466,8 @@
 <translation id="3600061223661453002">Wył.</translation>
 <translation id="3604801046548457007">Utworzono biurko <ph name="DESK_TITILE" /></translation>
 <translation id="3606978283550408104">Podłączono monitor brajlowski.</translation>
+<translation id="3609301425104788351"><ph name="MIC" />,
+        <ph name="CAMERA" /></translation>
 <translation id="3615926715408477684">Wraz z mobilną transmisją danych zostanie włączony Bluetooth</translation>
 <translation id="3616883743181209306">Menu zostało przeniesione w prawy górny róg ekranu.</translation>
 <translation id="3619536907358025872">Ustawienia zrzutu ekranu</translation>
diff --git a/ash/strings/ash_strings_pt-PT.xtb b/ash/strings/ash_strings_pt-PT.xtb
index ca7366ae..df55ce3 100644
--- a/ash/strings/ash_strings_pt-PT.xtb
+++ b/ash/strings/ash_strings_pt-PT.xtb
@@ -159,6 +159,15 @@
 <translation id="1797271123677381264">Esqueci-me da palavra-passe</translation>
 <translation id="181103072419391116">Intensidade do sinal: <ph name="SIGNAL_STRENGTH" />, gerida pelo administrador</translation>
 <translation id="1812997170047690955">O que está no meu ecrã?</translation>
+<translation id="1823280932251546115">Tabuleiro do estado, hora <ph name="TIME" />,
+        <ph name="BATTERY" />
+        <ph name="CHANNEL" />
+        <ph name="NETWORK" />,
+        <ph name="PRIVACY" />,
+        <ph name="MANAGED" />
+        <ph name="NOTIFICATION" />,
+        <ph name="IME" />
+        <ph name="LOCALE" /></translation>
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1830308660060964064">O item <ph name="ITEM_TITLE" /> foi solto.</translation>
 <translation id="1836215606488044471">Assistente (a carregar...)</translation>
@@ -414,6 +423,7 @@
 <translation id="3368922792935385530">Ligado</translation>
 <translation id="3371140690572404006">Dispositivo USB-C (porta frontal do lado direito)</translation>
 <translation id="3375634426936648815">Ligado</translation>
+<translation id="3378438761594387761">Pode encontrar as transferências e as capturas de ecrã recentes aqui</translation>
 <translation id="3378442621503952303">A estabelecer ligação ao perfil. Aguarde alguns minutos.</translation>
 <translation id="3386978599540877378">a lupa em ecrã inteiro</translation>
 <translation id="3387527074123400161">ChromiumOS</translation>
@@ -457,6 +467,8 @@
 <translation id="3600061223661453002">Desativado</translation>
 <translation id="3604801046548457007">Foi criado o espaço de trabalho <ph name="DESK_TITILE" /></translation>
 <translation id="3606978283550408104">Visualização em braille ligada.</translation>
+<translation id="3609301425104788351"><ph name="MIC" />,
+        <ph name="CAMERA" /></translation>
 <translation id="3615926715408477684">A ativação dos dados móveis ativa o Bluetooth</translation>
 <translation id="3616883743181209306">O menu foi movido para o canto superior direito do ecrã.</translation>
 <translation id="3619536907358025872">Definições da captura de ecrã</translation>
@@ -720,6 +732,7 @@
 <translation id="5083553833479578423">Desbloqueie mais funcionalidades do Assistente.</translation>
 <translation id="509790653408515442">Quando fizer stream das apps do telemóvel, as mesmas vão ser apresentadas aqui</translation>
 <translation id="5098537242461068432">O espaço de trabalho e as janelas foram reabertos</translation>
+<translation id="5104236669533825617">Não é possível criar a gravação de ecrã</translation>
 <translation id="5107522548814527560">Web</translation>
 <translation id="5117590920725113268">Mostrar mês seguinte</translation>
 <translation id="5136175204352732067">Teclado diferente ligado</translation>
@@ -765,6 +778,7 @@
 <translation id="5344128444027639014"><ph name="BATTERY_PERCENTAGE" />% (direito)</translation>
 <translation id="5352250171825660495">O tema escuro está ativado.</translation>
 <translation id="5356963482258194581">Alterne entre o tema claro e escuro. Clique com o botão direito do rato no ambiente de trabalho e selecione Estilo e fundo de ecrã.</translation>
+<translation id="536019650977002321">O seu administrador não permite a captura de áudio. Contacte o administrador para obter mais informações.</translation>
 <translation id="5363163447017455357"><ph name="DELIMITER" /> Aceder a este separador</translation>
 <translation id="5379115545237091094">Demasiadas tentativas</translation>
 <translation id="5391307769715781764">Substituir o espaço de trabalho guardado?</translation>
diff --git a/ash/strings/ash_strings_sl.xtb b/ash/strings/ash_strings_sl.xtb
index 1438da87..2de057b9 100644
--- a/ash/strings/ash_strings_sl.xtb
+++ b/ash/strings/ash_strings_sl.xtb
@@ -159,6 +159,15 @@
 <translation id="1797271123677381264">Pozabljeno geslo</translation>
 <translation id="181103072419391116">Moč signala je <ph name="SIGNAL_STRENGTH" />, upravlja ga vaš skrbnik</translation>
 <translation id="1812997170047690955">Kaj je na zaslonu?</translation>
+<translation id="1823280932251546115">Vrstica stanja, čas <ph name="TIME" />,
+        <ph name="BATTERY" />
+        <ph name="CHANNEL" />,
+        <ph name="NETWORK" />,
+        <ph name="PRIVACY" />,
+        <ph name="MANAGED" />,
+        <ph name="NOTIFICATION" />
+        <ph name="IME" />
+        <ph name="LOCALE" /></translation>
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1830308660060964064">Element <ph name="ITEM_TITLE" /> je bil odpet</translation>
 <translation id="1836215606488044471">Pomočnik (nalaganje ...)</translation>
@@ -414,6 +423,7 @@
 <translation id="3368922792935385530">Povezano</translation>
 <translation id="3371140690572404006">Naprava USB-C (vrata desno spredaj)</translation>
 <translation id="3375634426936648815">Povezano</translation>
+<translation id="3378438761594387761">Tukaj so prikazani nedavni prenosi in zajemi zaslonske slike.</translation>
 <translation id="3378442621503952303">Povezovanje s profilom. Počakajte nekaj minut.</translation>
 <translation id="3386978599540877378">celozaslonska lupa</translation>
 <translation id="3387527074123400161">Chromium OS</translation>
@@ -457,6 +467,8 @@
 <translation id="3600061223661453002">Izklop</translation>
 <translation id="3604801046548457007">Namizje <ph name="DESK_TITILE" /> je bilo ustvarjeno</translation>
 <translation id="3606978283550408104">Povezava z braillovo vrstico je vzpostavljena.</translation>
+<translation id="3609301425104788351"><ph name="MIC" />,
+        <ph name="CAMERA" /></translation>
 <translation id="3615926715408477684">Če omogočite prenos podatkov v mobilnem omrežju, bo omogočen Bluetooth.</translation>
 <translation id="3616883743181209306">Meni je bil premaknjen v zgornji desni kot zaslona.</translation>
 <translation id="3619536907358025872">Nastavitve Zaslonskega posnetka</translation>
@@ -720,6 +732,7 @@
 <translation id="5083553833479578423">Odklenite več funkcij Pomočnika.</translation>
 <translation id="509790653408515442">Ko pretočno predvajate aplikacije v telefonu, so prikazane tukaj.</translation>
 <translation id="5098537242461068432">Namizje in okna so znova odprti</translation>
+<translation id="5104236669533825617">Snemanja zaslona ni mogoče ustvariti</translation>
 <translation id="5107522548814527560">Splet</translation>
 <translation id="5117590920725113268">Prikaz naslednjega meseca</translation>
 <translation id="5136175204352732067">Priklopljena je druga tipkovnica</translation>
@@ -765,6 +778,7 @@
 <translation id="5344128444027639014"><ph name="BATTERY_PERCENTAGE" /> % (desna)</translation>
 <translation id="5352250171825660495">Temna tema je vklopljena</translation>
 <translation id="5356963482258194581">Preklopite med temno in svetlo temo. Z desnim gumbom kliknite namizje in izberite Zaslonsko ozadje in slog.</translation>
+<translation id="536019650977002321">Skrbnik ne dovoli zajemanja zvoka. Če želite več informacij, se obrnite na skrbnika.</translation>
 <translation id="5363163447017455357"><ph name="DELIMITER" /> Pomik na ta zavihek</translation>
 <translation id="5379115545237091094">Preveč poskusov</translation>
 <translation id="5391307769715781764">Želite zamenjati shranjeno namizje?</translation>
diff --git a/ash/strings/ash_strings_sr-Latn.xtb b/ash/strings/ash_strings_sr-Latn.xtb
index 9fff3b1..b77ca53 100644
--- a/ash/strings/ash_strings_sr-Latn.xtb
+++ b/ash/strings/ash_strings_sr-Latn.xtb
@@ -159,6 +159,15 @@
 <translation id="1797271123677381264">Zaboravili ste lozinku</translation>
 <translation id="181103072419391116">Jačina signala <ph name="SIGNAL_STRENGTH" />, upravlja administrator</translation>
 <translation id="1812997170047690955">Šta je na ekranu?</translation>
+<translation id="1823280932251546115">Statusna traka, vreme <ph name="TIME" />,
+        <ph name="BATTERY" />
+        <ph name="CHANNEL" />
+        <ph name="NETWORK" />,
+        <ph name="PRIVACY" />,
+        <ph name="MANAGED" />
+        <ph name="NOTIFICATION" />,
+        <ph name="IME" />
+        <ph name="LOCALE" /></translation>
 <translation id="1823873187264960516">Eternet: <ph name="ADDRESS" /></translation>
 <translation id="1830308660060964064">Stavka <ph name="ITEM_TITLE" /> je otkačena</translation>
 <translation id="1836215606488044471">Pomoćnik (učitava se...)</translation>
@@ -458,6 +467,8 @@
 <translation id="3600061223661453002">Isključi</translation>
 <translation id="3604801046548457007">Radna površina <ph name="DESK_TITILE" /> je napravljena</translation>
 <translation id="3606978283550408104">Povezan je ekran sa Brajevom azbukom.</translation>
+<translation id="3609301425104788351"><ph name="MIC" />,
+        <ph name="CAMERA" /></translation>
 <translation id="3615926715408477684">Ako omogućite mobilne podatke, omogućavate Bluetooth</translation>
 <translation id="3616883743181209306">Meni je premešten u gornji desni ugao ekrana.</translation>
 <translation id="3619536907358025872">Podešavanja snimanja ekrana</translation>
diff --git a/ash/strings/ash_strings_sr.xtb b/ash/strings/ash_strings_sr.xtb
index eb5221b..8a21f414 100644
--- a/ash/strings/ash_strings_sr.xtb
+++ b/ash/strings/ash_strings_sr.xtb
@@ -159,6 +159,15 @@
 <translation id="1797271123677381264">Заборавили сте лозинку</translation>
 <translation id="181103072419391116">Јачина сигнала <ph name="SIGNAL_STRENGTH" />, управља администратор</translation>
 <translation id="1812997170047690955">Шта је на екрану?</translation>
+<translation id="1823280932251546115">Статусна трака, време <ph name="TIME" />,
+        <ph name="BATTERY" />
+        <ph name="CHANNEL" />
+        <ph name="NETWORK" />,
+        <ph name="PRIVACY" />,
+        <ph name="MANAGED" />
+        <ph name="NOTIFICATION" />,
+        <ph name="IME" />
+        <ph name="LOCALE" /></translation>
 <translation id="1823873187264960516">Етернет: <ph name="ADDRESS" /></translation>
 <translation id="1830308660060964064">Ставка <ph name="ITEM_TITLE" /> је откачена</translation>
 <translation id="1836215606488044471">Помоћник (учитава се...)</translation>
@@ -458,6 +467,8 @@
 <translation id="3600061223661453002">Искључи</translation>
 <translation id="3604801046548457007">Радна површина <ph name="DESK_TITILE" /> је направљена</translation>
 <translation id="3606978283550408104">Повезан је екран са Брајевом азбуком.</translation>
+<translation id="3609301425104788351"><ph name="MIC" />,
+        <ph name="CAMERA" /></translation>
 <translation id="3615926715408477684">Ако омогућите мобилне податке, омогућавате Bluetooth</translation>
 <translation id="3616883743181209306">Мени је премештен у горњи десни угао екрана.</translation>
 <translation id="3619536907358025872">Подешавања снимања екрана</translation>
diff --git a/ash/strings/ash_strings_sv.xtb b/ash/strings/ash_strings_sv.xtb
index 60e1522..e5f5d2b 100644
--- a/ash/strings/ash_strings_sv.xtb
+++ b/ash/strings/ash_strings_sv.xtb
@@ -414,6 +414,7 @@
 <translation id="3368922792935385530">Ansluten</translation>
 <translation id="3371140690572404006">USB-C-enhet (främre porten på högra sidan)</translation>
 <translation id="3375634426936648815">Ansluten</translation>
+<translation id="3378438761594387761">Här hittar du dina senaste nedladdningar och skärmbilder</translation>
 <translation id="3378442621503952303">Ansluter till profilen. Vänta några minuter.</translation>
 <translation id="3386978599540877378">helskärmsförstoraren</translation>
 <translation id="3387527074123400161">Chromium OS</translation>
@@ -720,6 +721,7 @@
 <translation id="5083553833479578423">Lås upp fler funktioner för Assistent</translation>
 <translation id="509790653408515442">När du streamar telefonens appar visas de här</translation>
 <translation id="5098537242461068432">Skrivbord och fönster öppnades igen</translation>
+<translation id="5104236669533825617">Det går inte att skapa en screencast</translation>
 <translation id="5107522548814527560">Webb</translation>
 <translation id="5117590920725113268">Visa nästa månad</translation>
 <translation id="5136175204352732067">Ett annat tangentbord har anslutits</translation>
@@ -765,6 +767,7 @@
 <translation id="5344128444027639014"><ph name="BATTERY_PERCENTAGE" /> % (höger)</translation>
 <translation id="5352250171825660495">Mörkt tema är på</translation>
 <translation id="5356963482258194581">Byt mellan ljust och mörkt tema. Högerklicka på skrivbordet och välj Bakgrund och stil.</translation>
+<translation id="536019650977002321">Administratören tillåter inte ljudinspelning. Kontakta administratören för mer information.</translation>
 <translation id="5363163447017455357"><ph name="DELIMITER" /> Öppna den här fliken</translation>
 <translation id="5379115545237091094">För många försök</translation>
 <translation id="5391307769715781764">Vill du ersätta det sparade skrivbordet?</translation>
diff --git a/ash/strings/ash_strings_th.xtb b/ash/strings/ash_strings_th.xtb
index f437a506..37913ad2 100644
--- a/ash/strings/ash_strings_th.xtb
+++ b/ash/strings/ash_strings_th.xtb
@@ -159,6 +159,15 @@
 <translation id="1797271123677381264">ลืมรหัสผ่าน</translation>
 <translation id="181103072419391116">ความแรงสัญญาณ <ph name="SIGNAL_STRENGTH" />, จัดการโดยผู้ดูแลระบบ</translation>
 <translation id="1812997170047690955">รายการที่อยู่ในหน้าจอของฉัน</translation>
+<translation id="1823280932251546115">ถาดสถานะ เวลา <ph name="TIME" />,
+        <ph name="BATTERY" />
+        <ph name="CHANNEL" />
+        <ph name="NETWORK" />,
+        <ph name="PRIVACY" />,
+        <ph name="MANAGED" />
+        <ph name="NOTIFICATION" />,
+        <ph name="IME" />
+        <ph name="LOCALE" /></translation>
 <translation id="1823873187264960516">อีเทอร์เน็ต: <ph name="ADDRESS" /></translation>
 <translation id="1830308660060964064">เลิกปักหมุด <ph name="ITEM_TITLE" /> แล้ว</translation>
 <translation id="1836215606488044471">Assistant (กำลังโหลด...)</translation>
@@ -414,6 +423,7 @@
 <translation id="3368922792935385530">เชื่อมต่อแล้ว</translation>
 <translation id="3371140690572404006">อุปกรณ์ USB-C (พอร์ตด้านหน้าขวา)</translation>
 <translation id="3375634426936648815">เชื่อมต่อแล้ว</translation>
+<translation id="3378438761594387761">คุณจะเห็นการดาวน์โหลดและการจับภาพหน้าจอล่าสุดที่นี่</translation>
 <translation id="3378442621503952303">กำลังเชื่อมต่อโปรไฟล์ รอสักครู่</translation>
 <translation id="3386978599540877378">แว่นขยายแบบเต็มหน้าจอ</translation>
 <translation id="3387527074123400161">Chromium OS</translation>
@@ -457,6 +467,8 @@
 <translation id="3600061223661453002">ปิด</translation>
 <translation id="3604801046548457007">สร้างเดสก์ <ph name="DESK_TITILE" /> แล้ว</translation>
 <translation id="3606978283550408104">เชื่อมต่ออุปกรณ์แสดงผลอักษรเบรลล์แล้ว</translation>
+<translation id="3609301425104788351"><ph name="MIC" />,
+        <ph name="CAMERA" /></translation>
 <translation id="3615926715408477684">การเปิดใช้อินเทอร์เน็ตมือถือจะเปิดใช้บลูทูธ</translation>
 <translation id="3616883743181209306">เมนูได้ย้ายไปอยู่ที่มุมขวาบนของหน้าจอ</translation>
 <translation id="3619536907358025872">การตั้งค่าการจับภาพหน้าจอ</translation>
@@ -720,6 +732,7 @@
 <translation id="5083553833479578423">ใช้ฟีเจอร์จาก Assistant ได้มากขึ้น</translation>
 <translation id="509790653408515442">เมื่อคุณสตรีมแอปของโทรศัพท์ แอปจะปรากฏที่นี่</translation>
 <translation id="5098537242461068432">เดสก์และหน้าต่างเปิดอีกครั้งแล้ว</translation>
+<translation id="5104236669533825617">สร้าง Screencast ไม่ได้</translation>
 <translation id="5107522548814527560">เว็บ</translation>
 <translation id="5117590920725113268">แสดงเดือนถัดไป</translation>
 <translation id="5136175204352732067">เชื่อมต่อกับแป้นพิมพ์อื่นแล้ว</translation>
@@ -765,6 +778,7 @@
 <translation id="5344128444027639014"><ph name="BATTERY_PERCENTAGE" />% (ขวา)</translation>
 <translation id="5352250171825660495">ธีมมืดเปิดอยู่</translation>
 <translation id="5356963482258194581">สลับระหว่างธีมมืดและธีมสว่าง คลิกขวาที่เดสก์ท็อป แล้วเลือก "วอลเปเปอร์และสไตล์"</translation>
+<translation id="536019650977002321">ผู้ดูแลระบบไม่อนุญาตให้บันทึกเสียง ติดต่อผู้ดูแลระบบเพื่อสอบถามข้อมูลเพิ่มเติม</translation>
 <translation id="5363163447017455357"><ph name="DELIMITER" /> ไปที่แท็บนี้</translation>
 <translation id="5379115545237091094">ลองหลายครั้งเกินไป</translation>
 <translation id="5391307769715781764">แทนที่เดสก์ที่บันทึกไว้ใช่ไหม</translation>
diff --git a/ash/strings/ash_strings_tr.xtb b/ash/strings/ash_strings_tr.xtb
index 31caf6b..cee5e25 100644
--- a/ash/strings/ash_strings_tr.xtb
+++ b/ash/strings/ash_strings_tr.xtb
@@ -414,6 +414,7 @@
 <translation id="3368922792935385530">Bağlı</translation>
 <translation id="3371140690572404006">USB-C cihaz (sağ ön bağlantı noktası)</translation>
 <translation id="3375634426936648815">Bağlı</translation>
+<translation id="3378438761594387761">En son indirdiğiniz öğeleri ve ekran görüntülerini burada bulabilirsiniz</translation>
 <translation id="3378442621503952303">Profile bağlanılıyor. Birkaç dakika bekleyin.</translation>
 <translation id="3386978599540877378">tam ekran büyüteci</translation>
 <translation id="3387527074123400161">ChromiumOS</translation>
@@ -720,6 +721,7 @@
 <translation id="5083553833479578423">Diğer Asistan özelliklerinin kilidini açın.</translation>
 <translation id="509790653408515442">Telefonunuzdan yayınladığınız uygulamalar burada görünür</translation>
 <translation id="5098537242461068432">Masa ve pencereler yeniden açıldı</translation>
+<translation id="5104236669533825617">Ekran video kaydı oluşturulamıyor</translation>
 <translation id="5107522548814527560">Web</translation>
 <translation id="5117590920725113268">Sonraki ayı göster</translation>
 <translation id="5136175204352732067">Farklı klavye bağlandı</translation>
@@ -765,6 +767,7 @@
 <translation id="5344128444027639014">%<ph name="BATTERY_PERCENTAGE" /> (Sağ)</translation>
 <translation id="5352250171825660495">Koyu tema açık</translation>
 <translation id="5356963482258194581">Koyu ve açık tema arasında geçiş yapın. Masaüstünü sağ tıklayıp Duvar kağıdı ve stil'i seçin</translation>
+<translation id="536019650977002321">Yöneticiniz ses yakalamaya izin vermiyor. Daha fazla bilgi için yöneticinizle iletişime geçin.</translation>
 <translation id="5363163447017455357"><ph name="DELIMITER" /> Bu sekmeye gidin</translation>
 <translation id="5379115545237091094">Çok fazla deneme yapıldı</translation>
 <translation id="5391307769715781764">Kayıtlı masa değiştirilsin mi?</translation>
diff --git a/ash/strings/ash_strings_uz.xtb b/ash/strings/ash_strings_uz.xtb
index 0c3530f..63dd4f95 100644
--- a/ash/strings/ash_strings_uz.xtb
+++ b/ash/strings/ash_strings_uz.xtb
@@ -159,6 +159,15 @@
 <translation id="1797271123677381264">Parolni unutdim</translation>
 <translation id="181103072419391116">Signal darajasi: <ph name="SIGNAL_STRENGTH" />, Administrator boshqaruvida</translation>
 <translation id="1812997170047690955">Ekranda nimalar bor?</translation>
+<translation id="1823280932251546115">Holat qatori, vaqt <ph name="TIME" />,
+        <ph name="BATTERY" />
+        <ph name="CHANNEL" />
+        <ph name="NETWORK" />,
+        <ph name="PRIVACY" />,
+        <ph name="MANAGED" />
+        <ph name="NOTIFICATION" />,
+        <ph name="IME" />
+        <ph name="LOCALE" /></translation>
 <translation id="1823873187264960516">Ethernet: <ph name="ADDRESS" /></translation>
 <translation id="1830308660060964064">Yechib olindi: <ph name="ITEM_TITLE" /></translation>
 <translation id="1836215606488044471">Assistent (yuklanmoqda...)</translation>
@@ -458,6 +467,8 @@
 <translation id="3600061223661453002">Yoqilmagan</translation>
 <translation id="3604801046548457007"><ph name="DESK_TITILE" /> ish stoli yaratildi</translation>
 <translation id="3606978283550408104">Brayl displeyi ulandi.</translation>
+<translation id="3609301425104788351"><ph name="MIC" />,
+        <ph name="CAMERA" /></translation>
 <translation id="3615926715408477684">Mobil internet yoqilsa, Bluetooth ham birga yonadi</translation>
 <translation id="3616883743181209306">Menyu ekranning yuqori oʻng burchagiga surildi.</translation>
 <translation id="3619536907358025872">Ekran tasviri sozlamalari</translation>
diff --git a/ash/strings/ash_strings_zh-TW.xtb b/ash/strings/ash_strings_zh-TW.xtb
index c46c1a3..9c4f00f 100644
--- a/ash/strings/ash_strings_zh-TW.xtb
+++ b/ash/strings/ash_strings_zh-TW.xtb
@@ -414,6 +414,7 @@
 <translation id="3368922792935385530">已連線</translation>
 <translation id="3371140690572404006">USB-C 裝置 (右前方連接埠)</translation>
 <translation id="3375634426936648815">已連線</translation>
+<translation id="3378438761594387761">你可在這裡找到最近的下載內容和螢幕畫面擷取項目</translation>
 <translation id="3378442621503952303">正在連線至設定檔,請稍後片刻。</translation>
 <translation id="3386978599540877378">全螢幕放大鏡</translation>
 <translation id="3387527074123400161">Chromium OS</translation>
@@ -720,6 +721,7 @@
 <translation id="5083553833479578423">啟用更多 Google 助理功能。</translation>
 <translation id="509790653408515442">串流手機的應用程式時,這些應用程式會顯示在這裡</translation>
 <translation id="5098537242461068432">已重新開啟桌面和視窗</translation>
+<translation id="5104236669533825617">無法建立螢幕側錄工作階段</translation>
 <translation id="5107522548814527560">網頁</translation>
 <translation id="5117590920725113268">顯示下一個月</translation>
 <translation id="5136175204352732067">已連接其他鍵盤</translation>
@@ -765,6 +767,7 @@
 <translation id="5344128444027639014"><ph name="BATTERY_PERCENTAGE" />% (右側)</translation>
 <translation id="5352250171825660495">深色主題已開啟</translation>
 <translation id="5356963482258194581">在深色和淺色主題之間切換。在桌面上按一下滑鼠右鍵,並選取桌布和樣式。</translation>
+<translation id="536019650977002321">管理員不允許擷取音訊,詳情請洽管理員。</translation>
 <translation id="5363163447017455357"><ph name="DELIMITER" /> 前往這個分頁</translation>
 <translation id="5379115545237091094">嘗試次數過多</translation>
 <translation id="5391307769715781764">要取代已儲存的桌面嗎?</translation>
diff --git a/ash/style/color_util.h b/ash/style/color_util.h
index 9d89fe89..150672ea 100644
--- a/ash/style/color_util.h
+++ b/ash/style/color_util.h
@@ -24,7 +24,7 @@
   // Returns the background themed color that's calculated based on the color
   // extracted from wallpaper. For dark mode, it will be dark muted wallpaper
   // prominent color + SK_ColorBLACK 50%. For light mode, it will be light
-  // muted wallpaper prominent color + SK_ColorWHITE 75%. Extracts the color on
+  // muted wallpaper prominent color + SK_ColorWHITE 50%. Extracts the color on
   // dark mode if `use_dark_color` is true.
   static SkColor GetBackgroundThemedColor(SkColor default_color,
                                           bool use_dark_color);
diff --git a/ash/style/dark_light_mode_controller_impl.cc b/ash/style/dark_light_mode_controller_impl.cc
index f2ff4dc..6b448d12 100644
--- a/ash/style/dark_light_mode_controller_impl.cc
+++ b/ash/style/dark_light_mode_controller_impl.cc
@@ -11,6 +11,7 @@
 #include "ash/public/cpp/schedule_enums.h"
 #include "ash/public/cpp/style/color_mode_observer.h"
 #include "ash/shell.h"
+#include "ash/style/color_util.h"
 #include "ash/style/dark_light_mode_nudge_controller.h"
 #include "ash/wallpaper/wallpaper_controller_impl.h"
 #include "base/logging.h"
@@ -35,36 +36,6 @@
 constexpr OobeDialogState kStatesSupportingDarkTheme[] = {
     OobeDialogState::MARKETING_OPT_IN, OobeDialogState::THEME_SELECTION};
 
-// Gets the themed background color. The color will be set to `user_color` of
-// ColorProvider::Key and then can be assigned to Shield and Base layers for
-// dark/light mode feature. The algorithm to calculate the color and scope to
-// apply the color will change on Material Next project.
-SkColor GetThemedBackgroundColor(bool use_dark_color) {
-  const SkColor default_color =
-      use_dark_color ? gfx::kGoogleGrey900 : SK_ColorWHITE;
-  if (!Shell::HasInstance())
-    return default_color;
-
-  WallpaperControllerImpl* wallpaper_controller =
-      Shell::Get()->wallpaper_controller();
-  if (!wallpaper_controller)
-    return default_color;
-
-  color_utils::LumaRange luma_range = use_dark_color
-                                          ? color_utils::LumaRange::DARK
-                                          : color_utils::LumaRange::LIGHT;
-  SkColor muted_color =
-      wallpaper_controller->GetProminentColor(color_utils::ColorProfile(
-          luma_range, color_utils::SaturationRange::MUTED));
-  if (muted_color == kInvalidWallpaperColor)
-    return default_color;
-
-  return color_utils::GetResultingPaintColor(
-      SkColorSetA(use_dark_color ? SK_ColorBLACK : SK_ColorWHITE,
-                  SK_AlphaOPAQUE * 0.5f),
-      muted_color);
-}
-
 // Refresh colors of the system on the current color mode. Not only the SysUI,
 // but also all the other components like WebUI. And since
 // DarkLightModeController is kind of NativeTheme of ChromeOS. This will trigger
@@ -73,7 +44,10 @@
 // wallpaper changes as the background color is calculated from current
 // wallpaper.
 void RefreshColorsOnColorMode(bool is_dark_mode_enabled) {
-  const SkColor themed_color = GetThemedBackgroundColor(is_dark_mode_enabled);
+  const SkColor default_color =
+      is_dark_mode_enabled ? gfx::kGoogleGrey900 : SK_ColorWHITE;
+  const SkColor themed_color =
+      ColorUtil::GetBackgroundThemedColor(default_color, is_dark_mode_enabled);
   auto* native_theme = ui::NativeTheme::GetInstanceForNativeUi();
   native_theme->set_use_dark_colors(is_dark_mode_enabled);
   native_theme->set_user_color(themed_color);
diff --git a/ash/system/bluetooth/DEPS b/ash/system/bluetooth/DEPS
index d935e898..03f9242 100644
--- a/ash/system/bluetooth/DEPS
+++ b/ash/system/bluetooth/DEPS
@@ -1,9 +1,3 @@
 include_rules = [
   "+services/device/public",
 ]
-
-specific_include_rules = {
-  "tray_bluetooth_helper_legacy_unittest.cc": [
-    "+dbus",
-  ],
-}
diff --git a/ash/system/bluetooth/bluetooth_detailed_view_controller.cc b/ash/system/bluetooth/bluetooth_detailed_view_controller.cc
index e4da3c8..dc1f02f1 100644
--- a/ash/system/bluetooth/bluetooth_detailed_view_controller.cc
+++ b/ash/system/bluetooth/bluetooth_detailed_view_controller.cc
@@ -4,7 +4,6 @@
 
 #include "ash/system/bluetooth/bluetooth_detailed_view_controller.h"
 
-#include "ash/constants/ash_features.h"
 #include "ash/public/cpp/bluetooth_config_service.h"
 #include "ash/public/cpp/system_tray_client.h"
 #include "ash/shell.h"
@@ -29,7 +28,6 @@
     : detailed_view_delegate_(
           std::make_unique<DetailedViewDelegate>(tray_controller)),
       tray_controller_(tray_controller) {
-  DCHECK(ash::features::IsBluetoothRevampEnabled());
   GetBluetoothConfigService(
       remote_cros_bluetooth_config_.BindNewPipeAndPassReceiver());
   remote_cros_bluetooth_config_->ObserveSystemProperties(
diff --git a/ash/system/bluetooth/bluetooth_detailed_view_controller_unittest.cc b/ash/system/bluetooth/bluetooth_detailed_view_controller_unittest.cc
index bbc24e3..b211b8a 100644
--- a/ash/system/bluetooth/bluetooth_detailed_view_controller_unittest.cc
+++ b/ash/system/bluetooth/bluetooth_detailed_view_controller_unittest.cc
@@ -7,7 +7,6 @@
 #include <memory>
 #include <vector>
 
-#include "ash/constants/ash_features.h"
 #include "ash/public/cpp/test/test_system_tray_client.h"
 #include "ash/system/bluetooth/bluetooth_detailed_view.h"
 #include "ash/system/bluetooth/bluetooth_device_list_controller.h"
@@ -21,7 +20,6 @@
 #include "base/check.h"
 #include "base/run_loop.h"
 #include "base/strings/string_piece.h"
-#include "base/test/scoped_feature_list.h"
 #include "chromeos/ash/services/bluetooth_config/fake_adapter_state_controller.h"
 #include "chromeos/ash/services/bluetooth_config/fake_device_cache.h"
 #include "chromeos/ash/services/bluetooth_config/fake_device_operation_handler.h"
@@ -106,8 +104,6 @@
   void SetUp() override {
     AshTestBase::SetUp();
 
-    feature_list_.InitAndEnableFeature(features::kBluetoothRevamp);
-
     GetPrimaryUnifiedSystemTray()->ShowBubble();
 
     bluetooth_detailed_view_controller_ =
@@ -192,7 +188,6 @@
     return ash_test_helper()->bluetooth_config_test_helper();
   }
 
-  base::test::ScopedFeatureList feature_list_;
   std::unique_ptr<BluetoothDetailedViewController>
       bluetooth_detailed_view_controller_;
   FakeBluetoothDetailedViewFactory bluetooth_detailed_view_factory_;
diff --git a/ash/system/bluetooth/bluetooth_detailed_view_impl.cc b/ash/system/bluetooth/bluetooth_detailed_view_impl.cc
index 83babac7..f45e684 100644
--- a/ash/system/bluetooth/bluetooth_detailed_view_impl.cc
+++ b/ash/system/bluetooth/bluetooth_detailed_view_impl.cc
@@ -6,7 +6,6 @@
 
 #include <memory>
 
-#include "ash/constants/ash_features.h"
 #include "ash/public/cpp/system_tray_client.h"
 #include "ash/resources/vector_icons/vector_icons.h"
 #include "ash/shell.h"
@@ -41,7 +40,6 @@
     BluetoothDetailedView::Delegate* delegate)
     : BluetoothDetailedView(delegate),
       TrayDetailedView(detailed_view_delegate) {
-  DCHECK(ash::features::IsBluetoothRevampEnabled());
   CreateTitleRow(IDS_ASH_STATUS_TRAY_BLUETOOTH);
   CreateTitleRowButtons();
   CreateScrollableList();
diff --git a/ash/system/bluetooth/bluetooth_detailed_view_legacy.cc b/ash/system/bluetooth/bluetooth_detailed_view_legacy.cc
deleted file mode 100644
index 78d9fc2..0000000
--- a/ash/system/bluetooth/bluetooth_detailed_view_legacy.cc
+++ /dev/null
@@ -1,462 +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.
-
-#include "ash/system/bluetooth/bluetooth_detailed_view_legacy.h"
-
-#include <memory>
-#include <string>
-#include <unordered_map>
-#include <utility>
-
-#include "ash/public/cpp/system_tray_client.h"
-#include "ash/resources/vector_icons/vector_icons.h"
-#include "ash/shell.h"
-#include "ash/strings/grit/ash_strings.h"
-#include "ash/style/ash_color_provider.h"
-#include "ash/style/color_util.h"
-#include "ash/system/machine_learning/user_settings_event_logger.h"
-#include "ash/system/model/system_tray_model.h"
-#include "ash/system/tray/hover_highlight_view.h"
-#include "ash/system/tray/tray_info_label.h"
-#include "ash/system/tray/tray_popup_utils.h"
-#include "ash/system/tray/tray_toggle_button.h"
-#include "ash/system/tray/tray_utils.h"
-#include "base/bind.h"
-#include "base/strings/utf_string_conversions.h"
-#include "chromeos/ui/vector_icons/vector_icons.h"
-#include "device/bluetooth/chromeos/bluetooth_utils.h"
-#include "services/device/public/cpp/bluetooth/bluetooth_utils.h"
-#include "ui/base/l10n/l10n_util.h"
-#include "ui/gfx/paint_vector_icon.h"
-#include "ui/views/border.h"
-#include "ui/views/controls/button/toggle_button.h"
-#include "ui/views/controls/image_view.h"
-#include "ui/views/controls/scroll_view.h"
-#include "ui/views/layout/box_layout.h"
-#include "ui/views/view_utils.h"
-
-using device::mojom::BluetoothDeviceInfo;
-using device::mojom::BluetoothSystem;
-
-namespace ash {
-namespace {
-
-const int kDisabledPanelLabelBaselineY = 20;
-const int kEnterpriseManagedIconSizeDip = 20;
-
-// Returns corresponding device type icons for given Bluetooth device types and
-// connection states.
-const gfx::VectorIcon& GetBluetoothDeviceIcon(
-    BluetoothDeviceInfo::DeviceType device_type,
-    BluetoothDeviceInfo::ConnectionState connection_state) {
-  switch (device_type) {
-    case BluetoothDeviceInfo::DeviceType::kComputer:
-      return ash::kSystemMenuComputerLegacyIcon;
-    case BluetoothDeviceInfo::DeviceType::kPhone:
-      return ash::kSystemMenuPhoneLegacyIcon;
-    case BluetoothDeviceInfo::DeviceType::kAudio:
-    case BluetoothDeviceInfo::DeviceType::kCarAudio:
-      return ash::kSystemMenuHeadsetLegacyIcon;
-    case BluetoothDeviceInfo::DeviceType::kVideo:
-      return ash::kSystemMenuVideocamLegacyIcon;
-    case BluetoothDeviceInfo::DeviceType::kJoystick:
-    case BluetoothDeviceInfo::DeviceType::kGamepad:
-      return ash::kSystemMenuGamepadLegacyIcon;
-    case BluetoothDeviceInfo::DeviceType::kKeyboard:
-    case BluetoothDeviceInfo::DeviceType::kKeyboardMouseCombo:
-      return ash::kSystemMenuKeyboardLegacyIcon;
-    case BluetoothDeviceInfo::DeviceType::kTablet:
-      return ash::kSystemMenuTabletLegacyIcon;
-    case BluetoothDeviceInfo::DeviceType::kMouse:
-      return ash::kSystemMenuMouseLegacyIcon;
-    case BluetoothDeviceInfo::DeviceType::kModem:
-    case BluetoothDeviceInfo::DeviceType::kPeripheral:
-      return ash::kSystemMenuBluetoothLegacyIcon;
-    default:
-      return connection_state ==
-                     BluetoothDeviceInfo::ConnectionState::kConnected
-                 ? ash::kSystemMenuBluetoothConnectedLegacyIcon
-                 : ash::kSystemMenuBluetoothLegacyIcon;
-  }
-}
-
-views::View* CreateDisabledPanel() {
-  views::View* container = new views::View;
-  auto box_layout = std::make_unique<views::BoxLayout>(
-      views::BoxLayout::Orientation::kVertical);
-  box_layout->set_main_axis_alignment(
-      views::BoxLayout::MainAxisAlignment::kCenter);
-  container->SetLayoutManager(std::move(box_layout));
-
-  auto* color_provider = AshColorProvider::Get();
-  auto* image_view =
-      container->AddChildView(std::make_unique<views::ImageView>());
-  image_view->SetImage(gfx::CreateVectorIcon(
-      kSystemMenuBluetoothDisabledIcon,
-      ColorUtil::GetDisabledColor(color_provider->GetContentLayerColor(
-          AshColorProvider::ContentLayerType::kIconColorPrimary))));
-  image_view->SetVerticalAlignment(views::ImageView::Alignment::kTrailing);
-
-  auto* label = container->AddChildView(std::make_unique<views::Label>(
-      l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_BLUETOOTH_DISABLED)));
-  label->SetEnabledColor(
-      ColorUtil::GetDisabledColor(color_provider->GetContentLayerColor(
-          AshColorProvider::ContentLayerType::kTextColorPrimary)));
-  TrayPopupUtils::SetLabelFontList(
-      label, TrayPopupUtils::FontStyle::kDetailedViewLabel);
-  label->SetBorder(views::CreateEmptyBorder(gfx::Insets::TLBR(
-      kDisabledPanelLabelBaselineY - label->GetBaseline(), 0, 0, 0)));
-
-  // Make top padding of the icon equal to the height of the label so that the
-  // icon is vertically aligned to center of the container.
-  image_view->SetBorder(views::CreateEmptyBorder(
-      gfx::Insets::TLBR(label->GetPreferredSize().height(), 0, 0, 0)));
-  return container;
-}
-
-void LogUserBluetoothEvent(const BluetoothAddress& device_address) {
-  ml::UserSettingsEventLogger* logger = ml::UserSettingsEventLogger::Get();
-  if (logger) {
-    logger->LogBluetoothUkmEvent(device_address);
-  }
-}
-
-HoverHighlightView* GetScrollListItemForDevice(
-    const std::unordered_map<HoverHighlightView*, BluetoothAddress>& device_map,
-    const BluetoothAddress& address) {
-  for (const auto& view_and_address : device_map) {
-    if (view_and_address.second == address)
-      return view_and_address.first;
-  }
-  return nullptr;
-}
-
-}  // namespace
-
-BluetoothDetailedViewLegacy::BluetoothDetailedViewLegacy(
-    DetailedViewDelegate* delegate,
-    LoginStatus login)
-    : TrayDetailedView(delegate), login_(login) {
-  CreateItems();
-  device::RecordUiSurfaceDisplayed(
-      device::BluetoothUiSurface::kBluetoothQuickSettings);
-}
-
-BluetoothDetailedViewLegacy::~BluetoothDetailedViewLegacy() = default;
-
-void BluetoothDetailedViewLegacy::ShowLoadingIndicator() {
-  // Setting a value of -1 gives progress_bar an infinite-loading behavior.
-  ShowProgress(-1, true);
-}
-
-void BluetoothDetailedViewLegacy::HideLoadingIndicator() {
-  ShowProgress(0, false);
-}
-
-void BluetoothDetailedViewLegacy::ShowBluetoothDisabledPanel() {
-  device_map_.clear();
-  paired_devices_heading_ = nullptr;
-  unpaired_devices_heading_ = nullptr;
-  bluetooth_discovering_label_ = nullptr;
-  scroll_content()->RemoveAllChildViews();
-
-  DCHECK(scroller());
-  if (!disabled_panel_) {
-    disabled_panel_ = CreateDisabledPanel();
-    // Insert |disabled_panel_| before the scroller, since the scroller will
-    // have unnecessary bottom border when it is not the last child.
-    AddChildViewAt(disabled_panel_, GetIndexOf(scroller()).value());
-    // |disabled_panel_| need to fill the remaining space below the title row
-    // so that the inner contents of |disabled_panel_| are placed properly.
-    box_layout()->SetFlexForView(disabled_panel_, 1);
-  }
-
-  disabled_panel_->SetVisible(true);
-  scroller()->SetVisible(false);
-
-  Layout();
-}
-
-void BluetoothDetailedViewLegacy::HideBluetoothDisabledPanel() {
-  DCHECK(scroller());
-  if (disabled_panel_)
-    disabled_panel_->SetVisible(false);
-  scroller()->SetVisible(true);
-
-  Layout();
-}
-
-bool BluetoothDetailedViewLegacy::IsDeviceScrollListEmpty() const {
-  return device_map_.empty();
-}
-
-void BluetoothDetailedViewLegacy::UpdateDeviceScrollList(
-    const BluetoothDeviceList& connected_devices,
-    const BluetoothDeviceList& connecting_devices,
-    const BluetoothDeviceList& paired_not_connected_devices,
-    const BluetoothDeviceList& discovered_not_paired_devices) {
-  connecting_devices_.clear();
-  for (const auto& device : connecting_devices)
-    connecting_devices_.push_back(device->Clone());
-
-  paired_not_connected_devices_.clear();
-  for (const auto& device : paired_not_connected_devices)
-    paired_not_connected_devices_.push_back(device->Clone());
-
-  // Keep track of previous device_map_ so that existing scroll list
-  // item views can be re-used. This is required for a11y so that
-  // keyboard focus and screen-reader call outs are not disrupted
-  // by frequent device list updates.
-  std::unordered_map<HoverHighlightView*, BluetoothAddress> old_device_map =
-      device_map_;
-  device_map_.clear();
-
-  // Add paired devices and their section header to the list.
-  bool has_paired_devices = !connected_devices.empty() ||
-                            !connecting_devices.empty() ||
-                            !paired_not_connected_devices.empty();
-  size_t index = 0;
-  if (has_paired_devices) {
-    paired_devices_heading_ =
-        AddSubHeading(IDS_ASH_STATUS_TRAY_BLUETOOTH_PAIRED_DEVICES,
-                      paired_devices_heading_, index++);
-    index = AddSameTypeDevicesToScrollList(connected_devices, old_device_map,
-                                           index, true, true);
-    index = AddSameTypeDevicesToScrollList(connecting_devices, old_device_map,
-                                           index, true, false);
-    index = AddSameTypeDevicesToScrollList(paired_not_connected_devices,
-                                           old_device_map, index, false, false);
-  } else if (paired_devices_heading_) {
-    scroll_content()->RemoveChildViewT(paired_devices_heading_);
-    paired_devices_heading_ = nullptr;
-  }
-
-  // Add unpaired devices to the list. If at least one paired device is
-  // present, also add a section header above the unpaired devices.
-  if (!discovered_not_paired_devices.empty()) {
-    if (has_paired_devices) {
-      unpaired_devices_heading_ =
-          AddSubHeading(IDS_ASH_STATUS_TRAY_BLUETOOTH_UNPAIRED_DEVICES,
-                        unpaired_devices_heading_, index++);
-    }
-    index = AddSameTypeDevicesToScrollList(discovered_not_paired_devices,
-                                           old_device_map, index, false, false);
-  }
-
-  if (unpaired_devices_heading_ &&
-      (discovered_not_paired_devices.empty() || !has_paired_devices)) {
-    scroll_content()->RemoveChildViewT(unpaired_devices_heading_);
-    unpaired_devices_heading_ = nullptr;
-  }
-
-  // Show user Bluetooth state if there is no bluetooth devices in list.
-  if (device_map_.empty()) {
-    if (!bluetooth_discovering_label_) {
-      bluetooth_discovering_label_ =
-          new TrayInfoLabel(IDS_ASH_STATUS_TRAY_BLUETOOTH_DISCOVERING);
-      scroll_content()->AddChildViewAt(bluetooth_discovering_label_, index++);
-    } else {
-      scroll_content()->ReorderChildView(bluetooth_discovering_label_, index++);
-    }
-  } else if (bluetooth_discovering_label_) {
-    scroll_content()->RemoveChildViewT(bluetooth_discovering_label_);
-    bluetooth_discovering_label_ = nullptr;
-  }
-
-  // Remove views for devices from old_device_map that are not in device_map_.
-  for (auto& view_and_address : old_device_map) {
-    if (device_map_.find(view_and_address.first) == device_map_.end()) {
-      scroll_content()->RemoveChildViewT(view_and_address.first);
-    }
-  }
-
-  scroll_content()->InvalidateLayout();
-
-  Layout();
-}
-
-void BluetoothDetailedViewLegacy::SetToggleIsOn(bool is_on) {
-  if (toggle_)
-    toggle_->AnimateIsOn(is_on);
-}
-
-const char* BluetoothDetailedViewLegacy::GetClassName() const {
-  return "BluetoothDetailedViewLegacy";
-}
-
-void BluetoothDetailedViewLegacy::CreateItems() {
-  CreateScrollableList();
-  scroll_content()->SetID(kScrollContentID);
-  CreateTitleRow(IDS_ASH_STATUS_TRAY_BLUETOOTH);
-}
-
-TriView* BluetoothDetailedViewLegacy::AddSubHeading(int text_id,
-                                                    TriView* sub_heading_view,
-                                                    size_t child_index) {
-  if (!sub_heading_view) {
-    sub_heading_view = AddScrollListSubHeader(text_id);
-  }
-  scroll_content()->ReorderChildView(sub_heading_view, child_index);
-  return sub_heading_view;
-}
-
-size_t BluetoothDetailedViewLegacy::AddSameTypeDevicesToScrollList(
-    const BluetoothDeviceList& list,
-    const std::unordered_map<HoverHighlightView*, BluetoothAddress>&
-        old_device_list,
-    size_t child_index,
-    bool highlight,
-    bool checked) {
-  for (const auto& device : list) {
-    const gfx::VectorIcon& icon =
-        GetBluetoothDeviceIcon(device->device_type, device->connection_state);
-    std::u16string device_name =
-        device::GetBluetoothDeviceNameForDisplay(device);
-    HoverHighlightView* container =
-        GetScrollListItemForDevice(old_device_list, device->address);
-    if (!container) {
-      container = AddScrollListItem(icon, device_name);
-    } else {
-      container->text_label()->SetText(device_name);
-
-      DCHECK(views::IsViewClass<views::ImageView>(container->left_view()));
-      views::ImageView* left_icon =
-          static_cast<views::ImageView*>(container->left_view());
-      left_icon->SetImage(gfx::CreateVectorIcon(
-          icon, AshColorProvider::Get()->GetContentLayerColor(
-                    AshColorProvider::ContentLayerType::kIconColorPrimary)));
-    }
-
-    if (device->is_blocked_by_policy) {
-      if (container->right_view()) {
-        container->SetRightViewVisible(true);
-      } else {
-        gfx::ImageSkia enterprise_managed_icon = CreateVectorIcon(
-            chromeos::kEnterpriseIcon, kEnterpriseManagedIconSizeDip,
-            gfx::kGoogleGrey100);
-        container->AddRightIcon(enterprise_managed_icon,
-                                enterprise_managed_icon.width());
-      }
-    } else if (container->right_view()) {
-      container->SetRightViewVisible(false);
-    }
-
-    container->SetAccessibleName(
-        device::GetBluetoothDeviceLabelForAccessibility(device));
-    switch (device->connection_state) {
-      case BluetoothDeviceInfo::ConnectionState::kNotConnected:
-        break;
-      case BluetoothDeviceInfo::ConnectionState::kConnecting:
-        SetupConnectingScrollListItem(container);
-        break;
-      case BluetoothDeviceInfo::ConnectionState::kConnected:
-        SetupConnectedScrollListItem(
-            container, device->battery_info
-                           ? absl::make_optional<uint8_t>(
-                                 device->battery_info->battery_percentage)
-                           : absl::nullopt);
-        break;
-    }
-    scroll_content()->ReorderChildView(container, child_index++);
-    device_map_[container] = device->address;
-  }
-  return child_index;
-}
-
-bool BluetoothDetailedViewLegacy::FoundDevice(
-    const BluetoothAddress& device_address,
-    const BluetoothDeviceList& device_list) const {
-  for (const auto& device : device_list) {
-    if (device->address == device_address)
-      return true;
-  }
-  return false;
-}
-
-void BluetoothDetailedViewLegacy::UpdateClickedDevice(
-    const BluetoothAddress& device_address,
-    HoverHighlightView* item_container) {
-  if (FoundDevice(device_address, paired_not_connected_devices_)) {
-    SetupConnectingScrollListItem(item_container);
-    scroll_content()->SizeToPreferredSize();
-    scroller()->Layout();
-  }
-}
-
-void BluetoothDetailedViewLegacy::ToggleButtonPressed() {
-  Shell::Get()->tray_bluetooth_helper()->SetBluetoothEnabled(
-      toggle_->GetIsOn());
-}
-
-void BluetoothDetailedViewLegacy::ShowSettings() {
-  if (TrayPopupUtils::CanOpenWebUISettings()) {
-    CloseBubble();  // Deletes |this|.
-    Shell::Get()->system_tray_model()->client()->ShowBluetoothSettings();
-  }
-}
-
-absl::optional<BluetoothAddress>
-BluetoothDetailedViewLegacy::GetFocusedDeviceAddress() const {
-  for (const auto& view_and_address : device_map_) {
-    if (view_and_address.first->HasFocus())
-      return view_and_address.second;
-  }
-  return absl::nullopt;
-}
-
-void BluetoothDetailedViewLegacy::FocusDeviceByAddress(
-    const BluetoothAddress& address) const {
-  for (auto& view_and_address : device_map_) {
-    if (view_and_address.second == address) {
-      view_and_address.first->RequestFocus();
-      return;
-    }
-  }
-}
-
-void BluetoothDetailedViewLegacy::HandleViewClicked(views::View* view) {
-  TrayBluetoothHelper* helper = Shell::Get()->tray_bluetooth_helper();
-  if (helper->GetBluetoothState() != BluetoothSystem::State::kPoweredOn)
-    return;
-
-  HoverHighlightView* container = static_cast<HoverHighlightView*>(view);
-  std::unordered_map<HoverHighlightView*, BluetoothAddress>::iterator find;
-  find = device_map_.find(container);
-  if (find == device_map_.end())
-    return;
-
-  const BluetoothAddress& device_address = find->second;
-  if (FoundDevice(device_address, connecting_devices_))
-    return;
-
-  UpdateClickedDevice(device_address, container);
-  LogUserBluetoothEvent(device_address);
-  helper->ConnectToBluetoothDevice(device_address);
-}
-
-void BluetoothDetailedViewLegacy::CreateExtraTitleRowButtons() {
-  if (login_ == LoginStatus::LOCKED)
-    return;
-
-  DCHECK(!toggle_);
-  DCHECK(!settings_);
-
-  tri_view()->SetContainerVisible(TriView::Container::END, true);
-
-  toggle_ = new TrayToggleButton(
-      base::BindRepeating(&BluetoothDetailedViewLegacy::ToggleButtonPressed,
-                          base::Unretained(this)),
-      IDS_ASH_STATUS_TRAY_BLUETOOTH);
-  toggle_->SetIsOn(Shell::Get()->tray_bluetooth_helper()->GetBluetoothState() ==
-                   BluetoothSystem::State::kPoweredOn);
-  tri_view()->AddView(TriView::Container::END, toggle_);
-
-  settings_ = CreateSettingsButton(
-      base::BindRepeating(&BluetoothDetailedViewLegacy::ShowSettings,
-                          base::Unretained(this)),
-      IDS_ASH_STATUS_TRAY_BLUETOOTH_SETTINGS);
-  tri_view()->AddView(TriView::Container::END, settings_);
-}
-
-}  // namespace ash
diff --git a/ash/system/bluetooth/bluetooth_detailed_view_legacy.h b/ash/system/bluetooth/bluetooth_detailed_view_legacy.h
deleted file mode 100644
index 631c66d4..0000000
--- a/ash/system/bluetooth/bluetooth_detailed_view_legacy.h
+++ /dev/null
@@ -1,128 +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 ASH_SYSTEM_BLUETOOTH_BLUETOOTH_DETAILED_VIEW_LEGACY_H_
-#define ASH_SYSTEM_BLUETOOTH_BLUETOOTH_DETAILED_VIEW_LEGACY_H_
-
-#include <unordered_map>
-
-#include "ash/login_status.h"
-#include "ash/system/bluetooth/tray_bluetooth_helper.h"
-#include "ash/system/tray/tray_detailed_view.h"
-#include "third_party/abseil-cpp/absl/types/optional.h"
-
-namespace views {
-class ToggleButton;
-}  // namespace views
-
-namespace ash {
-
-class TriView;
-class TrayInfoLabel;
-
-// TODO(crbug.com/1234138): Remove this class when the
-// |ash::features::kBluetoothRevamp| feature flag is fully launched.
-class BluetoothDetailedViewLegacy : public TrayDetailedView {
- public:
-  // ID for scroll content view. Used in testing.
-  static const int kScrollContentID = 1;
-
-  BluetoothDetailedViewLegacy(DetailedViewDelegate* delegate,
-                              LoginStatus login);
-
-  BluetoothDetailedViewLegacy(const BluetoothDetailedViewLegacy&) = delete;
-  BluetoothDetailedViewLegacy& operator=(const BluetoothDetailedViewLegacy&) =
-      delete;
-
-  ~BluetoothDetailedViewLegacy() override;
-
-  // Shows/hides the loading indicator below the header.
-  void ShowLoadingIndicator();
-  void HideLoadingIndicator();
-
-  // Shows/hides the container of the message "Bluetooth is disabled". It should
-  // be shown instead of the device list when Bluetooth is disabled.
-  void ShowBluetoothDisabledPanel();
-  void HideBluetoothDisabledPanel();
-
-  // Returns true if the device list has any devices, false otherwise.
-  bool IsDeviceScrollListEmpty() const;
-
-  // Updates the device list.
-  void UpdateDeviceScrollList(
-      const BluetoothDeviceList& connected_devices,
-      const BluetoothDeviceList& connecting_devices,
-      const BluetoothDeviceList& paired_not_connected_devices,
-      const BluetoothDeviceList& discovered_not_paired_devices);
-
-  // Sets the state of the toggle in the header.
-  void SetToggleIsOn(bool is_on);
-
-  // views::View:
-  const char* GetClassName() const override;
-
- private:
-  void CreateItems();
-
-  // Adds subheading with given |text_id| at given |child_index|. If
-  // |sub_heading_view| is nullptr, then a new view is created. Returns
-  // |sub_heading_view| or the newly created view.
-  TriView* AddSubHeading(int text_id,
-                         TriView* sub_heading_view,
-                         size_t child_index);
-
-  // Adds devices from |list| into the scroll list at given |child_index|.
-  // To avoid disrupting a11y, list items are re-used from |old_device_list| if
-  // it exists. Returns index position for next scroll list item.
-  size_t AddSameTypeDevicesToScrollList(
-      const BluetoothDeviceList& list,
-      const std::unordered_map<HoverHighlightView*, BluetoothAddress>&
-          old_device_list,
-      size_t child_index,
-      bool highlight,
-      bool checked);
-
-  // Returns true if the device with |device_id| is found in |device_list|.
-  bool FoundDevice(const BluetoothAddress& device_id,
-                   const BluetoothDeviceList& device_list) const;
-
-  // Updates UI of the clicked bluetooth device to show it is being connected
-  // or disconnected if such an operation is going to be performed underway.
-  void UpdateClickedDevice(const BluetoothAddress& device_id,
-                           HoverHighlightView* item_container);
-
-  void ToggleButtonPressed();
-
-  void ShowSettings();
-
-  absl::optional<BluetoothAddress> GetFocusedDeviceAddress() const;
-  void FocusDeviceByAddress(const BluetoothAddress& address) const;
-
-  // TrayDetailedView:
-  void HandleViewClicked(views::View* view) override;
-  void CreateExtraTitleRowButtons() override;
-
-  // TODO(jamescook): Don't cache this.
-  LoginStatus login_;
-
-  std::unordered_map<HoverHighlightView*, BluetoothAddress> device_map_;
-
-  BluetoothDeviceList connecting_devices_;
-  BluetoothDeviceList paired_not_connected_devices_;
-
-  views::ToggleButton* toggle_ = nullptr;
-  views::Button* settings_ = nullptr;
-
-  TriView* paired_devices_heading_ = nullptr;
-  TriView* unpaired_devices_heading_ = nullptr;
-  TrayInfoLabel* bluetooth_discovering_label_ = nullptr;
-
-  // The container of the message "Bluetooth is disabled" and an icon. It should
-  // be shown instead of Bluetooth device list when Bluetooth is disabled.
-  views::View* disabled_panel_ = nullptr;
-};
-
-}  // namespace ash
-
-#endif  // ASH_SYSTEM_BLUETOOTH_BLUETOOTH_DETAILED_VIEW_LEGACY_H_
diff --git a/ash/system/bluetooth/bluetooth_detailed_view_unittest.cc b/ash/system/bluetooth/bluetooth_detailed_view_unittest.cc
index 0764cff..6a3f696 100644
--- a/ash/system/bluetooth/bluetooth_detailed_view_unittest.cc
+++ b/ash/system/bluetooth/bluetooth_detailed_view_unittest.cc
@@ -6,7 +6,6 @@
 
 #include <memory>
 
-#include "ash/constants/ash_features.h"
 #include "ash/public/cpp/test/test_system_tray_client.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/style/icon_button.h"
@@ -16,7 +15,6 @@
 #include "ash/system/tray/detailed_view_delegate.h"
 #include "ash/test/ash_test_base.h"
 #include "base/run_loop.h"
-#include "base/test/scoped_feature_list.h"
 #include "mojo/public/cpp/bindings/clone_traits.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/events/test/event_generator.h"
@@ -106,8 +104,6 @@
   void SetUp() override {
     AshTestBase::SetUp();
 
-    feature_list_.InitAndEnableFeature(features::kBluetoothRevamp);
-
     std::unique_ptr<BluetoothDetailedView> bluetooth_detailed_view =
         BluetoothDetailedView::Factory::Create(
             &fake_detailed_view_delegate_,
@@ -174,7 +170,6 @@
         static_cast<int>(id)));
   }
 
-  base::test::ScopedFeatureList feature_list_;
   std::unique_ptr<views::Widget> widget_;
   BluetoothDetailedView* bluetooth_detailed_view_;
   FakeBluetoothDetailedViewDelegate fake_bluetooth_detailed_view_delegate_;
diff --git a/ash/system/bluetooth/bluetooth_device_list_controller_impl.cc b/ash/system/bluetooth/bluetooth_device_list_controller_impl.cc
index 8b01775..59c5fd78 100644
--- a/ash/system/bluetooth/bluetooth_device_list_controller_impl.cc
+++ b/ash/system/bluetooth/bluetooth_device_list_controller_impl.cc
@@ -4,7 +4,6 @@
 
 #include "ash/system/bluetooth/bluetooth_device_list_controller_impl.h"
 
-#include "ash/constants/ash_features.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/system/bluetooth/bluetooth_detailed_view.h"
 #include "ash/system/bluetooth/bluetooth_device_list_item_view.h"
@@ -42,9 +41,7 @@
 
 BluetoothDeviceListControllerImpl::BluetoothDeviceListControllerImpl(
     BluetoothDetailedView* bluetooth_detailed_view)
-    : bluetooth_detailed_view_(bluetooth_detailed_view) {
-  DCHECK(ash::features::IsBluetoothRevampEnabled());
-}
+    : bluetooth_detailed_view_(bluetooth_detailed_view) {}
 
 BluetoothDeviceListControllerImpl::~BluetoothDeviceListControllerImpl() =
     default;
diff --git a/ash/system/bluetooth/bluetooth_device_list_controller_unittest.cc b/ash/system/bluetooth/bluetooth_device_list_controller_unittest.cc
index ccd45edd..7a319a5d 100644
--- a/ash/system/bluetooth/bluetooth_device_list_controller_unittest.cc
+++ b/ash/system/bluetooth/bluetooth_device_list_controller_unittest.cc
@@ -8,14 +8,12 @@
 #include <string>
 #include <vector>
 
-#include "ash/constants/ash_features.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/system/bluetooth/bluetooth_detailed_view.h"
 #include "ash/system/bluetooth/bluetooth_device_list_item_view.h"
 #include "ash/system/bluetooth/fake_bluetooth_detailed_view.h"
 #include "ash/system/tray/tri_view.h"
 #include "ash/test/ash_test_base.h"
-#include "base/test/scoped_feature_list.h"
 #include "chromeos/ash/services/bluetooth_config/public/mojom/cros_bluetooth_config.mojom.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/views/controls/label.h"
@@ -40,8 +38,6 @@
   void SetUp() override {
     AshTestBase::SetUp();
 
-    feature_list_.InitAndEnableFeature(features::kBluetoothRevamp);
-
     fake_bluetooth_detailed_view_ =
         std::make_unique<FakeBluetoothDetailedView>(/*delegate=*/nullptr);
     bluetooth_device_list_controller_impl_ =
@@ -185,7 +181,6 @@
     return nullptr;
   }
 
-  base::test::ScopedFeatureList feature_list_;
   std::unique_ptr<FakeBluetoothDetailedView> fake_bluetooth_detailed_view_;
   std::unique_ptr<BluetoothDeviceListControllerImpl>
       bluetooth_device_list_controller_impl_;
diff --git a/ash/system/bluetooth/bluetooth_device_list_item_battery_view.cc b/ash/system/bluetooth/bluetooth_device_list_item_battery_view.cc
index 3c6c2f8..01128f1 100644
--- a/ash/system/bluetooth/bluetooth_device_list_item_battery_view.cc
+++ b/ash/system/bluetooth/bluetooth_device_list_item_battery_view.cc
@@ -4,7 +4,6 @@
 
 #include "ash/system/bluetooth/bluetooth_device_list_item_battery_view.h"
 
-#include "ash/constants/ash_features.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/style/ash_color_id.h"
 #include "ash/style/ash_color_provider.h"
@@ -42,8 +41,6 @@
 }  // namespace
 
 BluetoothDeviceListItemBatteryView::BluetoothDeviceListItemBatteryView() {
-  DCHECK(ash::features::IsBluetoothRevampEnabled());
-
   auto box_layout = std::make_unique<views::BoxLayout>(
       views::BoxLayout::Orientation::kHorizontal);
   box_layout->set_cross_axis_alignment(
diff --git a/ash/system/bluetooth/bluetooth_device_list_item_battery_view_unittest.cc b/ash/system/bluetooth/bluetooth_device_list_item_battery_view_unittest.cc
index 4629fce..3447392 100644
--- a/ash/system/bluetooth/bluetooth_device_list_item_battery_view_unittest.cc
+++ b/ash/system/bluetooth/bluetooth_device_list_item_battery_view_unittest.cc
@@ -4,12 +4,10 @@
 
 #include "ash/system/bluetooth/bluetooth_device_list_item_battery_view.h"
 
-#include "ash/constants/ash_features.h"
 #include "ash/resources/vector_icons/vector_icons.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/test/ash_test_base.h"
 #include "base/strings/string_number_conversions.h"
-#include "base/test/scoped_feature_list.h"
 #include "chromeos/ash/services/bluetooth_config/public/mojom/cros_bluetooth_config.mojom.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/gfx/image/image_skia.h"
@@ -25,8 +23,6 @@
   void SetUp() override {
     AshTestBase::SetUp();
 
-    feature_list_.InitAndEnableFeature(features::kBluetoothRevamp);
-
     widget_ = CreateTestWidget();
     bluetooth_device_list_battery_item_ =
         std::make_unique<BluetoothDeviceListItemBatteryView>();
@@ -80,7 +76,6 @@
         bluetooth_device_list_battery_item()->children().at(1));
   }
 
-  base::test::ScopedFeatureList feature_list_;
   std::unique_ptr<views::Widget> widget_;
   std::unique_ptr<BluetoothDeviceListItemBatteryView>
       bluetooth_device_list_battery_item_;
diff --git a/ash/system/bluetooth/bluetooth_device_list_item_multiple_battery_view.cc b/ash/system/bluetooth/bluetooth_device_list_item_multiple_battery_view.cc
index 6703ba16..903eb5216 100644
--- a/ash/system/bluetooth/bluetooth_device_list_item_multiple_battery_view.cc
+++ b/ash/system/bluetooth/bluetooth_device_list_item_multiple_battery_view.cc
@@ -4,7 +4,6 @@
 
 #include "ash/system/bluetooth/bluetooth_device_list_item_multiple_battery_view.h"
 
-#include "ash/constants/ash_features.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/style/ash_color_provider.h"
 #include "ash/system/tray/tray_constants.h"
@@ -23,8 +22,6 @@
 
 BluetoothDeviceListItemMultipleBatteryView::
     BluetoothDeviceListItemMultipleBatteryView() {
-  DCHECK(ash::features::IsBluetoothRevampEnabled());
-
   auto box_layout = std::make_unique<views::BoxLayout>(
       views::BoxLayout::Orientation::kHorizontal);
   box_layout->set_cross_axis_alignment(
diff --git a/ash/system/bluetooth/bluetooth_device_list_item_multiple_battery_view_unittest.cc b/ash/system/bluetooth/bluetooth_device_list_item_multiple_battery_view_unittest.cc
index 1c5efcff..e0582322 100644
--- a/ash/system/bluetooth/bluetooth_device_list_item_multiple_battery_view_unittest.cc
+++ b/ash/system/bluetooth/bluetooth_device_list_item_multiple_battery_view_unittest.cc
@@ -4,12 +4,10 @@
 
 #include "ash/system/bluetooth/bluetooth_device_list_item_multiple_battery_view.h"
 
-#include "ash/constants/ash_features.h"
 #include "ash/resources/vector_icons/vector_icons.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/test/ash_test_base.h"
 #include "base/strings/string_number_conversions.h"
-#include "base/test/scoped_feature_list.h"
 #include "chromeos/ash/services/bluetooth_config/public/mojom/cros_bluetooth_config.mojom.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
 #include "ui/base/l10n/l10n_util.h"
@@ -61,8 +59,6 @@
   void SetUp() override {
     AshTestBase::SetUp();
 
-    feature_list_.InitAndEnableFeature(features::kBluetoothRevamp);
-
     widget_ = CreateTestWidget();
     bluetooth_device_list_multiple_battery_item_ =
         std::make_unique<BluetoothDeviceListItemMultipleBatteryView>();
@@ -106,7 +102,6 @@
   }
 
  private:
-  base::test::ScopedFeatureList feature_list_;
   std::unique_ptr<views::Widget> widget_;
   std::unique_ptr<BluetoothDeviceListItemMultipleBatteryView>
       bluetooth_device_list_multiple_battery_item_;
diff --git a/ash/system/bluetooth/bluetooth_device_list_item_view.cc b/ash/system/bluetooth/bluetooth_device_list_item_view.cc
index d1f138e0..8152da9 100644
--- a/ash/system/bluetooth/bluetooth_device_list_item_view.cc
+++ b/ash/system/bluetooth/bluetooth_device_list_item_view.cc
@@ -6,7 +6,6 @@
 
 #include <string>
 
-#include "ash/constants/ash_features.h"
 #include "ash/resources/vector_icons/vector_icons.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/style/ash_color_provider.h"
@@ -165,9 +164,7 @@
 
 BluetoothDeviceListItemView::BluetoothDeviceListItemView(
     ViewClickListener* listener)
-    : HoverHighlightView(listener) {
-  DCHECK(ash::features::IsBluetoothRevampEnabled());
-}
+    : HoverHighlightView(listener) {}
 
 BluetoothDeviceListItemView::~BluetoothDeviceListItemView() = default;
 
diff --git a/ash/system/bluetooth/bluetooth_device_list_item_view_unittest.cc b/ash/system/bluetooth/bluetooth_device_list_item_view_unittest.cc
index 8fbb258..c7e7b4f 100644
--- a/ash/system/bluetooth/bluetooth_device_list_item_view_unittest.cc
+++ b/ash/system/bluetooth/bluetooth_device_list_item_view_unittest.cc
@@ -8,7 +8,6 @@
 #include <memory>
 #include <utility>
 
-#include "ash/constants/ash_features.h"
 #include "ash/resources/vector_icons/vector_icons.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/style/ash_color_provider.h"
@@ -19,7 +18,6 @@
 #include "base/containers/flat_map.h"
 #include "base/strings/strcat.h"
 #include "base/strings/utf_string_conversions.h"
-#include "base/test/scoped_feature_list.h"
 #include "chromeos/ash/services/bluetooth_config/public/mojom/cros_bluetooth_config.mojom.h"
 #include "chromeos/strings/grit/chromeos_strings.h"
 #include "chromeos/ui/vector_icons/vector_icons.h"
@@ -107,8 +105,6 @@
   void SetUp() override {
     AshTestBase::SetUp();
 
-    feature_list_.InitAndEnableFeature(features::kBluetoothRevamp);
-
     fake_bluetooth_detailed_view_ =
         std::make_unique<FakeBluetoothDetailedView>(/*delegate=*/nullptr);
     std::unique_ptr<BluetoothDeviceListItemView> bluetooth_device_list_item =
@@ -141,7 +137,6 @@
   }
 
  private:
-  base::test::ScopedFeatureList feature_list_;
   std::unique_ptr<views::Widget> widget_;
   std::unique_ptr<FakeBluetoothDetailedView> fake_bluetooth_detailed_view_;
   BluetoothDeviceListItemView* bluetooth_device_list_item_;
diff --git a/ash/system/bluetooth/bluetooth_device_status_ui_handler.cc b/ash/system/bluetooth/bluetooth_device_status_ui_handler.cc
index 281b5f2d..2cb532aa 100644
--- a/ash/system/bluetooth/bluetooth_device_status_ui_handler.cc
+++ b/ash/system/bluetooth/bluetooth_device_status_ui_handler.cc
@@ -4,7 +4,6 @@
 
 #include "ash/system/bluetooth/bluetooth_device_status_ui_handler.h"
 
-#include "ash/constants/ash_features.h"
 #include "ash/constants/notifier_catalogs.h"
 #include "ash/public/cpp/bluetooth_config_service.h"
 #include "ash/public/cpp/system/toast_data.h"
@@ -29,8 +28,6 @@
 }  // namespace
 
 BluetoothDeviceStatusUiHandler::BluetoothDeviceStatusUiHandler() {
-  DCHECK(ash::features::IsBluetoothRevampEnabled());
-
   // Asynchronously bind to CrosBluetoothConfig so that we don't want to attempt
   // to bind to it before it has initialized.
   base::ThreadTaskRunnerHandle::Get()->PostTask(
diff --git a/ash/system/bluetooth/bluetooth_device_status_ui_handler_unittest.cc b/ash/system/bluetooth/bluetooth_device_status_ui_handler_unittest.cc
index bd795cf..1f9b6454 100644
--- a/ash/system/bluetooth/bluetooth_device_status_ui_handler_unittest.cc
+++ b/ash/system/bluetooth/bluetooth_device_status_ui_handler_unittest.cc
@@ -4,12 +4,10 @@
 
 #include "ash/system/bluetooth/bluetooth_device_status_ui_handler.h"
 
-#include "ash/constants/ash_features.h"
 #include "ash/public/cpp/system/toast_manager.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/test/ash_test_base.h"
 #include "ash/test/ash_test_helper.h"
-#include "base/test/scoped_feature_list.h"
 #include "chromeos/ash/services/bluetooth_config/fake_bluetooth_device_status_notifier.h"
 #include "chromeos/ash/services/bluetooth_config/public/mojom/cros_bluetooth_config.mojom.h"
 #include "testing/gmock/include/gmock/gmock.h"
@@ -35,7 +33,6 @@
  public:
   void SetUp() override {
     AshTestBase::SetUp();
-    feature_list_.InitAndEnableFeature(features::kBluetoothRevamp);
     device_status_ui_handler_ =
         std::make_unique<NiceMock<MockBluetoothDeviceStatusUiHandler>>();
     base::RunLoop().RunUntilIdle();
@@ -78,7 +75,6 @@
   }
 
   std::unique_ptr<MockBluetoothDeviceStatusUiHandler> device_status_ui_handler_;
-  base::test::ScopedFeatureList feature_list_;
 };
 
 TEST_F(BluetoothDeviceStatusUiHandlerTest, PairedDevice) {
diff --git a/ash/system/bluetooth/bluetooth_disabled_detailed_view.cc b/ash/system/bluetooth/bluetooth_disabled_detailed_view.cc
index 0ba8cbe..b0f72267 100644
--- a/ash/system/bluetooth/bluetooth_disabled_detailed_view.cc
+++ b/ash/system/bluetooth/bluetooth_disabled_detailed_view.cc
@@ -6,7 +6,6 @@
 
 #include <memory>
 
-#include "ash/constants/ash_features.h"
 #include "ash/resources/vector_icons/vector_icons.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/style/ash_color_provider.h"
@@ -35,8 +34,6 @@
 }  // namespace
 
 BluetoothDisabledDetailedView::BluetoothDisabledDetailedView() {
-  DCHECK(ash::features::IsBluetoothRevampEnabled());
-
   std::unique_ptr<BoxLayout> box_layout =
       std::make_unique<BoxLayout>(BoxLayout::Orientation::kVertical);
   box_layout->set_main_axis_alignment(BoxLayout::MainAxisAlignment::kCenter);
diff --git a/ash/system/bluetooth/bluetooth_disabled_detailed_view_unittest.cc b/ash/system/bluetooth/bluetooth_disabled_detailed_view_unittest.cc
index 8e02873e..7ebb18e 100644
--- a/ash/system/bluetooth/bluetooth_disabled_detailed_view_unittest.cc
+++ b/ash/system/bluetooth/bluetooth_disabled_detailed_view_unittest.cc
@@ -6,10 +6,8 @@
 
 #include <vector>
 
-#include "ash/constants/ash_features.h"
 #include "ash/resources/vector_icons/vector_icons.h"
 #include "ash/test/ash_test_base.h"
-#include "base/test/scoped_feature_list.h"
 #include "ui/base/models/image_model.h"
 #include "ui/gfx/geometry/point.h"
 #include "ui/gfx/geometry/rect.h"
@@ -28,8 +26,6 @@
   void SetUp() override {
     AshTestBase::SetUp();
 
-    feature_list_.InitAndEnableFeature(features::kBluetoothRevamp);
-
     widget_ = CreateTestWidget();
     container_ = widget_->GetContentsView()->AddChildView(
         std::make_unique<views::View>());
@@ -67,7 +63,6 @@
   views::View* container() { return container_; }
 
  private:
-  base::test::ScopedFeatureList feature_list_;
   std::unique_ptr<views::Widget> widget_;
   views::View* container_;
   BluetoothDisabledDetailedView* bluetooth_disabled_detailed_view_;
diff --git a/ash/system/bluetooth/bluetooth_feature_pod_controller.cc b/ash/system/bluetooth/bluetooth_feature_pod_controller.cc
index 1266145..caae4680 100644
--- a/ash/system/bluetooth/bluetooth_feature_pod_controller.cc
+++ b/ash/system/bluetooth/bluetooth_feature_pod_controller.cc
@@ -4,7 +4,6 @@
 
 #include "ash/system/bluetooth/bluetooth_feature_pod_controller.h"
 
-#include "ash/constants/ash_features.h"
 #include "ash/constants/quick_settings_catalogs.h"
 #include "ash/public/cpp/bluetooth_config_service.h"
 #include "ash/resources/vector_icons/vector_icons.h"
@@ -29,7 +28,6 @@
 BluetoothFeaturePodController::BluetoothFeaturePodController(
     UnifiedSystemTrayController* tray_controller)
     : tray_controller_(tray_controller) {
-  DCHECK(ash::features::IsBluetoothRevampEnabled());
   GetBluetoothConfigService(
       remote_cros_bluetooth_config_.BindNewPipeAndPassReceiver());
   remote_cros_bluetooth_config_->ObserveSystemProperties(
diff --git a/ash/system/bluetooth/bluetooth_feature_pod_controller_unittest.cc b/ash/system/bluetooth/bluetooth_feature_pod_controller_unittest.cc
index bddc2de..f98d3f61 100644
--- a/ash/system/bluetooth/bluetooth_feature_pod_controller_unittest.cc
+++ b/ash/system/bluetooth/bluetooth_feature_pod_controller_unittest.cc
@@ -8,7 +8,6 @@
 #include <utility>
 #include <vector>
 
-#include "ash/constants/ash_features.h"
 #include "ash/constants/quick_settings_catalogs.h"
 #include "ash/resources/vector_icons/vector_icons.h"
 #include "ash/strings/grit/ash_strings.h"
@@ -24,7 +23,6 @@
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/metrics/histogram_tester.h"
-#include "base/test/scoped_feature_list.h"
 #include "chromeos/ash/services/bluetooth_config/fake_adapter_state_controller.h"
 #include "chromeos/ash/services/bluetooth_config/fake_device_cache.h"
 #include "chromeos/ash/services/bluetooth_config/public/mojom/cros_bluetooth_config.mojom.h"
@@ -60,8 +58,6 @@
   void SetUp() override {
     AshTestBase::SetUp();
 
-    feature_list_.InitAndEnableFeature(features::kBluetoothRevamp);
-
     GetPrimaryUnifiedSystemTray()->ShowBubble();
 
     bluetooth_pod_controller_ =
@@ -186,7 +182,6 @@
   }
 
   std::unique_ptr<BluetoothFeaturePodController> bluetooth_pod_controller_;
-  base::test::ScopedFeatureList feature_list_;
 };
 
 TEST_F(BluetoothFeaturePodControllerTest,
diff --git a/ash/system/bluetooth/bluetooth_notification_controller.cc b/ash/system/bluetooth/bluetooth_notification_controller.cc
index db226fd..f92d31f9 100644
--- a/ash/system/bluetooth/bluetooth_notification_controller.cc
+++ b/ash/system/bluetooth/bluetooth_notification_controller.cc
@@ -13,17 +13,14 @@
 #include "ash/public/cpp/system/toast_data.h"
 #include "ash/public/cpp/system_tray_client.h"
 #include "ash/resources/vector_icons/vector_icons.h"
-#include "ash/services/nearby/public/cpp/nearby_client_uuids.h"
 #include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/system/model/system_tray_model.h"
 #include "ash/system/toast/toast_manager_impl.h"
-#include "ash/system/tray/tray_popup_utils.h"
 #include "base/bind.h"
 #include "base/callback.h"
 #include "base/logging.h"
-#include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "device/bluetooth/bluetooth_adapter_factory.h"
@@ -44,8 +41,6 @@
 namespace {
 
 const char kNotifierBluetooth[] = "ash.bluetooth";
-const char kPairedNotificationPrefix[] =
-    "cros_bluetooth_device_paired_notification_id-";
 
 // The BluetoothPairingNotificationDelegate handles user interaction with the
 // pairing notification and sending the confirmation, rejection or cancellation
@@ -147,29 +142,6 @@
     BluetoothNotificationController::kBluetoothDevicePairingNotificationId[] =
         "cros_bluetooth_device_pairing_notification_id";
 
-// This class handles opening the Bluetooth Settings UI when the user clicks
-// on the Paired Notification.
-class BluetoothNotificationController::BluetoothPairedNotificationDelegate
-    : public message_center::NotificationDelegate {
- public:
-  BluetoothPairedNotificationDelegate() = default;
-
-  BluetoothPairedNotificationDelegate(
-      const BluetoothPairedNotificationDelegate&) = delete;
-  BluetoothPairedNotificationDelegate& operator=(
-      const BluetoothPairedNotificationDelegate&) = delete;
-
- protected:
-  ~BluetoothPairedNotificationDelegate() override = default;
-
-  // message_center::NotificationDelegate:
-  void Click(const absl::optional<int>& button_index,
-             const absl::optional<std::u16string>& reply) override {
-    if (TrayPopupUtils::CanOpenWebUISettings())
-      Shell::Get()->system_tray_model()->client()->ShowBluetoothSettings();
-  }
-};
-
 BluetoothNotificationController::BluetoothNotificationController(
     message_center::MessageCenter* message_center)
     : message_center_(message_center) {
@@ -279,12 +251,6 @@
   NotifyPairing(device, message, true);
 }
 
-// static
-std::string BluetoothNotificationController::GetPairedNotificationId(
-    const BluetoothDevice* device) {
-  return kPairedNotificationPrefix + base::ToLowerASCII(device->GetAddress());
-}
-
 void BluetoothNotificationController::OnGetAdapter(
     scoped_refptr<BluetoothAdapter> adapter) {
   DCHECK(!adapter_.get());
@@ -363,46 +329,13 @@
     BluetoothDevice* device) {
   // Remove the currently presented pairing notification; since only one
   // pairing request is queued at a time, this is guaranteed to be the device
-  // that just became paired.
+  // that just became paired. The notification will be handled by
+  // BluetoothDeviceStatusUiHandler.
   if (message_center_->FindVisibleNotificationById(
           kBluetoothDevicePairingNotificationId)) {
     message_center_->RemoveNotification(kBluetoothDevicePairingNotificationId,
                                         false /* by_user */);
   }
-
-  // If the newly paired device is connected via a Nearby Connections client
-  // (e.g., Nearby Share), do not display this notification.
-  // TODO(crbug.com/1155669): Generalize this logic to prevent leaking Nearby
-  // implementation details.
-  for (const auto& uuid : device->GetUUIDs()) {
-    if (nearby::IsNearbyClientUuid(uuid)) {
-      return;
-    }
-  }
-
-  // If bluetooth revamp flag is on, do not show a notification, this is
-  // because notifications will be handled by BluetoothDeviceStatusUiHandler
-  // when flag is on.
-  if (ash::features::IsBluetoothRevampEnabled()) {
-    return;
-  }
-
-  std::unique_ptr<Notification> notification = CreateSystemNotification(
-      message_center::NOTIFICATION_TYPE_SIMPLE, GetPairedNotificationId(device),
-      std::u16string() /* title */,
-      l10n_util::GetStringFUTF16(IDS_ASH_STATUS_TRAY_BLUETOOTH_PAIRED,
-                                 device->GetNameForDisplay()),
-      std::u16string() /* display source */, GURL(),
-      message_center::NotifierId(
-          message_center::NotifierType::SYSTEM_COMPONENT, kNotifierBluetooth,
-          NotificationCatalogName::kBluetoothPairedDevice),
-      message_center::RichNotificationData(),
-      base::MakeRefCounted<BluetoothPairedNotificationDelegate>(),
-      kNotificationBluetoothIcon,
-      message_center::SystemNotificationWarningLevel::NORMAL);
-  message_center_->AddNotification(std::move(notification));
-  device::RecordUiSurfaceDisplayed(
-      device::BluetoothUiSurface::kPairedNotification);
 }
 
 }  // namespace ash
diff --git a/ash/system/bluetooth/bluetooth_notification_controller.h b/ash/system/bluetooth/bluetooth_notification_controller.h
index b613ac7c..36d97f0f 100644
--- a/ash/system/bluetooth/bluetooth_notification_controller.h
+++ b/ash/system/bluetooth/bluetooth_notification_controller.h
@@ -73,10 +73,6 @@
   // continually bugging the user.
   static const char kBluetoothDevicePairingNotificationId[];
 
-  // Adds a prefix to the device's address to obtain an unique notification ID.
-  static std::string GetPairedNotificationId(
-      const device::BluetoothDevice* device);
-
   // Internal method called by BluetoothAdapterFactory to provide the adapter
   // object.
   void OnGetAdapter(scoped_refptr<device::BluetoothAdapter> adapter);
diff --git a/ash/system/bluetooth/bluetooth_notification_controller_unittest.cc b/ash/system/bluetooth/bluetooth_notification_controller_unittest.cc
index 3ff8749..db857c8 100644
--- a/ash/system/bluetooth/bluetooth_notification_controller_unittest.cc
+++ b/ash/system/bluetooth/bluetooth_notification_controller_unittest.cc
@@ -9,11 +9,9 @@
 
 #include "ash/public/cpp/test/test_nearby_share_delegate.h"
 #include "ash/public/cpp/test/test_system_tray_client.h"
-#include "ash/services/nearby/public/cpp/nearby_client_uuids.h"
 #include "ash/session/test_session_controller_client.h"
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
-#include "ash/system/bluetooth/bluetooth_power_controller.h"
 #include "ash/system/toast/toast_manager_impl.h"
 #include "ash/system/tray/tray_popup_utils.h"
 #include "ash/test/ash_test_base.h"
@@ -21,7 +19,6 @@
 #include "base/containers/flat_map.h"
 #include "base/memory/ptr_util.h"
 #include "base/strings/utf_string_conversions.h"
-#include "base/test/scoped_feature_list.h"
 #include "device/bluetooth/bluetooth_adapter_factory.h"
 #include "device/bluetooth/test/mock_bluetooth_adapter.h"
 #include "device/bluetooth/test/mock_bluetooth_device.h"
@@ -94,18 +91,6 @@
     toast_manager_ = Shell::Get()->toast_manager();
   }
 
-  void ClickPairedNotification(const device::BluetoothDevice* device) {
-    test_message_center_.ClickOnNotification(
-        BluetoothNotificationController::GetPairedNotificationId(device));
-  }
-
-  void DismissPairedNotification(const device::BluetoothDevice* device,
-                                 bool by_user) {
-    test_message_center_.RemoveNotification(
-        BluetoothNotificationController::GetPairedNotificationId(device),
-        by_user);
-  }
-
   void VerifyDiscoverableToastVisibility(bool visible) {
     if (visible) {
       ToastOverlay* overlay = GetCurrentOverlay();
@@ -119,36 +104,12 @@
     }
   }
 
-  void VerifyPairedNotificationIsNotVisible(
-      const device::BluetoothDevice* device) {
-    EXPECT_FALSE(test_message_center_.FindVisibleNotificationById(
-        BluetoothNotificationController::GetPairedNotificationId(device)));
-  }
-
-  void VerifyPairedNotificationIsVisible(
-      const device::BluetoothDevice* device) {
-    message_center::Notification* visible_notification =
-        test_message_center_.FindVisibleNotificationById(
-            BluetoothNotificationController::GetPairedNotificationId(device));
-    EXPECT_TRUE(visible_notification);
-    EXPECT_EQ(std::u16string(), visible_notification->title());
-    EXPECT_EQ(l10n_util::GetStringFUTF16(IDS_ASH_STATUS_TRAY_BLUETOOTH_PAIRED,
-                                         device->GetNameForDisplay()),
-              visible_notification->message());
-  }
-
   // Run the notification controller to simulate showing a toast.
   void ShowDiscoverableToast(
       BluetoothNotificationController* notification_controller) {
     notification_controller->NotifyAdapterDiscoverable();
   }
 
-  void ShowPairedNotification(
-      BluetoothNotificationController* notification_controller,
-      device::MockBluetoothDevice* bluetooth_device) {
-    notification_controller->NotifyPairedDevice(bluetooth_device);
-  }
-
   ToastOverlay* GetCurrentOverlay() {
     return toast_manager_->GetCurrentOverlayForTesting();
   }
@@ -162,37 +123,6 @@
   ToastManagerImpl* toast_manager_ = nullptr;
 };
 
-// Legacy test class used to provide additional setup to a subset of the tests
-// below that we would still like to run, but cannot be run with the Bluetooth
-// revamp feature flag enabled since we no longer show a notification when a
-// device becomes paired.
-class BluetoothNotificationControllerTestLegacy
-    : public BluetoothNotificationControllerTest {
- public:
-  BluetoothNotificationControllerTestLegacy() = default;
-
-  BluetoothNotificationControllerTestLegacy(
-      const BluetoothNotificationControllerTestLegacy&) = delete;
-  BluetoothNotificationControllerTestLegacy& operator=(
-      const BluetoothNotificationControllerTestLegacy&) = delete;
-
-  void SetUp() override {
-    // These tests should only be run with the kBluetoothRevamp feature flag is
-    // disabled, and so we force it off here and ensure that the local state
-    // prefs that would have been registered had the feature flag been off are
-    // registered.
-    if (ash::features::IsBluetoothRevampEnabled()) {
-      feature_list_.InitAndDisableFeature(features::kBluetoothRevamp);
-      BluetoothPowerController::RegisterLocalStatePrefs(
-          local_state()->registry());
-    }
-    BluetoothNotificationControllerTest::SetUp();
-  }
-
- private:
-  base::test::ScopedFeatureList feature_list_;
-};
-
 TEST_F(BluetoothNotificationControllerTest, DiscoverableToast) {
   VerifyDiscoverableToastVisibility(/*visible=*/false);
 
@@ -227,82 +157,4 @@
   VerifyDiscoverableToastVisibility(/*visible=*/false);
 }
 
-TEST_F(BluetoothNotificationControllerTestLegacy,
-       PairedDeviceNotification_TapNotification) {
-  // Show the notification to the user.
-  ShowPairedNotification(notification_controller_.get(),
-                         bluetooth_device_1_.get());
-
-  VerifyPairedNotificationIsVisible(bluetooth_device_1_.get());
-
-  ClickPairedNotification(bluetooth_device_1_.get());
-
-  // The notification shouldn't dismiss after a click.
-  VerifyPairedNotificationIsVisible(bluetooth_device_1_.get());
-
-  // Check the notification controller tried to open the UI.
-  EXPECT_EQ(1, system_tray_client_->show_bluetooth_settings_count());
-}
-
-TEST_F(BluetoothNotificationControllerTestLegacy,
-       PairedDeviceNotification_MultipleNotifications) {
-  // Show the notification to the user.
-  ShowPairedNotification(notification_controller_.get(),
-                         bluetooth_device_1_.get());
-  VerifyPairedNotificationIsVisible(bluetooth_device_1_.get());
-
-  // Pairing a new device should create a new notification.
-  ShowPairedNotification(notification_controller_.get(),
-                         bluetooth_device_2_.get());
-  VerifyPairedNotificationIsVisible(bluetooth_device_1_.get());
-  VerifyPairedNotificationIsVisible(bluetooth_device_2_.get());
-}
-
-TEST_F(BluetoothNotificationControllerTestLegacy,
-       PairedDeviceNotification_UserDismissesNotification) {
-  ShowPairedNotification(notification_controller_.get(),
-                         bluetooth_device_1_.get());
-  ShowPairedNotification(notification_controller_.get(),
-                         bluetooth_device_2_.get());
-
-  VerifyPairedNotificationIsVisible(bluetooth_device_1_.get());
-  VerifyPairedNotificationIsVisible(bluetooth_device_2_.get());
-
-  // Remove one notification, the other one should still be visible.
-  DismissPairedNotification(bluetooth_device_1_.get(), true /* by_user */);
-
-  VerifyPairedNotificationIsNotVisible(bluetooth_device_1_.get());
-  VerifyPairedNotificationIsVisible(bluetooth_device_2_.get());
-
-  // The settings UI should not open when closing the notification.
-  EXPECT_EQ(0, system_tray_client_->show_bluetooth_settings_count());
-}
-
-TEST_F(BluetoothNotificationControllerTestLegacy,
-       PairedDeviceNotification_SystemDismissesNotification) {
-  ShowPairedNotification(notification_controller_.get(),
-                         bluetooth_device_1_.get());
-
-  VerifyPairedNotificationIsVisible(bluetooth_device_1_.get());
-
-  DismissPairedNotification(bluetooth_device_1_.get(), false /* by_user */);
-
-  VerifyPairedNotificationIsNotVisible(bluetooth_device_1_.get());
-  EXPECT_EQ(0, system_tray_client_->show_bluetooth_settings_count());
-}
-
-TEST_F(BluetoothNotificationControllerTestLegacy,
-       PairedDeviceNotification_DeviceConnectionInitiatedByNearbyClient) {
-  VerifyPairedNotificationIsNotVisible(bluetooth_device_1_.get());
-
-  base::flat_set<device::BluetoothUUID> uuid_set;
-  uuid_set.insert(nearby::GetNearbyClientUuids()[0]);
-  ON_CALL(*bluetooth_device_1_, GetUUIDs()).WillByDefault(Return(uuid_set));
-
-  ShowPairedNotification(notification_controller_.get(),
-                         bluetooth_device_1_.get());
-
-  VerifyPairedNotificationIsNotVisible(bluetooth_device_1_.get());
-}
-
 }  // namespace ash
diff --git a/ash/system/bluetooth/bluetooth_power_controller.cc b/ash/system/bluetooth/bluetooth_power_controller.cc
deleted file mode 100644
index 0ddb15c..0000000
--- a/ash/system/bluetooth/bluetooth_power_controller.cc
+++ /dev/null
@@ -1,318 +0,0 @@
-// Copyright 2017 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ash/system/bluetooth/bluetooth_power_controller.h"
-
-#include <memory>
-
-#include "ash/constants/ash_pref_names.h"
-#include "ash/session/session_controller_impl.h"
-#include "ash/shell.h"
-#include "base/bind.h"
-#include "base/threading/thread_task_runner_handle.h"
-#include "components/device_event_log/device_event_log.h"
-#include "components/prefs/pref_registry_simple.h"
-#include "components/prefs/pref_service.h"
-#include "device/bluetooth/bluetooth_adapter_factory.h"
-#include "device/bluetooth/chromeos/bluetooth_utils.h"
-
-namespace ash {
-
-// The delay between bluez started and bluez power initialized. This number is
-// determined empirically: most of the time bluez takes less than 200 ms to
-// initialize power, so taking 1000 ms has enough time buffer for worst cases.
-const int kBluetoothInitializationDelay = 1000;
-
-BluetoothPowerController::BluetoothPowerController(PrefService* local_state)
-    : local_state_(local_state) {
-  device::BluetoothAdapterFactory::Get()->GetAdapter(
-      base::BindOnce(&BluetoothPowerController::InitializeOnAdapterReady,
-                     weak_ptr_factory_.GetWeakPtr()));
-  Shell::Get()->session_controller()->AddObserver(this);
-
-  // AppLaunchTest.TestQuickLaunch fails under target=linux due to
-  // |local_state_| being nullptr.
-  if (local_state_) {
-    StartWatchingLocalStatePrefsChanges();
-
-    DCHECK(!Shell::Get()->session_controller()->IsActiveUserSessionStarted());
-    // Apply the local state pref since no user has logged in (still in login
-    // screen).
-    ApplyBluetoothLocalStatePref();
-  }
-}
-
-BluetoothPowerController::~BluetoothPowerController() {
-  if (bluetooth_adapter_)
-    bluetooth_adapter_->RemoveObserver(this);
-  Shell::Get()->session_controller()->RemoveObserver(this);
-}
-
-void BluetoothPowerController::SetBluetoothEnabled(bool enabled) {
-  if (active_user_pref_service_) {
-    active_user_pref_service_->SetBoolean(prefs::kUserBluetoothAdapterEnabled,
-                                          enabled);
-  } else if (local_state_) {
-    local_state_->SetBoolean(prefs::kSystemBluetoothAdapterEnabled, enabled);
-  } else {
-    DLOG(ERROR)
-        << "active user and local state pref service cannot both be null";
-  }
-}
-
-// static
-void BluetoothPowerController::RegisterLocalStatePrefs(
-    PrefRegistrySimple* registry) {
-  registry->RegisterBooleanPref(prefs::kSystemBluetoothAdapterEnabled, false);
-}
-
-// static
-void BluetoothPowerController::RegisterProfilePrefs(
-    PrefRegistrySimple* registry) {
-  registry->RegisterBooleanPref(prefs::kUserBluetoothAdapterEnabled, false);
-}
-
-void BluetoothPowerController::StartWatchingActiveUserPrefsChanges() {
-  DCHECK(active_user_pref_service_);
-  DCHECK(Shell::Get()->session_controller()->IsUserPrimary());
-
-  active_user_pref_change_registrar_ = std::make_unique<PrefChangeRegistrar>();
-  active_user_pref_change_registrar_->Init(active_user_pref_service_);
-  active_user_pref_change_registrar_->Add(
-      prefs::kUserBluetoothAdapterEnabled,
-      base::BindRepeating(
-          &BluetoothPowerController::OnBluetoothPowerActiveUserPrefChanged,
-          base::Unretained(this)));
-}
-
-void BluetoothPowerController::StartWatchingLocalStatePrefsChanges() {
-  DCHECK(local_state_);
-
-  local_state_pref_change_registrar_ = std::make_unique<PrefChangeRegistrar>();
-  local_state_pref_change_registrar_->Init(local_state_);
-  local_state_pref_change_registrar_->Add(
-      prefs::kSystemBluetoothAdapterEnabled,
-      base::BindRepeating(
-          &BluetoothPowerController::OnBluetoothPowerLocalStatePrefChanged,
-          base::Unretained(this)));
-}
-
-void BluetoothPowerController::StopWatchingActiveUserPrefsChanges() {
-  active_user_pref_change_registrar_.reset();
-}
-
-void BluetoothPowerController::OnBluetoothPowerActiveUserPrefChanged() {
-  DCHECK(active_user_pref_service_);
-  BLUETOOTH_LOG(EVENT) << "Active user bluetooth power pref changed";
-  SetBluetoothPower(active_user_pref_service_->GetBoolean(
-      prefs::kUserBluetoothAdapterEnabled));
-}
-
-void BluetoothPowerController::OnBluetoothPowerLocalStatePrefChanged() {
-  DCHECK(local_state_);
-  BLUETOOTH_LOG(EVENT) << "Local state bluetooth power pref changed";
-  SetBluetoothPower(
-      local_state_->GetBoolean(prefs::kSystemBluetoothAdapterEnabled));
-}
-
-void BluetoothPowerController::SetPrimaryUserBluetoothPowerSetting(
-    bool enabled) {
-  // This method should only be called when the primary user is the active user.
-  CHECK(Shell::Get()->session_controller()->IsUserPrimary());
-
-  active_user_pref_service_->SetBoolean(prefs::kUserBluetoothAdapterEnabled,
-                                        enabled);
-}
-
-void BluetoothPowerController::InitializeOnAdapterReady(
-    scoped_refptr<device::BluetoothAdapter> adapter) {
-  bluetooth_adapter_ = std::move(adapter);
-  bluetooth_adapter_->AddObserver(this);
-  bool adapter_present = bluetooth_adapter_->IsPresent();
-  BLUETOOTH_LOG(EVENT) << "Bluetooth adapter ready, IsPresent = "
-                       << adapter_present;
-  if (adapter_present)
-    TriggerRunPendingBluetoothTasks();
-}
-
-void BluetoothPowerController::OnActiveUserPrefServiceChanged(
-    PrefService* pref_service) {
-  active_user_pref_service_ = pref_service;
-
-  // Only listen to primary user's pref changes since non-primary users
-  // are not able to change bluetooth pref.
-  if (!Shell::Get()->session_controller()->IsUserPrimary()) {
-    StopWatchingActiveUserPrefsChanges();
-    return;
-  }
-  StartWatchingActiveUserPrefsChanges();
-
-  // Apply the bluetooth pref only for regular users (i.e. users representing
-  // a human individual). We don't want to apply bluetooth pref for other users
-  // e.g. kiosk, guest etc. For non-human users, bluetooth power should be left
-  // to the current power state.
-  if (!is_primary_user_bluetooth_applied_) {
-    ApplyBluetoothPrimaryUserPref();
-    is_primary_user_bluetooth_applied_ = true;
-  }
-}
-
-void BluetoothPowerController::AdapterPresentChanged(
-    device::BluetoothAdapter* adapter,
-    bool present) {
-  BLUETOOTH_LOG(EVENT) << "Bluetooth adapter present changed = " << present;
-  if (present) {
-    // If adapter->IsPresent() has just changed from false to true, this means
-    // that bluez has just started but not yet finished power initialization,
-    // so we should not start any bluetooth tasks until bluez power
-    // initialization is done. Since there is no signal from bluez when that
-    // happens, this adds a bit delay before triggering pending bluetooth tasks.
-    //
-    // TODO(sonnysasaka): Replace this delay hack with a signal from bluez when
-    // it has "initialized" signal in the future (http://crbug.com/765390).
-    base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
-        FROM_HERE,
-        base::BindOnce(
-            &BluetoothPowerController::TriggerRunPendingBluetoothTasks,
-            weak_ptr_factory_.GetWeakPtr()),
-        base::Milliseconds(kBluetoothInitializationDelay));
-  }
-}
-
-void BluetoothPowerController::ApplyBluetoothPrimaryUserPref() {
-  absl::optional<user_manager::UserType> user_type =
-      Shell::Get()->session_controller()->GetUserType();
-  if (!user_type || !ShouldApplyUserBluetoothSetting(*user_type)) {
-    // Do not apply bluetooth setting if user is not of the allowed types.
-    return;
-  }
-
-  DCHECK(Shell::Get()->session_controller()->IsUserPrimary());
-
-  PrefService* prefs = active_user_pref_service_;
-
-  if (!prefs->FindPreference(prefs::kUserBluetoothAdapterEnabled)
-           ->IsDefaultValue()) {
-    bool enabled = prefs->GetBoolean(prefs::kUserBluetoothAdapterEnabled);
-    BLUETOOTH_LOG(EVENT) << "Applying primary user pref bluetooth power: "
-                         << enabled;
-    SetBluetoothPower(enabled);
-    return;
-  }
-
-  // If the user has not had the bluetooth pref yet, set the user pref
-  // according to whatever the current bluetooth power is, except for
-  // new users (first login on the device) always set the new pref to true.
-  if (Shell::Get()->session_controller()->IsUserFirstLogin()) {
-    prefs->SetBoolean(prefs::kUserBluetoothAdapterEnabled, true);
-  } else {
-    SavePrefValue(prefs, prefs::kUserBluetoothAdapterEnabled);
-  }
-}
-
-void BluetoothPowerController::ApplyBluetoothLocalStatePref() {
-  if (local_state_->FindPreference(prefs::kSystemBluetoothAdapterEnabled)
-          ->IsDefaultValue()) {
-    // If the device has not had the local state bluetooth pref, set the pref
-    // according to whatever the current bluetooth power is.
-    SavePrefValue(local_state_, prefs::kSystemBluetoothAdapterEnabled);
-  } else {
-    bool enabled =
-        local_state_->GetBoolean(prefs::kSystemBluetoothAdapterEnabled);
-    BLUETOOTH_LOG(EVENT) << "Applying local state pref bluetooth power: "
-                         << enabled;
-    SetBluetoothPower(enabled);
-  }
-}
-
-void BluetoothPowerController::SetBluetoothPower(bool enabled) {
-  if (pending_bluetooth_power_target_.has_value()) {
-    // There is already a pending bluetooth power change request, so don't
-    // enqueue a new SetPowered operation but rather change the target power.
-    pending_bluetooth_power_target_ = enabled;
-    return;
-  }
-  pending_bluetooth_power_target_ = enabled;
-  RunBluetoothTaskWhenAdapterReady(
-      base::BindOnce(&BluetoothPowerController::SetBluetoothPowerOnAdapterReady,
-                     weak_ptr_factory_.GetWeakPtr()));
-}
-
-void BluetoothPowerController::SetBluetoothPowerOnAdapterReady() {
-  DCHECK(pending_bluetooth_power_target_.has_value());
-  bool enabled = pending_bluetooth_power_target_.value();
-  pending_bluetooth_power_target_.reset();
-
-  device::PoweredStateOperation power_operation =
-      enabled ? device::PoweredStateOperation::kEnable
-              : device::PoweredStateOperation::kDisable;
-
-  bluetooth_adapter_->SetPowered(
-      enabled,
-      base::BindOnce(&BluetoothPowerController::OnSetBluetoothPower,
-                     weak_ptr_factory_.GetWeakPtr(), power_operation,
-                     /*success=*/true),
-      base::BindOnce(&BluetoothPowerController::OnSetBluetoothPower,
-                     weak_ptr_factory_.GetWeakPtr(), power_operation,
-                     /*success=*/false));
-
-  device::RecordPoweredState(enabled);
-}
-
-void BluetoothPowerController::RunBluetoothTaskWhenAdapterReady(
-    BluetoothTask task) {
-  pending_bluetooth_tasks_.push(std::move(task));
-  TriggerRunPendingBluetoothTasks();
-}
-
-void BluetoothPowerController::TriggerRunPendingBluetoothTasks() {
-  if (pending_tasks_busy_)
-    return;
-  pending_tasks_busy_ = true;
-  RunNextPendingBluetoothTask();
-}
-
-void BluetoothPowerController::RunNextPendingBluetoothTask() {
-  if (!bluetooth_adapter_ || !bluetooth_adapter_->IsPresent() ||
-      pending_bluetooth_tasks_.empty()) {
-    // Stop running pending tasks if either adapter becomes not present or
-    // all the pending tasks have been run.
-    pending_tasks_busy_ = false;
-    return;
-  }
-  BluetoothTask task = std::move(pending_bluetooth_tasks_.front());
-  pending_bluetooth_tasks_.pop();
-  std::move(task).Run();
-}
-
-void BluetoothPowerController::SavePrefValue(PrefService* prefs,
-                                             const char* pref_name) {
-  RunBluetoothTaskWhenAdapterReady(
-      base::BindOnce(&BluetoothPowerController::SavePrefValueOnAdapterReady,
-                     weak_ptr_factory_.GetWeakPtr(), prefs, pref_name));
-}
-
-void BluetoothPowerController::SavePrefValueOnAdapterReady(
-    PrefService* prefs,
-    const char* pref_name) {
-  prefs->SetBoolean(pref_name, bluetooth_adapter_->IsPowered());
-  RunNextPendingBluetoothTask();
-}
-
-bool BluetoothPowerController::ShouldApplyUserBluetoothSetting(
-    user_manager::UserType user_type) const {
-  return user_type == user_manager::USER_TYPE_REGULAR ||
-         user_type == user_manager::USER_TYPE_CHILD ||
-         user_type == user_manager::USER_TYPE_ACTIVE_DIRECTORY;
-}
-
-void BluetoothPowerController::OnSetBluetoothPower(
-    device::PoweredStateOperation power_operation,
-    bool success) {
-  device::RecordPoweredStateOperationResult(power_operation, success);
-  // Always run the next pending task after SetPowered completes regardless
-  // of whether there was an error.
-  RunNextPendingBluetoothTask();
-}
-}  // namespace ash
diff --git a/ash/system/bluetooth/bluetooth_power_controller.h b/ash/system/bluetooth/bluetooth_power_controller.h
deleted file mode 100644
index ae2ee4a2..0000000
--- a/ash/system/bluetooth/bluetooth_power_controller.h
+++ /dev/null
@@ -1,163 +0,0 @@
-// Copyright 2017 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef ASH_SYSTEM_BLUETOOTH_BLUETOOTH_POWER_CONTROLLER_H_
-#define ASH_SYSTEM_BLUETOOTH_BLUETOOTH_POWER_CONTROLLER_H_
-
-#include "ash/ash_export.h"
-#include "ash/public/cpp/session/session_observer.h"
-#include "base/containers/queue.h"
-#include "components/prefs/pref_change_registrar.h"
-#include "components/user_manager/user_type.h"
-#include "device/bluetooth/bluetooth_adapter.h"
-#include "device/bluetooth/chromeos/bluetooth_utils.h"
-
-class PrefRegistrySimple;
-class PrefService;
-
-namespace ash {
-
-// Listens to changes of bluetooth power preferences and apply them to the
-// device. Also initializes the bluetooth power during system startup
-// and user session startup.
-//
-// This should be the only entity controlling bluetooth power. All other code
-// outside ash that wants to control bluetooth power should set user pref
-// setting instead.
-class ASH_EXPORT BluetoothPowerController
-    : public SessionObserver,
-      public device::BluetoothAdapter::Observer {
- public:
-  explicit BluetoothPowerController(PrefService* local_state);
-
-  BluetoothPowerController(const BluetoothPowerController&) = delete;
-  BluetoothPowerController& operator=(const BluetoothPowerController&) = delete;
-
-  ~BluetoothPowerController() override;
-
-  // Changes the bluetooth power setting to |enabled|.
-  void SetBluetoothEnabled(bool enabled);
-
-  static void RegisterLocalStatePrefs(PrefRegistrySimple* registry);
-  static void RegisterProfilePrefs(PrefRegistrySimple* registry);
-
-  // Sets the primary user's bluetooth power pref. Setting the pref will also
-  // trigger the change of the bluetooth power. This method can only be called
-  // when the primary user is the active user, otherwise the operation is
-  // ignored.
-  void SetPrimaryUserBluetoothPowerSetting(bool enabled);
-
-  // Called when BluetoothAdapterFactory::GetAdapter is ready to pass the
-  // adapter pointer.
-  void InitializeOnAdapterReady(
-      scoped_refptr<device::BluetoothAdapter> adapter);
-
-  // SessionObserver:
-  void OnActiveUserPrefServiceChanged(PrefService* pref_service) override;
-
-  // BluetoothAdapter::Observer:
-  void AdapterPresentChanged(device::BluetoothAdapter* adapter,
-                             bool present) override;
-
-  device::BluetoothAdapter* bluetooth_adapter_for_test() {
-    return bluetooth_adapter_.get();
-  }
-
- private:
-  friend class BluetoothPowerControllerTest;
-
-  void StartWatchingActiveUserPrefsChanges();
-  void StartWatchingLocalStatePrefsChanges();
-  void StopWatchingActiveUserPrefsChanges();
-
-  void OnBluetoothPowerActiveUserPrefChanged();
-  void OnBluetoothPowerLocalStatePrefChanged();
-
-  // At primary user session startup, apply the user's bluetooth power setting
-  // or set the default if the user doesn't have the setting yet.
-  void ApplyBluetoothPrimaryUserPref();
-
-  // At login screen startup, apply the local state bluetooth power setting
-  // or set the default if the device doesn't have the setting yet.
-  void ApplyBluetoothLocalStatePref();
-
-  // Sets the bluetooth power, may defer the operation if bluetooth adapter
-  // is not yet ready.
-  void SetBluetoothPower(bool enabled);
-
-  // Sets the bluetooth power given the ready adapter.
-  void SetBluetoothPowerOnAdapterReady();
-
-  // Called by dbus:: on completion of the D-Bus method call to set power state
-  // on the device.
-  void OnSetBluetoothPower(device::PoweredStateOperation power_operation,
-                           bool success);
-
-  using BluetoothTask = base::OnceClosure;
-
-  // If adapter is ready run the task right now, otherwise add the task
-  // to the queue which will be executed when bluetooth adapter is ready.
-  void RunBluetoothTaskWhenAdapterReady(BluetoothTask task);
-
-  // Triggers running all pending bluetooth adapter-dependent tasks.
-  void TriggerRunPendingBluetoothTasks();
-
-  // Runs the next pending bluetooth task. This will trigger another
-  // RunNextPendingBluetoothTask when the current task is finished. It will stop
-  // executing the next task when the adapter becomes not present or the queue
-  // has been empty.
-  void RunNextPendingBluetoothTask();
-
-  // Sets the pref value based on current bluetooth power state. May defer
-  // the operation if bluetooth adapter is not ready yet.
-  void SavePrefValue(PrefService* prefs, const char* pref_name);
-
-  // Sets the pref value based on current bluetooth power state, given the ready
-  // bluetooth adapter.
-  void SavePrefValueOnAdapterReady(PrefService* prefs, const char* pref_name);
-
-  // Decides whether to apply bluetooth setting based on user type.
-  // Returns true if the user type represents a human individual, currently this
-  // includes: regular, child, supervised, or active directory. The other types
-  // do not represent human account so those account should follow system-wide
-  // bluetooth setting instead.
-  bool ShouldApplyUserBluetoothSetting(user_manager::UserType user_type) const;
-
-  // Remembers whether we have ever applied the primary user's bluetooth
-  // setting. If this variable is true, we will ignore any active user change
-  // event since we know that the primary user's bluetooth setting has been
-  // applied.
-  bool is_primary_user_bluetooth_applied_ = false;
-
-  PrefService* active_user_pref_service_ = nullptr;
-  PrefService* local_state_ = nullptr;
-
-  // Contains pending tasks which depend on the availability of bluetooth
-  // adapter.
-  base::queue<BluetoothTask> pending_bluetooth_tasks_;
-
-  // The registrar used to watch prefs changes in the above
-  // |active_user_pref_service_| from outside ash.
-  // NOTE: Prefs are how Chrome communicates changes to the bluetooth power
-  // settings controlled by this class from the WebUI settings.
-  std::unique_ptr<PrefChangeRegistrar> active_user_pref_change_registrar_;
-  std::unique_ptr<PrefChangeRegistrar> local_state_pref_change_registrar_;
-
-  // True indicates that pending_bluetooth_tasks_ is being executed and
-  // waiting for complete callback.
-  bool pending_tasks_busy_ = false;
-
-  // If not empty this indicates the pending target bluetooth power to be set.
-  // This needs to be tracked so that we can combine multiple pending power
-  // change requests.
-  absl::optional<bool> pending_bluetooth_power_target_;
-
-  scoped_refptr<device::BluetoothAdapter> bluetooth_adapter_;
-
-  base::WeakPtrFactory<BluetoothPowerController> weak_ptr_factory_{this};
-};
-
-}  // namespace ash
-
-#endif  // ASH_SYSTEM_BLUETOOTH_BLUETOOTH_POWER_CONTROLLER_H_
diff --git a/ash/system/bluetooth/bluetooth_power_controller_unittest.cc b/ash/system/bluetooth/bluetooth_power_controller_unittest.cc
deleted file mode 100644
index 0b2b22b..0000000
--- a/ash/system/bluetooth/bluetooth_power_controller_unittest.cc
+++ /dev/null
@@ -1,523 +0,0 @@
-// Copyright 2017 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ash/system/bluetooth/bluetooth_power_controller.h"
-
-#include "ash/constants/ash_features.h"
-#include "ash/constants/ash_pref_names.h"
-#include "ash/session/session_controller_impl.h"
-#include "ash/shell.h"
-#include "ash/test/ash_test_base.h"
-#include "ash/test_shell_delegate.h"
-#include "base/callback_helpers.h"
-#include "base/run_loop.h"
-#include "base/test/metrics/histogram_tester.h"
-#include "base/test/scoped_feature_list.h"
-#include "components/prefs/pref_registry_simple.h"
-#include "components/prefs/testing_pref_service.h"
-#include "device/bluetooth/dbus/bluez_dbus_manager.h"
-#include "device/bluetooth/dbus/fake_bluetooth_adapter_client.h"
-
-namespace ash {
-namespace {
-
-constexpr char kUser1Email[] = "user1@bluetooth";
-constexpr bool kUserFirstLogin = true;
-
-void SetupBluetoothAdapter() {
-  // Set Bluetooth discovery simulation delay to 0 so the test doesn't have to
-  // wait or use timers.
-  bluez::FakeBluetoothAdapterClient* adapter_client =
-      static_cast<bluez::FakeBluetoothAdapterClient*>(
-          bluez::BluezDBusManager::Get()->GetBluetoothAdapterClient());
-  adapter_client->SetSimulationIntervalMs(0);
-
-  // Makes sure we get the callback from BluetoothAdapterFactory::GetAdapter
-  // first before running the remaining test.
-  base::RunLoop().RunUntilIdle();
-}
-
-BluetoothPowerController* GetController() {
-  return Shell::Get()->bluetooth_power_controller();
-}
-
-device::BluetoothAdapter* GetBluetoothAdapter() {
-  return GetController()->bluetooth_adapter_for_test();
-}
-
-}  // namespace
-
-class BluetoothPowerControllerTest : public AshTestBase {
- public:
-  BluetoothPowerControllerTest() {
-    feature_list_.InitAndDisableFeature(features::kBluetoothRevamp);
-
-    // Manually register local state prefs because AshTestBase attempts to
-    // register local state prefs before this constructor is called when
-    // the kBluetoothRevamp flag is still enabled.
-    BluetoothPowerController::RegisterLocalStatePrefs(
-        local_state()->registry());
-    BluetoothPowerController::RegisterProfilePrefs(
-        active_user_prefs_.registry());
-  }
-
-  BluetoothPowerControllerTest(const BluetoothPowerControllerTest&) = delete;
-  BluetoothPowerControllerTest& operator=(const BluetoothPowerControllerTest&) =
-      delete;
-
-  ~BluetoothPowerControllerTest() override = default;
-
-  void SetUp() override {
-    AshTestBase::SetUp();
-
-    SetupBluetoothAdapter();
-  }
-
-  void AddUserSessionAndStartWatchingPrefsChanges(
-      const std::string& display_email,
-      user_manager::UserType user_type = user_manager::USER_TYPE_REGULAR,
-      bool is_new_profile = false) {
-    GetSessionControllerClient()->AddUserSession(
-        display_email, user_type, false /* provide_pref_service */,
-        is_new_profile);
-    GetController()->active_user_pref_service_ = &active_user_prefs_;
-    GetController()->StartWatchingActiveUserPrefsChanges();
-  }
-
-  void StartWatchingLocalStatePrefsChanges() {
-    GetController()->StartWatchingLocalStatePrefsChanges();
-  }
-
- protected:
-  void ApplyBluetoothLocalStatePref() {
-    GetController()->ApplyBluetoothLocalStatePref();
-  }
-
-  void ApplyBluetoothPrimaryUserPref() {
-    GetController()->ApplyBluetoothPrimaryUserPref();
-  }
-
-  const base::queue<BluetoothPowerController::BluetoothTask>&
-  GetPendingBluetoothTasks() {
-    return GetController()->pending_bluetooth_tasks_;
-  }
-
-  // Pretends that the controller is busy doing bluetooth work. This is needed
-  // to test the behavior when multiple power change requests are queued when
-  // the controller is busy.
-  void SimulateControllerBusy(bool is_busy) {
-    GetController()->pending_tasks_busy_ = is_busy;
-    if (!is_busy)
-      GetController()->TriggerRunPendingBluetoothTasks();
-  }
-
-  TestingPrefServiceSimple active_user_prefs_;
-  base::HistogramTester histogram_tester;
-
- private:
-  base::test::ScopedFeatureList feature_list_;
-};
-
-class BluetoothPowerControllerNoSessionTest
-    : public BluetoothPowerControllerTest {
- public:
-  BluetoothPowerControllerNoSessionTest() { set_start_session(false); }
-};
-
-// This "integration" test aims to provide a closer simulation of production
-// logic behavior (see http://crbug.com/762567) using the PrefService objects
-// provided by AshTestBase and TestSessionControllerClient. However, we do have
-// to manually register some prefs since this test needs the kBluetoothRevamp
-// feature flag to be disabled. For more details see SetUp().
-class BluetoothPowerControllerIntegrationTest : public NoSessionAshTestBase {
- public:
-  BluetoothPowerControllerIntegrationTest() = default;
-
-  BluetoothPowerControllerIntegrationTest(
-      const BluetoothPowerControllerIntegrationTest&) = delete;
-  BluetoothPowerControllerIntegrationTest& operator=(
-      const BluetoothPowerControllerIntegrationTest&) = delete;
-
-  void SetUp() override {
-    // These tests should only be run with the kBluetoothRevamp feature flag is
-    // disabled, and so we force it off here and ensure that the local state
-    // prefs that would have been registered had the feature flag been off are
-    // registered.
-    if (ash::features::IsBluetoothRevampEnabled()) {
-      feature_list_.InitAndDisableFeature(features::kBluetoothRevamp);
-      BluetoothPowerController::RegisterLocalStatePrefs(
-          local_state()->registry());
-    }
-    NoSessionAshTestBase::SetUp();
-  }
-
- private:
-  base::test::ScopedFeatureList feature_list_;
-};
-
-// Tests toggling Bluetooth setting on and off.
-TEST_F(BluetoothPowerControllerNoSessionTest, ToggleBluetoothEnabled) {
-  // Initially power state is set to default value.
-  histogram_tester.ExpectBucketCount("Bluetooth.ChromeOS.PoweredState", false,
-                                     1);
-  histogram_tester.ExpectBucketCount("Bluetooth.ChromeOS.PoweredState", true,
-                                     0);
-
-  histogram_tester.ExpectBucketCount(
-      "Bluetooth.ChromeOS.PoweredState.Disable.Result", true, 1);
-  histogram_tester.ExpectBucketCount(
-      "Bluetooth.ChromeOS.PoweredState.Enable.Result", true, 0);
-
-  // Toggling bluetooth on/off when there is no user session should affect
-  // local state prefs.
-  EXPECT_FALSE(
-      local_state()->GetBoolean(prefs::kSystemBluetoothAdapterEnabled));
-  GetController()->SetBluetoothEnabled(true);
-  EXPECT_TRUE(local_state()->GetBoolean(prefs::kSystemBluetoothAdapterEnabled));
-  GetController()->SetBluetoothEnabled(false);
-  EXPECT_FALSE(
-      local_state()->GetBoolean(prefs::kSystemBluetoothAdapterEnabled));
-
-  histogram_tester.ExpectBucketCount("Bluetooth.ChromeOS.PoweredState", false,
-                                     2);
-  histogram_tester.ExpectBucketCount("Bluetooth.ChromeOS.PoweredState", true,
-                                     1);
-  histogram_tester.ExpectBucketCount(
-      "Bluetooth.ChromeOS.PoweredState.Disable.Result", true, 2);
-  histogram_tester.ExpectBucketCount(
-      "Bluetooth.ChromeOS.PoweredState.Enable.Result", true, 1);
-
-  // Toggling bluetooth on/off when there is user session should affect
-  // user prefs.
-  AddUserSessionAndStartWatchingPrefsChanges(kUser1Email);
-  EXPECT_FALSE(
-      active_user_prefs_.GetBoolean(prefs::kUserBluetoothAdapterEnabled));
-  GetController()->SetBluetoothEnabled(true);
-  EXPECT_TRUE(
-      active_user_prefs_.GetBoolean(prefs::kUserBluetoothAdapterEnabled));
-  GetController()->SetBluetoothEnabled(false);
-  EXPECT_FALSE(
-      active_user_prefs_.GetBoolean(prefs::kUserBluetoothAdapterEnabled));
-  histogram_tester.ExpectBucketCount("Bluetooth.ChromeOS.PoweredState", false,
-                                     3);
-  histogram_tester.ExpectBucketCount("Bluetooth.ChromeOS.PoweredState", true,
-                                     2);
-  histogram_tester.ExpectBucketCount(
-      "Bluetooth.ChromeOS.PoweredState.Disable.Result", true, 3);
-  histogram_tester.ExpectBucketCount(
-      "Bluetooth.ChromeOS.PoweredState.Enable.Result", true, 2);
-}
-
-// Tests that BluetoothPowerController listens to local state pref changes
-// and applies the changes to bluetooth device.
-TEST_F(BluetoothPowerControllerTest, ListensPrefChangesLocalState) {
-  // Initially power state is set to default value .
-  histogram_tester.ExpectBucketCount("Bluetooth.ChromeOS.PoweredState", false,
-                                     1);
-  histogram_tester.ExpectBucketCount("Bluetooth.ChromeOS.PoweredState", true,
-                                     0);
-  histogram_tester.ExpectBucketCount(
-      "Bluetooth.ChromeOS.PoweredState.Disable.Result", true, 1);
-  histogram_tester.ExpectBucketCount(
-      "Bluetooth.ChromeOS.PoweredState.Enable.Result", true, 0);
-  StartWatchingLocalStatePrefsChanges();
-
-  // Makes sure we start with bluetooth power off.
-  EXPECT_FALSE(GetBluetoothAdapter()->IsPowered());
-  EXPECT_FALSE(
-      local_state()->GetBoolean(prefs::kSystemBluetoothAdapterEnabled));
-
-  // Power should be turned on when pref changes to enabled.
-  local_state()->SetBoolean(prefs::kSystemBluetoothAdapterEnabled, true);
-  EXPECT_TRUE(GetBluetoothAdapter()->IsPowered());
-
-  histogram_tester.ExpectBucketCount("Bluetooth.ChromeOS.PoweredState", false,
-                                     1);
-  histogram_tester.ExpectBucketCount("Bluetooth.ChromeOS.PoweredState", true,
-                                     1);
-  histogram_tester.ExpectBucketCount(
-      "Bluetooth.ChromeOS.PoweredState.Disable.Result", true, 1);
-  histogram_tester.ExpectBucketCount(
-      "Bluetooth.ChromeOS.PoweredState.Enable.Result", true, 1);
-
-  // Power should be turned off when pref changes to disabled.
-  local_state()->SetBoolean(prefs::kSystemBluetoothAdapterEnabled, false);
-  EXPECT_FALSE(GetBluetoothAdapter()->IsPowered());
-
-  histogram_tester.ExpectBucketCount("Bluetooth.ChromeOS.PoweredState", false,
-                                     2);
-  histogram_tester.ExpectBucketCount("Bluetooth.ChromeOS.PoweredState", true,
-                                     1);
-  histogram_tester.ExpectBucketCount(
-      "Bluetooth.ChromeOS.PoweredState.Disable.Result", true, 2);
-  histogram_tester.ExpectBucketCount(
-      "Bluetooth.ChromeOS.PoweredState.Enable.Result", true, 1);
-}
-
-// Tests that BluetoothPowerController listens to active user pref changes
-// and applies the changes to bluetooth device.
-TEST_F(BluetoothPowerControllerTest, ListensPrefChangesActiveUser) {
-  AddUserSessionAndStartWatchingPrefsChanges(kUser1Email);
-
-  // Makes sure we start with bluetooth power off.
-  EXPECT_FALSE(GetBluetoothAdapter()->IsPowered());
-  EXPECT_FALSE(
-      active_user_prefs_.GetBoolean(prefs::kUserBluetoothAdapterEnabled));
-
-  // Power should be turned on when pref changes to enabled.
-  active_user_prefs_.SetBoolean(prefs::kUserBluetoothAdapterEnabled, true);
-  EXPECT_TRUE(GetBluetoothAdapter()->IsPowered());
-
-  // Power should be turned off when pref changes to disabled.
-  active_user_prefs_.SetBoolean(prefs::kUserBluetoothAdapterEnabled, false);
-  EXPECT_FALSE(GetBluetoothAdapter()->IsPowered());
-}
-
-// Tests that BluetoothPowerController listens to multiple active user pref
-// changes and applies the changes to bluetooth device. The queued multiple
-// power change tasks shouldn't be executed all but rather only the last request
-// is executed.
-TEST_F(BluetoothPowerControllerTest, ListensPrefChangesLongQueue) {
-  // Initially power state is set to default value.
-  histogram_tester.ExpectBucketCount("Bluetooth.ChromeOS.PoweredState", false,
-                                     1);
-  histogram_tester.ExpectBucketCount("Bluetooth.ChromeOS.PoweredState", true,
-                                     0);
-  histogram_tester.ExpectBucketCount(
-      "Bluetooth.ChromeOS.PoweredState.Disable.Result", true, 1);
-  histogram_tester.ExpectBucketCount(
-      "Bluetooth.ChromeOS.PoweredState.Enable.Result", true, 0);
-  AddUserSessionAndStartWatchingPrefsChanges(kUser1Email);
-
-  // Makes sure we start with bluetooth power off.
-  EXPECT_FALSE(GetBluetoothAdapter()->IsPowered());
-  EXPECT_FALSE(
-      active_user_prefs_.GetBoolean(prefs::kUserBluetoothAdapterEnabled));
-
-  // Multiple power change requests come in when the controller is busy.
-  SimulateControllerBusy(true);
-  active_user_prefs_.SetBoolean(prefs::kUserBluetoothAdapterEnabled, true);
-  active_user_prefs_.SetBoolean(prefs::kUserBluetoothAdapterEnabled, false);
-  active_user_prefs_.SetBoolean(prefs::kUserBluetoothAdapterEnabled, true);
-  active_user_prefs_.SetBoolean(prefs::kUserBluetoothAdapterEnabled, false);
-  active_user_prefs_.SetBoolean(prefs::kUserBluetoothAdapterEnabled, true);
-
-  // The controller should execute only the last request.
-  EXPECT_EQ(1u, GetPendingBluetoothTasks().size());
-  // Flush the queue to be executed.
-  SimulateControllerBusy(false);
-  // The power state should represent the last request in the queue.
-  EXPECT_TRUE(GetBluetoothAdapter()->IsPowered());
-
-  // Since controller executes only last request only power on is recorded.
-  histogram_tester.ExpectBucketCount("Bluetooth.ChromeOS.PoweredState", false,
-                                     1);
-  histogram_tester.ExpectBucketCount("Bluetooth.ChromeOS.PoweredState", true,
-                                     1);
-  histogram_tester.ExpectBucketCount(
-      "Bluetooth.ChromeOS.PoweredState.Disable.Result", true, 1);
-  histogram_tester.ExpectBucketCount(
-      "Bluetooth.ChromeOS.PoweredState.Enable.Result", true, 1);
-}
-
-// Tests how BluetoothPowerController applies the local state pref when
-// the pref hasn't been set before.
-TEST_F(BluetoothPowerControllerTest, ApplyBluetoothLocalStatePrefDefault) {
-  // Makes sure pref hasn't been set before.
-  local_state()->RemoveUserPref(prefs::kSystemBluetoothAdapterEnabled);
-  EXPECT_TRUE(local_state()
-                  ->FindPreference(prefs::kSystemBluetoothAdapterEnabled)
-                  ->IsDefaultValue());
-  // Start with bluetooth power on.
-  GetBluetoothAdapter()->SetPowered(true, base::DoNothing(), base::DoNothing());
-  EXPECT_TRUE(GetBluetoothAdapter()->IsPowered());
-
-  ApplyBluetoothLocalStatePref();
-
-  // Pref should now contain the current bluetooth adapter state (on).
-  EXPECT_FALSE(local_state()
-                   ->FindPreference(prefs::kSystemBluetoothAdapterEnabled)
-                   ->IsDefaultValue());
-  EXPECT_TRUE(local_state()->GetBoolean(prefs::kSystemBluetoothAdapterEnabled));
-}
-
-// Tests how BluetoothPowerController applies the local state pref when
-// the pref has been set before.
-TEST_F(BluetoothPowerControllerTest, ApplyBluetoothLocalStatePrefOn) {
-  // Initially power state is set to default value .
-  histogram_tester.ExpectBucketCount("Bluetooth.ChromeOS.PoweredState", false,
-                                     1);
-  histogram_tester.ExpectBucketCount("Bluetooth.ChromeOS.PoweredState", true,
-                                     0);
-  histogram_tester.ExpectBucketCount(
-      "Bluetooth.ChromeOS.PoweredState.Disable.Result", true, 1);
-  histogram_tester.ExpectBucketCount(
-      "Bluetooth.ChromeOS.PoweredState.Enable.Result", true, 0);
-
-  // Set the pref to true.
-  local_state()->SetBoolean(prefs::kSystemBluetoothAdapterEnabled, true);
-  EXPECT_FALSE(local_state()
-                   ->FindPreference(prefs::kSystemBluetoothAdapterEnabled)
-                   ->IsDefaultValue());
-
-  histogram_tester.ExpectBucketCount("Bluetooth.ChromeOS.PoweredState", false,
-                                     1);
-  histogram_tester.ExpectBucketCount("Bluetooth.ChromeOS.PoweredState", true,
-                                     1);
-  histogram_tester.ExpectBucketCount(
-      "Bluetooth.ChromeOS.PoweredState.Disable.Result", true, 1);
-  histogram_tester.ExpectBucketCount(
-      "Bluetooth.ChromeOS.PoweredState.Enable.Result", true, 1);
-
-  // Start with bluetooth power off.
-  GetBluetoothAdapter()->SetPowered(false, base::DoNothing(),
-                                    base::DoNothing());
-  EXPECT_FALSE(GetBluetoothAdapter()->IsPowered());
-
-  ApplyBluetoothLocalStatePref();
-
-  // Bluetooth power setting should be applied (on), and pref value unchanged.
-  EXPECT_TRUE(local_state()->GetBoolean(prefs::kSystemBluetoothAdapterEnabled));
-  EXPECT_TRUE(GetBluetoothAdapter()->IsPowered());
-
-  histogram_tester.ExpectBucketCount("Bluetooth.ChromeOS.PoweredState", false,
-                                     1);
-  histogram_tester.ExpectBucketCount("Bluetooth.ChromeOS.PoweredState", true,
-                                     2);
-  histogram_tester.ExpectBucketCount(
-      "Bluetooth.ChromeOS.PoweredState.Disable.Result", true, 1);
-  histogram_tester.ExpectBucketCount(
-      "Bluetooth.ChromeOS.PoweredState.Enable.Result", true, 2);
-}
-
-// Tests how BluetoothPowerController applies the user pref when
-// the pref hasn't been set before.
-TEST_F(BluetoothPowerControllerTest, ApplyBluetoothPrimaryUserPrefDefault) {
-  AddUserSessionAndStartWatchingPrefsChanges(kUser1Email);
-
-  // Makes sure pref hasn't been set before.
-  EXPECT_TRUE(
-      active_user_prefs_.FindPreference(prefs::kUserBluetoothAdapterEnabled)
-          ->IsDefaultValue());
-  // Start with bluetooth power off.
-  GetBluetoothAdapter()->SetPowered(false, base::DoNothing(),
-                                    base::DoNothing());
-  EXPECT_FALSE(GetBluetoothAdapter()->IsPowered());
-
-  ApplyBluetoothPrimaryUserPref();
-
-  // Pref should now contain the current bluetooth adapter state (off).
-  EXPECT_FALSE(
-      active_user_prefs_.FindPreference(prefs::kUserBluetoothAdapterEnabled)
-          ->IsDefaultValue());
-  EXPECT_FALSE(
-      active_user_prefs_.GetBoolean(prefs::kUserBluetoothAdapterEnabled));
-}
-
-// Tests how BluetoothPowerController applies the user pref when
-// the pref hasn't been set before, and it's a first-login user.
-TEST_F(BluetoothPowerControllerNoSessionTest,
-       ApplyBluetoothPrimaryUserPrefDefaultNew) {
-  AddUserSessionAndStartWatchingPrefsChanges(
-      kUser1Email, user_manager::USER_TYPE_REGULAR, kUserFirstLogin);
-
-  // Makes sure pref hasn't been set before.
-  EXPECT_TRUE(
-      active_user_prefs_.FindPreference(prefs::kUserBluetoothAdapterEnabled)
-          ->IsDefaultValue());
-  // Start with bluetooth power off.
-  GetBluetoothAdapter()->SetPowered(false, base::DoNothing(),
-                                    base::DoNothing());
-  EXPECT_FALSE(GetBluetoothAdapter()->IsPowered());
-
-  ApplyBluetoothPrimaryUserPref();
-
-  // Pref should be set to true for first-login users, and this will also
-  // trigger the bluetooth power on.
-  EXPECT_FALSE(
-      active_user_prefs_.FindPreference(prefs::kUserBluetoothAdapterEnabled)
-          ->IsDefaultValue());
-  EXPECT_TRUE(
-      active_user_prefs_.GetBoolean(prefs::kUserBluetoothAdapterEnabled));
-  EXPECT_TRUE(GetBluetoothAdapter()->IsPowered());
-}
-
-// Tests how BluetoothPowerController applies the user pref when
-// the pref hasn't been set before, but not a regular user (e.g. kiosk).
-TEST_F(BluetoothPowerControllerNoSessionTest,
-       ApplyBluetoothKioskUserPrefDefault) {
-  AddUserSessionAndStartWatchingPrefsChanges(kUser1Email,
-                                             user_manager::USER_TYPE_KIOSK_APP);
-
-  // Makes sure pref hasn't been set before.
-  EXPECT_TRUE(
-      active_user_prefs_.FindPreference(prefs::kUserBluetoothAdapterEnabled)
-          ->IsDefaultValue());
-  // Start with bluetooth power off.
-  GetBluetoothAdapter()->SetPowered(false, base::DoNothing(),
-                                    base::DoNothing());
-  EXPECT_FALSE(GetBluetoothAdapter()->IsPowered());
-
-  ApplyBluetoothPrimaryUserPref();
-
-  // For non-regular user, do not apply the bluetooth setting and no need
-  // to set the pref.
-  EXPECT_TRUE(
-      active_user_prefs_.FindPreference(prefs::kUserBluetoothAdapterEnabled)
-          ->IsDefaultValue());
-  EXPECT_FALSE(
-      active_user_prefs_.GetBoolean(prefs::kUserBluetoothAdapterEnabled));
-  EXPECT_FALSE(GetBluetoothAdapter()->IsPowered());
-}
-
-// Tests how BluetoothPowerController applies the user pref when
-// the pref has been set before.
-TEST_F(BluetoothPowerControllerTest, ApplyBluetoothPrimaryUserPrefOn) {
-  AddUserSessionAndStartWatchingPrefsChanges(kUser1Email);
-
-  // Set the pref to true.
-  active_user_prefs_.SetBoolean(prefs::kUserBluetoothAdapterEnabled, true);
-  EXPECT_FALSE(
-      active_user_prefs_.FindPreference(prefs::kUserBluetoothAdapterEnabled)
-          ->IsDefaultValue());
-  // Start with bluetooth power off.
-  GetBluetoothAdapter()->SetPowered(false, base::DoNothing(),
-                                    base::DoNothing());
-  EXPECT_FALSE(GetBluetoothAdapter()->IsPowered());
-
-  ApplyBluetoothPrimaryUserPref();
-
-  // Pref should be applied to trigger the bluetooth power on, and the pref
-  // value should be unchanged..
-  EXPECT_TRUE(
-      active_user_prefs_.GetBoolean(prefs::kUserBluetoothAdapterEnabled));
-  EXPECT_TRUE(GetBluetoothAdapter()->IsPowered());
-}
-
-TEST_F(BluetoothPowerControllerIntegrationTest, Basics) {
-  SetupBluetoothAdapter();
-  device::BluetoothAdapter* adapter = GetBluetoothAdapter();
-
-  // Verify toggling bluetooth before login.
-  GetController()->SetBluetoothEnabled(true);
-  EXPECT_TRUE(local_state()->GetBoolean(prefs::kSystemBluetoothAdapterEnabled));
-  EXPECT_TRUE(adapter->IsPowered());
-  GetController()->SetBluetoothEnabled(false);
-  EXPECT_FALSE(
-      local_state()->GetBoolean(prefs::kSystemBluetoothAdapterEnabled));
-  EXPECT_FALSE(adapter->IsPowered());
-
-  // Verify toggling bluetooth after login.
-  SimulateUserLogin(kUser1Email);
-  PrefService* user_prefs =
-      Shell::Get()->session_controller()->GetLastActiveUserPrefService();
-  GetController()->SetBluetoothEnabled(true);
-  EXPECT_TRUE(user_prefs->GetBoolean(prefs::kUserBluetoothAdapterEnabled));
-  EXPECT_TRUE(adapter->IsPowered());
-  GetController()->SetBluetoothEnabled(false);
-  EXPECT_FALSE(user_prefs->GetBoolean(prefs::kUserBluetoothAdapterEnabled));
-  EXPECT_FALSE(adapter->IsPowered());
-}
-
-}  // namespace ash
diff --git a/ash/system/bluetooth/tray_bluetooth_helper.cc b/ash/system/bluetooth/tray_bluetooth_helper.cc
deleted file mode 100644
index 740eb2e..0000000
--- a/ash/system/bluetooth/tray_bluetooth_helper.cc
+++ /dev/null
@@ -1,92 +0,0 @@
-// Copyright 2017 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ash/system/bluetooth/tray_bluetooth_helper.h"
-#include "ash/constants/ash_features.h"
-#include "base/bind.h"
-#include "base/check.h"
-#include "base/time/time.h"
-
-using device::mojom::BluetoothSystem;
-
-namespace ash {
-
-namespace {
-
-constexpr base::TimeDelta kUpdateFrequencyMs = base::Milliseconds(1000);
-
-}  // namespace
-
-TrayBluetoothHelper::TrayBluetoothHelper() {
-  DCHECK(!ash::features::IsBluetoothRevampEnabled());
-}
-
-TrayBluetoothHelper::~TrayBluetoothHelper() = default;
-
-void TrayBluetoothHelper::AddObserver(Observer* observer) {
-  observers_.AddObserver(observer);
-}
-
-void TrayBluetoothHelper::RemoveObserver(Observer* observer) {
-  observers_.RemoveObserver(observer);
-}
-
-const BluetoothDeviceList& TrayBluetoothHelper::GetAvailableBluetoothDevices()
-    const {
-  return cached_devices_;
-}
-
-bool TrayBluetoothHelper::IsBluetoothStateAvailable() {
-  switch (GetBluetoothState()) {
-    case BluetoothSystem::State::kUnsupported:
-    case BluetoothSystem::State::kUnavailable:
-      return false;
-    case BluetoothSystem::State::kPoweredOff:
-    case BluetoothSystem::State::kTransitioning:
-    case BluetoothSystem::State::kPoweredOn:
-      return true;
-  }
-}
-
-void TrayBluetoothHelper::StartOrStopRefreshingDeviceList() {
-  if (GetBluetoothState() == BluetoothSystem::State::kPoweredOn) {
-    DCHECK(!timer_.IsRunning());
-    UpdateDeviceCache();
-    timer_.Start(FROM_HERE, kUpdateFrequencyMs, this,
-                 &TrayBluetoothHelper::UpdateDeviceCache);
-    return;
-  }
-
-  timer_.Stop();
-  cached_devices_.clear();
-  NotifyBluetoothDeviceListChanged();
-}
-
-void TrayBluetoothHelper::UpdateDeviceCache() {
-  GetBluetoothDevices(
-      base::BindOnce(&TrayBluetoothHelper::OnGetBluetoothDevices,
-                     weak_ptr_factory_.GetWeakPtr()));
-}
-
-void TrayBluetoothHelper::OnGetBluetoothDevices(BluetoothDeviceList devices) {
-  cached_devices_ = std::move(devices);
-  NotifyBluetoothDeviceListChanged();
-}
-
-void TrayBluetoothHelper::NotifyBluetoothDeviceListChanged() {
-  for (auto& observer : observers_)
-    observer.OnBluetoothDeviceListChanged();
-}
-
-void TrayBluetoothHelper::NotifyBluetoothSystemStateChanged() {
-  for (auto& observer : observers_)
-    observer.OnBluetoothSystemStateChanged();
-}
-
-void TrayBluetoothHelper::NotifyBluetoothScanStateChanged() {
-  for (auto& observer : observers_)
-    observer.OnBluetoothScanStateChanged();
-}
-
-}  // namespace ash
diff --git a/ash/system/bluetooth/tray_bluetooth_helper.h b/ash/system/bluetooth/tray_bluetooth_helper.h
deleted file mode 100644
index 083adb4..0000000
--- a/ash/system/bluetooth/tray_bluetooth_helper.h
+++ /dev/null
@@ -1,122 +0,0 @@
-// Copyright 2017 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef ASH_SYSTEM_BLUETOOTH_TRAY_BLUETOOTH_HELPER_H_
-#define ASH_SYSTEM_BLUETOOTH_TRAY_BLUETOOTH_HELPER_H_
-
-#include <string>
-#include <vector>
-
-#include "ash/ash_export.h"
-#include "base/observer_list.h"
-#include "base/observer_list_types.h"
-#include "base/timer/timer.h"
-#include "device/bluetooth/bluetooth_common.h"
-#include "services/device/public/mojom/bluetooth_system.mojom.h"
-
-namespace ash {
-
-using BluetoothAddress = std::array<uint8_t, 6>;
-using BluetoothDeviceList = std::vector<device::mojom::BluetoothDeviceInfoPtr>;
-
-// Maps UI concepts from the Bluetooth system tray (e.g. "Bluetooth is on") into
-// device concepts ("Bluetooth adapter enabled"). Note that most Bluetooth
-// device operations are asynchronous, hence the two step initialization.
-//
-// This is a temporary virtual class used during the migration to the new
-// BluetoothSystem Mojo interface. Once the migration is over, we'll
-// de-virtualize this class and remove its legacy implementation.
-class ASH_EXPORT TrayBluetoothHelper {
- public:
-  class Observer : public base::CheckedObserver {
-   public:
-    // Called when the state of Bluetooth in the system changes.
-    virtual void OnBluetoothSystemStateChanged() {}
-
-    // Called when a Bluetooth scan has started or stopped.
-    virtual void OnBluetoothScanStateChanged() {}
-
-    // Called when a device was added, removed, or changed.
-    virtual void OnBluetoothDeviceListChanged() {}
-  };
-
-  TrayBluetoothHelper();
-
-  TrayBluetoothHelper(const TrayBluetoothHelper&) = delete;
-  TrayBluetoothHelper& operator=(const TrayBluetoothHelper&) = delete;
-
-  virtual ~TrayBluetoothHelper();
-
-  void AddObserver(Observer* observer);
-  void RemoveObserver(Observer* observer);
-
-  // Initializes and gets the adapter asynchronously.
-  virtual void Initialize() = 0;
-
-  // Returns a list of available bluetooth devices.
-  const BluetoothDeviceList& GetAvailableBluetoothDevices() const;
-
-  // Requests bluetooth start discovering devices, which happens asynchronously.
-  virtual void StartBluetoothDiscovering() = 0;
-
-  // Requests bluetooth stop discovering devices.
-  virtual void StopBluetoothDiscovering() = 0;
-
-  // Connect to a specific bluetooth device.
-  virtual void ConnectToBluetoothDevice(const BluetoothAddress& address) = 0;
-
-  // Returns the state of Bluetooth in the system e.g. has hardware support,
-  // is enabled, etc.
-  virtual device::mojom::BluetoothSystem::State GetBluetoothState() = 0;
-
-  // Returns true if there is a Bluetooth radio present.
-  bool IsBluetoothStateAvailable();
-
-  // Changes bluetooth state to |enabled|. If the current state and |enabled|
-  // are same, it does nothing. If they're different, it toggles the state and
-  // records UMA.
-  virtual void SetBluetoothEnabled(bool enabled) = 0;
-
-  // Returns whether the delegate has initiated a bluetooth discovery session.
-  virtual bool HasBluetoothDiscoverySession() = 0;
-
- protected:
-  using GetBluetoothDevicesCallback =
-      base::OnceCallback<void(BluetoothDeviceList)>;
-
-  // Using a "push" pattern where the underlying API notifies of device changes
-  // is undesireable because there are hundreds or sometimes thousands of
-  // changes per second. This could result in significantly slowing down the UI.
-  // To avoid this we use a pull pattern where we retrieve the device list every
-  // second and notify observers.
-  //
-  // Implementations of TrayBluetoothHelper should call this whenever the state
-  // changes.
-  void StartOrStopRefreshingDeviceList();
-
-  void NotifyBluetoothSystemStateChanged();
-  void NotifyBluetoothScanStateChanged();
-
-  virtual void GetBluetoothDevices(
-      GetBluetoothDevicesCallback callback) const = 0;
-
-  base::ObserverList<Observer> observers_;
-
- private:
-  void UpdateDeviceCache();
-  void OnGetBluetoothDevices(BluetoothDeviceList devices);
-  void NotifyBluetoothDeviceListChanged();
-
-  // List of cached devices. Updated every second.
-  BluetoothDeviceList cached_devices_;
-
-  // Timer used to update |cached_devices_|.
-  base::RepeatingTimer timer_;
-
-  base::WeakPtrFactory<TrayBluetoothHelper> weak_ptr_factory_{this};
-};
-
-}  // namespace ash
-
-#endif  // ASH_SYSTEM_BLUETOOTH_TRAY_BLUETOOTH_HELPER_H_
diff --git a/ash/system/bluetooth/tray_bluetooth_helper_experimental.cc b/ash/system/bluetooth/tray_bluetooth_helper_experimental.cc
deleted file mode 100644
index efb870a..0000000
--- a/ash/system/bluetooth/tray_bluetooth_helper_experimental.cc
+++ /dev/null
@@ -1,96 +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.
-
-#include "ash/system/bluetooth/tray_bluetooth_helper_experimental.h"
-
-#include <string>
-#include <utility>
-
-#include "ash/constants/ash_features.h"
-#include "ash/shell.h"
-#include "ash/system/tray/system_tray_notifier.h"
-#include "base/bind.h"
-#include "base/callback_helpers.h"
-#include "base/check.h"
-#include "mojo/public/cpp/bindings/remote.h"
-
-// base::Unretained():
-//
-// Usage of `base::Unretained(this)` is safe when calling
-// mojo::Remote<BluetoothSystem> methods because mojo::Remote<BluetoothSystem>
-// is owned by `this` and guarantees that no callbacks will be run after its
-// destruction.
-
-namespace ash {
-
-TrayBluetoothHelperExperimental::TrayBluetoothHelperExperimental(
-    mojo::PendingRemote<device::mojom::BluetoothSystemFactory>
-        bluetooth_system_factory)
-    : bluetooth_system_factory_(std::move(bluetooth_system_factory)) {
-  DCHECK(!ash::features::IsBluetoothRevampEnabled());
-}
-
-TrayBluetoothHelperExperimental::~TrayBluetoothHelperExperimental() = default;
-
-void TrayBluetoothHelperExperimental::Initialize() {
-  bluetooth_system_factory_->Create(
-      bluetooth_system_.BindNewPipeAndPassReceiver(),
-      bluetooth_system_client_receiver_.BindNewPipeAndPassRemote());
-  bluetooth_system_->GetState(
-      base::BindOnce(&TrayBluetoothHelperExperimental::OnStateChanged,
-                     // See base::Unretained() note at the top.
-                     base::Unretained(this)));
-  bluetooth_system_->GetScanState(
-      base::BindOnce(&TrayBluetoothHelperExperimental::OnScanStateChanged,
-                     // See base::Unretained() note at the top.
-                     base::Unretained(this)));
-}
-
-void TrayBluetoothHelperExperimental::StartBluetoothDiscovering() {
-  bluetooth_system_->StartScan(base::NullCallback());
-}
-
-void TrayBluetoothHelperExperimental::StopBluetoothDiscovering() {
-  bluetooth_system_->StopScan(base::NullCallback());
-}
-
-void TrayBluetoothHelperExperimental::ConnectToBluetoothDevice(
-    const BluetoothAddress& address) {
-  NOTIMPLEMENTED();
-}
-
-device::mojom::BluetoothSystem::State
-TrayBluetoothHelperExperimental::GetBluetoothState() {
-  return cached_state_;
-}
-
-void TrayBluetoothHelperExperimental::SetBluetoothEnabled(bool enabled) {
-  bluetooth_system_->SetPowered(enabled, base::NullCallback());
-}
-
-bool TrayBluetoothHelperExperimental::HasBluetoothDiscoverySession() {
-  return cached_scan_state_ ==
-         device::mojom::BluetoothSystem::ScanState::kScanning;
-}
-
-void TrayBluetoothHelperExperimental::GetBluetoothDevices(
-    GetBluetoothDevicesCallback callback) const {
-  bluetooth_system_->GetAvailableDevices(std::move(callback));
-}
-
-void TrayBluetoothHelperExperimental::OnStateChanged(
-    device::mojom::BluetoothSystem::State state) {
-  cached_state_ = state;
-
-  NotifyBluetoothSystemStateChanged();
-  StartOrStopRefreshingDeviceList();
-}
-
-void TrayBluetoothHelperExperimental::OnScanStateChanged(
-    device::mojom::BluetoothSystem::ScanState state) {
-  cached_scan_state_ = state;
-  NotifyBluetoothScanStateChanged();
-}
-
-}  // namespace ash
diff --git a/ash/system/bluetooth/tray_bluetooth_helper_experimental.h b/ash/system/bluetooth/tray_bluetooth_helper_experimental.h
deleted file mode 100644
index 3970b178..0000000
--- a/ash/system/bluetooth/tray_bluetooth_helper_experimental.h
+++ /dev/null
@@ -1,62 +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 ASH_SYSTEM_BLUETOOTH_TRAY_BLUETOOTH_HELPER_EXPERIMENTAL_H_
-#define ASH_SYSTEM_BLUETOOTH_TRAY_BLUETOOTH_HELPER_EXPERIMENTAL_H_
-
-#include "ash/ash_export.h"
-#include "ash/system/bluetooth/tray_bluetooth_helper.h"
-#include "mojo/public/cpp/bindings/pending_remote.h"
-#include "mojo/public/cpp/bindings/receiver.h"
-#include "mojo/public/cpp/bindings/remote.h"
-#include "services/device/public/mojom/bluetooth_system.mojom.h"
-
-namespace ash {
-
-// Implementation of TrayBluetoothHelper on top of the BluetoothSystem Mojo
-// interface.
-class TrayBluetoothHelperExperimental
-    : public TrayBluetoothHelper,
-      public device::mojom::BluetoothSystemClient {
- public:
-  explicit TrayBluetoothHelperExperimental(
-      mojo::PendingRemote<device::mojom::BluetoothSystemFactory>
-          bluetooth_system_factory);
-
-  TrayBluetoothHelperExperimental(const TrayBluetoothHelperExperimental&) =
-      delete;
-  TrayBluetoothHelperExperimental& operator=(
-      const TrayBluetoothHelperExperimental&) = delete;
-
-  ~TrayBluetoothHelperExperimental() override;
-
-  // TrayBluetoothHelper:
-  void Initialize() override;
-  void StartBluetoothDiscovering() override;
-  void StopBluetoothDiscovering() override;
-  void ConnectToBluetoothDevice(const BluetoothAddress& address) override;
-  device::mojom::BluetoothSystem::State GetBluetoothState() override;
-  void SetBluetoothEnabled(bool enabled) override;
-  bool HasBluetoothDiscoverySession() override;
-  void GetBluetoothDevices(GetBluetoothDevicesCallback callback) const override;
-
-  // device::mojom::BluetoothSystemClient
-  void OnStateChanged(device::mojom::BluetoothSystem::State state) override;
-  void OnScanStateChanged(
-      device::mojom::BluetoothSystem::ScanState state) override;
-
- private:
-  mojo::Remote<device::mojom::BluetoothSystemFactory> bluetooth_system_factory_;
-  mojo::Remote<device::mojom::BluetoothSystem> bluetooth_system_;
-  mojo::Receiver<device::mojom::BluetoothSystemClient>
-      bluetooth_system_client_receiver_{this};
-
-  device::mojom::BluetoothSystem::State cached_state_ =
-      device::mojom::BluetoothSystem::State::kUnavailable;
-  device::mojom::BluetoothSystem::ScanState cached_scan_state_;
-};
-
-}  // namespace ash
-
-#endif  // ASH_SYSTEM_BLUETOOTH_TRAY_BLUETOOTH_HELPER_EXPERIMENTAL_H_
diff --git a/ash/system/bluetooth/tray_bluetooth_helper_legacy.cc b/ash/system/bluetooth/tray_bluetooth_helper_legacy.cc
deleted file mode 100644
index 2e49f5d..0000000
--- a/ash/system/bluetooth/tray_bluetooth_helper_legacy.cc
+++ /dev/null
@@ -1,387 +0,0 @@
-// Copyright 2017 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ash/system/bluetooth/tray_bluetooth_helper_legacy.h"
-
-#include <string>
-#include <utility>
-
-#include "ash/constants/ash_features.h"
-#include "ash/public/cpp/system_tray_client.h"
-#include "ash/shell.h"
-#include "ash/system/bluetooth/bluetooth_power_controller.h"
-#include "ash/system/model/system_tray_model.h"
-#include "base/bind.h"
-#include "base/callback_helpers.h"
-#include "base/check.h"
-#include "base/metrics/user_metrics.h"
-#include "base/strings/string_number_conversions.h"
-#include "base/strings/string_util.h"
-#include "base/strings/stringprintf.h"
-#include "base/time/default_clock.h"
-#include "base/time/time.h"
-#include "device/bluetooth/bluetooth_adapter.h"
-#include "device/bluetooth/bluetooth_adapter_factory.h"
-#include "device/bluetooth/bluetooth_device.h"
-#include "device/bluetooth/bluetooth_discovery_session.h"
-#include "device/bluetooth/chromeos/bluetooth_utils.h"
-#include "device/bluetooth/public/cpp/bluetooth_address.h"
-#include "services/device/public/cpp/bluetooth/bluetooth_utils.h"
-
-using device::mojom::BluetoothDeviceBatteryInfo;
-using device::mojom::BluetoothDeviceBatteryInfoPtr;
-using device::mojom::BluetoothDeviceInfo;
-using device::mojom::BluetoothDeviceInfoPtr;
-using device::mojom::BluetoothSystem;
-
-namespace ash {
-namespace {
-
-// System tray shows a limited number of bluetooth devices.
-const int kMaximumDevicesShown = 50;
-
-// Client name for logging in BLE scanning.
-constexpr char kScanClientName[] = "Ash System Tray";
-
-device::ConnectionFailureReason GetConnectionFailureReason(
-    device::BluetoothDevice::ConnectErrorCode error_code) {
-  switch (error_code) {
-    case device::BluetoothDevice::ConnectErrorCode::ERROR_AUTH_FAILED:
-      return device::ConnectionFailureReason::kAuthFailed;
-    case device::BluetoothDevice::ConnectErrorCode::ERROR_AUTH_TIMEOUT:
-      return device::ConnectionFailureReason::kAuthTimeout;
-    case device::BluetoothDevice::ConnectErrorCode::ERROR_FAILED:
-      return device::ConnectionFailureReason::kFailed;
-    case device::BluetoothDevice::ConnectErrorCode::ERROR_UNKNOWN:
-      return device::ConnectionFailureReason::kUnknownConnectionError;
-    case device::BluetoothDevice::ConnectErrorCode::ERROR_UNSUPPORTED_DEVICE:
-      return device::ConnectionFailureReason::kUnsupportedDevice;
-    default:
-      return device::ConnectionFailureReason::kUnknownError;
-  }
-}
-
-void BluetoothSetDiscoveringError() {
-  LOG(ERROR) << "BluetoothSetDiscovering failed.";
-}
-
-// |reconnection_attempt_timestamp| can be null if the current device was not
-// previously paired before connection attempt.
-void OnBluetoothDeviceConnect(
-    bool was_device_already_paired,
-    device::BluetoothTransport transport,
-    base::Time reconnection_attempt_timestamp,
-    absl::optional<device::BluetoothDevice::ConnectErrorCode> error_code) {
-  if (was_device_already_paired) {
-    device::RecordUserInitiatedReconnectionAttemptResult(
-        error_code
-            ? absl::make_optional(GetConnectionFailureReason(*error_code))
-            : absl::nullopt,
-        device::UserInitiatedReconnectionUISurfaces::kSystemTray);
-    device::RecordUserInitiatedReconnectionAttemptDuration(
-        error_code
-            ? absl::make_optional(GetConnectionFailureReason(*error_code))
-            : absl::nullopt,
-        transport,
-        base::DefaultClock::GetInstance()->Now() -
-            reconnection_attempt_timestamp);
-  }
-  if (error_code) {
-    LOG(ERROR) << "Failed to connect to device, error code ["
-               << error_code.value()
-               << "]. The attempted device was previously ["
-               << (was_device_already_paired ? "paired" : "not paired") << "].";
-  }
-}
-
-std::string BluetoothAddressToStr(const BluetoothAddress& address) {
-  static constexpr char kAddressFormat[] =
-      "%02hhX:%02hhX:%02hhX:%02hhX:%02hhX:%02hhX";
-  return base::StringPrintf(kAddressFormat, address[0], address[1], address[2],
-                            address[3], address[4], address[5]);
-}
-
-// Converts a MAC Address string e.g. "00:11:22:33:44:55" into an
-// BluetoothAddress e.g. {0x00, 0x11, 0x22, 0x33, 0x44, 0x55}.
-BluetoothAddress AddressStrToBluetoothAddress(const std::string& address_str) {
-  BluetoothAddress address_array;
-
-  // If the string is not a valid encoding of a Bluetooth address, then the
-  // underlying Bluetooth API returned an incorrect value.
-  CHECK(device::ParseBluetoothAddress(address_str, address_array));
-
-  return address_array;
-}
-
-BluetoothDeviceInfoPtr GetBluetoothDeviceInfo(device::BluetoothDevice* device) {
-  BluetoothDeviceInfoPtr info = BluetoothDeviceInfo::New();
-  info->address = AddressStrToBluetoothAddress(device->GetAddress());
-  info->name = device->GetName();
-  info->is_paired = device->IsPaired();
-  info->is_blocked_by_policy = device->IsBlockedByPolicy();
-
-  absl::optional<device::BluetoothDevice::BatteryInfo> battery_info =
-      device->GetBatteryInfo(device::BluetoothDevice::BatteryType::kDefault);
-  if (battery_info && battery_info->percentage.has_value()) {
-    info->battery_info =
-        BluetoothDeviceBatteryInfo::New(battery_info->percentage.value());
-  }
-
-  switch (device->GetDeviceType()) {
-    case device::BluetoothDeviceType::UNKNOWN:
-      info->device_type = BluetoothDeviceInfo::DeviceType::kUnknown;
-      break;
-    case device::BluetoothDeviceType::COMPUTER:
-      info->device_type = BluetoothDeviceInfo::DeviceType::kComputer;
-      break;
-    case device::BluetoothDeviceType::PHONE:
-      info->device_type = BluetoothDeviceInfo::DeviceType::kPhone;
-      break;
-    case device::BluetoothDeviceType::MODEM:
-      info->device_type = BluetoothDeviceInfo::DeviceType::kModem;
-      break;
-    case device::BluetoothDeviceType::AUDIO:
-      info->device_type = BluetoothDeviceInfo::DeviceType::kAudio;
-      break;
-    case device::BluetoothDeviceType::CAR_AUDIO:
-      info->device_type = BluetoothDeviceInfo::DeviceType::kCarAudio;
-      break;
-    case device::BluetoothDeviceType::VIDEO:
-      info->device_type = BluetoothDeviceInfo::DeviceType::kVideo;
-      break;
-    case device::BluetoothDeviceType::PERIPHERAL:
-      info->device_type = BluetoothDeviceInfo::DeviceType::kPeripheral;
-      break;
-    case device::BluetoothDeviceType::JOYSTICK:
-      info->device_type = BluetoothDeviceInfo::DeviceType::kJoystick;
-      break;
-    case device::BluetoothDeviceType::GAMEPAD:
-      info->device_type = BluetoothDeviceInfo::DeviceType::kGamepad;
-      break;
-    case device::BluetoothDeviceType::KEYBOARD:
-      info->device_type = BluetoothDeviceInfo::DeviceType::kKeyboard;
-      break;
-    case device::BluetoothDeviceType::MOUSE:
-      info->device_type = BluetoothDeviceInfo::DeviceType::kMouse;
-      break;
-    case device::BluetoothDeviceType::TABLET:
-      info->device_type = BluetoothDeviceInfo::DeviceType::kTablet;
-      break;
-    case device::BluetoothDeviceType::KEYBOARD_MOUSE_COMBO:
-      info->device_type = BluetoothDeviceInfo::DeviceType::kKeyboardMouseCombo;
-      break;
-  }
-
-  if (device->IsConnecting()) {
-    info->connection_state = BluetoothDeviceInfo::ConnectionState::kConnecting;
-  } else if (device->IsConnected()) {
-    info->connection_state = BluetoothDeviceInfo::ConnectionState::kConnected;
-  } else {
-    info->connection_state =
-        BluetoothDeviceInfo::ConnectionState::kNotConnected;
-  }
-
-  return info;
-}
-
-}  // namespace
-
-TrayBluetoothHelperLegacy::TrayBluetoothHelperLegacy() {
-  DCHECK(!ash::features::IsBluetoothRevampEnabled());
-}
-
-TrayBluetoothHelperLegacy::~TrayBluetoothHelperLegacy() {
-  if (adapter_)
-    adapter_->RemoveObserver(this);
-}
-
-void TrayBluetoothHelperLegacy::InitializeOnAdapterReady(
-    scoped_refptr<device::BluetoothAdapter> adapter) {
-  adapter_ = adapter;
-  CHECK(adapter_);
-  adapter_->AddObserver(this);
-
-  last_state_ = GetBluetoothState();
-  StartOrStopRefreshingDeviceList();
-}
-
-void TrayBluetoothHelperLegacy::Initialize() {
-  device::BluetoothAdapterFactory::Get()->GetAdapter(
-      base::BindOnce(&TrayBluetoothHelperLegacy::InitializeOnAdapterReady,
-                     weak_ptr_factory_.GetWeakPtr()));
-}
-
-void TrayBluetoothHelperLegacy::StartBluetoothDiscovering() {
-  discovery_start_timestamp_ = base::DefaultClock::GetInstance()->Now();
-
-  if (HasBluetoothDiscoverySession()) {
-    LOG(WARNING) << "Already have active Bluetooth device discovery session.";
-    return;
-  }
-  VLOG(1) << "Requesting new Bluetooth device discovery session.";
-  should_run_discovery_ = true;
-  adapter_->StartDiscoverySession(
-      kScanClientName,
-      base::BindOnce(&TrayBluetoothHelperLegacy::OnStartDiscoverySession,
-                     weak_ptr_factory_.GetWeakPtr()),
-      base::BindOnce(&BluetoothSetDiscoveringError));
-}
-
-void TrayBluetoothHelperLegacy::StopBluetoothDiscovering() {
-  discovery_start_timestamp_ = base::Time();
-
-  should_run_discovery_ = false;
-  if (!HasBluetoothDiscoverySession()) {
-    LOG(WARNING) << "No active Bluetooth device discovery session.";
-    return;
-  }
-  VLOG(1) << "Stopping Bluetooth device discovery session.";
-  discovery_session_.reset();
-}
-
-void TrayBluetoothHelperLegacy::ConnectToBluetoothDevice(
-    const BluetoothAddress& address) {
-  device::BluetoothDevice* device =
-      adapter_->GetDevice(BluetoothAddressToStr(address));
-  if (!device || device->IsConnecting() ||
-      (device->IsConnected() && device->IsPaired())) {
-    return;
-  }
-
-  if (!discovery_start_timestamp_.is_null()) {
-    device::RecordDeviceSelectionDuration(
-        base::DefaultClock::GetInstance()->Now() - discovery_start_timestamp_,
-        device::DeviceSelectionUISurfaces::kSystemTray, device->IsPaired(),
-        device->GetType());
-    discovery_start_timestamp_ = base::Time();
-  }
-
-  // Extra consideration taken for already paired devices, for metrics
-  // collection.
-  if (device->IsPaired()) {
-    base::RecordAction(
-        base::UserMetricsAction("StatusArea_Bluetooth_Connect_Known"));
-
-    if (!device->IsConnectable()) {
-      device::RecordUserInitiatedReconnectionAttemptResult(
-          device::ConnectionFailureReason::kNotConnectable,
-          device::UserInitiatedReconnectionUISurfaces::kSystemTray);
-      return;
-    }
-
-    device->Connect(
-        /*pairing_delegate=*/nullptr,
-        base::BindOnce(&OnBluetoothDeviceConnect,
-                       /*was_device_already_paired=*/true, device->GetType(),
-                       base::DefaultClock::GetInstance()->Now()));
-    return;
-  }
-
-  // Simply connect without pairing for devices which do not support pairing.
-  if (!device->IsPairable()) {
-    // Use a null timestamp to represent the fact that the device was not
-    // already paired.
-    base::Time reconnection_attempt_timestamp;
-    device->Connect(
-        /*pairing_delegate=*/nullptr,
-        base::BindOnce(&OnBluetoothDeviceConnect,
-                       /*was_device_already_paired=*/false, device->GetType(),
-                       reconnection_attempt_timestamp));
-    return;
-  }
-
-  // Show pairing dialog for the unpaired device; this kicks off pairing.
-  Shell::Get()->system_tray_model()->client()->ShowBluetoothPairingDialog(
-      device->GetAddress());
-}
-
-BluetoothSystem::State TrayBluetoothHelperLegacy::GetBluetoothState() {
-  // Eventually this will use the BluetoothSystem Mojo interface, but for now
-  // use the current Bluetooth API to get a BluetoothSystem::State.
-  if (!adapter_)
-    return BluetoothSystem::State::kUnavailable;
-  if (!adapter_->IsPresent())
-    return BluetoothSystem::State::kUnavailable;
-  if (adapter_->IsPowered())
-    return BluetoothSystem::State::kPoweredOn;
-
-  return BluetoothSystem::State::kPoweredOff;
-}
-
-void TrayBluetoothHelperLegacy::SetBluetoothEnabled(bool enabled) {
-  if (enabled != (GetBluetoothState() == BluetoothSystem::State::kPoweredOn)) {
-    if (enabled) {
-      base::RecordAction(
-          base::UserMetricsAction("StatusArea_Bluetooth_Enabled"));
-    } else {
-      base::RecordAction(
-          base::UserMetricsAction("StatusArea_Bluetooth_Disabled"));
-    }
-  }
-
-  Shell::Get()->bluetooth_power_controller()->SetBluetoothEnabled(enabled);
-}
-
-bool TrayBluetoothHelperLegacy::HasBluetoothDiscoverySession() {
-  return discovery_session_ && discovery_session_->IsActive();
-}
-
-void TrayBluetoothHelperLegacy::GetBluetoothDevices(
-    GetBluetoothDevicesCallback callback) const {
-  BluetoothDeviceList device_list;
-  device::BluetoothAdapter::DeviceList devices =
-      device::FilterBluetoothDeviceList(adapter_->GetDevices(),
-                                        device::BluetoothFilterType::KNOWN,
-                                        kMaximumDevicesShown);
-  for (device::BluetoothDevice* device : devices)
-    device_list.push_back(GetBluetoothDeviceInfo(device));
-
-  base::ThreadTaskRunnerHandle::Get()->PostTask(
-      FROM_HERE, base::BindOnce(std::move(callback), std::move(device_list)));
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// BluetoothAdapter::Observer:
-
-void TrayBluetoothHelperLegacy::AdapterPresentChanged(
-    device::BluetoothAdapter* adapter,
-    bool present) {
-  if (last_state_ == GetBluetoothState())
-    return;
-
-  last_state_ = GetBluetoothState();
-  NotifyBluetoothSystemStateChanged();
-  StartOrStopRefreshingDeviceList();
-}
-
-void TrayBluetoothHelperLegacy::AdapterPoweredChanged(
-    device::BluetoothAdapter* adapter,
-    bool powered) {
-  if (last_state_ == GetBluetoothState())
-    return;
-
-  last_state_ = GetBluetoothState();
-  NotifyBluetoothSystemStateChanged();
-  StartOrStopRefreshingDeviceList();
-}
-
-void TrayBluetoothHelperLegacy::AdapterDiscoveringChanged(
-    device::BluetoothAdapter* adapter,
-    bool discovering) {
-  NotifyBluetoothScanStateChanged();
-}
-
-void TrayBluetoothHelperLegacy::OnStartDiscoverySession(
-    std::unique_ptr<device::BluetoothDiscoverySession> discovery_session) {
-  // If the discovery session was returned after a request to stop discovery
-  // (e.g. the user dismissed the Bluetooth detailed view before the call
-  // returned), don't claim the discovery session and let it clean up.
-  if (!should_run_discovery_)
-    return;
-  VLOG(1) << "Claiming new Bluetooth device discovery session.";
-  discovery_session_ = std::move(discovery_session);
-  NotifyBluetoothScanStateChanged();
-}
-
-}  // namespace ash
diff --git a/ash/system/bluetooth/tray_bluetooth_helper_legacy.h b/ash/system/bluetooth/tray_bluetooth_helper_legacy.h
deleted file mode 100644
index 17650ae..0000000
--- a/ash/system/bluetooth/tray_bluetooth_helper_legacy.h
+++ /dev/null
@@ -1,94 +0,0 @@
-// Copyright 2017 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef ASH_SYSTEM_BLUETOOTH_TRAY_BLUETOOTH_HELPER_LEGACY_H_
-#define ASH_SYSTEM_BLUETOOTH_TRAY_BLUETOOTH_HELPER_LEGACY_H_
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "ash/ash_export.h"
-#include "ash/system/bluetooth/tray_bluetooth_helper.h"
-#include "base/memory/ref_counted.h"
-#include "base/memory/weak_ptr.h"
-#include "base/time/time.h"
-#include "device/bluetooth/bluetooth_adapter.h"
-#include "services/device/public/mojom/bluetooth_system.mojom.h"
-
-namespace base {
-class Time;
-}  // namespace base
-
-namespace device {
-class BluetoothDiscoverySession;
-}  // namespace device
-
-namespace ash {
-
-// Implementation of TrayBluetoothHelper on top of the //device/bluetooth/ APIs.
-// Exported for tests.
-class ASH_EXPORT TrayBluetoothHelperLegacy
-    : public TrayBluetoothHelper,
-      public device::BluetoothAdapter::Observer {
- public:
-  TrayBluetoothHelperLegacy();
-
-  TrayBluetoothHelperLegacy(const TrayBluetoothHelperLegacy&) = delete;
-  TrayBluetoothHelperLegacy& operator=(const TrayBluetoothHelperLegacy&) =
-      delete;
-
-  ~TrayBluetoothHelperLegacy() override;
-
-  // Completes initialization after the Bluetooth adapter is ready.
-  void InitializeOnAdapterReady(
-      scoped_refptr<device::BluetoothAdapter> adapter);
-
-  // TrayBluetoothHelper:
-  void Initialize() override;
-  void StartBluetoothDiscovering() override;
-  void StopBluetoothDiscovering() override;
-  void ConnectToBluetoothDevice(const BluetoothAddress& address) override;
-  device::mojom::BluetoothSystem::State GetBluetoothState() override;
-  void SetBluetoothEnabled(bool enabled) override;
-  bool HasBluetoothDiscoverySession() override;
-  void GetBluetoothDevices(GetBluetoothDevicesCallback callback) const override;
-
-  // BluetoothAdapter::Observer:
-  void AdapterPresentChanged(device::BluetoothAdapter* adapter,
-                             bool present) override;
-  void AdapterPoweredChanged(device::BluetoothAdapter* adapter,
-                             bool powered) override;
-  void AdapterDiscoveringChanged(device::BluetoothAdapter* adapter,
-                                 bool discovering) override;
-
- private:
-  void OnStartDiscoverySession(
-      std::unique_ptr<device::BluetoothDiscoverySession> discovery_session);
-
-  bool should_run_discovery_ = false;
-  scoped_refptr<device::BluetoothAdapter> adapter_;
-  std::unique_ptr<device::BluetoothDiscoverySession> discovery_session_;
-
-  // AdapterPoweredChanged gets called right after AdapterPresentChanged when an
-  // adapter is added or removed. This causes us to call
-  // Observer::OnBluetoothStateChanged() a second time without the state
-  // actually changing. To avoid this, we cache the state whenever
-  // AdapterPresentChanged and AdapterPoweredChanged get called and only notify
-  // if the new state is different than the cached state.
-  device::mojom::BluetoothSystem::State last_state_ =
-      device::mojom::BluetoothSystem::State::kUnavailable;
-
-  // The time at which discovery started, effectively when the user opened the
-  // System Tray Bluetooth options with Bluetooth on, or when Bluetooth turned
-  // on while the Bluetooth options were open.
-  base::Time discovery_start_timestamp_;
-
-  // Object could be deleted during a prolonged Bluetooth operation.
-  base::WeakPtrFactory<TrayBluetoothHelperLegacy> weak_ptr_factory_{this};
-};
-
-}  // namespace ash
-
-#endif  // ASH_SYSTEM_BLUETOOTH_TRAY_BLUETOOTH_HELPER_LEGACY_H_
diff --git a/ash/system/bluetooth/tray_bluetooth_helper_legacy_unittest.cc b/ash/system/bluetooth/tray_bluetooth_helper_legacy_unittest.cc
deleted file mode 100644
index 1b3a40a..0000000
--- a/ash/system/bluetooth/tray_bluetooth_helper_legacy_unittest.cc
+++ /dev/null
@@ -1,348 +0,0 @@
-// Copyright 2017 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ash/system/bluetooth/tray_bluetooth_helper_legacy.h"
-
-#include <string>
-#include <vector>
-
-#include "ash/constants/ash_features.h"
-#include "ash/constants/ash_switches.h"
-#include "ash/system/bluetooth/bluetooth_power_controller.h"
-#include "ash/system/bluetooth/tray_bluetooth_helper.h"
-#include "ash/test/ash_test_base.h"
-#include "base/callback_helpers.h"
-#include "base/command_line.h"
-#include "base/run_loop.h"
-#include "base/strings/utf_string_conversions.h"
-#include "base/test/scoped_feature_list.h"
-#include "dbus/object_path.h"
-#include "device/bluetooth/dbus/bluez_dbus_manager.h"
-#include "device/bluetooth/dbus/fake_bluetooth_adapter_client.h"
-#include "device/bluetooth/dbus/fake_bluetooth_device_client.h"
-#include "services/device/public/cpp/bluetooth/bluetooth_utils.h"
-#include "services/device/public/mojom/bluetooth_system.mojom.h"
-
-using bluez::BluezDBusManager;
-using bluez::FakeBluetoothAdapterClient;
-using bluez::FakeBluetoothDeviceClient;
-using device::mojom::BluetoothSystem;
-
-namespace ash {
-namespace {
-
-// FakeBluetoothDeviceClient::kDisplayPinCodeAddress but in a BluetoothAddress.
-constexpr BluetoothAddress kDisplayPinCodeAddress = {0x28, 0x37, 0x37,
-                                                     0x00, 0x00, 0x00};
-// FakeBluetoothDeviceClient::kLowEnergyAddress but in a BluetoothAddress.
-constexpr BluetoothAddress kLowEnergyAddress = {0x00, 0x1A, 0x11,
-                                                0x00, 0x15, 0x30};
-
-// Returns true if device with |address| exists in the filtered device list.
-// Returns false otherwise.
-bool ExistInFilteredDevices(const BluetoothAddress& address,
-                            const BluetoothDeviceList& filtered_devices) {
-  for (const auto& device : filtered_devices) {
-    if (device->address == address)
-      return true;
-  }
-  return false;
-}
-
-// Test observer that counts the number of times methods are called and what the
-// state was then the OnBluetoothSystemChanged method is called.
-class TestTrayBluetoothHelperObserver : public TrayBluetoothHelper::Observer {
- public:
-  TestTrayBluetoothHelperObserver(TrayBluetoothHelper* helper)
-      : helper_(helper) {}
-  ~TestTrayBluetoothHelperObserver() override = default;
-
-  void Reset() {
-    system_state_changed_count_ = 0;
-    system_states_.clear();
-    scan_state_changed_count_ = 0;
-    device_list_changed_count_ = 0;
-  }
-
-  void OnBluetoothSystemStateChanged() override {
-    ++system_state_changed_count_;
-    system_states_.push_back(helper_->GetBluetoothState());
-  }
-
-  void OnBluetoothScanStateChanged() override { ++scan_state_changed_count_; }
-
-  void OnBluetoothDeviceListChanged() override { ++device_list_changed_count_; }
-
-  TrayBluetoothHelper* helper_;
-
-  size_t system_state_changed_count_ = 0;
-
-  std::vector<BluetoothSystem::State> system_states_;
-
-  size_t scan_state_changed_count_ = 0;
-  size_t device_list_changed_count_ = 0;
-};
-
-class TrayBluetoothHelperLegacyTest : public AshTestBase {
- public:
-  void SetUp() override {
-    // These tests should only be run with the kBluetoothRevamp feature flag is
-    // disabled, and so we force it off here and ensure that the local state
-    // prefs that would have been registered had the feature flag been off are
-    // registered.
-    if (ash::features::IsBluetoothRevampEnabled()) {
-      feature_list_.InitAndDisableFeature(features::kBluetoothRevamp);
-      BluetoothPowerController::RegisterLocalStatePrefs(
-          local_state()->registry());
-    }
-    AshTestBase::SetUp();
-  }
-
- private:
-  base::test::ScopedFeatureList feature_list_;
-};
-
-// Tests basic functionality.
-TEST_F(TrayBluetoothHelperLegacyTest, Basics) {
-  // Set Bluetooth discovery simulation delay to 0 so the test doesn't have to
-  // wait or use timers.
-  FakeBluetoothAdapterClient* adapter_client =
-      static_cast<FakeBluetoothAdapterClient*>(
-          BluezDBusManager::Get()->GetBluetoothAdapterClient());
-  adapter_client->SetSimulationIntervalMs(0);
-  adapter_client
-      ->GetProperties(
-          dbus::ObjectPath(bluez::FakeBluetoothAdapterClient::kAdapterPath))
-      ->powered.ReplaceValue(true);
-
-  FakeBluetoothDeviceClient* device_client =
-      static_cast<FakeBluetoothDeviceClient*>(
-          BluezDBusManager::Get()->GetBluetoothDeviceClient());
-  // A classic bluetooth keyboard device shouldn't be filtered out.
-  device_client->CreateDevice(
-      dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath),
-      dbus::ObjectPath(FakeBluetoothDeviceClient::kDisplayPinCodePath));
-  // A low energy bluetooth heart rate monitor should be filtered out.
-  device_client->CreateDevice(
-      dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath),
-      dbus::ObjectPath(FakeBluetoothDeviceClient::kLowEnergyPath));
-
-  TrayBluetoothHelperLegacy helper;
-  helper.Initialize();
-  base::RunLoop().RunUntilIdle();
-  EXPECT_EQ(device::mojom::BluetoothSystem::State::kPoweredOn,
-            helper.GetBluetoothState());
-  EXPECT_FALSE(helper.HasBluetoothDiscoverySession());
-
-  const BluetoothDeviceList& devices = helper.GetAvailableBluetoothDevices();
-  // The devices are fake in tests, so don't assume any particular number.
-  EXPECT_FALSE(devices.empty());
-  EXPECT_TRUE(ExistInFilteredDevices(kDisplayPinCodeAddress, devices));
-  EXPECT_FALSE(ExistInFilteredDevices(kLowEnergyAddress, devices));
-  ASSERT_FALSE(devices[0]->is_blocked_by_policy);
-
-  helper.StartBluetoothDiscovering();
-  base::RunLoop().RunUntilIdle();
-  EXPECT_TRUE(helper.HasBluetoothDiscoverySession());
-
-  helper.StopBluetoothDiscovering();
-  base::RunLoop().RunUntilIdle();
-  EXPECT_FALSE(helper.HasBluetoothDiscoverySession());
-}
-
-// Tests GetBluetoothState() returns the right value based on the adapter state.
-TEST_F(TrayBluetoothHelperLegacyTest, GetBluetoothState) {
-  TrayBluetoothHelperLegacy helper;
-  // Purposely don't call TrayBluetoothHelperLegacy::Initialize() to simulate
-  // that the BluetoothAdapter object hasn't been retrieved yet.
-  EXPECT_EQ(BluetoothSystem::State::kUnavailable, helper.GetBluetoothState());
-
-  FakeBluetoothAdapterClient* adapter_client =
-      static_cast<FakeBluetoothAdapterClient*>(
-          BluezDBusManager::Get()->GetBluetoothAdapterClient());
-
-  // Mark all adapters as not present to simulate no adapters.
-  adapter_client->SetPresent(false);
-  adapter_client->SetSecondPresent(false);
-  helper.Initialize();
-  base::RunLoop().RunUntilIdle();
-
-  EXPECT_EQ(BluetoothSystem::State::kUnavailable, helper.GetBluetoothState());
-
-  // Make adapter present but turn it off.
-  adapter_client->SetPresent(true);
-  adapter_client
-      ->GetProperties(
-          dbus::ObjectPath(bluez::FakeBluetoothAdapterClient::kAdapterPath))
-      ->powered.Set(false, base::DoNothing());
-
-  EXPECT_EQ(BluetoothSystem::State::kPoweredOff, helper.GetBluetoothState());
-
-  // Turn adapter on.
-  adapter_client
-      ->GetProperties(
-          dbus::ObjectPath(bluez::FakeBluetoothAdapterClient::kAdapterPath))
-      ->powered.Set(true, base::DoNothing());
-
-  EXPECT_EQ(BluetoothSystem::State::kPoweredOn, helper.GetBluetoothState());
-}
-
-// Tests OnBluetoothSystemStateChanged() gets called whenever the state changes.
-TEST_F(TrayBluetoothHelperLegacyTest, OnBluetoothSystemStateChanged) {
-  TrayBluetoothHelperLegacy helper;
-  TestTrayBluetoothHelperObserver observer(&helper);
-  helper.AddObserver(&observer);
-
-  // Purposely don't call TrayBluetoothHelperLegacy::Initialize() to simulate
-  // that the BluetoothAdapter object hasn't been retrieved yet.
-  EXPECT_EQ(BluetoothSystem::State::kUnavailable, helper.GetBluetoothState());
-  EXPECT_EQ(0u, observer.system_state_changed_count_);
-
-  FakeBluetoothAdapterClient* adapter_client =
-      static_cast<FakeBluetoothAdapterClient*>(
-          BluezDBusManager::Get()->GetBluetoothAdapterClient());
-
-  // Mark all adapters as not present to simulate no adapters.
-  adapter_client->SetPresent(false);
-  adapter_client->SetSecondPresent(false);
-  helper.Initialize();
-  base::RunLoop().RunUntilIdle();
-
-  EXPECT_EQ(BluetoothSystem::State::kUnavailable, helper.GetBluetoothState());
-  EXPECT_EQ(0u, observer.system_state_changed_count_);
-
-  // Turn off the adapter and make it present to simulate a powered off adapter
-  // being added.
-  adapter_client
-      ->GetProperties(
-          dbus::ObjectPath(bluez::FakeBluetoothAdapterClient::kAdapterPath))
-      ->powered.ReplaceValue(false);
-  adapter_client->SetPresent(true);
-
-  EXPECT_EQ(BluetoothSystem::State::kPoweredOff, helper.GetBluetoothState());
-  EXPECT_EQ(1u, observer.system_state_changed_count_);
-  EXPECT_EQ(std::vector<BluetoothSystem::State>(
-                {BluetoothSystem::State::kPoweredOff}),
-            observer.system_states_);
-  observer.Reset();
-
-  // Turn adapter on.
-  adapter_client
-      ->GetProperties(
-          dbus::ObjectPath(bluez::FakeBluetoothAdapterClient::kAdapterPath))
-      ->powered.ReplaceValue(true);
-
-  EXPECT_EQ(BluetoothSystem::State::kPoweredOn, helper.GetBluetoothState());
-  EXPECT_EQ(1u, observer.system_state_changed_count_);
-  EXPECT_EQ(
-      std::vector<BluetoothSystem::State>({BluetoothSystem::State::kPoweredOn}),
-      observer.system_states_);
-  observer.Reset();
-
-  // Remove the adapter.
-  adapter_client->SetPresent(false);
-  EXPECT_EQ(BluetoothSystem::State::kUnavailable, helper.GetBluetoothState());
-  EXPECT_EQ(1u, observer.system_state_changed_count_);
-  EXPECT_EQ(std::vector<BluetoothSystem::State>(
-                {BluetoothSystem::State::kUnavailable}),
-            observer.system_states_);
-  observer.Reset();
-
-  // Turn on the adapter and make it present to simulate a powered on adapter
-  // being added.
-  adapter_client
-      ->GetProperties(
-          dbus::ObjectPath(bluez::FakeBluetoothAdapterClient::kAdapterPath))
-      ->powered.ReplaceValue(true);
-  adapter_client->SetPresent(true);
-
-  EXPECT_EQ(BluetoothSystem::State::kPoweredOn, helper.GetBluetoothState());
-  EXPECT_EQ(1u, observer.system_state_changed_count_);
-  EXPECT_EQ(
-      std::vector<BluetoothSystem::State>({BluetoothSystem::State::kPoweredOn}),
-      observer.system_states_);
-  observer.Reset();
-
-  // Turn off the adapter.
-  adapter_client
-      ->GetProperties(
-          dbus::ObjectPath(bluez::FakeBluetoothAdapterClient::kAdapterPath))
-      ->powered.ReplaceValue(false);
-
-  EXPECT_EQ(BluetoothSystem::State::kPoweredOff, helper.GetBluetoothState());
-  EXPECT_EQ(1u, observer.system_state_changed_count_);
-  EXPECT_EQ(std::vector<BluetoothSystem::State>(
-                {BluetoothSystem::State::kPoweredOff}),
-            observer.system_states_);
-  observer.Reset();
-}
-
-// Tests the Bluetooth device list when UnfilteredBluetoothDevices feature is
-// enabled.
-TEST_F(TrayBluetoothHelperLegacyTest, UnfilteredBluetoothDevices) {
-  base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess();
-  cmd_line->AppendSwitch(switches::kUnfilteredBluetoothDevices);
-
-  // Set Bluetooth discovery simulation delay to 0 so the test doesn't have to
-  // wait or use timers.
-  FakeBluetoothAdapterClient* adapter_client =
-      static_cast<FakeBluetoothAdapterClient*>(
-          BluezDBusManager::Get()->GetBluetoothAdapterClient());
-  adapter_client->SetSimulationIntervalMs(0);
-  adapter_client
-      ->GetProperties(
-          dbus::ObjectPath(bluez::FakeBluetoothAdapterClient::kAdapterPath))
-      ->powered.ReplaceValue(true);
-
-  FakeBluetoothDeviceClient* device_client =
-      static_cast<FakeBluetoothDeviceClient*>(
-          BluezDBusManager::Get()->GetBluetoothDeviceClient());
-  // All devices should be shown (unfiltered).
-  device_client->CreateDevice(
-      dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath),
-      dbus::ObjectPath(FakeBluetoothDeviceClient::kDisplayPinCodePath));
-  device_client->CreateDevice(
-      dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath),
-      dbus::ObjectPath(FakeBluetoothDeviceClient::kLowEnergyPath));
-
-  TrayBluetoothHelperLegacy helper;
-  helper.Initialize();
-  base::RunLoop().RunUntilIdle();
-
-  const BluetoothDeviceList& devices = helper.GetAvailableBluetoothDevices();
-  // The devices are fake in tests, so don't assume any particular number.
-  EXPECT_TRUE(ExistInFilteredDevices(kDisplayPinCodeAddress, devices));
-  EXPECT_TRUE(ExistInFilteredDevices(kLowEnergyAddress, devices));
-}
-
-TEST_F(TrayBluetoothHelperLegacyTest, BluetoothAddress) {
-  // Set Bluetooth discovery simulation delay to 0 so the test doesn't have to
-  // wait or use timers.
-  FakeBluetoothAdapterClient* adapter_client =
-      static_cast<FakeBluetoothAdapterClient*>(
-          BluezDBusManager::Get()->GetBluetoothAdapterClient());
-  adapter_client->SetSimulationIntervalMs(0);
-  adapter_client
-      ->GetProperties(
-          dbus::ObjectPath(bluez::FakeBluetoothAdapterClient::kAdapterPath))
-      ->powered.ReplaceValue(true);
-
-  FakeBluetoothDeviceClient* device_client =
-      static_cast<FakeBluetoothDeviceClient*>(
-          BluezDBusManager::Get()->GetBluetoothDeviceClient());
-  device_client->CreateDevice(
-      dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath),
-      dbus::ObjectPath(FakeBluetoothDeviceClient::kDisplayPinCodePath));
-
-  TrayBluetoothHelperLegacy helper;
-  helper.Initialize();
-  base::RunLoop().RunUntilIdle();
-
-  const BluetoothDeviceList& devices = helper.GetAvailableBluetoothDevices();
-  ASSERT_EQ(1u, devices.size());
-  EXPECT_EQ(kDisplayPinCodeAddress, devices[0]->address);
-}
-
-}  // namespace
-}  // namespace ash
diff --git a/ash/system/bluetooth/unified_bluetooth_detailed_view_controller.cc b/ash/system/bluetooth/unified_bluetooth_detailed_view_controller.cc
deleted file mode 100644
index ff107dce..0000000
--- a/ash/system/bluetooth/unified_bluetooth_detailed_view_controller.cc
+++ /dev/null
@@ -1,185 +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.
-
-#include "ash/system/bluetooth/unified_bluetooth_detailed_view_controller.h"
-
-#include <set>
-#include <string>
-#include <utility>
-
-#include "ash/session/session_controller_impl.h"
-#include "ash/shell.h"
-#include "ash/strings/grit/ash_strings.h"
-#include "ash/system/bluetooth/bluetooth_detailed_view_legacy.h"
-#include "ash/system/bluetooth/tray_bluetooth_helper.h"
-#include "ash/system/tray/detailed_view_delegate.h"
-#include "ash/system/tray/system_tray_notifier.h"
-#include "base/containers/contains.h"
-#include "base/containers/cxx20_erase.h"
-#include "ui/base/l10n/l10n_util.h"
-
-using device::mojom::BluetoothSystem;
-using device::mojom::BluetoothDeviceInfo;
-using device::mojom::BluetoothDeviceInfoPtr;
-
-namespace ash {
-
-namespace {
-
-// Updates bluetooth device |device| in the |list|. If it is new, append to the
-// end of the |list|; otherwise, keep it at the same place, but update the data
-// with new device info provided by |device|.
-void UpdateBluetoothDeviceListHelper(BluetoothDeviceList* list,
-                                     BluetoothDeviceInfoPtr new_device) {
-  for (auto& device : *list) {
-    if (device->address == new_device->address) {
-      device.Swap(&new_device);
-      return;
-    }
-  }
-
-  list->push_back(std::move(new_device));
-}
-
-// Removes the obsolete BluetoothDevices from |list|, if they are not in the
-// |new_device_address_list|.
-void RemoveObsoleteBluetoothDevicesFromList(
-    BluetoothDeviceList* device_list,
-    const std::set<BluetoothAddress>& new_device_address_list) {
-  base::EraseIf(*device_list, [&new_device_address_list](
-                                  const BluetoothDeviceInfoPtr& info) {
-    return !base::Contains(new_device_address_list, info->address);
-  });
-}
-
-}  // namespace
-
-UnifiedBluetoothDetailedViewController::UnifiedBluetoothDetailedViewController(
-    UnifiedSystemTrayController* tray_controller)
-    : detailed_view_delegate_(
-          std::make_unique<DetailedViewDelegate>(tray_controller)) {
-  Shell::Get()->tray_bluetooth_helper()->AddObserver(this);
-}
-
-UnifiedBluetoothDetailedViewController::
-    ~UnifiedBluetoothDetailedViewController() {
-  // Stop discovering bluetooth devices when exiting BT detailed view.
-  TrayBluetoothHelper* helper = Shell::Get()->tray_bluetooth_helper();
-  if (!helper)
-    return;
-
-  helper->RemoveObserver(this);
-
-  if (helper->HasBluetoothDiscoverySession()) {
-    helper->StopBluetoothDiscovering();
-  }
-}
-
-views::View* UnifiedBluetoothDetailedViewController::CreateView() {
-  DCHECK(!view_);
-  view_ = new BluetoothDetailedViewLegacy(
-      detailed_view_delegate_.get(),
-      Shell::Get()->session_controller()->login_status());
-  OnBluetoothSystemStateChanged();
-  return view_;
-}
-
-std::u16string UnifiedBluetoothDetailedViewController::GetAccessibleName()
-    const {
-  return l10n_util::GetStringUTF16(
-      IDS_ASH_QUICK_SETTINGS_BUBBLE_BLUETOOTH_SETTINGS_ACCESSIBLE_DESCRIPTION);
-}
-
-void UnifiedBluetoothDetailedViewController::OnBluetoothSystemStateChanged() {
-  auto* helper = Shell::Get()->tray_bluetooth_helper();
-  const BluetoothSystem::State bluetooth_state = helper->GetBluetoothState();
-
-  if (bluetooth_state == BluetoothSystem::State::kPoweredOn) {
-    // If Bluetooth was just turned on, start discovering.
-    Shell::Get()->tray_bluetooth_helper()->StartBluetoothDiscovering();
-  }
-
-  UpdateDeviceListAndUI();
-}
-
-void UnifiedBluetoothDetailedViewController::OnBluetoothScanStateChanged() {
-  UpdateDeviceListAndUI();
-}
-
-void UnifiedBluetoothDetailedViewController::OnBluetoothDeviceListChanged() {
-  UpdateDeviceListAndUI();
-}
-
-void UnifiedBluetoothDetailedViewController::UpdateDeviceListAndUI() {
-  UpdateBluetoothDeviceList();
-
-  auto* helper = Shell::Get()->tray_bluetooth_helper();
-  bool bluetooth_on =
-      helper->GetBluetoothState() == BluetoothSystem::State::kPoweredOn;
-
-  // Update toggle.
-  view_->SetToggleIsOn(bluetooth_on);
-
-  // Update loading indicator.
-  if (helper->HasBluetoothDiscoverySession())
-    view_->ShowLoadingIndicator();
-  else
-    view_->HideLoadingIndicator();
-
-  // Update scroll list or show "BT disabled" panel
-  if (bluetooth_on) {
-    view_->HideBluetoothDisabledPanel();
-    view_->UpdateDeviceScrollList(connected_devices_, connecting_devices_,
-                                  paired_not_connected_devices_,
-                                  discovered_not_paired_devices_);
-
-    return;
-  }
-
-  // If Bluetooth is disabled, show a panel which only indicates that it is
-  // disabled, instead of the scroller with Bluetooth devices.
-  view_->ShowBluetoothDisabledPanel();
-}
-
-void UnifiedBluetoothDetailedViewController::UpdateBluetoothDeviceList() {
-  std::set<BluetoothAddress> new_connecting_devices;
-  std::set<BluetoothAddress> new_connected_devices;
-  std::set<BluetoothAddress> new_paired_not_connected_devices;
-  std::set<BluetoothAddress> new_discovered_not_paired_devices;
-
-  for (const auto& device :
-       Shell::Get()->tray_bluetooth_helper()->GetAvailableBluetoothDevices()) {
-    auto device_clone = device->Clone();
-    if (device->connection_state ==
-        BluetoothDeviceInfo::ConnectionState::kConnecting) {
-      new_connecting_devices.insert(device->address);
-      UpdateBluetoothDeviceListHelper(&connecting_devices_,
-                                      std::move(device_clone));
-    } else if (device->connection_state ==
-                   BluetoothDeviceInfo::ConnectionState::kConnected &&
-               device->is_paired) {
-      new_connected_devices.insert(device->address);
-      UpdateBluetoothDeviceListHelper(&connected_devices_,
-                                      std::move(device_clone));
-    } else if (device->is_paired) {
-      new_paired_not_connected_devices.insert(device->address);
-      UpdateBluetoothDeviceListHelper(&paired_not_connected_devices_,
-                                      std::move(device_clone));
-    } else {
-      new_discovered_not_paired_devices.insert(device->address);
-      UpdateBluetoothDeviceListHelper(&discovered_not_paired_devices_,
-                                      std::move(device_clone));
-    }
-  }
-  RemoveObsoleteBluetoothDevicesFromList(&connecting_devices_,
-                                         new_connecting_devices);
-  RemoveObsoleteBluetoothDevicesFromList(&connected_devices_,
-                                         new_connected_devices);
-  RemoveObsoleteBluetoothDevicesFromList(&paired_not_connected_devices_,
-                                         new_paired_not_connected_devices);
-  RemoveObsoleteBluetoothDevicesFromList(&discovered_not_paired_devices_,
-                                         new_discovered_not_paired_devices);
-}
-
-}  // namespace ash
diff --git a/ash/system/bluetooth/unified_bluetooth_detailed_view_controller.h b/ash/system/bluetooth/unified_bluetooth_detailed_view_controller.h
deleted file mode 100644
index 4d7a4a4..0000000
--- a/ash/system/bluetooth/unified_bluetooth_detailed_view_controller.h
+++ /dev/null
@@ -1,61 +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 ASH_SYSTEM_BLUETOOTH_UNIFIED_BLUETOOTH_DETAILED_VIEW_CONTROLLER_H_
-#define ASH_SYSTEM_BLUETOOTH_UNIFIED_BLUETOOTH_DETAILED_VIEW_CONTROLLER_H_
-
-#include <memory>
-
-#include "ash/ash_export.h"
-#include "ash/system/bluetooth/tray_bluetooth_helper.h"
-#include "ash/system/unified/detailed_view_controller.h"
-#include "base/timer/timer.h"
-
-namespace ash {
-
-class BluetoothDetailedViewLegacy;
-class DetailedViewDelegate;
-class UnifiedSystemTrayController;
-
-// Controller of Bluetooth detailed view in UnifiedSystemTray.
-class ASH_EXPORT UnifiedBluetoothDetailedViewController
-    : public DetailedViewController,
-      public TrayBluetoothHelper::Observer {
- public:
-  explicit UnifiedBluetoothDetailedViewController(
-      UnifiedSystemTrayController* tray_controller);
-
-  UnifiedBluetoothDetailedViewController(
-      const UnifiedBluetoothDetailedViewController&) = delete;
-  UnifiedBluetoothDetailedViewController& operator=(
-      const UnifiedBluetoothDetailedViewController&) = delete;
-
-  ~UnifiedBluetoothDetailedViewController() override;
-
-  // DetailedViewControllerBase:
-  views::View* CreateView() override;
-  std::u16string GetAccessibleName() const override;
-
-  // BluetoothObserver:
-  void OnBluetoothSystemStateChanged() override;
-  void OnBluetoothScanStateChanged() override;
-  void OnBluetoothDeviceListChanged() override;
-
- private:
-  void UpdateDeviceListAndUI();
-  void UpdateBluetoothDeviceList();
-
-  const std::unique_ptr<DetailedViewDelegate> detailed_view_delegate_;
-
-  BluetoothDetailedViewLegacy* view_ = nullptr;
-
-  BluetoothDeviceList connected_devices_;
-  BluetoothDeviceList connecting_devices_;
-  BluetoothDeviceList paired_not_connected_devices_;
-  BluetoothDeviceList discovered_not_paired_devices_;
-};
-
-}  // namespace ash
-
-#endif  // ASH_SYSTEM_BLUETOOTH_UNIFIED_BLUETOOTH_DETAILED_VIEW_CONTROLLER_H_
diff --git a/ash/system/bluetooth/unified_bluetooth_detailed_view_controller_unittest.cc b/ash/system/bluetooth/unified_bluetooth_detailed_view_controller_unittest.cc
deleted file mode 100644
index 389e948..0000000
--- a/ash/system/bluetooth/unified_bluetooth_detailed_view_controller_unittest.cc
+++ /dev/null
@@ -1,184 +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 "ash/system/bluetooth/unified_bluetooth_detailed_view_controller.h"
-
-#include <memory>
-
-#include "ash/constants/ash_features.h"
-#include "ash/system/bluetooth/bluetooth_detailed_view_legacy.h"
-#include "ash/system/bluetooth/bluetooth_power_controller.h"
-#include "ash/system/bluetooth/tray_bluetooth_helper.h"
-#include "ash/system/unified/unified_system_tray_controller.h"
-#include "ash/system/unified/unified_system_tray_model.h"
-#include "ash/test/ash_test_base.h"
-#include "base/memory/scoped_refptr.h"
-#include "base/strings/stringprintf.h"
-#include "base/test/scoped_feature_list.h"
-#include "device/bluetooth/dbus/bluez_dbus_manager.h"
-#include "device/bluetooth/dbus/fake_bluetooth_adapter_client.h"
-#include "device/bluetooth/dbus/fake_bluetooth_device_client.h"
-#include "ui/views/view.h"
-
-namespace ash {
-
-namespace {
-
-const base::TimeDelta kUpdateFrequencyMs = base::Milliseconds(1000);
-
-}  // namespace
-
-class UnifiedBluetoothDetailedViewControllerTest : public AshTestBase {
- public:
-  UnifiedBluetoothDetailedViewControllerTest()
-      : AshTestBase(base::test::TaskEnvironment::TimeSource::MOCK_TIME) {}
-  UnifiedBluetoothDetailedViewControllerTest(
-      const UnifiedBluetoothDetailedViewControllerTest&) = delete;
-  UnifiedBluetoothDetailedViewControllerTest& operator=(
-      const UnifiedBluetoothDetailedViewControllerTest&) = delete;
-  ~UnifiedBluetoothDetailedViewControllerTest() override = default;
-
-  void SetUp() override {
-    // These tests should only be run with the kBluetoothRevamp feature flag is
-    // disabled, and so we force it off here and ensure that the local state
-    // prefs that would have been registered had the feature flag been off are
-    // registered.
-    if (ash::features::IsBluetoothRevampEnabled()) {
-      feature_list_.InitAndDisableFeature(features::kBluetoothRevamp);
-      BluetoothPowerController::RegisterLocalStatePrefs(
-          local_state()->registry());
-    }
-
-    AshTestBase::SetUp();
-
-    // Set fake adapter client to powered-on and initialize with zero simulation
-    // interval.
-    adapter_client_ = static_cast<bluez::FakeBluetoothAdapterClient*>(
-        bluez::BluezDBusManager::Get()->GetBluetoothAdapterClient());
-    adapter_client_->SetSimulationIntervalMs(0);
-    SetAdapterPowered(true);
-
-    // Enable fake device client and initialize with zero simulation interval.
-    device_client_ = static_cast<bluez::FakeBluetoothDeviceClient*>(
-        bluez::BluezDBusManager::Get()->GetBluetoothDeviceClient());
-    device_client_->SetSimulationIntervalMs(0);
-    task_environment()->RunUntilIdle();
-
-    tray_model_ = base::MakeRefCounted<UnifiedSystemTrayModel>(nullptr);
-    tray_controller_ =
-        std::make_unique<UnifiedSystemTrayController>(tray_model_.get());
-    bt_detailed_view_controller_ =
-        std::make_unique<UnifiedBluetoothDetailedViewController>(
-            tray_controller_.get());
-  }
-
-  void TearDown() override {
-    bt_detailed_view_controller_.reset();
-    tray_controller_.reset();
-    tray_model_.reset();
-    AshTestBase::TearDown();
-  }
-
-  void SetAdapterPowered(bool powered) {
-    adapter_client_
-        ->GetProperties(
-            dbus::ObjectPath(bluez::FakeBluetoothAdapterClient::kAdapterPath))
-        ->powered.ReplaceValue(powered);
-    task_environment()->RunUntilIdle();
-  }
-
-  void AddTestDevice() {
-    bluez::FakeBluetoothDeviceClient::IncomingDeviceProperties props;
-    props.device_path = base::StringPrintf("/fake/hci0/dev%02d", next_id_);
-    props.device_address = base::StringPrintf("00:00:00:00:00:%02d", next_id_);
-    props.device_name = "Test Device";
-    props.device_class = 0x01;
-    device_client_->CreateDeviceWithProperties(
-        dbus::ObjectPath(bluez::FakeBluetoothAdapterClient::kAdapterPath),
-        props);
-    next_id_++;
-  }
-
-  void RemoveAllDevices() {
-    dbus::ObjectPath fake_adapter_path(
-        bluez::FakeBluetoothAdapterClient::kAdapterPath);
-    std::vector<dbus::ObjectPath> device_paths =
-        device_client_->GetDevicesForAdapter(fake_adapter_path);
-    for (auto& device_path : device_paths) {
-      device_client_->RemoveDevice(fake_adapter_path, device_path);
-    }
-  }
-
-  UnifiedBluetoothDetailedViewController* bt_detailed_view_controller() {
-    return bt_detailed_view_controller_.get();
-  }
-
-  bluez::FakeBluetoothAdapterClient* adapter_client() {
-    return adapter_client_;
-  }
-
- private:
-  base::test::ScopedFeatureList feature_list_;
-  bluez::FakeBluetoothAdapterClient* adapter_client_;
-  bluez::FakeBluetoothDeviceClient* device_client_;
-  scoped_refptr<UnifiedSystemTrayModel> tray_model_;
-  std::unique_ptr<UnifiedSystemTrayController> tray_controller_;
-  std::unique_ptr<UnifiedBluetoothDetailedViewController>
-      bt_detailed_view_controller_;
-  int next_id_ = 1;
-};
-
-TEST_F(UnifiedBluetoothDetailedViewControllerTest, UpdateScrollListTest) {
-  std::unique_ptr<BluetoothDetailedViewLegacy> bluetooth_detailed_view =
-      base::WrapUnique(static_cast<BluetoothDetailedViewLegacy*>(
-          bt_detailed_view_controller()->CreateView()));
-  AddTestDevice();
-  task_environment()->FastForwardBy(kUpdateFrequencyMs);
-
-  // Verify that default devices simulated by FakeBluetoothDeviceClient are
-  // displayed.
-  const views::View* scroll_content = bluetooth_detailed_view->GetViewByID(
-      BluetoothDetailedViewLegacy::kScrollContentID);
-  const size_t scroll_content_size = scroll_content->children().size();
-  // Expect at least 1 paired device, 1 unpaired device and 2 headers.
-  EXPECT_GE(scroll_content_size, 4u);
-
-  // Fast forward to next bluetooth list sync and verify that child views
-  // are re-used after update.
-  views::View* scroll_content_child = scroll_content->children()[1];
-  task_environment()->FastForwardBy(kUpdateFrequencyMs);
-  EXPECT_EQ(scroll_content_child, scroll_content->children()[1]);
-
-  // Verify that newly added devices is displayed.
-  AddTestDevice();
-  task_environment()->FastForwardBy(kUpdateFrequencyMs);
-  EXPECT_EQ(scroll_content_size + 1u, scroll_content->children().size());
-}
-
-TEST_F(UnifiedBluetoothDetailedViewControllerTest,
-       UpdateScrollListPowerCycleTest) {
-  // Disable discovery simulation and remove all existing
-  // devices so that only the "Scanning" message is displayed.
-  adapter_client()->SetDiscoverySimulation(false);
-  RemoveAllDevices();
-
-  std::unique_ptr<BluetoothDetailedViewLegacy> bluetooth_detailed_view =
-      base::WrapUnique(static_cast<BluetoothDetailedViewLegacy*>(
-          bt_detailed_view_controller()->CreateView()));
-  task_environment()->FastForwardBy(kUpdateFrequencyMs);
-
-  const views::View* scroll_content = bluetooth_detailed_view->GetViewByID(
-      BluetoothDetailedViewLegacy::kScrollContentID);
-  // Only the scanning message should be displayed.
-  EXPECT_EQ(1u, scroll_content->children().size());
-
-  // Verify that if bluetooth is powered off and back on again
-  // the scroll list is cleared and populated back again properly.
-  SetAdapterPowered(false);
-  EXPECT_EQ(0u, scroll_content->children().size());
-  SetAdapterPowered(true);
-  EXPECT_EQ(1u, scroll_content->children().size());
-}
-
-}  // namespace ash
diff --git a/ash/system/holding_space/holding_space_tray_bubble.cc b/ash/system/holding_space/holding_space_tray_bubble.cc
index 0331867..d3d5ded 100644
--- a/ash/system/holding_space/holding_space_tray_bubble.cc
+++ b/ash/system/holding_space/holding_space_tray_bubble.cc
@@ -6,6 +6,7 @@
 
 #include <vector>
 
+#include "ash/bubble/bubble_utils.h"
 #include "ash/public/cpp/holding_space/holding_space_constants.h"
 #include "ash/public/cpp/holding_space/holding_space_item.h"
 #include "ash/public/cpp/holding_space/holding_space_metrics.h"
@@ -13,6 +14,7 @@
 #include "ash/public/cpp/shelf_config.h"
 #include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
+#include "ash/strings/grit/ash_strings.h"
 #include "ash/system/holding_space/holding_space_item_view.h"
 #include "ash/system/holding_space/holding_space_tray.h"
 #include "ash/system/holding_space/pinned_files_bubble.h"
@@ -25,6 +27,7 @@
 #include "base/containers/adapters.h"
 #include "ui/aura/env.h"
 #include "ui/aura/window.h"
+#include "ui/base/l10n/l10n_util.h"
 #include "ui/compositor/compositor.h"
 #include "ui/compositor/scoped_animation_duration_scale_mode.h"
 #include "ui/gfx/animation/slide_animation.h"
@@ -355,11 +358,31 @@
   init_params.translucent = features::IsHoldingSpaceRefreshEnabled();
   init_params.transparent = !features::IsHoldingSpaceRefreshEnabled();
 
-  // Create and customize bubble view.
+  // Create top-level bubble.
   TrayBubbleView* bubble_view = new TrayBubbleView(init_params);
+
+  // Add header.
+  if (features::IsHoldingSpaceRefreshEnabled()) {
+    bubble_view->AddChildView(
+        views::Builder<views::Label>(
+            bubble_utils::CreateLabel(
+                bubble_utils::LabelStyle::kHeader,
+                l10n_util::GetStringUTF16(IDS_ASH_HOLDING_SPACE_TITLE_REFRESH)))
+            .CopyAddressTo(&header_)
+            .SetID(kHoldingSpaceHeaderLabelId)
+            .SetBorder(views::CreateEmptyBorder(
+                gfx::Insets::TLBR(kHoldingSpaceChildBubbleChildSpacing,
+                                  kHoldingSpaceChildBubbleChildSpacing, 0,
+                                  kHoldingSpaceChildBubbleChildSpacing)))
+            .SetHorizontalAlignment(gfx::HorizontalAlignment::ALIGN_LEFT)
+            .Build());
+  }
+
+  // Add height restricted container for child bubbles.
   child_bubble_container_ =
       bubble_view->AddChildView(std::make_unique<ChildBubbleContainer>());
-  child_bubble_container_->SetMaxHeight(CalculateMaxHeight());
+  child_bubble_container_->SetMaxHeight(
+      CalculateChildBubbleContainerMaxHeight());
 
   // Add pinned files child bubble.
   child_bubbles_.push_back(child_bubble_container_->AddChildView(
@@ -430,7 +453,7 @@
   return views;
 }
 
-int HoldingSpaceTrayBubble::CalculateMaxHeight() const {
+int HoldingSpaceTrayBubble::CalculateTopLevelBubbleMaxHeight() const {
   const WorkAreaInsets* work_area = WorkAreaInsets::ForWindow(
       holding_space_tray_->shelf()->GetWindow()->GetRootWindow());
 
@@ -448,8 +471,14 @@
   return free_space_height_above_anchor - bubble_vertical_margin;
 }
 
+int HoldingSpaceTrayBubble::CalculateChildBubbleContainerMaxHeight() const {
+  return CalculateTopLevelBubbleMaxHeight() -
+         (header_ ? header_->GetHeightForWidth(kHoldingSpaceBubbleWidth) : 0u);
+}
+
 void HoldingSpaceTrayBubble::UpdateBubbleBounds() {
-  child_bubble_container_->SetMaxHeight(CalculateMaxHeight());
+  child_bubble_container_->SetMaxHeight(
+      CalculateChildBubbleContainerMaxHeight());
   bubble_wrapper_->bubble_view()->ChangeAnchorRect(
       holding_space_tray_->shelf()->GetSystemTrayAnchorRect());
 }
diff --git a/ash/system/holding_space/holding_space_tray_bubble.h b/ash/system/holding_space/holding_space_tray_bubble.h
index dfb39c06..3f0c1480 100644
--- a/ash/system/holding_space/holding_space_tray_bubble.h
+++ b/ash/system/holding_space/holding_space_tray_bubble.h
@@ -48,8 +48,10 @@
  private:
   class ChildBubbleContainer;
 
-  // Return the maximum height available for the holding space bubble.
-  int CalculateMaxHeight() const;
+  // Return the maximum height available for the top-level holding space bubble
+  // and child bubble container respectively.
+  int CalculateTopLevelBubbleMaxHeight() const;
+  int CalculateChildBubbleContainerMaxHeight() const;
 
   void UpdateBubbleBounds();
 
@@ -71,7 +73,8 @@
   HoldingSpaceViewDelegate delegate_{this};
 
   // Views owned by view hierarchy.
-  ChildBubbleContainer* child_bubble_container_;
+  views::View* header_ = nullptr;
+  ChildBubbleContainer* child_bubble_container_ = nullptr;
   std::vector<HoldingSpaceTrayChildBubble*> child_bubbles_;
 
   std::unique_ptr<TrayBubbleWrapper> bubble_wrapper_;
diff --git a/ash/system/holding_space/holding_space_tray_child_bubble.cc b/ash/system/holding_space/holding_space_tray_child_bubble.cc
index f210b693..65ee7ca02 100644
--- a/ash/system/holding_space/holding_space_tray_child_bubble.cc
+++ b/ash/system/holding_space/holding_space_tray_child_bubble.cc
@@ -95,27 +95,52 @@
     gfx::Rect contents_bounds(host->GetContentsBounds());
     contents_bounds.Inset(inside_border_insets());
 
-    // If we only have a single child view and that child view is okay with
-    // being sized arbitrarily small, short circuit layout logic and give that
-    // child all available layout space. This is the case for the
-    // `PinnedFileSection` which supports scrolling its content when necessary.
-    if (host->children().size() == 1u &&
-        host->children()[0]->GetMinimumSize().IsEmpty()) {
-      host->children()[0]->SetBoundsRect(contents_bounds);
-      return;
-    }
+    const int width = contents_bounds.width();
+    const int child_spacing = between_child_spacing();
 
-    int top = contents_bounds.y();
-    int left = contents_bounds.x();
-    int width = contents_bounds.width();
+    std::vector<std::pair<views::View*, int>> children_with_heights;
 
+    // Calculate preferred heights for children at `width`. Note that
+    // `available_height` is tracked to later determine if there will be
+    // vertical overflow of `contents_bounds`.
+    int available_height = contents_bounds.height();
     for (views::View* child : host->children()) {
       if (!child->GetVisible())
         continue;
 
-      gfx::Size size(width, child->GetHeightForWidth(width));
-      child->SetBounds(left, top, size.width(), size.height());
-      top += size.height() + between_child_spacing();
+      if (!children_with_heights.empty())
+        available_height -= child_spacing;
+
+      const int preferred_height = child->GetHeightForWidth(width);
+      children_with_heights.emplace_back(child, preferred_height);
+
+      available_height -= preferred_height;
+    }
+
+    int top = contents_bounds.y();
+    const int left = contents_bounds.x();
+
+    // Perform child layouts, ceding height where possible to fit within
+    // `contents_bounds`. Note: this does not guarantee that `contents_bounds`
+    // will not be exceeded. Overflow will be clipped by the `host` view.
+    for (auto& [child, height] : children_with_heights) {
+      // A `child` view is willing to cede height if it does not specify a
+      // minimum size. This is the case for the `PinnedFilesSection` which
+      // supports scrolling its content when necessary. In the future it may be
+      // worth implementing a more equitable ceding strategy, but for now height
+      // is greedily taken from children in order of appearance.
+      if (available_height < 0 && child->GetMinimumSize().IsEmpty()) {
+        const int ceded_height = std::min(height, -available_height);
+        height -= ceded_height;
+        available_height += ceded_height;
+      }
+
+      if (top > contents_bounds.y())
+        top += child_spacing;
+
+      child->SetBounds(left, top, width, height);
+
+      top += height;
     }
   }
 };
@@ -150,6 +175,10 @@
   layer()->SetFillsBoundsOpaquely(false);
   layer()->SetOpacity(0.f);
 
+  // Child bubbles should mask child layers to bounds so as not to paint over
+  // other child bubbles in the event of overflow.
+  layer()->SetMasksToBounds(true);
+
   if (!features::IsHoldingSpaceRefreshEnabled()) {
     layer()->SetBackgroundBlur(ColorProvider::kBackgroundBlurSigma);
     layer()->SetIsFastRoundedCorner(true);
diff --git a/ash/system/holding_space/holding_space_tray_child_bubble_unittest.cc b/ash/system/holding_space/holding_space_tray_child_bubble_unittest.cc
index c45fdc47..e7d8be16 100644
--- a/ash/system/holding_space/holding_space_tray_child_bubble_unittest.cc
+++ b/ash/system/holding_space/holding_space_tray_child_bubble_unittest.cc
@@ -253,18 +253,23 @@
                          /*refresh_enabled=*/testing::Bool());
 
 TEST_P(HoldingSpaceTrayChildBubbleRefreshTest, HasExpectedBubbleTreatment) {
+  // Child bubbles should mask child layers to bounds so as not to paint over
+  // other child bubbles in the event of overflow.
+  auto* layer = child_bubble()->layer();
+  ASSERT_TRUE(layer);
+  EXPECT_TRUE(layer->GetMasksToBounds());
+
   if (features::IsHoldingSpaceRefreshEnabled()) {
     // Background.
     EXPECT_FALSE(child_bubble()->GetBackground());
-    EXPECT_EQ(child_bubble()->layer()->background_blur(), 0.f);
+    EXPECT_EQ(layer->background_blur(), 0.f);
 
     // Border.
     EXPECT_FALSE(child_bubble()->GetBorder());
 
     // Corner radius.
-    EXPECT_FALSE(child_bubble()->layer()->is_fast_rounded_corner());
-    EXPECT_EQ(child_bubble()->layer()->rounded_corner_radii(),
-              gfx::RoundedCornersF(0.f));
+    EXPECT_FALSE(layer->is_fast_rounded_corner());
+    EXPECT_EQ(layer->rounded_corner_radii(), gfx::RoundedCornersF(0.f));
   } else {
     // Background.
     auto* background = child_bubble()->GetBackground();
@@ -272,15 +277,14 @@
     EXPECT_EQ(background->get_color(),
               AshColorProvider::Get()->GetBaseLayerColor(
                   AshColorProvider::BaseLayerType::kTransparent80));
-    EXPECT_EQ(child_bubble()->layer()->background_blur(),
-              ColorProvider::kBackgroundBlurSigma);
+    EXPECT_EQ(layer->background_blur(), ColorProvider::kBackgroundBlurSigma);
 
     // Border.
     EXPECT_TRUE(child_bubble()->GetBorder());
 
     // Corner radius.
-    EXPECT_TRUE(child_bubble()->layer()->is_fast_rounded_corner());
-    EXPECT_EQ(child_bubble()->layer()->rounded_corner_radii(),
+    EXPECT_TRUE(layer->is_fast_rounded_corner());
+    EXPECT_EQ(layer->rounded_corner_radii(),
               gfx::RoundedCornersF(kBubbleCornerRadius));
   }
 }
diff --git a/ash/system/holding_space/holding_space_tray_unittest.cc b/ash/system/holding_space/holding_space_tray_unittest.cc
index 93e5fab..d8f6c7ff 100644
--- a/ash/system/holding_space/holding_space_tray_unittest.cc
+++ b/ash/system/holding_space/holding_space_tray_unittest.cc
@@ -40,7 +40,6 @@
 #include "ash/wm/overview/overview_item_view.h"
 #include "ash/wm/tablet_mode/tablet_mode_controller_test_api.h"
 #include "ash/wm/window_preview_view.h"
-#include "base/bind.h"
 #include "base/files/file_path.h"
 #include "base/strings/strcat.h"
 #include "base/test/bind.h"
@@ -62,6 +61,9 @@
 #include "ui/views/controls/menu/menu_controller.h"
 #include "ui/views/controls/menu/menu_item_view.h"
 #include "ui/views/drag_utils.h"
+#include "ui/views/test/views_test_utils.h"
+#include "ui/views/view_utils.h"
+#include "ui/views/widget/widget.h"
 #include "url/gurl.h"
 
 namespace ash {
@@ -151,6 +153,16 @@
   event_generator.ClickRightButton();
 }
 
+void GestureScrollBy(const views::View* view, int offset_x, int offset_y) {
+  auto* root_window = view->GetWidget()->GetNativeWindow()->GetRootWindow();
+  gfx::Point start(view->GetBoundsInScreen().CenterPoint()), end(start);
+  end.Offset(offset_x, offset_y);
+  ui::test::EventGenerator event_generator(root_window);
+  event_generator.GestureScrollSequence(start, end,
+                                        /*duration=*/base::Milliseconds(100),
+                                        /*steps=*/10);
+}
+
 void GestureTap(const views::View* view) {
   auto* root_window = view->GetWidget()->GetNativeWindow()->GetRootWindow();
   ui::test::EventGenerator event_generator(root_window);
@@ -290,6 +302,27 @@
   std::unique_ptr<base::RunLoop> wait_loop_;
 };
 
+// WidgetWaiter ----------------------------------------------------------------
+
+// A class capable of waiting until a widget is closing.
+class WidgetWaiter : public views::WidgetObserver {
+ public:
+  void WaitForClose(views::Widget* widget) {
+    base::ScopedObservation<views::Widget, views::WidgetObserver>
+        widget_observation_{this};
+    widget_observation_.Observe(widget);
+    wait_loop_ = std::make_unique<base::RunLoop>();
+    wait_loop_->Run();
+    wait_loop_.reset();
+  }
+
+ private:
+  // views::WidgetObserver:
+  void OnWidgetClosing(views::Widget* widget) override { wait_loop_->Quit(); }
+
+  std::unique_ptr<base::RunLoop> wait_loop_;
+};
+
 // TransformRecordingLayerDelegate ---------------------------------------------
 
 // A scoped `ui::LayerDelegate` which records information about transforms.
@@ -2006,6 +2039,27 @@
   testing::Mock::VerifyAndClearExpectations(client());
 }
 
+// Verifies that holding space tray bubble closes after double clicking on a
+// holding space item.
+TEST_F(HoldingSpaceTrayTest, CloseTrayBubbleAfterDoubleClick) {
+  StartSession();
+  // Add a file to holding space.
+  AddItem(HoldingSpaceItem::Type::kPinnedFile, base::FilePath("/tmp/fake1"));
+
+  // Show and open the first item.
+  test_api()->Show();
+  std::vector<views::View*> pinned_file_chips =
+      test_api()->GetPinnedFileChips();
+  ASSERT_EQ(pinned_file_chips.size(), 1u);
+  DoubleClick(pinned_file_chips[0]);
+
+  // Monitor the tray bubble widget for an `OnWidgetClosing()` call.
+  WidgetWaiter().WaitForClose(test_api()->GetBubble()->GetWidget());
+
+  // Expect holding space tray bubble to be closed.
+  EXPECT_FALSE(test_api()->IsShowing());
+}
+
 // TODO(crbug.com/1208501): Fix flakes and re-enable.
 // Verifies that the holding space tray animates in and out as expected.
 TEST_F(HoldingSpaceTrayTest, DISABLED_EnterAndExitAnimations) {
@@ -2122,6 +2176,72 @@
   UnregisterModelForUser(kSecondaryUserId);
 }
 
+// Verifies that the holding space bubble supports scrolling of pinned files.
+TEST_F(HoldingSpaceTrayTest, SupportsScrollingOfPinnedFiles) {
+  StartSession();
+
+  // Show the holding space bubble.
+  test_api()->Show();
+  views::View* const pinned_files_bubble = test_api()->GetPinnedFilesBubble();
+  ASSERT_TRUE(pinned_files_bubble);
+
+  // Add batches of pinned files to holding space until the pinned files
+  // bubble stops growing. Once the pinned files bubble has stopped growing, it
+  // should be scrollable.
+  for (size_t batch = 0u;; ++batch) {
+    const int previous_height(pinned_files_bubble->height());
+
+    for (size_t i = 0; i < 25u; ++i) {
+      AddItem(HoldingSpaceItem::Type::kPinnedFile,
+              base::FilePath(base::UnguessableToken().ToString()));
+    }
+
+    if (pinned_files_bubble->height() == previous_height)
+      break;
+
+    // Fail the test if the pinned files bubble does not overflow within a
+    // reasonable number of batches.
+    if (batch > 4u)
+      GTEST_FAIL() << "Failed to overflow the pinned files bubble.";
+  }
+
+  // Add a suggested file so that the suggestions section will also be shown.
+  AddItem(HoldingSpaceItem::Type::kLocalSuggestion,
+          base::FilePath(base::UnguessableToken().ToString()));
+
+  views::test::RunScheduledLayout(pinned_files_bubble->GetWidget());
+
+  // Verify that the `pinned_files section` is completely contained within the
+  // `pinned_files_bubble`.
+  const auto* pinned_files_section =
+      pinned_files_bubble->GetViewByID(kHoldingSpacePinnedFilesSectionId);
+  ASSERT_TRUE(pinned_files_section);
+  EXPECT_TRUE(pinned_files_bubble->GetContentsBounds().Contains(
+      pinned_files_section->bounds()));
+
+  // Verify that the `suggestions_section` is completely contained within the
+  // `pinned_files_bubble`.
+  const auto* suggestions_section =
+      pinned_files_bubble->GetViewByID(kHoldingSpaceSuggestionsSectionId);
+  ASSERT_TRUE(suggestions_section);
+  EXPECT_TRUE(pinned_files_bubble->GetContentsBounds().Contains(
+      suggestions_section->bounds()));
+
+  // Verify that the `suggestions_section` appears below the
+  // `pinned_files_section`.
+  EXPECT_LT(pinned_files_section->bounds().bottom(),
+            suggestions_section->bounds().y());
+
+  // Cache the chips that were added to the pinned files bubble.
+  const std::vector<views::View*> chips = test_api()->GetPinnedFileChips();
+  ASSERT_GT(chips.size(), 0u);
+
+  // Attempt to scroll the pinned files bubble and verify scroll success.
+  const int previous_y = chips[0]->GetBoundsInScreen().y();
+  GestureScrollBy(chips[0], /*offset_x=*/0, /*offset_y=*/-100);
+  EXPECT_LT(chips[0]->GetBoundsInScreen().y(), previous_y);
+}
+
 using HoldingSpacePreviewsTrayTest = HoldingSpaceTrayTestBase;
 
 TEST_F(HoldingSpacePreviewsTrayTest, HideButtonOnChangeToEmptyModel) {
@@ -3707,6 +3827,12 @@
     EXPECT_TRUE(bubble->layer()->is_fast_rounded_corner());
     EXPECT_EQ(bubble->layer()->rounded_corner_radii(),
               gfx::RoundedCornersF(kBubbleCornerRadius));
+
+    // Header.
+    auto* header = bubble->GetViewByID(kHoldingSpaceHeaderLabelId);
+    ASSERT_TRUE(header);
+    EXPECT_EQ(views::AsViewClass<views::Label>(header)->GetText(),
+              u"Quick files");
   } else {
     // Background.
     auto* background = bubble->GetBackground();
@@ -3721,6 +3847,9 @@
     EXPECT_FALSE(bubble->layer()->is_fast_rounded_corner());
     EXPECT_EQ(bubble->layer()->rounded_corner_radii(),
               gfx::RoundedCornersF(0.f));
+
+    // Header.
+    EXPECT_FALSE(bubble->GetViewByID(kHoldingSpaceHeaderLabelId));
   }
 }
 
@@ -3789,8 +3918,15 @@
   ASSERT_TRUE(recent_files_bubble);
   const int separator_midpoint_x = std::round(bubble->width() / 2.f);
   const int separator_midpoint_y = gfx::Tween::LinearIntValueBetween(
-      0.5f, pinned_files_bubble->bounds().bottom(),
-      recent_files_bubble->bounds().y());
+      0.5f,
+      views::View::ConvertRectToTarget(
+          /*source=*/pinned_files_bubble, /*target=*/bubble,
+          gfx::RectF(pinned_files_bubble->GetLocalBounds()))
+          .bottom(),
+      views::View::ConvertRectToTarget(
+          /*source=*/recent_files_bubble, /*target=*/bubble,
+          gfx::RectF(recent_files_bubble->GetLocalBounds()))
+          .y());
 
   // Cache the `actual_color` of the pixel at the midpoint of where a separator
   // would appear as well as the `expected_color` given feature flag state.
diff --git a/ash/system/holding_space/holding_space_view_delegate.cc b/ash/system/holding_space/holding_space_view_delegate.cc
index ccdf730e..1d49d9d 100644
--- a/ash/system/holding_space/holding_space_view_delegate.cc
+++ b/ash/system/holding_space/holding_space_view_delegate.cc
@@ -18,10 +18,10 @@
 #include "ash/system/holding_space/holding_space_item_view.h"
 #include "ash/system/holding_space/holding_space_tray.h"
 #include "ash/system/holding_space/holding_space_tray_bubble.h"
-#include "base/bind.h"
 #include "base/callback_helpers.h"
 #include "base/containers/contains.h"
 #include "base/containers/cxx20_erase_vector.h"
+#include "base/memory/weak_ptr.h"
 #include "net/base/mime_util.h"
 #include "ui/accessibility/ax_action_data.h"
 #include "ui/accessibility/ax_enums.mojom.h"
@@ -32,6 +32,7 @@
 #include "ui/base/models/simple_menu_model.h"
 #include "ui/color/color_id.h"
 #include "ui/views/controls/menu/menu_runner.h"
+#include "ui/views/focus/focus_manager.h"
 #include "ui/views/vector_icons.h"
 #include "ui/views/view.h"
 
@@ -83,13 +84,6 @@
   return range;
 }
 
-// Attempts to open the holding space items associated with the given `views`.
-void OpenItems(const std::vector<const HoldingSpaceItemView*>& views) {
-  DCHECK_GE(views.size(), 1u);
-  HoldingSpaceController::Get()->client()->OpenItems(GetItems(views),
-                                                     base::DoNothing());
-}
-
 }  // namespace
 
 // HoldingSpaceViewDelegate::ScopedSelectionRestore ----------------------------
@@ -194,7 +188,7 @@
   if (action_data.action == ax::mojom::Action::kDoDefault) {
     if (!view->selected())
       SetSelection(view);
-    OpenItems(GetSelection());
+    OpenItemsAndScheduleClose(GetSelection());
     return true;
   }
   // When showing the context menu via accessible action (e.g. Search + M),
@@ -245,7 +239,7 @@
   // the child bubble which clears selection state.
   if (GetSelection().empty()) {
     SetSelection(view);
-    OpenItems(GetSelection());
+    OpenItemsAndScheduleClose(GetSelection());
     return true;
   }
 
@@ -265,7 +259,7 @@
   if (event.key_code() == ui::KeyboardCode::VKEY_RETURN) {
     if (!view->selected())
       SetSelection(view);
-    OpenItems(GetSelection());
+    OpenItemsAndScheduleClose(GetSelection());
     return true;
   }
   return false;
@@ -355,7 +349,7 @@
   // `view` being clicked is already part of the selection.
   if (event.flags() & ui::EF_IS_DOUBLE_CLICK) {
     DCHECK(view->selected());
-    OpenItems(GetSelection());
+    OpenItemsAndScheduleClose(GetSelection());
     return;
   }
 
@@ -395,7 +389,7 @@
   // The ENTER key should open all selected holding space items.
   if (event.key_code() == ui::KeyboardCode::VKEY_RETURN) {
     if (!GetSelection().empty()) {
-      OpenItems(GetSelection());
+      OpenItemsAndScheduleClose(GetSelection());
       return true;
     }
   }
@@ -789,4 +783,21 @@
   selection_ui_changed_callbacks_.Notify();
 }
 
+void HoldingSpaceViewDelegate::OpenItemsAndScheduleClose(
+    const std::vector<const HoldingSpaceItemView*>& views) {
+  DCHECK_GE(views.size(), 1u);
+  // This `PostTask()` will result in the destruction of the view delegate if it
+  // has not already been destroyed.
+  base::SequencedTaskRunnerHandle::Get()->PostTask(
+      FROM_HERE,
+      base::BindOnce(
+          [](const base::WeakPtr<HoldingSpaceViewDelegate>& weak_ptr) {
+            if (weak_ptr)
+              weak_ptr->bubble_->tray()->CloseBubble();
+          },
+          weak_factory_.GetMutableWeakPtr()));
+  HoldingSpaceController::Get()->client()->OpenItems(GetItems(views),
+                                                     base::DoNothing());
+}
+
 }  // namespace ash
diff --git a/ash/system/holding_space/holding_space_view_delegate.h b/ash/system/holding_space/holding_space_view_delegate.h
index 2cd050e6..7197fc7 100644
--- a/ash/system/holding_space/holding_space_view_delegate.h
+++ b/ash/system/holding_space/holding_space_view_delegate.h
@@ -181,6 +181,11 @@
   // Updates `selection_ui_` based on device state and `selection_size_`.
   void UpdateSelectionUi();
 
+  // Attempts to open the holding space items associated with the given `views`.
+  // Schedules the bubble to close regardless of attempt success.
+  void OpenItemsAndScheduleClose(
+      const std::vector<const HoldingSpaceItemView*>& views);
+
   HoldingSpaceTrayBubble* const bubble_;
 
   std::unique_ptr<ui::SimpleMenuModel> context_menu_model_;
@@ -208,6 +213,8 @@
 
   base::ScopedObservation<TabletMode, TabletModeObserver> tablet_mode_observer_{
       this};
+
+  base::WeakPtrFactory<HoldingSpaceViewDelegate> weak_factory_{this};
 };
 
 }  // namespace ash
diff --git a/ash/system/machine_learning/user_settings_event.proto b/ash/system/machine_learning/user_settings_event.proto
index a817d58..db327ca 100644
--- a/ash/system/machine_learning/user_settings_event.proto
+++ b/ash/system/machine_learning/user_settings_event.proto
@@ -20,7 +20,7 @@
     enum SettingId {
       WIFI = 1;
       CELLULAR = 2;
-      BLUETOOTH = 3;
+      // [Deprecated] BLUETOOTH = 3;
       NIGHT_LIGHT = 4;
       DO_NOT_DISTURB = 5;
       ACCESSIBILITY = 6;
@@ -125,9 +125,7 @@
     // Whether the user has connected to a cellular network in the current
     // session.
     optional bool used_cellular_in_session = 17;
-    // Whether or not the current bluetooth device was already paired. Only
-    // populated upon connection to a bluetooth device.
-    optional bool is_paired_bluetooth_device = 18;
+    optional bool is_paired_bluetooth_device = 18 [deprecated = true];
     // Whether the user has set up a night light schedule.
     optional bool has_night_light_schedule = 19;
     // True if it is after sunset and before sunrise in the local time.
diff --git a/ash/system/machine_learning/user_settings_event_logger.cc b/ash/system/machine_learning/user_settings_event_logger.cc
index 7141fef..1f9e312 100644
--- a/ash/system/machine_learning/user_settings_event_logger.cc
+++ b/ash/system/machine_learning/user_settings_event_logger.cc
@@ -104,32 +104,6 @@
   SendToUkmAndAppList(settings_event);
 }
 
-void UserSettingsEventLogger::LogBluetoothUkmEvent(
-    const BluetoothAddress& device_address) {
-  DCHECK(!ash::features::IsBluetoothRevampEnabled());
-
-  UserSettingsEvent settings_event;
-  auto* const event = settings_event.mutable_event();
-
-  event->set_setting_id(UserSettingsEvent::Event::BLUETOOTH);
-  event->set_setting_type(UserSettingsEvent::Event::QUICK_SETTINGS);
-
-  const auto& devices =
-      Shell::Get()->tray_bluetooth_helper()->GetAvailableBluetoothDevices();
-  UMA_HISTOGRAM_COUNTS_100("Ash.Shelf.UkmLogger.NumAvailableBluetoothDevices",
-                           devices.size());
-  for (const auto& device : devices) {
-    if (device->address == device_address) {
-      settings_event.mutable_features()->set_is_paired_bluetooth_device(
-          device->is_paired);
-      break;
-    }
-  }
-
-  PopulateSharedFeatures(&settings_event);
-  SendToUkmAndAppList(settings_event);
-}
-
 void UserSettingsEventLogger::LogNightLightUkmEvent(const bool enabled) {
   UserSettingsEvent settings_event;
   auto* const event = settings_event.mutable_event();
@@ -403,8 +377,6 @@
     ukm_event.SetHasWifiSecurity(features.has_wifi_security());
   if (features.has_used_cellular_in_session())
     ukm_event.SetUsedCellularInSession(features.used_cellular_in_session());
-  if (features.has_is_paired_bluetooth_device())
-    ukm_event.SetIsPairedBluetoothDevice(features.is_paired_bluetooth_device());
   if (features.has_has_night_light_schedule())
     ukm_event.SetHasNightLightSchedule(features.has_night_light_schedule());
   if (features.has_is_after_sunset())
diff --git a/ash/system/machine_learning/user_settings_event_logger.h b/ash/system/machine_learning/user_settings_event_logger.h
index 8435961..d8aaf323 100644
--- a/ash/system/machine_learning/user_settings_event_logger.h
+++ b/ash/system/machine_learning/user_settings_event_logger.h
@@ -7,7 +7,6 @@
 
 #include "ash/public/cpp/app_list/app_list_controller.h"
 #include "ash/shell_observer.h"
-#include "ash/system/bluetooth/tray_bluetooth_helper.h"
 #include "ash/system/machine_learning/user_settings_event.pb.h"
 #include "ash/wm/video_detector.h"
 #include "base/sequence_checker.h"
@@ -48,10 +47,6 @@
   void LogNetworkUkmEvent(
       const chromeos::network_config::mojom::NetworkStateProperties& network);
 
-  // Logs an event to UKM that the user has connected to the given bluetooth
-  // device.
-  void LogBluetoothUkmEvent(const BluetoothAddress& device_address);
-
   // Logs an event to UKM that the user has toggled night light to the given
   // state.
   void LogNightLightUkmEvent(bool enabled);
diff --git a/ash/system/machine_learning/user_settings_event_logger_unittest.cc b/ash/system/machine_learning/user_settings_event_logger_unittest.cc
index 3462998f..f1b8be0 100644
--- a/ash/system/machine_learning/user_settings_event_logger_unittest.cc
+++ b/ash/system/machine_learning/user_settings_event_logger_unittest.cc
@@ -7,13 +7,11 @@
 #include "ash/display/screen_orientation_controller.h"
 #include "ash/display/screen_orientation_controller_test_api.h"
 #include "ash/shell.h"
-#include "ash/system/bluetooth/bluetooth_power_controller.h"
 #include "ash/system/machine_learning/user_settings_event.pb.h"
 #include "ash/system/night_light/night_light_controller_impl.h"
 #include "ash/system/power/power_status.h"
 #include "ash/test/ash_test_base.h"
 #include "ash/wm/tablet_mode/tablet_mode_controller.h"
-#include "base/test/scoped_feature_list.h"
 #include "base/test/simple_test_clock.h"
 #include "base/test/task_environment.h"
 #include "base/time/time.h"
@@ -164,25 +162,6 @@
   ukm::TestAutoSetUkmRecorder ukm_recorder_;
 };
 
-class UserSettingsEventLoggerTestLegacy : public UserSettingsEventLoggerTest {
- public:
-  void SetUp() override {
-    // These tests should only be run with the kBluetoothRevamp feature flag is
-    // disabled, and so we force it off here and ensure that the local state
-    // prefs that would have been registered had the feature flag been off are
-    // registered.
-    if (ash::features::IsBluetoothRevampEnabled()) {
-      feature_list_.InitAndDisableFeature(features::kBluetoothRevamp);
-      BluetoothPowerController::RegisterLocalStatePrefs(
-          local_state()->registry());
-    }
-    UserSettingsEventLoggerTest::SetUp();
-  }
-
- private:
-  base::test::ScopedFeatureList feature_list_;
-};
-
 TEST_F(UserSettingsEventLoggerTest, TestLogWifiEvent) {
   logger_->LogNetworkUkmEvent(
       *CreateWifiNetwork(50, SecurityType::kNone).get());
@@ -234,21 +213,6 @@
   TestUkmRecorder::ExpectEntryMetric(entry, "UsedCellularInSession", true);
 }
 
-TEST_F(UserSettingsEventLoggerTestLegacy, TestLogBluetoothEventLegacy) {
-  // Log an event with a null bluetooth address.
-  logger_->LogBluetoothUkmEvent(BluetoothAddress());
-
-  const auto& entries = GetUkmEntries();
-  ASSERT_EQ(1ul, entries.size());
-
-  const auto* entry = entries[0];
-  TestUkmRecorder::ExpectEntryMetric(entry, "SettingId",
-                                     UserSettingsEvent::Event::BLUETOOTH);
-  TestUkmRecorder::ExpectEntryMetric(entry, "SettingType",
-                                     UserSettingsEvent::Event::QUICK_SETTINGS);
-  // |is_paired_bluetooth_device| is tested manually.
-}
-
 TEST_F(UserSettingsEventLoggerTest, TestLogNightLightEvent) {
   Shell::Get()->night_light_controller()->SetScheduleType(
       NightLightController::ScheduleType::kSunsetToSunrise);
diff --git a/ash/system/network/network_detailed_view_controller.cc b/ash/system/network/network_detailed_view_controller.cc
index 11beab5..fc36427a1 100644
--- a/ash/system/network/network_detailed_view_controller.cc
+++ b/ash/system/network/network_detailed_view_controller.cc
@@ -124,7 +124,6 @@
       detailed_view_delegate_(
           std::make_unique<DetailedViewDelegate>(tray_controller)) {
   DCHECK(ash::features::IsQuickSettingsNetworkRevampEnabled());
-  DCHECK(ash::features::IsBluetoothRevampEnabled());
 
   GetBluetoothConfigService(
       remote_cros_bluetooth_config_.BindNewPipeAndPassReceiver());
diff --git a/ash/system/network/network_list_view_controller_impl.cc b/ash/system/network/network_list_view_controller_impl.cc
index 78d336e..862c0e0 100644
--- a/ash/system/network/network_list_view_controller_impl.cc
+++ b/ash/system/network/network_list_view_controller_impl.cc
@@ -121,7 +121,6 @@
     : model_(Shell::Get()->system_tray_model()->network_state_model()),
       network_detailed_network_view_(network_detailed_network_view) {
   DCHECK(ash::features::IsQuickSettingsNetworkRevampEnabled());
-  DCHECK(ash::features::IsBluetoothRevampEnabled());
   DCHECK(network_detailed_network_view_);
   Shell::Get()->system_tray_model()->network_state_model()->AddObserver(this);
 
diff --git a/ash/system/network/network_section_header_view.cc b/ash/system/network/network_section_header_view.cc
index 328c611..47c8d84 100644
--- a/ash/system/network/network_section_header_view.cc
+++ b/ash/system/network/network_section_header_view.cc
@@ -4,7 +4,6 @@
 
 #include "ash/system/network/network_section_header_view.h"
 
-#include "ash/constants/ash_features.h"
 #include "ash/public/cpp/bluetooth_config_service.h"
 #include "ash/public/cpp/system_tray_client.h"
 #include "ash/resources/vector_icons/vector_icons.h"
@@ -12,7 +11,6 @@
 #include "ash/shell.h"
 #include "ash/strings/grit/ash_strings.h"
 #include "ash/style/icon_button.h"
-#include "ash/system/bluetooth/bluetooth_power_controller.h"
 #include "ash/system/model/system_tray_model.h"
 #include "ash/system/network/network_utils.h"
 #include "ash/system/network/tray_network_state_model.h"
@@ -206,10 +204,6 @@
                                DeviceStateType::kEnabled;
   NetworkSectionHeaderView::Init(initially_enabled);
   model()->AddObserver(this);
-
-  if (!ash::features::IsBluetoothRevampEnabled())
-    return;
-
   GetBluetoothConfigService(
       remote_cros_bluetooth_config_.BindNewPipeAndPassReceiver());
 }
@@ -411,15 +405,7 @@
 
 void MobileSectionHeaderView::EnableBluetooth() {
   DCHECK(!waiting_for_tether_initialize_);
-
-  if (ash::features::IsBluetoothRevampEnabled()) {
-    remote_cros_bluetooth_config_->SetBluetoothEnabledState(true);
-  } else {
-    Shell::Get()
-        ->bluetooth_power_controller()
-        ->SetPrimaryUserBluetoothPowerSetting(true /* enabled */);
-  }
-
+  remote_cros_bluetooth_config_->SetBluetoothEnabledState(true);
   waiting_for_tether_initialize_ = true;
   enable_bluetooth_timer_.Start(
       FROM_HERE, base::Seconds(kBluetoothTimeoutDelaySeconds),
diff --git a/ash/system/network/network_tray_view.cc b/ash/system/network/network_tray_view.cc
index 69ddd8a..315802ea 100644
--- a/ash/system/network/network_tray_view.cc
+++ b/ash/system/network/network_tray_view.cc
@@ -55,7 +55,8 @@
   // A valid role must be set prior to setting the name.
   node_data->role = ax::mojom::Role::kImage;
   node_data->SetNameChecked(accessible_name_);
-  node_data->SetDescription(accessible_description_);
+  if (!accessible_description_.empty())
+    node_data->SetDescription(accessible_description_);
 }
 
 std::u16string NetworkTrayView::GetAccessibleNameString() const {
diff --git a/ash/system/privacy/privacy_indicators_tray_item_view.cc b/ash/system/privacy/privacy_indicators_tray_item_view.cc
index ab09658..eba4bf0 100644
--- a/ash/system/privacy/privacy_indicators_tray_item_view.cc
+++ b/ash/system/privacy/privacy_indicators_tray_item_view.cc
@@ -20,6 +20,7 @@
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/color/color_id.h"
 #include "ui/color/color_provider.h"
+#include "ui/compositor/animation_throughput_reporter.h"
 #include "ui/compositor/compositor.h"
 #include "ui/compositor/layer.h"
 #include "ui/compositor/layer_type.h"
@@ -28,6 +29,7 @@
 #include "ui/gfx/geometry/insets.h"
 #include "ui/gfx/geometry/size.h"
 #include "ui/gfx/paint_vector_icon.h"
+#include "ui/views/animation/animation_builder.h"
 #include "ui/views/controls/image_view.h"
 #include "ui/views/layout/box_layout.h"
 #include "ui/views/widget/widget.h"
@@ -49,6 +51,9 @@
     kDwellInExpandDuration + base::Milliseconds(133);
 constexpr auto kSizeChangeAnimationDuration = base::Milliseconds(333);
 constexpr auto kExpandAnimationDuration = base::Milliseconds(400);
+constexpr auto kIconFadeInDelayDuration = base::Milliseconds(83);
+constexpr auto kCameraIconFadeInDuration = base::Milliseconds(233);
+constexpr auto kMicAndScreenshareFadeInDuration = base::Milliseconds(116);
 
 void StartAnimation(gfx::LinearAnimation* animation) {
   if (!animation)
@@ -75,6 +80,41 @@
       })));
 }
 
+void StartReportLayerAnimationSmoothness(
+    const std::string& animation_histogram_name,
+    int smoothness) {
+  // Only record animation smoothness if `animation_histogram_name` is given.
+  if (animation_histogram_name.empty())
+    return;
+  base::UmaHistogramPercentage(animation_histogram_name, smoothness);
+}
+
+void FadeInView(views::View* view,
+                base::TimeDelta duration,
+                const std::string& animation_histogram_name) {
+  // The view must have a layer to perform animation.
+  DCHECK(view->layer());
+
+  // Stop any ongoing animation.
+  if (view->layer()->GetAnimator()->is_animating())
+    view->layer()->GetAnimator()->StopAnimating();
+
+  ui::AnimationThroughputReporter reporter(
+      view->layer()->GetAnimator(),
+      metrics_util::ForSmoothness(base::BindRepeating(
+          &StartReportLayerAnimationSmoothness, animation_histogram_name)));
+
+  views::AnimationBuilder()
+      .SetPreemptionStrategy(
+          ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET)
+      .Once()
+      .SetDuration(base::TimeDelta())
+      .SetOpacity(view, 0.0f)
+      .At(kIconFadeInDelayDuration)
+      .SetDuration(duration)
+      .SetOpacity(view, 1.0f);
+}
+
 }  // namespace
 
 PrivacyIndicatorsTrayItemView::PrivacyIndicatorsTrayItemView(Shelf* shelf)
@@ -207,6 +247,20 @@
   // short side to the final size (a green dot).
   expand_animation_->Start();
   StartRecordAnimationSmoothness(GetWidget(), throughput_tracker_);
+
+  // At the same time, fade in icons.
+  if (camera_icon_->GetVisible()) {
+    FadeInView(camera_icon_, kCameraIconFadeInDuration,
+               "Ash.PrivacyIndicators.CameraIcon.AnimationSmoothness");
+  }
+  if (microphone_icon_->GetVisible()) {
+    FadeInView(camera_icon_, kMicAndScreenshareFadeInDuration,
+               "Ash.PrivacyIndicators.MicrophoneIcon.AnimationSmoothness");
+  }
+  if (screen_share_icon_->GetVisible()) {
+    FadeInView(camera_icon_, kMicAndScreenshareFadeInDuration,
+               "Ash.PrivacyIndicators.ScreenshareIcon.AnimationSmoothness");
+  }
 }
 
 void PrivacyIndicatorsTrayItemView::HandleLocaleChange() {
diff --git a/ash/system/unified/unified_system_tray_controller.cc b/ash/system/unified/unified_system_tray_controller.cc
index 2e6c418..d5e5349 100644
--- a/ash/system/unified/unified_system_tray_controller.cc
+++ b/ash/system/unified/unified_system_tray_controller.cc
@@ -21,8 +21,6 @@
 #include "ash/system/audio/unified_volume_slider_controller.h"
 #include "ash/system/bluetooth/bluetooth_detailed_view_controller.h"
 #include "ash/system/bluetooth/bluetooth_feature_pod_controller.h"
-#include "ash/system/bluetooth/bluetooth_feature_pod_controller_legacy.h"
-#include "ash/system/bluetooth/unified_bluetooth_detailed_view_controller.h"
 #include "ash/system/brightness/unified_brightness_slider_controller.h"
 #include "ash/system/camera/autozoom_feature_pod_controller.h"
 #include "ash/system/cast/cast_feature_pod_controller.h"
@@ -425,8 +423,7 @@
 
   base::RecordAction(base::UserMetricsAction("StatusArea_Network_Detailed"));
 
-  if (ash::features::IsQuickSettingsNetworkRevampEnabled() &&
-      ash::features::IsBluetoothRevampEnabled()) {
+  if (ash::features::IsQuickSettingsNetworkRevampEnabled()) {
     ShowDetailedView(std::make_unique<NetworkDetailedViewController>(this));
   } else {
     ShowDetailedView(
@@ -439,12 +436,7 @@
     return;
 
   base::RecordAction(base::UserMetricsAction("StatusArea_Bluetooth_Detailed"));
-  if (ash::features::IsBluetoothRevampEnabled()) {
-    ShowDetailedView(std::make_unique<BluetoothDetailedViewController>(this));
-  } else {
-    ShowDetailedView(
-        std::make_unique<UnifiedBluetoothDetailedViewController>(this));
-  }
+  ShowDetailedView(std::make_unique<BluetoothDetailedViewController>(this));
 }
 
 void UnifiedSystemTrayController::ShowCastDetailedView() {
@@ -623,12 +615,8 @@
     AddFeaturePodItem(
         std::make_unique<NetworkFeaturePodControllerLegacy>(this));
   }
-  if (ash::features::IsBluetoothRevampEnabled()) {
-    AddFeaturePodItem(std::make_unique<BluetoothFeaturePodController>(this));
-  } else {
-    AddFeaturePodItem(
-        std::make_unique<BluetoothFeaturePodControllerLegacy>(this));
-  }
+
+  AddFeaturePodItem(std::make_unique<BluetoothFeaturePodController>(this));
   AddFeaturePodItem(std::make_unique<AccessibilityFeaturePodController>(this));
   AddFeaturePodItem(std::make_unique<QuietModeFeaturePodController>(this));
   AddFeaturePodItem(std::make_unique<RotationLockFeaturePodController>());
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_bg.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_bg.xtb
index a91109da..59ca49f1 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_bg.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_bg.xtb
@@ -9,6 +9,7 @@
 <translation id="1300209025925956156">Сканиране на документ</translation>
 <translation id="1309250603447638106">Изтеглят се актуализации за сканиране на документи</translation>
 <translation id="137991641490787891"><ph name="ASPECT_RATIO_WIDTH" />. За достъп натиснете клавиша „търсене“ + стрелката за наляво.</translation>
+<translation id="1417314334557041815">Редактиране на страница <ph name="INDEX" /></translation>
 <translation id="1430915738399379752">Печат</translation>
 <translation id="1467231725790366244">Устройството <ph name="CAMERA" /> е изключено.</translation>
 <translation id="1473110567575736769">Таймер за 3 секунди</translation>
@@ -20,6 +21,7 @@
 <translation id="1627744224761163218">4 x 4</translation>
 <translation id="1664224225747386870">Нищо не е записано</translation>
 <translation id="1838104802459806957">Накланяне нагоре</translation>
+<translation id="1843105061469674856">Сканиране на допълнителна страница</translation>
 <translation id="1851169887664797861">Налице са допълнителни контроли за камерата</translation>
 <translation id="1851616744363735765">НА ПАУЗА</translation>
 <translation id="1862930711583847113">Файлът „<ph name="FILE" />“ не може да се експортира</translation>
@@ -77,6 +79,7 @@
 <translation id="414641094616694804">Разделителната способност на тази камера не може да се променя</translation>
 <translation id="4269820728363426813">Копиране на адреса на връзката</translation>
 <translation id="4281620174117014503">Средна разделителна способност</translation>
+<translation id="428234092390943511">Миниизображение на страницата</translation>
 <translation id="4329152592498422850">Превключвател за правене на квадратна снимка</translation>
 <translation id="4340659173795395806">Вече можете да създавате PDF файлове с няколко страници</translation>
 <translation id="4383571725254449280">Печат на регистрационните файлове за ефективността</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_bs.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_bs.xtb
index 3be2f1e..4c5cd73 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_bs.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_bs.xtb
@@ -1,6 +1,7 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="bs">
+<translation id="1057925581724305206">Full HD (1080 p)</translation>
 <translation id="1113173431709655881">Način rada kamere</translation>
 <translation id="1153190633558910465">Rešetka je isključena</translation>
 <translation id="1175958423215084756">Link je otkriven. <ph name="HOSTNAME" /></translation>
@@ -19,6 +20,7 @@
 <translation id="1588438908519853928">Normalno</translation>
 <translation id="1620510694547887537">Kamera</translation>
 <translation id="1627744224761163218">4 x 4</translation>
+<translation id="1644345013557678440">HD (720 p)</translation>
 <translation id="1664224225747386870">Nije snimljeno ništa</translation>
 <translation id="1838104802459806957">Nagni gore</translation>
 <translation id="1843105061469674856">Skeniraj dodatnu stranicu</translation>
@@ -93,6 +95,7 @@
 <translation id="4705093842003735294">Puna rezolucija</translation>
 <translation id="4890010094662541459">3 x 3</translation>
 <translation id="491895758387112773">Snimanje videozapisa s više prijenosa</translation>
+<translation id="4984613436295737187">Quad HD (1440 p)</translation>
 <translation id="5034763830503483128">Omjer formata fotografije</translation>
 <translation id="5057360777601936059">Kamera je trenutno nedostupna.
         Provjerite je li kamera pravilno povezana.</translation>
@@ -101,6 +104,7 @@
 <translation id="5266635337630551423">Gornji lijevi ugao dokumenta</translation>
 <translation id="5317780077021120954">Sačuvaj</translation>
 <translation id="5320594929574852403">Pomjeranje ulijevo</translation>
+<translation id="5374917190292010970">4K (2160 p)</translation>
 <translation id="5444515100983837161">Postavite sve ivice dokumenta unutar okvira. Skeniranje najbolje funkcionira ako su boje dokumenta i pozadine različite.</translation>
 <translation id="5662366948659129155">Skeniranje <ph name="COUNT" />. stranice</translation>
 <translation id="5671277269877808209">Kvadrat</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_ca.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_ca.xtb
index 12af8272..7942f6a9 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_ca.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_ca.xtb
@@ -9,6 +9,7 @@
 <translation id="1300209025925956156">Escaneja el document</translation>
 <translation id="1309250603447638106">S'estan baixant les actualitzacions per a l'escaneig de documents</translation>
 <translation id="137991641490787891"><ph name="ASPECT_RATIO_WIDTH" />. Cerca+fletxa esquerra per accedir-hi.</translation>
+<translation id="1417314334557041815">Edita la pàgina <ph name="INDEX" /></translation>
 <translation id="1430915738399379752">Imprimeix</translation>
 <translation id="1467231725790366244"><ph name="CAMERA" /> no està endollada.</translation>
 <translation id="1473110567575736769">Temporitzador de 3 segons</translation>
@@ -20,6 +21,7 @@
 <translation id="1627744224761163218">4 x 4</translation>
 <translation id="1664224225747386870">No s'ha gravat res</translation>
 <translation id="1838104802459806957">Inclina cap amunt</translation>
+<translation id="1843105061469674856">Escaneja una pàgina més</translation>
 <translation id="1851169887664797861">Controls de càmera addicionals disponibles</translation>
 <translation id="1851616744363735765">EN PAUSA</translation>
 <translation id="1862930711583847113">No es pot exportar <ph name="FILE" /></translation>
@@ -77,6 +79,7 @@
 <translation id="414641094616694804">Aquesta càmera no pot canviar la resolució</translation>
 <translation id="4269820728363426813">Copia l'adreça de l'enllaç</translation>
 <translation id="4281620174117014503">Resolució mitjana</translation>
+<translation id="428234092390943511">Miniatura de la pàgina</translation>
 <translation id="4329152592498422850">Botó per fer una foto quadrada</translation>
 <translation id="4340659173795395806">Ara pots crear fitxers PDF de diverses pàgines</translation>
 <translation id="4383571725254449280">Registres de rendiment d'impressió</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_cy.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_cy.xtb
index fcc3b77..7ffb230a 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_cy.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_cy.xtb
@@ -9,6 +9,7 @@
 <translation id="1300209025925956156">Sganio eich dogfen</translation>
 <translation id="1309250603447638106">Lawrlwytho diweddariadau ar gyfer sganio dogfennau</translation>
 <translation id="137991641490787891"><ph name="ASPECT_RATIO_WIDTH" />. Search + Saeth dde i gael mynediad.</translation>
+<translation id="1417314334557041815">Golygu tudalen <ph name="INDEX" /></translation>
 <translation id="1430915738399379752">Argraffu</translation>
 <translation id="1467231725790366244">Mae <ph name="CAMERA" /> wedi'i ddadblygio.</translation>
 <translation id="1473110567575736769">Amserydd 3 eiliad</translation>
@@ -20,6 +21,7 @@
 <translation id="1627744224761163218">4 x 4</translation>
 <translation id="1664224225747386870">Dim byd wedi'i recordio</translation>
 <translation id="1838104802459806957">Gogwyddo i fyny</translation>
+<translation id="1843105061469674856">Sganio tudalen ychwanegol</translation>
 <translation id="1851169887664797861">Mae rheolyddion camera ychwanegol ar gael</translation>
 <translation id="1851616744363735765">SEIBIWYD</translation>
 <translation id="1862930711583847113">Methu ag allforio <ph name="FILE" /></translation>
@@ -77,6 +79,7 @@
 <translation id="414641094616694804">Ni all y camera hwn newid cydraniad</translation>
 <translation id="4269820728363426813">Copïo cyfeiriad y ddolen</translation>
 <translation id="4281620174117014503">Cydraniad canolig</translation>
+<translation id="428234092390943511">Mân-lun tudalen</translation>
 <translation id="4329152592498422850">Newidiwch i dynnu llun sgwâr</translation>
 <translation id="4340659173795395806">Nawr gallwch greu PDF aml-dudalen</translation>
 <translation id="4383571725254449280">Argraffu logiau perfformiad</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_da.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_da.xtb
index 865b463..8638fdbe 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_da.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_da.xtb
@@ -9,6 +9,7 @@
 <translation id="1300209025925956156">Scan dit dokument</translation>
 <translation id="1309250603447638106">Downloader opdateringer til dokumentscanning</translation>
 <translation id="137991641490787891"><ph name="ASPECT_RATIO_WIDTH" />. Tryk på søgetasten+venstrepil for at få adgang til dem.</translation>
+<translation id="1417314334557041815">Rediger side <ph name="INDEX" /></translation>
 <translation id="1430915738399379752">Udskriv</translation>
 <translation id="1467231725790366244"><ph name="CAMERA" /> er frakoblet.</translation>
 <translation id="1473110567575736769">Timer på 3 sekunder</translation>
@@ -20,6 +21,7 @@
 <translation id="1627744224761163218">4x4</translation>
 <translation id="1664224225747386870">Der er ingen optagelser</translation>
 <translation id="1838104802459806957">Drej opad</translation>
+<translation id="1843105061469674856">Scan ekstra side</translation>
 <translation id="1851169887664797861">Yderligere styringselementer til kameraet er tilgængelige</translation>
 <translation id="1851616744363735765">SAT PÅ PAUSE</translation>
 <translation id="1862930711583847113"><ph name="FILE" /> kan ikke eksporteres</translation>
@@ -77,6 +79,7 @@
 <translation id="414641094616694804">Dette kamera kan ikke ændre opløsning</translation>
 <translation id="4269820728363426813">Kopiér linkadresse</translation>
 <translation id="4281620174117014503">Medium opløsning</translation>
+<translation id="428234092390943511">Miniature for side</translation>
 <translation id="4329152592498422850">Skift for at tage et kvadratisk billede</translation>
 <translation id="4340659173795395806">Du kan nu oprette PDF-filer med flere sider</translation>
 <translation id="4383571725254449280">Effektivitetslogfiler for udskrivning</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_el.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_el.xtb
index 2f60c917..1833c57 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_el.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_el.xtb
@@ -9,6 +9,7 @@
 <translation id="1300209025925956156">Σάρωση του εγγράφου σας</translation>
 <translation id="1309250603447638106">Λήψη ενημερώσεων για τη σάρωση εγγράφων</translation>
 <translation id="137991641490787891"><ph name="ASPECT_RATIO_WIDTH" />. Αναζήτηση + αριστερό βέλος για πρόσβαση.</translation>
+<translation id="1417314334557041815">Επεξεργασία σελίδας <ph name="INDEX" /></translation>
 <translation id="1430915738399379752">Εκτύπωση</translation>
 <translation id="1467231725790366244">Η κάμερα <ph name="CAMERA" /> είναι αποσυνδεδεμένη.</translation>
 <translation id="1473110567575736769">Χρονόμετρο 3 δευτερολέπτων</translation>
@@ -20,6 +21,7 @@
 <translation id="1627744224761163218">4 x 4</translation>
 <translation id="1664224225747386870">Καμία εγγραφή</translation>
 <translation id="1838104802459806957">Κλίση προς τα πάνω</translation>
+<translation id="1843105061469674856">Σάρωση επιπλέον σελίδας</translation>
 <translation id="1851169887664797861">Υπάρχουν διαθέσιμα επιπλέον στοιχεία ελέγχου κάμερας</translation>
 <translation id="1851616744363735765">ΣΕ ΠΑΥΣΗ</translation>
 <translation id="1862930711583847113">Δεν είναι δυνατή η εξαγωγή του αρχείου <ph name="FILE" /></translation>
@@ -77,6 +79,7 @@
 <translation id="414641094616694804">Δεν είναι δυνατή η αλλαγή ανάλυσης αυτής της κάμερας</translation>
 <translation id="4269820728363426813">Αντιγρ. διεύθυνσης συνδέσμου</translation>
 <translation id="4281620174117014503">Μεσαία ανάλυση</translation>
+<translation id="428234092390943511">Μικρογραφία σελίδας</translation>
 <translation id="4329152592498422850">Μετάβαση στη λειτουργία λήψης τετράγωνης φωτογραφίας</translation>
 <translation id="4340659173795395806">Μπορείτε πλέον να δημιουργείτε PDF πολλών σελίδων.</translation>
 <translation id="4383571725254449280">Εκτύπωση αρχείου καταγραφής απόδοσης</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_en-GB.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_en-GB.xtb
index 03a19a6..e4a4009 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_en-GB.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_en-GB.xtb
@@ -1,6 +1,7 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="en-GB">
+<translation id="1057925581724305206">Full HD (1080p)</translation>
 <translation id="1113173431709655881">Camera mode</translation>
 <translation id="1153190633558910465">Grid off</translation>
 <translation id="1175958423215084756">Link detected. <ph name="HOSTNAME" /></translation>
@@ -19,6 +20,7 @@
 <translation id="1588438908519853928">Normal</translation>
 <translation id="1620510694547887537">Camera</translation>
 <translation id="1627744224761163218">4 x 4</translation>
+<translation id="1644345013557678440">HD (720p)</translation>
 <translation id="1664224225747386870">Nothing recorded</translation>
 <translation id="1838104802459806957">Tilt up</translation>
 <translation id="1843105061469674856">Scan additional page</translation>
@@ -93,6 +95,7 @@
 <translation id="4705093842003735294">Full resolution</translation>
 <translation id="4890010094662541459">3 x 3</translation>
 <translation id="491895758387112773">Multistream video recording</translation>
+<translation id="4984613436295737187">Quad HD (1440p)</translation>
 <translation id="5034763830503483128">Photo aspect ratio</translation>
 <translation id="5057360777601936059">Your camera is currently unavailable.
         Please check if the camera is properly connected.</translation>
@@ -101,6 +104,7 @@
 <translation id="5266635337630551423">Document top-left corner</translation>
 <translation id="5317780077021120954">Save</translation>
 <translation id="5320594929574852403">Moving in left direction</translation>
+<translation id="5374917190292010970">4K (2160p)</translation>
 <translation id="5444515100983837161">Place all edges of the document within the frame. Scanning works best if the document and background are different colours.</translation>
 <translation id="5662366948659129155">Scanning page <ph name="COUNT" /></translation>
 <translation id="5671277269877808209">Square</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_fi.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_fi.xtb
index a76e3589..0adb422 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_fi.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_fi.xtb
@@ -9,6 +9,7 @@
 <translation id="1300209025925956156">Skannaa dokumenttisi</translation>
 <translation id="1309250603447638106">Ladataan dokumenttien skannauksen päivityksiä</translation>
 <translation id="137991641490787891"><ph name="ASPECT_RATIO_WIDTH" />. Käytä valitsemalla Haku + vasen nuoli.</translation>
+<translation id="1417314334557041815">Muokkaa sivua <ph name="INDEX" /></translation>
 <translation id="1430915738399379752">Tulosta</translation>
 <translation id="1467231725790366244"><ph name="CAMERA" /> on irrotettu.</translation>
 <translation id="1473110567575736769">3 sekunnin ajastin</translation>
@@ -20,6 +21,7 @@
 <translation id="1627744224761163218">4x4</translation>
 <translation id="1664224225747386870">Mitään ei kuvattu</translation>
 <translation id="1838104802459806957">Kallista ylöspäin</translation>
+<translation id="1843105061469674856">Skannaa toinen sivu</translation>
 <translation id="1851169887664797861">Lisää kameran säätimiä käytettävissä</translation>
 <translation id="1851616744363735765">KESKEYTETTY</translation>
 <translation id="1862930711583847113">Vienti epäonnistui: <ph name="FILE" /></translation>
@@ -77,6 +79,7 @@
 <translation id="414641094616694804">Kamera ei voi muuttaa resoluutiota</translation>
 <translation id="4269820728363426813">Kopioi linkin osoite</translation>
 <translation id="4281620174117014503">Keskitason resoluutio</translation>
+<translation id="428234092390943511">Sivun pikkukuva</translation>
 <translation id="4329152592498422850">Vaihda neliökuviin</translation>
 <translation id="4340659173795395806">Voit nyt luoda monisivuisia PDF-tiedostoja</translation>
 <translation id="4383571725254449280">Tulosta kehityslokit</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_fil.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_fil.xtb
index 0b526e50..d30ba2a 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_fil.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_fil.xtb
@@ -9,6 +9,7 @@
 <translation id="1300209025925956156">I-scan ang iyong dokumento</translation>
 <translation id="1309250603447638106">Dina-download ang mga update para sa pag-scan ng dokumento</translation>
 <translation id="137991641490787891"><ph name="ASPECT_RATIO_WIDTH" />. Search + Kaliwang arrow para i-access.</translation>
+<translation id="1417314334557041815">I-edit ang page <ph name="INDEX" /></translation>
 <translation id="1430915738399379752">I-print</translation>
 <translation id="1467231725790366244">Hindi nakasaksak ang <ph name="CAMERA" />.</translation>
 <translation id="1473110567575736769">3 segundong timer</translation>
@@ -20,6 +21,7 @@
 <translation id="1627744224761163218">4 x 4</translation>
 <translation id="1664224225747386870">Walang na-record</translation>
 <translation id="1838104802459806957">Mag-tilt pataas</translation>
+<translation id="1843105061469674856">Mag-scan ng karagdagang page</translation>
 <translation id="1851169887664797861">Available ang mga karagdagang kontrol sa camera</translation>
 <translation id="1851616744363735765">NAKA-PAUSE</translation>
 <translation id="1862930711583847113">Hindi ma-export ang <ph name="FILE" /></translation>
@@ -77,6 +79,7 @@
 <translation id="414641094616694804">Hindi puwedeng baguhin ng camera na ito ang resolution</translation>
 <translation id="4269820728363426813">Kopyahin ang address ng link</translation>
 <translation id="4281620174117014503">Katamtamang resolution</translation>
+<translation id="428234092390943511">Thumbnail ng page</translation>
 <translation id="4329152592498422850">Lumipat para kumuha ng parisukat na larawan</translation>
 <translation id="4340659173795395806">Puwede ka na ngayong gumawa ng maraming page na PDF</translation>
 <translation id="4383571725254449280">Mag-print ng mga log ng pagganap</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_gu.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_gu.xtb
index adbe393..54cfb38c 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_gu.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_gu.xtb
@@ -9,6 +9,7 @@
 <translation id="1300209025925956156">તમારા દસ્તાવેજને સ્કૅન કરો</translation>
 <translation id="1309250603447638106">દસ્તાવેજ સ્કૅન કરવા માટે, અપડેટ ડાઉનલોડ કરી રહ્યાં છીએ</translation>
 <translation id="137991641490787891"><ph name="ASPECT_RATIO_WIDTH" />. ઍક્સેસ કરવા માટે, Search + ડાબી ઍરો કી.</translation>
+<translation id="1417314334557041815">પેજ <ph name="INDEX" />માં ફેરફાર કરો</translation>
 <translation id="1430915738399379752">પ્રિન્ટ</translation>
 <translation id="1467231725790366244"><ph name="CAMERA" /> અનપ્લગ કરેલું છે.</translation>
 <translation id="1473110567575736769">3 સેકન્ડનું ટાઇમર</translation>
@@ -20,6 +21,7 @@
 <translation id="1627744224761163218">4 x 4</translation>
 <translation id="1664224225747386870">કંઈ રેકોર્ડ થયું નથી</translation>
 <translation id="1838104802459806957">ઉપર ટિલ્ટ કરો</translation>
+<translation id="1843105061469674856">વધારાના પેજ સ્કૅન કરો</translation>
 <translation id="1851169887664797861">કૅમેરાના વધારાના નિયંત્રણો ઉપલબ્ધ છે</translation>
 <translation id="1851616744363735765">થોભાવેલ</translation>
 <translation id="1862930711583847113"><ph name="FILE" />ની નિકાસ કરવામાં નિષ્ફળ રહ્યા</translation>
@@ -77,6 +79,7 @@
 <translation id="414641094616694804">આ કૅમેરા રિઝોલ્યુશનમાં ફેરફાર કરી શકતો નથી</translation>
 <translation id="4269820728363426813">લિંક સરનામું કૉપિ કરો</translation>
 <translation id="4281620174117014503">મધ્યમ રિઝોલ્યુશન</translation>
+<translation id="428234092390943511">પેજ થંબનેલ</translation>
 <translation id="4329152592498422850">વર્ગાકાર ફોટો લેવા માટે સ્વિચ કરો</translation>
 <translation id="4340659173795395806">હવે તમે એકથી વધુ પેજ વાળી PDF બનાવી શકો છો</translation>
 <translation id="4383571725254449280">કાર્યપ્રદર્શનના લૉગ પ્રિન્ટ કરો</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_hu.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_hu.xtb
index f27c56a..8c24cec7 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_hu.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_hu.xtb
@@ -9,6 +9,7 @@
 <translation id="1300209025925956156">Dokumentum beolvasása</translation>
 <translation id="1309250603447638106">Frissítések letöltése a dokumentumbeolvasáshoz…</translation>
 <translation id="137991641490787891"><ph name="ASPECT_RATIO_WIDTH" />. Megtekintésükhöz nyomja le a Keresés + Balra nyíl billentyűparancsot.</translation>
+<translation id="1417314334557041815"><ph name="INDEX" />. oldal szerkesztése</translation>
 <translation id="1430915738399379752">Nyomtatás</translation>
 <translation id="1467231725790366244"><ph name="CAMERA" /> nincs csatlakoztatva.</translation>
 <translation id="1473110567575736769">Három másodperces időzítő</translation>
@@ -20,6 +21,7 @@
 <translation id="1627744224761163218">4 × 4</translation>
 <translation id="1664224225747386870">A kamera semmit sem rögzített</translation>
 <translation id="1838104802459806957">Billentés felfelé</translation>
+<translation id="1843105061469674856">További oldal beolvasása</translation>
 <translation id="1851169887664797861">Újabb kameravezérlők állnak rendelkezésre</translation>
 <translation id="1851616744363735765">SZÜNETEL</translation>
 <translation id="1862930711583847113">Nem lehet exportálni: <ph name="FILE" /></translation>
@@ -77,6 +79,7 @@
 <translation id="414641094616694804">A kamera felbontását nem lehet módosítani</translation>
 <translation id="4269820728363426813">Link másolása</translation>
 <translation id="4281620174117014503">Közepes felbontás</translation>
+<translation id="428234092390943511">Oldal indexképe</translation>
 <translation id="4329152592498422850">Váltás négyzet alakú fotó készítésére</translation>
 <translation id="4340659173795395806">Most már többoldalas PDF-fájlt is létrehozhat</translation>
 <translation id="4383571725254449280">Teljesítménynaplók nyomtatása</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_id.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_id.xtb
index 5a0a8800..58afb262 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_id.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_id.xtb
@@ -9,6 +9,7 @@
 <translation id="1300209025925956156">Pindai dokumen Anda</translation>
 <translation id="1309250603447638106">Mendownload update untuk pemindaian dokumen</translation>
 <translation id="137991641490787891"><ph name="ASPECT_RATIO_WIDTH" />. Penelusuran + Panah kiri untuk mengakses.</translation>
+<translation id="1417314334557041815">Edit halaman <ph name="INDEX" /></translation>
 <translation id="1430915738399379752">Cetak</translation>
 <translation id="1467231725790366244"><ph name="CAMERA" /> dicabut.</translation>
 <translation id="1473110567575736769">Timer 3 detik</translation>
@@ -20,6 +21,7 @@
 <translation id="1627744224761163218">4 x 4</translation>
 <translation id="1664224225747386870">Tidak ada yang direkam</translation>
 <translation id="1838104802459806957">Miringkan ke atas</translation>
+<translation id="1843105061469674856">Pindai halaman tambahan</translation>
 <translation id="1851169887664797861">Kontrol kamera tambahan tersedia</translation>
 <translation id="1851616744363735765">DIJEDA</translation>
 <translation id="1862930711583847113">Tidak dapat mengekspor <ph name="FILE" /></translation>
@@ -77,6 +79,7 @@
 <translation id="414641094616694804">Kamera ini tidak dapat mengubah resolusi</translation>
 <translation id="4269820728363426813">Salin URL</translation>
 <translation id="4281620174117014503">Resolusi sedang</translation>
+<translation id="428234092390943511">Thumbnail halaman</translation>
 <translation id="4329152592498422850">Beralih ke mode mengambil foto persegi</translation>
 <translation id="4340659173795395806">Anda kini dapat membuat PDF multi-halaman</translation>
 <translation id="4383571725254449280">Log performa cetak</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_kn.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_kn.xtb
index 96a8c29..22918962 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_kn.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_kn.xtb
@@ -9,6 +9,7 @@
 <translation id="1300209025925956156">ನಿಮ್ಮ ಡಾಕ್ಯುಮೆಂಟ್ ಅನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡಿ</translation>
 <translation id="1309250603447638106">ಡಾಕ್ಯುಮೆಂಟ್ ಸ್ಕ್ಯಾನಿಂಗ್‌ಗಾಗಿ ಅಪ್‌ಡೇಟ್‌ಗಳನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ</translation>
 <translation id="137991641490787891"><ph name="ASPECT_RATIO_WIDTH" />. ಪ್ರವೇಶಿಸಲು Search +ಲೆಫ್ಟ್ ಆ್ಯರೋ.</translation>
+<translation id="1417314334557041815">ಪುಟ <ph name="INDEX" /> ಎಡಿಟ್ ಮಾಡಿ</translation>
 <translation id="1430915738399379752">ಮುದ್ರಿಸು</translation>
 <translation id="1467231725790366244"><ph name="CAMERA" /> ಅನ್‌ಪ್ಲಗ್ ಆಗಿದೆ.</translation>
 <translation id="1473110567575736769">3 ಸೆಕೆಂಡುಗಳ ಟೈಮರ್</translation>
@@ -20,6 +21,7 @@
 <translation id="1627744224761163218">4 x 4</translation>
 <translation id="1664224225747386870">ಏನನ್ನೂ ರೆಕಾರ್ಡ್ ಮಾಡಲಾಗಿಲ್ಲ</translation>
 <translation id="1838104802459806957">ಮೇಲಕ್ಕೆ ಟಿಲ್ಟ್ ಮಾಡಿ</translation>
+<translation id="1843105061469674856">ಹೆಚ್ಚುವರಿ ಪುಟವನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡಿ</translation>
 <translation id="1851169887664797861">ಹೆಚ್ಚುವರಿ ಕ್ಯಾಮರಾ ನಿಯಂತ್ರಣಗಳು ಲಭ್ಯ</translation>
 <translation id="1851616744363735765">ವಿರಾಮಗೊಳಿಸಲಾಗಿದೆ</translation>
 <translation id="1862930711583847113"><ph name="FILE" /> ರಫ್ತು ಮಾಡಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ</translation>
@@ -77,6 +79,7 @@
 <translation id="414641094616694804">ಈ ಕ್ಯಾಮರಾ ರೆಸಲ್ಯೂಷನ್ ಅನ್ನು ಬದಲಾಯಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ</translation>
 <translation id="4269820728363426813">ಲಿಂಕ್ ವಿಳಾಸವನ್ನು ನಕಲಿಸಿ</translation>
 <translation id="4281620174117014503">ಮೀಡಿಯಮ್ ರೆಸಲ್ಯೂಷನ್</translation>
+<translation id="428234092390943511">ಪುಟದ ಥಂಬ್‌ನೇಲ್</translation>
 <translation id="4329152592498422850">ಚೌಕಾಕಾರದ ಫೋಟೋ ತೆಗೆಯಲು ಬದಲಾಯಿಸಿ</translation>
 <translation id="4340659173795395806">ನೀವು ಈಗ ಬಹು ಪುಟ PDF ಅನ್ನು ರಚಿಸಬಹುದು</translation>
 <translation id="4383571725254449280">ಕಾರ್ಯಕ್ಷಮತೆ ಲಾಗ್‌ಗಳನ್ನು ಪ್ರಿಂಟ್ ಮಾಡಿ</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_lo.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_lo.xtb
index 363ed24..388bdc3 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_lo.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_lo.xtb
@@ -9,6 +9,7 @@
 <translation id="1300209025925956156">ສະແກນເອກະສານຂອງທ່ານ</translation>
 <translation id="1309250603447638106">ກຳລັງດາວໂຫຼດການອັບເດດສຳລັບການສະແກນເອກະສານ</translation>
 <translation id="137991641490787891"><ph name="ASPECT_RATIO_WIDTH" />. ຊອກຫາ + ລູກສອນຊ້າຍເພື່ອເຂົ້າເຖິງ.</translation>
+<translation id="1417314334557041815">ແກ້ໄຂໜ້າ <ph name="INDEX" /></translation>
 <translation id="1430915738399379752">ພິມ</translation>
 <translation id="1467231725790366244">ຖອດສາຍ <ph name="CAMERA" /> ແລ້ວ.</translation>
 <translation id="1473110567575736769">ໂມງນັບຖອຍຫຼັງ 3 ວິນາທີ</translation>
@@ -20,6 +21,7 @@
 <translation id="1627744224761163218">4 x 4</translation>
 <translation id="1664224225747386870">ບໍ່ໄດ້ບັນທຶກຫຍັງໄວ້</translation>
 <translation id="1838104802459806957">ອຽງຂຶ້ນ</translation>
+<translation id="1843105061469674856">ສະແກນໜ້າເພີ່ມເຕີມ</translation>
 <translation id="1851169887664797861">ສາມາດໃຊ້ການຄວບຄຸມກ້ອງຖ່າຍຮູບເພີ່ມເຕີມໄດ້</translation>
 <translation id="1851616744363735765">ຢຸດໄວ້ຊົ່ວຄາວແລ້ວ</translation>
 <translation id="1862930711583847113">ບໍ່ສາມາດສົ່ງອອກ <ph name="FILE" /> ໄດ້</translation>
@@ -77,6 +79,7 @@
 <translation id="414641094616694804">ກ້ອງຖ່າຍຮູບນີ້ບໍ່ສາມາດປ່ຽນຄວາມລະອຽດໄດ້</translation>
 <translation id="4269820728363426813">ກັອບປີ້ທີ່ຢູ່ລິ້ງ</translation>
 <translation id="4281620174117014503">ຄວາມລະອຽດປານກາງ</translation>
+<translation id="428234092390943511">ຮູບຕົວຢ່າງໜ້າ</translation>
 <translation id="4329152592498422850">ສະຫຼັບເພື່ອຖ່າຍຮູບແບບເປັນສີ່ຫຼ່ຽມສາກ</translation>
 <translation id="4340659173795395806">ຕອນນີ້ທ່ານສາມາດສ້າງ PDF ແບບຫຼາຍໜ້າໄດ້ແລ້ວ</translation>
 <translation id="4383571725254449280">ພິມບັນທຶກປະສິດທິພາບ</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_mk.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_mk.xtb
index e0e9ce9..e66397e9 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_mk.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_mk.xtb
@@ -1,6 +1,7 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="mk">
+<translation id="1057925581724305206">Full HD (1080p)</translation>
 <translation id="1113173431709655881">Режим на камера</translation>
 <translation id="1153190633558910465">Исклучи мрежа</translation>
 <translation id="1175958423215084756">Препознаен е линк. <ph name="HOSTNAME" /></translation>
@@ -19,6 +20,7 @@
 <translation id="1588438908519853928">Нормален</translation>
 <translation id="1620510694547887537">Камера</translation>
 <translation id="1627744224761163218">4 x 4</translation>
+<translation id="1644345013557678440">HD (720p)</translation>
 <translation id="1664224225747386870">Ништо не е снимено</translation>
 <translation id="1838104802459806957">Навалeте нагоре</translation>
 <translation id="1843105061469674856">Скенирај дополнителна страница</translation>
@@ -93,6 +95,7 @@
 <translation id="4705093842003735294">Полна резолуција</translation>
 <translation id="4890010094662541459">3 x 3</translation>
 <translation id="491895758387112773">Видеоснимање за мултипреноси</translation>
+<translation id="4984613436295737187">Quad HD (1440p)</translation>
 <translation id="5034763830503483128">Сооднос на фотографија</translation>
 <translation id="5057360777601936059">Камерата е недостапна во моментов.
         Проверете дали камерата е правилно поврзана.</translation>
@@ -101,6 +104,7 @@
 <translation id="5266635337630551423">Горен лев агол на документот</translation>
 <translation id="5317780077021120954">Зачувај</translation>
 <translation id="5320594929574852403">Се преместува налево</translation>
+<translation id="5374917190292010970">4K (2160p)</translation>
 <translation id="5444515100983837161">Поставете ги сите рабови на документот во рамката. Скенирањето функционира најдобро кога документот и заднината имаат различни бои.</translation>
 <translation id="5662366948659129155">Се скенира страницата <ph name="COUNT" /></translation>
 <translation id="5671277269877808209">Квадрат</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_mr.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_mr.xtb
index 7ac5eaf..56e5df6 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_mr.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_mr.xtb
@@ -9,6 +9,7 @@
 <translation id="1300209025925956156">तुमचा दस्तऐवज स्कॅन करा</translation>
 <translation id="1309250603447638106">दस्तऐवज स्कॅनिंगसाठी अपडेट डाउनलोड करत आहे</translation>
 <translation id="137991641490787891"><ph name="ASPECT_RATIO_WIDTH" />. अ‍ॅक्सेस करण्यासाठी Search + Left arrow दाबा.</translation>
+<translation id="1417314334557041815"><ph name="INDEX" /> पेज संपादित करा</translation>
 <translation id="1430915738399379752">प्रिंट</translation>
 <translation id="1467231725790366244"><ph name="CAMERA" /> अनप्लग केला आहे.</translation>
 <translation id="1473110567575736769">तीन सेकंदांचा टायमर</translation>
@@ -20,6 +21,7 @@
 <translation id="1627744224761163218">४ x ४</translation>
 <translation id="1664224225747386870">काहीही रेकॉर्ड केले गेले नाही</translation>
 <translation id="1838104802459806957">वर टिल्ट करा</translation>
+<translation id="1843105061469674856">अतिरिक्त पेज स्कॅन करा</translation>
 <translation id="1851169887664797861">अतिरिक्त कॅमेरा नियंत्रणे उपलब्ध आहेत</translation>
 <translation id="1851616744363735765">थांबवले</translation>
 <translation id="1862930711583847113"><ph name="FILE" /> एक्सपोर्ट करता आली नाही</translation>
@@ -77,6 +79,7 @@
 <translation id="414641094616694804">हा कॅमेरा रेझोल्यूशन बदलू शकत नाही</translation>
 <translation id="4269820728363426813">लिंकचा पत्ता कॉपी करा</translation>
 <translation id="4281620174117014503">मध्यम रेझोल्यूशन</translation>
+<translation id="428234092390943511">पेज थंबनेल</translation>
 <translation id="4329152592498422850">चौरस फोटो काढण्यासाठी स्विच करा</translation>
 <translation id="4340659173795395806">तुम्ही आता मल्टी-पेज PDF तयार करू शकता</translation>
 <translation id="4383571725254449280">परफॉर्मन्स लॉग प्रिंट करा</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_ms.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_ms.xtb
index 0fc05a3f..67e4e830 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_ms.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_ms.xtb
@@ -9,6 +9,7 @@
 <translation id="1300209025925956156">Imbas dokumen anda</translation>
 <translation id="1309250603447638106">Memuat turun kemaskinian untuk pengimbasan dokumen</translation>
 <translation id="137991641490787891"><ph name="ASPECT_RATIO_WIDTH" />. Carian + Anak panah ke kiri untuk mengakses.</translation>
+<translation id="1417314334557041815">Edit halaman <ph name="INDEX" /></translation>
 <translation id="1430915738399379752">Cetak</translation>
 <translation id="1467231725790366244">Palam <ph name="CAMERA" /> dicabut.</translation>
 <translation id="1473110567575736769">Pemasa 3 saat</translation>
@@ -20,6 +21,7 @@
 <translation id="1627744224761163218">4 x 4</translation>
 <translation id="1664224225747386870">Tiada apa-apa yang dirakamkan</translation>
 <translation id="1838104802459806957">Condongkan ke atas</translation>
+<translation id="1843105061469674856">Imbas halaman tambahan</translation>
 <translation id="1851169887664797861">Kawalan kamera tambahan tersedia</translation>
 <translation id="1851616744363735765">DIJEDA</translation>
 <translation id="1862930711583847113">Tidak dapat mengeksport <ph name="FILE" /></translation>
@@ -77,6 +79,7 @@
 <translation id="414641094616694804">Kamera ini tidak boleh menukar peleraian</translation>
 <translation id="4269820728363426813">Salin alamat pautan</translation>
 <translation id="4281620174117014503">Peleraian sederhana</translation>
+<translation id="428234092390943511">Lakaran kecil halaman</translation>
 <translation id="4329152592498422850">Beralih kepada mengambil foto segi empat sama</translation>
 <translation id="4340659173795395806">Kini anda boleh membuat PDF berbilang halaman</translation>
 <translation id="4383571725254449280">Cetak log prestasi</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_my.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_my.xtb
index 34c1e09..25cf7f9 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_my.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_my.xtb
@@ -9,6 +9,7 @@
 <translation id="1300209025925956156">သင့်မှတ်တမ်းဖိုင်ကို စကင်ဖတ်ခြင်း</translation>
 <translation id="1309250603447638106">မှတ်တမ်းစကင်ဖတ်ခြင်းအတွက် အပ်ဒိတ်များ ဒေါင်းလုဒ်လုပ်နေသည်</translation>
 <translation id="137991641490787891"><ph name="ASPECT_RATIO_WIDTH" />။ ကြည့်ရန် Search + ‘ဘယ်ညွှန်မြား’ နှိပ်ပါ။</translation>
+<translation id="1417314334557041815"><ph name="INDEX" /> စာမျက်နှာကို တည်းဖြတ်ရန်</translation>
 <translation id="1430915738399379752">ပရင့်</translation>
 <translation id="1467231725790366244"><ph name="CAMERA" /> ကို ပလတ်ဖြုတ်ထားသည်။</translation>
 <translation id="1473110567575736769">၃ စက္ကန့် အချိန်တိုင်းစက်</translation>
@@ -20,6 +21,7 @@
 <translation id="1627744224761163218">၄ x ၄</translation>
 <translation id="1664224225747386870">မည်သည့်အရာမျှ ရိုက်ကူးမထားပါ</translation>
 <translation id="1838104802459806957">အပေါ်သို့ စောင်းရန်</translation>
+<translation id="1843105061469674856">နောက်ထပ်စာမျက်နှာ စကင်ဖတ်ရန်</translation>
 <translation id="1851169887664797861">နောက်ထပ် ကင်မရာအထိန်းအချုပ်များ ရနိုင်သည်</translation>
 <translation id="1851616744363735765">ခေတ္တရပ်ထားသည်</translation>
 <translation id="1862930711583847113"><ph name="FILE" /> ကို ထုတ်ယူ၍မရပါ</translation>
@@ -77,6 +79,7 @@
 <translation id="414641094616694804">ဤကင်မရာတွင် ပုံရိပ်ပြတ်သားကိန်းကို မပြောင်းနိုင်ပါ</translation>
 <translation id="4269820728363426813">လင့် လိပ်စာ ကူးယူရန်</translation>
 <translation id="4281620174117014503">အလယ်အလတ် ပုံရိပ်ပြတ်သားကိန်း</translation>
+<translation id="428234092390943511">စာမျက်နှာ ပုံသေး</translation>
 <translation id="4329152592498422850">စတုရန်းမုဒ် ဓာတ်ပုံရိုက်ရန်အတွက် ပြောင်းရန်</translation>
 <translation id="4340659173795395806">စာမျက်နှာများပါသည့် PDF ကို ယခုပြုလုပ်နိုင်ပါပြီ</translation>
 <translation id="4383571725254449280">စွမ်းဆောင်ရည် မှတ်တမ်းများကို ပုံနှိပ်ရန်</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_nl.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_nl.xtb
index b5689636e..a6d7b46 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_nl.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_nl.xtb
@@ -9,6 +9,7 @@
 <translation id="1300209025925956156">Je document scannen</translation>
 <translation id="1309250603447638106">Updates voor het scannen van documenten downloaden</translation>
 <translation id="137991641490787891"><ph name="ASPECT_RATIO_WIDTH" />. Zoeken + pijl-links om ze te openen.</translation>
+<translation id="1417314334557041815">Pagina <ph name="INDEX" /> bewerken</translation>
 <translation id="1430915738399379752">Afdrukken</translation>
 <translation id="1467231725790366244"><ph name="CAMERA" /> is niet aangesloten.</translation>
 <translation id="1473110567575736769">Timer 3 seconden</translation>
@@ -20,6 +21,7 @@
 <translation id="1627744224761163218">4 x 4</translation>
 <translation id="1664224225747386870">Niets opgenomen</translation>
 <translation id="1838104802459806957">Naar boven kantelen</translation>
+<translation id="1843105061469674856">Extra pagina scannen</translation>
 <translation id="1851169887664797861">Nieuwe camera-opties beschikbaar</translation>
 <translation id="1851616744363735765">ONDERBROKEN</translation>
 <translation id="1862930711583847113">Kan <ph name="FILE" /> niet exporteren</translation>
@@ -77,6 +79,7 @@
 <translation id="414641094616694804">Deze camera kan de resolutie niet wijzigen</translation>
 <translation id="4269820728363426813">Linkadres kopiëren</translation>
 <translation id="4281620174117014503">Gemiddelde resolutie</translation>
+<translation id="428234092390943511">Paginathumbnail</translation>
 <translation id="4329152592498422850">Schakel over om vierkante foto te maken</translation>
 <translation id="4340659173795395806">Je kunt nu pdf's met meerdere pagina's maken</translation>
 <translation id="4383571725254449280">Prestatielogboeken afdrukken</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_no.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_no.xtb
index a25b3d67..5e4468f 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_no.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_no.xtb
@@ -9,6 +9,7 @@
 <translation id="1300209025925956156">Skann dokumentet</translation>
 <translation id="1309250603447638106">Laster ned oppdateringer for dokumentskanning</translation>
 <translation id="137991641490787891"><ph name="ASPECT_RATIO_WIDTH" />. Trykk på søketasten + venstrepil for å se dem.</translation>
+<translation id="1417314334557041815">Rediger side <ph name="INDEX" /></translation>
 <translation id="1430915738399379752">Skriv ut</translation>
 <translation id="1467231725790366244"><ph name="CAMERA" /> er koblet fra.</translation>
 <translation id="1473110567575736769">Tre sekunders nedtelling</translation>
@@ -20,6 +21,7 @@
 <translation id="1627744224761163218">4 x 4</translation>
 <translation id="1664224225747386870">Ingenting er tatt opp</translation>
 <translation id="1838104802459806957">Vipp opp</translation>
+<translation id="1843105061469674856">Skann en side til</translation>
 <translation id="1851169887664797861">Flere kamerakontroller er tilgjengelige</translation>
 <translation id="1851616744363735765">SATT PÅ PAUSE</translation>
 <translation id="1862930711583847113">Kan ikke eksportere <ph name="FILE" /></translation>
@@ -77,6 +79,7 @@
 <translation id="414641094616694804">Dette kameraet kan ikke endre oppløsning</translation>
 <translation id="4269820728363426813">Kopiér linkadressen</translation>
 <translation id="4281620174117014503">Middels oppløsning</translation>
+<translation id="428234092390943511">Miniatyrbilde av siden</translation>
 <translation id="4329152592498422850">Bytt til kvadratisk bilde</translation>
 <translation id="4340659173795395806">Nå kan du lage flersiders PDF-filer</translation>
 <translation id="4383571725254449280">Logger over utskriftsytelse</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_pt-PT.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_pt-PT.xtb
index 8962890..e702dde 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_pt-PT.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_pt-PT.xtb
@@ -9,6 +9,7 @@
 <translation id="1300209025925956156">Digitalize o seu documento</translation>
 <translation id="1309250603447638106">A transferir atualizações para a digitalização de documentos</translation>
 <translation id="137991641490787891"><ph name="ASPECT_RATIO_WIDTH" />. Pesquisa + seta para a esquerda para aceder.</translation>
+<translation id="1417314334557041815">Editar página <ph name="INDEX" /></translation>
 <translation id="1430915738399379752">Imprimir</translation>
 <translation id="1467231725790366244">A <ph name="CAMERA" /> está desligada.</translation>
 <translation id="1473110567575736769">Temporizador de 3 segundos</translation>
@@ -20,6 +21,7 @@
 <translation id="1627744224761163218">4 x 4</translation>
 <translation id="1664224225747386870">Nada foi gravado.</translation>
 <translation id="1838104802459806957">Inclinar para cima</translation>
+<translation id="1843105061469674856">Digitalizar página adicional</translation>
 <translation id="1851169887664797861">Controlos da câmara adicionais disponíveis</translation>
 <translation id="1851616744363735765">EM PAUSA</translation>
 <translation id="1862930711583847113">Não foi possível exportar o ficheiro <ph name="FILE" />.</translation>
@@ -77,6 +79,7 @@
 <translation id="414641094616694804">Não é possível alterar a resolução desta câmara</translation>
 <translation id="4269820728363426813">Copiar endereço do link</translation>
 <translation id="4281620174117014503">Resolução média</translation>
+<translation id="428234092390943511">Miniatura da página</translation>
 <translation id="4329152592498422850">Mudar para tirar foto quadrada</translation>
 <translation id="4340659173795395806">Agora, pode criar um PDF de várias páginas</translation>
 <translation id="4383571725254449280">Imprimir registos de desempenho</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_sl.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_sl.xtb
index 49e80bf..7d7a5d25 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_sl.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_sl.xtb
@@ -9,6 +9,7 @@
 <translation id="1300209025925956156">Optično branje dokumenta</translation>
 <translation id="1309250603447638106">Prenašanje posodobitev za optično branje dokumentov</translation>
 <translation id="137991641490787891"><ph name="ASPECT_RATIO_WIDTH" />. Tipka za iskanja + puščica levo za dostop.</translation>
+<translation id="1417314334557041815">Uredi stran <ph name="INDEX" /></translation>
 <translation id="1430915738399379752">Natisni</translation>
 <translation id="1467231725790366244"><ph name="CAMERA" /> ni priključena.</translation>
 <translation id="1473110567575736769">3-sekundni časovnik</translation>
@@ -20,6 +21,7 @@
 <translation id="1627744224761163218">4 x 4</translation>
 <translation id="1664224225747386870">Nič ni posneto</translation>
 <translation id="1838104802459806957">Nagni navzgor</translation>
+<translation id="1843105061469674856">Optično preberi dodatno stran</translation>
 <translation id="1851169887664797861">Na voljo so dodatni kontrolniki kamere.</translation>
 <translation id="1851616744363735765">ZAČASNO ZAUSTAVLJENO</translation>
 <translation id="1862930711583847113">Datoteke <ph name="FILE" /> ni mogoče izvoziti</translation>
@@ -77,6 +79,7 @@
 <translation id="414641094616694804">Za ta fotoaparat ni mogoče spremeniti ločljivosti</translation>
 <translation id="4269820728363426813">Kopiraj naslov povezave</translation>
 <translation id="4281620174117014503">Srednja ločljivost</translation>
+<translation id="428234092390943511">Sličica strani</translation>
 <translation id="4329152592498422850">Preklop na snemanje kvadratnih fotografij</translation>
 <translation id="4340659173795395806">Zdaj lahko ustvarite večstranski PDF.</translation>
 <translation id="4383571725254449280">Tiskanje dnevnikov delovanja</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_sv.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_sv.xtb
index 429004426..bd1e2ae 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_sv.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_sv.xtb
@@ -9,6 +9,7 @@
 <translation id="1300209025925956156">Skanna dokumentet</translation>
 <translation id="1309250603447638106">Laddar ned uppdateringar för dokumentskanning</translation>
 <translation id="137991641490787891"><ph name="ASPECT_RATIO_WIDTH" />. Sök + vänsterpil för att få åtkomst.</translation>
+<translation id="1417314334557041815">Redigera sida <ph name="INDEX" /></translation>
 <translation id="1430915738399379752">Skriv ut</translation>
 <translation id="1467231725790366244"><ph name="CAMERA" /> är inte ansluten.</translation>
 <translation id="1473110567575736769">Timer för 3 sekunder</translation>
@@ -20,6 +21,7 @@
 <translation id="1627744224761163218">4 × 4</translation>
 <translation id="1664224225747386870">Ingenting spelades in</translation>
 <translation id="1838104802459806957">Vrid uppåt</translation>
+<translation id="1843105061469674856">Skanna ytterligare en sida</translation>
 <translation id="1851169887664797861">Ytterligare kamerakontroller tillgängliga</translation>
 <translation id="1851616744363735765">PAUSAD</translation>
 <translation id="1862930711583847113">Det gick inte att exportera <ph name="FILE" /></translation>
@@ -77,6 +79,7 @@
 <translation id="414641094616694804">Det går inte att ändra upplösning för den här kameran</translation>
 <translation id="4269820728363426813">Kopiera länkadress</translation>
 <translation id="4281620174117014503">Medelhög upplösning</translation>
+<translation id="428234092390943511">Sidminiatyr</translation>
 <translation id="4329152592498422850">Byt till att ta kvadratiskt foto</translation>
 <translation id="4340659173795395806">Nu kan du skapa PDF:er med flera sidor</translation>
 <translation id="4383571725254449280">Skriva ut resultatloggar</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_th.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_th.xtb
index 24e195c8..10c2bba 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_th.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_th.xtb
@@ -9,6 +9,7 @@
 <translation id="1300209025925956156">สแกนเอกสาร</translation>
 <translation id="1309250603447638106">กำลังดาวน์โหลดอัปเดตของฟีเจอร์การสแกนเอกสาร</translation>
 <translation id="137991641490787891"><ph name="ASPECT_RATIO_WIDTH" /> กดค้นหา + ลูกศรซ้ายเพื่อเข้าถึง</translation>
+<translation id="1417314334557041815">แก้ไขหน้า <ph name="INDEX" /></translation>
 <translation id="1430915738399379752">พิมพ์</translation>
 <translation id="1467231725790366244">ถอดปลั๊ก <ph name="CAMERA" /> แล้ว</translation>
 <translation id="1473110567575736769">ตัวจับเวลา 3 วินาที</translation>
@@ -20,6 +21,7 @@
 <translation id="1627744224761163218">4 x 4</translation>
 <translation id="1664224225747386870">ไม่ได้บันทึกข้อมูลใด</translation>
 <translation id="1838104802459806957">เอียงขึ้น</translation>
+<translation id="1843105061469674856">สแกนหน้าเพิ่มเติม</translation>
 <translation id="1851169887664797861">มีตัวควบคุมกล้องให้ใช้งานเพิ่มเติม</translation>
 <translation id="1851616744363735765">หยุดชั่วคราว</translation>
 <translation id="1862930711583847113">ส่งออก <ph name="FILE" /> ไม่ได้</translation>
@@ -77,6 +79,7 @@
 <translation id="414641094616694804">เปลี่ยนความละเอียดของกล้องนี้ไม่ได้</translation>
 <translation id="4269820728363426813">คัดลอกที่อยู่ลิงก์</translation>
 <translation id="4281620174117014503">ความละเอียดปานกลาง</translation>
+<translation id="428234092390943511">ภาพขนาดย่อของหน้า</translation>
 <translation id="4329152592498422850">เปลี่ยนเป็นถ่ายภาพแบบสี่เหลี่ยมจัตุรัส</translation>
 <translation id="4340659173795395806">คุณสร้าง PDF แบบหลายหน้าได้แล้ว</translation>
 <translation id="4383571725254449280">พิมพ์บันทึกประสิทธิภาพ</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_tr.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_tr.xtb
index b2d6e13b..f7faed60 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_tr.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_tr.xtb
@@ -9,6 +9,7 @@
 <translation id="1300209025925956156">Dokümanınızı tarayın</translation>
 <translation id="1309250603447638106">Doküman taramayla ilgili güncellemeler indiriliyor</translation>
 <translation id="137991641490787891"><ph name="ASPECT_RATIO_WIDTH" />. Erişmek için Arama + Sol ok tuşlarına basın.</translation>
+<translation id="1417314334557041815">Sayfayı düzenle <ph name="INDEX" /></translation>
 <translation id="1430915738399379752">Yazdır</translation>
 <translation id="1467231725790366244"><ph name="CAMERA" />, cihaza takılı değil.</translation>
 <translation id="1473110567575736769">3 saniye zamanlayıcı</translation>
@@ -20,6 +21,7 @@
 <translation id="1627744224761163218">4 x 4</translation>
 <translation id="1664224225747386870">Hiçbir şey kaydedilmedi</translation>
 <translation id="1838104802459806957">Kaldır</translation>
+<translation id="1843105061469674856">Başka sayfa tara</translation>
 <translation id="1851169887664797861">Ek kamera kontrolleri bulunuyor</translation>
 <translation id="1851616744363735765">DURAKLATILDI</translation>
 <translation id="1862930711583847113"><ph name="FILE" /> dışa aktarılamıyor</translation>
@@ -77,6 +79,7 @@
 <translation id="414641094616694804">Bu kamera, çözünürlüğü değiştiremez</translation>
 <translation id="4269820728363426813">Bağlantı adresini kopyala</translation>
 <translation id="4281620174117014503">Orta düzey çözünürlük</translation>
+<translation id="428234092390943511">Sayfa küçük resmi</translation>
 <translation id="4329152592498422850">Kare fotoğraf çekme moduna geç</translation>
 <translation id="4340659173795395806">Artık çok sayfalı PDF oluşturabilirsiniz</translation>
 <translation id="4383571725254449280">Performans günlüklerini yazdır</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_uz.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_uz.xtb
index 73dd680..f1b2e84 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_uz.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_uz.xtb
@@ -1,6 +1,7 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="uz">
+<translation id="1057925581724305206">Full HD (1080p)</translation>
 <translation id="1113173431709655881">Kamera rejimi</translation>
 <translation id="1153190633558910465">Kataksiz</translation>
 <translation id="1175958423215084756">Havola aniqlandi. <ph name="HOSTNAME" /></translation>
@@ -19,6 +20,7 @@
 <translation id="1588438908519853928">Normal</translation>
 <translation id="1620510694547887537">Kamera</translation>
 <translation id="1627744224761163218">4 x 4</translation>
+<translation id="1644345013557678440">HD (720p)</translation>
 <translation id="1664224225747386870">Hech narsa yozib olinmadi</translation>
 <translation id="1838104802459806957">Tepaga qiyalang</translation>
 <translation id="1843105061469674856">Qoʻshimcha sahifani skanerlash</translation>
@@ -93,6 +95,7 @@
 <translation id="4705093842003735294">Asl hajmida</translation>
 <translation id="4890010094662541459">3 x 3</translation>
 <translation id="491895758387112773">Multistrim video yozib olinishi</translation>
+<translation id="4984613436295737187">Quad HD (1440p)</translation>
 <translation id="5034763830503483128">Rasm tomonlar nisbati</translation>
 <translation id="5057360777601936059">Kamera hozirda ishlamayapti.
         Kamera bexato ulanganini tekshiring.</translation>
@@ -101,6 +104,7 @@
 <translation id="5266635337630551423">Hujjatning yuqori chap burchagi</translation>
 <translation id="5317780077021120954">Saqlash</translation>
 <translation id="5320594929574852403">Chapga surish</translation>
+<translation id="5374917190292010970">4K (2160p)</translation>
 <translation id="5444515100983837161">Hujjat chetlarini hoshiyaga moslab joylang. Hujjat uning rangi foni bilan farqli boʻlganda yaxshi skanerlanadi.</translation>
 <translation id="5662366948659129155"><ph name="COUNT" /> ta sahifa skanerlandi</translation>
 <translation id="5671277269877808209">Kvadrat</translation>
diff --git a/ash/webui/camera_app_ui/resources/strings/camera_strings_zh-TW.xtb b/ash/webui/camera_app_ui/resources/strings/camera_strings_zh-TW.xtb
index deea40d..4e0727c 100644
--- a/ash/webui/camera_app_ui/resources/strings/camera_strings_zh-TW.xtb
+++ b/ash/webui/camera_app_ui/resources/strings/camera_strings_zh-TW.xtb
@@ -9,6 +9,7 @@
 <translation id="1300209025925956156">掃描你的文件</translation>
 <translation id="1309250603447638106">正在下載文件掃描功能更新</translation>
 <translation id="137991641490787891"><ph name="ASPECT_RATIO_WIDTH" />。按下搜尋鍵 + 向左鍵即可使用。</translation>
+<translation id="1417314334557041815">編輯第 <ph name="INDEX" /> 頁</translation>
 <translation id="1430915738399379752">列印</translation>
 <translation id="1467231725790366244">已解除連接「<ph name="CAMERA" />」。</translation>
 <translation id="1473110567575736769">3 秒計時器</translation>
@@ -20,6 +21,7 @@
 <translation id="1627744224761163218">4 x 4</translation>
 <translation id="1664224225747386870">未錄製任何內容</translation>
 <translation id="1838104802459806957">向上傾斜</translation>
+<translation id="1843105061469674856">掃描其他頁面</translation>
 <translation id="1851169887664797861">已推出新的相機控制項</translation>
 <translation id="1851616744363735765">已暫停</translation>
 <translation id="1862930711583847113">無法匯出「<ph name="FILE" />」</translation>
@@ -77,6 +79,7 @@
 <translation id="414641094616694804">這部攝影機無法變更解析度</translation>
 <translation id="4269820728363426813">複製連結網址</translation>
 <translation id="4281620174117014503">中等解析度</translation>
+<translation id="428234092390943511">頁面縮圖</translation>
 <translation id="4329152592498422850">切換為正方形相片拍攝模式</translation>
 <translation id="4340659173795395806">你現在可以建立多頁 PDF 檔案</translation>
 <translation id="4383571725254449280">列印效能記錄</translation>
diff --git a/ash/webui/common/resources/BUILD.gn b/ash/webui/common/resources/BUILD.gn
index 39683c8..2b285056 100644
--- a/ash/webui/common/resources/BUILD.gn
+++ b/ash/webui/common/resources/BUILD.gn
@@ -23,7 +23,6 @@
   "navigation_view_panel.js",
   "page_toolbar.js",
 
-  "bluetooth/bluetooth_dialog.js",
   "bluetooth/bluetooth_icon.js",
   "bluetooth/bluetooth_pairing_confirm_code_page.js",
   "bluetooth/bluetooth_pairing_enter_code_page.js",
@@ -314,7 +313,6 @@
   "bluetooth/bluetooth_base_page.d.ts",
   "bluetooth/bluetooth_battery_icon_percentage.d.ts",
   "bluetooth/bluetooth_device_battery_info.d.ts",
-  "bluetooth/bluetooth_dialog.d.ts",
   "bluetooth/bluetooth_icon.d.ts",
   "bluetooth/bluetooth_pairing_confirm_code_page.d.ts",
   "bluetooth/bluetooth_pairing_device_item.d.ts",
diff --git a/ash/webui/common/resources/bluetooth/BUILD.gn b/ash/webui/common/resources/bluetooth/BUILD.gn
index 932b5db..f99e704 100644
--- a/ash/webui/common/resources/bluetooth/BUILD.gn
+++ b/ash/webui/common/resources/bluetooth/BUILD.gn
@@ -14,7 +14,6 @@
     ":bluetooth_base_page",
     ":bluetooth_battery_icon_percentage",
     ":bluetooth_device_battery_info",
-    ":bluetooth_dialog",
     ":bluetooth_icon",
     ":bluetooth_metrics_utils",
     ":bluetooth_pairing_confirm_code_page",
@@ -51,6 +50,7 @@
 js_library("bluetooth_icon") {
   deps = [
     "//chromeos/ash/services/bluetooth_config/public/mojom:mojom_webui_js",
+    "//third_party/polymer/v3_0/components-chromium/iron-icon:iron-icon",
     "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled",
   ]
 }
@@ -64,25 +64,6 @@
   ]
 }
 
-js_library("bluetooth_dialog") {
-  deps = [
-    "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled",
-    "//ui/webui/resources/cr_elements:i18n_behavior",
-    "//ui/webui/resources/js:assert",
-  ]
-  externs_list =
-      chrome_extension_public_externs + [
-        "$externs_path/bluetooth.js",
-        "$externs_path/bluetooth_private.js",
-        "//ui/webui/resources/cr_elements/cr_input/cr_input_externs.js",
-        "//ui/webui/resources/cr_elements/cr_dialog/cr_dialog_externs.js",
-      ]
-  extra_sources = [
-    "$interfaces_path/bluetooth_interface.js",
-    "$interfaces_path/bluetooth_private_interface.js",
-  ]
-}
-
 js_library("bluetooth_pairing_device_selection_page") {
   deps = [
     ":bluetooth_base_page",
diff --git a/ash/webui/common/resources/bluetooth/bluetooth_dialog.d.ts b/ash/webui/common/resources/bluetooth/bluetooth_dialog.d.ts
deleted file mode 100644
index 8d89acdf0..0000000
--- a/ash/webui/common/resources/bluetooth/bluetooth_dialog.d.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright 2022 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import {LegacyElementMixin} from '//resources/polymer/v3_0/polymer/lib/legacy/legacy-element-mixin.js';
-
-interface BluetoothDialogElement extends LegacyElementMixin, HTMLElement {}
-
-export {BluetoothDialogElement};
-
-declare global {
-  interface HTMLElementTagNameMap {
-    'bluetooth-dialog': BluetoothDialogElement;
-  }
-}
diff --git a/ash/webui/common/resources/bluetooth/bluetooth_dialog.html b/ash/webui/common/resources/bluetooth/bluetooth_dialog.html
deleted file mode 100644
index c39953b4..0000000
--- a/ash/webui/common/resources/bluetooth/bluetooth_dialog.html
+++ /dev/null
@@ -1,135 +0,0 @@
-    <style include="cr-hidden-style iron-flex">
-      #pairing {
-        margin-bottom: 10px;
-      }
-
-      #pairing cr-input {
-        text-align: center;
-      }
-
-      #pinDiv {
-        margin-top: 10px;
-      }
-
-      .dialog-message {
-        margin-bottom: 10px;
-      }
-
-      div.contents {
-        height: 250px;
-      }
-
-      span {
-        border-radius: 4px;
-        font-size: 20px;
-        height: 40px;
-        line-height: 40px;
-        margin: 0 5px;
-        padding: 0 15px;
-        text-align: center;
-      }
-
-      /* .display indicates a displayed pin code or passkey. */
-      span.display {
-        background: var(--cros-bg-color-dropped-elevation-1);
-        color: var(--cros-text-color-secondary);
-      }
-
-      span.display.next {
-        background: var(--cros-highlight-color);
-        color: var(--cros-button-label-color-secondary);
-      }
-
-      span.display.untyped {
-        background: var(--cros-bg-color-dropped-elevation-2);
-        color: var(--cros-text-color-primary);
-      }
-
-      /* .confirm indicates a confirmation passkey. */
-      span.confirm {
-        background: var(--cros-bg-color-dropped-elevation-1);
-        color: var(--cros-text-color-primary);
-      }
-
-      /* Override default style since it assumes a single action-button */
-      cr-button.cancel-button {
-        margin: 0;
-      }
-
-      cr-button.action-button {
-        margin-inline-start: 8px;
-      }
-    </style>
-    <!-- TODO(stevenjb/dschuyler): Find a solution to support i18n{} here -->
-    <cr-dialog id="dialog" no-cancel="[[noCancel]]"
-        close-text="[[i18n('close')]]" on-cancel="onDialogCanceled_"
-        on-closed="onDialogCanceled_" exportparts="dialog">
-      <div slot="title">[[dialogTitle]]</div>
-      <div slot="body">
-        <div class="contents layout vertical center center-justified"
-            role="alert">
-          <template is="dom-if" if="[[!errorMessage_]]">
-            <div id="pairing" class="layout vertical center center-justified">
-              <div class="dialog-message">
-                [[getMessage_(pairingDevice, pairingEvent_)]]
-              </div>
-              <div hidden$="[[!showEnterPincode_(pairingEvent_)]]">
-                <cr-input id="pincode" minlength="1" maxlength="16"
-                    type="text" auto-validate value="{{pinOrPass_}}">
-                </cr-input>
-              </div>
-              <div hidden$="[[!showEnterPasskey_(pairingEvent_)]]">
-                <cr-input id="passkey" minlength="6" maxlength="6"
-                    type="text" auto-validate value="{{pinOrPass_}}">
-                </cr-input>
-              </div>
-              <div id="pinDiv" class="layout horizontal center center-justified"
-                  hidden="[[!showDisplayPassOrPin_(pairingEvent_)]]">
-                <template is="dom-repeat" items="[[digits_]]">
-                  <span class$="[[getPinClass_(index, pairingEvent_)]]">
-                    [[getPinDigit_(index, pairingEvent_)]]
-                  </span>
-                </template>
-                <span class$="[[getPinClass_(-1, pairingEvent_)]]"
-                    hidden="[[showAcceptReject_(pairingEvent_)]]">
-                  [[i18n('bluetoothEnterKey')]]
-                </span>
-              </div>
-            </div>
-          </template>
-          <template is="dom-if" if="[[errorMessage_]]">
-            <div class="layout vertical center center-justified">
-              <div class="dialog-message">[[errorMessage_]]</div>
-            </div>
-          </template>
-        </div>
-      </div>
-      <div slot="button-container">
-        <template is="dom-if" if="[[!errorMessage_]]">
-          <cr-button hidden$="[[showDismiss_(pairingDevice, pairingEvent_)]]"
-              class="cancel-button" on-click="onCancelTap_">
-           [[i18n('cancel')]]
-          </cr-button>
-          <cr-button hidden$="[[!showAcceptReject_(pairingEvent_)]]"
-              id="accept-button" class="action-button" on-click="onAcceptTap_">
-            [[i18n('bluetoothAccept')]]
-          </cr-button>
-          <cr-button hidden$="[[!showAcceptReject_(pairingEvent_)]]"
-              class="action-button" on-click="onRejectTap_">
-            [[i18n('bluetoothReject')]]
-          </cr-button>
-          <cr-button hidden$="[[!showConnect_(pairingEvent_)]]"
-              disabled="[[!enableConnect_(pairingEvent_, pinOrPass_)]]"
-              class="action-button" on-click="onConnectTap_">
-            [[i18n('bluetoothPair')]]
-          </cr-button>
-          <cr-button hidden$="[[!showDismiss_(pairingDevice, pairingEvent_)]]"
-              class="action-button" on-click="close">
-            [[i18n('ok')]]
-          </cr-button>
-        </template>
-        <template is="dom-if" if="[[errorMessage_]]">
-          <cr-button on-click="close">[[i18n('ok')]]</cr-button>
-        </template>
-      </div>
-    </cr-dialog>
diff --git a/ash/webui/common/resources/bluetooth/bluetooth_dialog.js b/ash/webui/common/resources/bluetooth/bluetooth_dialog.js
deleted file mode 100644
index de3752f..0000000
--- a/ash/webui/common/resources/bluetooth/bluetooth_dialog.js
+++ /dev/null
@@ -1,673 +0,0 @@
-// Copyright 2016 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/**
- * @fileoverview
- * Dialog used for pairing a provided |pairing-device|. Set |show-error| to
- * show the error results from a pairing event instead of the pairing UI.
- * NOTE: This module depends on I18nBehavior which depends on loadTimeData.
- */
-
-import '//resources/cr_elements/cr_button/cr_button.js';
-import '//resources/cr_elements/cr_dialog/cr_dialog.js';
-import '//resources/cr_elements/cr_input/cr_input.js';
-import '//resources/cr_elements/cr_hidden_style.css.js';
-import '//resources/js/cr.m.js';
-import '//resources/polymer/v3_0/iron-flex-layout/iron-flex-layout-classes.js';
-import '//resources/polymer/v3_0/iron-list/iron-list.js';
-
-import {html, mixinBehaviors, PolymerElement} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js';
-
-import {assert} from '//resources/js/assert.js';
-import {I18nBehavior, I18nBehaviorInterface} from '//resources/cr_elements/i18n_behavior.js';
-
-import {getTemplate} from './bluetooth_dialog.html.js';
-
-const PairingEventType = chrome.bluetoothPrivate.PairingEventType;
-
-/**
- * @constructor
- * @extends {PolymerElement}
- * @implements {I18nBehaviorInterface}
- */
-const BluetoothDialogElementBase =
-    mixinBehaviors([I18nBehavior], PolymerElement);
-
-/** @polymer */
-export class BluetoothDialogElement extends BluetoothDialogElementBase {
-  static get is() {
-    return 'bluetooth-dialog';
-  }
-
-  static get template() {
-    return getTemplate();
-  }
-
-  static get properties() {
-    return {
-      /**
-       * Interface for bluetooth calls. Set in bluetooth-page.
-       * @type {Bluetooth}
-       * @private
-       */
-      bluetooth: {
-        type: Object,
-        value: chrome.bluetooth,
-      },
-
-      /**
-       * Interface for bluetoothPrivate calls.
-       * @type {BluetoothPrivate}
-       */
-      bluetoothPrivate: {
-        type: Object,
-        value: chrome.bluetoothPrivate,
-      },
-
-      noCancel: Boolean,
-
-      dialogTitle: String,
-
-      /**
-       * Current Pairing device.
-       * @type {!chrome.bluetooth.Device|undefined}
-       */
-      pairingDevice: Object,
-
-      /**
-       * Current Pairing event.
-       * @private {?chrome.bluetoothPrivate.PairingEvent}
-       */
-      pairingEvent_: {
-        type: Object,
-        value: null,
-      },
-
-      /**
-       * May be set by the host to show a pairing error result, or may be
-       * set by the dialog if a pairing or connect error occured.
-       * @private
-       */
-      errorMessage_: String,
-
-      /**
-       * Pincode or passkey value, used to trigger connect enabled changes.
-       * @private
-       */
-      pinOrPass_: String,
-
-      /**
-       * @const {!Array<number>}
-       * @private
-       */
-      digits_: {
-        type: Array,
-        readOnly: true,
-        value: [0, 1, 2, 3, 4, 5],
-      },
-
-      /**
-       * The time in milliseconds at which a connection attempt started (that is,
-       * when this dialog is opened).
-       * @private {?number}
-       */
-      connectionAttemptStartTimestampMs_: {
-        type: Number,
-        value: null,
-      },
-
-      /**
-       * The time in milliseconds at which the user is asked to comfirm the
-       * pairing auth process.
-       * @private {?number}
-       */
-      pairingUserAuthAttemptStartTimestampMs_: {
-        type: Number,
-        value: null,
-      },
-
-      /**
-       * The time in milliseconds at which the user confirms the pairing auth
-       * process.
-       * @private {?number}
-       */
-      pairingUserAuthAttemptFinishTimestampMs_: {
-        type: Number,
-        value: null,
-      },
-    };
-  }
-
-  static get observers() {
-    return [
-      'dialogUpdated_(errorMessage_, pairingEvent_)',
-      'pairingChanged_(pairingDevice, pairingEvent_)',
-    ];
-  }
-
-  /** @override */
-  constructor() {
-    super();
-
-    /**
-     * Listener for chrome.bluetoothPrivate.onPairing events.
-     * @private {?function(!chrome.bluetoothPrivate.PairingEvent)}
-     */
-    this.bluetoothPrivateOnPairingListener_ = null;
-
-    /**
-     * Listener for chrome.bluetoothPrivate.deviceAddressChanged events.
-     * @private {?function(!chrome.bluetooth.Device, !string)}
-     */
-    this.bluetoothPrivateDeviceAddressChangedListener_ = null;
-
-    /**
-     * Listener for chrome.bluetooth.onBluetoothDeviceChanged events.
-     * @private {?function(!chrome.bluetooth.Device)}
-     */
-    this.bluetoothDeviceChangedListener_ = null;
-
-    /** @private {boolean} */
-    this.itemWasFocused_ = false;
-  }
-
-  open() {
-    this.startPairing();
-    this.pinOrPass_ = '';
-    this.getDialog_().showModal();
-    this.itemWasFocused_ = false;
-  }
-
-  close() {
-    this.endPairing();
-    const dialog = this.getDialog_();
-    if (dialog.open) {
-      dialog.close();
-    }
-  }
-
-  /**
-   * Updates the dialog after a connection attempt.
-   * @param {!chrome.bluetooth.Device} device The device connected to.
-   * @param {!boolean} wasPairing True if the device required pairing before
-   *     connecting.
-   * @param {!{message: string}} lastError chrome.runtime.lastError.
-   * @param {chrome.bluetoothPrivate.ConnectResultType} result The connect
-   *     result.
-   * @return {boolean} True if the dialog considers this a fatal error and
-   *     is displaying an error message.
-   */
-  endConnectionAttempt(device, wasPairing, lastError, result) {
-    if (wasPairing) {
-      const transport = device.transport ? device.transport :
-                                           chrome.bluetooth.Transport.INVALID;
-      const connectResult = lastError ? undefined : result;
-      const pairingDurationMs = this.getPairingDurationMs_();
-      if (pairingDurationMs) {
-        chrome.bluetoothPrivate.recordPairing(
-            transport, pairingDurationMs, connectResult);
-      }
-    }
-
-    let error;
-    if (lastError) {
-      error = lastError.message;
-    } else {
-      switch (result) {
-        case chrome.bluetoothPrivate.ConnectResultType.IN_PROGRESS:
-        case chrome.bluetoothPrivate.ConnectResultType.ALREADY_CONNECTED:
-        case chrome.bluetoothPrivate.ConnectResultType.AUTH_CANCELED:
-        case chrome.bluetoothPrivate.ConnectResultType.SUCCESS:
-          this.errorMessage_ = '';
-          return false;
-        default:
-          error = result;
-      }
-    }
-
-    // Attempting to connect and pair has failed. Remove listeners.
-    this.endPairing();
-
-    if (!wasPairing && !this.getDialog_().open &&
-        (result === chrome.bluetoothPrivate.ConnectResultType.FAILED)) {
-      // Inform the caller to not open the dialog; the user is informed by
-      // other UI that the connection failed.
-      return false;
-    }
-
-    const name = device.name || device.address;
-    let id = 'bluetooth_connect_' + error;
-    if (!this.i18nExists(id)) {
-      console.error(
-          'Unexpected error connecting to bluetooth device. Error:', error,
-          ' result:', result);
-      id = 'bluetooth_connect_failed';
-    }
-    this.errorMessage_ = this.i18n(id, name);
-
-    return true;
-  }
-
-  /** @private */
-  dialogUpdated_() {
-    if (this.showEnterPincode_()) {
-      this.shadowRoot.querySelector('#pincode').focus();
-    } else if (this.showEnterPasskey_()) {
-      this.shadowRoot.querySelector('#passkey').focus();
-    } else if (this.showAcceptReject_()) {
-      this.shadowRoot.querySelector('#accept-button').focus();
-    }
-  }
-
-  /**
-   * @return {!CrDialogElement}
-   * @private
-   */
-  getDialog_() {
-    return /** @type {!CrDialogElement} */ (
-        this.shadowRoot.querySelector('#dialog'));
-  }
-
-  /** @private */
-  onCancelTap_() {
-    this.getDialog_().cancel();
-  }
-
-  /** @private */
-  onDialogCanceled_() {
-    if (!this.errorMessage_) {
-      this.sendResponse_(chrome.bluetoothPrivate.PairingResponse.CANCEL);
-    }
-    this.endPairing();
-  }
-
-  /** Called when the dialog is opened. Starts listening for pairing events. */
-  startPairing() {
-    if (!this.bluetoothPrivateOnPairingListener_) {
-      this.bluetoothPrivateOnPairingListener_ =
-          this.onBluetoothPrivateOnPairing_.bind(this);
-      this.bluetoothPrivate.onPairing.addListener(
-          this.bluetoothPrivateOnPairingListener_);
-
-      this.connectionAttemptStartTimestampMs_ = Date.now();
-    }
-    if (!this.bluetoothPrivateDeviceAddressChangedListener_) {
-      this.bluetoothPrivateDeviceAddressChangedListener_ =
-          this.onBluetoothPrivateDeviceAddressChanged_.bind(this);
-      this.bluetoothPrivate.onDeviceAddressChanged.addListener(
-          this.bluetoothPrivateDeviceAddressChangedListener_);
-    }
-    if (!this.bluetoothDeviceChangedListener_) {
-      this.bluetoothDeviceChangedListener_ =
-          this.onBluetoothDeviceChanged_.bind(this);
-      this.bluetooth.onDeviceChanged.addListener(
-          this.bluetoothDeviceChangedListener_);
-    }
-  }
-
-  /** Called when the dialog is closed. */
-  endPairing() {
-    if (this.bluetoothPrivateOnPairingListener_) {
-      this.bluetoothPrivate.onPairing.removeListener(
-          this.bluetoothPrivateOnPairingListener_);
-      this.bluetoothPrivateOnPairingListener_ = null;
-    }
-    if (this.bluetoothPrivateDeviceAddressChangedListener_) {
-      this.bluetoothPrivate.onDeviceAddressChanged.removeListener(
-          this.bluetoothPrivateDeviceAddressChangedListener_);
-      this.bluetoothPrivateDeviceAddressChangedListener_ = null;
-    }
-    if (this.bluetoothDeviceChangedListener_) {
-      this.bluetooth.onDeviceChanged.removeListener(
-          this.bluetoothDeviceChangedListener_);
-      this.bluetoothDeviceChangedListener_ = null;
-    }
-    this.pairingEvent_ = null;
-  }
-
-  /**
-   * Process bluetoothPrivate.onPairing events.
-   * @param {!chrome.bluetoothPrivate.PairingEvent} event
-   * @private
-   */
-  onBluetoothPrivateOnPairing_(event) {
-    if (!this.pairingDevice ||
-        event.device.address !== this.pairingDevice.address) {
-      return;
-    }
-    if (event.pairing === PairingEventType.KEYS_ENTERED &&
-        event.passkey === undefined && this.pairingEvent_) {
-      // 'keysEntered' event might not include the updated passkey so preserve
-      // the current one.
-      event.passkey = this.pairingEvent_.passkey;
-    }
-    this.pairingEvent_ = event;
-  }
-
-  /**
-   * Process bluetoothPrivate.onDeviceAddressChanged events.
-   * @param {!chrome.bluetooth.Device} device
-   * @param {!string} oldAddress
-   * @private
-   */
-  onBluetoothPrivateDeviceAddressChanged_(device, oldAddress) {
-    if (!this.pairingDevice || oldAddress !== this.pairingDevice.address) {
-      return;
-    }
-    this.pairingDevice = device;
-  }
-
-  /**
-   * Process bluetooth.onDeviceChanged events. This ensures that the dialog
-   * updates when the connection state changes.
-   * @param {!chrome.bluetooth.Device} device
-   * @private
-   */
-  onBluetoothDeviceChanged_(device) {
-    if (!this.pairingDevice || device.address !== this.pairingDevice.address) {
-      return;
-    }
-    this.pairingDevice = device;
-  }
-
-  /** @private */
-  pairingChanged_() {
-    if (this.pairingDevice === undefined) {
-      return;
-    }
-
-    if (!this.pairingUserAuthAttemptStartTimestampMs_ && !!this.pairingEvent_ &&
-        (this.pairingEvent_.pairing === PairingEventType.REQUEST_PINCODE ||
-         this.pairingEvent_.pairing === PairingEventType.REQUEST_PASSKEY ||
-         this.pairingEvent_.pairing === PairingEventType.DISPLAY_PINCODE ||
-         this.pairingEvent_.pairing === PairingEventType.DISPLAY_PASSKEY ||
-         this.pairingEvent_.pairing === PairingEventType.CONFIRM_PASSKEY ||
-         this.pairingEvent_.pairing === PairingEventType.KEYS_ENTERED)) {
-      this.pairingUserAuthAttemptStartTimestampMs_ = Date.now();
-    }
-
-    // Auto-close the dialog when pairing completes.
-    if (this.pairingDevice.paired && !this.pairingDevice.connecting &&
-        this.pairingDevice.connected) {
-      if (this.pairingUserAuthAttemptStartTimestampMs_) {
-        this.pairingUserAuthAttemptFinishTimestampMs_ = Date.now();
-      }
-
-      this.close();
-      return;
-    }
-    this.errorMessage_ = '';
-    this.pinOrPass_ = '';
-  }
-
-  /**
-   * @return {string}
-   * @private
-   */
-  getMessage_() {
-    let message;
-    if (!this.pairingEvent_) {
-      message = 'bluetoothStartConnecting';
-    } else {
-      message = this.getEventDesc_(this.pairingEvent_.pairing);
-    }
-
-    let pairingDeviceName = '';
-    if (this.pairingDevice && this.pairingDevice.name) {
-      pairingDeviceName = this.pairingDevice.name;
-    }
-
-    return this.i18n(message, pairingDeviceName);
-  }
-
-  /**
-   * @return {boolean}
-   * @private
-   */
-  showEnterPincode_() {
-    return !!this.pairingEvent_ &&
-        this.pairingEvent_.pairing === PairingEventType.REQUEST_PINCODE;
-  }
-
-  /**
-   * @return {boolean}
-   * @private
-   */
-  showEnterPasskey_() {
-    return !!this.pairingEvent_ &&
-        this.pairingEvent_.pairing === PairingEventType.REQUEST_PASSKEY;
-  }
-
-  /**
-   * @return {boolean}
-   * @private
-   */
-  showDisplayPassOrPin_() {
-    if (!this.pairingEvent_) {
-      return false;
-    }
-    const pairing = this.pairingEvent_.pairing;
-    return (
-        pairing === PairingEventType.DISPLAY_PINCODE ||
-        pairing === PairingEventType.DISPLAY_PASSKEY ||
-        pairing === PairingEventType.CONFIRM_PASSKEY ||
-        pairing === PairingEventType.KEYS_ENTERED);
-  }
-
-  /**
-   * @return {boolean}
-   * @private
-   */
-  showAcceptReject_() {
-    return !!this.pairingEvent_ &&
-        this.pairingEvent_.pairing === PairingEventType.CONFIRM_PASSKEY;
-  }
-
-  /**
-   * @return {boolean}
-   * @private
-   */
-  showConnect_() {
-    if (!this.pairingEvent_) {
-      return false;
-    }
-    const pairing = this.pairingEvent_.pairing;
-    return pairing === PairingEventType.REQUEST_PINCODE ||
-        pairing === PairingEventType.REQUEST_PASSKEY;
-  }
-
-  /**
-   * @return {boolean}
-   * @private
-   */
-  enableConnect_() {
-    if (!this.showConnect_()) {
-      return false;
-    }
-    const inputId =
-        (this.pairingEvent_.pairing === PairingEventType.REQUEST_PINCODE) ?
-        '#pincode' :
-        '#passkey';
-    const crInput = /** @type {!CrInputElement} */ (
-        this.shadowRoot.querySelector(inputId));
-    assert(crInput);
-    /** @type {string} */ const value = crInput.value;
-    return !!value && crInput.validate();
-  }
-
-  /**
-   * @return {boolean}
-   * @private
-   */
-  showDismiss_() {
-    return (!!this.pairingDevice && this.pairingDevice.paired) ||
-        (!!this.pairingEvent_ &&
-         this.pairingEvent_.pairing === PairingEventType.COMPLETE);
-  }
-
-  /** @private */
-  onAcceptTap_() {
-    this.sendResponse_(chrome.bluetoothPrivate.PairingResponse.CONFIRM);
-  }
-
-  /** @private */
-  onConnectTap_() {
-    this.sendResponse_(chrome.bluetoothPrivate.PairingResponse.CONFIRM);
-  }
-
-  /** @private */
-  onRejectTap_() {
-    this.sendResponse_(chrome.bluetoothPrivate.PairingResponse.REJECT);
-  }
-
-  /**
-   * @param {!chrome.bluetoothPrivate.PairingResponse} response
-   * @private
-   */
-  sendResponse_(response) {
-    if (!this.pairingDevice) {
-      return;
-    }
-    const options =
-        /** @type {!chrome.bluetoothPrivate.SetPairingResponseOptions} */ (
-            {device: this.pairingDevice, response: response});
-    if (response === chrome.bluetoothPrivate.PairingResponse.CONFIRM) {
-      const pairing = this.pairingEvent_.pairing;
-      if (pairing === PairingEventType.REQUEST_PINCODE) {
-        options.pincode = this.shadowRoot.querySelector('#pincode').value;
-      } else if (pairing === PairingEventType.REQUEST_PASSKEY) {
-        options.passkey =
-            parseInt(this.shadowRoot.querySelector('#passkey').value, 10);
-      }
-    }
-    this.bluetoothPrivate.setPairingResponse(options, () => {
-      if (chrome.runtime.lastError) {
-        // TODO(stevenjb): Show error.
-        console.error(
-            'Error setting pairing response: ' + options.device.name +
-            ': Response: ' + options.response +
-            ': Error: ' + chrome.runtime.lastError.message);
-      }
-      this.close();
-    });
-
-    this.dispatchEvent(new CustomEvent(
-        'response', {bubbles: true, composed: true, detail: options}));
-  }
-
-  /**
-   * @param {!PairingEventType} eventType
-   * @return {string}
-   * @private
-   */
-  getEventDesc_(eventType) {
-    assert(eventType);
-    if (eventType === PairingEventType.COMPLETE ||
-        eventType === PairingEventType.REQUEST_AUTHORIZATION) {
-      return 'bluetoothStartConnecting';
-    }
-    return 'bluetooth_' + /** @type {string} */ (eventType);
-  }
-
-  /**
-   * @param {number} index
-   * @return {string}
-   * @private
-   */
-  getPinDigit_(index) {
-    if (!this.pairingEvent_) {
-      return '';
-    }
-    let digit = '0';
-    const pairing = this.pairingEvent_.pairing;
-    if (pairing === PairingEventType.DISPLAY_PINCODE &&
-        this.pairingEvent_.pincode &&
-        index < this.pairingEvent_.pincode.length) {
-      digit = this.pairingEvent_.pincode[index];
-    } else if (
-        this.pairingEvent_.passkey &&
-        (pairing === PairingEventType.DISPLAY_PASSKEY ||
-         pairing === PairingEventType.KEYS_ENTERED ||
-         pairing === PairingEventType.CONFIRM_PASSKEY)) {
-      const passkeyString =
-          String(this.pairingEvent_.passkey).padStart(this.digits_.length, '0');
-      digit = passkeyString[index];
-    }
-    return digit;
-  }
-
-  /**
-   * @param {number} index
-   * @return {string}
-   * @private
-   */
-  getPinClass_(index) {
-    if (!this.pairingEvent_) {
-      return '';
-    }
-    if (this.pairingEvent_.pairing === PairingEventType.CONFIRM_PASSKEY) {
-      return 'confirm';
-    }
-    let cssClass = 'display';
-    if (this.pairingEvent_.pairing === PairingEventType.DISPLAY_PASSKEY) {
-      if (index === 0) {
-        cssClass += ' next';
-      } else {
-        cssClass += ' untyped';
-      }
-    } else if (
-        this.pairingEvent_.pairing === PairingEventType.KEYS_ENTERED &&
-        this.pairingEvent_.enteredKey) {
-      const enteredKey = this.pairingEvent_.enteredKey;  // 1-7
-      const lastKey = this.digits_.length;               // 6
-      if ((index === -1 && enteredKey > lastKey) ||
-          (index + 1 === enteredKey)) {
-        cssClass += ' next';
-      } else if (index > enteredKey) {
-        cssClass += ' untyped';
-      }
-    }
-    return cssClass;
-  }
-
-  /**
-   * Calculate how long it took to complete pairing, excluding how long the user
-   * took to confirm the pairing auth process.
-   * @return {?number}
-   * @private
-   */
-  getPairingDurationMs_() {
-    let unadjustedPairingDurationMs = 0;
-    if (this.connectionAttemptStartTimestampMs_) {
-      unadjustedPairingDurationMs =
-          Date.now() - this.connectionAttemptStartTimestampMs_;
-    } else {
-      console.error('No connection start timestamp present.');
-    }
-
-    let userAuthActionDurationMs = 0;
-    if (this.pairingUserAuthAttemptStartTimestampMs_) {
-      if (this.pairingUserAuthAttemptFinishTimestampMs_) {
-        userAuthActionDurationMs =
-            this.pairingUserAuthAttemptFinishTimestampMs_ -
-            this.pairingUserAuthAttemptStartTimestampMs_;
-      } else {
-        console.warn(
-            'No auth attempt finish timestamp present to' +
-            ' complement start timestamp.');
-        return null;
-      }
-    }
-
-    this.connectionAttemptStartTimestampMs_ = null;
-    this.pairingUserAuthAttemptStartTimestampMs_ = null;
-    this.pairingUserAuthAttemptFinishTimestampMs_ = null;
-
-    // If the pairing process required authentication, do not include the time
-    // it took the user to complete or confirm the authentication process.
-    return unadjustedPairingDurationMs - userAuthActionDurationMs;
-  }
-}
-
-customElements.define(BluetoothDialogElement.is, BluetoothDialogElement);
diff --git a/ash/webui/common/resources/bluetooth/bluetooth_icon.js b/ash/webui/common/resources/bluetooth/bluetooth_icon.js
index f03838ab..8aa8ac5 100644
--- a/ash/webui/common/resources/bluetooth/bluetooth_icon.js
+++ b/ash/webui/common/resources/bluetooth/bluetooth_icon.js
@@ -8,11 +8,12 @@
  */
 
 import './bluetooth_icons.html.js';
+import 'chrome://resources/polymer/v3_0/iron-icon/iron-icon.js';
 
 import {PolymerElement} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js';
-import {getTemplate} from './bluetooth_icon.html.js';
 import {BluetoothDeviceProperties, DeviceType} from 'chrome://resources/mojo/chromeos/ash/services/bluetooth_config/public/mojom/cros_bluetooth_config.mojom-webui.js';
 
+import {getTemplate} from './bluetooth_icon.html.js';
 import {hasDefaultImage} from './bluetooth_utils.js';
 
 /** @polymer */
diff --git a/ash/webui/common/resources/bluetooth/bluetooth_metrics_utils.js b/ash/webui/common/resources/bluetooth/bluetooth_metrics_utils.js
index a93489c..654627d5 100644
--- a/ash/webui/common/resources/bluetooth/bluetooth_metrics_utils.js
+++ b/ash/webui/common/resources/bluetooth/bluetooth_metrics_utils.js
@@ -13,7 +13,7 @@
   SETTINGS_PAIRING_DIALOG: 2,
   BLUETOOTH_QUICK_SETTINGS: 3,
   PAIRING_DIALOG: 4,
-  PAIRED_NOTIFICATION: 5,
+  // [Deprecated] PAIRED_NOTIFICATION: 5,
   CONNECTION_TOAST: 6,
   DISCONNECTED_TOAST: 7,
   OOBE_HID_DETECTION: 8,
@@ -31,49 +31,6 @@
 }
 
 /**
- * Records metrics indicating the |durationInMs| taken for a user initiated
- * reconnection attempt to complete.
- * @param {number} durationInMs
- * @param {!chrome.bluetooth.Transport|undefined} transport The transport type
- *     of the device.
- * @param {!chrome.bluetoothPrivate.ConnectResultType|undefined}
- *     connectionResult
- */
-export function recordUserInitiatedReconnectionAttemptDuration(
-    durationInMs, transport, connectionResult) {
-  if (!transport || !connectionResult) {
-    return;
-  }
-  let transportHistogramName;
-  switch (transport) {
-    case chrome.bluetooth.Transport.CLASSIC:
-      transportHistogramName = '.Classic';
-      break;
-    case chrome.bluetooth.Transport.DUAL:
-      transportHistogramName = '.Dual';
-      break;
-    case chrome.bluetooth.Transport.LE:
-      transportHistogramName = '.BLE';
-      break;
-    default:
-      // Invalid transport type.
-      return;
-  }
-  const successHistogramName =
-      connectionResult === chrome.bluetoothPrivate.ConnectResultType.SUCCESS ?
-      'Success' :
-      'Failure';
-  chrome.metricsPrivate.recordTime(
-      'Bluetooth.ChromeOS.UserInitiatedReconnectionAttempt.Duration.' +
-          successHistogramName,
-      durationInMs);
-  chrome.metricsPrivate.recordTime(
-      'Bluetooth.ChromeOS.UserInitiatedReconnectionAttempt.Duration.' +
-          successHistogramName + transportHistogramName,
-      durationInMs);
-}
-
-/**
  * These values are persisted to logs and should not be renumbered or re-used.
  * See tools/metrics/histograms/enums.xml.
  * @enum {number}
diff --git a/ash/webui/os_feedback_ui/mojom/os_feedback_ui.mojom b/ash/webui/os_feedback_ui/mojom/os_feedback_ui.mojom
index 8b283152..b643da0 100644
--- a/ash/webui/os_feedback_ui/mojom/os_feedback_ui.mojom
+++ b/ash/webui/os_feedback_ui/mojom/os_feedback_ui.mojom
@@ -76,6 +76,8 @@
   bool is_internal_account;
   // Whether or not the feedback app is opened from Assistant.
   bool from_assistant;
+  // Whether or not the assistant debug info is allowed by user.
+  bool assistant_debug_info_allowed;
   // The URL of the page that this issue was being experienced on.
   url.mojom.Url?  page_url;
   // Extra diagnostics information provided by source CrOS application by
diff --git a/ash/webui/os_feedback_ui/resources/fake_data.js b/ash/webui/os_feedback_ui/resources/fake_data.js
index b7ba211..93d67dcd 100644
--- a/ash/webui/os_feedback_ui/resources/fake_data.js
+++ b/ash/webui/os_feedback_ui/resources/fake_data.js
@@ -82,6 +82,7 @@
   pageUrl: {url: 'chrome://tab/'},
   isInternalAccount: false,
   fromAssistant: false,
+  assistantDebugInfoAllowed: false,
   traceId: 1,
 };
 
@@ -91,6 +92,7 @@
   pageUrl: {url: ''},
   isInternalAccount: false,
   fromAssistant: false,
+  assistantDebugInfoAllowed: false,
   traceId: 0,
 };
 
@@ -99,7 +101,8 @@
   email: 'test.user@google.com',
   pageUrl: {url: 'chrome://tab/'},
   isInternalAccount: true,
-  fromAssistant: false,
+  fromAssistant: true,
+  assistantDebugInfoAllowed: false,
   traceId: 1,
 };
 
diff --git a/ash/webui/os_feedback_ui/resources/file_attachment.html b/ash/webui/os_feedback_ui/resources/file_attachment.html
index aaa6014..256f218 100644
--- a/ash/webui/os_feedback_ui/resources/file_attachment.html
+++ b/ash/webui/os_feedback_ui/resources/file_attachment.html
@@ -128,7 +128,7 @@
   }
 </style>
 <div id="addFileContainer" hidden="[[hasSelectedAFile_]]">
-  <button id="addFileLabel" class="file-input"
+  <button id="addFileLabel" class="file-input" aria-hidden="true"
       on-click="handleOpenFileInputClick_" tabindex="-1">
     <cr-icon-button id="addFileIcon" iron-icon="attachment:add-file"
         aria-label="[[i18n('addFileLabel')]]" title="[[i18n('addFileLabel')]]">
@@ -178,6 +178,6 @@
   <div id="mainPanel" class="dialog-main-panel">
     <div id="innerContentPanel" class="dialog-content-panel">
       <img src="[[selectedImageUrl_]]" class="image-preview">
-    </div> 
+    </div>
   </div>
 </dialog>
diff --git a/ash/webui/os_feedback_ui/resources/share_data_page.html b/ash/webui/os_feedback_ui/resources/share_data_page.html
index fec8b755..75e5122 100644
--- a/ash/webui/os_feedback_ui/resources/share_data_page.html
+++ b/ash/webui/os_feedback_ui/resources/share_data_page.html
@@ -1,4 +1,15 @@
 <style include="os-feedback-shared">
+  ::-webkit-scrollbar {
+    background-color: transparent;
+    border-radius: 4px;
+    width: 4px;
+  }
+
+  ::-webkit-scrollbar-thumb {
+    background-color: var(--cros-app-scrollbar-color);
+    border-radius: 4px;
+  }
+
   #privacyNote {
     color: var(--cros-color-secondary);
     font-size: 13px;
@@ -160,113 +171,169 @@
     padding-inline-end: 24px;
     padding-inline-start: 24px;
   }
+
+  #scrollContainer {
+    height: 424px;
+    left: 0;
+    margin-bottom: 20px;
+    margin-inline-end: 4px;
+    overflow: auto;
+    padding: 0 40px;
+    position: absolute;
+    right: 0;
+    top: 92px;
+  }
+
+  #shadowElevation {
+    height: 2px;
+    left: 0;
+    position: fixed;
+    right: 0;
+    top: 90px;
+  }
+
+  .scrolling-elevation {
+    background-color: var(--cros-bg-color-elevation-1);
+    box-shadow: var(--cros-elevation-2-shadow);
+  }
+
+  .scrolling-shield {
+    background: linear-gradient(to bottom,
+        rgba(var(--cros-bg-color-rgb),0), rgba(var(--cros-bg-color-rgb),1))
+  }
+
+  .separator-visible {
+    border-top: 1px solid var(--cros-separator-color);
+    bottom: 92px;
+    left: 0;
+    position: absolute;
+    right: 0;
+  }
+
+  #shadowShield {
+    bottom: 92px;
+    height: 48px;
+    left: 0;
+    position: absolute;
+    right: 0;
+  }
+
+  #content {
+    width: 520px;
+  }
 </style>
 <div id="container">
   <div id="header">
     <h1 class="page-title">[[i18n('pageTitle')]]</h1>
   </div>
+  <div id="shadowElevation"></div>
   <div id="content">
-    <!-- Attach files -->
-    <div id="attachFiles">
-      <div id="attachFilesLabelContainer">
-        <h2 id="attachFilesLabel">[[i18n('attachFilesLabel')]]</h2>
-        <iron-icon icon="os-feedback:info" id="attachFilesIcon"
-            class="focusable" tabindex="0"
-            aria-labelledby="attachFilesTooltipContent">
-        </iron-icon>
-        <paper-tooltip for="attachFilesIcon" position="top" offset="0" fit-to-visible-bounds>
-          <div id="attachFilesTooltipContent">
-            [[i18n('attachFileLabelTooltip')]]
-          </div>
-        </paper-tooltip>
-      </div>
-      <div id="attachFilesContainer">
-        <!-- Attach a screenshot -->
-        <div id="screenshotContainer" class="card-frame">
-          <cr-checkbox id="screenshotCheckbox"
-              disabled="[[!hasScreenshot_(screenshotUrl)]]">
-          </cr-checkbox>
-          <label id="screenshotCheckLabel">[[i18n('attachScreenshotLabel')]]</label>
-          <button id="imageButton" class="focusable" on-click="handleScreenshotClick_">
-            <img id="screenshotImage" src="[[screenshotUrl]]">
-           </button>
-        </div>
-        <!-- Attach a file -->
-        <div id="addFileContainer" class="card-frame">
-          <file-attachment></file-attachment>
-        </div>
-      </div>
-    </div>
-    <!-- User e-mail -->
-    <div id="userEmail" class="text-field-container"
-        hidden$="[[!hasEmail_(feedbackContext)]]">
-      <h2 id="userEmailLabel">[[i18n('userEmailLabel')]]</h2>
-      <select id="userEmailDropDown" class="md-select"
-          aria-label="[[i18n('userEmailAriaLabel')]]">
-        <option value$="[[feedbackContext.email]]"
-            aria-label="user email"
-            class="email-dropdown">
-          [[feedbackContext.email]]
-        </option>
-        <option value="" aria-label="anonymous user"
-          id="anonymousUser" class="email-dropdown">
-          [[i18n('anonymousUser')]]
-        </option>
-      </select>
-    </div>
-    <!-- User consent -->
-    <div id="userConsent" class="checkbox-field-container">
-      <cr-checkbox id="userConsentCheckbox" aria-labelledby="userConsentLabel"></cr-checkbox>
-      <label id="userConsentLabel">[[i18n('userConsentLabel')]]</label>
-    </div>
-    <!-- Diagnostic data -->
-    <div id="shareDiagnosticData">
-      <h2 id="shareDiagnosticDataLabel">[[i18n('shareDiagnosticDataLabel')]]</h2>
-      <!-- URL -->
-      <div id="pageUrl" class="checkbox-field-container" hidden="[[!feedbackContext.pageUrl.url]]">
-        <cr-checkbox id="pageUrlCheckbox" aria-labelledby="pageUrlLabel" checked></cr-checkbox>
-        <label id="pageUrlLabel">[[i18n('sharePageUrlLabel')]]&nbsp;
-          <a href="[[feedbackContext.pageUrl.url]]" class="overflow-text" id="pageUrlText" target="_blank">
-            [[feedbackContext.pageUrl.url]]
-          </a>
-          <paper-tooltip for="pageUrlText" fitToVisibleBounds>
-            <div id="tooltipContent">[[feedbackContext.pageUrl.url]]</div>
+    <div id="scrollContainer" on-scroll="onContainerScroll_">
+      <!-- Attach files -->
+      <div id="attachFiles">
+        <div id="attachFilesLabelContainer">
+          <h2 id="attachFilesLabel">[[i18n('attachFilesLabel')]]</h2>
+          <iron-icon icon="os-feedback:info" id="attachFilesIcon"
+              class="focusable" tabindex="0"
+              aria-labelledby="attachFilesTooltipContent">
+          </iron-icon>
+          <paper-tooltip for="attachFilesIcon" position="top" offset="0" fit-to-visible-bounds>
+            <div id="attachFilesTooltipContent">
+              [[i18n('attachFileLabelTooltip')]]
+            </div>
           </paper-tooltip>
-        </label>
+        </div>
+        <div id="attachFilesContainer">
+          <!-- Attach a screenshot -->
+          <div id="screenshotContainer" class="card-frame">
+            <cr-checkbox id="screenshotCheckbox"
+                disabled="[[!hasScreenshot_(screenshotUrl)]]">
+            </cr-checkbox>
+            <label id="screenshotCheckLabel">[[i18n('attachScreenshotLabel')]]</label>
+            <button id="imageButton" class="focusable" on-click="handleScreenshotClick_">
+              <img id="screenshotImage" src="[[screenshotUrl]]">
+             </button>
+          </div>
+          <!-- Attach a file -->
+          <div id="addFileContainer" class="card-frame">
+            <file-attachment></file-attachment>
+          </div>
+        </div>
       </div>
-      <!-- System Information -->
-      <div id="sysInfoContainer" class="checkbox-field-container">
-        <cr-checkbox id="sysInfoCheckbox" aria-labelledby="sysInfoCheckboxLabel" checked>
-        </cr-checkbox>
-        <label id="sysInfoCheckboxLabel" inner-h-t-m-l="[[sysInfoCheckboxLabel_]]"></label>
+      <!-- User e-mail -->
+      <div id="userEmail" class="text-field-container"
+          hidden$="[[!hasEmail_(feedbackContext)]]">
+        <h2 id="userEmailLabel">[[i18n('userEmailLabel')]]</h2>
+        <select id="userEmailDropDown" class="md-select"
+            aria-label="[[i18n('userEmailAriaLabel')]]">
+          <option value$="[[feedbackContext.email]]"
+              aria-label="user email"
+              class="email-dropdown">
+            [[feedbackContext.email]]
+          </option>
+          <option value="" aria-label="anonymous user"
+            id="anonymousUser" class="email-dropdown">
+            [[i18n('anonymousUser')]]
+          </option>
+        </select>
       </div>
-      <!-- Assistant Logs (Googler Internal Only) -->
-      <div id="assistantLogsContainer" class="checkbox-field-container"
-          hidden="[[!shouldShowAssistantCheckbox]]">
-        <cr-checkbox id="assiatantLogsCheckbox" aria-labelledby="assistantLogsLabel" checked>
-        </cr-checkbox>
-        <label id="assistantLogsLabel" inner-h-t-m-l="[[assistantLogsCheckboxLabel_]]"></label>
+      <!-- User consent -->
+      <div id="userConsent" class="checkbox-field-container">
+        <cr-checkbox id="userConsentCheckbox" aria-labelledby="userConsentLabel"></cr-checkbox>
+        <label id="userConsentLabel">[[i18n('userConsentLabel')]]</label>
       </div>
-      <!-- Bluetooth Logs (Googler Internal Only) -->
-      <div id="bluetoothCheckboxContainer" class="checkbox-field-container"
-          hidden="[[!shouldShowBluetoothCheckbox]]">
-        <cr-checkbox id="bluetoothLogsCheckbox" aria-labelledby="bluetoothInfoLabel" checked>
-        </cr-checkbox>
-        <label id="bluetoothInfoLabel" inner-h-t-m-l="[[bluetoothLogsCheckboxLabel_]]"></label>
+      <!-- Diagnostic data -->
+      <div id="shareDiagnosticData">
+        <h2 id="shareDiagnosticDataLabel">[[i18n('shareDiagnosticDataLabel')]]</h2>
+        <!-- URL -->
+        <div id="pageUrl" class="checkbox-field-container" hidden="[[!feedbackContext.pageUrl.url]]">
+          <cr-checkbox id="pageUrlCheckbox" aria-labelledby="pageUrlLabel" checked></cr-checkbox>
+          <label id="pageUrlLabel">[[i18n('sharePageUrlLabel')]]&nbsp;
+            <a href="[[feedbackContext.pageUrl.url]]" class="overflow-text" id="pageUrlText" target="_blank">
+              [[feedbackContext.pageUrl.url]]
+            </a>
+            <paper-tooltip for="pageUrlText" fitToVisibleBounds>
+              <div id="tooltipContent">[[feedbackContext.pageUrl.url]]</div>
+            </paper-tooltip>
+          </label>
+        </div>
+        <!-- System Information -->
+        <div id="sysInfoContainer" class="checkbox-field-container">
+          <cr-checkbox id="sysInfoCheckbox" aria-labelledby="sysInfoCheckboxLabel" checked>
+          </cr-checkbox>
+          <label id="sysInfoCheckboxLabel" inner-h-t-m-l="[[sysInfoCheckboxLabel_]]"></label>
+        </div>
+        <!-- Assistant Logs (Googler Internal Only) -->
+        <div id="assistantLogsContainer" class="checkbox-field-container"
+            hidden="[[!shouldShowAssistantCheckbox]]">
+          <cr-checkbox id="assiatantLogsCheckbox" aria-labelledby="assistantLogsLabel" checked>
+          </cr-checkbox>
+          <label id="assistantLogsLabel" inner-h-t-m-l="[[assistantLogsCheckboxLabel_]]"></label>
+        </div>
+        <!-- Bluetooth Logs (Googler Internal Only) -->
+        <div id="bluetoothCheckboxContainer" class="checkbox-field-container"
+            hidden="[[!shouldShowBluetoothCheckbox]]">
+          <cr-checkbox id="bluetoothLogsCheckbox" aria-labelledby="bluetoothInfoLabel" checked>
+          </cr-checkbox>
+          <label id="bluetoothInfoLabel" inner-h-t-m-l="[[bluetoothLogsCheckboxLabel_]]"></label>
+        </div>
+        <!-- Performance trace -->
+        <div id="performanceTraceContainer" class="checkbox-field-container"
+            hidden="[[!shouldShowPerformanceTraceCheckbox_(feedbackContext)]]">
+          <cr-checkbox id="performanceTraceCheckbox"
+              aria-labelledby="performanceTraceCheckboxLabel" checked>
+          </cr-checkbox>
+          <label id="performanceTraceCheckboxLabel"
+              inner-h-t-m-l="[[performanceTraceCheckboxLabel_]]">
+          </label>
+        </div>
       </div>
-      <!-- Performance trace -->
-      <div id="performanceTraceContainer" class="checkbox-field-container"
-          hidden="[[!shouldShowPerformanceTraceCheckbox_(feedbackContext)]]">
-        <cr-checkbox id="performanceTraceCheckbox"
-            aria-labelledby="performanceTraceCheckboxLabel" checked>
-        </cr-checkbox>
-        <label id="performanceTraceCheckboxLabel"
-            inner-h-t-m-l="[[performanceTraceCheckboxLabel_]]">
-        </label>
-      </div>
+      <!-- Privacy note -->
+      <div id="privacyNote" inner-h-t-m-l="[[privacyNote_]]"></div>
     </div>
-    <!-- Privacy note -->
-    <div id="privacyNote" inner-h-t-m-l="[[privacyNote_]]"></div>
+    <!-- Separator -->
+    <div id="separator"></div>
+    <div id="shadowShield" class="scrolling-container"></div>
   </div>
   <div id="navButtons">
     <cr-button id="buttonBack" class="cancel-button"
diff --git a/ash/webui/os_feedback_ui/resources/share_data_page.js b/ash/webui/os_feedback_ui/resources/share_data_page.js
index f78f1b70..a603db0 100644
--- a/ash/webui/os_feedback_ui/resources/share_data_page.js
+++ b/ash/webui/os_feedback_ui/resources/share_data_page.js
@@ -362,6 +362,13 @@
       report.feedbackContext.traceId = 0;
     }
 
+    report.feedbackContext.fromAssistant = this.feedbackContext.fromAssistant;
+
+    report.feedbackContext.assistantDebugInfoAllowed =
+        this.feedbackContext.fromAssistant &&
+        !this.getElement_('#assistantLogsContainer').hidden &&
+        this.getElement_('#assiatantLogsCheckbox').checked;
+
     return report;
   }
 
@@ -459,6 +466,22 @@
           `chrome://slow_trace/tracing.zip#${this.feedbackContext.traceId}`);
     }
   }
+
+  /** @protected */
+  onContainerScroll_() {
+    const shadowShield = this.getElement_('#shadowShield');
+    const shadowElevation = this.getElement_('#shadowElevation');
+    const separator = this.getElement_('#separator');
+    const container = this.getElement_('#scrollContainer');
+    shadowElevation.classList.toggle(
+        'scrolling-elevation', container.scrollTop > 0);
+    shadowShield.classList.toggle(
+        'scrolling-shield',
+        container.scrollTop + container.clientHeight < container.scrollHeight);
+    separator.classList.toggle(
+        'separator-visible',
+        container.scrollTop + container.clientHeight == container.scrollHeight);
+  }
 }
 
 customElements.define(ShareDataPageElement.is, ShareDataPageElement);
diff --git a/ash/wm/desks/desks_bar_view.cc b/ash/wm/desks/desks_bar_view.cc
index b37ddcd5..a4a8286 100644
--- a/ash/wm/desks/desks_bar_view.cc
+++ b/ash/wm/desks/desks_bar_view.cc
@@ -8,7 +8,6 @@
 #include <utility>
 
 #include "ash/constants/ash_features.h"
-#include "ash/controls/gradient_layer_delegate.h"
 #include "ash/glanceables/glanceables_controller.h"
 #include "ash/keyboard/ui/keyboard_ui_controller.h"
 #include "ash/public/cpp/shell_window_ids.h"
@@ -364,7 +363,10 @@
   }
 
   SetBackground(views::CreateThemedSolidBackground(kColorAshShieldAndBase80));
-  scroll_view_ = AddChildView(std::make_unique<views::ScrollView>());
+  // Use layer scrolling so that the contents will paint on top of the parent,
+  // which uses SetPaintToLayer()
+  scroll_view_ = AddChildView(std::make_unique<views::ScrollView>(
+      views::ScrollView::ScrollWithLayers::kEnabled));
   scroll_view_->SetPaintToLayer();
   scroll_view_->layer()->SetFillsBoundsOpaquely(false);
   scroll_view_->SetBackgroundColor(absl::nullopt);
@@ -442,10 +444,6 @@
   scroll_view_contents_->SetLayoutManager(
       std::make_unique<DesksBarScrollViewLayout>(this));
 
-  gradient_layer_delegate_ =
-      std::make_unique<GradientLayerDelegate>(/*animate_in=*/false);
-  scroll_view_->layer()->SetMaskLayer(gradient_layer_delegate_->layer());
-
   on_contents_scrolled_subscription_ =
       scroll_view_->AddContentsScrolledCallback(base::BindRepeating(
           &DesksBarView::OnContentsScrolled, base::Unretained(this)));
@@ -809,7 +807,7 @@
   scroll_view_->Layout();
 
   UpdateScrollButtonsVisibility();
-  UpdateGradientZone();
+  UpdateGradientMask();
 }
 
 bool DesksBarView::OnMousePressed(const ui::MouseEvent& event) {
@@ -1180,7 +1178,7 @@
                                    scroll_view_contents_->bounds().width());
 }
 
-void DesksBarView::UpdateGradientZone() {
+void DesksBarView::UpdateGradientMask() {
   const bool is_rtl = base::i18n::IsRTL();
   const bool is_left_scroll_button_visible = left_scroll_button_->GetVisible();
   const bool is_right_scroll_button_visible =
@@ -1210,35 +1208,29 @@
   // LTR or RTL layout. While the |left_scroll_button_| will be changed from
   // left to right and |right_scroll_button_| will be changed from right to left
   // if it is RTL layout.
-  const gfx::Rect bounds = scroll_view_->bounds();
-  gfx::Rect start_gradient_bounds, end_gradient_bounds;
+
+  // Horizontal linear gradient, from left to right.
+  gfx::LinearGradient gradient_mask(/*angle=*/0);
+
+  // Fraction of layer width that gradient will be applied to.
+  const float fade_position =
+      should_show_start_gradient || should_show_end_gradient
+          ? static_cast<float>(kGradientZoneLength) /
+                scroll_view_->bounds().width()
+          : 0;
+
+  // Left fade in section.
   if (should_show_start_gradient) {
-    start_gradient_bounds =
-        gfx::Rect(0, 0, kGradientZoneLength, bounds.height());
+    gradient_mask.AddStep(/*fraction=*/0, /*alpha=*/0);
+    gradient_mask.AddStep(fade_position, 255);
   }
+  // Right fade out section.
   if (should_show_end_gradient) {
-    end_gradient_bounds = gfx::Rect(bounds.width() - kGradientZoneLength, 0,
-                                    kGradientZoneLength, bounds.height());
+    gradient_mask.AddStep((1 - fade_position), 255);
+    gradient_mask.AddStep(1, 0);
   }
 
-  // Return early if the gradients do not change.
-  if (start_gradient_bounds ==
-          gradient_layer_delegate_->start_fade_zone_bounds() &&
-      end_gradient_bounds == gradient_layer_delegate_->end_fade_zone_bounds()) {
-    return;
-  }
-
-  const GradientLayerDelegate::FadeZone start_gradient_zone = {
-      start_gradient_bounds,
-      /*fade_in=*/true,
-      /*is_horizontal=*/true};
-  const GradientLayerDelegate::FadeZone end_gradient_zone = {
-      end_gradient_bounds,
-      /*fade_in=*/false,
-      /*is_horizonal=*/true};
-  gradient_layer_delegate_->set_start_fade_zone(start_gradient_zone);
-  gradient_layer_delegate_->set_end_fade_zone(end_gradient_zone);
-  gradient_layer_delegate_->layer()->SetBounds(scroll_view_->layer()->bounds());
+  scroll_view_->layer()->SetGradientMask(gradient_mask);
   scroll_view_->SchedulePaint();
 }
 
@@ -1316,7 +1308,7 @@
 
 void DesksBarView::OnContentsScrolled() {
   UpdateScrollButtonsVisibility();
-  UpdateGradientZone();
+  UpdateGradientMask();
 }
 
 void DesksBarView::OnContentsScrollEnded() {
@@ -1328,7 +1320,7 @@
     scroll_view_->ScrollToPosition(scroll_view_->horizontal_scroll_bar(),
                                    adjusted_position);
   }
-  UpdateGradientZone();
+  UpdateGradientMask();
 }
 
 void DesksBarView::NudgeDeskName(int desk_index) {
diff --git a/ash/wm/desks/desks_bar_view.h b/ash/wm/desks/desks_bar_view.h
index 72bb87fd..ca297355 100644
--- a/ash/wm/desks/desks_bar_view.h
+++ b/ash/wm/desks/desks_bar_view.h
@@ -22,7 +22,6 @@
 class DeskDragProxy;
 class DeskMiniView;
 class ExpandedDesksBarButton;
-class GradientLayerDelegate;
 class NewDeskButton;
 class OverviewGrid;
 class PersistentDesksBarVerticalDotsButton;
@@ -245,7 +244,7 @@
   // We will show a fade in gradient besides |left_scroll_button_| and a fade
   // out gradient besides |right_scroll_button_|. Show the gradient only when
   // the corresponding scroll button is visible.
-  void UpdateGradientZone();
+  void UpdateGradientMask();
 
   // Scrolls the desks bar to the previous or next page. The page size is the
   // width of the scroll view, the contents that are outside of the scroll view
@@ -319,10 +318,6 @@
   // Drag proxy for the dragged desk.
   std::unique_ptr<DeskDragProxy> drag_proxy_;
 
-  // The layer delegate used for |scroll_view_|'s mask layer, with left and
-  // right gradient asides the scroll buttons.
-  std::unique_ptr<GradientLayerDelegate> gradient_layer_delegate_;
-
   // A circular button which when clicked will open the context menu of the
   // persistent desks bar. Note that this button will only be created when
   // persistent desks bar should be shown.
diff --git a/ash/wm/desks/desks_test_api.cc b/ash/wm/desks/desks_test_api.cc
index a78f671d..ddb0c7e2 100644
--- a/ash/wm/desks/desks_test_api.cc
+++ b/ash/wm/desks/desks_test_api.cc
@@ -4,7 +4,6 @@
 
 #include "ash/wm/desks/desks_test_api.h"
 
-#include "ash/controls/gradient_layer_delegate.h"
 #include "ash/shell.h"
 #include "ash/system/toast/toast_manager_impl.h"
 #include "ash/wm/desks/desk.h"
@@ -137,16 +136,20 @@
 
 // static
 bool DesksTestApi::IsDesksBarLeftGradientVisible() {
-  return !GetDesksBarView()
-              ->gradient_layer_delegate_->start_fade_zone_bounds()
-              .IsEmpty();
+  const auto& gradient_mask =
+      GetDesksBarView()->scroll_view_->layer()->gradient_mask();
+  return !gradient_mask.IsEmpty() &&
+         cc::MathUtil::IsWithinEpsilon(gradient_mask.steps()[0].fraction, 0.f);
 }
 
 // static
 bool DesksTestApi::IsDesksBarRightGradientVisible() {
-  return !GetDesksBarView()
-              ->gradient_layer_delegate_->end_fade_zone_bounds()
-              .IsEmpty();
+  const auto& gradient_mask =
+      GetDesksBarView()->scroll_view_->layer()->gradient_mask();
+  return !gradient_mask.IsEmpty() &&
+         cc::MathUtil::IsWithinEpsilon(
+             gradient_mask.steps()[gradient_mask.step_count() - 1].fraction,
+             1.f);
 }
 
 // static
diff --git a/ash/wm/multitask_menu_nudge_controller.cc b/ash/wm/multitask_menu_nudge_controller.cc
index 24042b21..51a3089 100644
--- a/ash/wm/multitask_menu_nudge_controller.cc
+++ b/ash/wm/multitask_menu_nudge_controller.cc
@@ -10,6 +10,7 @@
 #include "ash/style/system_toast_style.h"
 #include "ash/wm/tablet_mode/tablet_mode_controller.h"
 #include "ash/wm/window_util.h"
+#include "base/check_is_test.h"
 #include "chromeos/ui/frame/caption_buttons/frame_caption_button_container_view.h"
 #include "chromeos/ui/frame/frame_header.h"
 #include "chromeos/ui/wm/features.h"
@@ -129,9 +130,15 @@
     return;
   }
 
-  auto* frame_header = chromeos::FrameHeader::Get(
-      views::Widget::GetWidgetForNativeWindow(window));
-  // Frame might not be in tests.
+  // Some tests create windows without a backing widget (`CreateTestWindow()`),
+  // and some widgets may not have a header, test or custom header.
+  auto* widget = views::Widget::GetWidgetForNativeWindow(window);
+  if (!widget) {
+    CHECK_IS_TEST();
+    return;
+  }
+
+  auto* frame_header = chromeos::FrameHeader::Get(widget);
   if (!frame_header)
     return;
 
@@ -216,7 +223,11 @@
 void MultitaskMenuNudgeController::OnWindowStackingChanged(
     aura::Window* window) {
   DCHECK_EQ(window_, window);
-  DCHECK(nudge_widget_);
+
+  // Stacking may change during the construction of the widget, at which
+  // `nudge_widget_` would still be null.
+  if (!nudge_widget_)
+    return;
 
   // Ensure the `nudge_widget_` is always above `window_`. We dont worry about
   // the pulse layer since it is not a window, and won't get stacked on top of
diff --git a/ash/wm/tablet_mode/tablet_mode_multitask_menu.cc b/ash/wm/tablet_mode/tablet_mode_multitask_menu.cc
index c7b3ba5..729af249 100644
--- a/ash/wm/tablet_mode/tablet_mode_multitask_menu.cc
+++ b/ash/wm/tablet_mode/tablet_mode_multitask_menu.cc
@@ -124,7 +124,6 @@
   AnimateShow();
 
   widget_observation_.Observe(multitask_menu_widget_.get());
-  display_observer_.emplace(this);
 }
 
 TabletModeMultitaskMenu::~TabletModeMultitaskMenu() = default;
@@ -202,14 +201,18 @@
                                                         bool active) {
   // `widget` gets deactivated when the window state changes.
   DCHECK(widget_observation_.IsObservingSource(widget));
-  if (!active) {
+  if (!active)
     event_handler_->ResetMultitaskMenu();
-  }
 }
 
 void TabletModeMultitaskMenu::OnDisplayMetricsChanged(
     const display::Display& display,
     uint32_t changed_metrics) {
+  // The destruction of `multitask_menu_widget_` causes an activation change
+  // which can send out a work area change.
+  if (!multitask_menu_widget_)
+    return;
+
   // Ignore changes to displays that aren't showing the menu.
   if (display.id() !=
       display::Screen::GetScreen()
diff --git a/ash/wm/tablet_mode/tablet_mode_multitask_menu.h b/ash/wm/tablet_mode/tablet_mode_multitask_menu.h
index df5af79e2..467e698 100644
--- a/ash/wm/tablet_mode/tablet_mode_multitask_menu.h
+++ b/ash/wm/tablet_mode/tablet_mode_multitask_menu.h
@@ -78,7 +78,7 @@
   base::ScopedObservation<views::Widget, views::WidgetObserver>
       widget_observation_{this};
 
-  absl::optional<display::ScopedDisplayObserver> display_observer_;
+  display::ScopedOptionalDisplayObserver display_observer_{this};
 
   views::UniqueWidgetPtr multitask_menu_widget_ =
       std::make_unique<views::Widget>();
@@ -88,4 +88,4 @@
 
 }  // namespace ash
 
-#endif  // ASH_WM_TABLET_MODE_TABLET_MODE_MULTITASK_MENU_H_
\ No newline at end of file
+#endif  // ASH_WM_TABLET_MODE_TABLET_MODE_MULTITASK_MENU_H_
diff --git a/base/allocator/partition_alloc_support_unittest.cc b/base/allocator/partition_alloc_support_unittest.cc
index 7844e249..72bb9b8b 100644
--- a/base/allocator/partition_alloc_support_unittest.cc
+++ b/base/allocator/partition_alloc_support_unittest.cc
@@ -29,8 +29,8 @@
 TEST(PartitionAllocSupportTest, ProposeSyntheticFinchTrials_BRPAndPCScan) {
   for (bool pcscan_enabled : {false, true}) {
     test::ScopedFeatureList pcscan_scope;
-    std::vector<Feature> empty_list = {};
-    std::vector<Feature> pcscan_list = {
+    std::vector<test::FeatureRef> empty_list = {};
+    std::vector<test::FeatureRef> pcscan_list = {
         features::kPartitionAllocPCScanBrowserOnly};
     pcscan_scope.InitWithFeatures(pcscan_enabled ? pcscan_list : empty_list,
                                   pcscan_enabled ? empty_list : pcscan_list);
diff --git a/base/android/java/src/org/chromium/base/library_loader/LibraryLoader.java b/base/android/java/src/org/chromium/base/library_loader/LibraryLoader.java
index 1935f7f..5663a7a 100644
--- a/base/android/java/src/org/chromium/base/library_loader/LibraryLoader.java
+++ b/base/android/java/src/org/chromium/base/library_loader/LibraryLoader.java
@@ -643,14 +643,23 @@
 
     /**
      * Checks whether the native library is fully loaded.
+     *
+     * @deprecated: please avoid using in new code:
+     * https://crsrc.org/c/base/android/jni_generator/README.md#testing-for-readiness-use-get
      */
+    @Deprecated
+    @VisibleForTesting
     public boolean isLoaded() {
         return mLoadState == LoadState.LOADED;
     }
 
     /**
      * Checks whether the native library is fully loaded and initialized.
+     *
+     * @deprecated: please avoid using in new code:
+     * https://chromium.googlesource.com/chromium/src/+/main/base/android/jni_generator/README.md#testing-for-readiness_use
      */
+    @Deprecated
     public boolean isInitialized() {
         return mInitialized && isLoaded();
     }
@@ -991,8 +1000,12 @@
     /**
      * Overrides the library loader (normally with a mock) for testing.
      *
+     * @deprecated: please avoid using in new code:
+     * https://chromium.googlesource.com/chromium/src/+/main/base/android/jni_generator/README.md#testing-for-readiness_use
+     *
      * @param loader the mock library loader.
      */
+    @Deprecated
     @VisibleForTesting
     public static void setLibraryLoaderForTesting(LibraryLoader loader) {
         sInstance = loader;
@@ -1023,10 +1036,15 @@
      * This sets the LibraryLoader internal state to its fully initialized state and should *only*
      * be used by clients like NativeTests which manually load their native libraries without using
      * the LibraryLoader.
+     *
+     * Don't use in new code. Tests that require this call should be migrated to
+     * NativeUnitTest.
+     * https://chromium.googlesource.com/chromium/src/+/main/base/android/jni_generator/README.md#testing-for-readiness_use
      */
-    public void setLibrariesLoadedForNativeTests() {
-        mLoadState = LoadState.LOADED;
-        mInitialized = true;
+    protected static void setLibrariesLoadedForNativeTests() {
+        LibraryLoader self = getInstance();
+        self.mLoadState = LoadState.LOADED;
+        self.mInitialized = true;
     }
 
     public static void setBrowserProcessStartupBlockedForTesting() {
diff --git a/base/android/java/src/org/chromium/base/memory/MemoryPressureMonitor.java b/base/android/java/src/org/chromium/base/memory/MemoryPressureMonitor.java
index e880b53..59fe4a87 100644
--- a/base/android/java/src/org/chromium/base/memory/MemoryPressureMonitor.java
+++ b/base/android/java/src/org/chromium/base/memory/MemoryPressureMonitor.java
@@ -14,9 +14,6 @@
 import org.chromium.base.MemoryPressureLevel;
 import org.chromium.base.MemoryPressureListener;
 import org.chromium.base.ThreadUtils;
-import org.chromium.base.TimeUtils;
-import org.chromium.base.TimeUtils.ElapsedRealtimeNanosTimer;
-import org.chromium.base.metrics.RecordHistogram;
 import org.chromium.base.supplier.Supplier;
 import org.chromium.build.annotations.MainDex;
 
@@ -241,34 +238,20 @@
      * Returns null if the pressure couldn't be determined.
      */
     private static @MemoryPressureLevel Integer getCurrentMemoryPressure() {
-        ElapsedRealtimeNanosTimer timer = new ElapsedRealtimeNanosTimer();
+        // We used to have a histogram here to measure the duration of each successful 
+        // ActivityManager.getMyMemoryState() call called 
+        // Android.MemoryPressureMonitor.GetMyMemoryState.Succeeded.Time. 50th percentile was 0.8ms.
         try {
             ActivityManager.RunningAppProcessInfo processInfo =
                     new ActivityManager.RunningAppProcessInfo();
             ActivityManager.getMyMemoryState(processInfo);
-            // ActivityManager.getMyMemoryState() time histograms, recorded by
-            // getCurrentMemoryPressure(). Using recordCustomCountHistogram because
-            // recordTimesHistogram doesn't support microsecond precision.
-            RecordHistogram.recordCustomCountHistogram(
-                    "Android.MemoryPressureMonitor.GetMyMemoryState.Succeeded.Time",
-                    elapsedDurationSample(timer), 1, 1_000_000, 50);
             return memoryPressureFromTrimLevel(processInfo.lastTrimLevel);
         } catch (Exception e) {
             // Defensively catch all exceptions, just in case.
-            RecordHistogram.recordCustomCountHistogram(
-                    "Android.MemoryPressureMonitor.GetMyMemoryState.Failed.Time",
-                    elapsedDurationSample(timer), 1, 1_000_000, 50);
             return null;
         }
     }
 
-    private static int elapsedDurationSample(ElapsedRealtimeNanosTimer timer) {
-        // We're using Count1MHistogram, so we need to calculate duration in microseconds
-        long durationUs = timer.getElapsedNanos() / TimeUtils.NANOSECONDS_PER_MICROSECOND;
-        // record() takes int, so we need to clamp.
-        return (int) Math.min(durationUs, Integer.MAX_VALUE);
-    }
-
     /**
      * Maps ComponentCallbacks2.TRIM_* value to MemoryPressureLevel.
      * Returns null if |level| couldn't be mapped and should be ignored.
diff --git a/base/feature_list.h b/base/feature_list.h
index 0d38babf..5660a78d 100644
--- a/base/feature_list.h
+++ b/base/feature_list.h
@@ -23,6 +23,7 @@
 #include "base/memory/raw_ptr.h"
 #include "base/strings/string_piece.h"
 #include "base/synchronization/lock.h"
+#include "build/build_config.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
 
 namespace base {
@@ -102,12 +103,17 @@
 #endif  // BUILDFLAG(ENABLE_BANNED_BASE_FEATURE_PREFIX)
   }
 
+#if BUILDFLAG(IS_LINUX)
+  Feature(const Feature&) = delete;
+  Feature& operator=(const Feature&) = delete;
+#else
   // This object needs to be copyable because of some signatures in
   // ScopedFeatureList, but generally isn't copied anywhere except unit tests.
   // The `cached_value` doesn't get copied and copies will trigger a lookup if
   // their state is queried.
   Feature(const Feature& other)
       : name(other.name), default_state(other.default_state), cached_value(0) {}
+#endif
 
   // The name of the feature. This should be unique to each feature and is used
   // for enabling/disabling features via command line flags and experiments.
diff --git a/base/system/sys_info_android.cc b/base/system/sys_info_android.cc
index a90a50df..a17fafe 100644
--- a/base/system/sys_info_android.cc
+++ b/base/system/sys_info_android.cc
@@ -4,12 +4,10 @@
 
 #include "base/system/sys_info.h"
 
-#include <dlfcn.h>
 #include <stddef.h>
 #include <stdint.h>
 #include <sys/system_properties.h>
 
-#include "base/android/jni_android.h"
 #include "base/android/sys_utils.h"
 #include "base/lazy_instance.h"
 #include "base/logging.h"
@@ -19,45 +17,6 @@
 #include "base/strings/stringprintf.h"
 #include "base/system/sys_info_internal.h"
 
-#if (__ANDROID_API__ >= 21 /* 5.0 - Lollipop */)
-
-namespace {
-
-typedef int(SystemPropertyGetFunction)(const char*, char*);
-
-SystemPropertyGetFunction* DynamicallyLoadRealSystemPropertyGet() {
-  // libc.so should already be open, get a handle to it.
-  void* handle = dlopen("libc.so", RTLD_NOLOAD);
-  if (!handle) {
-    LOG(FATAL) << "Cannot dlopen libc.so: " << dlerror();
-  }
-  SystemPropertyGetFunction* real_system_property_get =
-      reinterpret_cast<SystemPropertyGetFunction*>(
-          dlsym(handle, "__system_property_get"));
-  if (!real_system_property_get) {
-    LOG(FATAL) << "Cannot resolve __system_property_get(): " << dlerror();
-  }
-  return real_system_property_get;
-}
-
-static base::LazyInstance<base::internal::LazySysInfoValue<
-    SystemPropertyGetFunction*,
-    DynamicallyLoadRealSystemPropertyGet>>::Leaky
-    g_lazy_real_system_property_get = LAZY_INSTANCE_INITIALIZER;
-
-}  // namespace
-
-// Android 'L' removes __system_property_get from the NDK, however it is still
-// a hidden symbol in libc. Until we remove all calls of __system_property_get
-// from Chrome we work around this by defining a weak stub here, which uses
-// dlsym to but ensures that Chrome uses the real system
-// implementatation when loaded.  http://crbug.com/392191.
-BASE_EXPORT int __system_property_get(const char* name, char* value) {
-  return g_lazy_real_system_property_get.Get().value()(name, value);
-}
-
-#endif
-
 namespace {
 
 // Default version of Android to fall back to when actual version numbers
diff --git a/base/task/sequenced_task_runner.h b/base/task/sequenced_task_runner.h
index bdb983d..416f3bc9 100644
--- a/base/task/sequenced_task_runner.h
+++ b/base/task/sequenced_task_runner.h
@@ -277,7 +277,7 @@
   // directly instead of going through this API.
   //
   // See
-  // https://chromium.googlesource.com/chromium/src/+/master/docs/threading_and_tasks.md#Posting-to-the-Current-Virtual_Thread
+  // https://chromium.googlesource.com/chromium/src/+/main/docs/threading_and_tasks.md#Posting-to-the-Current-Virtual_Thread
   // for details
   [[nodiscard]] static const scoped_refptr<SequencedTaskRunner>&
   GetCurrentDefault();
diff --git a/base/task/single_thread_task_runner.h b/base/task/single_thread_task_runner.h
index 3a7901c..e94b01e3 100644
--- a/base/task/single_thread_task_runner.h
+++ b/base/task/single_thread_task_runner.h
@@ -47,7 +47,7 @@
   // DCHECKs if the current thread isn't servicing a SingleThreadTaskRunner.
   //
   // See
-  // https://chromium.googlesource.com/chromium/src/+/master/docs/threading_and_tasks.md#Posting-to-the-Current-Virtual_Thread
+  // https://chromium.googlesource.com/chromium/src/+/main/docs/threading_and_tasks.md#Posting-to-the-Current-Virtual_Thread
   // for details
 
   [[nodiscard]] static const scoped_refptr<SingleThreadTaskRunner>&
diff --git a/base/test/scoped_feature_list.cc b/base/test/scoped_feature_list.cc
index a30d7d4..46910cfc 100644
--- a/base/test/scoped_feature_list.cc
+++ b/base/test/scoped_feature_list.cc
@@ -418,6 +418,7 @@
   InitWithFeaturesImpl(enabled_features, {}, disabled_features);
 }
 
+#if !BUILDFLAG(IS_LINUX)
 void ScopedFeatureList::InitWithFeatures(
     const std::vector<Feature>& enabled_features,
     const std::vector<Feature>& disabled_features) {
@@ -437,6 +438,7 @@
                                                     disabled_features.end());
   InitWithFeaturesImpl(enabled_features_as_refs, {}, disabled_features_as_refs);
 }
+#endif
 
 void ScopedFeatureList::InitAndEnableFeature(const Feature& feature) {
   InitWithFeaturesImpl({feature}, {}, {});
@@ -509,6 +511,7 @@
   InitWithFeaturesImpl({}, enabled_features, disabled_features);
 }
 
+#if !BUILDFLAG(IS_LINUX)
 void ScopedFeatureList::InitWithFeaturesAndParameters(
     const std::vector<FeatureAndParams>& enabled_features,
     const std::vector<Feature>& disabled_features) {
@@ -524,6 +527,7 @@
                                                     disabled_features.end());
   InitWithFeaturesImpl({}, enabled_features, disabled_features_as_refs);
 }
+#endif
 
 void ScopedFeatureList::InitWithMergedFeatures(
     Features&& merged_features,
diff --git a/base/test/scoped_feature_list.h b/base/test/scoped_feature_list.h
index ed97124..269da18 100644
--- a/base/test/scoped_feature_list.h
+++ b/base/test/scoped_feature_list.h
@@ -17,6 +17,7 @@
 #include "base/metrics/field_trial.h"
 #include "base/metrics/field_trial_params.h"
 #include "base/types/pass_key.h"
+#include "build/build_config.h"
 #include "third_party/abseil-cpp/absl/base/attributes.h"
 
 namespace base {
@@ -144,11 +145,13 @@
   // interactions.
   void InitWithFeatures(const std::vector<FeatureRef>& enabled_features,
                         const std::vector<FeatureRef>& disabled_features);
+#if !BUILDFLAG(IS_LINUX)
   // TODO(https://crbug.com/1370572): Remove these temporary forwarding helpers.
   void InitWithFeatures(const std::vector<Feature>& enabled_features,
                         const std::vector<Feature>& disabled_features);
   void InitWithFeatures(std::initializer_list<Feature> enabled_features,
                         std::initializer_list<Feature> disabled_features);
+#endif
 
   // Initializes and registers a FeatureList instance based on the current
   // FeatureList and overridden with single enabled feature.
@@ -171,6 +174,7 @@
   void InitWithFeaturesAndParameters(
       const std::vector<FeatureAndParams>& enabled_features,
       const std::vector<FeatureRef>& disabled_features);
+#if !BUILDFLAG(IS_LINUX)
   // TODO(https://crbug.com/1370572): Remove these temporary forwarding helpers.
   void InitWithFeaturesAndParameters(
       const std::vector<FeatureAndParams>& enabled_features,
@@ -178,6 +182,7 @@
   void InitWithFeaturesAndParameters(
       const std::vector<FeatureAndParams>& enabled_features,
       std::initializer_list<Feature> disabled_features);
+#endif
 
   // Initializes and registers a FeatureList instance based on the current
   // FeatureList and overridden with single disabled feature.
diff --git a/base/test/test_timeouts.cc b/base/test/test_timeouts.cc
index 6471f42..e4712f3 100644
--- a/base/test/test_timeouts.cc
+++ b/base/test/test_timeouts.cc
@@ -67,10 +67,10 @@
   // On coverage build, tests run 3x slower.
   constexpr int kTimeoutMultiplier = 3;
 #elif !defined(NDEBUG) && BUILDFLAG(IS_CHROMEOS_ASH)
-  // TODO(crbug.com/1295825): reduce the multiplier back to 2x.
+  // TODO(crbug.com/1058022): reduce the multiplier back to 2x.
   // A number of tests on ChromeOS run very close to the base limit, so ChromeOS
-  // gets 4x.
-  constexpr int kTimeoutMultiplier = 4;
+  // gets 3x.
+  constexpr int kTimeoutMultiplier = 3;
 #elif !defined(NDEBUG) && BUILDFLAG(IS_MAC)
   // A lot of browser_tests on Mac debug time out.
   constexpr int kTimeoutMultiplier = 2;
diff --git a/base/values.cc b/base/values.cc
index e5432bf..fc32dcc 100644
--- a/base/values.cc
+++ b/base/values.cc
@@ -1272,10 +1272,6 @@
   return GetDict().RemoveByDottedPath(path);
 }
 
-absl::optional<Value> Value::ExtractPath(StringPiece path) {
-  return GetDict().ExtractByDottedPath(path);
-}
-
 // DEPRECATED METHODS
 Value* Value::FindPath(std::initializer_list<StringPiece> path) {
   return const_cast<Value*>(std::as_const(*this).FindPath(path));
diff --git a/base/values.h b/base/values.h
index e9950da..65e7920 100644
--- a/base/values.h
+++ b/base/values.h
@@ -957,19 +957,6 @@
   // DEPRECATED: Use `Value::Dict::RemoveByDottedPath()`.
   bool RemovePath(StringPiece path);
 
-  // Tries to extract a Value at the given path.
-  //
-  // If the current value is not a dictionary or any path component does not
-  // exist, this operation fails, leaves underlying Values untouched and returns
-  // nullopt. In case intermediate dictionaries become empty as a result of this
-  // path removal, they will be removed as well. Returns the extracted value on
-  // success.
-  // Note: If there is only one component in the path, use `ExtractKey()`
-  // instead.
-  //
-  // DEPRECATED: Use `Value::Dict::ExtractByDottedPath()`.
-  absl::optional<Value> ExtractPath(StringPiece path);
-
   using dict_iterator_proxy = detail::dict_iterator_proxy;
   using const_dict_iterator_proxy = detail::const_dict_iterator_proxy;
 
diff --git a/base/values_unittest.cc b/base/values_unittest.cc
index bde2b69..1cdc8ab 100644
--- a/base/values_unittest.cc
+++ b/base/values_unittest.cc
@@ -1450,7 +1450,7 @@
   EXPECT_NE(nullptr, root.FindByDottedPath("one.two.four"));
 }
 
-TEST(ValuesTest, ExtractPath) {
+TEST(ValuesTest, ExtractByDottedPath) {
   Value::Dict root;
   root.SetByDottedPath("one.two.three", Value(123));
 
diff --git a/base/win/wmi.cc b/base/win/wmi.cc
index b2c3ea9..fcecd62 100644
--- a/base/win/wmi.cc
+++ b/base/win/wmi.cc
@@ -33,8 +33,8 @@
 // Instantiates `wmi_services` with a connection to `server_name` in WMI. Will
 // set a security blanket if `set_blanket` is true.
 absl::optional<WmiError> CreateLocalWmiConnection(
-    const std::wstring& server_name,
     bool set_blanket,
+    const std::wstring& server_name,
     ComPtr<IWbemServices>* wmi_services) {
   DCHECK(wmi_services);
   ComPtr<IWbemLocator> wmi_locator;
@@ -94,7 +94,7 @@
   DCHECK(enumerator);
 
   ComPtr<IWbemServices> wmi_services;
-  auto error = CreateLocalWmiConnection(server_name, /*set_blanket=*/true,
+  auto error = CreateLocalWmiConnection(/*set_blanket=*/true, server_name,
                                         &wmi_services);
 
   if (error.has_value())
@@ -113,10 +113,23 @@
   SCOPED_MAY_LOAD_LIBRARY_AT_BACKGROUND_PRIORITY();
 
   auto error =
-      CreateLocalWmiConnection(kCimV2ServerName, set_blanket, wmi_services);
+      CreateLocalWmiConnection(set_blanket, kCimV2ServerName, wmi_services);
   return !error.has_value();
 }
 
+ComPtr<IWbemServices> CreateWmiConnection(bool set_blanket,
+                                          const std::wstring& resource) {
+  // Mitigate the issues caused by loading DLLs on a background thread
+  // (http://crbug/973868).
+  SCOPED_MAY_LOAD_LIBRARY_AT_BACKGROUND_PRIORITY();
+
+  ComPtr<IWbemServices> wmi_services = nullptr;
+  auto error = CreateLocalWmiConnection(set_blanket, resource, &wmi_services);
+  if (error.has_value())
+    return nullptr;
+  return wmi_services;
+}
+
 bool CreateWmiClassMethodObject(IWbemServices* wmi_services,
                                 WStringPiece class_name,
                                 WStringPiece method_name,
diff --git a/base/win/wmi.h b/base/win/wmi.h
index 17966eb..02834da 100644
--- a/base/win/wmi.h
+++ b/base/win/wmi.h
@@ -67,6 +67,16 @@
     bool set_blanket,
     Microsoft::WRL::ComPtr<IWbemServices>* wmi_services);
 
+// Creates an instance of the WMI service connected to the resource and
+// returns its COM interface. If |set_blanket| is set to true, the basic COM
+// security blanket is applied to the returned interface. This is almost
+// always desirable unless you set the parameter to false and apply a custom
+// COM security blanket.
+// Returns a valid ComPtr<IWbemServices> on success, nullptr on failure.
+BASE_EXPORT Microsoft::WRL::ComPtr<IWbemServices> CreateWmiConnection(
+    bool set_blanket,
+    const std::wstring& resource);
+
 // Creates a WMI method using from a WMI class named |class_name| that
 // contains a method named |method_name|. Only WMI classes that are CIM
 // classes can be created using this function.
diff --git a/build/android/pylib/local/machine/local_machine_junit_test_run.py b/build/android/pylib/local/machine/local_machine_junit_test_run.py
index d4242f2..a19b11d 100644
--- a/build/android/pylib/local/machine/local_machine_junit_test_run.py
+++ b/build/android/pylib/local/machine/local_machine_junit_test_run.py
@@ -94,6 +94,8 @@
         '-Drobolectric.dependency.dir=%s' %
         self._test_instance.robolectric_runtime_deps_dir,
         '-Ddir.source.root=%s' % constants.DIR_SOURCE_ROOT,
+        # Use locally available sdk jars from 'robolectric.dependency.dir'
+        '-Drobolectric.offline=true',
         '-Drobolectric.resourcesMode=binary',
         '-Drobolectric.logging=stdout',
     ]
diff --git a/build/config/android/internal_rules.gni b/build/config/android/internal_rules.gni
index dbb7b17..f66fda73 100644
--- a/build/config/android/internal_rules.gni
+++ b/build/config/android/internal_rules.gni
@@ -4039,19 +4039,13 @@
           "//third_party/jdk:java_data",
         ]
         if (_is_robolectric) {
-          # An uninstrumented robolectric platform .jar is needed by the test
-          # runner to provide a copy of org.json - we could pull from maven
-          # instead if we wanted. TODO(crbug.com/1351430)
-          # Additionally, we provide an sdk jar, since whenever we start using a
-          # new Android SDK, robolectric doesn't support it, and they often take
-          # a few months to support it. This causes issues when mocking classes
-          # that reference new SDK classes, so providing our normal SDK will
-          # allow these classes to resolve. For an example, see
-          # crbug.com/1350963.
-          extra_classpath_jars = [
-            _robolectric_jar_path,
-            android_sdk_jar,
-          ]
+          # For robolectric tests, we also add the normal sdk jar to the
+          # classpath since whenever we start using a new Android SDK,
+          # robolectric doesn't support it, and they often take a few months to
+          # support it. This causes issues when mocking classes that reference
+          # new SDK classes, so providing our normal SDK will allow these
+          # classes to resolve. For an example, see crbug.com/1350963.
+          extra_classpath_jars = [ android_sdk_jar ]
         }
       }
     }
diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni
index bd8bb18..1846272b 100644
--- a/build/config/android/rules.gni
+++ b/build/config/android/rules.gni
@@ -4357,6 +4357,10 @@
   #       absolute paths, such as for third_party or generated .proto files.
   #       http://crbug.com/691451 tracks fixing this.
   #
+  #   generator_plugin_label (optional)
+  #       GN label for plugin executable which generates custom cc stubs.
+  #       Don't specify a toolchain, host toolchain is assumed.
+  #
   # Example:
   #  proto_java_library("foo_proto_java") {
   #    proto_path = "src/foo"
@@ -4383,15 +4387,37 @@
       depfile = "$target_gen_dir/$target_name.d"
       outputs = [ _srcjar_path ]
       args = [
-               "--depfile",
-               rebase_path(depfile, root_build_dir),
-               "--protoc",
-               rebase_path(android_protoc_bin, root_build_dir),
-               "--proto-path",
-               rebase_path(invoker.proto_path, root_build_dir),
-               "--srcjar",
-               rebase_path(_srcjar_path, root_build_dir),
-             ] + rebase_path(sources, root_build_dir)
+        "--depfile",
+        rebase_path(depfile, root_build_dir),
+        "--protoc",
+        rebase_path(android_protoc_bin, root_build_dir),
+        "--proto-path",
+        rebase_path(invoker.proto_path, root_build_dir),
+        "--srcjar",
+        rebase_path(_srcjar_path, root_build_dir),
+      ]
+
+      if (defined(invoker.generator_plugin_label)) {
+        if (host_os == "win") {
+          _host_executable_suffix = ".exe"
+        } else {
+          _host_executable_suffix = ""
+        }
+
+        _plugin_host_label =
+            invoker.generator_plugin_label + "($host_toolchain)"
+        _plugin_path =
+            get_label_info(_plugin_host_label, "root_out_dir") + "/" +
+            get_label_info(_plugin_host_label, "name") + _host_executable_suffix
+        args += [
+          "--plugin",
+          rebase_path(_plugin_path, root_build_dir),
+        ]
+        deps += [ _plugin_host_label ]
+        inputs = [ _plugin_path ]
+      }
+
+      args += rebase_path(sources, root_build_dir)
 
       if (defined(invoker.import_dirs)) {
         foreach(_import_dir, invoker.import_dirs) {
diff --git a/build/config/chromecast_build.gni b/build/config/chromecast_build.gni
index 6e0d29f..6b37740 100644
--- a/build/config/chromecast_build.gni
+++ b/build/config/chromecast_build.gni
@@ -117,7 +117,7 @@
 # Assert that Chromecast is being built for a supported platform.
 assert(is_linux || is_chromeos || is_android || is_fuchsia ||
            !enable_cast_receiver,
-       "Cast receiver builds are not supported on $target_os")
+       "Cast receiver builds are not supported on $current_os")
 
 assert(enable_cast_receiver || !is_cast_audio_only,
        "is_cast_audio_only = true requires enable_cast_receiver = true.")
diff --git a/build/fuchsia/linux_internal.sdk.sha1 b/build/fuchsia/linux_internal.sdk.sha1
index dc1fa37..4b2b115a 100644
--- a/build/fuchsia/linux_internal.sdk.sha1
+++ b/build/fuchsia/linux_internal.sdk.sha1
@@ -1 +1 @@
-9.20221006.5.1
+9.20221007.0.1
diff --git a/build/fuchsia/test/compatible_utils.py b/build/fuchsia/test/compatible_utils.py
index 64122ca..a501220 100644
--- a/build/fuchsia/test/compatible_utils.py
+++ b/build/fuchsia/test/compatible_utils.py
@@ -26,10 +26,10 @@
 
     pave_command = [
         os.path.join(image_dir, 'pave.sh'), '--authorized-keys',
-        os.path.expanduser('~/.ssh/fuchsia_authorized_keys')
+        os.path.expanduser('~/.ssh/fuchsia_authorized_keys'), '-1'
     ]
     if target_id:
-        pave_command.extend(['-n', target_id, '-1'])
+        pave_command.extend(['-n', target_id])
     return subprocess.run(pave_command, check=True, text=True, timeout=300)
 
 
diff --git a/build/fuchsia/test/log_manager.py b/build/fuchsia/test/log_manager.py
index b286817b..ec5924c 100755
--- a/build/fuchsia/test/log_manager.py
+++ b/build/fuchsia/test/log_manager.py
@@ -124,12 +124,13 @@
             symbolize_cmd.extend(['--ids-txt', symbol_path])
         log_manager.add_log_process(
             run_continuous_ffx_command(symbolize_cmd,
+                                       target_id,
                                        stdin=log_proc.stdout,
                                        stdout=system_log,
                                        stderr=subprocess.STDOUT))
     else:
         log_manager.add_log_process(
-            run_continuous_ffx_command(log_cmd, stdout=system_log))
+            run_continuous_ffx_command(log_cmd, target_id, stdout=system_log))
 
 
 def main():
diff --git a/build/protoc_java.py b/build/protoc_java.py
index 19a669c..3c0b313f 100755
--- a/build/protoc_java.py
+++ b/build/protoc_java.py
@@ -44,6 +44,7 @@
   parser = argparse.ArgumentParser()
   build_utils.AddDepfileOption(parser)
   parser.add_argument('--protoc', required=True, help='Path to protoc binary.')
+  parser.add_argument('--plugin', help='Path to plugin executable')
   parser.add_argument('--proto-path',
                       required=True,
                       help='Path to proto directory.')
@@ -65,15 +66,22 @@
   _EnforceJavaPackage(options.protos)
 
   with build_utils.TempDir() as temp_dir:
-    out_arg = '--java_out=lite:' + temp_dir
+    protoc_args = []
 
-    proto_path_args = ['--proto_path', options.proto_path]
+    generator = 'java'
+    if options.plugin:
+      generator = 'plugin'
+      protoc_args += ['--plugin', 'protoc-gen-plugin=' + options.plugin]
+
+    protoc_args += ['--proto_path', options.proto_path]
     for path in options.import_dir:
-      proto_path_args += ["--proto_path", path]
+      protoc_args += ['--proto_path', path]
+
+    protoc_args += ['--' + generator + '_out=lite:' + temp_dir]
 
     # Generate Java files using protoc.
     build_utils.CheckOutput(
-        [options.protoc] + proto_path_args + [out_arg] + options.protos,
+        [options.protoc] + protoc_args + options.protos,
         # protoc generates superfluous warnings about LITE_RUNTIME deprecation
         # even though we are using the new non-deprecated method.
         stderr_filter=lambda output: build_utils.FilterLines(
diff --git a/buildtools/deps_revisions.gni b/buildtools/deps_revisions.gni
index 8d1f0784..df3806a0 100644
--- a/buildtools/deps_revisions.gni
+++ b/buildtools/deps_revisions.gni
@@ -5,5 +5,5 @@
 declare_args() {
   # Used to cause full rebuilds on libc++ rolls. This should be kept in sync
   # with the libcxx_revision vars in //DEPS.
-  libcxx_revision = "eddc4cee0995875d2d91a944edaa08112174a172"
+  libcxx_revision = "31d65528d85f27f0363a4f8c71dc5646fca6eff0"
 }
diff --git a/cc/trees/layer_tree_host.cc b/cc/trees/layer_tree_host.cc
index 13974d2e..6432697d 100644
--- a/cc/trees/layer_tree_host.cc
+++ b/cc/trees/layer_tree_host.cc
@@ -455,8 +455,15 @@
     commit_completion_event_ = nullptr;
     if (for_protected_sequence) {
       waited_for_protected_sequence_ = true;
+      auto elapsed = timer.Elapsed();
       base::UmaHistogramMicrosecondsTimes(
-          "Compositing.MainThreadBlockedDuringCommitTime", timer.Elapsed());
+          "Compositing.MainThreadBlockedDuringCommitTime", elapsed);
+      if (in_apply_compositor_changes_) {
+        base::UmaHistogramMicrosecondsTimes(
+            "Compositing.MainThreadBlockedDuringCommitTime."
+            "ApplyCompositorChanges",
+            elapsed);
+      }
     }
   }
 }
@@ -1085,6 +1092,9 @@
   DCHECK(commit_data);
   TRACE_EVENT0("cc", "LayerTreeHost::ApplyCompositorChanges");
 
+  DCHECK(!in_apply_compositor_changes_);
+  base::AutoReset<bool> in_apply_changes(&in_apply_compositor_changes_, true);
+
   using perfetto::protos::pbzero::ChromeLatencyInfo;
   using perfetto::protos::pbzero::TrackEvent;
 
diff --git a/cc/trees/layer_tree_host.h b/cc/trees/layer_tree_host.h
index e7d190c..adfdf9d 100644
--- a/cc/trees/layer_tree_host.h
+++ b/cc/trees/layer_tree_host.h
@@ -1032,6 +1032,8 @@
 
   bool in_paint_layer_contents_ = false;
 
+  bool in_apply_compositor_changes_ = false;
+
   // This is true if atleast one layer in the layer tree has a copy request. We
   // use this bool to decide whether we need to compute subtree has copy request
   // for every layer during property tree building.
diff --git a/chrome/VERSION b/chrome/VERSION
index 0d73eb2..979af6aa 100644
--- a/chrome/VERSION
+++ b/chrome/VERSION
@@ -1,4 +1,4 @@
 MAJOR=108
 MINOR=0
-BUILD=5346
+BUILD=5348
 PATCH=0
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
index e79864e..6d1fffa 100644
--- a/chrome/android/BUILD.gn
+++ b/chrome/android/BUILD.gn
@@ -941,6 +941,13 @@
   }
 
   robolectric_binary("chrome_junit_tests") {
+    # Needed by androidx.test.core.app.ActivityScenario
+    android_manifest = "//chrome/android/junit/AndroidManifest.xml"
+
+    data_deps = [ "//testing/buildbot/filters:chrome_junit_tests_filters" ]
+
+    package_name = chrome_public_manifest_package
+
     # From java_sources.gni.
     sources = chrome_junit_test_java_sources
 
@@ -950,9 +957,6 @@
       "//mojo/public/mojom/base",
     ]
 
-    # Needed by androidx.test.core.app.ActivityScenario
-    android_manifest = "//chrome/android/junit/AndroidManifest.xml"
-
     deps = [
       ":base_module_java",
       ":chrome_app_java_resources",
@@ -974,6 +978,7 @@
       "//chrome/android:usage_stats_proto_java",
       "//chrome/android/features/android_library_factory:junit_tests",
       "//chrome/android/features/keyboard_accessory:internal_java",
+      "//chrome/android/features/start_surface:java_resources",
       "//chrome/android/features/start_surface:public_java",
       "//chrome/android/features/tab_ui:java",
       "//chrome/android/features/tab_ui:tab_suggestions_java",
@@ -1125,6 +1130,7 @@
       "//components/browser_ui/bottomsheet/android:java",
       "//components/browser_ui/display_cutout/android:java",
       "//components/browser_ui/media/android:java",
+      "//components/browser_ui/media/android:java_resources",
       "//components/browser_ui/notifications/android:java",
       "//components/browser_ui/settings/android:java",
       "//components/browser_ui/share/android:java",
@@ -1246,10 +1252,6 @@
     ]
 
     deps += chrome_junit_test_java_deps
-
-    data_deps = [ "//testing/buildbot/filters:chrome_junit_tests_filters" ]
-
-    package_name = chrome_public_manifest_package
   }
 
   generate_jni("chrome_test_util_jni_headers") {
diff --git a/chrome/android/chrome_test_java_sources.gni b/chrome/android/chrome_test_java_sources.gni
index 2468aa2..ca998a7 100644
--- a/chrome/android/chrome_test_java_sources.gni
+++ b/chrome/android/chrome_test_java_sources.gni
@@ -353,7 +353,6 @@
   "javatests/src/org/chromium/chrome/browser/payments/PaymentRequestExtraShippingOptionsTest.java",
   "javatests/src/org/chromium/chrome/browser/payments/PaymentRequestFailCompleteTest.java",
   "javatests/src/org/chromium/chrome/browser/payments/PaymentRequestFreeShippingTest.java",
-  "javatests/src/org/chromium/chrome/browser/payments/PaymentRequestIdTest.java",
   "javatests/src/org/chromium/chrome/browser/payments/PaymentRequestIncompleteContactDetailsAndFreeShippingTest.java",
   "javatests/src/org/chromium/chrome/browser/payments/PaymentRequestIncompleteContactDetailsTest.java",
   "javatests/src/org/chromium/chrome/browser/payments/PaymentRequestIncompleteEmailTest.java",
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListContainerProperties.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListContainerProperties.java
index 805af9c..93e10b58 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListContainerProperties.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListContainerProperties.java
@@ -40,19 +40,7 @@
     public static final PropertyModel.WritableIntPropertyKey BOTTOM_PADDING =
             new PropertyModel.WritableIntPropertyKey();
 
-    /**
-     * A property which controls whether to use the default animator specified in the underlying
-     * {@link TabListRecyclerView} or use a null item animator.
-     *
-     * TODO(crbug.com/1227656): This property is used only by the Incognito re-auth client and once
-     * the re-auth integration with tab-switcher design is further improved then remove this if no
-     * other clients use this property.
-     */
-    public static final PropertyModel.WritableBooleanPropertyKey TAB_LIST_ITEM_ANIMATOR_ENABLED =
-            new PropertyModel.WritableBooleanPropertyKey();
-
-    public static final PropertyKey[] ALL_KEYS =
-            new PropertyKey[] {IS_VISIBLE, IS_INCOGNITO, VISIBILITY_LISTENER, INITIAL_SCROLL_INDEX,
-                    ANIMATE_VISIBILITY_CHANGES, TOP_MARGIN, BOTTOM_CONTROLS_HEIGHT,
-                    SHADOW_TOP_OFFSET, BOTTOM_PADDING, TAB_LIST_ITEM_ANIMATOR_ENABLED};
+    public static final PropertyKey[] ALL_KEYS = new PropertyKey[] {IS_VISIBLE, IS_INCOGNITO,
+            VISIBILITY_LISTENER, INITIAL_SCROLL_INDEX, ANIMATE_VISIBILITY_CHANGES, TOP_MARGIN,
+            BOTTOM_CONTROLS_HEIGHT, SHADOW_TOP_OFFSET, BOTTOM_PADDING};
 }
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListContainerViewBinder.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListContainerViewBinder.java
index 4604aa5..3aa90136 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListContainerViewBinder.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListContainerViewBinder.java
@@ -11,7 +11,6 @@
 import static org.chromium.chrome.browser.tasks.tab_management.TabListContainerProperties.IS_INCOGNITO;
 import static org.chromium.chrome.browser.tasks.tab_management.TabListContainerProperties.IS_VISIBLE;
 import static org.chromium.chrome.browser.tasks.tab_management.TabListContainerProperties.SHADOW_TOP_OFFSET;
-import static org.chromium.chrome.browser.tasks.tab_management.TabListContainerProperties.TAB_LIST_ITEM_ANIMATOR_ENABLED;
 import static org.chromium.chrome.browser.tasks.tab_management.TabListContainerProperties.TOP_MARGIN;
 import static org.chromium.chrome.browser.tasks.tab_management.TabListContainerProperties.VISIBILITY_LISTENER;
 
@@ -65,8 +64,6 @@
             view.setShadowTopOffset(model.get(SHADOW_TOP_OFFSET));
         } else if (BOTTOM_PADDING == propertyKey) {
             view.setBottomPadding(model.get(BOTTOM_PADDING));
-        } else if (TAB_LIST_ITEM_ANIMATOR_ENABLED == propertyKey) {
-            view.toggleItemAnimation(model.get(TAB_LIST_ITEM_ANIMATOR_ENABLED));
         }
     }
 }
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListMediator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListMediator.java
index 5a29dbd..9753870 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListMediator.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListMediator.java
@@ -833,6 +833,15 @@
 
         if (mTabModelSelector.getTabModelFilterProvider().getCurrentTabModelFilter()
                         instanceof TabGroupModelFilter) {
+            // TODO(ckitagawa): When undoing the grouping of multiple groups this doesn't update the
+            // UI correctly. Specifically it only shows a single tab for each group that was undone.
+            // However, upon refreshing the TabSwitcher everything looks correct. Ask someone who
+            // might know more why and if they have guidance on how to fix?
+            //
+            // I suspect that TabGroupModelFilter#undoGroupedTab wasn't designed to undo a group
+            // action that aggregated multiple groups together and so
+            // TabGroupModelFilter#didMoveTab is not calling this observer in a way that results
+            // in the UI showing the now re-separated groups.
             mTabGroupObserver = new EmptyTabGroupModelFilterObserver() {
                 @Override
                 public void didMoveWithinGroup(
@@ -898,15 +907,13 @@
                             addTabInfoToModel(PseudoTab.fromTab(movedTab), modelIndex,
                                     currentSelectedTab.getId() == movedTab.getId());
                         } else {
-                            // Only add a tab to the model if it represents a new card (new group or
-                            // new singular tab). However, always update the previous group to clean
-                            // up old state.
-                            if (!filter.hasOtherRelatedTabs(movedTab)) {
-                                int filterIndex = filter.indexOf(movedTab);
-                                addTabInfoToModel(PseudoTab.fromTab(movedTab),
-                                        mModel.indexOfNthTabCard(filterIndex),
-                                        currentSelectedTab.getId() == movedTab.getId());
-                            }
+                            int filterIndex = TabModelUtils.getTabIndexById(
+                                    mTabModelSelector.getTabModelFilterProvider()
+                                            .getCurrentTabModelFilter(),
+                                    movedTab.getId());
+                            addTabInfoToModel(PseudoTab.fromTab(movedTab),
+                                    mModel.indexOfNthTabCard(filterIndex),
+                                    currentSelectedTab.getId() == movedTab.getId());
                             boolean isSelected = mTabModelSelector.getCurrentTabId()
                                     == filter.getTabAt(prevFilterIndex).getId();
                             updateTab(mModel.indexOfNthTabCard(prevFilterIndex),
@@ -933,31 +940,13 @@
                     // group 1, we can always find the current indexes of 1) Tab 1 and 2) Tab 2 or
                     // group 1 in the model. The method getIndexesForMergeToGroup() returns these
                     // two ids by using Tab 1's related Tabs, which have been updated in TabModel.
-                    List<Tab> relatedTabs = getRelatedTabsForId(movedTab.getId());
-                    Pair<Integer, Integer> positions = mModel.getIndexesForMergeToGroup(
-                            mTabModelSelector.getCurrentModel(), relatedTabs);
+                    Pair<Integer, Integer> positions =
+                            mModel.getIndexesForMergeToGroup(mTabModelSelector.getCurrentModel(),
+                                    getRelatedTabsForId(movedTab.getId()));
                     int srcIndex = positions.second;
                     int desIndex = positions.first;
 
-                    // If only the desIndex is valid then the movedTab was already part of another
-                    // group and is not present in the model. This happens only during an undo.
-                    // Refresh just the desIndex tab card in the model. The removal of the movedTab
-                    // from its previous group was already handled by didMoveTabOutOfGroup.
-                    if (desIndex != TabModel.INVALID_TAB_INDEX
-                            && srcIndex == TabModel.INVALID_TAB_INDEX) {
-                        boolean isSelected = false;
-                        for (Tab tab : relatedTabs) {
-                            isSelected |= tab == mTabModelSelector.getCurrentTab();
-                        }
-                        updateTab(desIndex,
-                                PseudoTab.fromTab(mTabModelSelector.getTabById(
-                                        mModel.get(desIndex).model.get(TabProperties.TAB_ID))),
-                                isSelected, false, false);
-                        return;
-                    }
-
                     if (!isValidMovePosition(srcIndex) || !isValidMovePosition(desIndex)) return;
-
                     Tab newSelectedTabInMergedGroup = null;
                     boolean isMRU = isShowingTabsInMRUOrder();
                     if (isMRU) {
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListModel.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListModel.java
index a7a2624..3ee7b0bf 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListModel.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListModel.java
@@ -213,27 +213,25 @@
      * move another Tab tab3 to (tab2, tab1) group, tab3 is after tab1, (tab2, tab1, tab3). Thus,
      * the last Tab in the related Tabs is the movedTab. We use this to find the srcIndex; and query
      * all of its related Tabs to find the desIndex, i.e., the index of the current group / Tab to
-     * move to. For when undoing multi-group merges the srcIndex may be invalid while the desIndex
-     * is valid as the tab may be moving between existing groups and so has no index of its own.
+     * move to.
      *
      * @param tabModel   The tabModel that owns the tabs.
      * @param tabs       The list that contains tabs of the newly merged group.
-     * @return A Pair with its first member as the index of the tab that is selected to merge to and
-     * the second member as the index of the tab that is being merged from.
+     * @return A Pair with its first member as the index of the tab that is selected to merge and
+     * the second member as the index of the tab that is being merged into.
      */
     Pair<Integer, Integer> getIndexesForMergeToGroup(TabModel tabModel, List<Tab> tabs) {
-        int lastTabModelIndex = tabModel.indexOf(tabs.get(tabs.size() - 1));
-
-        Tab srcTab = tabModel.getTabAt(lastTabModelIndex);
-        assert tabs.contains(srcTab);
-        int srcIndex = indexFromId(srcTab.getId());
-
         int desIndex = TabModel.INVALID_TAB_INDEX;
-        for (int i = lastTabModelIndex - 1; i >= 0; i--) {
+        int srcIndex = TabModel.INVALID_TAB_INDEX;
+        int lastTabModelIndex = tabModel.indexOf(tabs.get(tabs.size() - 1));
+        for (int i = lastTabModelIndex; i >= 0; i--) {
             Tab curTab = tabModel.getTabAt(i);
             if (!tabs.contains(curTab)) break;
             int index = indexFromId(curTab.getId());
-            if (index != TabModel.INVALID_TAB_INDEX && desIndex == TabModel.INVALID_TAB_INDEX) {
+            if (index != TabModel.INVALID_TAB_INDEX && srcIndex == TabModel.INVALID_TAB_INDEX) {
+                srcIndex = index;
+            } else if (index != TabModel.INVALID_TAB_INDEX
+                    && desIndex == TabModel.INVALID_TAB_INDEX) {
                 desIndex = index;
             }
         }
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListRecyclerView.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListRecyclerView.java
index ab3e0f1..e6717a4b 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListRecyclerView.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListRecyclerView.java
@@ -151,8 +151,6 @@
     // It is null when gts-tab animation is disabled or switching from Start surface to GTS.
     @Nullable
     private RecyclerView.ItemAnimator mOriginalAnimator;
-    /** The default item animator provided by the recycler view. */
-    private final RecyclerView.ItemAnimator mDefaultItemAnimator = getItemAnimator();
 
     /**
      * Basic constructor to use during inflation from xml.
@@ -457,16 +455,6 @@
         }
     }
 
-    /**
-     * A method to enable or disable the item animation. If enabled, it uses the default item
-     * animator provided by the {@link RecyclerView}.
-     *
-     * @param shouldEnableItemAnimation True, if item animation should be enabled false, otherwise.
-     */
-    void toggleItemAnimation(boolean shouldEnableItemAnimation) {
-        setItemAnimator(shouldEnableItemAnimation ? mDefaultItemAnimator : null);
-    }
-
     private void endAllAnimations() {
         if (mFadeInAnimator != null) {
             mFadeInAnimator.end();
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediator.java
index 2523b24b..5cd6229 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediator.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediator.java
@@ -11,7 +11,6 @@
 import static org.chromium.chrome.browser.tasks.tab_management.TabListContainerProperties.IS_INCOGNITO;
 import static org.chromium.chrome.browser.tasks.tab_management.TabListContainerProperties.IS_VISIBLE;
 import static org.chromium.chrome.browser.tasks.tab_management.TabListContainerProperties.SHADOW_TOP_OFFSET;
-import static org.chromium.chrome.browser.tasks.tab_management.TabListContainerProperties.TAB_LIST_ITEM_ANIMATOR_ENABLED;
 import static org.chromium.chrome.browser.tasks.tab_management.TabListContainerProperties.TOP_MARGIN;
 import static org.chromium.chrome.browser.tasks.tab_management.TabListContainerProperties.VISIBILITY_LISTENER;
 
@@ -43,6 +42,7 @@
 import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager;
 import org.chromium.chrome.browser.flags.ChromeFeatureList;
 import org.chromium.chrome.browser.incognito.reauth.IncognitoReauthController;
+import org.chromium.chrome.browser.incognito.reauth.IncognitoReauthManager;
 import org.chromium.chrome.browser.multiwindow.MultiWindowModeStateDispatcher;
 import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
 import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
@@ -121,6 +121,31 @@
     private final ObservableSupplierImpl<Boolean> mIsDialogVisibleSupplier =
             new ObservableSupplierImpl<>();
 
+    /**
+     * The callback which is supplied to the {@link IncognitoReauthController} that takes care of
+     * resetting the Incognito tab list with actual Incognito tabs upon successful authentication.
+     */
+    private final IncognitoReauthManager.IncognitoReauthCallback mIncognitoReauthCallback =
+            new IncognitoReauthManager.IncognitoReauthCallback() {
+                @Override
+                public void onIncognitoReauthNotPossible() {}
+
+                @Override
+                public void onIncognitoReauthSuccess() {
+                    assert mTabModelSelector.getTabModelFilterProvider()
+                            .getCurrentTabModelFilter()
+                            .isIncognito()
+                        : "The incognito re-auth controller only affects Incognito tab list.";
+                    mResetHandler.resetWithTabList(mTabModelSelector.getTabModelFilterProvider()
+                                                           .getCurrentTabModelFilter(),
+                            false, mShowTabsInMruOrder);
+                    setInitialScrollIndexOffset();
+                }
+
+                @Override
+                public void onIncognitoReauthFailure() {}
+            };
+
     private CallbackController mCallbackController;
     private Integer mSoftCleanupDelayMsForTesting;
     private Integer mCleanupDelayMsForTesting;
@@ -295,6 +320,8 @@
             incognitoReauthControllerSupplier.onAvailable(
                     mCallbackController.makeCancelable((incognitoReauthController) -> {
                         mIncognitoReauthController = incognitoReauthController;
+                        mIncognitoReauthController.addIncognitoReauthCallback(
+                                mIncognitoReauthCallback);
                     }));
         }
 
@@ -311,6 +338,8 @@
                     mTabGridDialogController.hideDialog(false);
                 }
                 if (!mContainerViewModel.get(IS_VISIBLE)) return;
+
+                if (clearIncognitoTabListForReauth()) return;
                 mResetHandler.resetWithTabList(currentTabModelFilter, false, mShowTabsInMruOrder);
                 setInitialScrollIndexOffset();
             }
@@ -776,22 +805,26 @@
     public void showTabSwitcherView(boolean animate) {
         mHandler.removeCallbacks(mSoftClearTabListRunnable);
         mHandler.removeCallbacks(mClearTabListRunnable);
-        if (mTabModelSelector.isTabStateInitialized()) {
-            mResetHandler.resetWithTabList(
-                    mTabModelSelector.getTabModelFilterProvider().getCurrentTabModelFilter(),
-                    TabUiFeatureUtilities.isTabToGtsAnimationEnabled(), mShowTabsInMruOrder);
-            recordTabCounts();
-            // When |mTabModelSelector.isTabStateInitialized| is false and INSTANT_START is enabled,
-            // the scrolling request is already processed in TabModelObserver#restoreCompleted.
-            // Therefore, we only need to handle the case with isTabStateInitialized() here.
-            setInitialScrollIndexOffset();
-        } else if (ChromeFeatureList.sInstantStart.isEnabled()) {
-            List<PseudoTab> allTabs;
-            try (StrictModeContext ignored = StrictModeContext.allowDiskReads()) {
-                allTabs = PseudoTab.getAllPseudoTabsFromStateFile(mContext);
+
+        if (!mTabModelSelector.isIncognitoSelected() || !clearIncognitoTabListForReauth()) {
+            if (mTabModelSelector.isTabStateInitialized()) {
+                mResetHandler.resetWithTabList(
+                        mTabModelSelector.getTabModelFilterProvider().getCurrentTabModelFilter(),
+                        TabUiFeatureUtilities.isTabToGtsAnimationEnabled(), mShowTabsInMruOrder);
+                recordTabCounts();
+                // When |mTabModelSelector.isTabStateInitialized| is false and INSTANT_START is
+                // enabled, the scrolling request is already processed in
+                // TabModelObserver#restoreCompleted. Therefore, we only need to handle the case
+                // with isTabStateInitialized() here.
+                setInitialScrollIndexOffset();
+            } else if (ChromeFeatureList.sInstantStart.isEnabled()) {
+                List<PseudoTab> allTabs;
+                try (StrictModeContext ignored = StrictModeContext.allowDiskReads()) {
+                    allTabs = PseudoTab.getAllPseudoTabsFromStateFile(mContext);
+                }
+                mResetHandler.resetWithTabs(allTabs,
+                        TabUiFeatureUtilities.isTabToGtsAnimationEnabled(), mShowTabsInMruOrder);
             }
-            mResetHandler.resetWithTabs(allTabs, TabUiFeatureUtilities.isTabToGtsAnimationEnabled(),
-                    mShowTabsInMruOrder);
         }
 
         if (!animate) mContainerViewModel.set(ANIMATE_VISIBILITY_CHANGES, false);
@@ -949,9 +982,6 @@
         mCustomView = customView;
         mCustomViewBackPressRunnable = backPressRunnable;
         notifyBackPressStateChangedInternal();
-
-        // Disable the animation on the tab list during the time period of the custom view.
-        mContainerViewModel.set(TAB_LIST_ITEM_ANIMATOR_ENABLED, false);
     }
 
     /**
@@ -968,8 +998,6 @@
         mCustomView = null;
         mCustomViewBackPressRunnable = null;
         notifyBackPressStateChangedInternal();
-
-        mContainerViewModel.set(TAB_LIST_ITEM_ANIMATOR_ENABLED, true);
     }
 
     /**
@@ -1011,6 +1039,10 @@
                     this::notifyBackPressStateChanged);
         }
 
+        if (mIncognitoReauthController != null) {
+            mIncognitoReauthController.removeIncognitoReauthCallback(mIncognitoReauthCallback);
+        }
+
         if (mCallbackController != null) {
             mCallbackController.destroy();
         }
@@ -1132,4 +1164,21 @@
 
         return true;
     }
+
+    /**
+     * A method which clears the Incognito tab lists when a re-auth is pending.
+     *
+     * @return True, if the Incognito tab list was requested to be cleared and false otherwise.
+     */
+    private boolean clearIncognitoTabListForReauth() {
+        if (!mTabModelSelector.isIncognitoSelected()) return false;
+
+        if (mIncognitoReauthController != null
+                && mIncognitoReauthController.isIncognitoReauthPending()) {
+            mResetHandler.resetWithTabList(null, false, mShowTabsInMruOrder);
+            return true;
+        }
+
+        return false;
+    }
 }
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_af.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_af.xtb
index 5d4bd22..af6c09e6 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_af.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_af.xtb
@@ -33,6 +33,7 @@
 <translation id="3194464645767632461">gradering</translation>
 <translation id="3291470810748040983">Jy sal 'n opletberig kry wanneer daar 'n laer prys in 'n oop oortjie is</translation>
 <translation id="3328308545011660196">Voorstel: <ph name="NUMBER_OF_TABS" /> oortjies lyk of hulle verwant is. Groepeer hulle?</translation>
+<translation id="3499853001094440183">Ongroepeer oortjies</translation>
 <translation id="3652027618765638838"><ph name="CURRENT_RATING" />/<ph name="RATING_BASELINE" /></translation>
 <translation id="3819916404117584598">{TABS_COUNT,plural, =1{Vou <ph name="TABS_COUNT_ONE" /> oortjie in.}other{Vou <ph name="TITLE_OF_GROUP" />-oortjiegroep met <ph name="TABS_COUNT_MANY" /> oortjies in.}}</translation>
 <translation id="3882834874697329510">Skakel kennisgewings in Instellings aan om 'n kennisgewing te kry wanneer daar 'n laer prys in 'n oop oortjie is.</translation>
@@ -66,6 +67,8 @@
 <translation id="6193448654517602979">Kies oortjies</translation>
 <translation id="6228793724645064692">(winkelgradering)</translation>
 <translation id="6333260925957816943">Inligting oor hierdie winkel</translation>
+<translation id="639823877092900621">{TABS_COUNT,plural, =1{Ongroepeer <ph name="TABS_COUNT_ONE" /> geselekteerde oortjie}other{Ongroepeer <ph name="TABS_COUNT_MANY" /> geselekteerde oortjies}}</translation>
+<translation id="6422650314852876533">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> oortjie}other{<ph name="TABS_COUNT_MANY" /> oortjies}}</translation>
 <translation id="6510648526783655549">Maak oortjiestrook toe</translation>
 <translation id="6549021453810473782">Bekyk winkelinligting</translation>
 <translation id="6562820390860419811">Skuif oortjie na links</translation>
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 5e50643e..993a1be 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
@@ -33,6 +33,7 @@
 <translation id="3194464645767632461">reytinq</translation>
 <translation id="3291470810748040983">Qiymət endirildikdə açıq tabda bildiriş alacaqsınız</translation>
 <translation id="3328308545011660196">Təklif: <ph name="NUMBER_OF_TABS" /> tab əlaqəli görünür. Onlar qruplaşdırılsın?</translation>
+<translation id="3499853001094440183">Tabları ayırın</translation>
 <translation id="3652027618765638838"><ph name="CURRENT_RATING" />/<ph name="RATING_BASELINE" /></translation>
 <translation id="3819916404117584598">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> tabını yığcamlaşdırın.}other{<ph name="TABS_COUNT_MANY" /> tab olan <ph name="TITLE_OF_GROUP" /> tab qrupunu yığcamlaşdırın.}}</translation>
 <translation id="3882834874697329510">Qiymət endirildikdə açıq tabda bildiriş almaq üçün Ayarlarda bildirişləri aktiv edin.</translation>
@@ -66,6 +67,8 @@
 <translation id="6193448654517602979">Tablar seçin</translation>
 <translation id="6228793724645064692">(mağaza reytinqi)</translation>
 <translation id="6333260925957816943">Bu mağaza haqqında məlumatlar</translation>
+<translation id="639823877092900621">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> seçilmiş tabı ayırın}other{<ph name="TABS_COUNT_MANY" /> seçilmiş tabı ayırın}}</translation>
+<translation id="6422650314852876533">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> tab}other{<ph name="TABS_COUNT_MANY" /> tab}}</translation>
 <translation id="6510648526783655549">Tab zolağını bağlayın</translation>
 <translation id="6549021453810473782">Mağaza məlumatlarına baxın</translation>
 <translation id="6562820390860419811">Tabı sola daşıyın</translation>
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 e663096..415e2bb 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
@@ -33,6 +33,7 @@
 <translation id="3194464645767632461">ocjena</translation>
 <translation id="3291470810748040983">Primit ćete obavještenje kada bude niža cijena na otvorenoj kartici</translation>
 <translation id="3328308545011660196">Prijedlog: čini se da su neke kartice povezane (njih <ph name="NUMBER_OF_TABS" />). Grupirati ih?</translation>
+<translation id="3499853001094440183">Razgrupiši kartice</translation>
 <translation id="3652027618765638838"><ph name="CURRENT_RATING" /> od <ph name="RATING_BASELINE" /></translation>
 <translation id="3819916404117584598">{TABS_COUNT,plural, =1{Sužavanje <ph name="TABS_COUNT_ONE" /> kartice.}one{Sužavanje grupe kartica <ph name="TITLE_OF_GROUP" /> s <ph name="TABS_COUNT_MANY" /> karticom.}few{Sužavanje grupe kartica <ph name="TITLE_OF_GROUP" /> s <ph name="TABS_COUNT_MANY" /> kartice.}other{Sužavanje grupe kartica <ph name="TITLE_OF_GROUP" /> s <ph name="TABS_COUNT_MANY" /> kartica.}}</translation>
 <translation id="3882834874697329510">Da dobijete obavještenje kada je niža cijena na otvorenoj kartici, uključite obavještenja u Postavkama.</translation>
@@ -66,6 +67,8 @@
 <translation id="6193448654517602979">Odaberite kartice</translation>
 <translation id="6228793724645064692">(ocjena trgovine)</translation>
 <translation id="6333260925957816943">Informacije o ovoj trgovini</translation>
+<translation id="639823877092900621">{TABS_COUNT,plural, =1{Razgrupisanje <ph name="TABS_COUNT_ONE" /> odabrane kartice}one{Razgrupisanje <ph name="TABS_COUNT_MANY" /> odabrane kartice}few{Razgrupisanje <ph name="TABS_COUNT_MANY" /> odabranih kartica}other{Razgrupisanje <ph name="TABS_COUNT_MANY" /> odabranih kartica}}</translation>
+<translation id="6422650314852876533">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> kartica}one{<ph name="TABS_COUNT_MANY" /> kartica}few{<ph name="TABS_COUNT_MANY" /> kartice}other{<ph name="TABS_COUNT_MANY" /> kartica}}</translation>
 <translation id="6510648526783655549">Zatvaranje trake kartice</translation>
 <translation id="6549021453810473782">Pregledajte informacije o trgovini</translation>
 <translation id="6562820390860419811">Pomjeranje kartice ulijevo</translation>
@@ -80,11 +83,13 @@
 <translation id="753732157349120914">Prebacivač kartica</translation>
 <translation id="7545727119051420814">{REVIEWS,plural, =1{<ph name="REVIEWS_COUNT_ONE" /> recenzija s Googlea}one{<ph name="REVIEWS_COUNT_MANY" /> recenzija s Googlea}few{<ph name="REVIEWS_COUNT_MANY" /> recenzije s Googlea}other{<ph name="REVIEWS_COUNT_MANY" /> recenzija s Googlea}}</translation>
 <translation id="7559245342362162951">Prikaži kartice grupe na mreži cijelog ekrana</translation>
+<translation id="7699041944097291312">{TABS_COUNT,plural, =1{Dijeljenje <ph name="TABS_COUNT_ONE" /> odabrane kartice}one{Dijeljenje <ph name="TABS_COUNT_MANY" /> odabrane kartice}few{Dijeljenje <ph name="TABS_COUNT_MANY" /> odabranih kartica}other{Dijeljenje <ph name="TABS_COUNT_MANY" /> odabranih kartica}}</translation>
 <translation id="7792771145871471484">Pregled prijedloga.</translation>
 <translation id="7838146321400849846">{TABS_COUNT,plural, =1{Dodaj <ph name="TABS_COUNT_ONE" /> odabranu karticu u grupu}one{Dodaj <ph name="TABS_COUNT_MANY" /> odabranu karticu u grupu}few{Dodaj <ph name="TABS_COUNT_MANY" /> odabrane kartice u grupu}other{Dodaj <ph name="TABS_COUNT_MANY" /> odabranih kartica u grupu}}</translation>
 <translation id="7854360405711302755">{REVIEWS,plural, =1{ Ocjena <ph name="CURRENT_RATING" /> od <ph name="RATING_BASELINE" />, <ph name="REVIEWS_COUNT_ONE" /> recenzija}one{Ocjena <ph name="CURRENT_RATING" /> od <ph name="RATING_BASELINE" />, <ph name="REVIEWS_COUNT_MANY" /> recenzija}few{Ocjena <ph name="CURRENT_RATING" /> od <ph name="RATING_BASELINE" />, <ph name="REVIEWS_COUNT_MANY" /> recenzije}other{Ocjena <ph name="CURRENT_RATING" /> od <ph name="RATING_BASELINE" />, <ph name="REVIEWS_COUNT_MANY" /> recenzija}}</translation>
 <translation id="7885132941432959125">Pomjeranje kartice udesno</translation>
 <translation id="7966321538264951561">Odbacivanje prijedloga.</translation>
+<translation id="8018192911041116887">Dijeli kartice</translation>
 <translation id="8029301326595421733">Informacije o ovoj trgovini su otvorene u punoj visini</translation>
 <translation id="814503310257431685">Prikaži sve</translation>
 <translation id="8205266828577616993">Pomjeri karticu prema gore</translation>
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 6c5854a2..ecd8f713 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
@@ -83,11 +83,13 @@
 <translation id="753732157349120914">Tab Switcher</translation>
 <translation id="7545727119051420814">{REVIEWS,plural, =1{<ph name="REVIEWS_COUNT_ONE" /> review from Google}other{<ph name="REVIEWS_COUNT_MANY" /> reviews from Google}}</translation>
 <translation id="7559245342362162951">Show group's tabs in full-screen grid</translation>
+<translation id="7699041944097291312">{TABS_COUNT,plural, =1{Share <ph name="TABS_COUNT_ONE" /> selected tab}other{Share <ph name="TABS_COUNT_MANY" /> selected tabs}}</translation>
 <translation id="7792771145871471484">Review the suggestions.</translation>
 <translation id="7838146321400849846">{TABS_COUNT,plural, =1{Group <ph name="TABS_COUNT_ONE" /> selected tab}other{Group <ph name="TABS_COUNT_MANY" /> selected tabs}}</translation>
 <translation id="7854360405711302755">{REVIEWS,plural, =1{ <ph name="CURRENT_RATING" />/<ph name="RATING_BASELINE" /> rating, <ph name="REVIEWS_COUNT_ONE" /> review}other{<ph name="CURRENT_RATING" />/<ph name="RATING_BASELINE" /> rating, <ph name="REVIEWS_COUNT_MANY" /> reviews}}</translation>
 <translation id="7885132941432959125">Move tab right</translation>
 <translation id="7966321538264951561">Dismiss the suggestions.</translation>
+<translation id="8018192911041116887">Share tabs</translation>
 <translation id="8029301326595421733">Information about this shop opened at full height</translation>
 <translation id="814503310257431685">View all</translation>
 <translation id="8205266828577616993">Move tab up</translation>
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 70b3219..cd92f81 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
@@ -33,6 +33,7 @@
 <translation id="3194464645767632461">ocjena</translation>
 <translation id="3291470810748040983">Kad niža cijena bude dostupna, primit ćete obavijest u otvorenoj kartici</translation>
 <translation id="3328308545011660196">Prijedlog: čini se da su neke kartice povezane (njih<ph name="NUMBER_OF_TABS" />). Želite li ih grupirati?</translation>
+<translation id="3499853001094440183">Poništi grupiranje kartica</translation>
 <translation id="3652027618765638838"><ph name="CURRENT_RATING" />/<ph name="RATING_BASELINE" /></translation>
 <translation id="3819916404117584598">{TABS_COUNT,plural, =1{Sažmi <ph name="TABS_COUNT_ONE" /> karticu.}one{Sažmi grupu kartica <ph name="TITLE_OF_GROUP" /> koja sadrži <ph name="TABS_COUNT_MANY" /> karticu.}few{Sažmi grupu kartica <ph name="TITLE_OF_GROUP" /> koja sadrži <ph name="TABS_COUNT_MANY" /> kartice.}other{Sažmi grupu kartica <ph name="TITLE_OF_GROUP" /> koja sadrži <ph name="TABS_COUNT_MANY" /> kartica.}}</translation>
 <translation id="3882834874697329510">Da biste primili obavijest u otvorenoj kartici kad niža cijena bude dostupna, uključite obavijesti u postavkama.</translation>
@@ -66,6 +67,8 @@
 <translation id="6193448654517602979">Odaberite kartice</translation>
 <translation id="6228793724645064692">(ocjena trgovine)</translation>
 <translation id="6333260925957816943">Informacije o ovoj trgovini</translation>
+<translation id="639823877092900621">{TABS_COUNT,plural, =1{Poništite grupiranje <ph name="TABS_COUNT_ONE" /> odabrane kartice}one{Poništite grupiranje <ph name="TABS_COUNT_MANY" /> odabrane kartice}few{Poništite grupiranje <ph name="TABS_COUNT_MANY" /> odabrane kartice}other{Poništite grupiranje <ph name="TABS_COUNT_MANY" /> odabranih kartica}}</translation>
+<translation id="6422650314852876533">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> kartica}one{<ph name="TABS_COUNT_MANY" /> kartica}few{<ph name="TABS_COUNT_MANY" /> kartice}other{<ph name="TABS_COUNT_MANY" /> kartica}}</translation>
 <translation id="6510648526783655549">Zatvorite vrpcu kartica</translation>
 <translation id="6549021453810473782">Prikaži podatke o trgovini</translation>
 <translation id="6562820390860419811">Pomakni karticu ulijevo</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ka.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ka.xtb
index d874a112..d02f850c 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ka.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ka.xtb
@@ -33,6 +33,7 @@
 <translation id="3194464645767632461">შეფასება</translation>
 <translation id="3291470810748040983">თქვენ მიიღებთ გაფრთხილებას, როცა გახსნილ ჩანართში უფრო დაბალი ფასი იქნება</translation>
 <translation id="3328308545011660196">შემოთავაზება: როგორც ჩანს, <ph name="NUMBER_OF_TABS" /> ჩანართი დაკავშირებულია. გსურთ მათი დაჯგუფება?</translation>
+<translation id="3499853001094440183">ჩანართების დაჯგუფების გაუქმება</translation>
 <translation id="3652027618765638838"><ph name="CURRENT_RATING" />/<ph name="RATING_BASELINE" /></translation>
 <translation id="3819916404117584598">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> ჩანართის ჩაკეცვა.}other{<ph name="TABS_COUNT_MANY" />-ჩანართიანი ჯგუფის „<ph name="TITLE_OF_GROUP" />“ ჩაკეცვა.}}</translation>
 <translation id="3882834874697329510">იმისთვის, რომ მიიღოთ გაფრთხილება, როცა გახსნილ ჩანართში უფრო დაბალი ფასი იქნება, ჩართეთ შეტყობინების ფუნქცია პარამეტრებიდან.</translation>
@@ -66,6 +67,8 @@
 <translation id="6193448654517602979">აირჩიეთ ჩანართები</translation>
 <translation id="6228793724645064692">(მაღაზიის შეფასება)</translation>
 <translation id="6333260925957816943">ინფორმაცია ამ მაღაზიის შესახებ</translation>
+<translation id="639823877092900621">{TABS_COUNT,plural, =1{გააუქმეთ <ph name="TABS_COUNT_ONE" /> არჩეული ჩანართის დაჯგუფება}other{გააუქმეთ <ph name="TABS_COUNT_MANY" /> არჩეული ჩანართის დაჯგუფება}}</translation>
+<translation id="6422650314852876533">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> ჩანართი}other{<ph name="TABS_COUNT_MANY" /> ჩანართი}}</translation>
 <translation id="6510648526783655549">ჩანართების ზოლის დახურვა</translation>
 <translation id="6549021453810473782">მაღაზიის ინფორმაციის ნახვა</translation>
 <translation id="6562820390860419811">ჩანართის მარცხნივ გადატანა</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ky.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ky.xtb
index 5c418730..127b9ae0 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ky.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ky.xtb
@@ -33,6 +33,7 @@
 <translation id="3194464645767632461">рейтинг</translation>
 <translation id="3291470810748040983">Төмөндөгөн баа тууралуу эскертүүнү ачылган өтмөктө көрөсүз</translation>
 <translation id="3328308545011660196">Сунуш: <ph name="NUMBER_OF_TABS" /> өтмөк окшош окшойт. Алар топко бириктирилсинби?</translation>
+<translation id="3499853001094440183">Өтмөктөрдү топтон ажыратуу</translation>
 <translation id="3652027618765638838"><ph name="CURRENT_RATING" />/<ph name="RATING_BASELINE" /></translation>
 <translation id="3819916404117584598">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> өтмөк жыйыштырылсын.}other{<ph name="TITLE_OF_GROUP" /> өтмөктөр тобундагы <ph name="TABS_COUNT_MANY" /> өтмөк жыйыштырылсын.}}</translation>
 <translation id="3882834874697329510">Төмөндөгөн баа тууралуу эскертүүнү ачылган өтмөктө көрүү үчүн Жөндөөлөрдөн билдирмелерди күйгүзүңүз.</translation>
@@ -66,6 +67,8 @@
 <translation id="6193448654517602979">Өтмөктөрдү тандоо</translation>
 <translation id="6228793724645064692">(дүкөндүн рейтинги)</translation>
 <translation id="6333260925957816943">Бул дүкөн тууралуу маалымат</translation>
+<translation id="639823877092900621">{TABS_COUNT,plural, =1{Тандалган <ph name="TABS_COUNT_ONE" /> өтмөктү топтон ажыратуу}other{Тандалган <ph name="TABS_COUNT_MANY" /> өтмөктү топтон ажыратуу}}</translation>
+<translation id="6422650314852876533">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> өтмөк}other{<ph name="TABS_COUNT_MANY" /> өтмөк}}</translation>
 <translation id="6510648526783655549">Өтмөк тасмасын жабуу</translation>
 <translation id="6549021453810473782">Дүкөн жөнүндө маалыматты көрүү</translation>
 <translation id="6562820390860419811">Өтмөктү солго жылдыруу</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_mk.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_mk.xtb
index ac11bb0..18aed5a8 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_mk.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_mk.xtb
@@ -33,6 +33,7 @@
 <translation id="3194464645767632461">оценување</translation>
 <translation id="3291470810748040983">Ќе добиете известување ако има пониска цена во некоја отворена картичка</translation>
 <translation id="3328308545011660196">Предлог: <ph name="NUMBER_OF_TABS" /> картички изгледаат поврзани. Да се групираат?</translation>
+<translation id="3499853001094440183">Одгрупирајте ги картичките</translation>
 <translation id="3652027618765638838"><ph name="CURRENT_RATING" />/<ph name="RATING_BASELINE" /></translation>
 <translation id="3819916404117584598">{TABS_COUNT,plural, =1{Собери <ph name="TABS_COUNT_ONE" /> картичка.}one{Собери ја групата <ph name="TITLE_OF_GROUP" /> со <ph name="TABS_COUNT_MANY" /> картичкa.}other{Собери ја групата <ph name="TITLE_OF_GROUP" /> со <ph name="TABS_COUNT_MANY" /> картички.}}</translation>
 <translation id="3882834874697329510">За да добиете известување ако има пониска цена во некоја отворена картичка, вклучете ги известувањата во „Поставки“.</translation>
@@ -66,6 +67,8 @@
 <translation id="6193448654517602979">Изберете картички</translation>
 <translation id="6228793724645064692">(оцена за продавницата)</translation>
 <translation id="6333260925957816943">Информации за продавницава</translation>
+<translation id="639823877092900621">{TABS_COUNT,plural, =1{Одгрупирајте <ph name="TABS_COUNT_ONE" /> избрана картичка}one{Одгрупирајте <ph name="TABS_COUNT_MANY" /> избрана картичка}other{Одгрупирајте <ph name="TABS_COUNT_MANY" /> избрани картички}}</translation>
+<translation id="6422650314852876533">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> картичка}one{<ph name="TABS_COUNT_MANY" /> картичка}other{<ph name="TABS_COUNT_MANY" /> картички}}</translation>
 <translation id="6510648526783655549">Затвори лента за картички</translation>
 <translation id="6549021453810473782">Прегледајте ги информациите за продавницата</translation>
 <translation id="6562820390860419811">Премести ја картичката налево</translation>
@@ -80,11 +83,13 @@
 <translation id="753732157349120914">Менувач на картички</translation>
 <translation id="7545727119051420814">{REVIEWS,plural, =1{<ph name="REVIEWS_COUNT_ONE" /> рецензија од Google}one{<ph name="REVIEWS_COUNT_MANY" /> рецензија од Google}other{<ph name="REVIEWS_COUNT_MANY" /> рецензии од Google}}</translation>
 <translation id="7559245342362162951">Прикажи ги картичките од групата во табела на цел екран</translation>
+<translation id="7699041944097291312">{TABS_COUNT,plural, =1{Споделете <ph name="TABS_COUNT_ONE" /> избрана картичка}one{Споделете <ph name="TABS_COUNT_MANY" /> избрана картичка}other{Споделете <ph name="TABS_COUNT_MANY" /> избрани картички}}</translation>
 <translation id="7792771145871471484">Прегледајте ги предлозите.</translation>
 <translation id="7838146321400849846">{TABS_COUNT,plural, =1{Групирајте <ph name="TABS_COUNT_ONE" /> избрана картичка}one{Групирајте <ph name="TABS_COUNT_MANY" /> избрана картичка}other{Групирајте <ph name="TABS_COUNT_MANY" /> избрани картички}}</translation>
 <translation id="7854360405711302755">{REVIEWS,plural, =1{ <ph name="CURRENT_RATING" />/<ph name="RATING_BASELINE" /> оцени, <ph name="REVIEWS_COUNT_ONE" /> рецензија}one{<ph name="CURRENT_RATING" />/<ph name="RATING_BASELINE" /> оцени, <ph name="REVIEWS_COUNT_MANY" /> рецензија}other{<ph name="CURRENT_RATING" />/<ph name="RATING_BASELINE" /> оцени, <ph name="REVIEWS_COUNT_MANY" /> рецензии}}</translation>
 <translation id="7885132941432959125">Премести ја картичката надесно</translation>
 <translation id="7966321538264951561">Отфрли ги предлозите.</translation>
+<translation id="8018192911041116887">Споделете картички</translation>
 <translation id="8029301326595421733">Информациите за продавницава се отворени на цел екран</translation>
 <translation id="814503310257431685">Прикажи ги сите</translation>
 <translation id="8205266828577616993">Помести картичка нагоре</translation>
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 73e701a..7b1e7cd5 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
@@ -33,6 +33,7 @@
 <translation id="3194464645767632461">beoordeling</translation>
 <translation id="3291470810748040983">Je krijgt een melding als er een lagere prijs is op een geopend tabblad</translation>
 <translation id="3328308545011660196">Suggestie: <ph name="NUMBER_OF_TABS" /> tabbladen lijken gerelateerd. Wil je deze groeperen?</translation>
+<translation id="3499853001094440183">Groepering van tabbladen opheffen</translation>
 <translation id="3652027618765638838"><ph name="CURRENT_RATING" />/<ph name="RATING_BASELINE" /></translation>
 <translation id="3819916404117584598">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> tabblad samenvouwen.}other{De tabbladgroep <ph name="TITLE_OF_GROUP" /> met <ph name="TABS_COUNT_MANY" /> tabbladen samenvouwen.}}</translation>
 <translation id="3882834874697329510">Wil je een melding krijgen als er een lagere prijs is op een geopend tabblad, zet dan meldingen aan in Instellingen.</translation>
@@ -66,6 +67,8 @@
 <translation id="6193448654517602979">Tabbladen selecteren</translation>
 <translation id="6228793724645064692">(winkelbeoordeling)</translation>
 <translation id="6333260925957816943">Informatie over deze winkel</translation>
+<translation id="639823877092900621">{TABS_COUNT,plural, =1{Groepering van <ph name="TABS_COUNT_ONE" /> geselecteerd tabblad opheffen}other{Groepering van <ph name="TABS_COUNT_MANY" /> geselecteerde tabbladen opheffen}}</translation>
+<translation id="6422650314852876533">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> tabblad}other{<ph name="TABS_COUNT_MANY" /> tabbladen}}</translation>
 <translation id="6510648526783655549">Tabbladstrook sluiten</translation>
 <translation id="6549021453810473782">Winkelinformatie bekijken</translation>
 <translation id="6562820390860419811">Tabblad naar links verplaatsen</translation>
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 4791b594..d4ae2ed 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
@@ -33,6 +33,7 @@
 <translation id="3194464645767632461">vurdering</translation>
 <translation id="3291470810748040983">Du blir varslet når det finnes en lavere pris på en åpen fane</translation>
 <translation id="3328308545011660196">Forslag: <ph name="NUMBER_OF_TABS" /> faner ser ut til å være relaterte. Vil du gruppere dem?</translation>
+<translation id="3499853001094440183">Opphev fanegrupperingen</translation>
 <translation id="3652027618765638838"><ph name="CURRENT_RATING" />/<ph name="RATING_BASELINE" /></translation>
 <translation id="3819916404117584598">{TABS_COUNT,plural, =1{Skjul <ph name="TABS_COUNT_ONE" /> fane.}other{Skjul <ph name="TITLE_OF_GROUP" /> fanegruppe med <ph name="TABS_COUNT_MANY" /> faner.}}</translation>
 <translation id="3882834874697329510">For å bli varslet når det finnes en lavere pris på en åpen fane, slå på varsler i Innstillinger.</translation>
@@ -66,6 +67,8 @@
 <translation id="6193448654517602979">Velg faner</translation>
 <translation id="6228793724645064692">(butikkvurdering)</translation>
 <translation id="6333260925957816943">Informasjon om denne butikken</translation>
+<translation id="639823877092900621">{TABS_COUNT,plural, =1{Opphev grupperingen av <ph name="TABS_COUNT_ONE" /> valgt fane}other{Opphev grupperingen av <ph name="TABS_COUNT_MANY" /> valgte faner}}</translation>
+<translation id="6422650314852876533">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> fane}other{<ph name="TABS_COUNT_MANY" /> faner}}</translation>
 <translation id="6510648526783655549">Lukk faneraden</translation>
 <translation id="6549021453810473782">Se butikkinformasjon</translation>
 <translation id="6562820390860419811">Flytt fanen mot venstre</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_or.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_or.xtb
index 3a0b9791..81ff462c 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_or.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_or.xtb
@@ -33,6 +33,7 @@
 <translation id="3194464645767632461">ରେଟିଂ</translation>
 <translation id="3291470810748040983">ଖୋଲା ଥିବା ଏକ ଟାବରେ ମୂଲ୍ୟରେ ହ୍ରାସ ହେବାର ସୂଚନା ଉପଲବ୍ଧ ହେଲେ ଆପଣ ଏକ ଆଲର୍ଟ ପାଇବେ</translation>
 <translation id="3328308545011660196">ପରାମର୍ଶ: <ph name="NUMBER_OF_TABS" />ଟି ଟାବ୍ ସମ୍ବନ୍ଧିତ ଥିଲା ପରି ଜଣାପଡ଼ୁଛି। ସେଗୁଡ଼ିକୁ ଗ୍ରୁପ୍ କରିବେ?</translation>
+<translation id="3499853001094440183">ଟାବକୁ ଗୋଷ୍ଠୀଭୁକ୍ତ କର ନାହିଁ</translation>
 <translation id="3652027618765638838"><ph name="CURRENT_RATING" />/<ph name="RATING_BASELINE" /></translation>
 <translation id="3819916404117584598">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" />ଟି ଟାବ୍ ସଙ୍କୁଚିତ କରନ୍ତୁ।}other{<ph name="TITLE_OF_GROUP" />ଟି ଟାବ୍ ଥିବା <ph name="TABS_COUNT_MANY" /> ଟାବ୍ ଗ୍ରୁପକୁ ସଙ୍କୁଚିତ କରନ୍ତୁ।}}</translation>
 <translation id="3882834874697329510">ଖୋଲା ଥିବା ଏକ ଟାବରେ କମ୍ ମୂଲ୍ୟ ସମ୍ବନ୍ଧିତ ସୂଚନା ଉପଲବ୍ଧ ହେଲେ ଆଲର୍ଟ ପାଇବାକୁ ସେଟିଂସରେ "ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ" ଚାଲୁ କରନ୍ତୁ।</translation>
@@ -66,6 +67,8 @@
 <translation id="6193448654517602979">ଟାବ୍‌ଗୁଡ଼ିକ ବାଛନ୍ତୁ</translation>
 <translation id="6228793724645064692">(ଷ୍ଟୋର୍ ରେଟିଂ)</translation>
 <translation id="6333260925957816943">ଏହି ଷ୍ଟୋର ବିଷୟରେ ସୂଚନା</translation>
+<translation id="639823877092900621">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" />ଟି ଚୟନିତ ଟାବକୁ ଗୋଷ୍ଠୀଭୁକ୍ତ କରନ୍ତୁ ନାହିଁ}other{<ph name="TABS_COUNT_MANY" />ଟି ଚୟନିତ ଟାବକୁ ଗୋଷ୍ଠୀଭୁକ୍ତ କରନ୍ତୁ ନାହିଁ}}</translation>
+<translation id="6422650314852876533">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" />ଟି ଟାବ}other{<ph name="TABS_COUNT_MANY" />ଟି ଟାବ}}</translation>
 <translation id="6510648526783655549">ଟାବ୍ ଷ୍ଟ୍ରିପ୍ ବନ୍ଦ କରନ୍ତୁ</translation>
 <translation id="6549021453810473782">ଷ୍ଟୋର୍ ସୂଚନା ଦେଖନ୍ତୁ</translation>
 <translation id="6562820390860419811">ଟାବ୍‍କୁ ବାମକୁ ମୁଭ୍ କରନ୍ତୁ</translation>
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 f99e903..5d414fcd 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
@@ -33,6 +33,7 @@
 <translation id="3194464645767632461">ਰੇਟਿੰਗ</translation>
 <translation id="3291470810748040983">ਖੁੱਲ੍ਹੀ ਟੈਬ ਵਿੱਚ ਕੀਮਤ ਘੱਟ ਹੋਣ 'ਤੇ ਤੁਹਾਨੂੰ ਸੁਚੇਤਨਾ ਪ੍ਰਾਪਤ ਹੋਵੇਗੀ</translation>
 <translation id="3328308545011660196">ਸੁਝਾਅ: <ph name="NUMBER_OF_TABS" /> ਟੈਬਾਂ ਸੰਬੰਧਿਤ ਲੱਗਦੀਆਂ ਹਨ। ਕੀ ਉਹਨਾਂ ਨੂੰ ਗਰੁੱਪਬੱਧ ਕਰਨਾ ਹੈ?</translation>
+<translation id="3499853001094440183">ਟੈਬਾਂ ਨੂੰ ਅਣ-ਗਰੁੱਪਬੱਧ ਕਰੋ</translation>
 <translation id="3652027618765638838"><ph name="CURRENT_RATING" />/<ph name="RATING_BASELINE" /></translation>
 <translation id="3819916404117584598">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> ਟੈਬ ਨੂੰ ਸਮੇਟੋ।}one{<ph name="TABS_COUNT_MANY" /> ਟੈਬ ਵਾਲੇ <ph name="TITLE_OF_GROUP" /> ਟੈਬ ਗਰੁੱਪ ਨੂੰ ਸਮੇਟੋ।}other{<ph name="TABS_COUNT_MANY" /> ਟੈਬਾਂ ਵਾਲੇ <ph name="TITLE_OF_GROUP" /> ਟੈਬ ਗਰੁੱਪ ਨੂੰ ਸਮੇਟੋ।}}</translation>
 <translation id="3882834874697329510">ਖੁੱਲ੍ਹੀ ਟੈਬ ਵਿੱਚ ਕੀਮਤ ਘੱਟ ਹੋਣ 'ਤੇ ਸੁਚੇਤਨਾ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ, ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਸੂਚਨਾਵਾਂ ਨੂੰ ਚਾਲੂ ਕਰੋ।</translation>
@@ -66,6 +67,8 @@
 <translation id="6193448654517602979">ਟੈਬਾਂ ਚੁਣੋ</translation>
 <translation id="6228793724645064692">(ਸਟੋਰ ਰੇਟਿੰਗ)</translation>
 <translation id="6333260925957816943">ਇਸ ਸਟੋਰ ਸੰਬੰਧੀ ਜਾਣਕਾਰੀ</translation>
+<translation id="639823877092900621">{TABS_COUNT,plural, =1{ਚੁਣੀ ਗਈ <ph name="TABS_COUNT_ONE" /> ਟੈਬ ਨੂੰ ਅਣ-ਗਰੁੱਪਬੱਧ ਕਰੋ}one{ਚੁਣੀ ਗਈ <ph name="TABS_COUNT_MANY" /> ਟੈਬ ਨੂੰ ਅਣ-ਗਰੁੱਪਬੱਧ ਕਰੋ}other{ਚੁਣੀਆਂ ਗਈਆਂ <ph name="TABS_COUNT_MANY" /> ਟੈਬਾਂ ਨੂੰ ਅਣ-ਗਰੁੱਪਬੱਧ ਕਰੋ}}</translation>
+<translation id="6422650314852876533">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> ਟੈਬ}one{<ph name="TABS_COUNT_MANY" /> ਟੈਬ}other{<ph name="TABS_COUNT_MANY" /> ਟੈਬਾਂ}}</translation>
 <translation id="6510648526783655549">ਟੈਬ ਪੱਟੀ ਨੂੰ ਬੰਦ ਕਰੋ</translation>
 <translation id="6549021453810473782">ਸਟੋਰ ਜਾਣਕਾਰੀ ਦੇਖੋ</translation>
 <translation id="6562820390860419811">ਟੈਬ ਨੂੰ ਖੱਬੇ ਪਾਸੇ ਲਿਜਾਓ</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_pl.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_pl.xtb
index 933d1eb..895bf2d 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_pl.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_pl.xtb
@@ -33,6 +33,7 @@
 <translation id="3194464645767632461">ocena</translation>
 <translation id="3291470810748040983">Otrzymasz alert, gdy cena na otwartej karcie będzie niższa</translation>
 <translation id="3328308545011660196">Sugestia: liczba prawdopodobnie powiązanych kart wynosi <ph name="NUMBER_OF_TABS" />. Czy chcesz je pogrupować?</translation>
+<translation id="3499853001094440183">Rozgrupuj karty</translation>
 <translation id="3652027618765638838"><ph name="CURRENT_RATING" />/<ph name="RATING_BASELINE" /></translation>
 <translation id="3819916404117584598">{TABS_COUNT,plural, =1{Zwiń <ph name="TABS_COUNT_ONE" /> kartę.}few{Zwiń grupę kart <ph name="TITLE_OF_GROUP" /> z <ph name="TABS_COUNT_MANY" /> kartami.}many{Zwiń grupę kart <ph name="TITLE_OF_GROUP" /> z <ph name="TABS_COUNT_MANY" /> kartami.}other{Zwiń grupę kart <ph name="TITLE_OF_GROUP" /> z <ph name="TABS_COUNT_MANY" /> karty.}}</translation>
 <translation id="3882834874697329510">Aby otrzymywać alert, gdy na otwartej karcie cena będzie niższa, włącz powiadomienia w ustawieniach.</translation>
@@ -66,6 +67,8 @@
 <translation id="6193448654517602979">Wybierz karty</translation>
 <translation id="6228793724645064692">(ocena sklepu)</translation>
 <translation id="6333260925957816943">Informacje o tym sklepie</translation>
+<translation id="639823877092900621">{TABS_COUNT,plural, =1{Rozgrupuj <ph name="TABS_COUNT_ONE" /> wybraną kartę}few{Rozgrupuj <ph name="TABS_COUNT_MANY" /> wybrane karty}many{Rozgrupuj <ph name="TABS_COUNT_MANY" /> wybranych kart}other{Rozgrupuj <ph name="TABS_COUNT_MANY" /> wybranej karty}}</translation>
+<translation id="6422650314852876533">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> karta}few{<ph name="TABS_COUNT_MANY" /> karty}many{<ph name="TABS_COUNT_MANY" /> kart}other{<ph name="TABS_COUNT_MANY" /> karty}}</translation>
 <translation id="6510648526783655549">Zamknij pasek kart</translation>
 <translation id="6549021453810473782">Wyświetl informacje o sklepie</translation>
 <translation id="6562820390860419811">Przenieś kartę w lewo</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_pt-PT.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_pt-PT.xtb
index a5ccf50..012a40e5 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_pt-PT.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_pt-PT.xtb
@@ -33,6 +33,7 @@
 <translation id="3194464645767632461">classificação</translation>
 <translation id="3291470810748040983">Receberá um alerta quando existir um preço inferior num separador aberto.</translation>
 <translation id="3328308545011660196">Sugestão: <ph name="NUMBER_OF_TABS" /> separadores parecem estar relacionados. Pretende agrupá-los?</translation>
+<translation id="3499853001094440183">Desagrupar separadores</translation>
 <translation id="3652027618765638838"><ph name="CURRENT_RATING" />/<ph name="RATING_BASELINE" /></translation>
 <translation id="3819916404117584598">{TABS_COUNT,plural, =1{Reduza <ph name="TABS_COUNT_ONE" /> separador.}other{Reduza o grupo de separadores <ph name="TITLE_OF_GROUP" /> com <ph name="TABS_COUNT_MANY" /> separadores.}}</translation>
 <translation id="3882834874697329510">Para receber um alerta quando existir um preço inferior num separador aberto, ative as notificações nas Definições.</translation>
@@ -66,6 +67,8 @@
 <translation id="6193448654517602979">Selecione separadores</translation>
 <translation id="6228793724645064692">(classificação da loja)</translation>
 <translation id="6333260925957816943">Informações acerca desta loja</translation>
+<translation id="639823877092900621">{TABS_COUNT,plural, =1{Desagrupar <ph name="TABS_COUNT_ONE" /> separador selecionado}other{Desagrupar <ph name="TABS_COUNT_MANY" /> separadores selecionados}}</translation>
+<translation id="6422650314852876533">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> separador}other{<ph name="TABS_COUNT_MANY" /> separadores}}</translation>
 <translation id="6510648526783655549">Fechar Faixa de separadores</translation>
 <translation id="6549021453810473782">Veja as informações da loja</translation>
 <translation id="6562820390860419811">Mover o separador para a esquerda</translation>
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 f1f9c80..a465030 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
@@ -33,6 +33,7 @@
 <translation id="3194464645767632461">ocena</translation>
 <translation id="3291470810748040983">Ko bo na odprtem zavihku nižja cena, boste prejeli opozorilo.</translation>
 <translation id="3328308545011660196">Predlog: Videti je, da je toliko sorodnih zavihkov: <ph name="NUMBER_OF_TABS" />. Jih želite uvrstiti v skupino?</translation>
+<translation id="3499853001094440183">Razdruži zavihke</translation>
 <translation id="3652027618765638838"><ph name="CURRENT_RATING" />/<ph name="RATING_BASELINE" /></translation>
 <translation id="3819916404117584598">{TABS_COUNT,plural, =1{Strni <ph name="TABS_COUNT_ONE" /> zavihek.}one{Strni skupino zavihkov <ph name="TITLE_OF_GROUP" /> s/z <ph name="TABS_COUNT_MANY" /> zavihkom.}two{Strni skupino zavihkov <ph name="TITLE_OF_GROUP" /> s/z <ph name="TABS_COUNT_MANY" /> zavihkoma.}few{Strni skupino zavihkov <ph name="TITLE_OF_GROUP" /> s/z <ph name="TABS_COUNT_MANY" /> zavihki.}other{Strni skupino zavihkov <ph name="TITLE_OF_GROUP" /> s/z <ph name="TABS_COUNT_MANY" /> zavihki.}}</translation>
 <translation id="3882834874697329510">Če želite prejeti opozorilo, ko bo na odprtem zavihku nižja cena, v nastavitvah vklopite obvestila.</translation>
@@ -66,6 +67,8 @@
 <translation id="6193448654517602979">Izberite zavihke</translation>
 <translation id="6228793724645064692">(ocena trgovine)</translation>
 <translation id="6333260925957816943">Informacije o tej trgovini</translation>
+<translation id="639823877092900621">{TABS_COUNT,plural, =1{Razdruži <ph name="TABS_COUNT_ONE" /> izbrani zavihek}one{Razdruži <ph name="TABS_COUNT_MANY" /> izbrani zavihek}two{Razdruži <ph name="TABS_COUNT_MANY" /> izbrana zavihka}few{Razdruži <ph name="TABS_COUNT_MANY" /> izbrane zavihke}other{Razdruži <ph name="TABS_COUNT_MANY" /> izbranih zavihkov}}</translation>
+<translation id="6422650314852876533">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> zavihek}one{<ph name="TABS_COUNT_MANY" /> zavihek}two{<ph name="TABS_COUNT_MANY" /> zavihka}few{<ph name="TABS_COUNT_MANY" /> zavihki}other{<ph name="TABS_COUNT_MANY" /> zavihkov}}</translation>
 <translation id="6510648526783655549">Zapri trak z zavihki</translation>
 <translation id="6549021453810473782">Ogled podatkov o trgovini</translation>
 <translation id="6562820390860419811">Premakni zavihek v levo</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sr-Latn.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sr-Latn.xtb
index e5ef412..76b05cb 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sr-Latn.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sr-Latn.xtb
@@ -33,6 +33,7 @@
 <translation id="3194464645767632461">ocena</translation>
 <translation id="3291470810748040983">Dobićete obaveštenje kada postoji niža cena na otvorenoj kartici</translation>
 <translation id="3328308545011660196">Predlog: Kartice (<ph name="NUMBER_OF_TABS" />) deluju povezano. Želite li da ih grupišete?</translation>
+<translation id="3499853001094440183">Opozovi grupisanje kartica</translation>
 <translation id="3652027618765638838"><ph name="CURRENT_RATING" /> od <ph name="RATING_BASELINE" /></translation>
 <translation id="3819916404117584598">{TABS_COUNT,plural, =1{Skupite <ph name="TABS_COUNT_ONE" /> karticu.}one{Skupite grupu <ph name="TITLE_OF_GROUP" /> sa <ph name="TABS_COUNT_MANY" /> karticom.}few{Skupite grupu <ph name="TITLE_OF_GROUP" /> sa <ph name="TABS_COUNT_MANY" /> kartice.}other{Skupite grupu <ph name="TITLE_OF_GROUP" /> sa <ph name="TABS_COUNT_MANY" /> kartica.}}</translation>
 <translation id="3882834874697329510">Da biste dobili obaveštenje kada postoji niža cena na otvorenoj kartici, uključite obaveštenja u Podešavanjima.</translation>
@@ -66,6 +67,8 @@
 <translation id="6193448654517602979">Izaberite kartice</translation>
 <translation id="6228793724645064692">(ocena prodavnice)</translation>
 <translation id="6333260925957816943">Informacije o ovoj prodavnici</translation>
+<translation id="639823877092900621">{TABS_COUNT,plural, =1{Opozovite grupisanje za <ph name="TABS_COUNT_ONE" /> izabranu karticu}one{Opozovite grupisanje za <ph name="TABS_COUNT_MANY" /> izabranu karticu}few{Opozovite grupisanje za <ph name="TABS_COUNT_MANY" /> izabrane kartice}other{Opozovite grupisanje za <ph name="TABS_COUNT_MANY" /> izabranih kartica}}</translation>
+<translation id="6422650314852876533">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> kartica}one{<ph name="TABS_COUNT_MANY" /> kartica}few{<ph name="TABS_COUNT_MANY" /> kartice}other{<ph name="TABS_COUNT_MANY" /> kartica}}</translation>
 <translation id="6510648526783655549">Zatvorite traku sa karticama</translation>
 <translation id="6549021453810473782">Prikaži detalje o prodavnici</translation>
 <translation id="6562820390860419811">Premestite karticu ulevo</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sr.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sr.xtb
index b4197e3c..c65b690a 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sr.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sr.xtb
@@ -33,6 +33,7 @@
 <translation id="3194464645767632461">оцена</translation>
 <translation id="3291470810748040983">Добићете обавештење када постоји нижа цена на отвореној картици</translation>
 <translation id="3328308545011660196">Предлог: Картице (<ph name="NUMBER_OF_TABS" />) делују повезано. Желите ли да их групишете?</translation>
+<translation id="3499853001094440183">Опозови груписање картица</translation>
 <translation id="3652027618765638838"><ph name="CURRENT_RATING" /> од <ph name="RATING_BASELINE" /></translation>
 <translation id="3819916404117584598">{TABS_COUNT,plural, =1{Скупите <ph name="TABS_COUNT_ONE" /> картицу.}one{Скупите групу <ph name="TITLE_OF_GROUP" /> са <ph name="TABS_COUNT_MANY" /> картицом.}few{Скупите групу <ph name="TITLE_OF_GROUP" /> са <ph name="TABS_COUNT_MANY" /> картице.}other{Скупите групу <ph name="TITLE_OF_GROUP" /> са <ph name="TABS_COUNT_MANY" /> картица.}}</translation>
 <translation id="3882834874697329510">Да бисте добили обавештење када постоји нижа цена на отвореној картици, укључите обавештења у Подешавањима.</translation>
@@ -66,6 +67,8 @@
 <translation id="6193448654517602979">Изаберите картице</translation>
 <translation id="6228793724645064692">(оцена продавнице)</translation>
 <translation id="6333260925957816943">Информације о овој продавници</translation>
+<translation id="639823877092900621">{TABS_COUNT,plural, =1{Опозовите груписање за <ph name="TABS_COUNT_ONE" /> изабрану картицу}one{Опозовите груписање за <ph name="TABS_COUNT_MANY" /> изабрану картицу}few{Опозовите груписање за <ph name="TABS_COUNT_MANY" /> изабране картице}other{Опозовите груписање за <ph name="TABS_COUNT_MANY" /> изабраних картица}}</translation>
+<translation id="6422650314852876533">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> картица}one{<ph name="TABS_COUNT_MANY" /> картица}few{<ph name="TABS_COUNT_MANY" /> картице}other{<ph name="TABS_COUNT_MANY" /> картица}}</translation>
 <translation id="6510648526783655549">Затворите траку са картицама</translation>
 <translation id="6549021453810473782">Прикажи детаље о продавници</translation>
 <translation id="6562820390860419811">Преместите картицу улево</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_th.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_th.xtb
index b3adb1c..d6491fe 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_th.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_th.xtb
@@ -33,6 +33,7 @@
 <translation id="3194464645767632461">การให้คะแนน</translation>
 <translation id="3291470810748040983">คุณจะได้รับการแจ้งเตือนเมื่อมีสินค้าราคาต่ำกว่าในแท็บที่เปิดอยู่</translation>
 <translation id="3328308545011660196">คำแนะนำ: ดูเหมือนว่ามีแท็บที่เกี่ยวข้อง <ph name="NUMBER_OF_TABS" /> แท็บ ต้องการจัดกลุ่มแท็บไหม</translation>
+<translation id="3499853001094440183">เลิกจัดกลุ่มแท็บ</translation>
 <translation id="3652027618765638838"><ph name="CURRENT_RATING" />/<ph name="RATING_BASELINE" /></translation>
 <translation id="3819916404117584598">{TABS_COUNT,plural, =1{ยุบ <ph name="TABS_COUNT_ONE" /> แท็บ}other{ยุบกลุ่มแท็บ <ph name="TITLE_OF_GROUP" /> ที่มีแท็บอยู่ <ph name="TABS_COUNT_MANY" /> แท็บ}}</translation>
 <translation id="3882834874697329510">หากต้องการรับการแจ้งเตือนเมื่อมีสินค้าราคาต่ำกว่าในแท็บที่เปิดอยู่ ให้เปิดการแจ้งเตือนในการตั้งค่า</translation>
@@ -66,6 +67,8 @@
 <translation id="6193448654517602979">เลือกแท็บ</translation>
 <translation id="6228793724645064692">(คะแนนร้านค้า)</translation>
 <translation id="6333260925957816943">ข้อมูลเกี่ยวกับร้านนี้</translation>
+<translation id="639823877092900621">{TABS_COUNT,plural, =1{เลิกจัดกลุ่มแท็บที่เลือก <ph name="TABS_COUNT_ONE" /> แท็บ}other{เลิกจัดกลุ่มแท็บที่เลือก <ph name="TABS_COUNT_MANY" /> แท็บ}}</translation>
+<translation id="6422650314852876533">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> แท็บ}other{<ph name="TABS_COUNT_MANY" /> แท็บ}}</translation>
 <translation id="6510648526783655549">ปิดแนวแท็บ</translation>
 <translation id="6549021453810473782">ดูข้อมูลร้านค้า</translation>
 <translation id="6562820390860419811">ย้ายแท็บไปทางซ้าย</translation>
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 b595a70..32747b5 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
@@ -33,6 +33,7 @@
 <translation id="3194464645767632461">reyting</translation>
 <translation id="3291470810748040983">Ochiq varaqda narx tushganda xabar olasiz</translation>
 <translation id="3328308545011660196">Taklif: <ph name="NUMBER_OF_TABS" /> ta varaq aloqador. Ular guruhlansinmi?</translation>
+<translation id="3499853001094440183">Varaqlar guruhini yechish</translation>
 <translation id="3652027618765638838"><ph name="CURRENT_RATING" />/<ph name="RATING_BASELINE" /></translation>
 <translation id="3819916404117584598">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> ta varaqni yigʻish.}other{<ph name="TABS_COUNT_MANY" /> varaqli <ph name="TITLE_OF_GROUP" /> guruhini yigʻish.}}</translation>
 <translation id="3882834874697329510">Ochiq varaqda narx tushganda xabar olish uchun Sozlamalar orqali bildirishnomalarni yoqing.</translation>
@@ -66,6 +67,8 @@
 <translation id="6193448654517602979">Varaqlarni tanlang</translation>
 <translation id="6228793724645064692">(doʻkon reytingi)</translation>
 <translation id="6333260925957816943">Bu doʻkon haqidagi axborot</translation>
+<translation id="639823877092900621">{TABS_COUNT,plural, =1{Tanlangan <ph name="TABS_COUNT_ONE" /> ta varaq guruhini yechish}other{Tanlangan <ph name="TABS_COUNT_MANY" /> ta varaq guruhini yechish}}</translation>
+<translation id="6422650314852876533">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> ta varaq}other{<ph name="TABS_COUNT_MANY" /> ta varaq}}</translation>
 <translation id="6510648526783655549">Varaqlar panelini yopish</translation>
 <translation id="6549021453810473782">Doʻkon axborotini ochish</translation>
 <translation id="6562820390860419811">Varaqni chapga siljitish</translation>
@@ -80,11 +83,13 @@
 <translation id="753732157349120914">Varaq almashtirgich</translation>
 <translation id="7545727119051420814">{REVIEWS,plural, =1{<ph name="REVIEWS_COUNT_ONE" /> ta sharh Googledan}other{<ph name="REVIEWS_COUNT_MANY" /> ta sharh Googledan}}</translation>
 <translation id="7559245342362162951">Guruh varaqlarini butun ekranga jadval shaklida chiqarish</translation>
+<translation id="7699041944097291312">{TABS_COUNT,plural, =1{Tanlangan <ph name="TABS_COUNT_ONE" /> ta varaqni ulashish}other{Tanlangan <ph name="TABS_COUNT_MANY" /> ta varaqni ulashish}}</translation>
 <translation id="7792771145871471484">Batafsil.</translation>
 <translation id="7838146321400849846">{TABS_COUNT,plural, =1{Belgilangan <ph name="TABS_COUNT_ONE" /> ta varaqni guruhlash}other{Belgilangan <ph name="TABS_COUNT_MANY" /> ta varaqni guruhlash}}</translation>
 <translation id="7854360405711302755">{REVIEWS,plural, =1{ <ph name="CURRENT_RATING" />/<ph name="RATING_BASELINE" /> baho, <ph name="REVIEWS_COUNT_ONE" /> ta sharh}other{<ph name="CURRENT_RATING" />/<ph name="RATING_BASELINE" /> baho, <ph name="REVIEWS_COUNT_MANY" /> ta sharh}}</translation>
 <translation id="7885132941432959125">Varaqni oʻngga siljitish</translation>
 <translation id="7966321538264951561">Bildirgilarni yopish</translation>
+<translation id="8018192911041116887">Varaqlarni ulashish</translation>
 <translation id="8029301326595421733">Bu doʻkon haqidagi axborot toʻliq hajmda ochildi</translation>
 <translation id="814503310257431685">Hammasi</translation>
 <translation id="8205266828577616993">Varaqni tepaga surish</translation>
diff --git a/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabSelectionEditorTest.java b/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabSelectionEditorTest.java
index b2fb4a8..7884b4b 100644
--- a/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabSelectionEditorTest.java
+++ b/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabSelectionEditorTest.java
@@ -76,7 +76,6 @@
 import org.chromium.chrome.browser.share.ShareDelegate;
 import org.chromium.chrome.browser.share.ShareDelegate.ShareOrigin;
 import org.chromium.chrome.browser.tab.Tab;
-import org.chromium.chrome.browser.tab.TabSelectionType;
 import org.chromium.chrome.browser.tabmodel.TabModel;
 import org.chromium.chrome.browser.tabmodel.TabModelSelector;
 import org.chromium.chrome.browser.tasks.tab_groups.TabGroupModelFilter;
@@ -515,67 +514,6 @@
 
     @Test
     @MediumTest
-    @Feature({"RenderTest"})
-    @EnableFeatures({ChromeFeatureList.TAB_SELECTION_EDITOR_V2})
-    public void testToolbarMenuItem_GroupActionAndUndo() throws Exception {
-        prepareBlankTab(2, false);
-        prepareBlankTabGroup(3, false);
-        prepareBlankTabGroup(1, false);
-        prepareBlankTabGroup(2, false);
-        List<Tab> tabs = getTabsInCurrentTabModelFilter();
-        List<Tab> beforeTabOrder = getTabsInCurrentTabModel();
-
-        Tab selectedTab = beforeTabOrder.get(4);
-        TestThreadUtils.runOnUiThreadBlocking(() -> {
-            mTabModelSelector.getCurrentModel().setIndex(4, TabSelectionType.FROM_USER, false);
-        });
-        assertEquals(selectedTab, mTabModelSelector.getCurrentTab());
-
-        TabUiTestHelper.enterTabSwitcher(sActivityTestRule.getActivity());
-        TestThreadUtils.runOnUiThreadBlocking(() -> {
-            List<TabSelectionEditorAction> actions = new ArrayList<>();
-            actions.add(TabSelectionEditorGroupAction.createAction(sActivityTestRule.getActivity(),
-                    ShowMode.IF_ROOM, ButtonType.TEXT, IconPosition.START));
-
-            mTabSelectionEditorController.configureToolbarWithMenuItems(actions, null);
-            mTabSelectionEditorController.show(tabs);
-        });
-
-        final int groupId = R.id.tab_selection_editor_group_menu_item;
-        mRobot.resultRobot.verifyToolbarActionViewDisabled(groupId);
-
-        mRobot.actionRobot.clickItemAtAdapterPosition(0)
-                .clickItemAtAdapterPosition(1)
-                .clickItemAtAdapterPosition(2)
-                .clickItemAtAdapterPosition(3)
-                .clickItemAtAdapterPosition(4);
-
-        mRobot.resultRobot.verifyToolbarActionViewEnabled(groupId).verifyToolbarSelectionText(
-                "8 tabs");
-
-        View group = mTabSelectionEditorLayout.getToolbar().findViewById(groupId);
-        assertEquals("Group 8 selected tabs", group.getContentDescription());
-        mRenderTestRule.render(mTabSelectionEditorLayout, "groups_before_undo");
-
-        mRobot.actionRobot.clickToolbarActionView(groupId);
-
-        mRobot.resultRobot.verifyTabSelectionEditorIsHidden();
-        TabUiTestHelper.verifyTabSwitcherCardCount(sActivityTestRule.getActivity(), 1);
-
-        CriteriaHelper.pollInstrumentationThread(TabUiTestHelper::verifyUndoBarShowingAndClickUndo);
-        TabUiTestHelper.verifyTabSwitcherCardCount(sActivityTestRule.getActivity(), 5);
-
-        assertEquals(selectedTab, mTabModelSelector.getCurrentTab());
-        List<Tab> finalTabs = getTabsInCurrentTabModel();
-        assertEquals(beforeTabOrder.size(), finalTabs.size());
-        assertEquals(beforeTabOrder, finalTabs);
-        List<Tab> finalRootTabs = getTabsInCurrentTabModelFilter();
-        assertEquals(tabs.size(), finalRootTabs.size());
-        assertEquals(tabs, finalRootTabs);
-    }
-
-    @Test
-    @MediumTest
     @EnableFeatures({ChromeFeatureList.TAB_SELECTION_EDITOR_V2})
     public void testToolbarMenuItem_CloseMenuItem() {
         prepareBlankTab(2, false);
diff --git a/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabListMediatorUnitTest.java b/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabListMediatorUnitTest.java
index 3c7efa17..7d989ae 100644
--- a/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabListMediatorUnitTest.java
+++ b/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabListMediatorUnitTest.java
@@ -198,19 +198,16 @@
     private static final String TAB1_TITLE = "Tab1";
     private static final String TAB2_TITLE = "Tab2";
     private static final String TAB3_TITLE = "Tab3";
-    private static final String TAB4_TITLE = "Tab4";
     private static final String NEW_TITLE = "New title";
     private static final String CUSTOMIZED_DIALOG_TITLE1 = "Cool Tabs";
     private static final String TAB_GROUP_TITLES_FILE_NAME = "tab_group_titles";
     private static final GURL TAB1_URL = JUnitTestGURLs.getGURL(JUnitTestGURLs.URL_1);
     private static final GURL TAB2_URL = JUnitTestGURLs.getGURL(JUnitTestGURLs.URL_2);
     private static final GURL TAB3_URL = JUnitTestGURLs.getGURL(JUnitTestGURLs.URL_3);
-    private static final GURL TAB4_URL = JUnitTestGURLs.getGURL(JUnitTestGURLs.RED_1);
     private static final String NEW_URL = JUnitTestGURLs.EXAMPLE_URL;
     private static final int TAB1_ID = 456;
     private static final int TAB2_ID = 789;
     private static final int TAB3_ID = 123;
-    private static final int TAB4_ID = 290;
     private static final int POSITION1 = 0;
     private static final int POSITION2 = 1;
 
@@ -1118,10 +1115,7 @@
 
         // Assume that TabGroupModelFilter is already updated.
         doReturn(mTab2).when(mTabGroupModelFilter).getTabAt(POSITION1);
-        doReturn(POSITION1).when(mTabGroupModelFilter).indexOf(mTab2);
         doReturn(mTab1).when(mTabGroupModelFilter).getTabAt(POSITION2);
-        doReturn(POSITION2).when(mTabGroupModelFilter).indexOf(mTab1);
-        doReturn(false).when(mTabGroupModelFilter).hasOtherRelatedTabs(mTab1);
         doReturn(2).when(mTabGroupModelFilter).getCount();
 
         mMediatorTabGroupModelFilterObserver.didMoveTabOutOfGroup(mTab1, POSITION1);
@@ -1650,13 +1644,9 @@
 
         // Assume undo grouping tab3 with mTab1.
         doReturn(3).when(mTabGroupModelFilter).getCount();
-        doReturn(POSITION1).when(mTabGroupModelFilter).indexOf(mTab1);
         doReturn(mTab1).when(mTabGroupModelFilter).getTabAt(POSITION1);
-        doReturn(POSITION2).when(mTabGroupModelFilter).indexOf(mTab2);
         doReturn(mTab2).when(mTabGroupModelFilter).getTabAt(POSITION2);
-        doReturn(2).when(mTabGroupModelFilter).indexOf(tab3);
         doReturn(tab3).when(mTabGroupModelFilter).getTabAt(2);
-        doReturn(false).when(mTabGroupModelFilter).hasOtherRelatedTabs(tab3);
 
         mMediatorTabGroupModelFilterObserver.didMoveTabOutOfGroup(tab3, POSITION1);
 
@@ -1676,15 +1666,11 @@
         mMediator.resetWithListOfTabs(PseudoTab.getListOfPseudoTab(tabs), false, false);
         assertThat(mModel.size(), equalTo(2));
 
-        // Assume undo grouping mTab1 from mTab2.
+        // Assume undo grouping tab3 with mTab1.
         doReturn(3).when(mTabGroupModelFilter).getCount();
         doReturn(mTab1).when(mTabGroupModelFilter).getTabAt(POSITION1);
-        doReturn(POSITION1).when(mTabGroupModelFilter).indexOf(mTab1);
         doReturn(mTab2).when(mTabGroupModelFilter).getTabAt(POSITION2);
-        doReturn(POSITION2).when(mTabGroupModelFilter).indexOf(mTab2);
         doReturn(tab3).when(mTabGroupModelFilter).getTabAt(2);
-        doReturn(2).when(mTabGroupModelFilter).indexOf(tab3);
-        doReturn(false).when(mTabGroupModelFilter).hasOtherRelatedTabs(mTab1);
 
         mMediatorTabGroupModelFilterObserver.didMoveTabOutOfGroup(mTab1, POSITION2);
 
@@ -1695,70 +1681,6 @@
     }
 
     @Test
-    public void undoForwardGrouped_BetweenGroups() {
-        setUpForTabGroupOperation(TabListMediatorType.TAB_SWITCHER, TabListMode.GRID);
-
-        // Assume there are 3 tabs in TabModel, tab3, tab4, just grouped with mTab1;
-        Tab tab3 = prepareTab(TAB3_ID, TAB3_TITLE, TAB3_URL);
-        Tab tab4 = prepareTab(TAB4_ID, TAB4_TITLE, TAB4_URL);
-        List<Tab> tabs = new ArrayList<>(Arrays.asList(mTab1));
-        mMediator.resetWithListOfTabs(PseudoTab.getListOfPseudoTab(tabs), false, false);
-        assertThat(mModel.size(), equalTo(1));
-
-        // Assume undo grouping tab3 with mTab1.
-        doReturn(2).when(mTabGroupModelFilter).getCount();
-
-        // Undo tab 3.
-        List<Tab> relatedTabs = Arrays.asList(tab3);
-        doReturn(mTab1).when(mTabGroupModelFilter).getTabAt(POSITION1);
-        doReturn(mTab1).when(mTabModel).getTabAt(0);
-        doReturn(mTab2).when(mTabModel).getTabAt(1);
-        doReturn(tab4).when(mTabModel).getTabAt(2);
-        doReturn(tab3).when(mTabModel).getTabAt(3);
-        doReturn(POSITION1).when(mTabGroupModelFilter).indexOf(mTab1);
-        doReturn(POSITION1).when(mTabGroupModelFilter).indexOf(mTab2);
-        doReturn(POSITION1).when(mTabGroupModelFilter).indexOf(tab4);
-        doReturn(0).when(mTabModel).indexOf(mTab1);
-        doReturn(1).when(mTabModel).indexOf(mTab2);
-        doReturn(2).when(mTabModel).indexOf(tab4);
-        doReturn(tab3).when(mTabGroupModelFilter).getTabAt(POSITION2);
-        doReturn(POSITION2).when(mTabGroupModelFilter).indexOf(tab3);
-        doReturn(3).when(mTabModel).indexOf(tab3);
-        doReturn(false).when(mTabGroupModelFilter).hasOtherRelatedTabs(tab3);
-        doReturn(true).when(mTabGroupModelFilter).hasOtherRelatedTabs(tab4);
-        doReturn(relatedTabs).when(mTabGroupModelFilter).getRelatedTabList(TAB3_ID);
-        mMediatorTabGroupModelFilterObserver.didMoveTabOutOfGroup(tab3, POSITION1);
-        assertThat(mModel.size(), equalTo(2));
-        assertThat(mModel.indexFromId(TAB1_ID), equalTo(0));
-        assertThat(mModel.indexFromId(TAB2_ID), equalTo(-1));
-        assertThat(mModel.indexFromId(TAB3_ID), equalTo(1));
-        assertThat(mModel.indexFromId(TAB4_ID), equalTo(-1));
-
-        // Undo tab 4
-        relatedTabs = Arrays.asList(tab3, tab4);
-        doReturn(POSITION2).when(mTabGroupModelFilter).indexOf(tab4);
-        doReturn(2).when(mTabModel).indexOf(tab3);
-        doReturn(3).when(mTabModel).indexOf(tab4);
-        doReturn(true).when(mTabGroupModelFilter).hasOtherRelatedTabs(tab3);
-        doReturn(true).when(mTabGroupModelFilter).hasOtherRelatedTabs(tab4);
-        doReturn(tab3).when(mTabGroupModelFilter).getTabAt(POSITION2);
-        doReturn(tab3).when(mTabModel).getTabAt(2);
-        doReturn(tab4).when(mTabModel).getTabAt(3);
-        doReturn(relatedTabs).when(mTabGroupModelFilter).getRelatedTabList(TAB3_ID);
-        doReturn(relatedTabs).when(mTabGroupModelFilter).getRelatedTabList(TAB4_ID);
-        mMediatorTabGroupModelFilterObserver.didMoveTabOutOfGroup(tab4, POSITION1);
-        assertThat(mModel.size(), equalTo(2));
-
-        mMediatorTabGroupModelFilterObserver.didMergeTabToGroup(tab4, TAB4_ID);
-
-        assertThat(mModel.size(), equalTo(2));
-        assertThat(mModel.indexFromId(TAB1_ID), equalTo(0));
-        assertThat(mModel.indexFromId(TAB2_ID), equalTo(-1));
-        assertThat(mModel.indexFromId(TAB3_ID), equalTo(1));
-        assertThat(mModel.indexFromId(TAB4_ID), equalTo(-1));
-    }
-
-    @Test
     public void updateSpanCount_Portrait_SingleWindow() {
         initAndAssertAllProperties();
         // Mock that we are switching to portrait mode.
diff --git a/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediatorUnitTest.java b/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediatorUnitTest.java
index c9cc32a..9f56551 100644
--- a/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediatorUnitTest.java
+++ b/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediatorUnitTest.java
@@ -21,6 +21,7 @@
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
 import static org.mockito.Mockito.verifyZeroInteractions;
 import static org.mockito.Mockito.when;
 
@@ -54,6 +55,7 @@
 import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager;
 import org.chromium.chrome.browser.flags.ChromeFeatureList;
 import org.chromium.chrome.browser.incognito.reauth.IncognitoReauthController;
+import org.chromium.chrome.browser.incognito.reauth.IncognitoReauthManager;
 import org.chromium.chrome.browser.multiwindow.MultiWindowModeStateDispatcher;
 import org.chromium.chrome.browser.tab.Tab;
 import org.chromium.chrome.browser.tab.TabSelectionType;
@@ -156,6 +158,9 @@
     @Captor
     ArgumentCaptor<MultiWindowModeStateDispatcher.MultiWindowModeObserver>
             mMultiWindowModeObserverCaptor;
+    @Captor
+    private ArgumentCaptor<IncognitoReauthManager.IncognitoReauthCallback>
+            mIncognitoReauthCallbackArgumentCaptor;
 
     private Tab mTab1;
     private Tab mTab2;
@@ -222,7 +227,9 @@
         doReturn(new ObservableSupplierImpl<Boolean>())
                 .when(mTabGridDialogController)
                 .getHandleBackPressChangedSupplier();
+        when(mIncognitoReauthController.isIncognitoReauthPending()).thenReturn(false);
         mIncognitoReauthControllerSupplier.set(mIncognitoReauthController);
+
         mModel = new PropertyModel(TabListContainerProperties.ALL_KEYS);
         mModel.addObserver(mPropertyObserver);
         mMediator = new TabSwitcherMediator(mContext, mResetHandler, mModel, mTabModelSelector,
@@ -233,6 +240,8 @@
         mMediator.initWithNative(controller, null);
         mMediator.addTabSwitcherViewObserver(mTabSwitcherViewObserver);
         mMediator.setOnTabSelectingListener(mLayout::onTabSelecting);
+        verify(mIncognitoReauthController, times(1))
+                .addIncognitoReauthCallback(mIncognitoReauthCallbackArgumentCaptor.capture());
     }
 
     @Test
@@ -943,6 +952,47 @@
         Assert.assertTrue(mMediator.shouldInterceptBackPress());
     }
 
+    @Test
+    public void testOnTabModelSelected_NewModelIncognito_ReauthPending_ClearsTabList() {
+        initAndAssertAllProperties();
+        mModel.set(TabListContainerProperties.IS_VISIBLE, true);
+        doReturn(true).when(mTabModelFilter).isIncognito();
+        doReturn(true).when(mTabModelSelector).isIncognitoSelected();
+        doReturn(true).when(mTabModelSelector).isTabStateInitialized();
+        doReturn(true).when(mIncognitoReauthController).isIncognitoReauthPending();
+        doReturn(true).when(mTabModel).isIncognito();
+
+        mTabModelSelectorObserverCaptor.getValue().onTabModelSelected(mTabModel, null);
+        verify(mResetHandler, times(1)).resetWithTabList(eq(null), eq(false), eq(false));
+    }
+
+    @Test
+    public void testOnTabModelSelected_NewModelIncognito_ReauthSuccessful_RestoresTabList() {
+        initAndAssertAllProperties();
+        mModel.set(TabListContainerProperties.IS_VISIBLE, true);
+        doReturn(true).when(mTabModelFilter).isIncognito();
+        doReturn(true).when(mTabModelSelector).isIncognitoSelected();
+        doReturn(true).when(mTabModelSelector).isTabStateInitialized();
+        doReturn(true).when(mIncognitoReauthController).isIncognitoReauthPending();
+        doReturn(true).when(mTabModel).isIncognito();
+
+        mTabModelSelectorObserverCaptor.getValue().onTabModelSelected(mTabModel, null);
+        verify(mResetHandler, times(1)).resetWithTabList(eq(null), eq(false), eq(false));
+
+        // Mock that the re-auth was successful.
+        doReturn(false).when(mIncognitoReauthController).isIncognitoReauthPending();
+        mIncognitoReauthCallbackArgumentCaptor.getValue().onIncognitoReauthSuccess();
+
+        // Verify we reset the tab-list with the current tab model filter.
+        verify(mResetHandler, times(1)).resetWithTabList(eq(mTabModelFilter), eq(false), eq(false));
+
+        // Check we don't call reset handler on other cases
+        mIncognitoReauthCallbackArgumentCaptor.getValue().onIncognitoReauthNotPossible();
+        mIncognitoReauthCallbackArgumentCaptor.getValue().onIncognitoReauthFailure();
+        // Verify we don't reset the tab-list with the current tab model filter again.
+        verifyNoMoreInteractions(mResetHandler);
+    }
+
     private void initAndAssertAllProperties() {
         assertThat(mModel.get(TabListContainerProperties.VISIBILITY_LISTENER),
                 instanceOf(TabSwitcherMediator.class));
diff --git a/chrome/android/features/tab_ui/public/android/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherCustomViewManager.java b/chrome/android/features/tab_ui/public/android/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherCustomViewManager.java
index de41b75..980fba4 100644
--- a/chrome/android/features/tab_ui/public/android/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherCustomViewManager.java
+++ b/chrome/android/features/tab_ui/public/android/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherCustomViewManager.java
@@ -11,10 +11,6 @@
 
 /**
  * A class that supplies custom view to TabSwitcher from other non tab switcher clients.
- *
- * TODO(crbug.com/1227656): This manager is only used by the re-auth client and once the re-auth
- * integration with tab-switcher design is further improved then remove this if no other clients
- * use this.
  */
 public class TabSwitcherCustomViewManager {
     /**
diff --git a/chrome/android/java/res/layout/incognito_description_layout.xml b/chrome/android/java/res/layout/incognito_description_layout.xml
index ce973d9..e54e0bf 100644
--- a/chrome/android/java/res/layout/incognito_description_layout.xml
+++ b/chrome/android/java/res/layout/incognito_description_layout.xml
@@ -98,6 +98,7 @@
             android:layout_centerVertical="true"
             android:theme="@style/SwitchMaterialDark"
             android:layout_alignParentEnd="true"
+            android:contentDescription="@string/new_tab_otr_third_party_cookie"
             app:showText="false" />
 
         <org.chromium.ui.widget.TextViewWithLeading
diff --git a/chrome/android/java/res/layout/revamped_incognito_description_layout.xml b/chrome/android/java/res/layout/revamped_incognito_description_layout.xml
index e10b138b..b34c5b3 100644
--- a/chrome/android/java/res/layout/revamped_incognito_description_layout.xml
+++ b/chrome/android/java/res/layout/revamped_incognito_description_layout.xml
@@ -125,6 +125,7 @@
                 android:layout_centerVertical="true"
                 android:theme="@style/SwitchMaterialDark"
                 android:layout_alignParentEnd="true"
+                android:contentDescription="@string/revamped_incognito_ntp_otr_third_party_cookie"
                 app:showText="false" />
 
             <org.chromium.ui.widget.TextViewWithLeading
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/PartialCustomTabHeightStrategy.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/PartialCustomTabHeightStrategy.java
index 8459811..1884995 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/PartialCustomTabHeightStrategy.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/PartialCustomTabHeightStrategy.java
@@ -47,7 +47,6 @@
 import androidx.core.view.WindowInsetsControllerCompat;
 import androidx.swiperefreshlayout.widget.CircularProgressDrawable;
 
-import org.chromium.base.Consumer;
 import org.chromium.base.ContextUtils;
 import org.chromium.base.MathUtils;
 import org.chromium.base.SysUtils;
@@ -172,10 +171,6 @@
     private int mDraggingStartY;
     private float mOffsetY;
 
-    // Method to invoke to animate the tab. Animates by altering top y position by default,
-    // but using height for the close animation.
-    private Consumer<Integer> mTabAnimator = this::updateWindowPos;
-
     // These values are persisted to logs. Entries should not be renumbered and
     // numeric values should never be reused.
     // This should be kept in sync with the definition |CustomTabsResizeType|
@@ -402,7 +397,7 @@
     @Override
     public void onAnimationUpdate(ValueAnimator valueAnimator) {
         int value = (int) valueAnimator.getAnimatedValue();
-        mTabAnimator.accept(value);
+        updateWindowPos(value);
     }
 
     private void roundCorners(
@@ -670,13 +665,6 @@
         }
     }
 
-    private void updateWindowHeight(int height) {
-        Window window = mActivity.getWindow();
-        WindowManager.LayoutParams attrs = window.getAttributes();
-        attrs.height = height;
-        window.setAttributes(attrs);
-    }
-
     private boolean isSpinnerVisible() {
         return mSpinnerView != null && mSpinnerView.getVisibility() == View.VISIBLE;
     }
@@ -991,21 +979,16 @@
         if (mFinishRunnable != null) return;
 
         mFinishRunnable = finishRunnable;
-        WindowManager.LayoutParams attrs = mActivity.getWindow().getAttributes();
-        if (attrs.gravity == Gravity.BOTTOM) {
-            // Animate height for the tab at rest.
-            mTabAnimator = this::updateWindowHeight;
-            mAnimator.setIntValues(attrs.height, 0);
-        } else {
-            if (isFullHeight()) {
-                attrs.gravity = Gravity.BOTTOM;
-                mActivity.getWindow().setAttributes(attrs);
-                mTabAnimator = this::updateWindowHeight;
-                mAnimator.setIntValues(mDisplayHeight - mNavbarHeight, 0);
-            } else {
-                mAnimator.setIntValues(attrs.y, mDisplayHeight - mNavbarHeight);
-            }
+        Window window = mActivity.getWindow();
+        WindowManager.LayoutParams attrs = window.getAttributes();
+        if (attrs.gravity == Gravity.BOTTOM || isFullHeight()) {
+            window.addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
+            attrs.y = isFullHeight() ? getFullyExpandedY()
+                                     : mDisplayHeight - attrs.height - mNavbarHeight;
+            attrs.gravity = Gravity.TOP; // NO_GRAVITY doesn't work here.
+            window.setAttributes(attrs);
         }
+        mAnimator.setIntValues(attrs.y, mDisplayHeight - mNavbarHeight);
         mAnimator.setDuration(
                 mActivity.getResources().getInteger(android.R.integer.config_mediumAnimTime));
         mAnimator.setInterpolator(new AccelerateInterpolator());
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivityLocationBarLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivityLocationBarLayout.java
index c8efe74..70ed0271 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivityLocationBarLayout.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivityLocationBarLayout.java
@@ -73,6 +73,10 @@
             }
         }
         setBackground(backgroundDrawable);
+
+        // Expand status view's left and right space to match the expanded interface on the regular
+        // omnibox.
+        setUrlFocusChangePercent(1f);
     }
 
     @Override
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchBoxDataProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchBoxDataProvider.java
index ce29c24..0f7185bd 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchBoxDataProvider.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchBoxDataProvider.java
@@ -126,7 +126,7 @@
     }
 
     @Override
-    public int getPageClassification(boolean isFocusedFromFakebox) {
+    public int getPageClassification(boolean isFocusedFromFakebox, boolean isPrefetch) {
         if (mIsFromQuickActionSearchWidget) {
             return PageClassification.ANDROID_SHORTCUTS_WIDGET_VALUE;
         } else {
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/suggestions/mostvisited/MostVisitedTilesTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/suggestions/mostvisited/MostVisitedTilesTest.java
index 75afdeb..a1cf1c4 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/suggestions/mostvisited/MostVisitedTilesTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/suggestions/mostvisited/MostVisitedTilesTest.java
@@ -57,6 +57,7 @@
 import org.chromium.components.omnibox.AutocompleteMatch.SuggestTile;
 import org.chromium.components.omnibox.AutocompleteMatchBuilder;
 import org.chromium.components.omnibox.AutocompleteResult;
+import org.chromium.components.omnibox.GroupsProto.GroupConfig;
 import org.chromium.content_public.browser.test.util.TestThreadUtils;
 import org.chromium.net.test.EmbeddedTestServer;
 import org.chromium.ui.modaldialog.ModalDialogManager;
@@ -191,7 +192,7 @@
         builder.reset();
 
         autocompleteResult.getGroupsDetails().put(
-                1, new AutocompleteResult.GroupDetails("See also", false));
+                1, GroupConfig.newBuilder().setHeaderText("See also").build());
 
         doAnswer(invocation -> {
             mListener.getValue().onSuggestionsReceived(autocompleteResult, mStartUrl, true);
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/voice/RecognitionTestHelper.java b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/voice/RecognitionTestHelper.java
index cb7e2fa7..6827788 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/voice/RecognitionTestHelper.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/voice/RecognitionTestHelper.java
@@ -557,7 +557,7 @@
         }
 
         @Override
-        public int getPageClassification(boolean isFocusedFromFakebox) {
+        public int getPageClassification(boolean isFocusedFromFakebox, boolean isPrefetch) {
             return PageClassification.NTP_VALUE;
         }
 
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/payments/PaymentRequestIdTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/payments/PaymentRequestIdTest.java
deleted file mode 100644
index 834162e9..0000000
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/payments/PaymentRequestIdTest.java
+++ /dev/null
@@ -1,67 +0,0 @@
-// Copyright 2017 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package org.chromium.chrome.browser.payments;
-
-import androidx.test.filters.MediumTest;
-
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import org.chromium.base.test.util.CommandLineFlags;
-import org.chromium.base.test.util.Feature;
-import org.chromium.base.test.util.FlakyTest;
-import org.chromium.chrome.R;
-import org.chromium.chrome.browser.autofill.AutofillTestHelper;
-import org.chromium.chrome.browser.autofill.PersonalDataManager.AutofillProfile;
-import org.chromium.chrome.browser.autofill.PersonalDataManager.CreditCard;
-import org.chromium.chrome.browser.flags.ChromeSwitches;
-import org.chromium.chrome.browser.payments.PaymentRequestTestRule.MainActivityStartCallback;
-import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
-import org.chromium.ui.modaldialog.ModalDialogProperties;
-
-import java.util.concurrent.TimeoutException;
-
-/**
- * A payment integration test for verifying the PaymentResponse contains the
- * free-form identifier specified in PaymentDetailsInit.
- */
-@RunWith(ChromeJUnit4ClassRunner.class)
-@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE})
-public class PaymentRequestIdTest implements MainActivityStartCallback {
-    @Rule
-    public PaymentRequestTestRule mPaymentRequestTestRule =
-            new PaymentRequestTestRule("payment_request_id_test.html", this);
-
-    @Override
-    public void onMainActivityStarted() throws TimeoutException {
-        AutofillTestHelper helper = new AutofillTestHelper();
-        String billingAddressId = helper.setProfile(new AutofillProfile("", "https://example.com",
-                true, "" /* honorific prefix */, "Jon Doe", "Google", "340 Main St", "CA",
-                "Los Angeles", "", "90291", "", "US", "555-555-5555", "", "en-US"));
-        helper.setCreditCard(new CreditCard("", "https://example.com", true, true, "Jon Doe",
-                "4111111111111111", "1111", "12", "2050", "visa", R.drawable.visa_card,
-                billingAddressId, "" /* serverId */));
-    }
-
-    /**
-     * Submit the payment information without shipping address or shipping options to the merchant
-     * when the user clicks "Pay."
-     */
-    @Test
-    @MediumTest
-    @FlakyTest(message = "crbug.com/1182234")
-    @Feature({"Payments"})
-    public void testPaymentResponse() throws TimeoutException {
-        mPaymentRequestTestRule.triggerUIAndWait(mPaymentRequestTestRule.getReadyToPay());
-        mPaymentRequestTestRule.clickAndWait(
-                R.id.button_primary, mPaymentRequestTestRule.getReadyForUnmaskInput());
-        mPaymentRequestTestRule.setTextInCardUnmaskDialogAndWait(
-                R.id.card_unmask_input, "123", mPaymentRequestTestRule.getReadyToUnmask());
-        mPaymentRequestTestRule.clickCardUnmaskButtonAndWait(
-                ModalDialogProperties.ButtonType.POSITIVE, mPaymentRequestTestRule.getDismissed());
-        mPaymentRequestTestRule.expectResultContains(new String[] {"my_payment_id"});
-    }
-}
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchContextTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchContextTest.java
index 3fa0951..174a471 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchContextTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchContextTest.java
@@ -19,17 +19,17 @@
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.junit.runners.BlockJUnit4ClassRunner;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
+import org.chromium.base.test.BaseRobolectricTestRunner;
 import org.chromium.base.test.util.Feature;
 import org.chromium.base.test.util.JniMocker;
 
 /**
  * Tests parts of the ContextualSearchContext class.
  */
-@RunWith(BlockJUnit4ClassRunner.class)
+@RunWith(BaseRobolectricTestRunner.class)
 public class ContextualSearchContextTest {
     private static final int INVALID = ContextualSearchContext.INVALID_OFFSET;
     private static final String UTF_8 = "UTF-8";
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchTranslationImplTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchTranslationImplTest.java
index bc28bff..445483b 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchTranslationImplTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchTranslationImplTest.java
@@ -16,10 +16,10 @@
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.junit.runners.BlockJUnit4ClassRunner;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
+import org.chromium.base.test.BaseRobolectricTestRunner;
 import org.chromium.base.test.util.Feature;
 import org.chromium.chrome.browser.contextualsearch.ContextualSearchTranslationImpl.TranslateBridgeWrapper;
 
@@ -28,7 +28,7 @@
 /**
  * Tests the {@link ContextualSearchTranslationImpl} class.
  */
-@RunWith(BlockJUnit4ClassRunner.class)
+@RunWith(BaseRobolectricTestRunner.class)
 public class ContextualSearchTranslationImplTest {
     private static final String ENGLISH = "en";
     private static final String SPANISH = "es";
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CloseButtonNavigatorTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CloseButtonNavigatorTest.java
index 0fbf0b9..2588b652 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CloseButtonNavigatorTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/customtabs/CloseButtonNavigatorTest.java
@@ -4,8 +4,7 @@
 
 package org.chromium.chrome.browser.customtabs;
 
-import static junit.framework.Assert.assertEquals;
-
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.ArgumentMatchers.anyInt;
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebApkIconNameUpdateDialogTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebApkIconNameUpdateDialogTest.java
index 0db7ee3..e92b6595 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebApkIconNameUpdateDialogTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/webapps/WebApkIconNameUpdateDialogTest.java
@@ -27,6 +27,7 @@
 import org.chromium.base.test.BaseRobolectricTestRunner;
 import org.chromium.base.test.util.CallbackHelper;
 import org.chromium.base.test.util.Feature;
+import org.chromium.chrome.R;
 import org.chromium.ui.modaldialog.DialogDismissalCause;
 import org.chromium.ui.modaldialog.ModalDialogManager;
 import org.chromium.ui.modaldialog.ModalDialogProperties;
diff --git a/chrome/android/profiles/newest.txt b/chrome/android/profiles/newest.txt
index edec61e..b11b5ad4 100644
--- a/chrome/android/profiles/newest.txt
+++ b/chrome/android/profiles/newest.txt
@@ -1 +1 @@
-chromeos-chrome-amd64-108.0.5338.0_rc-r2-merged.afdo.bz2
+chromeos-chrome-amd64-108.0.5344.0_rc-r1-merged.afdo.bz2
diff --git a/chrome/app/chromeos_strings.grdp b/chrome/app/chromeos_strings.grdp
index 056ec41..b48bb86 100644
--- a/chrome/app/chromeos_strings.grdp
+++ b/chrome/app/chromeos_strings.grdp
@@ -701,78 +701,12 @@
   </message>
 
   <!-- Strings for the Bluetooth pairing dialog -->
-  <message name="IDS_BLUETOOTH_PAIRING_CONNECT_WRITE_NOT_PERMITTED" desc="Bluetooth pairing dialog: Error message displayed when write operation is not permitted on Bluetooth device.">
-    Write operation is not permitted on: "<ph name="DEVICE_NAME">$1<ex>Nexus 4</ex></ph>".
-  </message>
-  <message name="IDS_BLUETOOTH_PAIRING_CONNECT_UNSUPPORTED_DEVICE" desc="Bluetooth pairing dialog: Error message displayed when Bluetooth device is not supported.">
-    Unsupported Bluetooth device: "<ph name="DEVICE_NAME">$1<ex>Nexus 4</ex></ph>".
-  </message>
-  <message name="IDS_BLUETOOTH_PAIRING_CONNECT_REQUEST_NOT_SUPPORTED" desc="Bluetooth pairing dialog: Error message displayed when Bluetooth pair request is not supported.">
-    The given request is not supported to: "<ph name="DEVICE_NAME">$1<ex>Nexus 4</ex></ph>".
-  </message>
-  <message name="IDS_BLUETOOTH_PAIRING_CONNECT_READ_NOT_PERMITTED" desc="Bluetooth pairing dialog: Error message displayed when read operation is not permitted on pairing Bluetooth device.">
-    Read operation is not permitted on: "<ph name="DEVICE_NAME">$1<ex>Nexus 4</ex></ph>".
-  </message>
-  <message name="IDS_BLUETOOTH_PAIRING_CONNECT_OFFSET_INVALID" desc="Bluetooth pairing dialog: Error message displayed during pairing operation when read or write has an invalid offset.">
-    Read or write operation was requested with an invalid offset on: "<ph name="DEVICE_NAME">$1<ex>Nexus 4</ex></ph>".
-  </message>
-  <message name="IDS_BLUETOOTH_PAIRING_CONNECT_INSUFFICIENT_ENCRYPTION" desc="Bluetooth pairing dialog: Error message displayed during Bluetooth pairing when operation is not sufficiently encrypted.">
-    Insufficient encryption for a given operation on: "<ph name="DEVICE_NAME">$1<ex>Nexus 4</ex></ph>".
-  </message>
-  <message name="IDS_BLUETOOTH_PAIRING_CONNECT_IN_PROGRESS" desc="Bluetooth pairing dialog: Message informing that current Bluetooth device is still being connected to.">
-    Connection to "<ph name="DEVICE_NAME">$1<ex>Nexus 4</ex></ph>" still in progress
-  </message>
-  <message name="IDS_BLUETOOTH_PAIRING_CONNECT_FAILED" desc="Bluetooth pairing dialog: Error message informing that connection to Bluetooth device failed.">
-    Failed to connect to "<ph name="DEVICE_NAME">$1<ex>Nexus S</ex></ph>".
-  </message>
-  <message name="IDS_BLUETOOTH_PAIRING_CONNECT_CONNECTION_CONGESTED" desc="Bluetooth pairing dialog: Error message informing that connection to Bluetooth device is congested.">
-    Connection is congested to remote device: "<ph name="DEVICE_NAME">$1<ex>Nexus 4</ex></ph>".
-  </message>
-  <message name="IDS_BLUETOOTH_PAIRING_CONNECT_AUTH_TIMEOUT" desc="Bluetooth pairing dialog: Error message informing that Bluetooth authentication connection timed out.">
-    Authentication timeout while connecting to "<ph name="DEVICE_NAME">$1<ex>Nexus 4</ex></ph>".
-  </message>
-  <message name="IDS_BLUETOOTH_PAIRING_CONNECT_AUTH_REJECTED" desc="Bluetooth pairing dialog: Error message informing that Bluetooth authentication code was rejected while connecting to a Bluetooth device.">
-    Authentication code rejected while connecting to "<ph name="DEVICE_NAME">$1<ex>Nexus 4</ex></ph>".
-  </message>
-  <message name="IDS_BLUETOOTH_PAIRING_CONNECT_AUTH_FAILED" desc="Bluetooth pairing dialog: Error message informing that authentication failed while trying to connect to Bluetooth device">
-    Authentication failed while connecting to "<ph name="DEVICE_NAME">$1<ex>Nexus 4</ex></ph>".
-  </message>
-  <message name="IDS_BLUETOOTH_PAIRING_CONNECT_AUTH_CANCELED" desc="Bluetooth pairing dialog: Error message informing that authentication was canceled while connecting a Bluetooth device.">
-    Authentication canceled while connecting to "<ph name="DEVICE_NAME">$1<ex>Nexus 4</ex></ph>".
-  </message>
-  <message name="IDS_BLUETOOTH_PAIRING_CONNECT_ATTRIBUTE_LENGTH_INVALID" desc="Bluetooth pairing dialog: Error message informing that write operations exceeds the maximum length of attribute to a Bluetooth device.">
-    Write operation exceeds the maximum length of the attribute to: "<ph name="DEVICE_NAME">$1<ex>Nexus 4</ex></ph>".
-  </message>
-  <message name="IDS_BLUETOOTH_PAIRING_CONFIRM_PASSKEY" desc="Bluetooth pairing dialog: Bluetooth pairing message typically shown when pairing with a device that has a display.">
-    Please confirm this passkey is shown on "<ph name="DEVICE_NAME">$1<ex>Nexus S</ex></ph>":
-  </message>
-  <message name="IDS_BLUETOOTH_PAIRING_DISPLAY_PASSKEY" desc="Bluetooth pairing dialog: Bluetooth pairing message typically displayed when pairing a Bluetooth 2.1 and later wireless keyboard.">
-    Please enter this passkey on "<ph name="DEVICE_NAME">$1<ex>Nexus S</ex></ph>":
-  </message>
-  <message name="IDS_BLUETOOTH_PAIRING_REQUEST_PASSKEY" desc="Bluetooth pairing dialog: Bluetooth pairing message typically displayed when the external Bluetooth 2.1 and later device has no display or means of input, and does not support SSP.">
-    Please enter the passkey for "<ph name="DEVICE_NAME">$1<ex>Nexus S</ex></ph>":
-  </message>
-  <message name="IDS_BLUETOOTH_PAIRING_DISPLAY_PINCODE" desc="Bluetooth pairing dialog: Bluetooth pairing message typically displayed when pairing a Bluetooth 2.0 and older wireless keyboard.">
-    Please enter this PIN code on "<ph name="DEVICE_NAME">$1<ex>Nexus S</ex></ph>":
-  </message>
-  <message name="IDS_BLUETOOTH_PAIRING_REQUEST_PINCODE" desc="Bluetooth pairing dialog: Bluetooth pairing message typically displayed when the external Bluetooth 2.0 and older device has no display or means of input.">
-    Please enter the PIN for "<ph name="DEVICE_NAME">$1<ex>Nexus S</ex></ph>":
-  </message>
-  <message name="IDS_BLUETOOTH_PAIRING_START_CONNECTING">
-    Connecting to "<ph name="DEVICE_NAME">$1<ex>Nexus S</ex></ph>"
-  </message>
-  <message name="IDS_BLUETOOTH_PAIRING_REJECT_PASSKEY" desc="Bluetooth pairing dialog: Text for button to reject pairing a device.">
-    Reject
-  </message>
   <message name="IDS_BLUETOOTH_PAIRING_PAIR" desc="Label for the settings button to pair a previously paired Bluetooth device.">
     Pair
   </message>
   <message name="IDS_BLUETOOTH_PAIRING_ENTER_KEY" desc="Bluetooth pairing dialog: Text for enter key when pairing keyboard devices." >
     enter
   </message>
-  <message name="IDS_BLUETOOTH_PAIRING_ACCEPT_PASSKEY" desc="Bluetooth pairing dialog: Text for button to accept pairing code.">
-    Accept
-  </message>
   <message name="IDS_BLUETOOTH_PAIRING_PAIR_NEW_DEVICES" desc="Message displayed describing how to pair a new Bluetooth device.">
     Pair new device
   </message>
diff --git a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_DEVICE_ITEM_RIGHT_BUD_TRUE_WIRELESS_BATTERY_PERCENTAGE.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_DEVICE_ITEM_RIGHT_BUD_TRUE_WIRELESS_BATTERY_PERCENTAGE.png.sha1
deleted file mode 100644
index f2f6553..0000000
--- a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_DEVICE_ITEM_RIGHT_BUD_TRUE_WIRELESS_BATTERY_PERCENTAGE.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-1dd9ab5b24e85b8212b656c8c090a3b4b6f56b78
\ No newline at end of file
diff --git a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_ACCEPT_PASSKEY.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_ACCEPT_PASSKEY.png.sha1
deleted file mode 100644
index fde0b1c..0000000
--- a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_ACCEPT_PASSKEY.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-3022c6d8528a924120a92681b9850622d4edd634
\ No newline at end of file
diff --git a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONFIRM_PASSKEY.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONFIRM_PASSKEY.png.sha1
deleted file mode 100644
index 18a2fab6..0000000
--- a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONFIRM_PASSKEY.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-a095d897e9a411510c5b9ad9de81b58cb07ffbe2
\ No newline at end of file
diff --git a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_ATTRIBUTE_LENGTH_INVALID.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_ATTRIBUTE_LENGTH_INVALID.png.sha1
deleted file mode 100644
index d6fc716f..0000000
--- a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_ATTRIBUTE_LENGTH_INVALID.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-9a0e123ddc7d125915a8a1f19032ea9c2c79e10f
\ No newline at end of file
diff --git a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_AUTH_CANCELED.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_AUTH_CANCELED.png.sha1
deleted file mode 100644
index 8385b769..0000000
--- a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_AUTH_CANCELED.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-75d10b3e92e19be33561d207c37379c6301b3314
\ No newline at end of file
diff --git a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_AUTH_FAILED.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_AUTH_FAILED.png.sha1
deleted file mode 100644
index 496050d..0000000
--- a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_AUTH_FAILED.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-3fbeb01c139d5c1d9221a24074bc4788aa2dbcb5
\ No newline at end of file
diff --git a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_AUTH_REJECTED.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_AUTH_REJECTED.png.sha1
deleted file mode 100644
index 1ba2407e..0000000
--- a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_AUTH_REJECTED.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-a6fee2de1db7e890bbef30c9489a30aa7c3b48d9
\ No newline at end of file
diff --git a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_AUTH_TIMEOUT.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_AUTH_TIMEOUT.png.sha1
deleted file mode 100644
index f10bc3af..0000000
--- a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_AUTH_TIMEOUT.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-4b6e0273f4bc179db33877930ff29b8d6d05d399
\ No newline at end of file
diff --git a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_CONNECTION_CONGESTED.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_CONNECTION_CONGESTED.png.sha1
deleted file mode 100644
index 1a7a5b3..0000000
--- a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_CONNECTION_CONGESTED.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-9ded4494e33bb7ca2aeada0f75b795f54826b682
\ No newline at end of file
diff --git a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_FAILED.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_FAILED.png.sha1
deleted file mode 100644
index 72aab92..0000000
--- a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_FAILED.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-dddfdfb339796d906b948855e98542d267b4bd1e
\ No newline at end of file
diff --git a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_INSUFFICIENT_ENCRYPTION.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_INSUFFICIENT_ENCRYPTION.png.sha1
deleted file mode 100644
index 0dbd6a63..0000000
--- a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_INSUFFICIENT_ENCRYPTION.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-12df95e1cbf659fd385c94555fbb590d63ac122a
\ No newline at end of file
diff --git a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_IN_PROGRESS.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_IN_PROGRESS.png.sha1
deleted file mode 100644
index 5e258c3c..0000000
--- a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_IN_PROGRESS.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-2896dd4fcf62518d03dcb02b6ac7d0fcaf8ff90f
\ No newline at end of file
diff --git a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_OFFSET_INVALID.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_OFFSET_INVALID.png.sha1
deleted file mode 100644
index b626d43..0000000
--- a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_OFFSET_INVALID.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-ca386eb9abdb42fb85d83848aa3cac04bcaca20a
\ No newline at end of file
diff --git a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_READ_NOT_PERMITTED.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_READ_NOT_PERMITTED.png.sha1
deleted file mode 100644
index 67c10bb7..0000000
--- a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_READ_NOT_PERMITTED.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-1c6717b3ca8b6c5749f5ab699652f86a175f2703
\ No newline at end of file
diff --git a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_REQUEST_NOT_SUPPORTED.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_REQUEST_NOT_SUPPORTED.png.sha1
deleted file mode 100644
index f644465..0000000
--- a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_REQUEST_NOT_SUPPORTED.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-82db4892c9be3785b411d81841c0d9a768665d79
\ No newline at end of file
diff --git a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_UNSUPPORTED_DEVICE.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_UNSUPPORTED_DEVICE.png.sha1
deleted file mode 100644
index a0bd0db..0000000
--- a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_UNSUPPORTED_DEVICE.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-2c3d735e8b0abc8a15c6a66f2c27011a3f8bb6bf
\ No newline at end of file
diff --git a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_WRITE_NOT_PERMITTED.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_WRITE_NOT_PERMITTED.png.sha1
deleted file mode 100644
index b7420f3..0000000
--- a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_CONNECT_WRITE_NOT_PERMITTED.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-8f1b80299420c54a4c66614657abcaeb8cb5378c
\ No newline at end of file
diff --git a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_DISPLAY_PASSKEY.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_DISPLAY_PASSKEY.png.sha1
deleted file mode 100644
index 9cfbf544..0000000
--- a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_DISPLAY_PASSKEY.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-e9eaf537aab9befc8ba16fd6de25b72c22d4f1b8
\ No newline at end of file
diff --git a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_DISPLAY_PINCODE.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_DISPLAY_PINCODE.png.sha1
deleted file mode 100644
index e0da34fd..0000000
--- a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_DISPLAY_PINCODE.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-a17c14b76219df0de7323e5a3838435e72e69ea7
\ No newline at end of file
diff --git a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_REJECT_PASSKEY.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_REJECT_PASSKEY.png.sha1
deleted file mode 100644
index fde0b1c..0000000
--- a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_REJECT_PASSKEY.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-3022c6d8528a924120a92681b9850622d4edd634
\ No newline at end of file
diff --git a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_REQUEST_PASSKEY.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_REQUEST_PASSKEY.png.sha1
deleted file mode 100644
index 5ad7cc28..0000000
--- a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_REQUEST_PASSKEY.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-1676005aa82e887edd1380705f35267685c16d06
\ No newline at end of file
diff --git a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_REQUEST_PINCODE.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_REQUEST_PINCODE.png.sha1
deleted file mode 100644
index d2cb4ee..0000000
--- a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_REQUEST_PINCODE.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-0afd01bb3cc7cae29c6230188d05e43195df65b1
\ No newline at end of file
diff --git a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_START_CONNECTING.png.sha1 b/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_START_CONNECTING.png.sha1
deleted file mode 100644
index 8e55abb..0000000
--- a/chrome/app/chromeos_strings_grdp/IDS_BLUETOOTH_PAIRING_START_CONNECTING.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-a24fbeea37a04c26b36fbfc1f8c675a50ad72863
\ No newline at end of file
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
index dbeb1dc..059fe0a0 100644
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -7276,6 +7276,27 @@
       <message name="IDS_TOOLTIP_LENS_SEARCH" desc="The tooltip for search-by-image button">
         Search by image
       </message>
+      <message name="IDS_LENS_SEARCH_UPLOAD_DIALOG_CLOSE_BUTTON_LABEL" desc="Aria label for the button to close the upload dialog.">
+        Close
+      </message>
+      <message name="IDS_LENS_SEARCH_UPLOAD_DIALOG_TITLE" desc="Title on dialog to upload an image to Google Lens.">
+        Search any image with Google Lens
+      </message>
+      <message name="IDS_LENS_SEARCH_UPLOAD_DIALOG_DRAG_TITLE" desc="Message to user on drop zone where they can drag-and-drop an image to search.">
+        Drag an image here or
+      </message>
+      <message name="IDS_LENS_SEARCH_UPLOAD_DIALOG_UPLOAD_FILE_TITLE" desc="Message to user on drop zone where they can drag-and-drop an image to search.">
+        upload a file
+      </message>
+      <message name="IDS_LENS_SEARCH_UPLOAD_DIALOG_OR_TEXT" desc="Message to user on drop zone where they can select a file to search.">
+        or
+      </message>
+      <message name="IDS_LENS_SEARCH_UPLOAD_DIALOG_TEXT_PLACEHOLDER" desc="Label on the input box for Lens search URL upload.">
+        Paste image link
+      </message>
+      <message name="IDS_LENS_SEARCH_UPLOAD_DIALOG_SEARCH_BUTTON_LABEL" desc="Label for button which allows the user to submit URL for upload.">
+        Search
+      </message>
       <message name="IDS_TOOLTIP_SAVE_CREDIT_CARD" desc="The tooltip for the icon that shows the save credit card bubble">
         Save card
       </message>
@@ -9468,10 +9489,80 @@
       </message>
 
       <!-- Page specific site data dialog (redesign of Collected cookies window) -->
+      <message name="IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_TITLE" desc="The title of `Cookies and site data` dialog (previously 'Cookies in use' dialog). The dialog contains a list of sites that have access to storage or are blocked from accessing it. It also has controls for each site to allow access, block access or allow access for a session only.">
+        Cookies and site data
+      </message>
+
+      <message name="IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_FIRST_PARTY_TITLE" desc="This is a title of a section that displayed a list of sites that have accessed storage and are considered first-party to the site the user is currently visiting. The label is shown in the `Cookies and site data` dialog.">
+        From the site you’re viewing
+      </message>
+
+      <message name="IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_FIRST_PARTY_SUBTITLE" desc="This is a subtitle of a section that displayed a list of sites that have accessed storage and are considered first-party to the site the user is currently visiting. It provides more information about what first party sites means. The label is shown in the `Cookies and site data` dialog.">
+        Including sites from the same domain, for example, google.com and mail.google.com. Sites you’re viewing can save data on your device.
+      </message>
+
+      <message name="IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_THIRD_PARTY_TITLE" desc="This is a title of a section that displayed a list of sites that have accessed storage and are considered third-party to the site the user is currently visiting. The label is shown in the `Cookies and site data` dialog.">
+        From other sites
+      </message>
+
+      <message name="IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_THIRD_PARTY_SUBTITLE" desc="This is a subtitle of a section that displayed a list of sites that have accessed storage and are considered third-party to the site the user is currently visiting. It provides more information about what third party sites means. The label is shown in the `Cookies and site data` dialog.">
+        A site you’re viewing can embed content from other sites, for example images, ads, and text. These embedded sites can save data on your device.
+      </message>
+
       <message name="IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_EMPTY_STATE_LABEL" desc="The text used to explain to users that there are no cookies set and that this is the place where they will be shown. The label is shown in the `Cookies and site data` dialog.">
         If a site uses cookies, it will appear here
       </message>
 
+      <message name="IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_ALLOW_MENU_ITEM"
+          desc="The name of a menu item that allows storage access (creates an allow exception) for a site. The menu item is shown in the `Cookies and site data` dialog.">
+        Allow to save data
+      </message>
+
+      <message name="IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_BLOCK_MENU_ITEM"
+          desc="The name of a menu item that blocks storage access (creates a block exception) for a site. The menu item is shown in the `Cookies and site data` dialog.">
+        Don’t allow to save data
+      </message>
+
+      <message name="IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_SESSION_ONLY_MENU_ITEM"
+          desc="The name of a menu item that allows storage access and clears the storage set after user closes Chrome (creates a 'Clear on exit' exception) for a site. The menu item is shown in the `Cookies and site data` dialog.">
+        Delete when you close all windows
+      </message>
+
+      <message name="IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_ALLOWED_STATE_SUBTITLE"
+          desc="The label that is shown under a site's name to indicate the state of storage access for the site: the site is allowed to access storage. It isn't visible by default, only if user has allowed previously blocked site. The label is shown in the `Cookies and site data` dialog.">
+        Allowed to save data to your device
+      </message>
+
+      <message name="IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_BLOCKED_STATE_SUBTITLE"
+          desc="The label that is shown under a site's name to indicate the state of storage access for the site: the site is not allowed to access storage. The label is shown in the `Cookies and site data` dialog.">
+        Not allowed to save data to your device
+      </message>
+
+      <message name="IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_SESSION_ONLY_STATE_SUBTITLE"
+          desc="The label that is shown under a site's name to indicate the state of storage access for the site: the site is allowed to access storage but the accessed storage is cleared when user closes Chrome. The label is shown in the `Cookies and site data` dialog.">
+        Delete data when you close all windows
+      </message>
+
+      <message name="IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_PARTITIONED_STATE_SUBTITLE"
+          desc="The label that is shown under a site's name to indicate the state of storage access for the site: the site has only accessed partitioned storage. Partitioned storage set in a context of one site can only be accessed in that site's context and cannot be accessed when embedded on other sites. The label is shown in the `Cookies and site data` dialog.">
+        Data is treated the same as the site you’re viewing
+      </message>
+
+      <message name="IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_PARTITIONED_SESSION_ONLY_STATE_SUBTITLE"
+          desc="The label that is shown under a site's name to indicate the state of storage access for the site: the site has only accessed partitioned storage and the accessed storage is cleared when user closes Chrome. Partitioned storage set in a context of one site can only be accessed in that site's context and cannot be accessed when embedded on other sites. The label is shown in the `Cookies and site data` dialog.">
+        Delete data when you close all windows. Data is treated the same as the site you’re viewing
+      </message>
+
+      <message name="IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_CONTEXT_MENU_TOOLTIP"
+          desc="The tooltip that is used for 3-dot menu button that opens a menu with actions to control storage access for the site. The button is shown in the `Cookies and site data` dialog.">
+        More actions for <ph name="SITE_NAME">$1<ex>example.com</ex></ph>
+      </message>
+
+      <message name="IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_DELETE_BUTTON_TOOLTIP"
+          desc="The tooltip that is used for button button that clears storage accessed by the site. The button is shown in the `Cookies and site data` dialog.">
+        Delete saved data for <ph name="SITE_NAME">$1<ex>example.com</ex></ph>
+      </message>
+
       <!-- Accessiblility strings for Infobars in Views -->
       <if expr="toolkit_views">
         <message name="IDS_ACCNAME_INFOBAR_CONTAINER" desc="The accessible name for the infobar container.">
@@ -13811,9 +13902,16 @@
     </if>
     <!-- High Efficiency Chip strings -->
     <if expr="not is_android">
-      <message name="IDS_HIGH_EFFICIENCY_CHIP_LABEL" desc="Label for a page action chip that highlights that the Memory Saver setting is enabled">
-        Tab active again
-      </message>
+      <if expr="use_titlecase">
+        <message name="IDS_HIGH_EFFICIENCY_CHIP_LABEL" desc="In Title Case: Label for a page action chip that highlights that the Memory Saver setting is enabled">
+          Tab Active Again
+        </message>
+      </if>
+      <if expr="not use_titlecase">
+        <message name="IDS_HIGH_EFFICIENCY_CHIP_LABEL" desc="Label for a page action chip that highlights that the Memory Saver setting is enabled">
+          Tab active again
+        </message>
+      </if>
       <message name="IDS_HIGH_EFFICIENCY_CHIP_ACCNAME" desc="Tooltip text for a page action chip that highlights that the Memory Saver setting is enabled">
         Tab active again
       </message>
diff --git a/chrome/app/generated_resources_grd/IDS_LENS_SEARCH_UPLOAD_DIALOG_CLOSE_BUTTON_LABEL.png.sha1 b/chrome/app/generated_resources_grd/IDS_LENS_SEARCH_UPLOAD_DIALOG_CLOSE_BUTTON_LABEL.png.sha1
new file mode 100644
index 0000000..4fd2d10d
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_LENS_SEARCH_UPLOAD_DIALOG_CLOSE_BUTTON_LABEL.png.sha1
@@ -0,0 +1 @@
+3a1a8426b71f27da39027ffb4a5bc6fb5036aade
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_LENS_SEARCH_UPLOAD_DIALOG_DRAG_TITLE.png.sha1 b/chrome/app/generated_resources_grd/IDS_LENS_SEARCH_UPLOAD_DIALOG_DRAG_TITLE.png.sha1
new file mode 100644
index 0000000..9410179
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_LENS_SEARCH_UPLOAD_DIALOG_DRAG_TITLE.png.sha1
@@ -0,0 +1 @@
+dca725919a5083918a4dfc176ac68de4eab2003a
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_LENS_SEARCH_UPLOAD_DIALOG_OR_TEXT.png.sha1 b/chrome/app/generated_resources_grd/IDS_LENS_SEARCH_UPLOAD_DIALOG_OR_TEXT.png.sha1
new file mode 100644
index 0000000..d5eda144
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_LENS_SEARCH_UPLOAD_DIALOG_OR_TEXT.png.sha1
@@ -0,0 +1 @@
+7dd0eb5b56a7128b3f828fbf0ab949bbfc0143df
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_LENS_SEARCH_UPLOAD_DIALOG_TEXT_PLACEHOLDER.png.sha1 b/chrome/app/generated_resources_grd/IDS_LENS_SEARCH_UPLOAD_DIALOG_TEXT_PLACEHOLDER.png.sha1
new file mode 100644
index 0000000..afbb59d
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_LENS_SEARCH_UPLOAD_DIALOG_TEXT_PLACEHOLDER.png.sha1
@@ -0,0 +1 @@
+c2448fd02aa7aded2be6ccd44dd9bc18ea4f0864
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_LENS_SEARCH_UPLOAD_DIALOG_TITLE.png.sha1 b/chrome/app/generated_resources_grd/IDS_LENS_SEARCH_UPLOAD_DIALOG_TITLE.png.sha1
new file mode 100644
index 0000000..b6fafdb
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_LENS_SEARCH_UPLOAD_DIALOG_TITLE.png.sha1
@@ -0,0 +1 @@
+941691d7e044940f29ff6548fab16f8fe16e31a1
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_LENS_SEARCH_UPLOAD_DIALOG_UPLOAD_FILE_TITLE.png.sha1 b/chrome/app/generated_resources_grd/IDS_LENS_SEARCH_UPLOAD_DIALOG_UPLOAD_FILE_TITLE.png.sha1
new file mode 100644
index 0000000..a431e2ef
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_LENS_SEARCH_UPLOAD_DIALOG_UPLOAD_FILE_TITLE.png.sha1
@@ -0,0 +1 @@
+09480d6ade7bb5f2aa161ee08faaf80ac1aed661
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_ALLOWED_STATE_SUBTITLE.png.sha1 b/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_ALLOWED_STATE_SUBTITLE.png.sha1
new file mode 100644
index 0000000..ee8c377
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_ALLOWED_STATE_SUBTITLE.png.sha1
@@ -0,0 +1 @@
+9c9b6ced6ea15ec48d841a702396ea96e048e172
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_ALLOW_MENU_ITEM.png.sha1 b/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_ALLOW_MENU_ITEM.png.sha1
new file mode 100644
index 0000000..a98f573
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_ALLOW_MENU_ITEM.png.sha1
@@ -0,0 +1 @@
+fcc22c12c50e3e71379d07d25b056381b220336e
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_BLOCKED_STATE_SUBTITLE.png.sha1 b/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_BLOCKED_STATE_SUBTITLE.png.sha1
new file mode 100644
index 0000000..ee8c377
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_BLOCKED_STATE_SUBTITLE.png.sha1
@@ -0,0 +1 @@
+9c9b6ced6ea15ec48d841a702396ea96e048e172
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_BLOCK_MENU_ITEM.png.sha1 b/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_BLOCK_MENU_ITEM.png.sha1
new file mode 100644
index 0000000..a98f573
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_BLOCK_MENU_ITEM.png.sha1
@@ -0,0 +1 @@
+fcc22c12c50e3e71379d07d25b056381b220336e
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_CONTEXT_MENU_TOOLTIP.png.sha1 b/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_CONTEXT_MENU_TOOLTIP.png.sha1
new file mode 100644
index 0000000..aa84c58d
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_CONTEXT_MENU_TOOLTIP.png.sha1
@@ -0,0 +1 @@
+2a52ca5ea0c15ccb449620298a2c44287df6a766
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_DELETE_BUTTON_TOOLTIP.png.sha1 b/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_DELETE_BUTTON_TOOLTIP.png.sha1
new file mode 100644
index 0000000..6388b4f9
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_DELETE_BUTTON_TOOLTIP.png.sha1
@@ -0,0 +1 @@
+95c8d8d1bb2d610239bb4e409eea7827a20fbedb
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_FIRST_PARTY_SUBTITLE.png.sha1 b/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_FIRST_PARTY_SUBTITLE.png.sha1
new file mode 100644
index 0000000..ee8c377
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_FIRST_PARTY_SUBTITLE.png.sha1
@@ -0,0 +1 @@
+9c9b6ced6ea15ec48d841a702396ea96e048e172
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_FIRST_PARTY_TITLE.png.sha1 b/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_FIRST_PARTY_TITLE.png.sha1
new file mode 100644
index 0000000..ee8c377
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_FIRST_PARTY_TITLE.png.sha1
@@ -0,0 +1 @@
+9c9b6ced6ea15ec48d841a702396ea96e048e172
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_PARTITIONED_SESSION_ONLY_STATE_SUBTITLE.png.sha1 b/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_PARTITIONED_SESSION_ONLY_STATE_SUBTITLE.png.sha1
new file mode 100644
index 0000000..0b07cf7e
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_PARTITIONED_SESSION_ONLY_STATE_SUBTITLE.png.sha1
@@ -0,0 +1 @@
+4fec15efc8da901a8902f14b11d4d80d7247d6cd
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_PARTITIONED_STATE_SUBTITLE.png.sha1 b/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_PARTITIONED_STATE_SUBTITLE.png.sha1
new file mode 100644
index 0000000..8af7c71
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_PARTITIONED_STATE_SUBTITLE.png.sha1
@@ -0,0 +1 @@
+d90f709eeae28644f215a645ef544b7d1a30bc4d
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_SESSION_ONLY_MENU_ITEM.png.sha1 b/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_SESSION_ONLY_MENU_ITEM.png.sha1
new file mode 100644
index 0000000..812c4c5
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_SESSION_ONLY_MENU_ITEM.png.sha1
@@ -0,0 +1 @@
+89d0bf6f88ff952cd55057ceff44a8ed85520e7c
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_SESSION_ONLY_STATE_SUBTITLE.png.sha1 b/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_SESSION_ONLY_STATE_SUBTITLE.png.sha1
new file mode 100644
index 0000000..ee8c377
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_SESSION_ONLY_STATE_SUBTITLE.png.sha1
@@ -0,0 +1 @@
+9c9b6ced6ea15ec48d841a702396ea96e048e172
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_THIRD_PARTY_SUBTITLE.png.sha1 b/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_THIRD_PARTY_SUBTITLE.png.sha1
new file mode 100644
index 0000000..ee8c377
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_THIRD_PARTY_SUBTITLE.png.sha1
@@ -0,0 +1 @@
+9c9b6ced6ea15ec48d841a702396ea96e048e172
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_THIRD_PARTY_TITLE.png.sha1 b/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_THIRD_PARTY_TITLE.png.sha1
new file mode 100644
index 0000000..ee8c377
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_THIRD_PARTY_TITLE.png.sha1
@@ -0,0 +1 @@
+9c9b6ced6ea15ec48d841a702396ea96e048e172
\ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_TITLE.png.sha1 b/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_TITLE.png.sha1
new file mode 100644
index 0000000..ee8c377
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_TITLE.png.sha1
@@ -0,0 +1 @@
+9c9b6ced6ea15ec48d841a702396ea96e048e172
\ No newline at end of file
diff --git a/chrome/app/os_settings_search_tag_strings.grdp b/chrome/app/os_settings_search_tag_strings.grdp
index e8e5b90b..8c6abf1 100644
--- a/chrome/app/os_settings_search_tag_strings.grdp
+++ b/chrome/app/os_settings_search_tag_strings.grdp
@@ -202,9 +202,6 @@
   <message name="IDS_OS_SETTINGS_TAG_BLUETOOTH_UNPAIR" desc="Text for search result item which, when clicked, navigates the user to Bluetooth settings, with an option to unpair from a device. Alternate phrase for: 'Forget Bluetooth device'">
     Unpair Bluetooth device
   </message>
-  <message name="IDS_OS_SETTINGS_TAG_BLUETOOTH_UNPAIR_ALT1" desc="Text for search result item which, when clicked, navigates the user to Bluetooth settings, with an option to unpair from a device. Alternate phrase for: 'Unpair from a Bluetooth device'">
-    Forget Bluetooth device
-  </message>
   <message name="IDS_OS_SETTINGS_TAG_BLUETOOTH_TURN_OFF" desc="Text for search result item which, when clicked, navigates the user to Bluetooth settings, with a toggle to turn off Bluetooth. Alternate phrase for: 'Disable Bluetooth'">
     Turn off Bluetooth
   </message>
diff --git a/chrome/app/os_settings_strings.grdp b/chrome/app/os_settings_strings.grdp
index 1ff33e8..19010ae 100644
--- a/chrome/app/os_settings_strings.grdp
+++ b/chrome/app/os_settings_strings.grdp
@@ -2127,21 +2127,12 @@
   <message name="IDS_SETTINGS_BLUETOOTH_CONNECTED" desc="In Bluetooth device list, this label is shown below a device which is already connected.">
     Connected
   </message>
-  <message name="IDS_SETTINGS_BLUETOOTH_CONNECTED_WITH_BATTERY" desc="In Bluetooth device list, this label is shown below a device which is already connected and has a known battery percentage.">
-    Connected, <ph name="BATTERY_PERCENTAGE">$1<ex>100</ex></ph>% battery
-  </message>
   <message name="IDS_SETTINGS_BLUETOOTH_CONNECTING">
     Connecting...
   </message>
-  <message name="IDS_SETTINGS_BLUETOOTH_DEVICE_LIST_PAIRED" desc="Title of the settings subsection listing paired Bluetooth devices.">
-    Paired devices
-  </message>
   <message name="IDS_SETTINGS_BLUETOOTH_PRIMARY_USER_CONTROLLED" desc="Settings > Bluetooth > Text to show when Bluetooth configuration is controlled by the primary user.">
     Bluetooth configuration is controlled by <ph name="USER_EMAIL">$1<ex>joe@gmail.com</ex></ph>.
   </message>
-  <message name="IDS_SETTINGS_BLUETOOTH_DEVICE_LIST_UNPAIRED" desc="Title of the settings subsection listing unpaired Bluetooth devices.">
-    Unpaired devices
-  </message>
   <message name="IDS_SETTINGS_BLUETOOTH_CONNECT" desc="Bluetooth pairing dialog: Text for dropdown meny item to connect to a device.">
     Connect
   </message>
@@ -2241,15 +2232,6 @@
   <message name="IDS_SETTINGS_BLUETOOTH_EXPAND_ACCESSIBILITY_LABEL" desc="Label for the button that toggles showing available Bluetooth devices. Only visible by screen reader software.">
     Show available Bluetooth devices
   </message>
-  <message name="IDS_SETTINGS_BLUETOOTH_NO_DEVICES" desc="Message displayed when there are no paired Bluetooth devices scan.">
-    No paired devices
-  </message>
-  <message name="IDS_SETTINGS_BLUETOOTH_NO_DEVICES_FOUND" desc="Message displayed when no Bluetooth devices are found after a scan.">
-    No Bluetooth devices found
-  </message>
-  <message name="IDS_SETTINGS_BLUETOOTH_NOT_CONNECTED" desc="In Bluetooth device list, this label is shown below a device which is not connected.">
-    Not connected
-  </message>
   <message name="IDS_SETTINGS_BLUETOOTH" desc="Name of the settings page which displays Bluetooth device settings.">
     Bluetooth
   </message>
@@ -2304,9 +2286,6 @@
   <message name="IDS_SETTINGS_FORGET_DEVICE_DIALOG_TITLE" desc="Bluetooth device details page > Forget device dialog: Title for dialog that forgets the device." meaning="'Forget this device' means the device will be unpaired and removed from the account">
     Forget this device?
   </message>
-  <message name="IDS_SETTINGS_BLUETOOTH_PAIR_DEVICE_TITLE" desc="Title of the settings dialog for adding or pairing Bluetooth a device.">
-    Connect to Bluetooth device
-  </message>
   <message name="IDS_SETTINGS_BLUETOOTH_REMOVE" desc="Label for removing (unpairing) a paired Bluetooth device">
     Remove from list
   </message>
@@ -4462,7 +4441,7 @@
     Hide notification content when someone else is detected
   </message>
   <message name="IDS_OS_SETTINGS_PRIVACY_HUB_TITLE" desc="Text on the privacy page that opens up the privacy hub section.">
-    Privacy Hub
+    Privacy controls
   </message>
   <message name="IDS_OS_SETTINGS_PRIVACY_HUB_CAMERA_HARDWARE_TOGGLE_ACTIVE_SUBTEXT" desc="Sub-label on the privacy page that indicates that the hardware camera toggle is active.">
     Internal camera deactivated by hardware switch
diff --git a/chrome/app/os_settings_strings_grdp/IDS_OS_SETTINGS_PRIVACY_HUB_TITLE.png.sha1 b/chrome/app/os_settings_strings_grdp/IDS_OS_SETTINGS_PRIVACY_HUB_TITLE.png.sha1
index 48edd7a..7303aeb 100644
--- a/chrome/app/os_settings_strings_grdp/IDS_OS_SETTINGS_PRIVACY_HUB_TITLE.png.sha1
+++ b/chrome/app/os_settings_strings_grdp/IDS_OS_SETTINGS_PRIVACY_HUB_TITLE.png.sha1
@@ -1 +1 @@
-1a002f728dbf685ef6d4fdc3406354c1e9aa0a2a
\ No newline at end of file
+52c4f4b139c3a43550f889b307fa636f2e7c1d44
\ No newline at end of file
diff --git a/chrome/app/resources/chromium_strings_af.xtb b/chrome/app/resources/chromium_strings_af.xtb
index 09ca5a8..cb19be0 100644
--- a/chrome/app/resources/chromium_strings_af.xtb
+++ b/chrome/app/resources/chromium_strings_af.xtb
@@ -12,6 +12,7 @@
 <translation id="1131805035311359397"><ph name="BEGIN_LINK" />Meld by Chromium aan<ph name="END_LINK" /> om te kyk of jou wagwoorde teen dataskendings en ander sekuriteitkwessies beveilig word.</translation>
 <translation id="1185134272377778587">Meer oor Chromium</translation>
 <translation id="1203500561924088507">Dankie dat jy geïnstalleer het. Jy moet jou blaaier herbegin voordat jy <ph name="BUNDLE_NAME" /> gebruik.</translation>
+<translation id="1261119230216066228">Geheuebespaarder het Chromium vinniger gemaak</translation>
 <translation id="1315551408014407711">Stel jou nuwe Chromium-profiel op</translation>
 <translation id="1385859895174722837">Google Assistent in Chromium</translation>
 <translation id="1396446129537741364">Chromium probeer tans om wagwoorde te wys.</translation>
@@ -210,6 +211,7 @@
 <translation id="6055895534982063517">Daar is 'n nuwe weergawe van Chromium beskikbaar, en dit is vinniger as ooit.</translation>
 <translation id="6063093106622310249">&amp;Maak in Chromium oop</translation>
 <translation id="6072279588547424923"><ph name="EXTENSION_NAME" /> is by Chromium gevoeg</translation>
+<translation id="6072463441809498330">Maak Chromium vinniger</translation>
 <translation id="608006075545470555">Voeg werkprofiel by hierdie blaaier</translation>
 <translation id="6096348254544841612">Pasmaak en beheer Chromium. Opdatering is beskikbaar.</translation>
 <translation id="6119438414301547735">Laat uitbreiding toe om toegangversoeke op die Chromium-nutsbalk te wys</translation>
diff --git a/chrome/app/resources/chromium_strings_az.xtb b/chrome/app/resources/chromium_strings_az.xtb
index 6310769..c33fc39 100644
--- a/chrome/app/resources/chromium_strings_az.xtb
+++ b/chrome/app/resources/chromium_strings_az.xtb
@@ -13,6 +13,7 @@
 <translation id="1185134272377778587">Chromium haqqında</translation>
 <translation id="1203500561924088507">Quraşdırdığınız üçün təşəkkür edirik. <ph name="BUNDLE_NAME" /> istifadə etməzdən əvvəl brauzerinizi yenidən başlatmalısınız.</translation>
 <translation id="1231839967188101156">Aktiv olduqda, Chromium yaddaşı qeyri-aktiv tablardan təmizləyir. Bu, aktiv tablara və digər tətbiqlərə daha çox kompüter resursları verir və Chromium'u sürətli edir. Onlara qayıtdığınız zaman qeyri-aktiv tablarınız avtomatik olaraq yenidən aktivləşir. <ph name="BEGIN_LINK" />Ətraflı məlumat<ph name="END_LINK" /></translation>
+<translation id="1261119230216066228">Yaddaşa Qənaət Chromium'u daha sürətli etdi</translation>
 <translation id="1315551408014407711">Yeni Chromium profilinizi ayarlayın</translation>
 <translation id="1385859895174722837">Google Assistent Chromium'da</translation>
 <translation id="1396446129537741364">Chromium parolları göstərməyə çalışır.</translation>
@@ -209,6 +210,7 @@
 <translation id="6055895534982063517">Chromium'um yeni versiyası əlçatandır və həmişəkindən daha sürətlidir.</translation>
 <translation id="6063093106622310249">Chromium'də açın</translation>
 <translation id="6072279588547424923"><ph name="EXTENSION_NAME" /> Chromium'a əlavə edildi</translation>
+<translation id="6072463441809498330">Chromium'u sürətli edin</translation>
 <translation id="608006075545470555">Bu brauzerə İş Profili əlavə edin</translation>
 <translation id="6096348254544841612">Chromium'u fərdiləşdirin və idarə edin. Güncəlləmə əlçatandır.</translation>
 <translation id="6119438414301547735">Chromium alətlər panelində artırmanın giriş sorğularını göstərməsinə icazə verin</translation>
diff --git a/chrome/app/resources/chromium_strings_bg.xtb b/chrome/app/resources/chromium_strings_bg.xtb
index 3fd6fe7..2483a4f8 100644
--- a/chrome/app/resources/chromium_strings_bg.xtb
+++ b/chrome/app/resources/chromium_strings_bg.xtb
@@ -10,6 +10,7 @@
 <translation id="1131805035311359397">За да проверите дали паролите ви не са компрометирани при нарушения на сигурността на данните и други проблеми със сигурността, <ph name="BEGIN_LINK" />влезте в Chromium<ph name="END_LINK" />.</translation>
 <translation id="1185134272377778587">Всичко за Chromium</translation>
 <translation id="1203500561924088507">Благодарим ви, че инсталирахте <ph name="BUNDLE_NAME" />. Трябва да рестартирате браузъра си, преди да използвате това приложение.</translation>
+<translation id="1231839967188101156">Когато функцията е включена, Chromium освобождава памет от неактивните раздели. Така активните раздели и другите приложения разполагат с повече компютърни ресурси и Chromium не се забавя. Неактивните ви раздели автоматично се активират отново, когато се върнете към тях. <ph name="BEGIN_LINK" />Научете повече<ph name="END_LINK" /></translation>
 <translation id="1315551408014407711">Настройване на новия ви потребителски профил в Chromium</translation>
 <translation id="1385859895174722837">Google Асистент в Chromium</translation>
 <translation id="1396446129537741364">Chromium опитва да покаже паролите.</translation>
@@ -247,6 +248,7 @@
 <translation id="668175097507315160">Chromium OS не можа да синхронизира данните ви поради грешка при влизане в профила.</translation>
 <translation id="6709350901466051922">За този сайт Chromium се нуждае от разрешение за достъп до микрофона</translation>
 <translation id="6717134281241384636">Потребителският ви профил не може да се използва, защото е от по-нова версия на Chromium. Някои функции може да не са налице. Моля, посочете друга директория в потребителския профил или използвайте по-нова версия на Chromium.</translation>
+<translation id="6730677189742196061">Режимът за икономия на памет ускори работата на Chromium</translation>
 <translation id="6734291798041940871">Chromium вече е инсталиран за всички потребители на компютъра ви.</translation>
 <translation id="673636774878526923">За да имате достъп до нещата си в Chromium на всичките си устройства, влезте в профила си и включете синхронизирането.</translation>
 <translation id="6774082503108938489">Някой от родителите ви е изключил разрешенията за сайтове, приложения и разширения за Chromium. Активирането на <ph name="EXTENSION_TYPE_PARAMETER" /> не е разрешено.</translation>
diff --git a/chrome/app/resources/chromium_strings_bs.xtb b/chrome/app/resources/chromium_strings_bs.xtb
index 9341eed..013564c 100644
--- a/chrome/app/resources/chromium_strings_bs.xtb
+++ b/chrome/app/resources/chromium_strings_bs.xtb
@@ -13,6 +13,7 @@
 <translation id="1185134272377778587">O programu Chromium</translation>
 <translation id="1203500561924088507">Hvala što ste instalirali. Morate ponovo pokrenuti preglednik prije nego što možete koristiti <ph name="BUNDLE_NAME" />.</translation>
 <translation id="1231839967188101156">Kada je uključen, Chromium oslobađa memoriju od neaktivnih kartica. Time se aktivnim karticama i drugim aplikacijama pruža više računarskih resursa i ubrzava rad Chromiuma. Neaktivne kartice se automatski ponovo aktiviraju kada se vratite na njih. <ph name="BEGIN_LINK" />Saznajte više<ph name="END_LINK" /></translation>
+<translation id="1261119230216066228">Ušteda memorije ubrzava rad Chromiuma</translation>
 <translation id="1315551408014407711">Postavite novi Chromium profil</translation>
 <translation id="1385859895174722837">Google Asistent u Chromiumu</translation>
 <translation id="1396446129537741364">Chromium pokušava prikazati lozinke.</translation>
@@ -211,6 +212,7 @@
 <translation id="6055895534982063517">Dostupna je nova verzija Chromiuma, brža nego ikad.</translation>
 <translation id="6063093106622310249">&amp;Otvori u Chromiumu</translation>
 <translation id="6072279588547424923">Ekstenzija <ph name="EXTENSION_NAME" /> je dodana u Chromium</translation>
+<translation id="6072463441809498330">Ubrzajte Chromium</translation>
 <translation id="608006075545470555">Dodajte radni profil na ovaj preglednik</translation>
 <translation id="6096348254544841612">Prilagodite i kontrolirajte Chromium. Dostupno je ažuriranje.</translation>
 <translation id="6119438414301547735">Dozvoli ekstenziju za prikaz zahtjeva za pristup na alatnoj traci Chromiuma</translation>
diff --git a/chrome/app/resources/chromium_strings_ca.xtb b/chrome/app/resources/chromium_strings_ca.xtb
index f10ff5c0..bed9e36 100644
--- a/chrome/app/resources/chromium_strings_ca.xtb
+++ b/chrome/app/resources/chromium_strings_ca.xtb
@@ -10,6 +10,7 @@
 <translation id="1131805035311359397">Per comprovar si les teves contrasenyes estan protegides contra violacions de les dades i contra altres problemes de seguretat, <ph name="BEGIN_LINK" />inicia la sessió a Chromium<ph name="END_LINK" />.</translation>
 <translation id="1185134272377778587">Quant a Chromium</translation>
 <translation id="1203500561924088507">T'agraïm la instal·lació. Has de reiniciar el navegador abans d'utilitzar <ph name="BUNDLE_NAME" />.</translation>
+<translation id="1231839967188101156">Quan aquesta opció està activada, Chromium allibera memòria de les pestanyes inactives. Així, les pestanyes actives i altres aplicacions disposen de més recursos de l'ordinador i es manté l'agilitat de Chromium. Les pestanyes inactives s'activen de nou automàticament quan hi tornes. <ph name="BEGIN_LINK" />Més informació<ph name="END_LINK" /></translation>
 <translation id="1315551408014407711">Configura el teu perfil de Chromium nou</translation>
 <translation id="1385859895174722837">L'Assistent de Google a Chromium</translation>
 <translation id="1396446129537741364">Chromium està provant de mostrar les contrasenyes.</translation>
@@ -251,6 +252,7 @@
 <translation id="6717134281241384636">El vostre perfil no es pot utilitzar perquè es va crear amb una versió més recent de Chromium.
 
 És possible que algunes funcions no estiguin disponibles. Especifiqueu un altre directori de perfil o utilitzeu una versió més nova de Chromium.</translation>
+<translation id="6730677189742196061">L'estalvi de memòria ha fet que Chromium sigui més ràpid</translation>
 <translation id="6734291798041940871">Ja tens instal·lat Chromium per a tots els usuaris de l'ordinador.</translation>
 <translation id="673636774878526923">Per accedir al teu contingut de Chromium des de tots els teus dispositius, inicia la sessió i, després, activa la sincronització.</translation>
 <translation id="6774082503108938489">Els teus pares han desactivat Permisos per a llocs web, aplicacions i extensions en relació amb Chromium. No es permet activar aquesta <ph name="EXTENSION_TYPE_PARAMETER" />.</translation>
diff --git a/chrome/app/resources/chromium_strings_cy.xtb b/chrome/app/resources/chromium_strings_cy.xtb
index 0c1b6c50..983cd49 100644
--- a/chrome/app/resources/chromium_strings_cy.xtb
+++ b/chrome/app/resources/chromium_strings_cy.xtb
@@ -12,6 +12,7 @@
 <translation id="1131805035311359397">I wirio a yw'ch cyfrineiriau'n ddiogel rhag toriadau data a phroblemau diogelwch eraill, <ph name="BEGIN_LINK" />mewngofnodwch i Chromium<ph name="END_LINK" />.</translation>
 <translation id="1185134272377778587">Ynghylch Chromium</translation>
 <translation id="1203500561924088507">Diolch am osod. Rhaid i chi ailgychwyn eich porwr cyn defnyddio <ph name="BUNDLE_NAME" />.</translation>
+<translation id="1231839967188101156">Pan fydd ymlaen, mae Chromium yn rhyddhau cof o dabiau anweithredol. Mae hyn yn rhoi mwy o adnoddau cyfrifiadurol i dabiau gweithredol ac apiau eraill ac yn cadw Chromium yn gyflym. Mae eich tabiau anweithredol yn dod yn weithredol eto yn awtomatig pan fyddwch yn dychwelyd atynt. <ph name="BEGIN_LINK" />Dysgu rhagor<ph name="END_LINK" /></translation>
 <translation id="1315551408014407711">Gosod eich proffil Chromium newydd</translation>
 <translation id="1385859895174722837">Google Assistant yn Chromium</translation>
 <translation id="1396446129537741364">Mae Chromium yn ceisio dangos cyfrineiriau.</translation>
@@ -253,6 +254,7 @@
 <translation id="6717134281241384636">Ni ellir defnyddio'ch proffil oherwydd ei fod yn dod o fersiwn mwy diweddar o Chromium.
 
 Mae'n bosib na fydd rhai nodweddion ar gael. Rhowch gyfeiriadur proffil gwahanol neu defnyddiwch fersiwn mwy diweddar o Chromium.</translation>
+<translation id="6730677189742196061">Mae Arbedwr Cof wedi gwneud Chromium yn gyflymach</translation>
 <translation id="6734291798041940871">Mae Chromium eisoes wedi'i osod ar gyfer pob defnyddiwr ar eich cyfrifiadur.</translation>
 <translation id="673636774878526923">I gael mynediad at eich holl bethau Chromium ar draws eich holl ddyfeisiau, mewngofnodwch, yna trowch gysoni ymlaen.</translation>
 <translation id="6774082503108938489">Mae dy riant wedi diffodd "Caniatadau ar gyfer gwefannau, apiau ac estyniadau" ar gyfer Chromium. Ni chaniateir galluogi'r <ph name="EXTENSION_TYPE_PARAMETER" /> hwn.</translation>
diff --git a/chrome/app/resources/chromium_strings_da.xtb b/chrome/app/resources/chromium_strings_da.xtb
index 1b6ced8..7d836360 100644
--- a/chrome/app/resources/chromium_strings_da.xtb
+++ b/chrome/app/resources/chromium_strings_da.xtb
@@ -10,6 +10,7 @@
 <translation id="1131805035311359397">Du kan tjekke, om dine adgangskoder er beskyttet mod brud på datasikkerheden og andre sikkerhedsproblemer ved at <ph name="BEGIN_LINK" />logge ind på Chromium<ph name="END_LINK" />.</translation>
 <translation id="1185134272377778587">Om Chromium</translation>
 <translation id="1203500561924088507">Tak for installationen. Du skal genstarte browseren, før du bruger <ph name="BUNDLE_NAME" />.</translation>
+<translation id="1231839967188101156">Når indstillingen er aktiveret, frigør Chromium hukommelse fra inaktive faner. Dette tildeler aktive faner og andre apps flere computerressourcer og gør Chromium hurtig. Dine inaktive faner bliver automatisk aktive igen, når du vender tilbage til dem. <ph name="BEGIN_LINK" />Få flere oplysninger<ph name="END_LINK" /></translation>
 <translation id="1315551408014407711">Konfigurer din nye Chromium-profil</translation>
 <translation id="1385859895174722837">Google Assistent i Chromium</translation>
 <translation id="1396446129537741364">Chromium forsøger at vise adgangskoder.</translation>
@@ -251,6 +252,7 @@
 <translation id="6717134281241384636">Din profil kan ikke bruges, da den stammer fra en nyere version af Chromium.
 
 Visse funktioner kan være utilgængelige. Angiv en anden profilmappe, eller brug en nyere version af Chromium.</translation>
+<translation id="6730677189742196061">Hukommelsessparefunktion har gjort Chromium hurtigere</translation>
 <translation id="6734291798041940871">Chromium er allerede installeret for alle brugere på computeren.</translation>
 <translation id="673636774878526923">Log ind, og aktivér derefter synkronisering for at få adgang til dine Chromium-ting på alle dine enheder.</translation>
 <translation id="6774082503108938489">Din forælder har deaktiveret "Tilladelser til websites, apps og udvidelser" for Chromium. Det er ikke tilladt at aktivere denne <ph name="EXTENSION_TYPE_PARAMETER" />.</translation>
diff --git a/chrome/app/resources/chromium_strings_el.xtb b/chrome/app/resources/chromium_strings_el.xtb
index 65193254..817db4a8 100644
--- a/chrome/app/resources/chromium_strings_el.xtb
+++ b/chrome/app/resources/chromium_strings_el.xtb
@@ -10,6 +10,7 @@
 <translation id="1131805035311359397">Για να ελέγξετε αν οι κωδικοί πρόσβασής σας είναι ασφαλείς από παραβιάσεις δεδομένων και άλλα ζητήματα ασφαλείας, <ph name="BEGIN_LINK" />συνδεθείτε στο Chromium<ph name="END_LINK" />.</translation>
 <translation id="1185134272377778587">Σχετικά με το Chromium</translation>
 <translation id="1203500561924088507">Ευχαριστούμε για την εγκατάσταση. Πρέπει να επανεκκινήσετε το πρόγραμμα περιήγησής σας πριν από τη χρήση του <ph name="BUNDLE_NAME" />.</translation>
+<translation id="1231839967188101156">Όταν η ρύθμιση είναι ενεργή, το Chromium αποδεσμεύει μνήμη από τις ανενεργές καρτέλες. Αυτό προσφέρει στις ενεργές καρτέλες και σε άλλες εφαρμογές περισσότερους πόρους υπολογιστή και διατηρεί το Chromium γρήγορο. Οι ανενεργές καρτέλες σας ενεργοποιούνται ξανά αυτόματα, όταν επιστρέψετε σε αυτές. <ph name="BEGIN_LINK" />Μάθετε περισσότερα<ph name="END_LINK" /></translation>
 <translation id="1315551408014407711">Ρυθμίστε το νέο σας προφίλ στο Chromium</translation>
 <translation id="1385859895174722837">Βοηθός Google στο Chromium</translation>
 <translation id="1396446129537741364">Το Chromium επιχειρεί να εμφανίσει κωδικούς πρόσβασης.</translation>
@@ -251,6 +252,7 @@
 <translation id="6717134281241384636">Δεν είναι δυνατή η χρήση του προφίλ σας επειδή προέρχεται από νεότερη έκδοση του Chromium.
 
 Ορισμένες λειτουργίες ενδέχεται να μην είναι διαθέσιμες. Καθορίστε έναν διαφορετικό κατάλογο προφίλ ή χρησιμοποιήστε μια νεότερη έκδοση του Chromium.</translation>
+<translation id="6730677189742196061">Η Εξοικονόμηση μνήμης έκανε το Chromium πιο γρήγορο</translation>
 <translation id="6734291798041940871">Το Chromium είναι ήδη εγκατεστημένο για όλους τους χρήστες στον υπολογιστή σας.</translation>
 <translation id="673636774878526923">Για να αποκτήσετε πρόσβαση στο περιεχόμενό σας στο Chromium σε όλες τις συσκευές σας, συνδεθείτε και, στη συνέχεια, ενεργοποιήστε τον συγχρονισμό.</translation>
 <translation id="6774082503108938489">Ο γονέας σου απενεργοποίησε την επιλογή "Άδειες για ιστοτόπους, εφαρμογές και επεκτάσεις" για το Chromium. Η ενεργοποίηση του στοιχείου <ph name="EXTENSION_TYPE_PARAMETER" /> δεν επιτρέπεται.</translation>
diff --git a/chrome/app/resources/chromium_strings_es.xtb b/chrome/app/resources/chromium_strings_es.xtb
index 3eac0c37..a33653701 100644
--- a/chrome/app/resources/chromium_strings_es.xtb
+++ b/chrome/app/resources/chromium_strings_es.xtb
@@ -63,7 +63,7 @@
 <translation id="2583187216237139145">El administrador del perfil de trabajo puede quitar cualquier dato de Chromium generado durante el uso de este perfil, como los marcadores, el historial, las contraseñas y otros ajustes. <ph name="LEARN_MORE" /></translation>
 <translation id="2648074677641340862">Se ha producido un error de sistema operativo durante el proceso de instalación. Vuelve a descargar Chromium.</translation>
 <translation id="2661879430930417727">Si compartes un dispositivo, tus amigos y familiares pueden navegar de forma independiente y configurar Chromium a su gusto.</translation>
-<translation id="2669853942967761236">Chromium ha bloqueado este archivo porque puede ocultar software malicioso</translation>
+<translation id="2669853942967761236">Chromium ha bloqueado este archivo porque puede ocultar malware</translation>
 <translation id="268602741124540128">Te damos la bienvenida a Chromium, <ph name="ACCOUNT_FIRST_NAME" /></translation>
 <translation id="2711502716910134313">Pestaña de Chromium</translation>
 <translation id="2718390899429598676">Para mayor seguridad, Chromium cifrará tus datos.</translation>
@@ -149,7 +149,7 @@
 <translation id="4407044323746248786">¿Quieres salir de Chromium de todas formas?</translation>
 <translation id="4415566066719264597">Permitir que Chromium se ejecute en segundo plano</translation>
 <translation id="4423735387467980091">Personaliza y controla Chromium</translation>
-<translation id="4427306783828095590">La protección mejorada es más eficaz para bloquear ataques de suplantación de identidad y software malicioso.</translation>
+<translation id="4427306783828095590">La protección mejorada es más eficaz para bloquear ataques de suplantación de identidad y malware.</translation>
 <translation id="452711251841752011">Te damos la bienvenida a Chromium. Se ha abierto una nueva ventana del navegador.</translation>
 <translation id="4544142686420020088">Chromium no se ha actualizado, algo no va bien. <ph name="BEGIN_LINK" />Soluciona los problemas y errores de actualización de Chromium<ph name="END_LINK" />.</translation>
 <translation id="454579500955453258">¿Continuar en un nuevo perfil de Chromium?</translation>
@@ -197,7 +197,7 @@
 <translation id="5653831366781983928">Reinicia Chromium ahora</translation>
 <translation id="5698481217667032250">Mostrar Chromium en este idioma</translation>
 <translation id="5862307444128926510">Te damos la bienvenida a Chromium</translation>
-<translation id="5883558403894052917">Chromium ha detectado que estos elementos contienen software malicioso:</translation>
+<translation id="5883558403894052917">Chromium ha detectado que estos elementos contienen malware:</translation>
 <translation id="5895138241574237353">Reiniciar</translation>
 <translation id="5903106910045431592"><ph name="PAGE_TITLE" />, inicio de sesión en la red</translation>
 <translation id="5924017743176219022">Conectando a Internet...</translation>
@@ -236,7 +236,7 @@
 <translation id="6334986366598267305">Ahora es más fácil utilizar Chromium con tu cuenta de Google y en ordenadores compartidos.</translation>
 <translation id="6373523479360886564">¿Seguro que quieres desinstalar Chromium?</translation>
 <translation id="6384011394608460044"><ph name="BEGIN_BOLD" />Cómo usamos estos datos:<ph name="END_BOLD" /> Chrome puede estimar tus intereses. Después, un sitio que visites puede pedirle a Chromium consultar tus intereses para personalizar los anuncios que veas.</translation>
-<translation id="6403826409255603130">Chromium es un navegador web que ejecuta páginas web y aplicaciones a gran velocidad. Es rápido, estable y fácil de utilizar. Chromium te permite navegar en la Web de forma más segura, ya que incluye protección contra software malicioso y phishing.</translation>
+<translation id="6403826409255603130">Chromium es un navegador web que ejecuta páginas web y aplicaciones a gran velocidad. Es rápido, estable y fácil de utilizar. Chromium te permite navegar en la Web de forma más segura, ya que incluye protección contra malware y phishing.</translation>
 <translation id="6442900851116057561">Reiniciar ChromiumOS</translation>
 <translation id="6455857529632101747">Te damos la bienvenida a los perfiles de Chromium</translation>
 <translation id="6457450909262716557">{SECONDS,plural, =1{Chromium se reiniciará en 1 segundo}other{Chromium se reiniciará en # segundos}}</translation>
@@ -258,10 +258,10 @@
 <translation id="6774082503108938489">Tus padres han desactivado "Permisos de sitios, aplicaciones y extensiones" en Chromium. No se permite habilitar <ph name="EXTENSION_TYPE_PARAMETER" />.</translation>
 <translation id="6779406956731413166">ChromiumOS se ha creado gracias a <ph name="BEGIN_LINK_CROS_OSS" />software libre<ph name="END_LINK_CROS_OSS" /> adicional.</translation>
 <translation id="6847869444787758381">Chromium te avisará si tus contraseñas están en riesgo</translation>
-<translation id="6852530923436401894">Chromium ha bloqueado este archivo porque contiene software malicioso.</translation>
+<translation id="6852530923436401894">Chromium ha bloqueado este archivo porque contiene malware.</translation>
 <translation id="6857782730669500492">Chromium - <ph name="PAGE_TITLE" /></translation>
 <translation id="6863361426438995919">Google Pay (copiada en Chromium)</translation>
-<translation id="6873893289264747459">Chromium ha detectado que "<ph name="EXTENSION_NAME" />" contiene software malicioso</translation>
+<translation id="6873893289264747459">Chromium ha detectado que "<ph name="EXTENSION_NAME" />" contiene malware</translation>
 <translation id="6893813176749746474">Chromium se ha actualizado, pero llevas al menos 30 días sin utilizarlo.</translation>
 <translation id="691026815377248078">Chromium necesita acceso al Bluetooth para continuar 
  con la vinculación. <ph name="IDS_BLUETOOTH_DEVICE_CHOOSER_AUTHORIZE_BLUETOOTH_LINK" /></translation>
diff --git a/chrome/app/resources/chromium_strings_fi.xtb b/chrome/app/resources/chromium_strings_fi.xtb
index 2ab2ba0..c93b328 100644
--- a/chrome/app/resources/chromium_strings_fi.xtb
+++ b/chrome/app/resources/chromium_strings_fi.xtb
@@ -10,6 +10,7 @@
 <translation id="1131805035311359397">Jos haluat tarkistaa, ovatko salasanasi turvassa tietosuojaloukkauksilta ja muilta tietoturvaongelmilta, <ph name="BEGIN_LINK" />kirjaudu Chromiumiin<ph name="END_LINK" />.</translation>
 <translation id="1185134272377778587">Tietoja Chromiumista</translation>
 <translation id="1203500561924088507">Kiitos asennuksesta. Selain pitää käynnistää uudelleen ennen kuin <ph name="BUNDLE_NAME" /> otetaan käyttöön.</translation>
+<translation id="1231839967188101156">Kun tämä on päällä, Chromium vapauttaa muistia ei-aktiivisilta välilehdiltä. Näin aktiiviset välilehdet ja muut sovellukset voivat käyttää enemmän tietokoneen resursseja ja Chromium pysyy nopeana. Ei-aktiiviset välilehdet aktivoituvat automaattisesti, kun palaat niihin. <ph name="BEGIN_LINK" />Lue lisää<ph name="END_LINK" /></translation>
 <translation id="1315551408014407711">Luo uusi Chromium-profiili</translation>
 <translation id="1385859895174722837">Google Assistant Chromiumissa</translation>
 <translation id="1396446129537741364">Chromium yrittää näyttää salasanat.</translation>
@@ -251,6 +252,7 @@
 <translation id="6717134281241384636">Profiiliasi ei voi käyttää, sillä se on peräisin Chromiumin uudemmasta versiosta.
 
 Kaikki ominaisuudet eivät ehkä ole käytettävissä. Määritä jokin muu profiilihakemisto tai käytä Chromiumin uudempaa versiota.</translation>
+<translation id="6730677189742196061">Muistinsäästö nopeuttaa Chromiumia</translation>
 <translation id="6734291798041940871">Chromium on jo asennettuna kaikille tietokoneen käyttäjille.</translation>
 <translation id="673636774878526923">Jos haluat pääsyn Chromium-sisältöösi kaikilla laitteilla, kirjaudu sisään ja laita sitten synkronointi päälle.</translation>
 <translation id="6774082503108938489">Vanhempasi ovat laittaneet Chromiumin sivustojen, sovellusten ja laajennusten käyttöluvat pois päältä. Käyttöönottoa (<ph name="EXTENSION_TYPE_PARAMETER" />) ei sallita.</translation>
diff --git a/chrome/app/resources/chromium_strings_fil.xtb b/chrome/app/resources/chromium_strings_fil.xtb
index aa2d782..4b1e69524 100644
--- a/chrome/app/resources/chromium_strings_fil.xtb
+++ b/chrome/app/resources/chromium_strings_fil.xtb
@@ -12,6 +12,7 @@
 <translation id="1131805035311359397">Para makita kung ligtas ang iyong mga password mula sa mga paglabag sa data at iba pang isyu sa seguridad, <ph name="BEGIN_LINK" />mag-sign in sa Chromium<ph name="END_LINK" />.</translation>
 <translation id="1185134272377778587">Tungkol sa Chromium</translation>
 <translation id="1203500561924088507">Salamat sa pag-install. Dapat mong i-restart ang iyong browser bago gamitin ang <ph name="BUNDLE_NAME" />.</translation>
+<translation id="1231839967188101156">Kapag naka-on ito, nagbabakante ng memory ang Chromium mula sa mga hindi aktibong tab. Binibigyan nito ang mga aktibong tab at iba pang app ng higit pang resource ng computer at pinapanatili nitong mabilis ang Chromium. Awtomatikong nagiging aktibo ulit ang mga hindi aktibong tab kapag bumalik ka sa mga ito. <ph name="BEGIN_LINK" />Matuto pa<ph name="END_LINK" /></translation>
 <translation id="1315551408014407711">I-set up ang iyong bagong profile sa Chromium</translation>
 <translation id="1385859895174722837">Google Assistant sa Chromium</translation>
 <translation id="1396446129537741364">Sinusubukan ng Chromium na magpakita ng mga password.</translation>
@@ -253,6 +254,7 @@
 <translation id="6717134281241384636">Hindi maaaring gamitin ang iyong profile dahil mula ito sa isang mas bagong bersyon ng Chromium.
 
 Maaaring hindi available ang ilang tampok. Mangyaring tumukoy ng ibang direktoryo ng profile o gumamit ng mas bagong bersyon ng Chromium.</translation>
+<translation id="6730677189742196061">Pinabilis ng Memory Saver ang Chromium</translation>
 <translation id="6734291798041940871">Naka-install na ang Chromium para sa lahat ng user sa iyong computer.</translation>
 <translation id="673636774878526923">Para ma-access ang iyong mga bagay sa Chromium sa lahat ng device mo, mag-sign in, at pagkatapos ay i-on ang pag-sync.</translation>
 <translation id="6774082503108938489">Na-off ng iyong magulang ang "Mga pahintulot para sa mga site, app, at extension" para sa Chromium. Hindi pinapayagan ang pag-enable sa <ph name="EXTENSION_TYPE_PARAMETER" /> na ito.</translation>
diff --git a/chrome/app/resources/chromium_strings_gu.xtb b/chrome/app/resources/chromium_strings_gu.xtb
index c0989d5..1e1d02a 100644
--- a/chrome/app/resources/chromium_strings_gu.xtb
+++ b/chrome/app/resources/chromium_strings_gu.xtb
@@ -12,6 +12,7 @@
 <translation id="1131805035311359397">ડેટા ઉલ્લંઘન અને અન્ય સુરક્ષાની સમસ્યાથી તમારા પાસવર્ડ સુરક્ષિત છે કે નહીં તે ચેક કરવા માટે, <ph name="BEGIN_LINK" />Chromeiumમાં સાઇન ઇન કરો<ph name="END_LINK" />.</translation>
 <translation id="1185134272377778587">Chromium વિશે</translation>
 <translation id="1203500561924088507">ઇન્સ્ટૉલ કરવા બદલ આભાર. <ph name="BUNDLE_NAME" />નો ઉપયોગ કરતા પહેલાં તમારે તમારું બ્રાઉઝર ફરી શરૂ કરવું આવશ્યક છે.</translation>
+<translation id="1231839967188101156">જ્યારે ચાલુ હોય, ત્યારે Chromium નિષ્ક્રિય ટૅબમાંથી મેમરી ખાલી કરે છે. આ સક્રિય ટૅબ અને અન્ય ઍપને વધુ કમ્પ્યુટર સંસાધનો આપે છે અને Chromiumને વધુ ઝડપી રાખે છે. તમે તમારા નિષ્ક્રિય ટૅબ પર પાછા જાઓ ત્યારે તે ઑટોમૅટિક રીતે ફરી સક્રિય થાય છે. <ph name="BEGIN_LINK" />વધુ જાણો<ph name="END_LINK" /></translation>
 <translation id="1315551408014407711">તમારી નવી Chromium પ્રોફાઇલ સેટઅપ કરો</translation>
 <translation id="1385859895174722837">Chromiumમાં Google Assistant</translation>
 <translation id="1396446129537741364">Chromium પાસવર્ડ્સ બતાવવાનો પ્રયાસ કરી રહ્યું છે.</translation>
@@ -253,6 +254,7 @@
 <translation id="6717134281241384636">તમારી પ્રોફાઇલનો ઉપયોગ કરી શકાતો નથી કારણ કે તે Chromiumના નવા વર્ઝન તરફથી છે.
 
 કેટલીક સુવિધાઓ ઉપલબ્ધ થઈ શકે છે. કૃપા કરીને અલગ પ્રોફાઇલ ડિરેક્ટરીનો ઉલ્લેખ કરો અથવા Chromiumના નવા વર્ઝનનો ઉપયોગ કરો.</translation>
+<translation id="6730677189742196061">મેમરી સેવર Chromiumને વધુ ઝડપી બનાવે છે</translation>
 <translation id="6734291798041940871">Chromium, તમારા કમ્પ્યુટર પર તમામ વપરાશકર્તાઓ માટે પહેલાંથી ઇન્સ્ટૉલ કરેલ છે.</translation>
 <translation id="673636774878526923">Chromium પરની તમારી વસ્તુઓને તમારા બધા ડિવાઇસ પર ઍક્સેસ કરવા માટે, સાઇન ઇન કરો અને પછી સિંક કરવાની સુવિધા ચાલુ કરો.</translation>
 <translation id="6774082503108938489">તમારા માતાપિતાએ Chromium માટે "સાઇટ, ઍપ અને એક્સ્ટેન્શન માટેની પરવાનગીઓ" બંધ કરી છે. આ <ph name="EXTENSION_TYPE_PARAMETER" /> ચાલુ કરવાની મંજૂરી નથી.</translation>
diff --git a/chrome/app/resources/chromium_strings_hr.xtb b/chrome/app/resources/chromium_strings_hr.xtb
index 5234bbbc..ef900c2 100644
--- a/chrome/app/resources/chromium_strings_hr.xtb
+++ b/chrome/app/resources/chromium_strings_hr.xtb
@@ -10,6 +10,7 @@
 <translation id="1131805035311359397">Da biste provjerili jesu li vaše zaporke sigurne od povrede podataka i drugih poteškoća sa sigurnošću, <ph name="BEGIN_LINK" />prijavite se na Chromium<ph name="END_LINK" />.</translation>
 <translation id="1185134272377778587">O pregledniku Chromium</translation>
 <translation id="1203500561924088507">Zahvaljujemo što ste izvršili instaliranje. Da biste mogli koristiti <ph name="BUNDLE_NAME" />, morate ponovno pokrenuti preglednik.</translation>
+<translation id="1261119230216066228">Štednja memorije učinila je Chromium bržim</translation>
 <translation id="1315551408014407711">Postavite novi profil u Chromiumu</translation>
 <translation id="1385859895174722837">Google asistent u Chromiumu</translation>
 <translation id="1396446129537741364">Chromium pokušava prikazati zaporke.</translation>
@@ -208,6 +209,7 @@
 <translation id="6055895534982063517">Dostupna je nova verzija preglednika Chromium, brža no ikad.</translation>
 <translation id="6063093106622310249">&amp;Otvori u Chromiumu</translation>
 <translation id="6072279588547424923">Proširenje <ph name="EXTENSION_NAME" /> dodano je u Chromium</translation>
+<translation id="6072463441809498330">Ubrzavanje Chromiuma</translation>
 <translation id="608006075545470555">Dodavanje poslovnog profila u ovaj preglednik</translation>
 <translation id="6096348254544841612">Prilagodite i kontrolirajte Chromium. Dostupno je ažuriranje.</translation>
 <translation id="6119438414301547735">Omogućuje proširenju da prikazuje zahtjeve za pristup na alatnoj traci Chromiuma</translation>
diff --git a/chrome/app/resources/chromium_strings_hu.xtb b/chrome/app/resources/chromium_strings_hu.xtb
index 887fba6..629c5fc 100644
--- a/chrome/app/resources/chromium_strings_hu.xtb
+++ b/chrome/app/resources/chromium_strings_hu.xtb
@@ -10,6 +10,7 @@
 <translation id="1131805035311359397">Ha ellenőrizni szeretné, hogy jelszavai biztonságban vannak-e az adatvédelmi incidensektől és más biztonsági problémáktól, <ph name="BEGIN_LINK" />jelentkezzen be a Chromiumba<ph name="END_LINK" />.</translation>
 <translation id="1185134272377778587">A Chromium névjegye</translation>
 <translation id="1203500561924088507">Köszönjük, hogy elvégezte a telepítést. A(z) <ph name="BUNDLE_NAME" /> használata előtt újra kell indítania a böngészőt.</translation>
+<translation id="1231839967188101156">Ha be van kapcsolva, a Chromium memóriát szabadít fel az inaktív lapokból. Így az aktív lapok és más alkalmazások több számítógépes erőforrást kapnak, és a Chromium gyors marad. Az inaktív lapok automatikusan ismét aktívak lesznek, amikor visszalép rájuk. <ph name="BEGIN_LINK" />További információ<ph name="END_LINK" />.</translation>
 <translation id="1315551408014407711">Új Chromium-profil beállítása</translation>
 <translation id="1385859895174722837">Google Segéd a Chromiumban</translation>
 <translation id="1396446129537741364">A Chromium megpróbálja megjeleníteni a jelszavakat.</translation>
@@ -249,6 +250,7 @@
 <translation id="668175097507315160">A ChromiumOS egy bejelentkezési hiba miatt nem tudta szinkronizálni az adatokat.</translation>
 <translation id="6709350901466051922">A Chromiumnak mikrofonhasználati engedélyre van szüksége ehhez a webhelyhez</translation>
 <translation id="6717134281241384636">A profilja nem használható, mert az a Chromium egy újabb verziójából származik. Előfordulhat, hogy egyes funkciók nem érhetők el. Kérjük, adjon meg egy másik profilmappát, vagy használja a Chromium újabb verzióját.</translation>
+<translation id="6730677189742196061">A memóriatakarékos mód felgyorsította a Chromiumot</translation>
 <translation id="6734291798041940871">A Chromium már telepítve van az összes felhasználó számára a számítógépen.</translation>
 <translation id="673636774878526923">Ha szeretne minden eszközén hozzáférni Chromium-anyagaihoz, jelentkezzen be, majd kapcsolja be a szinkronizálást.</translation>
 <translation id="6774082503108938489">Szülőd kikapcsolta a Chromium „Engedélyek webhelyek, alkalmazások és bővítmények számára” beállítását. A(z) <ph name="EXTENSION_TYPE_PARAMETER" /> nem engedélyezhető.</translation>
diff --git a/chrome/app/resources/chromium_strings_id.xtb b/chrome/app/resources/chromium_strings_id.xtb
index a9f1aa89..d0fd0ca 100644
--- a/chrome/app/resources/chromium_strings_id.xtb
+++ b/chrome/app/resources/chromium_strings_id.xtb
@@ -10,6 +10,7 @@
 <translation id="1131805035311359397">Untuk memeriksa apakah sandi Anda aman dari pelanggaran data dan masalah keamanan lainnya, <ph name="BEGIN_LINK" />login ke Chromium<ph name="END_LINK" />.</translation>
 <translation id="1185134272377778587">Tentang Chromium</translation>
 <translation id="1203500561924088507">Terima kasih telah menginstal. Anda harus memulai ulang browser sebelum menggunakan <ph name="BUNDLE_NAME" />.</translation>
+<translation id="1231839967188101156">Jika diaktifkan, Chromium akan membebaskan memori dari tab yang tidak aktif. Tindakan ini akan memberikan lebih banyak resource komputer untuk tab aktif dan aplikasi lainnya, serta menjaga Chromium tetap cepat. Tab yang tidak aktif akan otomatis menjadi aktif lagi saat Anda kembali ke tab tersebut. <ph name="BEGIN_LINK" />Pelajari lebih lanjut<ph name="END_LINK" /></translation>
 <translation id="1315551408014407711">Siapkan profil Chromium baru Anda</translation>
 <translation id="1385859895174722837">Asisten Google di Chromium</translation>
 <translation id="1396446129537741364">Chromium mencoba menampilkan sandi.</translation>
@@ -251,6 +252,7 @@
 <translation id="6717134281241384636">Profil Anda tidak dapat digunakan karena berasal dari Chromium versi yang lebih baru.
 
 Sebagian fitur mungkin tidak tersedia. Tentukan direktori profil yang berbeda atau gunakan versi Chromium yang lebih baru.</translation>
+<translation id="6730677189742196061">Penghemat Memori membuat Chromium lebih cepat</translation>
 <translation id="6734291798041940871">Chromium sudah terpasang untuk semua pengguna di komputer Anda.</translation>
 <translation id="673636774878526923">Untuk mengakses aktivitas Chromium di semua perangkat, login lalu aktifkan sinkronisasi.</translation>
 <translation id="6774082503108938489">Orang tuamu telah menonaktifkan "Izin untuk situs, aplikasi, dan ekstensi" untuk Chromium. Tindakan mengaktifkan <ph name="EXTENSION_TYPE_PARAMETER" /> ini tidak diizinkan.</translation>
diff --git a/chrome/app/resources/chromium_strings_ka.xtb b/chrome/app/resources/chromium_strings_ka.xtb
index 97615f90..73981a36 100644
--- a/chrome/app/resources/chromium_strings_ka.xtb
+++ b/chrome/app/resources/chromium_strings_ka.xtb
@@ -13,6 +13,7 @@
 <translation id="1185134272377778587">Chromium-ის შესახებ</translation>
 <translation id="1203500561924088507">გმადლობთ დაინსტალირებისთვის. <ph name="BUNDLE_NAME" />-ის გამოყენებამდე თქვენი ბრაუზერი უნდა გადატვირთოთ.</translation>
 <translation id="1231839967188101156">ჩართვის შემთხვევაში, Chromium გამოათავისუფლებს მეხსიერებას არააქტიური ჩანართებიდან. აქტიურ ჩანართებსა და სხვა აპებს კომპიუტერის მეტი რესურსის გამოყენების საშუალება მიეცემა, რაც დააჩქარებს Chromium-საც. თქვენი არააქტიური ჩანართები ავტომატურად გააქტიურდება, როცა მათ დაუბრუნდებით. <ph name="BEGIN_LINK" />შეიტყვეთ მეტი<ph name="END_LINK" /></translation>
+<translation id="1261119230216066228">მეხსიერების დამზოგმა ააჩქარა Chromium</translation>
 <translation id="1315551408014407711">შექმენით ახალი Chromium პროფილი</translation>
 <translation id="1385859895174722837">Google ასისტენტი Chromium-ში</translation>
 <translation id="1396446129537741364">Chromium ცდილობს პაროლების ჩვენებას.</translation>
@@ -211,6 +212,7 @@
 <translation id="6055895534982063517">ხელმისაწვდომია Chromium-ის ახალი ვერსია, რომელიც უფრო სწრაფია.</translation>
 <translation id="6063093106622310249">Chromium-ში &amp;გახსნა</translation>
 <translation id="6072279588547424923"><ph name="EXTENSION_NAME" /> დაემატა Chromium-ს</translation>
+<translation id="6072463441809498330">ააჩქარეთ Chromium-ის მუშაობა</translation>
 <translation id="608006075545470555">დაამატეთ სამსახურის პროფილი ამ ბრაუზერს</translation>
 <translation id="6096348254544841612">მოირგეთ და გააკონტროლეთ Chromium. ხელმისაწვდომია განახლება.</translation>
 <translation id="6119438414301547735">გაფართოებისთვის Chromium-ის ხელსაწყოთა ზოლში წვდომის მოთხოვნების ჩვენების დაშვება</translation>
diff --git a/chrome/app/resources/chromium_strings_kn.xtb b/chrome/app/resources/chromium_strings_kn.xtb
index 9344738..3a43960 100644
--- a/chrome/app/resources/chromium_strings_kn.xtb
+++ b/chrome/app/resources/chromium_strings_kn.xtb
@@ -10,6 +10,7 @@
 <translation id="1131805035311359397">ನಿಮ್ಮ ಇತರ ಪಾಸ್‌ವರ್ಡ್‌ಗಳು ಡೇಟಾ ಉಲ್ಲಂಘನೆ ಮತ್ತು ಭದ್ರತಾ ಸಮಸ್ಯೆಗಳಿಂದ ಸುರಕ್ಷಿತವಾಗಿವೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಲು, <ph name="BEGIN_LINK" />Chromium ಗೆ ಸೈನ್ ಇನ್ ಮಾಡಿ<ph name="END_LINK" />.</translation>
 <translation id="1185134272377778587">Chromium ಕುರಿತು</translation>
 <translation id="1203500561924088507">ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿದಕ್ಕಾಗಿ ಧನ್ಯವಾದಗಳು. <ph name="BUNDLE_NAME" /> ಅನ್ನು ಬಳಸುವ ಮೊದಲು ನೀವು ನಿಮ್ಮ ಬ್ರೌಸರ್ ಅನ್ನು ಮರುಪ್ರಾರಂಭಿಸಬೇಕು.</translation>
+<translation id="1231839967188101156">ಇದು ಆನ್ ಆಗಿದ್ದಾಗ, ನಿಷ್ಕ್ರಿಯ ಟ್ಯಾಬ್‌ಗಳಿಂದ Chromium ಮೆಮೊರಿಯನ್ನು ಮುಕ್ತಗೊಳಿಸುತ್ತದೆ. ಸಕ್ರಿಯ ಟ್ಯಾಬ್‌ಗಳು ಹಾಗೂ ಇತರ ಆ್ಯಪ್‌ಗಳಿಗೆ ಇದು ಹೆಚ್ಚು ಕಂಪ್ಯೂಟರ್ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ ಮತ್ತು Chromium ಅನ್ನು ವೇಗವಾಗಿಡುತ್ತದೆ. ನಿಮ್ಮ ನಿಷ್ಕ್ರಿಯ ಟ್ಯಾಬ್‌ಗಳಿಗೆ ನೀವು ಮರಳಿದಾಗ, ಅವು ಮತ್ತೆ ಸಕ್ರಿಯವಾಗುತ್ತವೆ. <ph name="BEGIN_LINK" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="END_LINK" /></translation>
 <translation id="1315551408014407711">ನಿಮ್ಮ ಹೊಸ Chromium ಪ್ರೊಫೈಲ್ ಅನ್ನು ಸೆಟಪ್ ಮಾಡಿ</translation>
 <translation id="1385859895174722837">Chromium ನಲ್ಲಿ Google Assistant</translation>
 <translation id="1396446129537741364">Chromium ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ತೋರಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತಿದೆ.</translation>
@@ -247,6 +248,7 @@
 <translation id="668175097507315160">ಸೈನ್ ಇನ್ ಮಾಡುವಲ್ಲಿ ದೋಷವಿರುವ ಕಾರಣ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಸಿಂಕ್ ಮಾಡಲು ChromiumOS ಗೆ ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ.</translation>
 <translation id="6709350901466051922">ಈ ಸೈಟ್‌ಗೆ ಸಂಬಂಧಿಸಿದಂತೆ Chromium ಗೆ ಮೈಕ್ರೊಫೋನ್ ಅನುಮತಿಯ ಅಗತ್ಯವಿದೆ</translation>
 <translation id="6717134281241384636">Chromium ನ ಹೊಸ ಆವೃತ್ತಿಯಾಗಿರುವುದರಿಂದ ನಿಮ್ಮ ಪ್ರೊಫೈಲ್ ಅನ್ನು ಬಳಸಲಾಗುವುದಿಲ್ಲ. ಕೆಲವೊಂದು ವೈಶಿಷ್ಟ್ಯಗಳು ಲಭ್ಯವಿಲ್ಲದಿರಬಹುದು. ದಯವಿಟ್ಟು ಬೇರೆ ಒಂದು ಪೊಫೈಲ್ ಡೈರೆಕ್ಟರಿ ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿ ಅಥವಾ Chromium ನ ಹೊಸ ಆವೃತ್ತಿಯನ್ನು ಬಳಸಿ.</translation>
+<translation id="6730677189742196061">ಮೆಮೊರಿ ಸೇವರ್‌ನಿಂದಾಗಿ Chromium ನ ವೇಗ ಇನ್ನೂ ಹೆಚ್ಚಾಗಿದೆ</translation>
 <translation id="6734291798041940871">ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್‌ನಲ್ಲಿನ ಎಲ್ಲ ಬಳಕೆದಾರರಿಗೆ ಈಗಾಗಲೇ Chromium ಸ್ಥಾಪಿತವಾಗಿದೆ.</translation>
 <translation id="673636774878526923">ನಿಮ್ಮ Chromium ವಿಷಯಗಳನ್ನು ಎಲ್ಲಾ ಸಾಧನಗಳಾದ್ಯಂತ ಪ್ರವೇಶಿಸಲು, ಸೈನ್ ಇನ್ ಮಾಡಿ, ನಂತರ ಸಿಂಕ್ ಅನ್ನು ಆನ್ ಮಾಡಿ.</translation>
 <translation id="6774082503108938489">ನಿಮ್ಮ ಪೋಷಕರು Chromium ನಲ್ಲಿ "ಸೈಟ್‌ಗಳು, ಆ್ಯಪ್‌ಗಳು ಮತ್ತು ವಿಸ್ತರಣೆಗಳಿಗಾಗಿ ಅನುಮತಿಗಳನ್ನು" ಆಫ್ ಮಾಡಿದ್ದಾರೆ. ಈ <ph name="EXTENSION_TYPE_PARAMETER" /> ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು ಅನುಮತಿಯಿಲ್ಲ.</translation>
diff --git a/chrome/app/resources/chromium_strings_ky.xtb b/chrome/app/resources/chromium_strings_ky.xtb
index b9115a5..880c3956 100644
--- a/chrome/app/resources/chromium_strings_ky.xtb
+++ b/chrome/app/resources/chromium_strings_ky.xtb
@@ -12,6 +12,7 @@
 <translation id="1131805035311359397">Сырсөздөрүңүздүн бекем корголгонун, ошондой эле коопсуздукка байланыштуу көйгөйлөрдү текшерүү үчүн <ph name="BEGIN_LINK" />Chromium'га кириңиз<ph name="END_LINK" />.</translation>
 <translation id="1185134272377778587">Chromium жөнүндө</translation>
 <translation id="1203500561924088507">Орнотуп алганыңыз үчүн рахмат. <ph name="BUNDLE_NAME" /> топтомун колдонуп баштоодон мурда серепчини өчүрүп күйгүзүңүз.</translation>
+<translation id="1261119230216066228">Эстутумду үнөмдөгүч аркылуу Chromium тезирээк иштеп калды</translation>
 <translation id="1315551408014407711">Жаңы Chromium профилин жөндөп алыңыз</translation>
 <translation id="1385859895174722837">Chromium'дагы Google Жардамчы</translation>
 <translation id="1396446129537741364">Chromium сырсөздөрдү көрсөткөнгө аракет кылып жатат.</translation>
@@ -210,6 +211,7 @@
 <translation id="6055895534982063517">Chromium'дун чагылгандай тездик менен иштеген жаңы версиясы бар.</translation>
 <translation id="6063093106622310249">&amp;Chromiumда ачуу</translation>
 <translation id="6072279588547424923"><ph name="EXTENSION_NAME" /> Chromium'га кошулду</translation>
+<translation id="6072463441809498330">Chromium'ду ылдамдатуу</translation>
 <translation id="608006075545470555">Ушул серепчиге жумуш профилин кошуу</translation>
 <translation id="6096348254544841612">Chromium'ду ыңгайлаштырып алып, көзөмөлдөңүз. Жаңыртуу бар.</translation>
 <translation id="6119438414301547735">Кеңейтүүгө Chromium'дун куралдар тилкесинде мүмкүнчүлүк алуу сурамдарын көрсөтүүгө уруксат берүү</translation>
diff --git a/chrome/app/resources/chromium_strings_lo.xtb b/chrome/app/resources/chromium_strings_lo.xtb
index c53ef3d9..3e8c90c 100644
--- a/chrome/app/resources/chromium_strings_lo.xtb
+++ b/chrome/app/resources/chromium_strings_lo.xtb
@@ -12,6 +12,7 @@
 <translation id="1131805035311359397">ເພື່ອກວດເບິ່ງວ່າລະຫັດຜ່ານຂອງທ່ານປອດໄພຈາກການລະເມີດຂໍ້ມູນ ແລະ ບັນຫາຄວາມປອດໄພອື່ນຫຼືບໍ່, ກະລຸນາ <ph name="BEGIN_LINK" />ເຂົ້າສູ່ລະບົບ Chromium<ph name="END_LINK" />.</translation>
 <translation id="1185134272377778587">ກ່ຽວ​ກັບ Chromium</translation>
 <translation id="1203500561924088507">ຂໍຂອບໃຈສຳລັບການຕິດຕັ້ງ. ທ່ານຈະຕ້ອງຣີສະຕາດໂປຣແກຣມທ່ອງເວັບຂອງທ່ານກ່ອນການໃຊ້ <ph name="BUNDLE_NAME" />.</translation>
+<translation id="1231839967188101156">ເມື່ອເປີດໃຊ້, Chromium ຈະສ້າງພື້ນທີ່ຫວ່າງຈາກແຖບທີ່ບໍ່ເຮັດວຽກ. ນີ້ຈະເຮັດໃຫ້ແຖບທີ່ເຮັດວຽກ ແລະ ແອັບອື່ນໆມີຊັບພະຍາກອນຄອມພິວເຕີຫຼາຍຂຶ້ນ ແລະ ເຮັດໃຫ້ Chromium ຮັກສາຄວາມໄວໄດ້. ແຖບທີ່ບໍ່ເຮັດວຽກຂອງທ່ານຈະກັບມາເຮັດວຽກອັດຕະໂນມັດເມື່ອທ່ານກັບໄປຫາພວກມັນ. <ph name="BEGIN_LINK" />ສຶກສາເພີ່ມເຕີມ<ph name="END_LINK" /></translation>
 <translation id="1315551408014407711">ຕັ້ງຄ່າໂປຣໄຟລ໌ Chromium ໃໝ່ຂອງທ່ານ</translation>
 <translation id="1385859895174722837">ຜູ້ຊ່ວຍ Google ໃນ Chromium</translation>
 <translation id="1396446129537741364">Chromium ກໍາລັງພະຍາຍາມສະແດງລະຫັດຜ່ານ.</translation>
@@ -253,6 +254,7 @@
 <translation id="6717134281241384636">ບໍ່ສາມາດໃຊ້ໂປຣໄຟລ໌ຂອງທ່ານໄດ້ ເພາະວ່າມັນມາຈາກ Chromium ລຸ້ນໃໝ່ກ່ວາ.
 
 ບາງ​ຄຸນສົມບັດອາດຈະບໍ່ມີ​ໃຫ້. ກະລຸນາລະບຸລາຍຊື່ບັນຊີໂປຣໄຟລ໌ຕ່າງ ຫຼືໃຊ້ Chromium ລຸ້ນໃໝ່ກ່ວາ.</translation>
+<translation id="6730677189742196061">ຕົວປະຢັດໜ່ວຍຄວາມຈຳເຮັດໃຫ້ Chromium ໄວຂຶ້ນ</translation>
 <translation id="6734291798041940871">ຕິດຕັ້ງ Chromium ສຳລັບຜູ້ໃຊ້ທຸກຄົນໃນຄອມພິວເຕີຂອງທ່ານແລ້ວ.</translation>
 <translation id="673636774878526923">ເພື່ອເຂົ້າເຖິງຂໍ້ມູນໃນ Chromium ຂອງທ່ານຢູ່ໃນອຸປະກອນທັງໝົດຂອງທ່ານ, ກະລຸນາເຂົ້າສູ່ລະບົບ ແລ້ວເປີດການຊິ້ງຂໍ້ມູນ.</translation>
 <translation id="6774082503108938489">ພໍ່ແມ່ຂອງທ່ານໄດ້ປິດ "ການອະນຸຍາດສຳລັບເວັບໄຊ, ແອັບ ແລະ ສ່ວນຂະຫຍາຍ" ສຳລັບ Chromium ແລ້ວ. ການເປີດການນຳໃຊ້ <ph name="EXTENSION_TYPE_PARAMETER" /> ນີ້ບໍ່ໄດ້ຮັບອະນຸຍາດ.</translation>
diff --git a/chrome/app/resources/chromium_strings_mk.xtb b/chrome/app/resources/chromium_strings_mk.xtb
index 447fdbf..501b6af 100644
--- a/chrome/app/resources/chromium_strings_mk.xtb
+++ b/chrome/app/resources/chromium_strings_mk.xtb
@@ -13,6 +13,7 @@
 <translation id="1185134272377778587">За Chromium</translation>
 <translation id="1203500561924088507">Фала за инсталирањето. Мора да го рестартирате прелистувачот пред да користите <ph name="BUNDLE_NAME" />.</translation>
 <translation id="1231839967188101156">Кога е вклучена, Chromium ослободува меморија од неактивните картички. Ова им овозможува на активните картички и другите апликации да имаат повеќе компјутерски ресурси и ја одржува брзината на Chromium. Вашите неактивни картички автоматски стануваат активни повторно кога ќе се вратите на нив. <ph name="BEGIN_LINK" />Дознајте повеќе<ph name="END_LINK" /></translation>
+<translation id="1261119230216066228">„Штедачот на меморија“ го направи Chromium побрз</translation>
 <translation id="1315551408014407711">Поставете нов профил на Chromium</translation>
 <translation id="1385859895174722837">„Помошникот на Google“ во Chromium</translation>
 <translation id="1396446129537741364">Chromium се обидува да покаже лозинки.</translation>
@@ -211,6 +212,7 @@
 <translation id="6055895534982063517">Достапна е нова верзија на Chromium и побрза е од кога било.</translation>
 <translation id="6063093106622310249">&amp;Отвори во Chromium</translation>
 <translation id="6072279588547424923"><ph name="EXTENSION_NAME" /> беше додадена на Chromium</translation>
+<translation id="6072463441809498330">Имајте побрз Chromium</translation>
 <translation id="608006075545470555">Додајте работен профил во овој прелистувач</translation>
 <translation id="6096348254544841612">Приспособете го и контролирајте го Chromium. Достапно е ажурирање.</translation>
 <translation id="6119438414301547735">Дозволете екстензијата да прикажува барања за пристап во алатникот на Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_mr.xtb b/chrome/app/resources/chromium_strings_mr.xtb
index 6b86e41..fcd68d1 100644
--- a/chrome/app/resources/chromium_strings_mr.xtb
+++ b/chrome/app/resources/chromium_strings_mr.xtb
@@ -11,6 +11,7 @@
 <translation id="1131805035311359397">तुमचे पासवर्ड डेटा भंग आणि इतर सुरक्षा समस्यांपासून सुरक्षित आहेत हे तपासण्यासाठी, <ph name="BEGIN_LINK" />Chromium मध्ये साइन इन करा<ph name="END_LINK" />.</translation>
 <translation id="1185134272377778587">Chromium बद्दल</translation>
 <translation id="1203500561924088507">इंस्टॉल केल्याबद्दल धन्यवाद. तुम्ही <ph name="BUNDLE_NAME" /> वापरण्यापूर्वी तुमचा ब्राउझर रीस्टार्ट करणे आवश्यक आहे.</translation>
+<translation id="1231839967188101156">सुरू असेल, तेव्हा Chromium हे निष्क्रिय टॅबमधील मेमरी मोकळी करते. हे अ‍ॅक्टिव्ह टॅब आणि इतर अ‍ॅप्सना आणखी कॉंप्युटर स्रोत देते व Chromium ला जलद ठेवते. तुम्ही तुमच्या निष्क्रिय टॅबवर परत गेल्यावर ते पुन्हा आपोआप अ‍ॅक्टिव्ह होतात. <ph name="BEGIN_LINK" />अधिक जाणून घ्या<ph name="END_LINK" /></translation>
 <translation id="1315551408014407711">तुमची नवीन Chromium प्रोफाइल सेट करा</translation>
 <translation id="1385859895174722837">Chromium मधील Google Assistant</translation>
 <translation id="1396446129537741364">Chromium पासवर्ड दर्शविण्याचा प्रयत्न करत आहे.</translation>
@@ -252,6 +253,7 @@
 <translation id="6717134281241384636">तुमची प्रोफाइल वापरली जाऊ शकत नाही, कारण ती Chromium च्‍या नवीनतम आवृत्तीमधील आहे.
 
 काही वैशिष्‍ट्ये उपलब्ध नसू शकतील. कृपया एक भिन्न प्रोफाइल डिरेक्टरी नमूद करा किंवा Chromium ची नवीन आवृत्ती वापरा.</translation>
+<translation id="6730677189742196061">मेमरी सेव्हरने Chromium ला आणखी जलद केले आहे</translation>
 <translation id="6734291798041940871">तुमच्या कॉंप्युटरवर सर्व वापरकर्त्यांसाठी आधीच Chromium इंस्टॉल केले आहे.</translation>
 <translation id="673636774878526923">तुमचा Chromium आशय तुमच्या सर्व डिव्हाइसवर अ‍ॅक्सेस करण्यासाठी साइन इन करा, त्यानंतर सिंक सुरू करा.</translation>
 <translation id="6774082503108938489">तुमच्या पालकांनी Chromium साठी "साइट, अ‍ॅप्स आणि एक्स्टेंशनकरिता परवानग्या" सुरू केल्या आहेत. हे <ph name="EXTENSION_TYPE_PARAMETER" /> सुरू करण्यास अनुमती नाही.</translation>
diff --git a/chrome/app/resources/chromium_strings_ms.xtb b/chrome/app/resources/chromium_strings_ms.xtb
index 48aa36c4..c98d72b 100644
--- a/chrome/app/resources/chromium_strings_ms.xtb
+++ b/chrome/app/resources/chromium_strings_ms.xtb
@@ -10,6 +10,7 @@
 <translation id="1131805035311359397">Untuk menyemak sama ada kata laluan anda selamat daripada pelanggaran data dan isu keselamatan lain, <ph name="BEGIN_LINK" />log masuk ke Chromium<ph name="END_LINK" />.</translation>
 <translation id="1185134272377778587">Mengenai Chromium</translation>
 <translation id="1203500561924088507">Terima kasih kerana memasang. Anda perlu memulakan semula penyemak imbas anda sebelum menggunakan <ph name="BUNDLE_NAME" />.</translation>
+<translation id="1231839967188101156">Apabila dihidupkan, Chromium mengosongkan memori daripada tab yang tidak aktif. Ini memberikan tab aktif dan apl lain lebih banyak sumber komputer dan memastikan Chromium pantas. Tab anda yang tidak aktif menjadi aktif semula secara automatik apabila anda kembali kepada tab tersebut. <ph name="BEGIN_LINK" />Ketahui lebih lanjut<ph name="END_LINK" /></translation>
 <translation id="1315551408014407711">Sediakan profil Chromium baharu anda</translation>
 <translation id="1385859895174722837">Google Assistant dalam Chromium</translation>
 <translation id="1396446129537741364">Chromium sedang cuba memaparkan kata laluan.</translation>
@@ -251,6 +252,7 @@
 <translation id="6717134281241384636">Profil anda tidak boleh digunakan kerana profil anda dihasilkan dari versi Chromium yang lebih baharu.
 
 Beberapa ciri mungkin tidak tersedia. Sila nyatakan direktori profil yang berbeza atau gunakan versi Chromium yang lebih baharu.</translation>
+<translation id="6730677189742196061">Penjimat Memori menjadikan Chromium lebih pantas</translation>
 <translation id="6734291798041940871">Chromium telah dipasang untuk semua pengguna pada komputer anda.</translation>
 <translation id="673636774878526923">Untuk mengakses bahan Chromium anda pada semua peranti anda, log masuk, kemudian hidupkan penyegerakan.</translation>
 <translation id="6774082503108938489">Ibu/bapa anda telah mematikan "Kebenaran untuk laman web, apl dan sambungan" untuk Chromium. Tindakan mendayakan <ph name="EXTENSION_TYPE_PARAMETER" /> ini tidak dibenarkan.</translation>
diff --git a/chrome/app/resources/chromium_strings_my.xtb b/chrome/app/resources/chromium_strings_my.xtb
index 4eb639b0..ebf1d7fc 100644
--- a/chrome/app/resources/chromium_strings_my.xtb
+++ b/chrome/app/resources/chromium_strings_my.xtb
@@ -12,6 +12,7 @@
 <translation id="1131805035311359397">သင်၏စကားဝှက်များတွင် ဒေတာပေါက်ကြားမှုနှင့် အခြားသော လုံခြုံရေးပြဿနာများ ရှိ၊ မရှိ စစ်ဆေးရန် <ph name="BEGIN_LINK" />Chromium သို့ လက်မှတ်ထိုးဝင်ပါ<ph name="END_LINK" />။</translation>
 <translation id="1185134272377778587">Chromium အကြောင်း</translation>
 <translation id="1203500561924088507">ထည့်သွင်းသည့်အတွက် ကျေးဇူးတင်ပါသည်။ <ph name="BUNDLE_NAME" /> အသုံးမပြုမီ သင့်ဘရောင်ဇာကို ပြန်စရမည်။</translation>
+<translation id="1231839967188101156">ဖွင့်ထားပါက Chromium သည် အသုံးမပြုသည့်တဘ်များရှိ မှတ်ဉာဏ်ကို နေရာလွတ်ပြုလုပ်သည်။ ၎င်းက အသုံးပြုနေသည့်တဘ်နှင့် အခြားအက်ပ်များအား ကွန်ပျူတာရင်းမြစ် ပိုပေးပြီး Chromium ကို မြန်ဆန်စေသည်။ အသုံးမပြုသည့်တဘ်များသို့ ပြန်သွားသောအခါ ၎င်းတို့က အလိုအလျောက် ပြန်လည်လုပ်ဆောင်လာမည်။ <ph name="BEGIN_LINK" />ပိုမိုလေ့လာရန်<ph name="END_LINK" /></translation>
 <translation id="1315551408014407711">သင်၏ Chromium ပရိုဖိုင်အသစ်ကို စနစ်ထည့်သွင်းပါ</translation>
 <translation id="1385859895174722837">Chromium ရှိ Google Assistant</translation>
 <translation id="1396446129537741364">Chromium က စကားဝှက်များကို ပြရန် ကြိုးစားနေသည်။</translation>
@@ -255,6 +256,7 @@
 <translation id="6717134281241384636">သင်၏ ပရိုဖိုင်မှာ ပိုသစ်သော Chromium ဗားရှင်း ဖြစ်နေ၍ သုံးမရနိုင်ပါ။
 
 အင်္ဂါရပ် အချို့ကို ရချင်မှ ရနိုင်မည်။ ကျေးဇူးပြုပြီး အခြား ပရုဖိုင် ဒါရုက်ထရီကို ဖေါ်ပြပေးပါ သို့မဟုတ် ပိုသစ်သည့် Chromium ဗားရှင်းကို အသုံးပြုပါ။</translation>
+<translation id="6730677189742196061">‘မှတ်ဉာဏ်ချွေတာစနစ်’ က Chromium ကို ပိုမြန်စေသည်</translation>
 <translation id="6734291798041940871">Chromium ကို သင့်ကွန်ပျူတာပေါ်ရှိ အသုံးပြုသူများအားလုံးအတွက် ထည့်သွင်းပြီးပါပြီ။</translation>
 <translation id="673636774878526923">သင့်စက်အားလုံးတွင် သင်၏ Chromium နှင့်သက်ဆိုင်သောအရာများကို သုံးရန် လက်မှတ်ထိုးဝင်ပြီး စင့်ခ်လုပ်ခြင်းကို ဖွင့်ပါ။</translation>
 <translation id="6774082503108938489">Chromium အတွက် "ဝဘ်ဆိုက်၊ အက်ပ်နှင့် နောက်ဆက်တွဲ ခွင့်ပြုချက်များ" ကို သင့်မိဘက ပိတ်လိုက်သည်။ ဤ <ph name="EXTENSION_TYPE_PARAMETER" /> ဖွင့်ခြင်းကို ခွင့်မပြုပါ။</translation>
diff --git a/chrome/app/resources/chromium_strings_nl.xtb b/chrome/app/resources/chromium_strings_nl.xtb
index 82039d89..8e56d7c 100644
--- a/chrome/app/resources/chromium_strings_nl.xtb
+++ b/chrome/app/resources/chromium_strings_nl.xtb
@@ -12,6 +12,8 @@
 <translation id="1131805035311359397">Als je wilt checken of je wachtwoorden zijn beveiligd tegen gegevenslekken en andere beveiligingsproblemen, <ph name="BEGIN_LINK" />log je in bij Chromium<ph name="END_LINK" />.</translation>
 <translation id="1185134272377778587">Over Chromium</translation>
 <translation id="1203500561924088507">Bedankt voor het installeren. Je moet de browser opnieuw opstarten voordat je <ph name="BUNDLE_NAME" /> kunt gebruiken.</translation>
+<translation id="1231839967188101156">Als deze functie aanstaat, maakt Chromium geheugen van inactieve tabbladen vrij. Zo krijgen actieve tabbladen en andere apps meer computerbronnen en blijft Chromium snel. Je inactieve tabbladen worden automatisch weer actief als je ernaar terugkeert. <ph name="BEGIN_LINK" />Meer informatie<ph name="END_LINK" /></translation>
+<translation id="1261119230216066228">Geheugenbesparing heeft Chromium sneller gemaakt</translation>
 <translation id="1315551408014407711">Je nieuwe Chromium-profiel instellen</translation>
 <translation id="1385859895174722837">De Google Assistent in Chromium</translation>
 <translation id="1396446129537741364">Chromium probeert wachtwoorden te bekijken.</translation>
@@ -210,6 +212,7 @@
 <translation id="6055895534982063517">Er is een nieuwe versie van Chromium beschikbaar, en deze is sneller dan ooit.</translation>
 <translation id="6063093106622310249">&amp;Openen in Chromium</translation>
 <translation id="6072279588547424923"><ph name="EXTENSION_NAME" /> is toegevoegd aan Chromium</translation>
+<translation id="6072463441809498330">Maak Chromium sneller</translation>
 <translation id="608006075545470555">Werkprofiel toevoegen aan deze browser</translation>
 <translation id="6096348254544841612">Chromium aanpassen en beheren. Update is beschikbaar</translation>
 <translation id="6119438414301547735">Toestaan dat de extensie toegangsverzoeken toont op de Chromium-werkbalk</translation>
@@ -253,6 +256,7 @@
 <translation id="6717134281241384636">Je profiel kan niet worden gebruikt, omdat dit is gemaakt in een recentere versie van Chromium.
 
 Sommige functies zijn mogelijk niet beschikbaar. Geef een andere profieldirectory op of gebruik een recentere versie van Chromium.</translation>
+<translation id="6730677189742196061">Geheugenbesparing heeft Chromium sneller gemaakt</translation>
 <translation id="6734291798041940871">Chromium is al geïnstalleerd voor alle gebruikers op je computer.</translation>
 <translation id="673636774878526923">Log in en zet synchronisatie aan voor toegang tot je Chromium-gegevens op al je apparaten</translation>
 <translation id="6774082503108938489">Je ouder heeft 'Rechten voor sites, apps en extensies' uitgezet voor Chromium. Je mag deze <ph name="EXTENSION_TYPE_PARAMETER" /> niet aanzetten.</translation>
diff --git a/chrome/app/resources/chromium_strings_no.xtb b/chrome/app/resources/chromium_strings_no.xtb
index 9f18fc0..65fe7986 100644
--- a/chrome/app/resources/chromium_strings_no.xtb
+++ b/chrome/app/resources/chromium_strings_no.xtb
@@ -10,6 +10,8 @@
 <translation id="1131805035311359397">For å sjekke om passordene dine er trygge mot databrudd og andre sikkerhetsproblemer, <ph name="BEGIN_LINK" />logg på Chromium<ph name="END_LINK" />.</translation>
 <translation id="1185134272377778587">Om Chromium</translation>
 <translation id="1203500561924088507">Installasjonen er fullført. Start nettleseren på nytt før du tar i bruk <ph name="BUNDLE_NAME" />.</translation>
+<translation id="1231839967188101156">Når dette er på, frigjør Chromium minne fra inaktive faner. Dette gir aktive faner og andre apper flere datamaskinressurser og holder Chromium rask. De inaktive fanene dine blir automatisk aktive igjen når du går tilbake til dem. <ph name="BEGIN_LINK" />Finn ut mer<ph name="END_LINK" /></translation>
+<translation id="1261119230216066228">Minnesparing har gjort Chromium raskere</translation>
 <translation id="1315551408014407711">Konfigurer den nye Chromium-profilen din</translation>
 <translation id="1385859895174722837">Google-assistenten i Chromium</translation>
 <translation id="1396446129537741364">Chromium prøver å vise passord.</translation>
@@ -208,6 +210,7 @@
 <translation id="6055895534982063517">En nyere versjon av Chromium er tilgjengelig, og den er raskere enn noen gang.</translation>
 <translation id="6063093106622310249">&amp;Åpne i Chromium</translation>
 <translation id="6072279588547424923"><ph name="EXTENSION_NAME" /> er lagt til i Chromium</translation>
+<translation id="6072463441809498330">Gjør Chromium raskere</translation>
 <translation id="608006075545470555">Legg til en jobbprofil i denne nettleseren</translation>
 <translation id="6096348254544841612">Tilpass og kontrollér Chromium. Oppdatering er tilgjengelig.</translation>
 <translation id="6119438414301547735">Tillat at utvidelsen viser tilgangsforespørsler på Chromium-verktøylinjen</translation>
@@ -251,6 +254,7 @@
 <translation id="6717134281241384636">Profilen din kan ikke brukes fordi den kommer fra en nyere versjon av Chromium.
 
 Det er mulig at enkelte funksjoner ikke er tilgjengelige. Angi en annen profilkatalog eller bruk en nyere versjon av Chromium.</translation>
+<translation id="6730677189742196061">Minnesparing har gjort Chromium raskere</translation>
 <translation id="6734291798041940871">Chromium er allerede installert for alle brukerne på datamaskinen din.</translation>
 <translation id="673636774878526923">For å få tilgang til Chromium-tingene dine på alle enhetene dine, logg på og slå på synkronisering.</translation>
 <translation id="6774082503108938489">Forelderen din har slått av «Tillatelser for nettsteder, apper og utvidelser» for Chromium. Du har ikke tillatelse til å slå på denne <ph name="EXTENSION_TYPE_PARAMETER" />.</translation>
diff --git a/chrome/app/resources/chromium_strings_or.xtb b/chrome/app/resources/chromium_strings_or.xtb
index 394f81c..16532c8c 100644
--- a/chrome/app/resources/chromium_strings_or.xtb
+++ b/chrome/app/resources/chromium_strings_or.xtb
@@ -13,6 +13,7 @@
 <translation id="1185134272377778587">Chromium ବିଷୟରେ</translation>
 <translation id="1203500561924088507">ଇନଷ୍ଟଲ କରିଥିବା ଯୋଗୁଁ ଧନ୍ୟବାଦ। ଆପଣ <ph name="BUNDLE_NAME" /> ବ୍ୟବହାର କରିବା ପୂର୍ବରୁ ଆପଣଙ୍କ ବ୍ରାଉଜରକୁ ରିଷ୍ଟାର୍ଟ କରିବା ଆବଶ୍ୟକ।</translation>
 <translation id="1231839967188101156">ଚାଲୁ ଥିବା ସମୟରେ, Chromium ନିଷ୍କ୍ରିୟ ଟାବଗୁଡ଼ିକରୁ ମେମୋରୀ ଖାଲି କରେ। ଏହା ସକ୍ରିୟ ଟାବ ଏବଂ ଅନ୍ୟ ଆପ୍ସକୁ ଅଧିକ କମ୍ପ୍ୟୁଟର ରିସୋର୍ସ ଦେଇ Chromiumକୁ ଦ୍ରୁତ ଭାବେ କାର୍ଯ୍ୟ କରିବାକୁ ଦିଏ। ଯେତେବେଳେ ଆପଣ ଆପଣଙ୍କ ନିଷ୍କ୍ରିୟ ଟାବଗୁଡ଼ିକୁ ଫେରି ଆସନ୍ତି ସେତେବେଳେ ସେଗୁଡ଼ିକ ପୁଣି ସକ୍ରିୟ ହୋଇଯାଏ। <ph name="BEGIN_LINK" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="END_LINK" /></translation>
+<translation id="1261119230216066228">ମେମୋରୀ ସେଭର Chromiumକୁ ଆହୁରି ଦ୍ରୁତ କରିଛି</translation>
 <translation id="1315551408014407711">ଆପଣଙ୍କର ନୂଆ Chromium ପ୍ରୋଫାଇଲ୍ ସେଟ୍ ଅପ୍ କରନ୍ତୁ</translation>
 <translation id="1385859895174722837">Chromiumରେ Google Assistant</translation>
 <translation id="1396446129537741364">ପାସ୍‌ୱର୍ଡଗୁଡ଼ିକ ଦେଖାଇବାକୁ Chromium ଚେଷ୍ଟା କରୁଛି।</translation>
@@ -211,6 +212,7 @@
 <translation id="6055895534982063517">Chromiumର ଏକ ନୂଆ ସଂସ୍କରଣ ଉପଲବ୍ଧ ଅଛି, ଏବଂ ଏହା ସବୁଠୁ ଦ୍ରୁତ ଅଟେ।</translation>
 <translation id="6063093106622310249">&amp;Chromiumରେ ଖୋଲନ୍ତୁ</translation>
 <translation id="6072279588547424923"><ph name="EXTENSION_NAME" /> Chromiumରେ ଯୋଗ କରାଯାଇଛି</translation>
+<translation id="6072463441809498330">Chromiumକୁ ଆହୁରି ଦ୍ରୁତ କରନ୍ତୁ</translation>
 <translation id="608006075545470555">ଏହି ବ୍ରାଉଜରରେ ୱାର୍କ ପ୍ରୋଫାଇଲ୍ ଯୋଗ କରନ୍ତୁ</translation>
 <translation id="6096348254544841612">Chromium କଷ୍ଟମାଇଜ୍ ଓ ନିୟନ୍ତ୍ରଣ କରନ୍ତୁ। ଅପ୍‍‍ଡେଟ୍ ଉପଲବ୍ଧ ଅଟେ।</translation>
 <translation id="6119438414301547735">Chromium ଟୁଲବାରରେ ଆକ୍ସେସ ଅନୁରୋଧଗୁଡ଼ିକ ଦେଖାଇବା ପାଇଁ ଏକ୍ସଟେନସନକୁ ଅନୁମତି ଦିଅନ୍ତୁ</translation>
diff --git a/chrome/app/resources/chromium_strings_pa.xtb b/chrome/app/resources/chromium_strings_pa.xtb
index ec28738..59b602a 100644
--- a/chrome/app/resources/chromium_strings_pa.xtb
+++ b/chrome/app/resources/chromium_strings_pa.xtb
@@ -12,6 +12,7 @@
 <translation id="1131805035311359397">ਇਹ ਜਾਂਚ ਕਰਨ ਲਈ ਕਿ ਤੁਹਾਡੇ ਪਾਸਵਰਡ ਡਾਟਾ ਉਲੰਘਣਾਵਾਂ ਅਤੇ ਹੋਰ ਸੁਰੱਖਿਆ ਸੰਬੰਧੀ ਸਮੱਸਿਆਵਾਂ ਤੋਂ ਸੁਰੱਖਿਅਤ ਹਨ ਜਾਂ ਨਹੀਂ, <ph name="BEGIN_LINK" />Chromium ਵਿੱਚ ਸਾਈਨ-ਇਨ ਕਰੋ<ph name="END_LINK" />।</translation>
 <translation id="1185134272377778587">Chromium ਬਾਰੇ</translation>
 <translation id="1203500561924088507">ਸਥਾਪਨਾ ਕਰਨ ਲਈ ਧੰਨਵਾਦ। <ph name="BUNDLE_NAME" /> ਦੀ ਵਰਤੋਂ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਤੁਹਾਡੇ ਵੱਲੋਂ ਆਪਣੇ ਬ੍ਰਾਊਜ਼ਰ ਨੂੰ ਮੁੜ-ਸ਼ੁਰੂ ਕਰਨਾ ਲਾਜ਼ਮੀ ਹੈ।</translation>
+<translation id="1261119230216066228">ਮੈਮੋਰੀ ਸੇਵਰ Chromium ਨੂੰ ਜ਼ਿਆਦਾ ਤੇਜ਼ ਬਣਾਉਂਦਾ ਹੈ</translation>
 <translation id="1315551408014407711">ਆਪਣੇ ਨਵੇਂ Chromium ਪ੍ਰੋਫਾਈਲ ਦਾ ਸੈੱਟਅੱਪ ਕਰੋ</translation>
 <translation id="1385859895174722837">Chromium ਵਿੱਚ Google Assistant</translation>
 <translation id="1396446129537741364">Chromium ਪਾਸਵਰਡ ਦਿਖਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਿਹਾ ਹੈ।</translation>
@@ -210,6 +211,7 @@
 <translation id="6055895534982063517">Chromium ਦਾ ਇੱਕ ਨਵਾਂ ਵਰਜਨ ਉਪਲਬਧ ਹੈ ਅਤੇ ਇਹ ਪਹਿਲਾਂ ਨਾਲੋਂ ਵੱਧ ਤੇਜ਼ ਹੈ।</translation>
 <translation id="6063093106622310249">ਅਤੇ Chromium ਵਿੱਚ ਖੋਲ੍ਹੋ</translation>
 <translation id="6072279588547424923"><ph name="EXTENSION_NAME" /> ਨੂੰ Chromium ਵਿੱਚ ਸ਼ਾਮਲ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ</translation>
+<translation id="6072463441809498330">Chromium ਨੂੰ ਜ਼ਿਆਦਾ ਤੇਜ਼ ਬਣਾਓ</translation>
 <translation id="608006075545470555">ਇਸ ਬ੍ਰਾਊਜ਼ਰ ਵਿੱਚ ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ ਸ਼ਾਮਲ ਕਰੋ</translation>
 <translation id="6096348254544841612">Chromium ਨੂੰ ਵਿਉਂਤਬੱਧ ਕਰਕੇ ਕੰਟਰੋਲ ਕਰੋ। ਅੱਪਡੇਟ ਉਪਲਬਧ ਹੈ।</translation>
 <translation id="6119438414301547735">ਐਕਸਟੈਂਸ਼ਨ ਨੂੰ Chromium ਟੂਲਬਾਰ ਵਿੱਚ ਪਹੁੰਚ ਬੇਨਤੀਆਂ ਦਿਖਾਉਣ ਦੀ ਆਗਿਆ ਦਿਓ</translation>
diff --git a/chrome/app/resources/chromium_strings_pl.xtb b/chrome/app/resources/chromium_strings_pl.xtb
index 94e7da6..89f88486 100644
--- a/chrome/app/resources/chromium_strings_pl.xtb
+++ b/chrome/app/resources/chromium_strings_pl.xtb
@@ -10,6 +10,7 @@
 <translation id="1131805035311359397">Aby sprawdzić, czy Twoje hasła są chronione przed naruszeniami bezpieczeństwa danych i innymi zagrożeniami tego typu, <ph name="BEGIN_LINK" />zaloguj się w Chromium<ph name="END_LINK" />.</translation>
 <translation id="1185134272377778587">Chromium – informacje</translation>
 <translation id="1203500561924088507">Dziękujemy za instalację. Przed rozpoczęciem korzystania z programu <ph name="BUNDLE_NAME" /> musisz ponownie uruchomić przeglądarkę.</translation>
+<translation id="1261119230216066228">Oszczędzanie pamięci przyspieszyło działanie Chromium</translation>
 <translation id="1315551408014407711">Skonfiguruj nowy profil w Chromium</translation>
 <translation id="1385859895174722837">Asystent Google w Chromium</translation>
 <translation id="1396446129537741364">Chromium próbuje pokazać hasła.</translation>
@@ -206,6 +207,7 @@
 <translation id="6055895534982063517">Dostępna jest nowa, szybsza niż kiedykolwiek wersja Chromium.</translation>
 <translation id="6063093106622310249">&amp;Otwórz w Chromium</translation>
 <translation id="6072279588547424923">Rozszerzenie <ph name="EXTENSION_NAME" /> zostało dodane do Chromium</translation>
+<translation id="6072463441809498330">Przyspiesz działanie Chromium</translation>
 <translation id="608006075545470555">Dodaj profil służbowy w tej przeglądarce</translation>
 <translation id="6096348254544841612">Dostosowywanie i kontrolowanie Chromium. Dostępna jest aktualizacja.</translation>
 <translation id="6119438414301547735">Zezwalaj rozszerzeniu na wyświetlanie próśb o dostęp na pasku narzędzi Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_pt-PT.xtb b/chrome/app/resources/chromium_strings_pt-PT.xtb
index 47d3e7e..4230fe9 100644
--- a/chrome/app/resources/chromium_strings_pt-PT.xtb
+++ b/chrome/app/resources/chromium_strings_pt-PT.xtb
@@ -10,6 +10,8 @@
 <translation id="1131805035311359397">Para verificar se as suas palavras-passe estão protegidas contra violação de dados e outros problemas de segurança, <ph name="BEGIN_LINK" />inicie sessão no Chromium<ph name="END_LINK" />.</translation>
 <translation id="1185134272377778587">Acerca do Chromium</translation>
 <translation id="1203500561924088507">Agradecemos a instalação. Tem de reiniciar o navegador antes de utilizar o <ph name="BUNDLE_NAME" />.</translation>
+<translation id="1231839967188101156">Quando está ativado, o Chromium liberta memória dos separadores inativos. Isto permite que os separadores ativos e outras apps tenham mais recursos do computador e mantém o Chromium rápido. Os seus separadores inativos ficam novamente ativos de forma automática quando regressa aos mesmos. <ph name="BEGIN_LINK" />Saiba mais<ph name="END_LINK" /></translation>
+<translation id="1261119230216066228">A Poupança de memória tornou o Chromium mais rápido</translation>
 <translation id="1315551408014407711">Configure o seu novo perfil do Chromium</translation>
 <translation id="1385859895174722837">Assistente Google no Chromium</translation>
 <translation id="1396446129537741364">O Chromium está a tentar mostrar palavras-passe.</translation>
@@ -208,6 +210,7 @@
 <translation id="6055895534982063517">Está disponível uma nova versão do Chromium, mais rápida do que nunca.</translation>
 <translation id="6063093106622310249">&amp;Abrir no Chromium</translation>
 <translation id="6072279588547424923">A extensão <ph name="EXTENSION_NAME" /> foi adicionada ao Chromium.</translation>
+<translation id="6072463441809498330">Torne o Chromium mais rápido</translation>
 <translation id="608006075545470555">Adicione um perfil de trabalho a este navegador</translation>
 <translation id="6096348254544841612">Personalize e controle o Chromium. Está disponível uma atualização.</translation>
 <translation id="6119438414301547735">Permitir que a extensão mostre pedidos de acesso na barra de ferramentas do Chromium</translation>
@@ -251,6 +254,7 @@
 <translation id="6717134281241384636">O seu perfil não pode ser utilizado porque pertence a uma versão mais recente do Chromium.
 
 Algumas funcionalidades podem não estar disponíveis. Especifique um diretório de perfil diferente ou utilize uma versão mais recente do Chromium.</translation>
+<translation id="6730677189742196061">A Poupança de memória tornou o Chromium mais rápido</translation>
 <translation id="6734291798041940871">O Chromium já está instalado para todos os utilizadores no seu computador.</translation>
 <translation id="673636774878526923">Para aceder aos seus itens do Chromium em todos os seus dispositivos, inicie sessão e, em seguida, ative a sincronização.</translation>
 <translation id="6774082503108938489">O teu pai/mãe desativou as "Autorizações para sites, apps e extensões" para o Chromium. Não é permitido ativar esta <ph name="EXTENSION_TYPE_PARAMETER" />.</translation>
diff --git a/chrome/app/resources/chromium_strings_sl.xtb b/chrome/app/resources/chromium_strings_sl.xtb
index 4595ab3..a4eff0a5 100644
--- a/chrome/app/resources/chromium_strings_sl.xtb
+++ b/chrome/app/resources/chromium_strings_sl.xtb
@@ -12,6 +12,8 @@
 <translation id="1131805035311359397">Če želite preveriti, ali so gesla varna pred podatkovnimi kršitvami in drugimi varnostnimi težavami, <ph name="BEGIN_LINK" />se prijavite v Chromium<ph name="END_LINK" />.</translation>
 <translation id="1185134272377778587">O Chromiumu</translation>
 <translation id="1203500561924088507">Hvala, ker ste se odločili za namestitev. Preden uporabite <ph name="BUNDLE_NAME" />, morate znova zagnati brskalnik.</translation>
+<translation id="1231839967188101156">Če je vklopljeno, Chromium sprosti pomnilnik z neaktivnih zavihkov. Tako imajo aktivni zavihki in druge aplikacije več računalniških sredstev, Chromium pa je še naprej hiter. Neaktivni zavihki znova postanejo aktivni, ko se vrnete nanje. <ph name="BEGIN_LINK" />Več o tem<ph name="END_LINK" /></translation>
+<translation id="1261119230216066228">Varčevanje s pomnilnikom je pospešilo Chromium</translation>
 <translation id="1315551408014407711">Nastavitev novega profila v Chromiumu</translation>
 <translation id="1385859895174722837">Pomočnik Google v Chromiumu</translation>
 <translation id="1396446129537741364">Chromium poskuša prikazati gesla.</translation>
@@ -210,6 +212,7 @@
 <translation id="6055895534982063517">Na voljo je nova različica Chromiuma, ki je najhitrejša doslej.</translation>
 <translation id="6063093106622310249">&amp;Odpri v Chromiumu</translation>
 <translation id="6072279588547424923">Razširitev <ph name="EXTENSION_NAME" /> je dodana v Chromium</translation>
+<translation id="6072463441809498330">Pospešite Chromium</translation>
 <translation id="608006075545470555">Dodajanje delovnega profila v ta brskalnik</translation>
 <translation id="6096348254544841612">Prilagodite in nadzirajte Chromium. Posodobitev je na voljo.</translation>
 <translation id="6119438414301547735">Omogočanje razširitve za prikaz zahtev za dostop v orodni vrstici Chromiuma</translation>
@@ -253,6 +256,7 @@
 <translation id="6717134281241384636">Vašega profila ni mogoče uporabiti, ker je iz novejše različice Chromiuma.
 
 Nekatere funkcije morda ne bodo na voljo. Določite drug imenik profila ali uporabite novejšo različico Chromiuma.</translation>
+<translation id="6730677189742196061">Varčevanje s pomnilnikom je pospešilo Chromium</translation>
 <translation id="6734291798041940871">Chromium je že nameščen za vse uporabnike v računalniku.</translation>
 <translation id="673636774878526923">Če želite do stvari v Chromiumu dostopati v vseh svojih napravah, se prijavite in nato vklopite sinhronizacijo.</translation>
 <translation id="6774082503108938489">Tvoj starš je izklopil »Dovoljenja za spletna mesta, aplikacije in razširitve« za Chromium. Omogočanje tega ni dovoljeno: <ph name="EXTENSION_TYPE_PARAMETER" />.</translation>
diff --git a/chrome/app/resources/chromium_strings_sr-Latn.xtb b/chrome/app/resources/chromium_strings_sr-Latn.xtb
index f5dbef0..d3587f1 100644
--- a/chrome/app/resources/chromium_strings_sr-Latn.xtb
+++ b/chrome/app/resources/chromium_strings_sr-Latn.xtb
@@ -13,6 +13,7 @@
 <translation id="1185134272377778587">O Chromium-u</translation>
 <translation id="1203500561924088507">Hvala vam na instalaciji. Potrebno je da restartujete pregledač pre nego što počnete da koristite <ph name="BUNDLE_NAME" />.</translation>
 <translation id="1231839967188101156">Kada je uključeno, Chromium oslobađa memoriju sa neaktivnih kartica. To aktivnim karticama i drugim aplikacijama pruža više računarskih resursa i održava Chromium brzim. Neaktivne kartice se automatski ponovo aktiviraju kada se vratite na njih. <ph name="BEGIN_LINK" />Saznajte više<ph name="END_LINK" /></translation>
+<translation id="1261119230216066228">Ušteda memorije je ubrzala Chromium</translation>
 <translation id="1315551408014407711">Podesite nov Chromium profil</translation>
 <translation id="1385859895174722837">Google pomoćnik u Chromium-u</translation>
 <translation id="1396446129537741364">Chromium pokušava da prikaže lozinke.</translation>
@@ -211,6 +212,7 @@
 <translation id="6055895534982063517">Dostupna je nova verzija Chromium-a, brža nego ikada pre.</translation>
 <translation id="6063093106622310249">&amp;Otvori u Chromium-u</translation>
 <translation id="6072279588547424923">Dodatak <ph name="EXTENSION_NAME" /> je dodat u Chromium</translation>
+<translation id="6072463441809498330">Ubrzajte Chromium</translation>
 <translation id="608006075545470555">Dodajte poslovni profil u ovaj pregledač</translation>
 <translation id="6096348254544841612">Prilagodite i kontrolišite Chromium. Dostupno je ažuriranje.</translation>
 <translation id="6119438414301547735">Dozvoli dodatku da prikazuje zahteve za pristup na Chromium traci s alatkama</translation>
diff --git a/chrome/app/resources/chromium_strings_sr.xtb b/chrome/app/resources/chromium_strings_sr.xtb
index 57ef034..6fbad30 100644
--- a/chrome/app/resources/chromium_strings_sr.xtb
+++ b/chrome/app/resources/chromium_strings_sr.xtb
@@ -13,6 +13,7 @@
 <translation id="1185134272377778587">О Chromium-у</translation>
 <translation id="1203500561924088507">Хвала вам на инсталацији. Потребно је да рестартујете прегледач пре него што почнете да користите <ph name="BUNDLE_NAME" />.</translation>
 <translation id="1231839967188101156">Када је укључено, Chromium ослобађа меморију са неактивних картица. То активним картицама и другим апликацијама пружа више рачунарских ресурса и одржава Chromium брзим. Неактивне картице се аутоматски поново активирају када се вратите на њих. <ph name="BEGIN_LINK" />Сазнајте више<ph name="END_LINK" /></translation>
+<translation id="1261119230216066228">Уштеда меморије је убрзала Chromium</translation>
 <translation id="1315551408014407711">Подесите нов Chromium профил</translation>
 <translation id="1385859895174722837">Google помоћник у Chromium-у</translation>
 <translation id="1396446129537741364">Chromium покушава да прикаже лозинке.</translation>
@@ -211,6 +212,7 @@
 <translation id="6055895534982063517">Доступна је нова верзија Chromium-а, бржа него икада пре.</translation>
 <translation id="6063093106622310249">&amp;Отвори у Chromium-у</translation>
 <translation id="6072279588547424923">Додатак <ph name="EXTENSION_NAME" /> је додат у Chromium</translation>
+<translation id="6072463441809498330">Убрзајте Chromium</translation>
 <translation id="608006075545470555">Додајте пословни профил у овај прегледач</translation>
 <translation id="6096348254544841612">Прилагодите и контролишите Chromium. Доступно је ажурирање.</translation>
 <translation id="6119438414301547735">Дозволи додатку да приказује захтеве за приступ на Chromium траци с алаткама</translation>
diff --git a/chrome/app/resources/chromium_strings_sv.xtb b/chrome/app/resources/chromium_strings_sv.xtb
index 17cb715a..876f4db9 100644
--- a/chrome/app/resources/chromium_strings_sv.xtb
+++ b/chrome/app/resources/chromium_strings_sv.xtb
@@ -12,6 +12,7 @@
 <translation id="1131805035311359397"><ph name="BEGIN_LINK" />Logga in i Chromium<ph name="END_LINK" /> om du vill kontrollera att dina lösenord skyddas från dataintrång och andra säkerhetsproblem.</translation>
 <translation id="1185134272377778587">Om Chromium</translation>
 <translation id="1203500561924088507">Tack för att du installerat programmet. Du måste starta om webbläsaren innan du använder <ph name="BUNDLE_NAME" />.</translation>
+<translation id="1231839967188101156">När det här alternativet är aktiverat frigörs minne från inaktiva flikar i Chromium. Detta förser aktiva flikar och andra appar med mer av datorns resurser, vilket gör att Chromium fortsätter att fungera snabbt. De inaktiva flikarna aktiveras automatiskt när du återvänder till dem. <ph name="BEGIN_LINK" />Läs mer<ph name="END_LINK" /></translation>
 <translation id="1315551408014407711">Konfigurera din nya profil i Chromium</translation>
 <translation id="1385859895174722837">Google Assistent i Chromium</translation>
 <translation id="1396446129537741364">Chromium försöker visa lösenord.</translation>
@@ -253,6 +254,7 @@
 <translation id="6717134281241384636">Din profil kan inte användas eftersom den kommer från en nyare version av Chromium.
 
 Vissa funktioner är kanske inte tillgängliga. Ange en annan profilkatalog eller använd en nyare version av Chromium.</translation>
+<translation id="6730677189742196061">Minnessparläget har gjort Chromium snabbare</translation>
 <translation id="6734291798041940871">Chromium har redan installerats för alla användare på datorn.</translation>
 <translation id="673636774878526923">Logga in och aktivera synkronisering om du vill få tillgång till dina saker i Chromium på olika enheter.</translation>
 <translation id="6774082503108938489">Din förälder har inaktiverat Behörigheter för webbplatser, appar och tillägg för Chromium. Det är inte tillåtet att aktivera denna <ph name="EXTENSION_TYPE_PARAMETER" />.</translation>
diff --git a/chrome/app/resources/chromium_strings_th.xtb b/chrome/app/resources/chromium_strings_th.xtb
index 04e16feb..dbc2df08 100644
--- a/chrome/app/resources/chromium_strings_th.xtb
+++ b/chrome/app/resources/chromium_strings_th.xtb
@@ -10,6 +10,8 @@
 <translation id="1131805035311359397"><ph name="BEGIN_LINK" />ลงชื่อเข้าใช้ Chromium<ph name="END_LINK" /> เพื่อตรวจสอบว่ารหัสผ่านของคุณไม่ได้รับผลกระทบจากการละเมิดข้อมูลและปัญหาด้านความปลอดภัยอื่นๆ</translation>
 <translation id="1185134272377778587">เกี่ยวกับ Chromium</translation>
 <translation id="1203500561924088507">ขอขอบคุณที่ติดตั้ง คุณต้องรีสตาร์ทเบราว์เซอร์ก่อนใช้ <ph name="BUNDLE_NAME" /></translation>
+<translation id="1231839967188101156">เมื่อเปิดใช้โหมดนี้ Chromium จะเพิ่มหน่วยความจําจากแท็บที่ไม่ได้ใช้งาน ซึ่งทําให้แท็บที่ใช้งานอยู่และแอปอื่นๆ มีทรัพยากรสําหรับคอมพิวเตอร์เพิ่มขึ้นและช่วยให้ Chrome ทํางานได้เร็ว แท็บที่ไม่มีการใช้งานจะกลับมาทํางานโดยอัตโนมัติเมื่อคุณไปที่แท็บเหล่านั้น <ph name="BEGIN_LINK" />ดูข้อมูลเพิ่มเติม<ph name="END_LINK" /></translation>
+<translation id="1261119230216066228">โหมดประหยัดหน่วยความจำช่วยให้ Chromium ทำงานได้เร็วขึ้น</translation>
 <translation id="1315551408014407711">ตั้งค่าโปรไฟล์ Chromium ใหม่</translation>
 <translation id="1385859895174722837">Google Assistant ใน Chromium</translation>
 <translation id="1396446129537741364">Chromium กำลังพยายามแสดงรหัสผ่าน</translation>
@@ -208,6 +210,7 @@
 <translation id="6055895534982063517">มี Chromium รุ่นใหม่ให้ใช้งานแล้วและทำงานได้เร็วกว่าเดิม</translation>
 <translation id="6063093106622310249">&amp;เปิดใน Chromium</translation>
 <translation id="6072279588547424923">เพิ่ม <ph name="EXTENSION_NAME" /> ลงใน Chromium แล้ว</translation>
+<translation id="6072463441809498330">ทำให้ Chromium เร็วขึ้น</translation>
 <translation id="608006075545470555">เพิ่มโปรไฟล์งานลงในเบราว์เซอร์นี้</translation>
 <translation id="6096348254544841612">ปรับแต่งและควบคุม Chromium มีการอัปเดต</translation>
 <translation id="6119438414301547735">อนุญาตให้ส่วนขยายแสดงคำขอเข้าถึงในแถบเครื่องมือ Chromium</translation>
@@ -251,6 +254,7 @@
 <translation id="6717134281241384636">โปรไฟล์ของคุณไม่สามารถใช้ได้เนื่องจากมาจาก Chromium รุ่นใหม่
 
 ฟีเจอร์บางประการอาจไม่มี โปรดระบุไดเรกทอรีโปรไฟล์อื่น หรือใช้ Chromium รุ่นใหม่</translation>
+<translation id="6730677189742196061">โหมดประหยัดหน่วยความจําช่วยให้ Chromium ทํางานได้เร็วขึ้น</translation>
 <translation id="6734291798041940871">มีการติดตั้ง Chromium สำหรับผู้ใช้ทุกคนบนคอมพิวเตอร์ของคุณแล้ว</translation>
 <translation id="673636774878526923">หากต้องการเข้าถึงข้อมูล Chromium ในอุปกรณ์ทั้งหมด ให้ลงชื่อเข้าใช้แล้วเปิดการซิงค์</translation>
 <translation id="6774082503108938489">ผู้ปกครองได้ปิด "สิทธิ์สำหรับเว็บไซต์ แอป และส่วนขยาย" ใน Chromium ไม่อนุญาตให้เปิดใช้<ph name="EXTENSION_TYPE_PARAMETER" />นี้</translation>
diff --git a/chrome/app/resources/chromium_strings_tr.xtb b/chrome/app/resources/chromium_strings_tr.xtb
index 6c3bb0b..02b2a91 100644
--- a/chrome/app/resources/chromium_strings_tr.xtb
+++ b/chrome/app/resources/chromium_strings_tr.xtb
@@ -10,6 +10,7 @@
 <translation id="1131805035311359397">Şifrelerinizin veri ihlali ve diğer güvenlik sorunlarına karşı güvende olup olmadığını kontrol etmek için <ph name="BEGIN_LINK" />Chromium'da oturum açın<ph name="END_LINK" />.</translation>
 <translation id="1185134272377778587">Chromium hakkında</translation>
 <translation id="1203500561924088507">Yüklediğiniz için teşekkürler. <ph name="BUNDLE_NAME" /> uygulamasını kullanmadan önce tarayıcınızı yeniden başlatmanız gerekir.</translation>
+<translation id="1231839967188101156">Bu ayar açık olduğunda Chromium, etkin olmayan sekmelerdeki belleği boşaltır. Böylece, etkin sekmeler ile diğer uygulamalar daha fazla bilgisayar kaynağına sahip olur ve Chromium hızlı çalışmaya devam eder. Geri döndüğünüz etkin olmayan sekmeler otomatik olarak tekrar etkin hale gelir. <ph name="BEGIN_LINK" />Daha fazla bilgi<ph name="END_LINK" /></translation>
 <translation id="1315551408014407711">Yeni Chromium profilinizi oluşturun</translation>
 <translation id="1385859895174722837">Chromium'da Google Asistan</translation>
 <translation id="1396446129537741364">Chromium, şifreleri göstermeye çalışıyor.</translation>
@@ -249,6 +250,7 @@
 <translation id="6717134281241384636">Profiliniz daha yeni bir Chromium sürümünden olduğundan kullanılamıyor.
 
 Bazı özellikler kullanılamayabilir. Lütfen farklı bir profil dizini belirtin veya daha yeni bir Chromium sürümünü kullanın.</translation>
+<translation id="6730677189742196061">Bellek Tasarrufu sayesinde Chromium artık daha hızlı</translation>
 <translation id="6734291798041940871">Chromium zaten bilgisayarınızdaki tüm kullanıcılar için yüklendi.</translation>
 <translation id="673636774878526923">Chromium öğelerinize tüm cihazlarınızda erişmek için oturum açın ve senkronizasyonu etkinleştirin.</translation>
 <translation id="6774082503108938489">Ebeveyniniz, Chromium'a yönelik "Siteler, uygulamalar ve uzantılar için izinler"i kapattı. Bu <ph name="EXTENSION_TYPE_PARAMETER" /> uzantısının etkinleştirilmesine izin verilmiyor.</translation>
diff --git a/chrome/app/resources/chromium_strings_uz.xtb b/chrome/app/resources/chromium_strings_uz.xtb
index bc85bc1..ca17a4e 100644
--- a/chrome/app/resources/chromium_strings_uz.xtb
+++ b/chrome/app/resources/chromium_strings_uz.xtb
@@ -11,6 +11,7 @@
 <translation id="1185134272377778587">Chromium haqida</translation>
 <translation id="1203500561924088507">Oʻrnatganingiz uchun tashakkur! <ph name="BUNDLE_NAME" />ni ishlatishdan oldin brauzerni qayta ishga tushirishingiz lozim.</translation>
 <translation id="1231839967188101156">Yoniq boʻlsa, Chromium nofaol varaqlar orqali xotirani boʻshatadi. Bunda faol varaqlar va boshqa ilovalar kompyuter resurslarini oshiradi va Chromium ishlashi tezlashadi. Nofaol varaqlar ularga qaytilganda avtomatik faollashadi. <ph name="BEGIN_LINK" />Batafsil<ph name="END_LINK" /></translation>
+<translation id="1261119230216066228">Xotirani tejash funksiyasi Chromiumni tezlashtirdi</translation>
 <translation id="1315551408014407711">Yangi Chromium profilini sozlang</translation>
 <translation id="1385859895174722837">Chromiumda Google Assistent</translation>
 <translation id="1396446129537741364">Kirtilgan parollar Chromium brauzerida ko‘rsatiladi.</translation>
@@ -207,6 +208,7 @@
 <translation id="6055895534982063517">Chromium brauzerining yanada tezroq ishlaydigan yangi versiyasi chiqdi.</translation>
 <translation id="6063093106622310249">&amp;Chromiumda ochish</translation>
 <translation id="6072279588547424923"><ph name="EXTENSION_NAME" /> kengaytmasi Chromiumga o‘rnatildi</translation>
+<translation id="6072463441809498330">Chromiumni tezlashtirish</translation>
 <translation id="608006075545470555">Bu brauzerga ish profilini kiritish</translation>
 <translation id="6096348254544841612">Chromium uchun yangilanish chiqdi.</translation>
 <translation id="6119438414301547735">Kengaytma Chromium asboblar panelida ruxsat soʻrovlarini chiqarishiga ruxsat bering</translation>
diff --git a/chrome/app/resources/chromium_strings_zh-TW.xtb b/chrome/app/resources/chromium_strings_zh-TW.xtb
index 93faeb9..3f3619e 100644
--- a/chrome/app/resources/chromium_strings_zh-TW.xtb
+++ b/chrome/app/resources/chromium_strings_zh-TW.xtb
@@ -10,6 +10,7 @@
 <translation id="1131805035311359397">如要檢查你的密碼是否因資料侵害事件而遭到外洩,或是否有其他安全性問題,<ph name="BEGIN_LINK" />請登入 Chromium<ph name="END_LINK" />。</translation>
 <translation id="1185134272377778587">關於 Chromium</translation>
 <translation id="1203500561924088507">感謝你安裝本服務。你必須重新啟動瀏覽器,才能使用 <ph name="BUNDLE_NAME" />。</translation>
+<translation id="1231839967188101156">這項設定開啟時,Chromium 會釋出閒置分頁占用的記憶體,為使用中的分頁和其他應用程式提供更多電腦資源,同時保持 Chromium 快速運作。當你切換回閒置分頁時,這些分頁會自動恢復為「使用中」狀態。<ph name="BEGIN_LINK" />瞭解詳情<ph name="END_LINK" /></translation>
 <translation id="1315551408014407711">設定新的 Chromium 設定檔</translation>
 <translation id="1385859895174722837">Chromium 版 Google 助理</translation>
 <translation id="1396446129537741364">Chromium 即將顯示密碼。</translation>
@@ -251,6 +252,7 @@
 <translation id="6717134281241384636">由於你的設定檔是來自較新版本的 Chromium,所以系統無法使用該檔案。
 
 這表示你可能無法使用部分功能。請指定另一個設定檔目錄,或使用較新版本的 Chromium。</translation>
+<translation id="6730677189742196061">記憶體節省模式可以提升 Chromium 運作速度</translation>
 <translation id="6734291798041940871">電腦上的所有使用者都已經安裝 Chromium 了。</translation>
 <translation id="673636774878526923">如要透過所有裝置存取你的 Chromium 資料,請登入並開啟同步處理功能。</translation>
 <translation id="6774082503108938489">你的家長已停用 Chromium 的「網站、應用程式和擴充功能的權限」設定,因此你無法啟用這個<ph name="EXTENSION_TYPE_PARAMETER" />。</translation>
diff --git a/chrome/app/resources/generated_resources_af.xtb b/chrome/app/resources/generated_resources_af.xtb
index f61d04c..fd10550 100644
--- a/chrome/app/resources/generated_resources_af.xtb
+++ b/chrome/app/resources/generated_resources_af.xtb
@@ -2401,6 +2401,7 @@
 <translation id="3188465121994729530">Bewegende gemiddeld</translation>
 <translation id="3189187154924005138">Groot skermpyltjie</translation>
 <translation id="3190558889382726167">Wagwoord is gestoor</translation>
+<translation id="3192589799003798742">Stel tans Steam op Chromebook op</translation>
 <translation id="3192947282887913208">Oudiolêers</translation>
 <translation id="3193695589337931419">Stelselseinnutsdienste</translation>
 <translation id="3194786596445804250">Wys besonderhede oor wat gebeur wanneer alle derdepartywebkoekies geblokkeer word</translation>
@@ -2540,6 +2541,7 @@
 <translation id="3341699307020049241">Verkeerde PIN. Jy het <ph name="RETRIES" /> pogings oor.</translation>
 <translation id="3341703758641437857">Laat toegang tot lêer-ULR'e toe</translation>
 <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" wil graag hierdie uitbreiding verwyder.</translation>
+<translation id="3343977377045378693">Doen tans opstelling</translation>
 <translation id="3345135638360864351">Jou versoek om toegang tot hierdie werf te kry, kon nie na <ph name="NAME" /> gestuur word nie. Probeer weer.</translation>
 <translation id="3345634917232014253">Veiligheidskontrole het 'n oomblik gelede plaasgevind</translation>
 <translation id="3345886924813989455">Geen gesteunde blaaier gevind nie</translation>
@@ -2551,6 +2553,7 @@
 <translation id="3354768182971982851">Ouer weergawes van Chrome-programme sal nie ná Desember 2022 op Mac-toestelle oopmaak nie. Jy kan kyk of ’n nuwe weergawe beskikbaar is.</translation>
 <translation id="3354972872297836698">Kon nie met toestel <ph name="DEVICE_NAME" /> saambind nie; kies toestel om weer te probeer</translation>
 <translation id="3355936511340229503">Verbindingfout</translation>
+<translation id="3356036636691722598">Geniet speletjies op jou Chromebook</translation>
 <translation id="3356469410714175391">(Virtuele kaart is geaktiveer)</translation>
 <translation id="3356580349448036450">Voltooi</translation>
 <translation id="3359256513598016054">Sertifikaatbeleidbeperkings</translation>
@@ -3463,6 +3466,7 @@
 <translation id="4211904048067111541">Hou op om saam met Android-programme te gebruik</translation>
 <translation id="42126664696688958">Voer uit</translation>
 <translation id="42137655013211669">Toegang tot hierdie hulpbron is deur die bediener verbied.</translation>
+<translation id="4214192212360095377">Skakel nou af</translation>
 <translation id="4217558091331485702">Skandeer voordat jy dit oopmaak</translation>
 <translation id="4217571870635786043">Diktee</translation>
 <translation id="4218081191298393750">Klik die luidsprekerikoon om hierdie oortjie te demp</translation>
@@ -4360,6 +4364,7 @@
 <translation id="5089763948477033443">Kantpaneel se handvatsel vir grootteverandering</translation>
 <translation id="5090637338841444533">Mag nie jou kameraposisie naspoor nie</translation>
 <translation id="5093569275467863761">Incognito-terug-vorentoe-kasgegeue-subraam: <ph name="BACK_FORWARD_CACHE_INCOGNITO_PAGE_URL" /></translation>
+<translation id="5094042205195563542">Begin tans installeer</translation>
 <translation id="5094176498302660097">Jy kan met hierdie program gesteunde lêers uit die Lêers-program of ander programme oopmaak en wysig. <ph name="BEGIN_LINK" />Vind uit hoe om verstekprogramme op jou toestel te stel<ph name="END_LINK" /> om te beheer watter lêers hierdie program by verstek oopmaak.</translation>
 <translation id="5094721898978802975">Kommunikeer met plaaslike programme wat saamwerk</translation>
 <translation id="5097002363526479830">Kon nie aan "<ph name="NAME" />"-netwerk koppel nie: <ph name="DETAILS" /></translation>
@@ -6373,6 +6378,7 @@
 <translation id="7014174261166285193">Kon nie installeer nie.</translation>
 <translation id="7014480873681694324">Verwyder kleurmerk</translation>
 <translation id="7014741021609395734">Zoemvlak</translation>
+<translation id="7014961128696979283">Begin Steam</translation>
 <translation id="7017004637493394352">Sê weer "Ok Google"</translation>
 <translation id="7017219178341817193">Voeg 'n nuwe bladsy by</translation>
 <translation id="7017354871202642555">Kan nie modus stel ná venster gestel is nie.</translation>
@@ -6764,6 +6770,7 @@
 <translation id="7423425410216218516">Sigbaarheid is aan vir <ph name="MINUTES" /> minute</translation>
 <translation id="7423513079490750513">Verwyder <ph name="INPUT_METHOD_NAME" /></translation>
 <translation id="7423807071740419372"><ph name="APP_NAME" /> moet toestemming hê om te werk</translation>
+<translation id="7424153922653300265">Energiebespaarder is aangeskakel</translation>
 <translation id="7424818322350938336">Netwerk is bygevoeg</translation>
 <translation id="7427315069950454694">jou herinneringe vir vandag</translation>
 <translation id="7427348830195639090">Agtergrondbladsy: <ph name="BACKGROUND_PAGE_URL" /></translation>
@@ -7997,6 +8004,7 @@
 <translation id="859246725979739260">Hierdie werf word gekeer om toegang tot jou ligging te kry</translation>
 <translation id="8593121833493516339">Stuur gebruik- en diagnostiese data. Help om jou kind se Android-ervaring beter te maak deur diagnostiese, toestel- en programgebruikdata outomaties na Google toe te stuur. Dit sal nie gebruik word om jou kind te identifiseer nie en sal met stelsel- en programstabiliteit en ander verbeteringe help. Sekere saamgestelde data sal ook Google-programme en -vennote, soos Android-ontwikkelaars, help. As bykomende Web- en App-aktiwiteit vir jou kind aangeskakel is, kan hierdie data in hul Google-rekening gestoor word. <ph name="BEGIN_LINK1" />Kom meer te wete<ph name="END_LINK1" /></translation>
 <translation id="8596540852772265699">Gepasmaakte lêers</translation>
+<translation id="8597404194697561297">Wekom by Steam op Chromebook</translation>
 <translation id="8597845839771543242">Eiendomsformaat:</translation>
 <translation id="8599681327221583254">Een of meer beleide is nie korrek opgestel nie. Kontak jou administrateur</translation>
 <translation id="8599864823732014237">Slaan Enterprise-inskrywing oor?</translation>
diff --git a/chrome/app/resources/generated_resources_am.xtb b/chrome/app/resources/generated_resources_am.xtb
index 081b967..46064d3 100644
--- a/chrome/app/resources/generated_resources_am.xtb
+++ b/chrome/app/resources/generated_resources_am.xtb
@@ -1126,6 +1126,7 @@
 <translation id="2034346955588403444">ሌላ የWiFi አውታረ መረብ አክል</translation>
 <translation id="2035211704574173780">ግርጥነት</translation>
 <translation id="203574396658008164">ከማያ ገጽ ቁልፍ ሆነህ ማስታወሻ መውሰድን አንቃ</translation>
+<translation id="2036514476578229158">ይህን ጣቢያ ለመጎብኘት ጠይቀዋል። የእርስዎ ወላጆች በFamily Link ውስጥ ምላሽ መስጠት ይችላሉ።</translation>
 <translation id="2037445849770872822">ለዚህ የ Google መለያ ክትትል ተቀናብሯል። ተጨማሪ የወላጅ ቁጥጥሮችን ለማቀናበር፣ ቀጥል የሚለውን ይምረጡ።
 
 አለበለዚያ፣ በዚህ መለያ ላይ የተደረጉ ለውጦች በዚህ መሣሪያ ላይ እንዲታይ አሁኑኑ ዘግተው ይውጡ።
@@ -1246,6 +1247,7 @@
 <translation id="2135787500304447609">&amp;ከቆመበት ቀጥል</translation>
 <translation id="2136372518715274136">አዲስ የይለፍ ቃል ያስገቡ</translation>
 <translation id="2136476978468204130">ያስገቡት የይለፍ ሐረግ ትክክል አይደለም</translation>
+<translation id="2137891579555018930">ፈቃድን በመጠበቅ ላይ...</translation>
 <translation id="2138398485845393913">ከ«<ph name="DEVICE_NAME" />» ጋር የሚደረገው ግንኙነት አሁንም በሂደት ላይ ነው</translation>
 <translation id="2139919072249842737">አዝራርን አቀናብር</translation>
 <translation id="2140788884185208305">የባትሪ ጤንነት</translation>
@@ -4119,6 +4121,7 @@
 <translation id="4858913220355269194">Fritz</translation>
 <translation id="4862642413395066333">OCSP ምላሾችን መፈረም</translation>
 <translation id="4863769717153320198"><ph name="WIDTH" /> x <ph name="HEIGHT" /> ይመስላል (ነባሪ)</translation>
+<translation id="486459320933704969">ወላጅ ወይም አሳዳጊ ይህን ድር ጣቢያ ቢጎበኙ ምንም ችግር የለውም ማለት አለባቸው</translation>
 <translation id="4864805589453749318">የትምህርት ቤት መለያ ለማከል ፈቃድ እየሰጠ ያለውን ወላጅ ይምረጡ።</translation>
 <translation id="486635084936119914">ካወረዱ በኋላ የተወሰኑ የፋይል አይነቶችን ክፈት</translation>
 <translation id="4868281708609571334">Google ረዳት የ<ph name="SUPERVISED_USER_NAME" /> ድምፅ እንዲለይ ያስተምሩት</translation>
@@ -8259,6 +8262,7 @@
 <translation id="8838601485495657486">ብርሃን-ከል</translation>
 <translation id="8838770651474809439">ሃምበርገር</translation>
 <translation id="8838778928843281408">ስልኮችን ያቀናብሩ</translation>
+<translation id="883924185304953854">በምስል ይፈልጉ</translation>
 <translation id="8841843049738266382">በተፈቀደላቸው ዝርዝር ውስጥ ያሉ ተጠቃሚዎችን ማንበብ እና መቀየር</translation>
 <translation id="8842594465773264717">ይህን የጣት አሻራ ይሰርዙ</translation>
 <translation id="8845001906332463065">እገዛ ያግኙ</translation>
@@ -8685,6 +8689,7 @@
 <translation id="947329552760389097">&amp;አባለ ነገሮችን መርምር</translation>
 <translation id="947526284350604411">የእርስዎ መልስ</translation>
 <translation id="947667444780368238"><ph name="ORIGIN" /> የስርዓት ፋይሎችን ስለያዘ ፋይሎችን በዚህ አቃፊ ውስጥ መክፈት አይችልም</translation>
+<translation id="949314938206378263">ይህን ጣቢያ ለመጎብኘት ጠይቀዋል። የእርስዎ ወላጅ በFamily Link ውስጥ ምላሽ መስጠት ይችላሉ።</translation>
 <translation id="950307215746360464">የማዋቀሪያ መመሪያ</translation>
 <translation id="951991426597076286">አትቀበል</translation>
 <translation id="952471655966876828">መሣሪያው ሲበራ እና ስራ ላይ ሲውል በራስ-ሰር ይገናኛል</translation>
diff --git a/chrome/app/resources/generated_resources_ar.xtb b/chrome/app/resources/generated_resources_ar.xtb
index dbe809f..6f56dc4 100644
--- a/chrome/app/resources/generated_resources_ar.xtb
+++ b/chrome/app/resources/generated_resources_ar.xtb
@@ -2857,7 +2857,7 @@
 <translation id="3653160965917900914">مشاركات ملفات الشبكة</translation>
 <translation id="3653999333232393305">مواصلة السماح لـ <ph name="HOST" /> بالدخول إلى الميكروفون</translation>
 <translation id="3654045516529121250">الاطّلاع على إعدادات إمكانية الوصول</translation>
-<translation id="3655712721956801464">{NUM_FILES,plural, =1{لديه لإذن بالوصول الدائم إلى ملف واحد.}zero{لديه لإذن بالوصول الدائم إلى # من الملفات.}two{لديه لإذن بالوصول الدائم إلى ملفين (#).}few{ لديه لإذن بالوصول الدائم إلى # ملفات.}many{لديه لإذن بالوصول الدائم إلى # ملفًا.}other{لديه لإذن بالوصول الدائم إلى # من الملفات.}}</translation>
+<translation id="3655712721956801464">{NUM_FILES,plural, =1{لديه الإذن بالوصول الدائم إلى ملف واحد.}zero{لديه الإذن بالوصول الدائم إلى # من الملفات.}two{لديه الإذن بالوصول الدائم إلى ملفين (#).}few{ لديه الإذن بالوصول الدائم إلى # ملفات.}many{لديه الإذن بالوصول الدائم إلى # ملفًا.}other{لديه الإذن بالوصول الدائم إلى # من الملفات.}}</translation>
 <translation id="3658871634334445293">‏تسارع TrackPoint</translation>
 <translation id="3659929705630080526">لقد أدخلت رمز دخول غير صحيح عدّة مرات. يُرجى إعادة المحاولة لاحقًا.</translation>
 <translation id="3660234220361471169">غير موثوق بها</translation>
diff --git a/chrome/app/resources/generated_resources_as.xtb b/chrome/app/resources/generated_resources_as.xtb
index 3620fb6f..34cffed4 100644
--- a/chrome/app/resources/generated_resources_as.xtb
+++ b/chrome/app/resources/generated_resources_as.xtb
@@ -1128,6 +1128,7 @@
 <translation id="2034346955588403444">অন্য ৱাই-ফাই নেটৱৰ্ক যোগ কৰক</translation>
 <translation id="2035211704574173780">গ্ৰে’স্কেল</translation>
 <translation id="203574396658008164">লক স্ক্ৰীণৰ পৰা টোকা লোৱাৰ সুবিধা সক্ষম কৰক</translation>
+<translation id="2036514476578229158">আপোনাক এই ছাইটটোলৈ যাবলৈ কোৱা হৈছে। আপোনাৰ অভিভাৱকে Family Linkত প্ৰত্যুত্তৰ দিব পাৰে।</translation>
 <translation id="2037445849770872822">এই Google একাউণ্টটোৰ বাবে তদাৰকী কৰা সুবিধাটো ছেট কৰা হৈছে। অধিক অভিভাৱকীয় নিয়ন্ত্ৰণ ছেট আপ কৰিবলৈ 'অব্যাহত ৰাখক বাছনি কৰক।
 
 অন্যথা, এতিয়াই ছাইন আউট কৰক যাতে এই একাউণ্টত কৰা সালসলনিবোৰ এই ডিভাইচত দেখা যায়।
@@ -1248,6 +1249,7 @@
 <translation id="2135787500304447609">&amp;ৰখোৱাৰ পৰা আৰম্ভ কৰক</translation>
 <translation id="2136372518715274136">নতুন পাছৱৰ্ড দিয়ক</translation>
 <translation id="2136476978468204130">আপুনি দিয়া পাছফ্রেজটো ভুল</translation>
+<translation id="2137891579555018930">অনুমতিৰ বাবে অপেক্ষা কৰি থকা হৈছে...</translation>
 <translation id="2138398485845393913">"<ph name="DEVICE_NAME" />"ৰ সৈতে সংযোগ কৰাৰ প্ৰক্ৰিয়া এতিয়াও চলি আছে</translation>
 <translation id="2139919072249842737">ছেট আপ বুটাম</translation>
 <translation id="2140788884185208305">বেটাৰীৰ অৱস্থা</translation>
@@ -4125,6 +4127,7 @@
 <translation id="4858913220355269194">ফ্ৰিটজ</translation>
 <translation id="4862642413395066333">OCSP সঁহাৰিত চহী কৰা</translation>
 <translation id="4863769717153320198"><ph name="WIDTH" /> x <ph name="HEIGHT" />ৰ দৰে লাগিছে (ডি’ফল্ট হিচাপে থকা)</translation>
+<translation id="486459320933704969">আ্ৰপুনি এই ৱেবছাইটটো চোৱাত আপত্তি নাই বুলি এগৰাকী অভিভাৱক অথবা প্ৰাপ্তবয়স্ক পৰিয়ালৰ লোকে জনাব লাগিব</translation>
 <translation id="4864805589453749318">এটা বিদ্যালয়ৰ একাউণ্ট যোগ দিয়াৰ অনুমতি দি থকা অভিভাৱকগৰাকীক বাছনি কৰক।</translation>
 <translation id="486635084936119914">ডাউনল’ড কৰাৰ পাছত নিৰ্দিষ্ট ফাইলৰ প্ৰকাৰসমূহ স্বয়ংক্ৰিয়ভাৱে খোলক</translation>
 <translation id="4868281708609571334">Google Assistantক <ph name="SUPERVISED_USER_NAME" />ৰ কণ্ঠধ্বনি চিনি পাবলৈ শিকাওক</translation>
@@ -8686,6 +8689,7 @@
 <translation id="947329552760389097">উপাদানসমূহ  &amp;পৰীক্ষা কৰক</translation>
 <translation id="947526284350604411">আপোনাৰ উত্তৰ</translation>
 <translation id="947667444780368238"><ph name="ORIGIN" />এ এই ফ’ল্ডাৰটোত থকা ফাইলসমূহ খুলিব নোৱাৰে কাৰণ ইয়াত ছিষ্টেমৰ ফাইল আছে</translation>
+<translation id="949314938206378263">আপোনাক এই ছাইটটোলৈ যাবলৈ কোৱা হৈছে। আপোনাৰ অভিভাৱকে Family Linkত প্ৰত্যুত্তৰ দিব পাৰে।</translation>
 <translation id="950307215746360464">ছেটআপ গাইড</translation>
 <translation id="951991426597076286">অস্বীকাৰ কৰক</translation>
 <translation id="952471655966876828">অন কৰিলে অথবা ব্যৱহাৰ কৰিলে ডিভাইচ স্বয়ংক্ৰিয়ভাৱে সংযুক্ত হ’ব</translation>
diff --git a/chrome/app/resources/generated_resources_az.xtb b/chrome/app/resources/generated_resources_az.xtb
index 9fb2fc8..ca16fb6 100644
--- a/chrome/app/resources/generated_resources_az.xtb
+++ b/chrome/app/resources/generated_resources_az.xtb
@@ -2396,6 +2396,7 @@
 <translation id="3188465121994729530">Hərəkətli Ortalama</translation>
 <translation id="3189187154924005138">Böyük kursor</translation>
 <translation id="3190558889382726167">Yadda saxlanılmış Parol</translation>
+<translation id="3192589799003798742">Chromebook'da Steam'in ayarlanması</translation>
 <translation id="3192947282887913208">Audio Fayllar</translation>
 <translation id="3193695589337931419">Sistem Siqnal Utilitləri</translation>
 <translation id="3194786596445804250">Üçüncü tərəf kukilərini bloklamaq haqqında detalları göstərin</translation>
@@ -2535,6 +2536,7 @@
 <translation id="3341699307020049241">Yanlış PIN. <ph name="RETRIES" /> cəhdiniz qalır.</translation>
 <translation id="3341703758641437857">Fayl URL-lərinə girişə icazə verin</translation>
 <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" bu artırmanı silmək istəyir.</translation>
+<translation id="3343977377045378693">Ayarlama icra edilir</translation>
 <translation id="3345135638360864351">Bu sayta giriş sorğunuz <ph name="NAME" /> ünvanına göndərilə bilmədi. Yenidən cəhd edin.</translation>
 <translation id="3345634917232014253">Az öncə təhlükəsizlik yoxlaması icra edildi</translation>
 <translation id="3345886924813989455">Heç bir dəstəklənən brauzer tapılmadı</translation>
@@ -2546,6 +2548,7 @@
 <translation id="3354768182971982851">Chrome tətbiqlərinin köhnə versiyaları 2022-ci ilin dekabrından sonra Mac cihazlarında açılmayacaq. Yeni versiyanın əlçatan olub-olmadığını yoxlayın.</translation>
 <translation id="3354972872297836698"><ph name="DEVICE_NAME" /> cihazı ilə birləşdirmək mümkün olmadı; yenidən cəhd etmək üçün cihaz seçin</translation>
 <translation id="3355936511340229503">Bağlantı xətası</translation>
+<translation id="3356036636691722598">Chromebook'da oyundan faydalanın</translation>
 <translation id="3356469410714175391">(Virtual kart aktiv edilib)</translation>
 <translation id="3356580349448036450">Tamamlandı</translation>
 <translation id="3359256513598016054">Sertifikat Qaydaları Limitləri</translation>
@@ -3458,6 +3461,7 @@
 <translation id="4211904048067111541">Android tətbiqləri ilə istifadəni dayandırın</translation>
 <translation id="42126664696688958">Eksport</translation>
 <translation id="42137655013211669">Bu resursa giriş server tərəfindən qadağan edilib.</translation>
+<translation id="4214192212360095377">İndi deaktiv edin</translation>
 <translation id="4217558091331485702">Açmazdan əvvəl skanlayın</translation>
 <translation id="4217571870635786043">İmla</translation>
 <translation id="4218081191298393750">Bu tabı səssiz etmək üçün dinamik işarəsinə klikləyin</translation>
@@ -4359,6 +4363,7 @@
 <translation id="5089763948477033443">Yan Panel Ölçü Dəyişmə Vasitəsi</translation>
 <translation id="5090637338841444533">Kameranızın mövqeyini izləmək icazəsi verilməyib</translation>
 <translation id="5093569275467863761">Anonim Geri/İrəli Keşlənmiş Alt-çərçivə: <ph name="BACK_FORWARD_CACHE_INCOGNITO_PAGE_URL" /></translation>
+<translation id="5094042205195563542">Quraşdırma başladılır</translation>
 <translation id="5094176498302660097">Fayllar tətbiqindən və ya digər tətbiqlərdən dəstəklənən faylları bu tətbiqlə aça və redaktə edə bilərsiniz. Defolt olaraq bu tətbiqin hansı faylları açdığına nəzarət etmək üçün <ph name="BEGIN_LINK" />cihazınızda defolt tətbiqlərin necə ayarlanmasını öyrənin<ph name="END_LINK" />.</translation>
 <translation id="5094721898978802975">Nativ tətbiqlərlə əməkdaşlıqla ünsiyyət qurun</translation>
 <translation id="5097002363526479830">'<ph name="NAME" />': <ph name="DETAILS" /> şəbəkəsinə qoşulmaq uğursuz oldu</translation>
@@ -6379,6 +6384,7 @@
 <translation id="7014174261166285193">Quraşdırma uğursuz oldu.</translation>
 <translation id="7014480873681694324">Vurğulamanı Silin</translation>
 <translation id="7014741021609395734">Miqyas səviyyəsi</translation>
+<translation id="7014961128696979283">Steam'i işə salın</translation>
 <translation id="7015088858756332848">Chromebook'da Steam'i işə salmaq mümkün olmadı. Yenidən cəhd edin</translation>
 <translation id="7017004637493394352">Yenidən "Ok Google" deyin</translation>
 <translation id="7017219178341817193">Yeni səhifə əlavə edin</translation>
@@ -6772,6 +6778,7 @@
 <translation id="7423425410216218516">Görünmə <ph name="MINUTES" /> dəqiqə ərzində aktiv olacaq</translation>
 <translation id="7423513079490750513"><ph name="INPUT_METHOD_NAME" /> silin</translation>
 <translation id="7423807071740419372"><ph name="APP_NAME" /> tətbiqinin işləməsi üçün icazə tələb olunur</translation>
+<translation id="7424153922653300265">Enerjiyə Qənaət aktivdir</translation>
 <translation id="7424818322350938336">Şəbəkə əlavə edilib</translation>
 <translation id="7427315069950454694">bu gün üçün xatirələriniz</translation>
 <translation id="7427348830195639090">Arxa Fon Səhifəsi: <ph name="BACKGROUND_PAGE_URL" /></translation>
@@ -8012,6 +8019,7 @@
 <translation id="859246725979739260">Bu saytın məkanınıza girişi blok edilib.</translation>
 <translation id="8593121833493516339">İstifadə və diaqnostika datasını göndərin. Google'a diaqnostika, cihaz və tətbiq istifadə datasını avtomatik göndərməklə övladınızın Android təcrübəsini təkmilləşdirin. Bu, övladınızı müəyyən etmək üçün istifadə edilməyəcək, eyni zamanda, sistem və tətbiq sabitliyi və digər təkmilləşdirmələrə kömək edəcək. Ümumi data, həmçinin, Google tətbiqləri və Android developerləri kimi partnyorlara kömək edəcək. Övladınız üçün əlavə Veb və Tətbiq Fəaliyyəti aktiv edilərsə, həmin data Google hesabında yadda saxlana bilər. <ph name="BEGIN_LINK1" />Ətraflı Məlumat<ph name="END_LINK1" /></translation>
 <translation id="8596540852772265699">Fərdi fayllar</translation>
+<translation id="8597404194697561297">Chromebook'da Steam'ə xoş gəlmisiniz</translation>
 <translation id="8597845839771543242">Funksiya formatı:</translation>
 <translation id="8599681327221583254">Bir və ya daha çox siyasət düzgün konfiqurasiya edilməyib. Administratorunuz ilə əlaqə saxlayın</translation>
 <translation id="8599864823732014237">Müəssisənin qeydiyyatı keçilsin?</translation>
@@ -8277,6 +8285,7 @@
 <translation id="8838601485495657486">Qeyri-şəffaf</translation>
 <translation id="8838770651474809439">Hamburger</translation>
 <translation id="8838778928843281408">Telefonların idarə edilməsi</translation>
+<translation id="883924185304953854">Şəkil ilə axtarış edin</translation>
 <translation id="8841843049738266382">İcazə verilənlər siyahısında olan istifadəçiləri oxuyun və dəyişin</translation>
 <translation id="8842594465773264717">Bu barmaq izini silin</translation>
 <translation id="8845001906332463065">Yardım alın</translation>
diff --git a/chrome/app/resources/generated_resources_be.xtb b/chrome/app/resources/generated_resources_be.xtb
index ea0dc36..5c98a3a 100644
--- a/chrome/app/resources/generated_resources_be.xtb
+++ b/chrome/app/resources/generated_resources_be.xtb
@@ -1121,6 +1121,7 @@
 <translation id="2034346955588403444">Дадаць іншую сетку Wi-Fi</translation>
 <translation id="2035211704574173780">Адценні шэрага</translation>
 <translation id="203574396658008164">Уключыць стварэнне нататак на экране блакіроўкі</translation>
+<translation id="2036514476578229158">Запыт на наведванне гэтага сайта адпраўлены. Твае бацькі змогуць адказаць на яго ў Family Link.</translation>
 <translation id="2037445849770872822">Для гэтага Уліковага запісу Google наладжаны бацькоўскі кантроль. Каб наладзіць яго дадатковыя параметры, выберыце "Працягнуць".
 
 Або выйдзіце, каб змяненні ў гэтым уліковым запісе адлюстраваліся на прыладзе.
@@ -1241,6 +1242,7 @@
 <translation id="2135787500304447609">&amp;Узнавіць</translation>
 <translation id="2136372518715274136">Увядзіце новы пароль</translation>
 <translation id="2136476978468204130">Уведзена няправільная фраза-пароль</translation>
+<translation id="2137891579555018930">Чакаем дазволу...</translation>
 <translation id="2138398485845393913">Падключэнне да "<ph name="DEVICE_NAME" />" яшчэ працягваецца</translation>
 <translation id="2139919072249842737">Кнопка наладкі</translation>
 <translation id="2140788884185208305">Стан акумулятара</translation>
@@ -4115,6 +4117,7 @@
 <translation id="4858913220355269194">Бац</translation>
 <translation id="4862642413395066333">Падпісванне адказаў OCSP</translation>
 <translation id="4863769717153320198">Здаецца, гэта <ph name="WIDTH" /> × <ph name="HEIGHT" /> (стандартная)</translation>
+<translation id="486459320933704969">Адзін з бацькоў або законны прадстаўнік павінен даць дазвол на наведванне гэтага сайта</translation>
 <translation id="4864805589453749318">Выберыце, хто з бацькоў дае дазвол дадаць навучальны ўліковы запіс.</translation>
 <translation id="486635084936119914">Аўтаматычна адкрываць пэўныя тыпы файлаў пасля спампоўвання</translation>
 <translation id="4868281708609571334">Навучыце Памочніка Google распазнаваць голас карыстальніка <ph name="SUPERVISED_USER_NAME" /></translation>
@@ -8679,6 +8682,7 @@
 <translation id="947329552760389097">&amp;Праверыць элементы</translation>
 <translation id="947526284350604411">Ваш адказ</translation>
 <translation id="947667444780368238">Сайт <ph name="ORIGIN" /> не можа адкрываць файлы ў гэтай папцы, бо ў ёй знаходзяцца сістэмныя файлы</translation>
+<translation id="949314938206378263">Запыт на наведванне гэтага сайта адпраўлены. Адзін з тваіх бацькоў зможа адказаць на яго ў Family Link.</translation>
 <translation id="950307215746360464">Дапаможнік па наладжванні</translation>
 <translation id="951991426597076286">Адхіліць</translation>
 <translation id="952471655966876828">Прылада падключыцца аўтаматычна, калі яе ўключаць або будуць выкарыстоўваць</translation>
diff --git a/chrome/app/resources/generated_resources_bg.xtb b/chrome/app/resources/generated_resources_bg.xtb
index 05d42eb..30b0c40 100644
--- a/chrome/app/resources/generated_resources_bg.xtb
+++ b/chrome/app/resources/generated_resources_bg.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="bg">
 <translation id="1001033507375626788">Тази мрежа е споделена с вас</translation>
+<translation id="1002085272681738789">Разделът отново е активен</translation>
 <translation id="1003088604756913841">Отваряне на връзката в нов прозорец на <ph name="APP" /></translation>
 <translation id="100323615638474026">USB устройство (<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />)</translation>
 <translation id="1004218526896219317">Достъп до сайтове</translation>
@@ -323,6 +324,7 @@
 <translation id="1296911687402551044">Фиксиране на избрания раздел</translation>
 <translation id="1297175357211070620">Принтер</translation>
 <translation id="129770436432446029">Изпращане на отзиви за <ph name="EXPERIMENT_NAME" /></translation>
+<translation id="130097046531636712">Това удължава живота на батерията, като ограничава активността на заден план и визуалните ефекти, като например гладкото превъртане</translation>
 <translation id="1301135395320604080"><ph name="ORIGIN" /> може да редактира следните файлове</translation>
 <translation id="1302227299132585524">Разрешаване на JavaScript от събития на Apple</translation>
 <translation id="1303101771013849280">HTML файл с отметки</translation>
@@ -381,6 +383,7 @@
 <translation id="1361655923249334273">Не се използва</translation>
 <translation id="1362865166188278099">Механичен проблем. Проверете принтера</translation>
 <translation id="1363585519747660921">Принтерът с USB трябва да бъде конфигуриран</translation>
+<translation id="136378536198524553">Режимът за икономия на енергия е включена</translation>
 <translation id="1368603372088757436">Linux не се поддържа от вашия <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Научете повече<ph name="LINK_END" /></translation>
 <translation id="1372841398847029212">Синхронизиране с профила ви</translation>
 <translation id="1373176046406139583">Видимостта на устройството ви управлява това, кой може да споделя с вас, докато екранът ви е отключен. <ph name="LINK_BEGIN" />Научете повече<ph name="LINK_END" /></translation>
@@ -648,6 +651,7 @@
 <translation id="1610272688494140697">Настройки за приложението</translation>
 <translation id="161042844686301425">синьозелено</translation>
 <translation id="1611432201750675208">Устройството ви е заключено</translation>
+<translation id="1611776894942218234">Устройството трябва да е в бета-канал</translation>
 <translation id="1612019740169791082">Контейнерът ви не е конфигуриран да поддържа промени в размера на диска. За да коригирате обема на хранилището, заделено за Linux, създайте резервно копие и след това го възстановете в нов контейнер.</translation>
 <translation id="1613019471223620622">Показване на паролата за <ph name="USERNAME" /> в домейна <ph name="DOMAIN" /></translation>
 <translation id="1613149688105334014">Старите версии на приложенията за Chrome няма да се отварят след декември 2022 г. Можете да проверите дали е налице нова версия.</translation>
@@ -1211,6 +1215,7 @@
 <translation id="2098805196501063469">Проверка на останалите пароли</translation>
 <translation id="2099686503067610784">Да се изтрие ли сертификатът на сървър „<ph name="CERTIFICATE_NAME" />“?</translation>
 <translation id="2100273922101894616">Автоматичен вход</translation>
+<translation id="2100986609271491802">Понастоящем това устройство не поддържа Steam на Chromebook</translation>
 <translation id="2101225219012730419">Версия:</translation>
 <translation id="2102396546234652240">Да не се разрешава на сайтовете да използват микрофона ви</translation>
 <translation id="2102495993840063010">Приложения за Android</translation>
@@ -1509,6 +1514,9 @@
 <translation id="2350133097354918058">Презареждането завърши</translation>
 <translation id="2350182423316644347">Приложението се подготвя за работа...</translation>
 <translation id="235028206512346451">Ако се отдалечите от устройството си, екранът ще се заключи автоматично. Когато сте пред устройството, екранът ще остане активен по-дълго време. Ако не използвате опция за заключен екран, вместо да се заключва, устройството ви ще преминава в спящ режим.</translation>
+<translation id="2350866610930767288"><ph name="BEGIN_PARAGRAPH1" />Ако при инсталирането на демонстрационния режим сте получили инструкции за въвеждане на идентификационен код на магазин на търговец, моля, въведете го отдясно*.  В противен случай можете да оставите това поле празно и да продължите.<ph name="END_PARAGRAPH1" />
+    <ph name="BEGIN_PARAGRAPH2" />Ще можете да инсталирате демонстрационния режим и без код, но е важно да го въведете, ако е приложим за магазина ви.<ph name="END_PARAGRAPH2" />
+    <ph name="BEGIN_PARAGRAPH3" />* Забележка: Google използва тези кодове, за да определи коя версия на демонстрационния режим трябва да получи устройството и да измерва използването на режима.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="2352495879228166246">{NUM_ITEMS,plural, =1{1 елемент}other{{NUM_ITEMS} елемента}}</translation>
 <translation id="2352662711729498748">&lt; 1 МБ</translation>
 <translation id="2352810082280059586">Бележките на заключения екран автоматично се запазват в/ъв <ph name="LOCK_SCREEN_APP_NAME" />. Най-новата ви бележка ще остане на заключения екран.</translation>
@@ -1959,6 +1967,7 @@
 <translation id="2776560192867872731">Промяна на името на устройството <ph name="DEVICE_NAME" /></translation>
 <translation id="2777251078198759550">Изтриване на този контейнер</translation>
 <translation id="2778471504622896352">Добавяйте отдалечени приложения към стартовия панел на ChromeOS</translation>
+<translation id="2781120507965857989">Включете синхронизирането, за да получите своите отметки, пароли, история и др. на това устройство и навсякъде другаде, където синхронизирате. Възможно е да използваме историята ви, за да персонализираме търсенето и други услуги на Google.</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2782104745158847185">Грешка при инсталирането на приложението за Linux</translation>
 <translation id="2783298271312924866">Изтеглено</translation>
@@ -1979,6 +1988,7 @@
 <translation id="2792697226874849938">Изображение за ограничение</translation>
 <translation id="2794233252405721443">Сайтът е блокиран</translation>
 <translation id="2794522004398861033">Свържете се с Wi-Fi или Ethernet, за да настроите електронна SIM карта</translation>
+<translation id="2795074478966352573">Още не се поддържат профили, управлявани чрез Family Link</translation>
 <translation id="2795716239552913152">Сайтовете обикновено използват местоположението ви за осигуряване на подходящи функции или информация, като например местни новини или магазини в района</translation>
 <translation id="2796424461616874739">Времето за изчакване за удостоверяване изтече при установяването на връзка с/ъс <ph name="DEVICE_NAME" />.</translation>
 <translation id="2796740370559399562">„Бисквитките“ да останат разрешени</translation>
@@ -2164,6 +2174,7 @@
 <translation id="2949289451367477459">Използване на местоположението. Позволете на приложенията и услугите да ползват местоположението на това устройство, ако имат съответното разрешение за достъп. Google може периодично да събира данни за местоположението и да ги използва по анонимен начин с цел подобряване на точността му и базиращите се на него услуги. <ph name="BEGIN_LINK1" />Научете повече<ph name="END_LINK1" /></translation>
 <translation id="2950666755714083615">Регистрирайте ме</translation>
 <translation id="2953019166882260872">Свържете телефона си посредством кабел</translation>
+<translation id="2953218713108551165">Известията не са разрешени за <ph name="SITE" />. Ще получите повторно запитване при следващото си посещение.</translation>
 <translation id="2956070239128776395">В група е вложена секция: <ph name="ERROR_LINE" /></translation>
 <translation id="2958721676848865875">Предупреждение за пакетиране на разширението</translation>
 <translation id="2959127025785722291">Нещо се обърка. Сканирането не завърши. Моля, опитайте отново.</translation>
@@ -2872,6 +2883,7 @@
 <translation id="3665919494326051362">Текущата версия е <ph name="CURRENT_VERSION" /></translation>
 <translation id="3670113805793654926">Устройства от който и да е доставчик</translation>
 <translation id="3670229581627177274">Включване на Bluetooth</translation>
+<translation id="3672663996348587094">Кликнете, за да разрешите <ph name="EXTENSIONS_REQUESTING_ACCESS" /> за <ph name="ORIGIN" />:</translation>
 <translation id="3672681487849735243">Открита е фабрична грешка</translation>
 <translation id="3673097791729989571">Услугата за вход се хоства от <ph name="SAML_DOMAIN" /></translation>
 <translation id="3673622964532248901">Нямате разрешение за предаване към това устройство.</translation>
@@ -3388,6 +3400,7 @@
 <translation id="4132183752438206707">Ще намерите приложения в Google Play Магазин</translation>
 <translation id="4132364317545104286">Преименуване на потребителския профил на електронната SIM карта</translation>
 <translation id="4133076602192971179">Отворете приложението, за да промените паролата си</translation>
+<translation id="4134818201340504801">В хранилището няма достатъчно място за завършване на настройването. Освободете място и опитайте отново</translation>
 <translation id="4135746311382563554">Допълнителни общи условия на Google Chrome и Chrome OS</translation>
 <translation id="4136203100490971508">Нощното осветление ще се изключи автоматично по изгрев</translation>
 <translation id="41365691917097717">Ако продължите, отстраняването на грешки през ADB ще бъде активирано, за да създавате и тествате приложения за Android. Обърнете внимание, че това действие позволява инсталирането на приложения за Android, които не са удостоверени от Google. За деактивирането на ADB е необходимо да бъдат възстановени фабричните настройки.</translation>
@@ -3624,6 +3637,7 @@
 <translation id="4378556263712303865">Заявка за устройството</translation>
 <translation id="4379281552162875326">Да се деинсталира ли <ph name="APP_NAME" />?</translation>
 <translation id="4380648069038809855">Влязохте в режима на цял екран</translation>
+<translation id="4383048856908088702">Докато този раздел бе неактивен, режимът „Икономия на памет“ освободи <ph name="MEMORY_VALUE" /> памет за други задачи. Можете да промените това по всяко време от <ph name="SETTINGS_LINK" />.</translation>
 <translation id="4384312707950789900">Добавяне към предпочитаните</translation>
 <translation id="4384652540891215547">Активиране на разширението</translation>
 <translation id="4384886290276344300">Промяна на настройките на клавиатурата</translation>
@@ -3701,6 +3715,7 @@
 <translation id="4451479197788154834">Паролата ви е запазена на това устройство и в профила ви в Google</translation>
 <translation id="4451757071857432900">Блокиране за сайтовете, на които се показват натрапчиви или подвеждащи реклами (препоръчително)</translation>
 <translation id="4453946976636652378">Търсете с(ъс) <ph name="SEARCH_ENGINE_NAME" /> или въведете URL адрес</translation>
+<translation id="4458535500699390320">Докато този раздел бе неактивен, режимът „Икономия на памет“ освободи памет за други задачи. Можете да промените това по всяко време от настройките.</translation>
 <translation id="4459169140545916303">Активно преди <ph name="DEVICE_LAST_ACTIVATED_TIME" /> дни</translation>
 <translation id="4460014764210899310">Разгрупиране</translation>
 <translation id="4462159676511157176">Специално зададени сървъри за имена</translation>
@@ -3873,6 +3888,7 @@
 <translation id="4613271546271159013">Разширение промени страницата, която се показва при отваряне на нов раздел.</translation>
 <translation id="4615586811063744755">няма избрана „бисквитка“</translation>
 <translation id="461661862154729886">Енергиен източник</translation>
+<translation id="461676224702246336">При кликване за този сайт</translation>
 <translation id="4617001782309103936">Твърде кратък</translation>
 <translation id="4617019240346358451">Презаредете страницата, за да използвате <ph name="EXTENSION_NAME" /></translation>
 <translation id="4617270414136722281">Опции за разширението</translation>
@@ -3995,6 +4011,7 @@
 <translation id="4728558894243024398">Платформа</translation>
 <translation id="4728570203948182358"><ph name="BEGIN_LINK" />Администраторът ви<ph name="END_LINK" /> е изключил функцията за проверка за опасен софтуер</translation>
 <translation id="4730492586225682674">Последната бележка, написана с писалка, на заключения екран</translation>
+<translation id="4730888769809690665">Известията са разрешени за <ph name="SITE" /></translation>
 <translation id="473140019006744096">На това устройство няма достатъчно място за завършване на актуализацията. Освободете <ph name="NECESSARY_SPACE" /> и опитайте отново.</translation>
 <translation id="4733161265940833579"><ph name="BATTERY_PERCENTAGE" />% (лява)</translation>
 <translation id="4733793249294335256">Местоположение</translation>
@@ -4297,6 +4314,7 @@
 <translation id="5032430150487044192">Не може да се създаде QR код</translation>
 <translation id="5033137252639132982">Сайтове без разрешение за използване на сензорите за движение</translation>
 <translation id="5033266061063942743">Геометрични фигури</translation>
+<translation id="5034000993065629381">Моля, обърнете се към администратора си</translation>
 <translation id="5037676449506322593">Избиране на всички</translation>
 <translation id="5038818366306248416">По-рано избрахте да не разрешавате разширенията на <ph name="ORIGIN" /></translation>
 <translation id="5039696241953571917">Преглеждайте и управлявайте запазените пароли в профила си в Google</translation>
@@ -4427,6 +4445,7 @@
 <translation id="5161251470972801814">USB устройства от <ph name="VENDOR_NAME" /></translation>
 <translation id="5162905305237671850">Устройството <ph name="DEVICE_TYPE" /> бе блокирано</translation>
 <translation id="5163910114647549394">Разделът бе преместен в края на лентата с раздели</translation>
+<translation id="5164530241085602114">Известията не са разрешени за <ph name="SITE" /></translation>
 <translation id="516747639689914043">Hypertext Transport Protocol (HTTP)</translation>
 <translation id="5170568018924773124">Показване в папката</translation>
 <translation id="5171045022955879922">Търсете или въведете URL адрес</translation>
@@ -4529,6 +4548,7 @@
 <translation id="5269977353971873915">Отпечатването не бе успешно</translation>
 <translation id="5273806377963980154">Редактиране на URL адреса на сайта</translation>
 <translation id="5275084684151588738">Потребителски речници</translation>
+<translation id="5275100789567222478">Включване само когато нивото на батерията е <ph name="PERCENT" />% или по-малко</translation>
 <translation id="5275338516105640560">Бутон за запазената група раздели</translation>
 <translation id="5275352920323889391">Куче</translation>
 <translation id="527605719918376753">Спиране на звука на раздела</translation>
@@ -4547,6 +4567,7 @@
 <translation id="5285635972691565180">Екран <ph name="DISPLAY_ID" /></translation>
 <translation id="5286194356314741248">Сканира се</translation>
 <translation id="5287425679749926365">Вашите профили</translation>
+<translation id="5288106344236929384">Още действия, опции за кода за достъп на <ph name="USERNAME" /> за <ph name="DOMAIN" /></translation>
 <translation id="5288678174502918605">По&amp;вторно отваряне на затворения раздел</translation>
 <translation id="52895863590846877">Страницата не е на <ph name="LANGUAGE" /></translation>
 <translation id="52912272896845572">Файлът с личен ключ е невалиден.</translation>
@@ -4742,6 +4763,7 @@
 <translation id="5473099001878321374">С продължаването си приемате, че това устройство може също автоматично да изтегля и инсталира актуализации и приложения от Google, оператора на детето ви и производителя си, при което е възможно да използва мобилни данни. В някои от тези приложения може да се предлагат покупки.</translation>
 <translation id="5473156705047072749">{NUM_CHARACTERS,plural, =1{ПИН кодът трябва да е с дължина поне един знак}other{ПИН кодът трябва да е с дължина поне # знака}}</translation>
 <translation id="5474859849784484111"><ph name="MANAGER" /> изисква да се свържете с Wi-Fi сега и да изтеглите актуализация. За целта можете да използвате и връзка с отчитане (възможно е да ви бъдат начислени такси).</translation>
+<translation id="5476016146231427848">Рестартирайте устройството си, за да използвате Steam на Chromebook</translation>
 <translation id="5481273127572794904">Сайтове без разрешение за автоматично изтегляне на няколко файла</translation>
 <translation id="5481941284378890518">Добавяне на принтери в близост</translation>
 <translation id="5483785310822538350">Отмяна на достъпа до файловете и устройството</translation>
@@ -4962,6 +4984,7 @@
 <translation id="5683806393796685434">Моля, въведете кода си за активиране</translation>
 <translation id="5684181005476681636">Подробности за Wi-Fi мрежата</translation>
 <translation id="5684661240348539843">Идентификатор на актива</translation>
+<translation id="5684969244627829799">Влезте в профил на потребител и опитайте отново</translation>
 <translation id="5687326903064479980">Часова зона</translation>
 <translation id="5687935527303996204">Проверете дали устройството ви е включено в електрическата мрежа и не го изключвайте. Инсталацията може да трае до 20 минути. Устройството ще се изключи автоматично, щом инсталацията завърши.</translation>
 <translation id="5689516760719285838">Местоположение</translation>
@@ -5088,6 +5111,7 @@
 <translation id="5805697420284793859">Мениджър на прозорците</translation>
 <translation id="5806447147478173900">Общо хранилище, използвано от посочените сайтове: <ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">0° (по подразбиране)</translation>
+<translation id="5810603387504252966">настройката #borealis-enabled трябва да е активирана в chrome://flags</translation>
 <translation id="5810809306422959727">Този профил не отговаря на условията за родителски контроли</translation>
 <translation id="5811614940486072060">Този файл обикновено не се изтегля и може да е опасен</translation>
 <translation id="5812674658566766066">Разгъване на всички</translation>
@@ -5167,6 +5191,7 @@
 <translation id="5882449899683447569">Нещо се обърка и паролите ви не бяха импортирани</translation>
 <translation id="5882919346125742463">Известни мрежи</translation>
 <translation id="5883356647197510494">Автоматично са блокирани „<ph name="PERMISSION_1" />“ и „<ph name="PERMISSION_2" />“</translation>
+<translation id="5884447826201752041">Персонализиране за всяко разширение</translation>
 <translation id="5884474295213649357">Този раздел е свързан с USB устройство.</translation>
 <translation id="5885314688092915589">Този потребителски профил ще се управлява от организацията ви</translation>
 <translation id="5886009770935151472">Пръст 1</translation>
@@ -5606,6 +5631,7 @@
 <translation id="6301300352769835063">Позволете на Google да използва данните за хардуера ви с цел подобряване на <ph name="DEVICE_OS" />. Ако откажете, данните пак се изпращат до Google, за да се определят подходящите актуализации, но не се съхраняват и не се използват за други цели. Научете повече на адрес g.co/flex/HWDataCollection.</translation>
 <translation id="630292539633944562">Предложения за лична информация</translation>
 <translation id="6305607932814307878">Глобално правило:</translation>
+<translation id="6305909198255586420">Моля, инсталирайте чрез основния си потребителски профил</translation>
 <translation id="6307990684951724544">Системата е заета</translation>
 <translation id="6308493641021088955">Влизането се осигурява от <ph name="EXTENSION_NAME" /></translation>
 <translation id="6308937455967653460">З&amp;апазване на връзката като...</translation>
@@ -5927,6 +5953,7 @@
 <translation id="6608166463665411119">Нулиране на електронната SIM карта</translation>
 <translation id="6609478180749378879">Данните за вход в профила ще бъдат съхранени на това устройство, след като излезете от режим „инкогнито“. По-късно ще можете отново да влезете в профила си в този уебсайт от устройството си.</translation>
 <translation id="6610002944194042868">Опции за превод</translation>
+<translation id="6611907964265870728">Проверете дали устройството ви е свързано с интернет</translation>
 <translation id="6611972847767394631">Намирайте разделите си тук</translation>
 <translation id="6613668613087513143">На това устройство няма достатъчно място за завършване на актуализацията. Освободете <ph name="NECESSARY_SPACE" /> и направете нов опит в Chrome.</translation>
 <translation id="6615455863669487791">Покажете ми</translation>
@@ -6315,6 +6342,7 @@
 <translation id="697508444536771064">Изключване на Linux</translation>
 <translation id="6975361011348772931">Изпратена заявка за четене и промяна</translation>
 <translation id="6978121630131642226">Търсещи машини</translation>
+<translation id="6979041727349121225">Икономия на енергия</translation>
 <translation id="6979044105893951891">Стартиране и прекратяване на управлявани сесии като гост</translation>
 <translation id="6979158407327259162">Google Диск</translation>
 <translation id="6979440798594660689">Заглушаване (стандартно)</translation>
@@ -6367,6 +6395,7 @@
 <translation id="7014174261166285193">Инсталацията не бе успешна.</translation>
 <translation id="7014480873681694324">Премахване на открояването</translation>
 <translation id="7014741021609395734">Увеличение</translation>
+<translation id="7015088858756332848">Стартирането на Steam на Chromebook не бе успешно. Опитайте отново</translation>
 <translation id="7017004637493394352">Кажете „Ok Google“ отново</translation>
 <translation id="7017219178341817193">Добавяне на нова страница</translation>
 <translation id="7017354871202642555">Не може да се зададе режим, след като е настроен прозорец.</translation>
@@ -6743,6 +6772,7 @@
 <translation id="7409854300652085600">Отметките са импортирани.</translation>
 <translation id="7410344089573941623">Да се получава запитване, ако <ph name="HOST" /> иска достъп до камерата и микрофона ви</translation>
 <translation id="7410852728357935715">Предаване към устройство</translation>
+<translation id="7411614333737930931">Рестартирайте устройството си и опитайте отново</translation>
 <translation id="741204030948306876">Да, ще участвам</translation>
 <translation id="7412226954991670867">Памет на графичния процесор</translation>
 <translation id="7414464185801331860">18x</translation>
@@ -6973,6 +7003,7 @@
 <translation id="7635048370253485243">Фиксирано от администратора ви</translation>
 <translation id="7636919061354591437">Инсталиране на това устройство</translation>
 <translation id="7637253234491814483">Докоснете сензора за отпечатъци в горния десен ъгъл на клавиатурата до бутона за включване/изключване. Данните за отпечатъка ви се съхраняват надеждно и никога не напускат устройството ви <ph name="DEVICE_TYPE" />.</translation>
+<translation id="7637272932128132922">Докато този раздел бе неактивен, режимът „Икономия на памет“ освободи памет за други задачи. Можете да промените това по всяко време от <ph name="SETTINGS_LINK" />.</translation>
 <translation id="7637593984496473097">Няма достатъчно място на диска</translation>
 <translation id="7639914187072011620">Извличането от сървъра на URL адреса за пренасочване на SAML не бе успешно</translation>
 <translation id="764017888128728">С помощта на <ph name="PASSWORD_MANAGER_BRAND" /> автоматично влизате в отговарящи на условията сайтове с паролите, които сте запазили.</translation>
@@ -7089,6 +7120,7 @@
 <translation id="7728668285692163452">Промяната на канала ще бъде приложена по-късно</translation>
 <translation id="7730449930968088409">Заснемане на съдържанието на екрана ви</translation>
 <translation id="7730683939467795481">Тази страница бе променена от разширението <ph name="EXTENSION_NAME" /></translation>
+<translation id="7735165285389721951">Извършва се друго настройване на Steam. Изчакайте то да завърши, преди да опитате отново</translation>
 <translation id="7737115349420013392">Сдвоява се с(ъс) „<ph name="DEVICE_NAME" />“...</translation>
 <translation id="7737846262459425222">Можете да промените това по всяко време от „Настройки &gt; Google Асистент &gt; Контекст на екрана“.</translation>
 <translation id="7737948071472253612">Сайтове без разрешение за използване на камерата ви</translation>
@@ -7387,6 +7419,7 @@
 Файл с ключ: <ph name="KEY_FILE" />
 
 Пазете файла си с ключ на сигурно място. Той ви е необходим за създаване на нови версии на разширението.</translation>
+<translation id="8001100670809322641">Изчакайте няколко минути и опитайте отново</translation>
 <translation id="8002274832045662704">Разширена конфигурация на принтер</translation>
 <translation id="8002670234429879764">Вече няма достъп до <ph name="PRINTER_NAME" /></translation>
 <translation id="8004092996156083991">Ако паролите ви бъдат компрометирани, ще ви уведомим.</translation>
@@ -7396,6 +7429,7 @@
 <translation id="8008356846765065031">Няма връзка с интернет. Моля, проверете връзката си.</translation>
 <translation id="8009225694047762179">Управление на паролите</translation>
 <translation id="8011372169388649948">Преместихте „<ph name="BOOKMARK_TITLE" />“.</translation>
+<translation id="8011875486979733097">Steam не може да се инсталира</translation>
 <translation id="8012647001091218357">Не можахме да се свържем с родителите ви. Моля, опитайте отново.</translation>
 <translation id="8013993649590906847">Ако няма полезно описание за дадено изображение, Chrome ще се опита да предостави такова. За да бъдат създадени описания, съответните изображения се изпращат до Google.</translation>
 <translation id="8014154204619229810">Актуализиращата програма понастоящем се изпълнява. Опреснете след минута, за да проверите отново.</translation>
@@ -7486,6 +7520,7 @@
 <translation id="808894953321890993">Промяна на паролата</translation>
 <translation id="8090234456044969073">Четене на списък с най-често посещаваните от вас уебсайтове</translation>
 <translation id="8090513782447872344">Можете да се върнете по всяко време, за да прегледате това още веднъж</translation>
+<translation id="809312780580957751">Инсталирането на Steam на това устройство не бе успешно</translation>
 <translation id="8093359998839330381"><ph name="PLUGIN_NAME" /> не реагира</translation>
 <translation id="8095105960962832018"><ph name="BEGIN_PARAGRAPH1" />Създаване на резервно копие в Google Диск. По всяко време можете лесно да възстановите данните на устройството си или да го замените с друго. Резервното ви копие включва данните на приложенията.<ph name="END_PARAGRAPH1" />
 <ph name="BEGIN_PARAGRAPH2" />Резервните ви копия са качени в Google и са шифровани посредством паролата за профила ви в Google.<ph name="END_PARAGRAPH2" />
@@ -7581,6 +7616,7 @@
 <translation id="8177318697334260664">{NUM_TABS,plural, =1{Преместване на раздела в нов прозорец}other{Преместване на разделите в нов прозорец}}</translation>
 <translation id="8179188928355984576">Не се използва с приложения за Android</translation>
 <translation id="8179976553408161302">Enter</translation>
+<translation id="8180785270975217276">Режимът за икономия на енергия е включен</translation>
 <translation id="8180786512391440389"><ph name="EXTENSION" /> може да чете и изтрива изображения, видео- и звукови файлове в местоположенията с отметка.</translation>
 <translation id="8181215761849004992">Присъединяването към домейна не успя. Проверете дали профилът ви има достатъчно права за добавяне на устройства.</translation>
 <translation id="8182105986296479640">Приложението не реагира.</translation>
@@ -7703,6 +7739,7 @@
 <translation id="828642162569365647">Паролата или ПИН кодът защитават данните ви на това устройство <ph name="DEVICE_TYPE" />, включително информацията, до която осъществявате достъп от телефона си. Ще трябва да отключвате всеки път, когато <ph name="DEVICE_TYPE" /> излезе от спящ режим.</translation>
 <translation id="8287902281644548111">Търсене по извикване на API/по URL адрес</translation>
 <translation id="8288032458496410887">Деинсталиране на <ph name="APP" />...</translation>
+<translation id="8288539437195337464">Проверете дали устройството ви е актуално и опитайте отново</translation>
 <translation id="8289128870594824098">Размер на диска</translation>
 <translation id="8289509909262565712">Добре дошли в <ph name="DEVICE_OS" /></translation>
 <translation id="8293206222192510085">Добавяне на отметка</translation>
@@ -7997,6 +8034,7 @@
 <translation id="8599864823732014237">Искате ли да пропуснете корпоративното регистриране?</translation>
 <translation id="8601206103050338563">Удостоверяване на TLS WWW клиент</translation>
 <translation id="8601611099293226919">Търсете в екрана си с Google Обектив</translation>
+<translation id="8602674530529411098">Приложения (бета)</translation>
 <translation id="8602851771975208551">Друга програма на компютъра ви добави приложение, което може да промени начина на работа на Chrome.</translation>
 <translation id="8605428685123651449">Памет за SQLite</translation>
 <translation id="8608618451198398104">Добавяне на пропуск за Kerberos</translation>
@@ -8258,6 +8296,7 @@
 <translation id="8838601485495657486">Непрозрачно</translation>
 <translation id="8838770651474809439">Хамбургер</translation>
 <translation id="8838778928843281408">Управление на телефоните</translation>
+<translation id="883924185304953854">Търсене по изображение</translation>
 <translation id="8841843049738266382">Четене и промяна на потребителите в списъка на разрешени такива</translation>
 <translation id="8842594465773264717">Изтриване на отпечатъка</translation>
 <translation id="8845001906332463065">Получете помощ</translation>
@@ -8680,6 +8719,7 @@
 <translation id="939598580284253335">Въведете пропуск</translation>
 <translation id="939736085109172342">Нова папка</translation>
 <translation id="942532530371314860"><ph name="APP_NAME" /> споделя раздел в Chrome и звук.</translation>
+<translation id="944799160843436808">При настройването на Steam на Chromebook възникна проблем</translation>
 <translation id="945522503751344254">Изпращане на отзиви</translation>
 <translation id="947329552760389097">&amp;Инспектиране на елементите</translation>
 <translation id="947526284350604411">Вашият отговор</translation>
@@ -8704,6 +8744,7 @@
 <translation id="968000525894980488">Включете услугите за Google Play.</translation>
 <translation id="968037381421390582">Пост&amp;авяне и търсене на „<ph name="SEARCH_TERMS" />“</translation>
 <translation id="969096075394517431">Промяна на езиците</translation>
+<translation id="969574218206797926">Режимът „Икономия на памет“ освобождава памет от неактивните раздели, за да може да се използва от активните раздели и другите приложения</translation>
 <translation id="970047733946999531">{NUM_TABS,plural, =1{1 раздел}other{# раздела}}</translation>
 <translation id="971510864672937292">Да се изчистят ли данните за сайтовете и разрешенията за <ph name="SITE_NAME" /> и всички сайтове под него?</translation>
 <translation id="971774202801778802">URL адрес на отметката</translation>
diff --git a/chrome/app/resources/generated_resources_bn.xtb b/chrome/app/resources/generated_resources_bn.xtb
index aed43cf..91c6477 100644
--- a/chrome/app/resources/generated_resources_bn.xtb
+++ b/chrome/app/resources/generated_resources_bn.xtb
@@ -1131,6 +1131,7 @@
 <translation id="2034346955588403444">অন্য ওয়াই ফাই নেটওয়ার্ক যোগ করুন</translation>
 <translation id="2035211704574173780">গ্রেস্কেল</translation>
 <translation id="203574396658008164">লক স্ক্রিন থেকেই নোট নেওয়া সক্ষম করুন</translation>
+<translation id="2036514476578229158">তুমি এই সাইট দেখার অনুমতি চেয়েছ। আপনার অভিভাবক Family Link-এ উত্তর দিতে পারেন।</translation>
 <translation id="2037445849770872822">এই Google অ্যাকাউন্টের জন্য তত্ত্বাবধান সেট-আপ করা আছে। আরও অভিভাবকীয় নিয়ন্ত্রণ সেট-আপ করতে, 'চালিয়ে যান' বিকল্পটি বেছে নিন।
 
 অন্যথা, এখনই ডিভাইস থেকে সাইন-আউট করে আবার সাইন-ইন করুন, এটি করলে এই অ্যাকাউন্টে করা পরিবর্তনগুলি ডিভাইসে দেখতে পাবেন।
@@ -1251,6 +1252,7 @@
 <translation id="2135787500304447609">&amp;পুনঃসূচনা</translation>
 <translation id="2136372518715274136">নতুন পাসওয়ার্ড লিখুন</translation>
 <translation id="2136476978468204130">আপনার লেখা পাসফ্রেজটি ভুল</translation>
+<translation id="2137891579555018930">অনুমতির জন্য অপেক্ষা করা হচ্ছে...</translation>
 <translation id="2138398485845393913">"<ph name="DEVICE_NAME" />" এর সাথে এখনও সংযোগ করা হচ্ছে</translation>
 <translation id="2139919072249842737">সেট-আপ করার বোতাম</translation>
 <translation id="2140788884185208305">ব্যাটারির স্বাস্থ্য</translation>
@@ -4130,6 +4132,7 @@
 <translation id="4858913220355269194">ফ্রিটজ</translation>
 <translation id="4862642413395066333">OCSP টি প্রতিক্রিয়া স্বাক্ষরিত হচ্ছে</translation>
 <translation id="4863769717153320198">মনে হচ্ছে <ph name="WIDTH" /> x <ph name="HEIGHT" /> (সাধারণ)</translation>
+<translation id="486459320933704969">একজন প্যারেন্ট বা অভিভাবককে বলতে হবে যে এই ওয়েবসাইটটি দেখার জন্য আপনার পক্ষে ঠিক আছে</translation>
 <translation id="4864805589453749318">সেই অভিভাবককে বেছে নিন যিনি স্কুল অ্যাকাউন্ট যোগ করার জন্য অনুমতি দিয়েছেন।</translation>
 <translation id="486635084936119914">নির্দিষ্ট কিছু প্রকারের ফাইল ডাউনলোডের পরে স্বয়ংক্রিয়ভাবে খুলুন</translation>
 <translation id="4868281708609571334">Google Assistant যাতে <ph name="SUPERVISED_USER_NAME" />-এর ভয়েস শনাক্ত করতে পারে, তা শেখান</translation>
@@ -8266,6 +8269,7 @@
 <translation id="8838601485495657486">অস্বচ্ছ</translation>
 <translation id="8838770651474809439">হ্যামবার্গার</translation>
 <translation id="8838778928843281408">ফোন ম্যানেজ করুন</translation>
+<translation id="883924185304953854">ছবি দিয়ে সার্চ করুন</translation>
 <translation id="8841843049738266382">সাদা তালিকাভুক্ত ব্যবহারকারীদের তালিকা পড়ুন ও পরিবর্তন করুন</translation>
 <translation id="8842594465773264717">এই ফিঙ্গারপ্রিন্ট মুছুন</translation>
 <translation id="8845001906332463065">সাহায্য পান</translation>
@@ -8692,6 +8696,7 @@
 <translation id="947329552760389097">&amp;এলিমেন্ট ইন্সপেক্ট করুন</translation>
 <translation id="947526284350604411">আপনার উত্তর</translation>
 <translation id="947667444780368238">এই ফোল্ডারে সিস্টেম ফাইল আছে তাই <ph name="ORIGIN" /> ফাইল খুলতে পারছে না</translation>
+<translation id="949314938206378263">তুমি এই সাইট দেখার অনুমতি চেয়েছ। আপনার অভিভাবক Family Link-এ উত্তর দিতে পারেন।</translation>
 <translation id="950307215746360464">সেটআপ করার নির্দেশিকা</translation>
 <translation id="951991426597076286">প্রত্যাখ্যান</translation>
 <translation id="952471655966876828">ডিভাইসটি চালু হলে এবং ব্যবহার করা হলে অটোমেটিক ডিসকানেক্ট হয়ে যাবে</translation>
diff --git a/chrome/app/resources/generated_resources_bs.xtb b/chrome/app/resources/generated_resources_bs.xtb
index 7c7cfeee9..676ffac0 100644
--- a/chrome/app/resources/generated_resources_bs.xtb
+++ b/chrome/app/resources/generated_resources_bs.xtb
@@ -71,6 +71,7 @@
 <translation id="1067048845568873861">Kreirano</translation>
 <translation id="1067661089446014701">Radi dodatne sigurnosti, možete šifrirati lozinke na svom uređaju prije nego što se sačuvaju na vašem Google računu</translation>
 <translation id="1067922213147265141">Ostale Googleove usluge</translation>
+<translation id="1069104208554708737">Ovaj pristupni ključ će se sačuvati samo na ovom uređaju</translation>
 <translation id="1069355737714877171">Uklanjanje profila eSIM-a pod nazivom <ph name="PROFILE_NAME" /></translation>
 <translation id="1069814191880976658">Odaberite drugi ekran</translation>
 <translation id="1070377999570795893">Drugi program na vašem računaru je dodao ekstenziju koja može promijeniti rad Chromea.
@@ -351,6 +352,7 @@
 <translation id="1324106254079708331">Štiti lične Google račune svih onih koji su u opasnosti od ciljanih napada</translation>
 <translation id="1327272175893960498">Kerberos tiketi</translation>
 <translation id="1327495825214193325">Da omogućite otklanjanje grešaka putem ADB-a, potrebno je ponovo pokrenuti ovaj uređaj <ph name="DEVICE_TYPE" />. Onemogućavanje zahtijeva vraćanje na fabričke postavke.</translation>
+<translation id="1327527584824210101">Koristite pristupni ključ</translation>
 <translation id="1327794256477341646">Funkcije za koje je potrebna vaša lokacija neće funkcionirati</translation>
 <translation id="1331977651797684645">To sam ja.</translation>
 <translation id="1333489022424033687">Neke funkcije web lokacije <ph name="ORIGIN" /> možda neće raditi dok ne obrišete podatke koje su druge web lokacije pohranile na vašem uređaju</translation>
@@ -411,6 +413,7 @@
 <translation id="139013308650923562">Dozvoljeno je koristiti fontove instalirane na uređaju</translation>
 <translation id="1390548061267426325">Otvori kao običnu karticu</translation>
 <translation id="1390907927270446471"><ph name="PROFILE_USERNAME" /> nema ovlaštenje da štampa na štampaču <ph name="PRINTER_NAME" />. Kontaktirajte administratora.</translation>
+<translation id="1392047138650695757">Korisnikovi rječnici</translation>
 <translation id="1393283411312835250">Sunce i oblaci</translation>
 <translation id="1395730723686586365">Softver za ažuriranje je pokrenut</translation>
 <translation id="1395832189806039783">Istakni stavku fokusom tastature</translation>
@@ -1529,6 +1532,7 @@
 <translation id="2356070529366658676">Pitaj</translation>
 <translation id="2357330829548294574">Uklanjanje korisnika <ph name="USER_NAME" /></translation>
 <translation id="2358561147588818967">Web lokacije mogu koristiti JavaScript</translation>
+<translation id="2358703245148663432">Drugi uređaj</translation>
 <translation id="2358777858338503863">Kliknite da dozvolite na web lokaciji <ph name="ORIGIN" />:</translation>
 <translation id="2359071692152028734">Linux aplikacije mogu prestati reagirati.</translation>
 <translation id="2359345697448000899">Upravljajte ekstenzijama klikom na Ekstenzije u meniju Alati.</translation>
@@ -1888,6 +1892,7 @@
 <translation id="271033894570825754">Novo</translation>
 <translation id="2711073837061989559">Probni periodi</translation>
 <translation id="2712173769900027643">Zatraži odobrenje</translation>
+<translation id="2712207122921938368">Kreirajte pristupni ključ na drugom uređaju</translation>
 <translation id="2713106313042589954">Isključi kameru</translation>
 <translation id="2713444072780614174">Bijela</translation>
 <translation id="2714393097308983682">Google Play trgovina</translation>
@@ -2401,6 +2406,7 @@
 <translation id="3182749001423093222">Provjera pravopisa</translation>
 <translation id="3183139917765991655">Proces za uvoz profila</translation>
 <translation id="3183143381919926261">Mreže za prijenos podataka</translation>
+<translation id="3183613134231754987">Ovaj pristupni ključ će se sačuvati samo u Windows Hellou. Ostat će na ovom uređaju nakon što zatvorite sve anonimne prozore.</translation>
 <translation id="3183944777708523606">Raspored monitora</translation>
 <translation id="3184536091884214176">Postavite CUPS štampače ili upravljajte njima. <ph name="LINK_BEGIN" />Saznajte više<ph name="LINK_END" /></translation>
 <translation id="3185014249447200271">{NUM_APPS,plural, =1{Ova aplikacija je blokirana}one{Neke aplikacije su blokirane}few{Neke aplikacije su blokirane}other{Neke aplikacije su blokirane}}</translation>
@@ -2409,6 +2415,7 @@
 <translation id="3188465121994729530">Prosjek premještanja</translation>
 <translation id="3189187154924005138">Veliki kursor</translation>
 <translation id="3190558889382726167">Lozinka je sačuvana</translation>
+<translation id="3192589799003798742">Postavljanje Steama na Chromebooku</translation>
 <translation id="3192947282887913208">Audio fajlovi</translation>
 <translation id="3193695589337931419">Uslužni programi za signalizaciju sistema</translation>
 <translation id="3194786596445804250">Prikaži detalje o blokiranju kolačića trećih strana</translation>
@@ -2548,6 +2555,7 @@
 <translation id="3341699307020049241">Pogrešan PIN. Broj preostalih pokušaja: <ph name="RETRIES" />.</translation>
 <translation id="3341703758641437857">Dozvoli pristup URL-ovima fajlova</translation>
 <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" želi ukloniti ovu ekstenziju.</translation>
+<translation id="3343977377045378693">Izvršavanje postavljanja</translation>
 <translation id="3345135638360864351">Vaš zahtjev za pristup ovoj web lokaciji nije uspješno poslan korisniku <ph name="NAME" />. Pokušajte ponovo.</translation>
 <translation id="3345634917232014253">Sigurnosna provjera je izvršena maloprije</translation>
 <translation id="3345886924813989455">Nije pronađen nijedan podržani preglednik</translation>
@@ -2559,6 +2567,7 @@
 <translation id="3354768182971982851">Stare verzije Chromeovih aplikacija se neće moći otvarati na Mac uređajima nakon decembra 2022. Možete provjeriti je li dostupna nova verzija.</translation>
 <translation id="3354972872297836698">Uparivanje s uređajem <ph name="DEVICE_NAME" /> nije uspjelo. Odaberite uređaj da pokušate ponovo</translation>
 <translation id="3355936511340229503">Greška prilikom povezivanja</translation>
+<translation id="3356036636691722598">Uživajte u igrama na Chromebooku</translation>
 <translation id="3356469410714175391">(Virtuelna kartica je omogućena)</translation>
 <translation id="3356580349448036450">Završi</translation>
 <translation id="3359256513598016054">Ograničenja pravila za potvrdu</translation>
@@ -2879,6 +2888,7 @@
 <translation id="3654045516529121250">Čitanje vaših postavki pristupačnosti</translation>
 <translation id="3655712721956801464">{NUM_FILES,plural, =1{Ima trajan pristup jednom fajlu.}one{Ima trajan pristup # fajlu.}few{Ima trajan pristup za # fajla}other{Ima trajan pristup za # fajlova}}</translation>
 <translation id="3658871634334445293">Ubrzanje TrackPointa</translation>
+<translation id="3659550105763988702">Koristite pristupni ključ za aplikaciju <ph name="APP_NAME" /></translation>
 <translation id="3659929705630080526">Unijeli ste netačan pristupni kôd previše puta. Pokušajte ponovo kasnije</translation>
 <translation id="3660234220361471169">Nepouzdan</translation>
 <translation id="3664511988987167893">Ikona ekstenzije</translation>
@@ -3148,6 +3158,7 @@
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> želi: <ph name="FIRST_PERMISSION" /> i <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Odaberite tastaturu</translation>
 <translation id="3900966090527141178">Izvezite lozinke</translation>
+<translation id="3902789559055749153">Odaberite način na koji želite kreirati pristupni ključ za aplikaciju <ph name="APP_NAME" /></translation>
 <translation id="3903187154317825986">Ugrađena tastatura</translation>
 <translation id="3904326018476041253">Usluge lokacije</translation>
 <translation id="3904849010307028014">Na osnovu vaše interakcije s web lokacijom, kao što je redovna prijava na račun, ta web lokacija može izdati token povjerenja vašem pregledniku. Kasnije, ako druga web lokacija koju ste posjetili provjeri i pronađe važeći token povjerenja, veća je vjerovatnoća da će vas tretirati kao stvarnu osobu, a ne kao bota.</translation>
@@ -3473,11 +3484,13 @@
 <translation id="4211904048067111541">Zaustavi korištenje s Android aplikacijama</translation>
 <translation id="42126664696688958">Izvezi</translation>
 <translation id="42137655013211669">Server je zabranio pristup ovom izvoru.</translation>
+<translation id="4214192212360095377">Isključi sada</translation>
 <translation id="4217558091331485702">Skenirajte prije otvaranja</translation>
 <translation id="4217571870635786043">Diktiranje</translation>
 <translation id="4218081191298393750">Kliknite na ikonu zvučnika da isključite zvuk ove kartice</translation>
 <translation id="4219558185499589032">Box</translation>
 <translation id="4220648711404560261">Došlo je do greške prilikom aktiviranja.</translation>
+<translation id="4223845867739585293">Kreirajte pristupni ključ</translation>
 <translation id="4225397296022057997">Na svim web lokacijama</translation>
 <translation id="4228209296591583948">{NUM_EXTENSIONS,plural, =1{Ova ekstenzija nije dozvoljena}one{Neke ekstenzije nisu dozvoljene}few{Neke ekstenzije nisu dozvoljene}other{Neke ekstenzije nisu dozvoljene}}</translation>
 <translation id="4231095370974836764">Instalirajte aplikacije i igre s Google Playa na uređaj <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Saznajte više<ph name="LINK_END" /></translation>
@@ -4122,6 +4135,7 @@
 <translation id="4838907349371614303">Lozinka je ažurirana</translation>
 <translation id="4838958829619609362">Jezik odabira nije <ph name="LANGUAGE" /></translation>
 <translation id="4839303808932127586">Sač&amp;uvaj videozapis kao…</translation>
+<translation id="4839910546484524995">Pogledajte uređaj</translation>
 <translation id="4840096453115567876">Ipak napustiti anonimni način rada?</translation>
 <translation id="4841741146571978176">Potrebna virtuelna mašina ne postoji. Pokušajte postaviti VM <ph name="VM_TYPE" /> da nastavite</translation>
 <translation id="4842976633412754305">Ova stranica pokušava učitati skripte s izvora koji nisu autentificirani.</translation>
@@ -4374,6 +4388,7 @@
 <translation id="5089763948477033443">Regulator za promjenu veličine bočne ploče</translation>
 <translation id="5090637338841444533">Nije dozvoljeno praćenje položaja vaše kamere</translation>
 <translation id="5093569275467863761">Keširana verzija cijele stranice anonimnog načina rada za podokvir: <ph name="BACK_FORWARD_CACHE_INCOGNITO_PAGE_URL" /></translation>
+<translation id="5094042205195563542">Pokretanje instalacije</translation>
 <translation id="5094176498302660097">Možete otvoriti i uređivati podržane fajlove pomoću ove aplikaciju u aplikaciji Files ili u drugim aplikacijama. Da kontrolirate koji fajlovi zadano otvaraju ovu aplikaciju, <ph name="BEGIN_LINK" />saznajte kako postaviti zadane aplikacije na svom uređaju<ph name="END_LINK" />.</translation>
 <translation id="5094721898978802975">Komunikacija s izvornim aplikacijama za saradnju</translation>
 <translation id="5097002363526479830">Povezivanje na mrežu "<ph name="NAME" />" nije uspjelo: <ph name="DETAILS" /></translation>
@@ -5031,6 +5046,7 @@
 <translation id="5729712731028706266">&amp;Prikaz</translation>
 <translation id="5731247495086897348">Za&amp;lijepi i idi</translation>
 <translation id="5732392974455271431">Roditelji je mogu deblokirati za tebe</translation>
+<translation id="5733109311583381874">Dodajte svoje riječi korisnikovim rječnicima da prilagodite kandidate za konverziju.</translation>
 <translation id="5733866499231170760">Nevažeći ID. Format koji ste unijeli je netačan. Provjerite uputstva koja ste primili kako biste bili sigurni da unosite ID u ispravnom format. Ako ne uspijete riješiti ovaj problem, ostavite polje prazno i nastavite s instalacijom.</translation>
 <translation id="5734362860645681824">Komunikacije</translation>
 <translation id="5734697361979786483">Dodajte dijeljenje fajlova</translation>
@@ -5139,6 +5155,7 @@
 <translation id="583431638776747">Web lokacija nije bila dostupna</translation>
 <translation id="5834581999798853053">Preostalo otprilike <ph name="TIME" /> min</translation>
 <translation id="5835486486592033703"><ph name="WINDOW_TITLE" /> – Snimanje kamerom ili mikrofonom</translation>
+<translation id="5835625581856809102">Skeinirajte ovaj QR kôd uređajem na kojem želite kreirati pristupni ključ za aplikaciju <ph name="APP_NAME" /></translation>
 <translation id="583673505367439042">Web lokacije mogu tražiti da uređuju fajlove i foldere na vašem uređaju</translation>
 <translation id="5836999627049108525">Jezik s kojeg se prevodi</translation>
 <translation id="583756221537636748">Maska</translation>
@@ -5381,6 +5398,7 @@
 <translation id="6059276912018042191">Nedavne kartice Chromea</translation>
 <translation id="6059652578941944813">Hijerarhija potvrda</translation>
 <translation id="6059925163896151826">USB uređaji</translation>
+<translation id="6061408389284235459">Poslano je obavještenje na uređaj <ph name="DEVICE_NAME" /></translation>
 <translation id="6063284707309177505">Kreirajte QR kôd</translation>
 <translation id="6063847492705284550"><ph name="BEGIN_BOLD" />Napomena:<ph name="END_BOLD" /> Neko sa sličnim glasom ili snimkom može pristupiti ličnim rezultatima djeteta <ph name="SUPERVISED_USER_NAME" />. Radi uštede baterije, u postavkama Asistenta računa koji koristi <ph name="SUPERVISED_USER_NAME" /> možete odabrati da aktiviranje frazom "Ok Google" uključite samo kada je uređaj povezan na izvor napajanja.</translation>
 <translation id="6064217302520318294">Zaključavanje ekrana</translation>
@@ -5507,6 +5525,7 @@
 <translation id="6178664161104547336">Odaberite potvrdu</translation>
 <translation id="6178682841350631965">Vaši podaci za prijavu su ažurirani</translation>
 <translation id="6180510783007738939">Alat za crtanje linija</translation>
+<translation id="6180550893222597997">Koji pristupni ključ želite koristiti za aplikaciju <ph name="APP_NAME" />?</translation>
 <translation id="6181431612547969857">Preuzimanje je blokirano</translation>
 <translation id="6184099524311454384">Pretražite kartice</translation>
 <translation id="6185132558746749656">Lokacija uređaja</translation>
@@ -5947,6 +5966,7 @@
 <translation id="6596816719288285829">IP adresa</translation>
 <translation id="6597017209724497268">Uzorci</translation>
 <translation id="6597331566371766302">Sljedeće ekstenzije je blokirao vaš administrator:</translation>
+<translation id="6601262427770154296">Upravljajte korisnikovim rječnicima</translation>
 <translation id="6601612474695404578">Neke web lokacije koriste kolačiće trećih strana da učitaju stranice. Ako web lokacija ne funkcionira, pokušajte dozvoliti kolačiće.</translation>
 <translation id="6602937173026466876">Pristup štampačima</translation>
 <translation id="6602956230557165253">Za navigiranje koristite strelice nalijevo i nadesno.</translation>
@@ -6308,6 +6328,7 @@
 <translation id="6943060957016121200">Omogući Trenutno dijeljenje internetske veze</translation>
 <translation id="6943176775188458830">Otkaži štampanje</translation>
 <translation id="6943939122536910181">Veza s uređajem <ph name="DEVICE" /> je prekinuta</translation>
+<translation id="6944708469742828051">Ovaj pristupni ključ će se sačuvati samo u Windows Hellou</translation>
 <translation id="6945221475159498467">Odaberi</translation>
 <translation id="694592694773692225">Preusmjeravanje je blokirano na ovoj stranici.</translation>
 <translation id="6947015141909171112">Prikazuju vam se recepti na osnovu vaše nedavne aktivnosti pretraživanja recepata.
@@ -6400,6 +6421,7 @@
 <translation id="7014174261166285193">Instalacija nije uspjela:</translation>
 <translation id="7014480873681694324">Ukloni istaknuti tekst</translation>
 <translation id="7014741021609395734">Nivo zumiranja</translation>
+<translation id="7014961128696979283">Pokreni Steam</translation>
 <translation id="7015088858756332848">Steam se nije mogao pokrenuti na Chromebooku. Pokušajte ponovo</translation>
 <translation id="7017004637493394352">Ponovo kažite "Ok Google"</translation>
 <translation id="7017219178341817193">Dodajte novu stranicu</translation>
@@ -6559,6 +6581,7 @@
 <translation id="7193051357671784796">Ovu aplikaciju je dodala vaša organizacija. Ponovo pokrenite aplikaciju da završite njeno instaliranje.</translation>
 <translation id="7193374945610105795">Nema sačuvanih lozinki za <ph name="ORIGIN" /></translation>
 <translation id="7194873994243265344">Vaša organizacija je blokirala ovaj fajl jer je šifriran. Zatražite od vlasnika da ga dešifrira.</translation>
+<translation id="7196272782924897510">Koristiti pristupni ključ s drugog uređaja?</translation>
 <translation id="7196913789568937443">Napravite sigurnosnu kopiju na Google Disku. Jednostavno u svakom trenutku vratite svoje podatke ili promijenite uređaj. Vaša sigurnosna kopija uključuje podatke o aplikacijama. Vaše sigurnosne kopije su otpremljene na Google i šifrirane pomoću lozinke Google računa. <ph name="BEGIN_LINK1" />Saznajte više<ph name="END_LINK1" /></translation>
 <translation id="7197190419934240522">Preuzmite Google Pretraživanje i Google pametne funkcije svaki put prilikom pregledanja</translation>
 <translation id="719791532916917144">Prečica na tastaturi</translation>
@@ -6793,6 +6816,7 @@
 <translation id="7423425410216218516">Vidljivost je uključena na <ph name="MINUTES" /> min</translation>
 <translation id="7423513079490750513">Uklonite <ph name="INPUT_METHOD_NAME" /></translation>
 <translation id="7423807071740419372">Za pokretanje aplikacije <ph name="APP_NAME" /> je potrebno odobrenje</translation>
+<translation id="7424153922653300265">Ušteda energije je uključena</translation>
 <translation id="7424818322350938336">Mreža je dodana</translation>
 <translation id="7427315069950454694">vaše uspomene za danas</translation>
 <translation id="7427348830195639090">Pozadinska stranica: <ph name="BACKGROUND_PAGE_URL" /></translation>
@@ -7059,6 +7083,7 @@
 <translation id="7670483791111801022">Titlovi</translation>
 <translation id="7671130400130574146">Koristi traku s naslovom i okvire sistema</translation>
 <translation id="767127784612208024">Dodirnite da potvrdite vraćanje na zadano</translation>
+<translation id="7672504401554182757">Odaberite uređaj koji ima pristupni ključ za aplikaciju <ph name="APP_NAME" /></translation>
 <translation id="7672520070349703697"><ph name="HUNG_IFRAME_URL" />, na stranici <ph name="PAGE_TITLE" />.</translation>
 <translation id="7674416868315480713">Deaktiviranje svih priključaka koji se prosljeđuju u Linuxu</translation>
 <translation id="7674537509496907005"><ph name="APP_COUNT" /> aplikacije(a)</translation>
@@ -7168,6 +7193,7 @@
 <translation id="7766807826975222231">Razgledajte</translation>
 <translation id="7766838926148951335">Prihvati odobrenja</translation>
 <translation id="7767554953520855281">Detalji će biti skriveni tokom dijeljenja ekrana</translation>
+<translation id="7767972280546034736">Kreirajte pristupni ključ za aplikaciju <ph name="APP_NAME" /></translation>
 <translation id="7768507955883790804">Kada posjećujete web lokacije, one se automatski pridržavaju ovih postavki</translation>
 <translation id="7768526219335215384"><ph name="ORIGIN" /> će moći prikazati sve fajlove u folderu <ph name="FOLDERNAME" /></translation>
 <translation id="7768770796815395237">Izmijeni</translation>
@@ -7653,6 +7679,7 @@
 <translation id="820568752112382238">Najposjećenije web lokacije</translation>
 <translation id="8206745257863499010">Bluesy</translation>
 <translation id="8206859287963243715">Mobitel</translation>
+<translation id="8207404892907560325">Odaberite pristupni ključ</translation>
 <translation id="8208216423136871611">Ne spremaj</translation>
 <translation id="8210398899759134986">{MUTED_NOTIFICATIONS_COUNT,plural, =1{Novo obavještenje}one{# novo obavještenje}few{# nova obavještenja}other{# novih obavještenja}}</translation>
 <translation id="821119981794423735">Da uvezete lozinke u Google upravitelja lozinki za <ph name="USER_EMAIL" />, odaberite CSV fajl</translation>
@@ -7826,6 +7853,7 @@
 <translation id="8376137163494131156">Recite nam šta se dešava s Google Cast uređajem.</translation>
 <translation id="8376384591331888629">Uključujući kolačiće treće strane na ovoj web lokaciji</translation>
 <translation id="8376451933628734023">Ako vas ova web aplikacija pokušava prevariti da mislite da je neka druga, deinstalirajte je.</translation>
+<translation id="8377625247046155446">Ovaj pristupni ključ će se sačuvati samo na ovom uređaju. Ostat će na ovom uređaju nakon što zatvorite sve anonimne prozore.</translation>
 <translation id="8378714024927312812">Pod upravljanjem vaše organizacije</translation>
 <translation id="8379156816349755485">Kada se prijavite, jedinstveni token za autentifikaciju će se pohraniti i koristiti za sva buduća preuzimanja koja ispunjavaju uslove.</translation>
 <translation id="8379878387931047019">Ovaj uređaj ne podržava vrstu sigurnosnog ključa koji je zatražila ova web lokacija</translation>
@@ -8034,6 +8062,7 @@
 <translation id="859246725979739260">Ovoj web lokaciji je blokiran pristup vašoj lokaciji.</translation>
 <translation id="8593121833493516339">Šaljite podatke o korištenju i dijagnostici. Poboljšajte iskustvo korištenja Androida svog djeteta automatskim slanjem podataka o dijagnostici, uređaju i korištenju aplikacija Googleu. Ovo se neće koristiti za identifikaciju vašeg djeteta, a pomoći će stabilnosti sistema i aplikacija, kao i drugim poboljšanjima. Neki zbirni podaci će također pomoći Googleovim aplikacijama i partnerima, kao što su programeri za Android. Ako je za vaše dijete uključena dodatna Aktivnost na webu i u aplikacijama, ti podaci mogu biti sačuvani na njegovom Google računu. <ph name="BEGIN_LINK1" />Saznajte više<ph name="END_LINK1" /></translation>
 <translation id="8596540852772265699">Prilagođeni fajlovi</translation>
+<translation id="8597404194697561297">Dobro došli u Steam na Chromebooku</translation>
 <translation id="8597845839771543242">Format atributa:</translation>
 <translation id="8599681327221583254">Jedno ili više pravila nije ispravno konfigurirano. Kontaktirajte administratora</translation>
 <translation id="8599864823732014237">Preskočiti prijavu preduzeća?</translation>
@@ -8650,6 +8679,7 @@
       <ph name="LIST_ITEM" />Pokrenite Dijagnostiku povezivosti Chromea
     <ph name="END_LIST" /></translation>
 <translation id="916607977885256133">Slika u slici</translation>
+<translation id="9166253503936244008">Skenirajte ovaj QR kôd uređajem koji ima pristupni ključ koji želite koristiti za aplikaciju <ph name="APP_NAME" /></translation>
 <translation id="9167063903968449027">Prikaži Listu za čitanje</translation>
 <translation id="9167450455589251456">Profil nije podržan</translation>
 <translation id="9168436347345867845">Uradit ću to kasnije</translation>
diff --git a/chrome/app/resources/generated_resources_ca.xtb b/chrome/app/resources/generated_resources_ca.xtb
index 23d46cc..a86c553c 100644
--- a/chrome/app/resources/generated_resources_ca.xtb
+++ b/chrome/app/resources/generated_resources_ca.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="ca">
 <translation id="1001033507375626788">Aquesta xarxa està compartida amb tu</translation>
+<translation id="1002085272681738789">La pestanya torna a estar activa</translation>
 <translation id="1003088604756913841">Obre l'enllaç en una nova finestra de l'aplicació <ph name="APP" /></translation>
 <translation id="100323615638474026">Dispositiu USB (<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />)</translation>
 <translation id="1004218526896219317">Accés al lloc web</translation>
@@ -321,6 +322,7 @@
 <translation id="1296911687402551044">Fixa la pestanya seleccionada</translation>
 <translation id="1297175357211070620">Destinació</translation>
 <translation id="129770436432446029">Envia suggeriments amb relació a <ph name="EXPERIMENT_NAME" /></translation>
+<translation id="130097046531636712">Allarga la durada de la bateria limitant l'activitat en segon pla i els efectes visuals, com ara el desplaçament suau.</translation>
 <translation id="1301135395320604080"><ph name="ORIGIN" /> pot editar els fitxers següents</translation>
 <translation id="1302227299132585524">Permet JavaScript des d'Apple Events</translation>
 <translation id="1303101771013849280">Fitxer HTML d'adreces d'interès</translation>
@@ -379,6 +381,7 @@
 <translation id="1361655923249334273">No utilitzat</translation>
 <translation id="1362865166188278099">Problema mecànic. Comprova la impressora.</translation>
 <translation id="1363585519747660921">La impressora USB s'ha de configurar</translation>
+<translation id="136378536198524553">L'estalvi d'energia està activat</translation>
 <translation id="1368603372088757436">Linux no s'admet al teu <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Més informació<ph name="LINK_END" /></translation>
 <translation id="1372841398847029212">Sincronitza amb el meu compte</translation>
 <translation id="1373176046406139583">La visibilitat del dispositiu determina qui pot compartir contingut amb tu quan tens la pantalla desbloquejada. <ph name="LINK_BEGIN" />Més informació<ph name="LINK_END" /></translation>
@@ -648,6 +651,7 @@
 <translation id="1610272688494140697">Configuració de l'aplicació</translation>
 <translation id="161042844686301425">Cian</translation>
 <translation id="1611432201750675208">El dispositiu està bloquejat</translation>
+<translation id="1611776894942218234">El dispositiu ha de ser al canal Beta</translation>
 <translation id="1612019740169791082">La configuració del contenidor no admet canvis de mida del disc. Per ajustar la quantitat d'espai que es reserva per a Linux, crea una còpia de seguretat i, a continuació, fes la restauració en un contenidor nou.</translation>
 <translation id="1613019471223620622">Mostra la contrasenya per a <ph name="USERNAME" /> a <ph name="DOMAIN" /></translation>
 <translation id="1613149688105334014">Passat desembre de 2022, les versions anteriors d'aplicacions de Chrome no s'obriran. Pots comprovar si hi ha una nova versió disponible.</translation>
@@ -1118,6 +1122,7 @@
 <translation id="2034346955588403444">Afegeix una altra xarxa Wi-Fi</translation>
 <translation id="2035211704574173780">Escala de grisos</translation>
 <translation id="203574396658008164">Activa la presa de notes des de la pantalla de bloqueig</translation>
+<translation id="2036514476578229158">Has demanat visitar aquest lloc web. Els teus pares poden respondre a Family Link.</translation>
 <translation id="2037445849770872822">S'ha configurat la supervisió d'aquest Compte de Google. Per configurar més controls parentals, selecciona Continua.
 
 En cas contrari, tanca la sessió perquè els canvis d'aquest compte es reflecteixin en aquest dispositiu.
@@ -1203,6 +1208,7 @@
 <translation id="2098805196501063469">Comprova les altres contrasenyes</translation>
 <translation id="2099686503067610784">Voleu suprimir el certificat de servidor "<ph name="CERTIFICATE_NAME" />"?</translation>
 <translation id="2100273922101894616">Inici de sessió automàtic</translation>
+<translation id="2100986609271491802">Actualment aquest dispositiu no admet Steam a Chromebook</translation>
 <translation id="2101225219012730419">Versió:</translation>
 <translation id="2102396546234652240">No permetis que els llocs web utilitzin el micròfon</translation>
 <translation id="2102495993840063010">Aplicacions per a Android</translation>
@@ -1238,6 +1244,7 @@
 <translation id="2135787500304447609">&amp;Reprèn</translation>
 <translation id="2136372518715274136">Introdueix la contrasenya nova</translation>
 <translation id="2136476978468204130">La frase de contrasenya que has escrit no és correcta</translation>
+<translation id="2137891579555018930">S'està esperant el permís...</translation>
 <translation id="2138398485845393913">La connexió al dispositiu <ph name="DEVICE_NAME" /> encara està en curs</translation>
 <translation id="2139919072249842737">Botó Configura</translation>
 <translation id="2140788884185208305">Estat de la bateria</translation>
@@ -1498,6 +1505,9 @@
 <translation id="2350133097354918058">S'ha tornat a carregar</translation>
 <translation id="2350182423316644347">S'està inicialitzant l'aplicació...</translation>
 <translation id="235028206512346451">Si t'apartes del dispositiu, la pantalla es bloquejarà automàticament. Quan siguis davant del dispositiu, la pantalla es mantindrà activa més temps. Si no fas servir una pantalla de bloqueig, el dispositiu entrarà en mode de repòs en lloc de bloquejar-se.</translation>
+<translation id="2350866610930767288"><ph name="BEGIN_PARAGRAPH1" />Si has rebut instruccions que t'indiquen que introdueixis un codi d'identificació de la botiga durant la instal·lació del mode de demostració, introdueix-lo a la dreta.*  En cas contrari, pots deixar aquest camp en blanc i continuar.<ph name="END_PARAGRAPH1" />
+    <ph name="BEGIN_PARAGRAPH2" />Podràs instal·lar el mode de demostració encara que no tinguis cap codi, però és important que l'introdueixis si és aplicable a la teva botiga.<ph name="END_PARAGRAPH2" />
+    <ph name="BEGIN_PARAGRAPH3" />* Nota: Google utilitza aquests codis per identificar quina versió del mode de demostració ha de rebre el dispositiu i per mesurar l'ús d'aquest mode.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="2352495879228166246">{NUM_ITEMS,plural, =1{1 element}other{{NUM_ITEMS} elements}}</translation>
 <translation id="2352662711729498748">&lt; 1 MB</translation>
 <translation id="2352810082280059586">Les notes de la pantalla de bloqueig es desen automàticament a <ph name="LOCK_SCREEN_APP_NAME" />. La nota més recent romandrà a la pantalla de bloqueig.</translation>
@@ -1948,6 +1958,7 @@
 <translation id="2776560192867872731">Canvia el nom del dispositiu <ph name="DEVICE_NAME" /></translation>
 <translation id="2777251078198759550">Suprimeix aquest contenidor</translation>
 <translation id="2778471504622896352">Afegeix aplicacions remotes al menú d'aplicacions de ChromeOS</translation>
+<translation id="2781120507965857989">Activa la sincronització per accedir a les teves adreces d'interès, contrasenyes, historial i altres opcions des d'aquest dispositiu i des de qualsevol lloc que estiguis sincronitzant. És possible que Google utilitzi el teu historial per personalitzar la Cerca i altres serveis de Google.</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2782104745158847185">S'ha produït un error en instal·lar l'aplicació per a Linux</translation>
 <translation id="2783298271312924866">Baixat</translation>
@@ -1968,6 +1979,7 @@
 <translation id="2792697226874849938">Imatge de restricció</translation>
 <translation id="2794233252405721443">Lloc bloquejat</translation>
 <translation id="2794522004398861033">Connecta't a la Wi‑Fi o Ethernet per configurar l'eSIM</translation>
+<translation id="2795074478966352573">Encara no s'admeten els comptes gestionats per Family Link</translation>
 <translation id="2795716239552913152">Els llocs web solen utilitzar la teva ubicació per a funcions o informació rellevants, com ara notícies locals o botigues a prop</translation>
 <translation id="2796424461616874739">S'ha esgotat el temps d'espera de l'autenticació mentre es connectava a "<ph name="DEVICE_NAME" />".</translation>
 <translation id="2796740370559399562">Continua permetent les galetes</translation>
@@ -2153,6 +2165,7 @@
 <translation id="2949289451367477459">Utilitza la ubicació. Permet que les aplicacions i els serveis amb permís d'ubicació utilitzin la ubicació del dispositiu. Google pot recollir dades d'ubicació periòdicament i utilitzar-les de manera anònima per millorar la precisió de la ubicació i els serveis basats en la ubicació. <ph name="BEGIN_LINK1" />Més informació<ph name="END_LINK1" /></translation>
 <translation id="2950666755714083615">Vull registrar-me</translation>
 <translation id="2953019166882260872">Connecta el telèfon amb un cable</translation>
+<translation id="2953218713108551165">No es permeten les notificacions per a <ph name="SITE" />. Se't tornarà a preguntar a la propera visita.</translation>
 <translation id="2956070239128776395">Secció imbricada en grup: <ph name="ERROR_LINE" /></translation>
 <translation id="2958721676848865875">Advertiment de l'empaquetatge d'extensió</translation>
 <translation id="2959127025785722291">S'ha produït un error. No s'ha pogut completar l'anàlisi. Torna-ho a provar.</translation>
@@ -2861,6 +2874,7 @@
 <translation id="3665919494326051362">La versió actual és <ph name="CURRENT_VERSION" /></translation>
 <translation id="3670113805793654926">Dispositius de qualsevol proveïdor</translation>
 <translation id="3670229581627177274">Activa el Bluetooth</translation>
+<translation id="3672663996348587094">Fes clic per permetre "<ph name="EXTENSIONS_REQUESTING_ACCESS" />" a <ph name="ORIGIN" />:</translation>
 <translation id="3672681487849735243">S'ha detectat un error de fàbrica</translation>
 <translation id="3673097791729989571">Inici de sessió allotjat per <ph name="SAML_DOMAIN" /></translation>
 <translation id="3673622964532248901">No tens permís per emetre en aquest dispositiu.</translation>
@@ -3375,6 +3389,7 @@
 <translation id="4132183752438206707">Troba aplicacions a Google Play Store</translation>
 <translation id="4132364317545104286">Canvia el nom del perfil de l'eSIM</translation>
 <translation id="4133076602192971179">Obre l'aplicació per canviar la contrasenya</translation>
+<translation id="4134818201340504801">No hi ha prou emmagatzematge disponible per completar la configuració. Allibera emmagatzematge i torna-ho a provar.</translation>
 <translation id="4135746311382563554">Condicions del servei addicionals de Google Chrome i Chrome OS</translation>
 <translation id="4136203100490971508">La funció Llum nocturna es desactivarà automàticament a l'alba</translation>
 <translation id="41365691917097717">Si continues, s'activarà la depuració d'ADB per crear i provar les aplicacions d'Android. Tingues en compte que aquesta acció permet instal·lar aplicacions d'Android que Google no ha verificat. Per desactivar ADB, hauràs de restablir les dades de fàbrica del dispositiu.</translation>
@@ -3611,6 +3626,7 @@
 <translation id="4378556263712303865">Sol·licitud de dispositiu</translation>
 <translation id="4379281552162875326">Vols desinstal·lar <ph name="APP_NAME" />?</translation>
 <translation id="4380648069038809855">S'ha entrat en pantalla completa</translation>
+<translation id="4383048856908088702">Mentre aquesta pestanya estava inactiva, l'estalvi de memòria ha alliberat <ph name="MEMORY_VALUE" /> de memòria per a altres tasques. Pots canviar-ho en qualsevol moment a <ph name="SETTINGS_LINK" />.</translation>
 <translation id="4384312707950789900">Afegeix a les preferides</translation>
 <translation id="4384652540891215547">Activa l'extensió</translation>
 <translation id="4384886290276344300">Canvia la configuració del teclat</translation>
@@ -3688,6 +3704,7 @@
 <translation id="4451479197788154834">La contrasenya està desada en aquest dispositiu i al teu Compte de Google</translation>
 <translation id="4451757071857432900">Anuncis bloquejats als llocs web que mostren publicitat intrusiva o enganyosa (opció recomanada)</translation>
 <translation id="4453946976636652378">Cerca <ph name="SEARCH_ENGINE_NAME" /> o escriu un URL</translation>
+<translation id="4458535500699390320">Mentre aquesta pestanya estava inactiva, l'estalvi de memòria ha alliberat memòria per a altres tasques. Pots canviar aquesta opció en qualsevol moment a la configuració.</translation>
 <translation id="4459169140545916303">Actiu fa <ph name="DEVICE_LAST_ACTIVATED_TIME" /> dies</translation>
 <translation id="4460014764210899310">Desagrupa</translation>
 <translation id="4462159676511157176">Servidors de noms personalitzats</translation>
@@ -3859,6 +3876,7 @@
 <translation id="4613271546271159013">Una extensió ha canviat la pàgina que es mostra en obrir una pestanya nova.</translation>
 <translation id="4615586811063744755">cap galeta seleccionada</translation>
 <translation id="461661862154729886">Font d'energia</translation>
+<translation id="461676224702246336">En fer clic per a aquest lloc web</translation>
 <translation id="4617001782309103936">És massa curt</translation>
 <translation id="4617019240346358451">Torna a carregar la pàgina per utilitzar <ph name="EXTENSION_NAME" /></translation>
 <translation id="4617270414136722281">Opcions d'extensió</translation>
@@ -3981,6 +3999,7 @@
 <translation id="4728558894243024398">Plataforma</translation>
 <translation id="4728570203948182358"><ph name="BEGIN_LINK" />L'administrador<ph name="END_LINK" /> ha desactivat la cerca de programari nociu</translation>
 <translation id="4730492586225682674">Darrera nota amb llapis òptic a la pantalla de bloqueig</translation>
+<translation id="4730888769809690665">Es permeten les notificacions per a <ph name="SITE" /></translation>
 <translation id="473140019006744096">No hi ha prou espai al dispositiu per completar aquesta actualització. Allibera <ph name="NECESSARY_SPACE" /> del teu dispositiu i torna-ho a provar.</translation>
 <translation id="4733161265940833579"><ph name="BATTERY_PERCENTAGE" />% (auricular esquerre)</translation>
 <translation id="4733793249294335256">Ubicació</translation>
@@ -4111,6 +4130,7 @@
 <translation id="4858913220355269194">Pilota</translation>
 <translation id="4862642413395066333">Signatura de respostes OCSP</translation>
 <translation id="4863769717153320198">Resolució: <ph name="WIDTH" /> x <ph name="HEIGHT" /> (predeterminada)</translation>
+<translation id="486459320933704969">El teu pare, mare o tutor ha de dir si pots visitar aquest lloc web</translation>
 <translation id="4864805589453749318">Selecciona quin dels teus pares concedeix el permís per afegir un compte de centre educatiu.</translation>
 <translation id="486635084936119914">Obre alguns tipus de fitxer automàticament després de baixar-los</translation>
 <translation id="4868281708609571334">Ensenya a l'Assistent de Google a reconèixer la veu del teu fill o filla (<ph name="SUPERVISED_USER_NAME" />)</translation>
@@ -4283,6 +4303,7 @@
 <translation id="5032430150487044192">No es pot crear el codi QR</translation>
 <translation id="5033137252639132982">Sense permís per utilitzar sensors de moviment</translation>
 <translation id="5033266061063942743">Formes geomètriques</translation>
+<translation id="5034000993065629381">Contacta amb l'administrador</translation>
 <translation id="5037676449506322593">Selecciona-ho tot</translation>
 <translation id="5038818366306248416">Havies triat l'opció de no permetre cap extensió a <ph name="ORIGIN" /></translation>
 <translation id="5039696241953571917">Consulta i gestiona les contrasenyes desades al Compte de Google</translation>
@@ -4413,6 +4434,7 @@
 <translation id="5161251470972801814">Dispositius USB fabricats per <ph name="VENDOR_NAME" /></translation>
 <translation id="5162905305237671850">El dispositiu <ph name="DEVICE_TYPE" /> s'ha bloquejat</translation>
 <translation id="5163910114647549394">La pestanya s'ha mogut al final de la barra de pestanyes</translation>
+<translation id="5164530241085602114">No es permeten les notificacions per a <ph name="SITE" /></translation>
 <translation id="516747639689914043">Protocol de transferència d'hipertext (HTTP)</translation>
 <translation id="5170568018924773124">Mostra a la carpeta</translation>
 <translation id="5171045022955879922">Cerqueu o escriviu l'URL</translation>
@@ -4516,6 +4538,7 @@
 <translation id="5269977353971873915">Error d'impressió</translation>
 <translation id="5273806377963980154">Edita l'URL del lloc web</translation>
 <translation id="5275084684151588738">Diccionaris de l'usuari</translation>
+<translation id="5275100789567222478">Activa només quan la bateria estigui a un <ph name="PERCENT" />% o menys</translation>
 <translation id="5275338516105640560">Botó de grup de pestanyes desat</translation>
 <translation id="5275352920323889391">Gos</translation>
 <translation id="527605719918376753">Silencia la pestanya</translation>
@@ -4534,6 +4557,7 @@
 <translation id="5285635972691565180">Pantalla <ph name="DISPLAY_ID" /></translation>
 <translation id="5286194356314741248">S'està cercant</translation>
 <translation id="5287425679749926365">Els comptes</translation>
+<translation id="5288106344236929384">Més accions, opcions de clau d'accés per a <ph name="USERNAME" /> a <ph name="DOMAIN" /></translation>
 <translation id="5288678174502918605">T&amp;orna a obrir la pestanya tancada</translation>
 <translation id="52895863590846877">La pàgina no està en <ph name="LANGUAGE" /></translation>
 <translation id="52912272896845572">El fitxer de clau privada no és vàlid.</translation>
@@ -4729,6 +4753,7 @@
 <translation id="5473099001878321374">En continuar, acceptes que aquest dispositiu també pugui baixar i instal·lar automàticament actualitzacions i aplicacions de Google, de l'operador de telefonia mòbil i del fabricant del dispositiu del teu fill o filla, i que és possible que ho faci utilitzant dades mòbils. Pot ser que algunes d'aquestes aplicacions ofereixin compres des de l'aplicació.</translation>
 <translation id="5473156705047072749">{NUM_CHARACTERS,plural, =1{El PIN ha de tenir almenys 1 caràcter}other{El PIN ha de tenir almenys # caràcters}}</translation>
 <translation id="5474859849784484111"><ph name="MANAGER" /> requereix que et connectis a la Wi-Fi ara i que baixis una actualització. També pots baixar-la amb una connexió d'ús mesurat, però és possible que s'apliquin càrrecs.</translation>
+<translation id="5476016146231427848">Reinicia el dispositiu per utilitzar Steam a Chromebook</translation>
 <translation id="5481273127572794904">Sense permís per baixar automàticament diversos fitxers</translation>
 <translation id="5481941284378890518">Afegeix impressores properes</translation>
 <translation id="5483785310822538350">Revoca l'accés al dispositiu i al fitxer</translation>
@@ -4947,6 +4972,7 @@
 <translation id="5683806393796685434">Introdueix el codi d'activació</translation>
 <translation id="5684181005476681636">Detalls de la Wi-Fi</translation>
 <translation id="5684661240348539843">Identificador d'elements</translation>
+<translation id="5684969244627829799">Inicia la sessió en un compte d'usuari i torna-ho a provar</translation>
 <translation id="5687326903064479980">Zona horària</translation>
 <translation id="5687935527303996204">Comprova que el dispositiu estigui endollat i no l'apaguis. La instal·lació pot tardar fins a 20 minuts. El dispositiu s'apagarà automàticament quan la instal·lació es completi.</translation>
 <translation id="5689516760719285838">Ubicació</translation>
@@ -5073,6 +5099,7 @@
 <translation id="5805697420284793859">Gestor de finestres</translation>
 <translation id="5806447147478173900">Emmagatzematge total utilitzat pels llocs web mostrats: <ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">0° (valor predeterminat)</translation>
+<translation id="5810603387504252966">L'opció #borealis-enabled ha d'estar activada a chrome://flags</translation>
 <translation id="5810809306422959727">Aquest compte no és apte per als controls parentals</translation>
 <translation id="5811614940486072060">Aquest fitxer no se sol baixar i pot ser perillós</translation>
 <translation id="5812674658566766066">Desplega-ho tot</translation>
@@ -5152,6 +5179,7 @@
 <translation id="5882449899683447569">S'ha produït un error i no s'han importat les contrasenyes</translation>
 <translation id="5882919346125742463">Xarxes conegudes</translation>
 <translation id="5883356647197510494">Permisos bloquejats automàticament: <ph name="PERMISSION_1" />, <ph name="PERMISSION_2" /></translation>
+<translation id="5884447826201752041">Personalitza per a cada extensió</translation>
 <translation id="5884474295213649357">Aquesta pestanya està connectada a un dispositiu USB</translation>
 <translation id="5885314688092915589">La teva organització gestionarà aquest perfil</translation>
 <translation id="5886009770935151472">Dit 1</translation>
@@ -5590,6 +5618,7 @@
 <translation id="6301300352769835063">Permet que Google utilitzi les dades del maquinari per ajudar a millorar <ph name="DEVICE_OS" />. Si rebutges aquesta opció, les dades encara s'enviaran a Google per veure si cal fer alguna actualització rellevant, però no s'emmagatzemaran ni s'utilitzaran de cap altra manera. Obtén més informació a g.co/flex/HWDataCollection.</translation>
 <translation id="630292539633944562">Suggeriments sobre informació personal</translation>
 <translation id="6305607932814307878">Política global:</translation>
+<translation id="6305909198255586420">Instal·la utilitzant el teu perfil principal</translation>
 <translation id="6307990684951724544">El sistema està ocupat</translation>
 <translation id="6308493641021088955">Inici de sessió proporcionat per <ph name="EXTENSION_NAME" /></translation>
 <translation id="6308937455967653460">Desa l'en&amp;llaç com a...</translation>
@@ -5911,6 +5940,7 @@
 <translation id="6608166463665411119">Restableix l'eSIM</translation>
 <translation id="6609478180749378879">Les dades d'inici de sessió s'emmagatzemaran en aquest dispositiu quan surtis del mode d'incògnit. Podràs tornar a iniciar la sessió en aquest lloc web amb el teu dispositiu més endavant.</translation>
 <translation id="6610002944194042868">Opcions del Traductor</translation>
+<translation id="6611907964265870728">Comprova que el dispositiu estigui connectat a Internet</translation>
 <translation id="6611972847767394631">Aquí trobaràs les teves pestanyes</translation>
 <translation id="6613668613087513143">No hi ha prou espai al dispositiu per completar aquesta actualització. Allibera <ph name="NECESSARY_SPACE" /> del teu dispositiu i torna-ho a provar des del navegador Chrome.</translation>
 <translation id="6615455863669487791">Mostra-m'ho</translation>
@@ -6299,6 +6329,7 @@
 <translation id="697508444536771064">Apaga Linux</translation>
 <translation id="6975361011348772931">Ha sol·licitat llegir i canviar</translation>
 <translation id="6978121630131642226">Motors de cerca</translation>
+<translation id="6979041727349121225">Estalvi d'energia</translation>
 <translation id="6979044105893951891">Llança sessions de convidat administrades i surt-ne</translation>
 <translation id="6979158407327259162">Google Drive</translation>
 <translation id="6979440798594660689">Silencia (opció predeterminada)</translation>
@@ -6351,6 +6382,7 @@
 <translation id="7014174261166285193">La instal·lació ha fallat.</translation>
 <translation id="7014480873681694324">Suprimeix les marques</translation>
 <translation id="7014741021609395734">Nivell de zoom</translation>
+<translation id="7015088858756332848">No s'ha pogut iniciar Steam a Chromebook. Torna-ho a provar.</translation>
 <translation id="7017004637493394352">Torneu a dir "Ok Google"</translation>
 <translation id="7017219178341817193">Afegeix una pàgina nova</translation>
 <translation id="7017354871202642555">No es pot configurar el mode després d'haver configurat la finestra.</translation>
@@ -6727,6 +6759,7 @@
 <translation id="7409854300652085600">S'han important les adreces d'interès.</translation>
 <translation id="7410344089573941623">Pregunta si <ph name="HOST" /> vol accedir a la càmera i al micròfon</translation>
 <translation id="7410852728357935715">Emet a un dispositiu</translation>
+<translation id="7411614333737930931">Reinicia el dispositiu i torna-ho a provar</translation>
 <translation id="741204030948306876">Sí, ho accepto</translation>
 <translation id="7412226954991670867">Memòria de la GPU</translation>
 <translation id="7414464185801331860">18x</translation>
@@ -6957,6 +6990,7 @@
 <translation id="7635048370253485243">Fixada per l'administrador</translation>
 <translation id="7636919061354591437">Instal·la en aquest dispositiu</translation>
 <translation id="7637253234491814483">Toca el sensor d'empremtes digitals que hi ha a l'extrem superior dret del teclat, al costat del botó d'engegada. Les dades de l'empremta digital s'emmagatzemen de manera segura i no surten mai del <ph name="DEVICE_TYPE" />.</translation>
+<translation id="7637272932128132922">Mentre aquesta pestanya estava inactiva, l'estalvi de memòria ha alliberat memòria per a altres tasques. Pots canviar-ho en qualsevol moment a <ph name="SETTINGS_LINK" />.</translation>
 <translation id="7637593984496473097">No hi ha prou espai de disc</translation>
 <translation id="7639914187072011620">L'URL de redirecció de SAML no s'ha pogut recuperar del servidor</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> us inicia la sessió automàticament als llocs que compleixen els requisits amb les contrasenyes que heu desat.</translation>
@@ -7073,6 +7107,7 @@
 <translation id="7728668285692163452">El canvi de canal s'aplicarà més tard</translation>
 <translation id="7730449930968088409">Capturar el contingut de la pantalla</translation>
 <translation id="7730683939467795481">L'extensió "<ph name="EXTENSION_NAME" />" ha fet canvis en aquesta pàgina</translation>
+<translation id="7735165285389721951">S'està executant una altra instal·lació de Steam. Espera que es completi abans de tornar-ho a provar.</translation>
 <translation id="7737115349420013392">S'està vinculant amb "<ph name="DEVICE_NAME" />"...</translation>
 <translation id="7737846262459425222">Pots canviar aquesta opció en qualsevol moment a Configuració &gt; Assistent de Google &gt; Context de la pantalla.</translation>
 <translation id="7737948071472253612">Sense permís per utilitzar la càmera</translation>
@@ -7371,6 +7406,7 @@
 Fitxer de clau: <ph name="KEY_FILE" />
 
 Deseu el fitxer de clau en una ubicació segura. El necessitareu per crear versions noves de l'extensió.</translation>
+<translation id="8001100670809322641">Espera uns quants minuts i torna-ho a provar</translation>
 <translation id="8002274832045662704">Configuració avançada de la impressora</translation>
 <translation id="8002670234429879764"><ph name="PRINTER_NAME" /> ja no està disponible</translation>
 <translation id="8004092996156083991">Si les teves contrasenyes estan en perill, t'avisarem.</translation>
@@ -7380,6 +7416,7 @@
 <translation id="8008356846765065031">S'ha desconnectat Internet. Comproveu la connexió.</translation>
 <translation id="8009225694047762179">Gestiona les contrasenyes</translation>
 <translation id="8011372169388649948">S'han mogut <ph name="BOOKMARK_TITLE" />.</translation>
+<translation id="8011875486979733097">No es pot instal·lar Steam</translation>
 <translation id="8012647001091218357">En aquests moments no hem pogut contactar amb els teus pares. Torna-ho a provar.</translation>
 <translation id="8013993649590906847">Si una imatge no té una descripció útil, Chrome provarà d'oferir-te'n una. Per crear les descripcions, les imatges s'envien a Google.</translation>
 <translation id="8014154204619229810">L'actualitzador està en funcionament. Actualitzeu la pantalla d'aquí a un minut per tornar-ho a comprovar.</translation>
@@ -7470,6 +7507,7 @@
 <translation id="808894953321890993">Canvia la contrasenya</translation>
 <translation id="8090234456044969073">Llegir una llista dels llocs web més visitats</translation>
 <translation id="8090513782447872344">Pots tornar-hi en qualsevol moment per donar-hi una altra ullada</translation>
+<translation id="809312780580957751">No s'ha pogut instal·lar Steam en aquest dispositiu</translation>
 <translation id="8093359998839330381"><ph name="PLUGIN_NAME" /> no respon</translation>
 <translation id="8095105960962832018"><ph name="BEGIN_PARAGRAPH1" />Crea còpies de seguretat a Google Drive. Canvia de dispositiu o restaura'n les dades fàcilment en qualsevol moment. La còpia de seguretat inclou dades d'aplicacions.<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />Les còpies de seguretat es pengen a Google i s'encripten amb la contrasenya del teu Compte de Google.<ph name="END_PARAGRAPH2" />
@@ -7565,6 +7603,7 @@
 <translation id="8177318697334260664">{NUM_TABS,plural, =1{Mou la pestanya a una finestra nova}other{Mou les pestanyes a una finestra nova}}</translation>
 <translation id="8179188928355984576">No s'utilitza amb les aplicacions d'Android</translation>
 <translation id="8179976553408161302">Retorn</translation>
+<translation id="8180785270975217276">S'ha activat l'estalvi d'energia</translation>
 <translation id="8180786512391440389">"<ph name="EXTENSION" />" pot llegir imatges, vídeos i fitxers d'àudio a les ubicacions marcades, així com suprimir aquest contingut.</translation>
 <translation id="8181215761849004992">No es pot connectar el domini. Comprova al compte si tens prou privilegis per afegir-hi dispositius.</translation>
 <translation id="8182105986296479640">L'aplicació no respon.</translation>
@@ -7687,6 +7726,7 @@
 <translation id="828642162569365647">Aquesta contrasenya o aquest PIN protegeix les teves dades en aquest <ph name="DEVICE_TYPE" /> i la informació a què accedeixes des del telèfon. Hauràs de desbloquejar el teu <ph name="DEVICE_TYPE" /> cada vegada que s'activi des del mode Repòs.</translation>
 <translation id="8287902281644548111">Cerca per crida a l'API o URL</translation>
 <translation id="8288032458496410887">Desinstal·la <ph name="APP" />...</translation>
+<translation id="8288539437195337464">Comprova que el dispositiu estigui actualitzat i torna-ho a provar</translation>
 <translation id="8289128870594824098">Mida del disc</translation>
 <translation id="8289509909262565712">Et donem la benvinguda a <ph name="DEVICE_OS" /></translation>
 <translation id="8293206222192510085">Afegeix una adreça d'interès</translation>
@@ -7982,6 +8022,7 @@
 <translation id="8599864823732014237">Vols ometre la inscripció de l'empresa?</translation>
 <translation id="8601206103050338563">Autenticació de client WWW de TLS</translation>
 <translation id="8601611099293226919">Fes cerques a la pantalla amb Google Lens</translation>
+<translation id="8602674530529411098">Aplicacions (beta)</translation>
 <translation id="8602851771975208551">Un altre programa de l'ordinador ha afegit una aplicació que pot canviar el funcionament de Chrome.</translation>
 <translation id="8605428685123651449">Memòria SQLite</translation>
 <translation id="8608618451198398104">Afegeix un tiquet de Kerberos</translation>
@@ -8666,10 +8707,12 @@
 <translation id="939598580284253335">Introduïu la frase de contrasenya</translation>
 <translation id="939736085109172342">Carpeta nova</translation>
 <translation id="942532530371314860"><ph name="APP_NAME" /> està compartint una pestanya de Chrome i l'àudio.</translation>
+<translation id="944799160843436808">S'ha produït un problema en configurar Steam a Chromebook</translation>
 <translation id="945522503751344254">Envia suggeriments</translation>
 <translation id="947329552760389097">&amp;Inspecciona els elements</translation>
 <translation id="947526284350604411">La teva resposta</translation>
 <translation id="947667444780368238"><ph name="ORIGIN" /> no pot obrir els fitxers que es troben en aquesta carpeta perquè conté fitxers del sistema</translation>
+<translation id="949314938206378263">Has demanat visitar aquest lloc web. El teu pare o mare pot respondre a Family Link.</translation>
 <translation id="950307215746360464">Guia de configuració</translation>
 <translation id="951991426597076286">Rebutja</translation>
 <translation id="952471655966876828">El dispositiu es desconnectarà automàticament quan s'encengui o s'estigui fent servir</translation>
@@ -8690,6 +8733,7 @@
 <translation id="968000525894980488">Activa Serveis de Google Play.</translation>
 <translation id="968037381421390582">Engan&amp;xa i cerca "<ph name="SEARCH_TERMS" />"</translation>
 <translation id="969096075394517431">Canvia els idiomes</translation>
+<translation id="969574218206797926">L'estalvi de memòria allibera memòria de les pestanyes inactives perquè la puguin utilitzar les pestanyes actives i altres aplicacions</translation>
 <translation id="970047733946999531">{NUM_TABS,plural, =1{1 pestanya}other{# pestanyes}}</translation>
 <translation id="971510864672937292">Vols esborrar les dades i els permisos del lloc web <ph name="SITE_NAME" /> i tots els llocs web que conté?</translation>
 <translation id="971774202801778802">URL de l'adreça d'interès</translation>
diff --git a/chrome/app/resources/generated_resources_cy.xtb b/chrome/app/resources/generated_resources_cy.xtb
index 60802a21..bf2853b 100644
--- a/chrome/app/resources/generated_resources_cy.xtb
+++ b/chrome/app/resources/generated_resources_cy.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="cy">
 <translation id="1001033507375626788">Rhennir y rhwydwaith hwn â chi</translation>
+<translation id="1002085272681738789">Tab yn weithredol eto</translation>
 <translation id="1003088604756913841">Agor dolen mewn ffenestr <ph name="APP" /> newydd</translation>
 <translation id="100323615638474026">Dyfais USB (<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />)</translation>
 <translation id="1004218526896219317">Mynediad gwefannau</translation>
@@ -327,6 +328,7 @@
 <translation id="1296911687402551044">Pinio'r Tab a Ddewisir</translation>
 <translation id="1297175357211070620">Cyrchfan</translation>
 <translation id="129770436432446029">Anfon adborth ar gyfer <ph name="EXPERIMENT_NAME" /></translation>
+<translation id="130097046531636712">Mae hyn yn ymestyn pŵer batri drwy gyfyngu ar weithgarwch cefndir ac effeithiau gweledol megis sgrolio llyfn</translation>
 <translation id="1301135395320604080">Gall <ph name="ORIGIN" /> olygu'r ffeiliau canlynol</translation>
 <translation id="1302227299132585524">Caniatáu JavaScript gan Apple Events</translation>
 <translation id="1303101771013849280">Ffeil HTML Nodau Tudalen</translation>
@@ -385,6 +387,7 @@
 <translation id="1361655923249334273">Heb ei ddefnyddio</translation>
 <translation id="1362865166188278099">Problem fecanyddol. Gwiriwch yr argraffydd</translation>
 <translation id="1363585519747660921">Mae angen ffurfweddu'r argraffydd USB</translation>
+<translation id="136378536198524553">Mae'r Arbedwr Ynni ymlaen</translation>
 <translation id="1368603372088757436">Ni chefnogir Linux ar eich <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Dysgu rhagor<ph name="LINK_END" /></translation>
 <translation id="1372841398847029212">Cysoni i'ch cyfrif</translation>
 <translation id="1373176046406139583">Mae gwelededd eich dyfais yn rheoli pwy all rannu â chi tra bod eich sgrîn wedi'i datgloi. <ph name="LINK_BEGIN" />Dysgu rhagor<ph name="LINK_END" /></translation>
@@ -654,6 +657,7 @@
 <translation id="1610272688494140697">Gosodiadau Ap</translation>
 <translation id="161042844686301425">Gwyrddlas</translation>
 <translation id="1611432201750675208">Mae'ch dyfais wedi'i chloi</translation>
+<translation id="1611776894942218234">Rhaid i'r ddyfais fod yn y Sianel Beta</translation>
 <translation id="1612019740169791082">Nid yw'ch cynhwysydd wedi'i ffurfweddu i gefnogi newid maint y disg. I addasu faint o le sy'n cael ei gadw ar gyfer Linux, gwnewch gopi wrth gefn ac yna adferwch ef i gynhwysydd newydd.</translation>
 <translation id="1613019471223620622">Dangos cyfrinair ar gyfer <ph name="USERNAME" /> ar <ph name="DOMAIN" /></translation>
 <translation id="1613149688105334014">Ni fydd hen fersiynau o apiau Chrome yn agor ar ôl Rhagfyr 2022. Gallwch wirio a oes fersiwn newydd ar gael.</translation>
@@ -1219,6 +1223,7 @@
 <translation id="2098805196501063469">Gwirio'r cyfrineiriau sy'n weddill</translation>
 <translation id="2099686503067610784">Dileu'r dystysgrif gweinydd "<ph name="CERTIFICATE_NAME" />"?</translation>
 <translation id="2100273922101894616">Mewngofnodi'n Awtomatig</translation>
+<translation id="2100986609271491802">Nid yw'r ddyfais hon yn cefnogi Steam ar Chromebook ar hyn o bryd</translation>
 <translation id="2101225219012730419">Fersiwn:</translation>
 <translation id="2102396546234652240">Peidio â chaniatáu i wefannau ddefnyddio'ch meicroffon</translation>
 <translation id="2102495993840063010">Apiau Android</translation>
@@ -1518,6 +1523,9 @@
 <translation id="2350133097354918058">Ail-lwythwyd</translation>
 <translation id="2350182423316644347">Wrthi'n cychwyn yr ap...</translation>
 <translation id="235028206512346451">Os byddwch yn symud i ffwrdd o'ch dyfais, bydd eich sgrîn yn cloi yn awtomatig. Pan fyddwch o flaen eich dyfais, bydd eich sgrîn yn aros yn effro yn hirach. Os nad ydych yn defnyddio clo sgrîn, bydd eich dyfais yn cysgu yn lle cloi.</translation>
+<translation id="2350866610930767288"><ph name="BEGIN_PARAGRAPH1" />Os cawsoch gyfarwyddiadau i nodi cod adnabod siop manwerthwr yn ystod gosod y Modd Demo, rhowch ef ar y dde*.  Fel arall, gallwch adael y maes hwn yn wag a pharhau.<ph name="END_PARAGRAPH1" />
+    <ph name="BEGIN_PARAGRAPH2" />Byddwch yn dal i allu gosod y Modd Demo heb god, ond mae'n bwysig nodi'r cod hwn os yw'n berthnasol i'ch siop.<ph name="END_PARAGRAPH2" />
+    <ph name="BEGIN_PARAGRAPH3" />*Sylwer: Mae Google yn defnyddio'r codau hyn i nodi pa fersiwn o'r Modd Demo y dylai'r ddyfais ei derbyn ac i fesur y defnydd o'r Modd Demo.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="2352495879228166246">{NUM_ITEMS,plural, =1{1 eitem}zero{{NUM_ITEMS} eitem}two{{NUM_ITEMS} eitem}few{{NUM_ITEMS} eitem}many{{NUM_ITEMS} eitem}other{{NUM_ITEMS} eitem}}</translation>
 <translation id="2352662711729498748">&lt; 1 MB</translation>
 <translation id="2352810082280059586">Mae nodiadau clo sgrîn yn cael eu cadw'n awtomatig i <ph name="LOCK_SCREEN_APP_NAME" />. Bydd eich nodyn diweddaraf yn aros ar y clo sgrîn.</translation>
@@ -1968,6 +1976,7 @@
 <translation id="2776560192867872731">Newid enw dyfais ar gyfer <ph name="DEVICE_NAME" /></translation>
 <translation id="2777251078198759550">Dileu'r cynhwysydd hwn</translation>
 <translation id="2778471504622896352">Ychwanegu apiau o bell i lansiwr ChromeOS</translation>
+<translation id="2781120507965857989">Trowch cysoni ymlaen i gael eich nodau tudalen, cyfrineiriau, hanes a rhagor ar y ddyfais hon ac unrhyw le arall rydych yn cysoni. Mae'n bosib y bydd Google yn defnyddio'ch hanes i bersonoleiddio Search a gwasanaethau Google eraill.</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2782104745158847185">Bu gwall wrth osod yr ap Linux</translation>
 <translation id="2783298271312924866">Wedi lawrlwytho</translation>
@@ -1988,6 +1997,7 @@
 <translation id="2792697226874849938">Llun cyfyngiad</translation>
 <translation id="2794233252405721443">Rhwystrwyd gwefan</translation>
 <translation id="2794522004398861033">Cysylltwch â Wi-Fi neu ether-rwyd i osod eSIM</translation>
+<translation id="2795074478966352573">Nid yw cyfrifon a reolir gan Family Link yn cael eu cefnogi eto</translation>
 <translation id="2795716239552913152">Mae gwefannau fel arfer yn defnyddio'ch lleoliad ar gyfer nodweddion neu wybodaeth berthnasol, fel newyddion lleol neu siopau cyfagos</translation>
 <translation id="2796424461616874739">Daeth yr amser dilysu i ben wrth gysylltu â "<ph name="DEVICE_NAME" />".</translation>
 <translation id="2796740370559399562">Parhau i ganiatáu cwcis</translation>
@@ -2173,6 +2183,7 @@
 <translation id="2949289451367477459">Defnyddio lleoliad. Caniatáu apiau a gwasanaethau sydd â'r caniatâd Lleoliad ddefnyddio lleoliad y ddyfais hon. Mae'n bosib y bydd Google yn casglu data lleoliad o bryd i'w gilydd ac yn defnyddio'r data hwy mewn ffordd anhysbys i wella cywirdeb lleoliad a gwasanaethau sy'n seiliedig ar leoliad. <ph name="BEGIN_LINK1" />Dysgu rhagor<ph name="END_LINK1" /></translation>
 <translation id="2950666755714083615">Cofrestru fi</translation>
 <translation id="2953019166882260872">Cysylltwch eich ffôn â chebl</translation>
+<translation id="2953218713108551165">Ni chaniateir hysbysiadau ar gyfer <ph name="SITE" />. Gofynnir i chi eto ar eich ymweliad nesaf.</translation>
 <translation id="2956070239128776395">Rhan sydd wedi'i nyth mewn grŵp: <ph name="ERROR_LINE" /></translation>
 <translation id="2958721676848865875">Rhybudd estyniad pecyn</translation>
 <translation id="2959127025785722291">Aeth rywbeth o'i le. Ni ellid cwblhau sganio. Rhowch gynnig arall arni.</translation>
@@ -2881,6 +2892,7 @@
 <translation id="3665919494326051362">Y fersiwn bresennol yw <ph name="CURRENT_VERSION" /></translation>
 <translation id="3670113805793654926">Dyfeisiau gan unrhyw werthwr</translation>
 <translation id="3670229581627177274">Troi Bluetooth ymlaen</translation>
+<translation id="3672663996348587094">Cliciwch i ganiatáu "<ph name="EXTENSIONS_REQUESTING_ACCESS" />" ar <ph name="ORIGIN" />:</translation>
 <translation id="3672681487849735243">Mae gwall ffatri wedi'i ganfod</translation>
 <translation id="3673097791729989571">Cynhelir mewngofnodi gan <ph name="SAML_DOMAIN" /></translation>
 <translation id="3673622964532248901">Ni chaniateir i chi gastio i'r ddyfais hon.</translation>
@@ -3396,6 +3408,7 @@
 <translation id="4132183752438206707">Dod o hyd i apiau ar Google Play Store</translation>
 <translation id="4132364317545104286">Ail-enwi proffil eSIM</translation>
 <translation id="4133076602192971179">Agorwch yr ap i newid eich cyfrinair</translation>
+<translation id="4134818201340504801">Nid oes digon o le storio ar gael i gwblhau'r gosodiad. Rhyddhewch storfa a rhowch gynnig arall arni</translation>
 <translation id="4135746311382563554">Telerau Gwasanaeth ychwanegol Google Chrome a Chrome OS</translation>
 <translation id="4136203100490971508">Bydd Golau Nos yn diffodd yn awtomatig wrth i'r haul godi</translation>
 <translation id="41365691917097717">Bydd parhau yn galluogi dadfygio ADB ar gyfer creu a phrofi apiau Android. Sylwer bod y weithred hon yn caniatáu gosod apiau Android nad ydynt wedi'u dilysu gan Google, ac mae angen ailosod i'r gosodiadau ffatri i'w hanalluogi.</translation>
@@ -3632,6 +3645,7 @@
 <translation id="4378556263712303865">Hawlio dyfais</translation>
 <translation id="4379281552162875326">Dadosod "<ph name="APP_NAME" />"?</translation>
 <translation id="4380648069038809855">Wedi dechrau'r Modd Sgrîn Lawn</translation>
+<translation id="4383048856908088702">Tra bod y tab hwn yn anweithredol, rhyddhaodd yr Arbedwr Cof <ph name="MEMORY_VALUE" /> o gof ar gyfer tasgau eraill. Gallwch newid hyn unrhyw bryd yn y <ph name="SETTINGS_LINK" />.</translation>
 <translation id="4384312707950789900">Ychwanegu at rwydweithiau dewisol</translation>
 <translation id="4384652540891215547">Gweithredu'r estyniad</translation>
 <translation id="4384886290276344300">Newid y gosodiadau bysellfwrdd</translation>
@@ -3709,6 +3723,7 @@
 <translation id="4451479197788154834">Mae eich cyfrinair wedi'i gadw ar y ddyfais hon ac yn eich Cyfrif Google</translation>
 <translation id="4451757071857432900">Wedi'i rhwystro ar wefannau sy'n dangos hysbysebion ymwthiol neu gamarweiniol (argymhellir)</translation>
 <translation id="4453946976636652378">Chwiliwch <ph name="SEARCH_ENGINE_NAME" /> neu teipiwch URL</translation>
+<translation id="4458535500699390320">Tra bod y tab hwn yn anweithredol, rhyddhaodd yr Arbedwr Cof gof ar gyfer tasgau eraill. Gallwch newid hyn unrhyw bryd yn y gosodiadau.</translation>
 <translation id="4459169140545916303">Yma <ph name="DEVICE_LAST_ACTIVATED_TIME" /> o ddiwrnodau yn ôl</translation>
 <translation id="4460014764210899310">Dadgrwpio</translation>
 <translation id="4462159676511157176">Gweinyddion enw personol</translation>
@@ -3881,6 +3896,7 @@
 <translation id="4613271546271159013">Mae estyniad wedi newid pa dudalen sy'n cael ei dangos pan fyddwch yn agor tab newydd.</translation>
 <translation id="4615586811063744755">Heb ddewis cwci</translation>
 <translation id="461661862154729886">Ffynhonnell ynni</translation>
+<translation id="461676224702246336">Ar glic ar gyfer y wefan hon</translation>
 <translation id="4617001782309103936">Rhy fyr</translation>
 <translation id="4617019240346358451">Ail-lwythwch y dudalen i ddefnyddio "<ph name="EXTENSION_NAME" />"</translation>
 <translation id="4617270414136722281">Dewisiadau'r estyniad</translation>
@@ -4003,6 +4019,7 @@
 <translation id="4728558894243024398">Platfform</translation>
 <translation id="4728570203948182358">Mae <ph name="BEGIN_LINK" />eich gweinyddwr<ph name="END_LINK" /> wedi diffodd gwirio am feddalwedd niweidiol</translation>
 <translation id="4730492586225682674">Nodyn diweddaraf y pwyntil ar y clo sgrîn</translation>
+<translation id="4730888769809690665">Caniateir hysbysiadau ar gyfer <ph name="SITE" /></translation>
 <translation id="473140019006744096">Nid oes digon o le ar y ddyfais hon i gwblhau'r diweddariad hwn. Glanhewch <ph name="NECESSARY_SPACE" /> ar eich dyfais a rhowch gynnig arall arni.</translation>
 <translation id="4733161265940833579"><ph name="BATTERY_PERCENTAGE" />% (Chwith)</translation>
 <translation id="4733793249294335256">Lleoliad</translation>
@@ -4306,6 +4323,7 @@
 <translation id="5032430150487044192">Methu â chreu Cod QR</translation>
 <translation id="5033137252639132982">Ni chaniateir defnyddio synwyryddion symudiad</translation>
 <translation id="5033266061063942743">Siapau geometrig</translation>
+<translation id="5034000993065629381">Cysylltwch â'ch gweinyddwr</translation>
 <translation id="5037676449506322593">Dewis pob un</translation>
 <translation id="5038818366306248416">Yn flaenorol, gwnaethoch ddewis peidio â chaniatáu unrhyw estyniadau ar <ph name="ORIGIN" /></translation>
 <translation id="5039696241953571917">Gweld a rheoli cyfrineiriau sydd wedi'u cadw yn eich Cyfrif Google</translation>
@@ -4436,6 +4454,7 @@
 <translation id="5161251470972801814">Dyfeisiau USB gan <ph name="VENDOR_NAME" /></translation>
 <translation id="5162905305237671850">Mae <ph name="DEVICE_TYPE" /> wedi'i rwystro</translation>
 <translation id="5163910114647549394">Wedi symud y tab i ddiwedd y stribed tabiau</translation>
+<translation id="5164530241085602114">Ni chaniateir hysbysiadau ar gyfer <ph name="SITE" /></translation>
 <translation id="516747639689914043">Protocol Trafnidiaeth Hyperdestun (HTTP)</translation>
 <translation id="5170568018924773124">Dangos yn y ffolder</translation>
 <translation id="5171045022955879922">Chwiliwch neu teipiwch URL</translation>
@@ -4538,6 +4557,7 @@
 <translation id="5269977353971873915">Wedi methu ag argraffu</translation>
 <translation id="5273806377963980154">Golygu URL gwefan</translation>
 <translation id="5275084684151588738">Geiriaduron Defnyddwyr</translation>
+<translation id="5275100789567222478">Troi ymlaen dim ond pan fydd fy lefel batri yn <ph name="PERCENT" />% neu'n is</translation>
 <translation id="5275338516105640560">Botwm Grŵp Tabiau sydd wedi'i gadw</translation>
 <translation id="5275352920323889391">Ci</translation>
 <translation id="527605719918376753">Distewi'r tab</translation>
@@ -4556,6 +4576,7 @@
 <translation id="5285635972691565180">Sgrîn <ph name="DISPLAY_ID" /></translation>
 <translation id="5286194356314741248">Wrthi'n sganio</translation>
 <translation id="5287425679749926365">Eich cyfrifon</translation>
+<translation id="5288106344236929384">Rhagor o gamau gweithredu, opsiynau allweddi ar gyfer <ph name="USERNAME" /> ar <ph name="DOMAIN" /></translation>
 <translation id="5288678174502918605">Ai&amp;lagor Tab sydd wedi'i Gau</translation>
 <translation id="52895863590846877">Nid yw'r dudalen yn <ph name="LANGUAGE" /></translation>
 <translation id="52912272896845572">Mae'r ffeil allwedd breifat yn annilys.</translation>
@@ -4751,6 +4772,7 @@
 <translation id="5473099001878321374">Drwy barhau, rydych yn cytuno y gall y ddyfais hon hefyd lawrlwytho a gosod diweddariadau ac apiau yn awtomatig gan Google, cludydd eich plentyn a gwneuthurwr y ddyfais hon, gan ddefnyddio data symudol o bosib. Mae'n bosib y bydd rhai o'r apiau hyn yn cynnig pryniannau o fewn yr ap.</translation>
 <translation id="5473156705047072749">{NUM_CHARACTERS,plural, =1{Rhaid i'r PIN fod o leiaf un nod}zero{Rhaid i'r PIN fod o leiaf # nod}two{Rhaid i'r PIN fod o leiaf # nod}few{Rhaid i'r PIN fod o leiaf # nod}many{Rhaid i'r PIN fod o leiaf # nod}other{Rhaid i'r PIN fod o leiaf # nod}}</translation>
 <translation id="5474859849784484111">Mae <ph name="MANAGER" /> yn gofyn i chi gysylltu â Wi-Fi nawr a lawrlwytho diweddariad. Neu, gallwch lawrlwytho o gysylltiad â mesurydd (gall taliadau fod yn berthnasol).</translation>
+<translation id="5476016146231427848">Ailgychwynnwch eich dyfais i ddefnyddio Steam ar Chromebook</translation>
 <translation id="5481273127572794904">Ni chaniateir i lawrlwytho sawl ffeil yn awtomatig</translation>
 <translation id="5481941284378890518">Ychwanegu Argraffwyr Gerllaw</translation>
 <translation id="5483785310822538350">Dirymu mynediad ffeil a dyfais</translation>
@@ -4970,6 +4992,7 @@
 <translation id="5683806393796685434">Rhowch eich cod gweithredu</translation>
 <translation id="5684181005476681636">Manylion Wi-Fi</translation>
 <translation id="5684661240348539843">Dynodwr Asedau</translation>
+<translation id="5684969244627829799">Mewngofnodwch i gyfrif defnyddiwr a rhowch gynnig arall arni</translation>
 <translation id="5687326903064479980">Cylchfa amser</translation>
 <translation id="5687935527303996204">Gwnewch yn siŵr bod eich dyfais wedi'i phlygio i mewn, a pheidiwch â'i diffodd. Gall gosod gymryd hyd at 20 munud. Bydd eich dyfais yn cael ei diffodd yn awtomatig pan fydd y gosodiad wedi'i gwblhau.</translation>
 <translation id="5689516760719285838">Lleoliad</translation>
@@ -5096,6 +5119,7 @@
 <translation id="5805697420284793859">Rheolwr ffenestri</translation>
 <translation id="5806447147478173900">Cyfanswm y storfa a ddefnyddir gan y gwefannau a ddangosir: <ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">0° (Diofyn)</translation>
+<translation id="5810603387504252966">Rhaid galluogi #borealis-enabled yn chrome://flags</translation>
 <translation id="5810809306422959727">Nid yw'r cyfrif hwn yn gymwys ar gyfer rheolaethau rhieni</translation>
 <translation id="5811614940486072060">Nid yw'r ffeil hon yn cael ei lawrlwytho'n aml a gall fod yn beryglus</translation>
 <translation id="5812674658566766066">Ehangu'r cyfan</translation>
@@ -5175,6 +5199,7 @@
 <translation id="5882449899683447569">Aeth rhywbeth o'i le ac ni fewnforiwyd eich cyfrineiriau</translation>
 <translation id="5882919346125742463">Rhwydweithiau Hysbys</translation>
 <translation id="5883356647197510494">Rhwystrwyd <ph name="PERMISSION_1" />, <ph name="PERMISSION_2" /> yn awtomatig</translation>
+<translation id="5884447826201752041">Personoloeiddio ar gyfer pob estyniad</translation>
 <translation id="5884474295213649357">Mae'r tab hwn wedi'i gysylltu â dyfais USB.</translation>
 <translation id="5885314688092915589">Bydd eich sefydliad yn rheoli'r proffil hwn</translation>
 <translation id="5886009770935151472">Bys 1</translation>
@@ -5614,6 +5639,7 @@
 <translation id="6301300352769835063">Gadael i Google ddefnyddio eich data caledwedd i helpu gwella <ph name="DEVICE_OS" /> Os ydych yn gwrthod, bydd y data yn parhau i gael ei anfon at Google i benderfynu ar ddiweddariadau cywir, ond nid yw'n cael ei storio na'i ddefnyddio fel arall. Dysgu rhagor yn g.co/flex/HWDataCollection.</translation>
 <translation id="630292539633944562">Awgrymiadau gwybodaeth bersonol</translation>
 <translation id="6305607932814307878">Polisi Cyffredinol:</translation>
+<translation id="6305909198255586420">Gosodwch gan ddefnyddio'ch prif broffil</translation>
 <translation id="6307990684951724544">Mae'r system yn brysur</translation>
 <translation id="6308493641021088955">Mae mewngofnodi wedi'i ddarparu gan <ph name="EXTENSION_NAME" /></translation>
 <translation id="6308937455967653460">Cadw'r ddole&amp;n fel…</translation>
@@ -5943,6 +5969,7 @@
 <translation id="6608166463665411119">Ailosod eSIM</translation>
 <translation id="6609478180749378879">Bydd data mewngofnodi'n cael eu storio ar y ddyfais hon ar ôl i chi adael y Modd Anhysbys. Byddwch yn gallu mewngofnodi i'r wefan hon gyda'ch dyfais eto yn nes ymlaen.</translation>
 <translation id="6610002944194042868">Opsiynau cyfieithu</translation>
+<translation id="6611907964265870728">Gwnewch yn siŵr bod eich dyfais wedi'i chysylltu â'r rhyngrwyd</translation>
 <translation id="6611972847767394631">Gallwch ddod o hyd i'ch tabiau yma</translation>
 <translation id="6613668613087513143">Nid oes digon o le ar y ddyfais hon i gwblhau'r diweddariad hwn. Glanhewch <ph name="NECESSARY_SPACE" /> ar eich dyfais a rhowch gynnig arall arni o'ch porwr Chrome.</translation>
 <translation id="6615455863669487791">Dangos i fi</translation>
@@ -6331,6 +6358,7 @@
 <translation id="697508444536771064">Diffodd Linux</translation>
 <translation id="6975361011348772931">Wedi gofyn am ddarllen a newid</translation>
 <translation id="6978121630131642226">Peiriannau Chwilio</translation>
+<translation id="6979041727349121225">Arbedwr Ynni</translation>
 <translation id="6979044105893951891">Lansio a gadael sesiynau gwestai a reolir</translation>
 <translation id="6979158407327259162">Google Drive</translation>
 <translation id="6979440798594660689">Distewi (diofyn)</translation>
@@ -6383,6 +6411,7 @@
 <translation id="7014174261166285193">Methwyd â gosod yr eitem.</translation>
 <translation id="7014480873681694324">Tynnu'r Amlygu</translation>
 <translation id="7014741021609395734">Lefel chwyddo</translation>
+<translation id="7015088858756332848">Methu â lansio Steam ar Chromebook. Rhowch gynnig arall arni</translation>
 <translation id="7017004637493394352">Dywedwch "Ok Google" eto</translation>
 <translation id="7017219178341817193">Ychwanegu tudalen newydd</translation>
 <translation id="7017354871202642555">Methu â gosod modd ar ôl gosod y ffenestr.</translation>
@@ -6759,6 +6788,7 @@
 <translation id="7409854300652085600">Mewnforiwyd nodau tudalen.</translation>
 <translation id="7410344089573941623">Gofyn pan fydd <ph name="HOST" /> eisiau cael mynediad at eich camera a'ch meicroffon</translation>
 <translation id="7410852728357935715">Castio i ddyfais</translation>
+<translation id="7411614333737930931">Ailgychwynnwch eich dyfais a rhowch gynnig arall arni.</translation>
 <translation id="741204030948306876">Iawn, rwy'n cydsynio</translation>
 <translation id="7412226954991670867">Cof GPU</translation>
 <translation id="7414464185801331860">18x</translation>
@@ -6989,6 +7019,7 @@
 <translation id="7635048370253485243">Piniwyd gan eich Gweinyddwr</translation>
 <translation id="7636919061354591437">Gosod ar y Ddyfais hon</translation>
 <translation id="7637253234491814483">Cyffyrddwch â'r synhwyrydd olion bysedd ar gornel dde uchaf eich bysellfwrdd, wrth ymyl y botwm Pŵer. Mae eich data ôl bys wedi'u storio yn ddiogel a byth yn gadael eich <ph name="DEVICE_TYPE" />.</translation>
+<translation id="7637272932128132922">Tra bod y tab hwn yn anweithredol, rhyddhaodd yr Arbedwr Cof gof ar gyfer tasgau eraill. Gallwch newid hyn unrhyw bryd yn y <ph name="SETTINGS_LINK" />.</translation>
 <translation id="7637593984496473097">Nid oes digon o le ar y disg</translation>
 <translation id="7639914187072011620">Methwyd â nôl yr URL ailgyfeirio SAML o'r gweinydd</translation>
 <translation id="764017888128728">Mae <ph name="PASSWORD_MANAGER_BRAND" /> yn eich mewngofnodi'n awtomatig i wefannau cymwys gyda chyfrineiriau y gwnaethoch eu cadw.</translation>
@@ -7105,6 +7136,7 @@
 <translation id="7728668285692163452">Bydd y newid sianel yn cael ei gymhwyso yn nes ymlaen</translation>
 <translation id="7730449930968088409">Tynnu sgrinlun o gynnwys eich sgrîn</translation>
 <translation id="7730683939467795481">Newidiwyd y dudalen hon gan yr estyniad "<ph name="EXTENSION_NAME" />"</translation>
+<translation id="7735165285389721951">Mae proses gosod Steam arall wrthi'n rhedeg. Arhoswch iddi gwblhau cyn rhoi cynnig arall arni</translation>
 <translation id="7737115349420013392">Wrthi'n paru â "<ph name="DEVICE_NAME" />" ...</translation>
 <translation id="7737846262459425222">Gallwch newid hyn ar unrhyw adeg yn y Gosodiadau &gt; Google Assistant &gt; Cyd-destun sgrîn.</translation>
 <translation id="7737948071472253612">Dim caniatâd i ddefnyddio'ch camera</translation>
@@ -7403,6 +7435,7 @@
 Ffeil Allwedd: <ph name="KEY_FILE" />
 
 Cadwch eich ffeil allwedd mewn man diogel. Bydd ei hangen arnoch i greu fersiynau newydd o'ch estyniad.</translation>
+<translation id="8001100670809322641">Arhoswch ychydig o funudau a rhowch gynnig arall arni</translation>
 <translation id="8002274832045662704">Ffurfweddiad argraffydd uwch</translation>
 <translation id="8002670234429879764">Nid yw <ph name="PRINTER_NAME" /> ar gael mwyach</translation>
 <translation id="8004092996156083991">Os yw eich cyfrineiriau wedi'u darganfod, byddwn yn rhoi gwybod i chi.</translation>
@@ -7412,6 +7445,7 @@
 <translation id="8008356846765065031">Mae'r rhyngrwyd wedi'i ddatgysylltu. Gwiriwch eich cysylltiad rhyngrwyd.</translation>
 <translation id="8009225694047762179">Rheoli Cyfrineiriau</translation>
 <translation id="8011372169388649948">Mae '<ph name="BOOKMARK_TITLE" />' wedi'i symud.</translation>
+<translation id="8011875486979733097">Ni ellir gosod Steam</translation>
 <translation id="8012647001091218357">Ni allem gyrraedd dy rieni ar hyn o bryd. Rhowch gynnig arall arni.</translation>
 <translation id="8013993649590906847">Os nad oes gan ddelwedd ddisgrifiad defnyddiol, bydd Chrome yn ceisio darparu un ar eich cyfer. Rydym yn anfon delweddau at Google er mwyn creu disgrifiadau.</translation>
 <translation id="8014154204619229810">Mae'r rhaglen diweddaru wrthi'n rhedeg. Ail-lwythwch mewn munud i wirio eto.</translation>
@@ -7501,6 +7535,7 @@
 <translation id="808894953321890993">Newid cyfrinair</translation>
 <translation id="8090234456044969073">Darllen y rhestr o'r gwefannau rydych wedi ymweld â nhw amlaf</translation>
 <translation id="8090513782447872344">Gallwch ddod yn ôl unrhyw bryd i edrych arno eto</translation>
+<translation id="809312780580957751">Nid oedd modd gosod Steam ar y ddyfais hon</translation>
 <translation id="8093359998839330381">Ni yw <ph name="PLUGIN_NAME" /> yn ymateb</translation>
 <translation id="8095105960962832018"><ph name="BEGIN_PARAGRAPH1" />Gwneud copi wrth gefn yn Google Drive. Adfer eich data neu ddyfais newid yn hawdd ar unrhyw adeg. Mae eich copïau wrth gefn yn cynnwys data apiau.<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />Mae eich copïau wrth gefn yn cael eu huwchlwytho i Google a'u hamgryptio gan ddefnyddio cyfrinair eich Cyfrif Google.<ph name="END_PARAGRAPH2" />
@@ -7596,6 +7631,7 @@
 <translation id="8177318697334260664">{NUM_TABS,plural, =1{Symud y tab i ffenestr newydd}zero{Symud y tabiau i ffenestr newydd}two{Symud y tabiau i ffenestr newydd}few{Symud y tabiau i ffenestr newydd}many{Symud y tabiau i ffenestr newydd}other{Symud y tabiau i ffenestr newydd}}</translation>
 <translation id="8179188928355984576">Ni ddefnyddir gydag apiau Android</translation>
 <translation id="8179976553408161302">Enter</translation>
+<translation id="8180785270975217276">Mae'r Arbedwr Ynni wedi'i droi ymlaen</translation>
 <translation id="8180786512391440389">Gall <ph name="EXTENSION" /> ddarllen a dileu lluniau, fideos a ffeiliau sain yn y lleoliadau sydd wedi'u ticio.</translation>
 <translation id="8181215761849004992">Methu ag ymuno â'r parth. Gwiriwch eich cyfrif i weld a oes gennych ddigon o freintiau i ychwanegu dyfeisiau.</translation>
 <translation id="8182105986296479640">Nid yw'r ap yn ymateb.</translation>
@@ -7718,6 +7754,7 @@
 <translation id="828642162569365647">Mae'r cyfrinair neu'r PIN hwn yn diogelu eich data ar yr <ph name="DEVICE_TYPE" /> hwn ac unrhyw wybodaeth y byddwch yn ei chyrchu o'ch ffôn. Bydd angen i chi ddatgloi bob tro y bydd eich <ph name="DEVICE_TYPE" /> yn deffro o gwsg.</translation>
 <translation id="8287902281644548111">Chwilio yn ôl galwad API/URL</translation>
 <translation id="8288032458496410887">Dadosod <ph name="APP" />...</translation>
+<translation id="8288539437195337464">Gwnewch yn siŵr bod eich dyfais yn gyfredol a rhowch gynnig arall arni</translation>
 <translation id="8289128870594824098">Maint disg</translation>
 <translation id="8289509909262565712">Croeso i <ph name="DEVICE_OS" /></translation>
 <translation id="8293206222192510085">Ychwanegu Nod Tudalen</translation>
@@ -8012,6 +8049,7 @@
 <translation id="8599864823732014237">Hepgor cofrestru Enterprise?</translation>
 <translation id="8601206103050338563">Dilysu Cleient TLS WWW</translation>
 <translation id="8601611099293226919">Chwiliwch eich sgrîn â Google Lens</translation>
+<translation id="8602674530529411098">Apiau (Beta)</translation>
 <translation id="8602851771975208551">Ychwanegodd rhaglen arall ar eich cyfrifiadur ap a allai newid y ffordd y mae Chrome yn gweithio.</translation>
 <translation id="8605428685123651449">Cof SQLite</translation>
 <translation id="8608618451198398104">Ychwanegu tocyn Kerberos</translation>
@@ -8700,6 +8738,7 @@
 <translation id="939598580284253335">Rhowch gyfrinymadrodd</translation>
 <translation id="939736085109172342">Ffolder newydd</translation>
 <translation id="942532530371314860">Mae <ph name="APP_NAME" /> yn rhannu tab Chrome a sain.</translation>
+<translation id="944799160843436808">Bu problem wrth sefydlu Steam ar Chromebook</translation>
 <translation id="945522503751344254">Danfon adborth</translation>
 <translation id="947329552760389097">&amp;Archwilio Elfennau</translation>
 <translation id="947526284350604411">Eich ateb</translation>
@@ -8725,6 +8764,7 @@
 <translation id="968000525894980488">Troi gwasanaethau Google Play ymlaen.</translation>
 <translation id="968037381421390582">Gl&amp;udo a Chwilio am “<ph name="SEARCH_TERMS" />”</translation>
 <translation id="969096075394517431">Newid iaith</translation>
+<translation id="969574218206797926">Mae'r Arbedwr Cof yn rhyddhau cof o dabiau anweithredol fel y gall tabiau gweithredol ac apiau eraill ei ddefnyddio</translation>
 <translation id="970047733946999531">{NUM_TABS,plural, =1{1 Tab}zero{# Tab}two{# Dab}few{# Thab}many{# Thab}other{# Tab}}</translation>
 <translation id="971510864672937292">Clirio data a chaniatadau ar gyfer <ph name="SITE_NAME" /> a'r holl wefannau oddi tani?</translation>
 <translation id="971774202801778802">URL nod tudalen</translation>
diff --git a/chrome/app/resources/generated_resources_da.xtb b/chrome/app/resources/generated_resources_da.xtb
index 159df89..e41af21 100644
--- a/chrome/app/resources/generated_resources_da.xtb
+++ b/chrome/app/resources/generated_resources_da.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="da">
 <translation id="1001033507375626788">Dette netværk deles med dig</translation>
+<translation id="1002085272681738789">Fanen er aktiv igen</translation>
 <translation id="1003088604756913841">Åbn linket i et nyt <ph name="APP" />-vindue</translation>
 <translation id="100323615638474026">USB-enhed (<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />)</translation>
 <translation id="1004218526896219317">Websiteadgang</translation>
@@ -324,6 +325,7 @@
 <translation id="1296911687402551044">Fastgør den valgte fane</translation>
 <translation id="1297175357211070620">Destination</translation>
 <translation id="129770436432446029">Send feedback om <ph name="EXPERIMENT_NAME" /></translation>
+<translation id="130097046531636712">Dette forlænger batteriets levetid ved at begrænse baggrundsaktivitet og visuelle effekter såsom jævn rulning</translation>
 <translation id="1301135395320604080"><ph name="ORIGIN" /> kan redigere følgende filer</translation>
 <translation id="1302227299132585524">Tillad JavaScript via Apple Events</translation>
 <translation id="1303101771013849280">Tilføjer HTML-fil som bogmærke</translation>
@@ -382,6 +384,7 @@
 <translation id="1361655923249334273">Ikke brugt</translation>
 <translation id="1362865166188278099">Der er et teknisk problem med printeren. Tjek printeren</translation>
 <translation id="1363585519747660921">USB-printeren skal konfigureres</translation>
+<translation id="136378536198524553">Energisparefunktion er aktiveret</translation>
 <translation id="1368603372088757436">Linux understøttes ikke på din <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Få flere oplysninger<ph name="LINK_END" /></translation>
 <translation id="1372841398847029212">Synkroniser med din konto</translation>
 <translation id="1373176046406139583">Din enheds synlighed styrer, hvem der kan dele indhold med dig, når din skærm er låst op. <ph name="LINK_BEGIN" />Få flere oplysninger<ph name="LINK_END" /></translation>
@@ -652,6 +655,7 @@
 <translation id="1610272688494140697">Appindstillinger</translation>
 <translation id="161042844686301425">Cyan</translation>
 <translation id="1611432201750675208">Din enhed er låst</translation>
+<translation id="1611776894942218234">Enheden skal være på betakanalen</translation>
 <translation id="1612019740169791082">Din container er ikke konfigureret til at understøtte ændringer af diskstørrelsen. Du kan justere den mængde plads, der skal reserveres til Linux, ved at sikkerhedskopiere og derefter gendanne i en ny container.</translation>
 <translation id="1613019471223620622">Vis adgangskoden for <ph name="USERNAME" /> på <ph name="DOMAIN" /></translation>
 <translation id="1613149688105334014">Gamle versioner af Chrome-apps kan ikke åbnes efter december 2022. Du kan tjekke, om en ny version er tilgængelig.</translation>
@@ -1216,6 +1220,7 @@
 <translation id="2098805196501063469">Tjek resterende adgangskoder</translation>
 <translation id="2099686503067610784">Slet servercertifikatet "<ph name="CERTIFICATE_NAME" />"?</translation>
 <translation id="2100273922101894616">Automatisk login</translation>
+<translation id="2100986609271491802">Denne enhed understøtter i øjeblikket ikke Steam på Chromebook</translation>
 <translation id="2101225219012730419">Version:</translation>
 <translation id="2102396546234652240">Tillad ikke, at websites anvender din mikrofon</translation>
 <translation id="2102495993840063010">Android-apps</translation>
@@ -1514,6 +1519,9 @@
 <translation id="2350133097354918058">Genindlæst</translation>
 <translation id="2350182423316644347">Starter applikation...</translation>
 <translation id="235028206512346451">Hvis du bevæger dig væk fra din enhed, låser din skærm automatisk. Når du befinder dig foran din enhed, forbliver din skærm ulåst i længere tid. Hvis du ikke bruger en låseskærm, går din enhed i dvale i stedet for at låse.</translation>
+<translation id="2350866610930767288"><ph name="BEGIN_PARAGRAPH1" />Hvis du har modtaget anvisninger til, hvordan du angiver en kode til forhandler-id under installationen af demotilstand, skal du angive koden til højre*.  Hvis ikke, kan du lade feltet stå tomt og fortsætte.<ph name="END_PARAGRAPH1" />
+    <ph name="BEGIN_PARAGRAPH2" />Du kan stadig installere demotilstand uden en kode, men det er vigtigt at indtaste denne kode, hvis den er relevant for din butik.<ph name="END_PARAGRAPH2" />
+    <ph name="BEGIN_PARAGRAPH3" />*Bemærk! Google bruger disse koder til at identificere, hvilken version af demotilstand enheden skal modtage, og til at måle brugen af demotilstand.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="2352495879228166246">{NUM_ITEMS,plural, =1{1 element}one{{NUM_ITEMS} element}other{{NUM_ITEMS} elementer}}</translation>
 <translation id="2352662711729498748">&lt; 1 MB</translation>
 <translation id="2352810082280059586">Noter på låseskærmen gemmes automatisk i <ph name="LOCK_SCREEN_APP_NAME" />. Din seneste note forbliver på låseskærmen.</translation>
@@ -1964,6 +1972,7 @@
 <translation id="2776560192867872731">Rediger navnet på enheden <ph name="DEVICE_NAME" /></translation>
 <translation id="2777251078198759550">Slet denne container</translation>
 <translation id="2778471504622896352">Føj eksterne apps til Chrome OS-applisten</translation>
+<translation id="2781120507965857989">Aktivér synkronisering for at få dine bogmærker, dine adgangskoder, din historik m.m. på denne enhed og andre enheder, som synkroniseres. Google kan bruge din historik til at tilpasse Søgning og andre Google-tjenester.</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2782104745158847185">Der opstod en fejl ved installation af Linux-appen</translation>
 <translation id="2783298271312924866">Downloadet</translation>
@@ -1984,6 +1993,7 @@
 <translation id="2792697226874849938">Billede af blokering</translation>
 <translation id="2794233252405721443">Websitet er blokeret</translation>
 <translation id="2794522004398861033">Opret forbindelse til Wi-Fi eller Ethernet for at konfigurere eSIM</translation>
+<translation id="2795074478966352573">Konti, der administreres via Family Link, understøttes ikke endnu</translation>
 <translation id="2795716239552913152">Websites bruger normalt din lokation til relevante formål eller oplysninger om lokale nyheder eller butikker i nærheden</translation>
 <translation id="2796424461616874739">Godkendelsen gik i timeout under tilslutning til "<ph name="DEVICE_NAME" />".</translation>
 <translation id="2796740370559399562">Fortsæt med at tillade cookies</translation>
@@ -2169,6 +2179,7 @@
 <translation id="2949289451367477459">Brug placering. Tillad, at apps og tjenester med placeringstilladelse kan bruge enhedens placering. Google kan med jævne mellemrum indsamle lokationsdata og bruge oplysningerne anonymt til at gøre lokationen mere nøjagtig og forbedre lokationsbaserede tjenester. <ph name="BEGIN_LINK1" />Få flere oplysninger<ph name="END_LINK1" /></translation>
 <translation id="2950666755714083615">Tilmeld mig</translation>
 <translation id="2953019166882260872">Opret forbindelse til din telefon via et kabel</translation>
+<translation id="2953218713108551165">Notifikationer er ikke tilladt for <ph name="SITE" />. Du bliver spurgt igen, næste gang du besøger websitet.</translation>
 <translation id="2956070239128776395">Sektionen er indlejret i en gruppe: <ph name="ERROR_LINE" /></translation>
 <translation id="2958721676848865875">Advarsel om pakkeudvidelse</translation>
 <translation id="2959127025785722291">Noget gik galt. Scanningen kunne ikke gennemføres Prøv igen.</translation>
@@ -2877,6 +2888,7 @@
 <translation id="3665919494326051362">Den aktuelle version er <ph name="CURRENT_VERSION" /></translation>
 <translation id="3670113805793654926">Enheder fra alle leverandører</translation>
 <translation id="3670229581627177274">Slå Bluetooth til</translation>
+<translation id="3672663996348587094">Klik for at tillade "<ph name="EXTENSIONS_REQUESTING_ACCESS" />" på <ph name="ORIGIN" />:</translation>
 <translation id="3672681487849735243">Der blev registreret er fabriksfejl</translation>
 <translation id="3673097791729989571">Login hostes af <ph name="SAML_DOMAIN" /></translation>
 <translation id="3673622964532248901">Du har ikke tilladelse til at caste til denne enhed.</translation>
@@ -3392,6 +3404,7 @@
 <translation id="4132183752438206707">Find apps i Google Play Butik</translation>
 <translation id="4132364317545104286">Omdøb eSIM-profil</translation>
 <translation id="4133076602192971179">Åbn appen for at ændre din adgangskode</translation>
+<translation id="4134818201340504801">Der er ikke nok ledig lagerplads til at fuldføre konfigurationen. Frigør lagerplads, og prøv igen</translation>
 <translation id="4135746311382563554">Yderligere servicevilkår for Google Chrome og Chrome OS</translation>
 <translation id="4136203100490971508">Nattelys slukkes automatisk ved solopgang</translation>
 <translation id="41365691917097717">Hvis du fortsætter, aktiveres ADB-fejlretning til oprettelse og test af Android-apps. Bemærk! Denne handling tillader, at Android-apps, der ikke er blevet bekræftet af Google, kan installeres. Du skal gendanne fabriksindstillingerne for at deaktivere dette.</translation>
@@ -3628,6 +3641,7 @@
 <translation id="4378556263712303865">Enhedsrekvisition</translation>
 <translation id="4379281552162875326">Vil du afinstallere "<ph name="APP_NAME" />"?</translation>
 <translation id="4380648069038809855">Fuld skærm er aktiveret</translation>
+<translation id="4383048856908088702">Mens denne fane var inaktiv, frigjorde Hukommelsessparefunktion <ph name="MEMORY_VALUE" /> hukommelse til andre opgaver. Du kan til enhver tid ændre dette i <ph name="SETTINGS_LINK" />.</translation>
 <translation id="4384312707950789900">Føj til foretrukne</translation>
 <translation id="4384652540891215547">Aktivér udvidelsen</translation>
 <translation id="4384886290276344300">Skift indstillinger for tastaturet</translation>
@@ -3705,6 +3719,7 @@
 <translation id="4451479197788154834">Din adgangskode gemmes på denne enhed og din Google-konto</translation>
 <translation id="4451757071857432900">Blokeret på websites, der viser påtrængende eller vildledende annoncer (anbefales)</translation>
 <translation id="4453946976636652378">Søg på <ph name="SEARCH_ENGINE_NAME" />, eller angiv en webadresse</translation>
+<translation id="4458535500699390320">Mens denne fane var inaktiv, frigjorde Hukommelsessparefunktion hukommelse til andre opgaver. Du kan til enhver tid ændre dette i indstillingerne.</translation>
 <translation id="4459169140545916303">Aktiv for <ph name="DEVICE_LAST_ACTIVATED_TIME" /> dage siden</translation>
 <translation id="4460014764210899310">Ophæv gruppering</translation>
 <translation id="4462159676511157176">Tilpassede navneservere</translation>
@@ -3877,6 +3892,7 @@
 <translation id="4613271546271159013">En udvidelse har ændret, hvilken side der vises, når du åbner en ny fane.</translation>
 <translation id="4615586811063744755">der er ikke valgt nogen cookie</translation>
 <translation id="461661862154729886">Energikilde</translation>
+<translation id="461676224702246336">Ved klik for dette website</translation>
 <translation id="4617001782309103936">For kort</translation>
 <translation id="4617019240346358451">Genindlæs siden for at anvende "<ph name="EXTENSION_NAME" />"</translation>
 <translation id="4617270414136722281">Valgmuligheder for udvidelser</translation>
@@ -3999,6 +4015,7 @@
 <translation id="4728558894243024398">Platform</translation>
 <translation id="4728570203948182358"><ph name="BEGIN_LINK" />Din administrator<ph name="END_LINK" /> har deaktiveret kontrol af skadelig software</translation>
 <translation id="4730492586225682674">Nyeste note med styluspen på låseskærmen</translation>
+<translation id="4730888769809690665">Notifikationer er tilladt for <ph name="SITE" /></translation>
 <translation id="473140019006744096">Der er ikke nok plads på denne enhed til at fuldføre denne opdatering. Frigør <ph name="NECESSARY_SPACE" /> på din enhed, og prøv igen.</translation>
 <translation id="4733161265940833579"><ph name="BATTERY_PERCENTAGE" /> % (venstre)</translation>
 <translation id="4733793249294335256">Placering</translation>
@@ -4301,6 +4318,7 @@
 <translation id="5032430150487044192">QR-koden kan ikke oprettes</translation>
 <translation id="5033137252639132982">Har ikke tilladelse til at bruge bevægelsessensorer</translation>
 <translation id="5033266061063942743">Geometriske former</translation>
+<translation id="5034000993065629381">Kontakt din administrator</translation>
 <translation id="5037676449506322593">Vælg alle</translation>
 <translation id="5038818366306248416">Du har tidligere valgt ikke at tillade nogen udvidelser på <ph name="ORIGIN" /></translation>
 <translation id="5039696241953571917">Se og administrer gemte adgangskoder på din Google-konto</translation>
@@ -4431,6 +4449,7 @@
 <translation id="5161251470972801814">USB-enheder fra <ph name="VENDOR_NAME" /></translation>
 <translation id="5162905305237671850"><ph name="DEVICE_TYPE" /> er blevet blokeret</translation>
 <translation id="5163910114647549394">Fanen blev flyttet til slutningen af fanelinjen</translation>
+<translation id="5164530241085602114">Notifikationer er ikke tilladt for <ph name="SITE" /></translation>
 <translation id="516747639689914043">Hypertext Transfer Protocol (HTTP)</translation>
 <translation id="5170568018924773124">Vis i mappe</translation>
 <translation id="5171045022955879922">Søg, eller angiv webadresse</translation>
@@ -4533,6 +4552,7 @@
 <translation id="5269977353971873915">Udskrift mislykkedes</translation>
 <translation id="5273806377963980154">Rediger websitets webadresse</translation>
 <translation id="5275084684151588738">Brugerordbøger</translation>
+<translation id="5275100789567222478">Aktivér kun, når batteriniveauet er på <ph name="PERCENT" /> % eller lavere</translation>
 <translation id="5275338516105640560">Knappen Fanegruppe blev gemt</translation>
 <translation id="5275352920323889391">Hund</translation>
 <translation id="527605719918376753">Slå fanens lyd fra</translation>
@@ -4551,6 +4571,7 @@
 <translation id="5285635972691565180">Skærm <ph name="DISPLAY_ID" /></translation>
 <translation id="5286194356314741248">Søger</translation>
 <translation id="5287425679749926365">Dine konti</translation>
+<translation id="5288106344236929384">Flere handlinger, valgmuligheder for adgangsnøgle for <ph name="USERNAME" /> på <ph name="DOMAIN" /></translation>
 <translation id="5288678174502918605">G&amp;enåbn lukket fane</translation>
 <translation id="52895863590846877">Siden findes ikke på <ph name="LANGUAGE" /></translation>
 <translation id="52912272896845572">Den private nøglefil er ugyldig.</translation>
@@ -4746,6 +4767,7 @@
 <translation id="5473099001878321374">Hvis du fortsætter, accepterer du, at denne enhed også kan downloade og installere opdateringer og apps automatisk fra Google, dit barns mobilselskab og producenten af enheden, eventuelt ved hjælp af mobildata. Nogle af disse apps tilbyder muligvis køb i appen.</translation>
 <translation id="5473156705047072749">{NUM_CHARACTERS,plural, =1{Pinkoden skal være på mindst ét tegn}one{Pinkoden skal være på mindst # tegn}other{Pinkoden skal være på mindst # tegn}}</translation>
 <translation id="5474859849784484111"><ph name="MANAGER" /> kræver, at du opretter forbindelse til Wi-Fi nu og downloader en opdatering. Du kan også downloade via en forbrugsafregnet forbindelse (du opkræves muligvis et gebyr).</translation>
+<translation id="5476016146231427848">Genstart enheden for at bruge Steam på Chromebook</translation>
 <translation id="5481273127572794904">Har ikke tilladelse til at downloade flere filer automatisk</translation>
 <translation id="5481941284378890518">Tilføj printere i nærheden</translation>
 <translation id="5483785310822538350">Tilbagekald adgang til fil og enhed</translation>
@@ -4965,6 +4987,7 @@
 <translation id="5683806393796685434">Angiv din aktiveringskode</translation>
 <translation id="5684181005476681636">Info om Wi-Fi</translation>
 <translation id="5684661240348539843">Aktiv-id</translation>
+<translation id="5684969244627829799">Log ind på en brugerkonto, og prøv igen</translation>
 <translation id="5687326903064479980">Tidszone</translation>
 <translation id="5687935527303996204">Sørg for, at din enhed er tilsluttet, og undgå at slukke den. Installationen kan tage op til 20 minutter. Din enhed vil automatisk slukke, når installationen er gennemført.</translation>
 <translation id="5689516760719285838">Placering</translation>
@@ -5091,6 +5114,7 @@
 <translation id="5805697420284793859">Vinduesadministrator</translation>
 <translation id="5806447147478173900">Samlet lagerplads, der bruges af de viste websites: <ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">0° (standard)</translation>
+<translation id="5810603387504252966">#borealis-enabled skal være aktiveret under chrome://flags</translation>
 <translation id="5810809306422959727">Denne konto er ikke kvalificeret til forældreindstillinger</translation>
 <translation id="5811614940486072060">Denne fil er ikke downloadet på almindelig vis og kan være skadelig</translation>
 <translation id="5812674658566766066">Udvid alle</translation>
@@ -5170,6 +5194,7 @@
 <translation id="5882449899683447569">Noget gik galt, og dine adgangskoder blev ikke importeret</translation>
 <translation id="5882919346125742463">Kendte netværk</translation>
 <translation id="5883356647197510494">Browseren blokerede automatisk <ph name="PERMISSION_1" /> og <ph name="PERMISSION_2" /></translation>
+<translation id="5884447826201752041">Tilpas for hver udvidelse</translation>
 <translation id="5884474295213649357">Denne fane er sluttet til en USB-enhed.</translation>
 <translation id="5885314688092915589">Din organisation administrerer denne profil</translation>
 <translation id="5886009770935151472">Finger 1</translation>
@@ -5609,6 +5634,7 @@
 <translation id="6301300352769835063">Giv Google tilladelse til at bruge dine hardwaredata til at hjælpe med at forbedre <ph name="DEVICE_OS" />. Hvis du afviser, bliver disse data stadig sendt til Google med henblik på at levere de rigtige opdateringer, men de bliver ikke gemt eller brugt udover det. Få flere oplysninger på g.co/flex/HWDataCollection.</translation>
 <translation id="630292539633944562">Forslag til personlige oplysninger</translation>
 <translation id="6305607932814307878">Global politik:</translation>
+<translation id="6305909198255586420">Installer ved hjælp af din primære profil</translation>
 <translation id="6307990684951724544">Systemet er optaget</translation>
 <translation id="6308493641021088955">Login leveres af <ph name="EXTENSION_NAME" /></translation>
 <translation id="6308937455967653460">Gem lin&amp;k som...</translation>
@@ -5932,6 +5958,7 @@
 <translation id="6608166463665411119">Nulstil eSIM</translation>
 <translation id="6609478180749378879">Dine logindata gemmes på denne enhed, når du afslutter inkognitotilstand. Det betyder, at du kan logge ind på dette website med din enhed igen på et senere tidspunkt.</translation>
 <translation id="6610002944194042868">Valgmuligheder for oversættelse</translation>
+<translation id="6611907964265870728">Sørg for, at din enhed har internetforbindelse</translation>
 <translation id="6611972847767394631">Find dine faner her</translation>
 <translation id="6613668613087513143">Der er ikke nok plads på denne enhed til at fuldføre denne opdatering. Frigør <ph name="NECESSARY_SPACE" /> på din enhed, og prøv igen via din Chrome-browser.</translation>
 <translation id="6615455863669487791">Lad mig se</translation>
@@ -6320,6 +6347,7 @@
 <translation id="697508444536771064">Luk Linux</translation>
 <translation id="6975361011348772931">Har anmodet om tilladelse til at læse og ændre</translation>
 <translation id="6978121630131642226">Søgemaskiner</translation>
+<translation id="6979041727349121225">Energisparefunktion</translation>
 <translation id="6979044105893951891">Start og afslut administrerede gæstesessioner</translation>
 <translation id="6979158407327259162">Google Drev</translation>
 <translation id="6979440798594660689">Slå lyden fra (standard)</translation>
@@ -6372,6 +6400,7 @@
 <translation id="7014174261166285193">Installationen mislykkedes.</translation>
 <translation id="7014480873681694324">Fjern fremhævning</translation>
 <translation id="7014741021609395734">Zoomniveau</translation>
+<translation id="7015088858756332848">Steam kunne ikke åbnes på Chromebook. Prøv igen</translation>
 <translation id="7017004637493394352">Sig "Hey Google" igen</translation>
 <translation id="7017219178341817193">Tilføj en ny side</translation>
 <translation id="7017354871202642555">Tilstanden kan ikke indstilles, når vinduet er indstillet.</translation>
@@ -6748,6 +6777,7 @@
 <translation id="7409854300652085600">Bogmærkerne er importeret.</translation>
 <translation id="7410344089573941623">Spørg, hvis <ph name="HOST" /> vil have adgang til dit kamera og din mikrofon</translation>
 <translation id="7410852728357935715">Cast til en enhed</translation>
+<translation id="7411614333737930931">Genstart din enhed, og prøv igen</translation>
 <translation id="741204030948306876">Ja tak</translation>
 <translation id="7412226954991670867">GPU-hukommelse</translation>
 <translation id="7414464185801331860">18x</translation>
@@ -6978,6 +7008,7 @@
 <translation id="7635048370253485243">Fastgjort af din administrator</translation>
 <translation id="7636919061354591437">Installer på denne enhed</translation>
 <translation id="7637253234491814483">Tryk på fingeraftrykslæseren øverst til højre på tastaturet ved siden af afbryderknappen. Dine fingeraftryksdata gemmes sikkert og forlader aldrig din <ph name="DEVICE_TYPE" />.</translation>
+<translation id="7637272932128132922">Mens denne fane var inaktiv, frigjorde Hukommelsessparefunktion hukommelse til andre opgaver. Du kan til enhver tid ændre dette i <ph name="SETTINGS_LINK" />.</translation>
 <translation id="7637593984496473097">Der er ikke nok diskplads</translation>
 <translation id="7639914187072011620">SAML-omdirigeringen kunne ikke hentes fra serveren</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> logger dig automatisk ind på kvalificerede websites med adgangskoder, du har gemt.</translation>
@@ -7094,6 +7125,7 @@
 <translation id="7728668285692163452">Ændringerne af kanalen træder i kraft senere</translation>
 <translation id="7730449930968088409">Tage et screenshot af dit indhold</translation>
 <translation id="7730683939467795481">Denne side blev ændret af udvidelsen "<ph name="EXTENSION_NAME" />"</translation>
+<translation id="7735165285389721951">En anden Steam-konfiguration er i gang. Vent, indtil den er fuldført, før du prøver igen</translation>
 <translation id="7737115349420013392">Parrer med "<ph name="DEVICE_NAME" />"...</translation>
 <translation id="7737846262459425222">Du kan til enhver tid ændre dette ved at gå til Indstillinger &gt; Google Assistent &gt; Skærmkontekst.</translation>
 <translation id="7737948071472253612">Har ikke tilladelse til at bruge dit kamera</translation>
@@ -7391,6 +7423,7 @@
 Nøglefil: <ph name="KEY_FILE" />
 
 Opbevar din nøglefil på et sikkert sted. Du skal bruge den til at oprette nye versioner af din udvidelse.</translation>
+<translation id="8001100670809322641">Vent et par minutter, og prøv så igen</translation>
 <translation id="8002274832045662704">Avanceret konfiguration af printer</translation>
 <translation id="8002670234429879764"><ph name="PRINTER_NAME" /> er ikke længere tilgængelig</translation>
 <translation id="8004092996156083991">Hvis dine adgangskoder kompromitteres, kontakter vi dig.</translation>
@@ -7400,6 +7433,7 @@
 <translation id="8008356846765065031">Internetforbindelsen blev afbrudt. Kontrollér din internetforbindelse.</translation>
 <translation id="8009225694047762179">Administrer adgangskoder</translation>
 <translation id="8011372169388649948">"<ph name="BOOKMARK_TITLE" />" blev flyttet.</translation>
+<translation id="8011875486979733097">Steam kan ikke installeres</translation>
 <translation id="8012647001091218357">Vi kan ikke få kontakt til dine forældre på nuværende tidspunkt. Prøv igen.</translation>
 <translation id="8013993649590906847">Hvis et billede ikke har en brugbar beskrivelse, forsøger Chrome at angive en for dig. Billederne sendes til Google, så der kan oprettes beskrivelser.</translation>
 <translation id="8014154204619229810">Opdateringsprogrammet kører i øjeblikket. Opdater om et minut for at kontrollere igen.</translation>
@@ -7490,6 +7524,7 @@
 <translation id="808894953321890993">Skift adgangskode</translation>
 <translation id="8090234456044969073">Se en liste over dine mest besøgte websites</translation>
 <translation id="8090513782447872344">Du kan altid vende tilbage hertil senere</translation>
+<translation id="809312780580957751">Steam kunne ikke installeres på denne enhed</translation>
 <translation id="8093359998839330381"><ph name="PLUGIN_NAME" /> svarer ikke</translation>
 <translation id="8095105960962832018"><ph name="BEGIN_PARAGRAPH1" />Sikkerhedskopiér til Google Drev. Du kan til enhver tid gendanne dine data eller skifte til en anden enhed. Backups omfatter appdata.<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />Backups uploades til Google og krypteres ved hjælp af adgangskoden til din Google-konto.<ph name="END_PARAGRAPH2" />
@@ -7585,6 +7620,7 @@
 <translation id="8177318697334260664">{NUM_TABS,plural, =1{Flyt fanen til et nyt vindue}one{Flyt fanen til et nyt vindue}other{Flyt fanerne til et nyt vindue}}</translation>
 <translation id="8179188928355984576">Bruges ikke med Android-apps</translation>
 <translation id="8179976553408161302">Enter</translation>
+<translation id="8180785270975217276">Energisparefunktion er aktiveret</translation>
 <translation id="8180786512391440389">"<ph name="EXTENSION" />" har læse- og sletterettigheder til billed-, video- og lydfiler på de markerede placeringer.</translation>
 <translation id="8181215761849004992">Enheden kunne ikke knyttes til domænet. Sørg for, at din konto har de påkrævede tilladelser til at tilføje enheder.</translation>
 <translation id="8182105986296479640">Appen svarer ikke.</translation>
@@ -7707,6 +7743,7 @@
 <translation id="828642162569365647">Denne adgangskode eller pinkode beskytter dine data på denne <ph name="DEVICE_TYPE" /> samt eventuelle oplysninger, du tilgår via din telefon. Du skal låse op, hver gang din <ph name="DEVICE_TYPE" /> vækkes fra dvaletilstand.</translation>
 <translation id="8287902281644548111">Søg efter API-kald/webadresse</translation>
 <translation id="8288032458496410887">Afinstaller <ph name="APP" />...</translation>
+<translation id="8288539437195337464">Sørg for, at din enhed er opdateret, og prøv igen</translation>
 <translation id="8289128870594824098">Diskstørrelse</translation>
 <translation id="8289509909262565712">Velkommen til <ph name="DEVICE_OS" /></translation>
 <translation id="8293206222192510085">Tilføj bogmærke</translation>
@@ -8001,6 +8038,7 @@
 <translation id="8599864823732014237">Vil du springe virksomhedstilmeldingen over?</translation>
 <translation id="8601206103050338563">TLS WWW-klientgodkendelse</translation>
 <translation id="8601611099293226919">Søg på din skærm med Google Lens</translation>
+<translation id="8602674530529411098">Apps (beta)</translation>
 <translation id="8602851771975208551">Et andet program på din computer tilføjede en app, der kan ændre den måde, hvorpå Chrome fungerer.</translation>
 <translation id="8605428685123651449">SQLite-hukommelse</translation>
 <translation id="8608618451198398104">Tilføj en Kerberos-billet</translation>
@@ -8687,6 +8725,7 @@
 <translation id="939598580284253335">Angiv adgangssætning</translation>
 <translation id="939736085109172342">Ny mappe</translation>
 <translation id="942532530371314860"><ph name="APP_NAME" /> deler en Chrome-fane og lyd.</translation>
+<translation id="944799160843436808">Der opstod et problem under konfigurationen af Steam på Chromebook</translation>
 <translation id="945522503751344254">Send feedback</translation>
 <translation id="947329552760389097">&amp;Inspect Elements (Undersøg elementer)</translation>
 <translation id="947526284350604411">Dit svar</translation>
@@ -8711,6 +8750,7 @@
 <translation id="968000525894980488">Aktivér Google Play-tjenester.</translation>
 <translation id="968037381421390582">Ind&amp;sæt, og søg efter "<ph name="SEARCH_TERMS" />"</translation>
 <translation id="969096075394517431">Skift sprog</translation>
+<translation id="969574218206797926">Hukommelsessparefunktion frigør hukommelse fra inaktive faner, så hukommelsen kan bruges af aktive faner og andre apps</translation>
 <translation id="970047733946999531">{NUM_TABS,plural, =1{1 fane}one{# faner}other{# faner}}</translation>
 <translation id="971510864672937292">Vil du rydde websitedata og tilladelser for <ph name="SITE_NAME" /> samt alle websites under det?</translation>
 <translation id="971774202801778802">Bogmærkets webadresse</translation>
diff --git a/chrome/app/resources/generated_resources_el.xtb b/chrome/app/resources/generated_resources_el.xtb
index ee3e0a9..89d4e7c2 100644
--- a/chrome/app/resources/generated_resources_el.xtb
+++ b/chrome/app/resources/generated_resources_el.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="el">
 <translation id="1001033507375626788">Γίνεται κοινή χρήση αυτού του δικτύου με εσάς</translation>
+<translation id="1002085272681738789">Η καρτέλα είναι ξανά ενεργή</translation>
 <translation id="1003088604756913841">Άνοιγμα Συνδέσμου σε νέο παράθυρο <ph name="APP" /></translation>
 <translation id="100323615638474026">Συσκευή USB (<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />)</translation>
 <translation id="1004218526896219317">Πρόσβαση στον ιστότοπο</translation>
@@ -323,6 +324,7 @@
 <translation id="1296911687402551044">Καρφίτσωμα επιλεγμένης καρτέλας</translation>
 <translation id="1297175357211070620">Προορισμός</translation>
 <translation id="129770436432446029">Αποστολή σχολίων για το πείραμα <ph name="EXPERIMENT_NAME" /></translation>
+<translation id="130097046531636712">Αυτή η ρύθμιση παρατείνει τη διάρκεια της μπαταρίας, περιορίζοντας τη δραστηριότητα στο παρασκήνιο και τα οπτικά εφέ, όπως την ομαλή κύλιση.</translation>
 <translation id="1301135395320604080">Ο ιστότοπος <ph name="ORIGIN" /> μπορεί να επεξεργαστεί τα παρακάτω αρχεία</translation>
 <translation id="1302227299132585524">Επιτρέψτε τη JavaScript από τα Apple Events</translation>
 <translation id="1303101771013849280">Αρχείο σελιδοδεικτών HTML</translation>
@@ -381,6 +383,7 @@
 <translation id="1361655923249334273">Δεν χρησιμοποιείται</translation>
 <translation id="1362865166188278099">Μηχανικό πρόβλημα. Έλεγχος εκτυπωτή</translation>
 <translation id="1363585519747660921">Ο εκτυπωτής USB χρειάζεται διαμόρφωση</translation>
+<translation id="136378536198524553">Η Εξοικονόμηση ενέργειας είναι ενεργή</translation>
 <translation id="1368603372088757436">Το Linux δεν υποστηρίζεται στη συσκευή <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Μάθετε περισσότερα<ph name="LINK_END" /></translation>
 <translation id="1372841398847029212">Συγχρονισμός με τον λογαριασμό σας</translation>
 <translation id="1373176046406139583">Η ορατότητα συσκευής ελέγχει ποιοι χρήστες έχουν τη δυνατότητα να μοιραστούν περιεχόμενο μαζί σας, ενώ η οθόνη σας είναι ξεκλειδωμένη. <ph name="LINK_BEGIN" />Μάθετε περισσότερα<ph name="LINK_END" /></translation>
@@ -651,6 +654,7 @@
 <translation id="1610272688494140697">Ρυθμίσεις εφαρμογής</translation>
 <translation id="161042844686301425">Κυανό</translation>
 <translation id="1611432201750675208">Η συσκευή σας είναι κλειωδωμένη</translation>
+<translation id="1611776894942218234">Η συσκευή πρέπει να είναι σε Κανάλι έκδοσης Beta</translation>
 <translation id="1612019740169791082">Το κοντέινερ σας δεν έχει διαμορφωθεί για την υποστήριξη αλλαγής μεγέθους δίσκου. Για να προσαρμόσετε την ποσότητα χώρου που δεσμεύεται για το Linux, δημιουργήστε αντίγραφο ασφαλείας και έπειτα κάντε επαναφορά σε ένα νέο κοντέινερ.</translation>
 <translation id="1613019471223620622">Εμφάνιση κωδικού πρόσβασης για <ph name="USERNAME" /> σε <ph name="DOMAIN" /></translation>
 <translation id="1613149688105334014">Οι παλιές εκδόσεις των Εφαρμογών Chrome δεν θα ανοίγουν μετά τον Δεκέμβριο του 2022. Μπορείτε να ελέγξετε αν υπάρχει διαθέσιμη μια νέα έκδοση.</translation>
@@ -1215,6 +1219,7 @@
 <translation id="2098805196501063469">Έλεγχος κωδικών πρόσβασης που απομένουν</translation>
 <translation id="2099686503067610784">Να διαγραφεί το πιστοποιητικό διακομιστή "<ph name="CERTIFICATE_NAME" />";</translation>
 <translation id="2100273922101894616">Αυτόματη σύνδεση</translation>
+<translation id="2100986609271491802">Αυτή η συσκευή δεν υποστηρίζει προς το παρόν το Steam στο Chromebook</translation>
 <translation id="2101225219012730419">Έκδοση:</translation>
 <translation id="2102396546234652240">Να μην επιτρέπεται στους ιστοτόπους να χρησιμοποιούν το μικρόφωνό σας</translation>
 <translation id="2102495993840063010">Εφαρμογές Android</translation>
@@ -1513,6 +1518,9 @@
 <translation id="2350133097354918058">Έγινε επανάληψη φόρτωσης</translation>
 <translation id="2350182423316644347">Προετοιμασία εφαρμογής…</translation>
 <translation id="235028206512346451">Εάν απομακρυνθείτε από τη συσκευή, η οθόνη σας θα κλειδώσει αυτόματα. Όταν είστε μπροστά στη συσκευή, η οθόνη θα παραμείνει σε κανονική κατάσταση λειτουργίας για μεγαλύτερο χρονικό διάστημα. Εάν δεν χρησιμοποιείτε κλείδωμα οθόνης, η συσκευή δεν θα κλειδωθεί αλλά θα μπει σε λειτουργία αδράνειας.</translation>
+<translation id="2350866610930767288"><ph name="BEGIN_PARAGRAPH1" />Αν λάβατε οδηγίες για την εισαγωγή ενός κωδικού αναγνωριστικού καταστήματος λιανικής κατά την εγκατάσταση της λειτουργίας επίδειξης, εισαγάγετέ τον στα δεξιά*.  Διαφορετικά, μπορείτε να αφήσετε αυτό το πεδίο κενό και να συνεχίσετε.<ph name="END_PARAGRAPH1" />
+    <ph name="BEGIN_PARAGRAPH2" />Θα εξακολουθείτε να μπορείτε να εγκαταστήσετε τη λειτουργία επίδειξης χωρίς κωδικό, αλλά είναι σημαντικό να εισαγάγετε αυτόν τον κωδικό εάν απαιτείται για το κατάστημά σας.<ph name="END_PARAGRAPH2" />
+    <ph name="BEGIN_PARAGRAPH3" />*Σημείωση: Η Google χρησιμοποιεί αυτούς τους κωδικούς για να προσδιορίσει ποια έκδοση της λειτουργίας επίδειξης θα πρέπει να λάβει η συσκευή και για να μετρήσει τη χρήση της λειτουργίας επίδειξης.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="2352495879228166246">{NUM_ITEMS,plural, =1{1 είδος}other{{NUM_ITEMS} είδη}}</translation>
 <translation id="2352662711729498748">&lt; 1 MB</translation>
 <translation id="2352810082280059586">Οι σημειώσεις στην οθόνη κλειδώματος αποθηκεύονται αυτόματα στο <ph name="LOCK_SCREEN_APP_NAME" />. Η πιο πρόσφατη σημείωση θα παραμείνει στην οθόνη κλειδώματος.</translation>
@@ -1963,6 +1971,7 @@
 <translation id="2776560192867872731">Αλλαγή ονόματος συσκευής για τη συσκευή <ph name="DEVICE_NAME" /></translation>
 <translation id="2777251078198759550">Διαγραφή αυτού του κοντέινερ</translation>
 <translation id="2778471504622896352">Προσθήκη απομακρυσμένων εφαρμογών στην εφαρμογή εκκίνησης ChromeOS</translation>
+<translation id="2781120507965857989">Ενεργοποιήστε τον συγχρονισμό για να έχετε τους σελιδοδείκτες, τους κωδικούς πρόσβασης, το ιστορικό σας και άλλα δεδομένα σε αυτήν τη συσκευή και οπουδήποτε αλλού πραγματοποιείτε συγχρονισμό. Η Google μπορεί να χρησιμοποιήσει το ιστορικό σας για την εξατομίκευση της Αναζήτησης και άλλων υπηρεσιών Google.</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2782104745158847185">Παρουσιάστηκε σφάλμα κατά την εγκατάσταση της εφαρμογής Linux</translation>
 <translation id="2783298271312924866">Η λήψη ολοκληρώθηκε</translation>
@@ -1983,6 +1992,7 @@
 <translation id="2792697226874849938">Εικόνα περιορισμού</translation>
 <translation id="2794233252405721443">Ο ιστότοπος έχει αποκλειστεί</translation>
 <translation id="2794522004398861033">Συνδεθείτε σε Wi-Fi ή Ethernet για να ρυθμίσετε την eSIM.</translation>
+<translation id="2795074478966352573">Δεν υποστηρίζονται προς το παρόν λογαριασμοί των οποίων η διαχείριση γίνεται μέσω του Family Link</translation>
 <translation id="2795716239552913152">Οι ιστότοποι χρησιμοποιούν συνήθως την τοποθεσία σας για λειτουργίες ή πληροφορίες που σχετίζονται με την τοποθεσία όπου βρίσκεστε, όπως η εμφάνιση τοπικών ειδήσεων ή κοντινών καταστημάτων.</translation>
 <translation id="2796424461616874739">Λήξη χρονικού ορίου ελέγχου ταυτότητας κατά τη σύνδεση στη συσκευή "<ph name="DEVICE_NAME" />".</translation>
 <translation id="2796740370559399562">Να συνεχίσουν να επιτρέπονται τα cookie</translation>
@@ -2168,6 +2178,7 @@
 <translation id="2949289451367477459">Χρήση της τοποθεσίας. Επιτρέψτε στις εφαρμογές και στις υπηρεσίες που έχουν άδεια χρήσης τοποθεσίας να χρησιμοποιούν την τοποθεσία αυτής της συσκευής. Η Google μπορεί να συλλέγει περιοδικά δεδομένα τοποθεσίας και να τα χρησιμοποιεί ανώνυμα, προκειμένου να βελτιώσει την ακρίβεια της τοποθεσίας και των υπηρεσιών που βασίζονται στην τοποθεσία. <ph name="BEGIN_LINK1" />Μάθετε περισσότερα<ph name="END_LINK1" /></translation>
 <translation id="2950666755714083615">Επιθυμώ να εγγραφώ</translation>
 <translation id="2953019166882260872">Συνδέστε το τηλέφωνό σας με καλώδιο</translation>
+<translation id="2953218713108551165">Δεν επιτρέπονται οι ειδοποιήσεις για τον ιστότοπο <ph name="SITE" />. Θα ερωτηθείτε ξανά στην επόμενη επίσκεψή σας.</translation>
 <translation id="2956070239128776395">Η ενότητα είναι ενσωματωμένη στην ομάδα: <ph name="ERROR_LINE" /></translation>
 <translation id="2958721676848865875">Προειδοποίηση στοίβαξης επέκτασης</translation>
 <translation id="2959127025785722291">Προέκυψε πρόβλημα. Δεν ήταν δυνατή η ολοκλήρωση της σάρωσης. Δοκιμάστε ξανά.</translation>
@@ -2876,6 +2887,7 @@
 <translation id="3665919494326051362">Η τρέχουσα έκδοση είναι <ph name="CURRENT_VERSION" /></translation>
 <translation id="3670113805793654926">Συσκευές από οποιονδήποτε πάροχο υπηρεσιών</translation>
 <translation id="3670229581627177274">Ενεργοποίηση Bluetooth</translation>
+<translation id="3672663996348587094">Κάντε κλικ για να επιτρέψετε την επέκταση <ph name="EXTENSIONS_REQUESTING_ACCESS" /> στον ιστότοπο <ph name="ORIGIN" />:</translation>
 <translation id="3672681487849735243">Εντοπίστηκε ένα εργοστασιακό σφάλμα</translation>
 <translation id="3673097791729989571">Η σύνδεση φιλοξενείται από τον τομέα <ph name="SAML_DOMAIN" /></translation>
 <translation id="3673622964532248901">Δεν έχετε άδεια μετάδοσης σε αυτήν τη συσκευή.</translation>
@@ -3391,6 +3403,7 @@
 <translation id="4132183752438206707">Βρείτε εφαρμογές στο Google Play Store</translation>
 <translation id="4132364317545104286">Μετονομασία προφίλ eSIM</translation>
 <translation id="4133076602192971179">Ανοίξτε την εφαρμογή για να αλλάξετε τον κωδικό πρόσβασής σας</translation>
+<translation id="4134818201340504801">Δεν υπάρχει αρκετός διαθέσιμος αποθηκευτικός χώρος για την ολοκλήρωση της ρύθμισης. Ελευθερώστε αποθηκευτικό χώρο και δοκιμάστε ξανά.</translation>
 <translation id="4135746311382563554">Πρόσθετοι Όροι Παροχής Υπηρεσιών Google Chrome και Chrome OS</translation>
 <translation id="4136203100490971508">Ο Νυχτερινός φωτισμός θα απενεργοποιείται αυτόματα κατά την ανατολή του ηλίου</translation>
 <translation id="41365691917097717">Εάν συνεχίσετε, θα ενεργοποιηθεί ο εντοπισμός και η διόρθωση σφαλμάτων ADB για δημιουργία και δοκιμή εφαρμογών Android. Σημειώστε ότι αυτή η ενέργεια επιτρέπει την εγκατάσταση εφαρμογών Android που δεν έχουν επαληθευτεί από τη Google. Επιπλέον, απαιτείται εργοστασιακή επαναφορά για την απενεργοποίησή της.</translation>
@@ -3627,6 +3640,7 @@
 <translation id="4378556263712303865">Επίταξη συσκευής</translation>
 <translation id="4379281552162875326">Απεγκατάσταση της εφαρμογής <ph name="APP_NAME" />;</translation>
 <translation id="4380648069038809855">Εισαγωγή σε πλήρη οθόνη</translation>
+<translation id="4383048856908088702">Ενώ αυτή η καρτέλα ήταν ανενεργή, η Εξοικονόμηση μνήμης αποδέσμευσε <ph name="MEMORY_VALUE" /> μνήμης για άλλες εργασίες. Μπορείτε να αλλάξετε αυτήν τη ρύθμιση ανά πάσα στιγμή στις ρυθμίσεις <ph name="SETTINGS_LINK" />.</translation>
 <translation id="4384312707950789900">Προσθήκη στα προτιμώμενα</translation>
 <translation id="4384652540891215547">Ενεργοποίηση επέκτασης</translation>
 <translation id="4384886290276344300">Αλλαγή ρυθμίσεων πληκτρολογίου</translation>
@@ -3704,6 +3718,7 @@
 <translation id="4451479197788154834">Ο κωδικός πρόσβασής σας αποθηκεύεται σε αυτήν τη συσκευή και στον Λογαριασμό σας Google.</translation>
 <translation id="4451757071857432900">Αποκλεισμένες σε ιστότοπους που εμφανίζουν παρεμβατικές ή παραπλανητικές διαφημίσεις (συνιστάται)</translation>
 <translation id="4453946976636652378">Αναζητήστε στο <ph name="SEARCH_ENGINE_NAME" /> ή πληκτρολογήστε κάποιο URL</translation>
+<translation id="4458535500699390320">Ενώ αυτή η καρτέλα ήταν ανενεργή, η Εξοικονόμηση μνήμης αποδέσμευσε μνήμη για άλλες εργασίες. Μπορείτε να αλλάξετε αυτήν τη ρύθμιση ανά πάσα στιγμή από τις ρυθμίσεις.</translation>
 <translation id="4459169140545916303"><ph name="DEVICE_LAST_ACTIVATED_TIME" /> ημέρες πριν</translation>
 <translation id="4460014764210899310">Κατάργηση ομαδοποίησης</translation>
 <translation id="4462159676511157176">Προσαρμοσμένοι διακομιστές ονομάτων</translation>
@@ -3876,6 +3891,7 @@
 <translation id="4613271546271159013">Κάποια επέκταση άλλαξε το περιεχόμενο της σελίδας όταν ανοίγετε μια νέα καρτέλα.</translation>
 <translation id="4615586811063744755">δεν έχουν επιλεγεί cookie</translation>
 <translation id="461661862154729886">Πηγή ενέργειας</translation>
+<translation id="461676224702246336">Με κλικ για αυτόν τον ιστότοπο</translation>
 <translation id="4617001782309103936">Υπερβολικά μικρό</translation>
 <translation id="4617019240346358451">Ανανεώστε τη σελίδα για χρήση της επέκτασης "<ph name="EXTENSION_NAME" />"</translation>
 <translation id="4617270414136722281">Επιλογές επεκτάσεων</translation>
@@ -3998,6 +4014,7 @@
 <translation id="4728558894243024398">Πλατφόρμα</translation>
 <translation id="4728570203948182358"><ph name="BEGIN_LINK" />Ο διαχειριστής σας<ph name="END_LINK" /> απενεργοποίησε τον έλεγχο για επιβλαβές λογισμικό</translation>
 <translation id="4730492586225682674">Πιο πρόσφατη σημείωση με γραφίδα στην οθόνη κλειδώματος</translation>
+<translation id="4730888769809690665">Επιτρέπονται οι ειδοποιήσεις για τον ιστότοπο <ph name="SITE" /></translation>
 <translation id="473140019006744096">Δεν υπάρχει αρκετός χώρος σε αυτήν τη συσκευή για την ολοκλήρωση αυτής της ενημέρωσης. Αποδεσμεύστε <ph name="NECESSARY_SPACE" /> κάνοντας εκκαθάριση στη συσκευή σας, και προσπαθήστε ξανά.</translation>
 <translation id="4733161265940833579"><ph name="BATTERY_PERCENTAGE" />% (Αριστερό)</translation>
 <translation id="4733793249294335256">Τοποθεσία</translation>
@@ -4300,6 +4317,7 @@
 <translation id="5032430150487044192">Δεν είναι δυνατή η δημιουργία κωδικού QR</translation>
 <translation id="5033137252639132982">Δεν επιτρέπεται να χρησιμοποιούν αισθητήρες κίνησης</translation>
 <translation id="5033266061063942743">Γεωμετρικά σχήματα</translation>
+<translation id="5034000993065629381">Επικοινωνήστε με τον διαχειριστή.</translation>
 <translation id="5037676449506322593">Επιλογή Όλων</translation>
 <translation id="5038818366306248416">Είχατε επιλέξει να μην επιτρέπονται επεκτάσεις στη σελίδα <ph name="ORIGIN" /></translation>
 <translation id="5039696241953571917">Προβολή και διαχείριση αποθηκευμένων κωδικών πρόσβασης στον Λογαριασμό σας Google</translation>
@@ -4430,6 +4448,7 @@
 <translation id="5161251470972801814">Συσκευές USB από τον πάροχο <ph name="VENDOR_NAME" /></translation>
 <translation id="5162905305237671850">Η συσκευή (<ph name="DEVICE_TYPE" />) αποκλείστηκε</translation>
 <translation id="5163910114647549394">Η καρτέλα μεταφέρθηκε στο τέλος της γραμμής καρτελών</translation>
+<translation id="5164530241085602114">Δεν επιτρέπονται οι ειδοποιήσεις για τον ιστότοπο <ph name="SITE" /></translation>
 <translation id="516747639689914043">Hypertext Transport Protocol (HTTP)</translation>
 <translation id="5170568018924773124">Εμφάνιση στο φάκελο</translation>
 <translation id="5171045022955879922">Αναζήτηση ή πληκτρολόγηση διεύθυνσης URL</translation>
@@ -4532,6 +4551,7 @@
 <translation id="5269977353971873915">Η εκτύπωση απέτυχε</translation>
 <translation id="5273806377963980154">Επεξεργασία URL ιστοτόπου</translation>
 <translation id="5275084684151588738">Λεξικά χρήστη</translation>
+<translation id="5275100789567222478">Ενεργοποίηση μόνο όταν το επίπεδο της μπαταρίας είναι <ph name="PERCENT" />% ή χαμηλότερο</translation>
 <translation id="5275338516105640560">Κουμπί αποθηκευμένης ομάδας καρτελών</translation>
 <translation id="5275352920323889391">Σκύλος</translation>
 <translation id="527605719918376753">Σίγαση καρτέλας</translation>
@@ -4550,6 +4570,7 @@
 <translation id="5285635972691565180">Οθόνη <ph name="DISPLAY_ID" /></translation>
 <translation id="5286194356314741248">Σάρωση</translation>
 <translation id="5287425679749926365">Οι λογαριασμοί σας</translation>
+<translation id="5288106344236929384">Περισσότερες ενέργειες, επιλογές κλειδιών πρόσβασης για τον χρήστη <ph name="USERNAME" /> στον τομέα <ph name="DOMAIN" /></translation>
 <translation id="5288678174502918605">Εκ νέου ά&amp;νοιγμα κλειστής καρτέλας</translation>
 <translation id="52895863590846877">Η σελίδα δεν είναι στα <ph name="LANGUAGE" /></translation>
 <translation id="52912272896845572">Το ιδιωτικό κλειδί δεν είναι έγκυρο.</translation>
@@ -4745,6 +4766,7 @@
 <translation id="5473099001878321374">Εάν συνεχίσετε, αποδέχεστε ότι αυτή η συσκευή θα μπορεί επίσης να κατεβάζει και να εγκαθιστά αυτόματα ενημερώσεις και εφαρμογές από την Google, την εταιρεία κινητής τηλεφωνίας που χρησιμοποιεί το παιδί σας και τον κατασκευαστή αυτής της συσκευής, πιθανόν με τη χρήση δεδομένων κινητής τηλεφωνίας. Μερικές από αυτές τις εφαρμογές μπορεί να προσφέρουν αγορές εντός εφαρμογής.</translation>
 <translation id="5473156705047072749">{NUM_CHARACTERS,plural, =1{Το PIN πρέπει να αποτελείται τουλάχιστον από έναν χαρακτήρα.}other{Το PIN πρέπει να αποτελείται τουλάχιστον από # χαρακτήρες.}}</translation>
 <translation id="5474859849784484111">Ο τομέας <ph name="MANAGER" /> απαιτεί να συνδεθείτε άμεσα σε Wi-Fi και να κατεβάσετε μια ενημέρωση. Εναλλακτικά, μπορείτε να την κατεβάσετε από μια σύνδεση με ογκοχρέωση (ενδέχεται να ισχύουν χρεώσεις).</translation>
+<translation id="5476016146231427848">Επανεκκινήστε τη συσκευή σας για να χρησιμοποιήσετε το Steam στο Chromebook</translation>
 <translation id="5481273127572794904">Δεν επιτρέπεται να πραγματοποιούν αυτόματη λήψη πολλών αρχείων</translation>
 <translation id="5481941284378890518">Προσθήκη εκτυπωτών σε κοντινή απόσταση</translation>
 <translation id="5483785310822538350">Ανάκληση πρόσβασης στο αρχείο και τη συσκευή</translation>
@@ -4965,6 +4987,7 @@
 <translation id="5683806393796685434">Εισαγάγετε τον κωδικό ενεργοποίησης.</translation>
 <translation id="5684181005476681636">Λεπτομέρειες Wi-Fi</translation>
 <translation id="5684661240348539843">Αναγνωριστικό στοιχείου</translation>
+<translation id="5684969244627829799">Συνδεθείτε σε έναν λογαριασμό χρήστη και δοκιμάστε ξανά</translation>
 <translation id="5687326903064479980">Ζώνη ώρας</translation>
 <translation id="5687935527303996204">Βεβαιωθείτε ότι η συσκευή σας είναι συνδεδεμένη στο ρεύμα και μην την απενεργοποιήσετε. Η εγκατάσταση ενδέχεται να διαρκέσει έως 20 λεπτά. Η λειτουργία της συσκευής σας θα τερματιστεί αυτόματα όταν η εγκατάσταση ολοκληρωθεί.</translation>
 <translation id="5689516760719285838">Τοποθεσία</translation>
@@ -5091,6 +5114,7 @@
 <translation id="5805697420284793859">Διαχείριση παραθύρου</translation>
 <translation id="5806447147478173900">Συνολικός αποθηκευτικός χώρος που χρησιμοποιείται από ιστοτόπους που προβάλλονται: <ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">0° (Προεπιλογή)</translation>
+<translation id="5810603387504252966">Το #borealis-enabled πρέπει να είναι ενεργοποιημένο στο chrome://flags</translation>
 <translation id="5810809306422959727">Αυτός ο λογαριασμός δεν είναι κατάλληλος για γονικούς ελέγχους</translation>
 <translation id="5811614940486072060">Δεν πραγματοποιείται συχνά λήψη αυτού του αρχείου και ενδέχεται να είναι επικίνδυνο</translation>
 <translation id="5812674658566766066">Ανάπτυξη όλων</translation>
@@ -5170,6 +5194,7 @@
 <translation id="5882449899683447569">Παρουσιάστηκε κάποιο πρόβλημα και δεν έγινε εισαγωγή των κωδικών πρόσβασης</translation>
 <translation id="5882919346125742463">Γνωστά δίκτυα</translation>
 <translation id="5883356647197510494">Αποκλείστηκαν αυτόματα οι άδειες <ph name="PERMISSION_1" />, <ph name="PERMISSION_2" /></translation>
+<translation id="5884447826201752041">Προσαρμογή πρόσβασης για κάθε επέκταση</translation>
 <translation id="5884474295213649357">Αυτή η καρτέλα είναι συνδεδεμένη σε μια συσκευή USB.</translation>
 <translation id="5885314688092915589">Ο οργανισμός σας θα διαχειρίζεται αυτό το προφίλ</translation>
 <translation id="5886009770935151472">Δάκτυλο 1</translation>
@@ -5609,6 +5634,7 @@
 <translation id="6301300352769835063">Επιτρέψτε στην Google να χρησιμοποιεί δεδομένα του εξοπλισμού σας στο πλαίσιο της βελτίωση του <ph name="DEVICE_OS" />. Εάν δεν αποδεχτείτε, αυτά τα δεδομένα αποστέλλονται στην Google για τον προσδιορισμό των κατάλληλων ενημερώσεων, αλλά δεν αποθηκεύονται και δεν χρησιμοποιούνται με άλλον τρόπο. Μάθετε περισσότερα στη διεύθυνση g.co/flex/HWDataCollection.</translation>
 <translation id="630292539633944562">Προτάσεις προσωπικών στοιχείων</translation>
 <translation id="6305607932814307878">Καθολική πολιτική:</translation>
+<translation id="6305909198255586420">Χρησιμοποιήστε το κύριο προφίλ σας για την εγκατάσταση</translation>
 <translation id="6307990684951724544">Το σύστημα είναι απασχολημένο</translation>
 <translation id="6308493641021088955">Η σύνδεση παρέχεται από <ph name="EXTENSION_NAME" /></translation>
 <translation id="6308937455967653460">Αποθήκευση συν&amp;δέσμου ως...</translation>
@@ -5930,6 +5956,7 @@
 <translation id="6608166463665411119">Επαναφορά eSIM</translation>
 <translation id="6609478180749378879">Τα δεδομένα σύνδεσης θα αποθηκευτούν σε αυτήν τη συσκευή αφού εξέλθετε από την κατάσταση ανώνυμης περιήγησης. Θα μπορείτε να συνδεθείτε σε αυτόν τον ιστότοπο ξανά με τη συσκευή σας αργότερα.</translation>
 <translation id="6610002944194042868">Μετάφραση επιλογών</translation>
+<translation id="6611907964265870728">Βεβαιωθείτε ότι η συσκευή σας είναι συνδεδεμένη στο διαδίκτυο</translation>
 <translation id="6611972847767394631">Βρείτε τις καρτέλες σας εδώ</translation>
 <translation id="6613668613087513143">Δεν υπάρχει αρκετός χώρος σε αυτήν τη συσκευή για την ολοκλήρωση αυτής της ενημέρωσης. Αποδεσμεύστε <ph name="NECESSARY_SPACE" /> κάνοντας εκκαθάριση στη συσκευή σας, και προσπαθήστε ξανά από το πρόγραμμα περιήγησης Chrome.</translation>
 <translation id="6615455863669487791">Εμφάνιση</translation>
@@ -6318,6 +6345,7 @@
 <translation id="697508444536771064">Τερματισμός λειτουργίας Linux</translation>
 <translation id="6975361011348772931">Υπέβαλε αίτημα για ανάγνωση και αλλαγή</translation>
 <translation id="6978121630131642226">Μηχανές αναζήτησης</translation>
+<translation id="6979041727349121225">Εξοικονόμηση ενέργειας</translation>
 <translation id="6979044105893951891">Εκκίνηση και έξοδος διαχειριζόμενων περιόδων λειτουργίας επισκέπτη</translation>
 <translation id="6979158407327259162">Google Drive</translation>
 <translation id="6979440798594660689">Σίγαση (προεπιλογή)</translation>
@@ -6370,6 +6398,7 @@
 <translation id="7014174261166285193">Η εγκατάσταση απέτυχε.</translation>
 <translation id="7014480873681694324">Κατάργηση επισήμανσης</translation>
 <translation id="7014741021609395734">Επίπεδο εστίασης</translation>
+<translation id="7015088858756332848">Δεν ήταν δυνατή η εκκίνηση του Steam στο Chromebook. Δοκιμάστε ξανά</translation>
 <translation id="7017004637493394352">Εκφωνήστε ξανά "Ok Google"</translation>
 <translation id="7017219178341817193">Προσθήκη νέας σελίδας</translation>
 <translation id="7017354871202642555">Δεν είναι δυνατή η ρύθμιση της λειτουργίας μετά τη ρύθμιση του παράθυρου.</translation>
@@ -6746,6 +6775,7 @@
 <translation id="7409854300652085600">Έγινε εισαγωγή των σελιδοδεικτών.</translation>
 <translation id="7410344089573941623">Ερώτηση εάν το <ph name="HOST" /> θέλει να αποκτήσει πρόσβαση στην κάμερα και στο μικρόφωνό σας</translation>
 <translation id="7410852728357935715">Μετάδοση σε κάποια συσκευή</translation>
+<translation id="7411614333737930931">Επανεκκινήστε τη συσκευή σας και δοκιμάστε ξανά</translation>
 <translation id="741204030948306876">Ναι, συμφωνώ</translation>
 <translation id="7412226954991670867">Μνήμη GPU</translation>
 <translation id="7414464185801331860">18x</translation>
@@ -6976,6 +7006,7 @@
 <translation id="7635048370253485243">Καρφιτσώθηκε από τον διαχειριστή σας</translation>
 <translation id="7636919061354591437">Εγκατάσταση σε αυτήν τη συσκευή</translation>
 <translation id="7637253234491814483">Αγγίξτε τον αισθητήρα δακτυλικών αποτυπωμάτων στην επάνω δεξιά γωνία του πληκτρολογίου, δίπλα στο κουμπί λειτουργίας. Τα δεδομένα δακτυλικών αποτυπωμάτων αποθηκεύονται με ασφάλεια και παραμένουν πάντα στη συσκευή <ph name="DEVICE_TYPE" />.</translation>
+<translation id="7637272932128132922">Ενώ αυτή η καρτέλα ήταν ανενεργή, η Εξοικονόμηση μνήμης αποδέσμευσε μνήμη για άλλες εργασίες. Μπορείτε να αλλάξετε αυτήν τη ρύθμιση ανά πάσα στιγμή στις ρυθμίσεις <ph name="SETTINGS_LINK" />.</translation>
 <translation id="7637593984496473097">Δεν υπάρχει αρκετός χώρος στον δίσκο</translation>
 <translation id="7639914187072011620">Η λήψη του URL ανακατεύθυνσης SAML από τον διακομιστή απέτυχε.</translation>
 <translation id="764017888128728">Το <ph name="PASSWORD_MANAGER_BRAND" /> σάς συνδέει αυτόματα σε κατάλληλους ιστότοπους, χρησιμοποιώντας τους κωδικούς πρόσβασης που έχετε αποθηκεύσει.</translation>
@@ -7092,6 +7123,7 @@
 <translation id="7728668285692163452">Η αλλαγή καναλιού θα εφαρμοστεί αργότερα</translation>
 <translation id="7730449930968088409">Εγγραφή του περιεχομένου της οθόνης σας</translation>
 <translation id="7730683939467795481">Αυτή η σελίδα άλλαξε από την επέκταση "<ph name="EXTENSION_NAME" />"</translation>
+<translation id="7735165285389721951">Εκτελείται άλλη ρύθμιση του Steam. Περιμένετε να ολοκληρωθεί προτού δοκιμάσετε ξανά</translation>
 <translation id="7737115349420013392">Σύζευξη με "<ph name="DEVICE_NAME" />" …</translation>
 <translation id="7737846262459425222">Μπορείτε να αλλάξετε αυτήν τη ρύθμιση ανά πάσα στιγμή στις Ρυθμίσεις &gt; Βοηθός Google &gt; Περιβάλλον οθόνης.</translation>
 <translation id="7737948071472253612">Δεν επιτρέπεται να χρησιμοποιούν την κάμερά σας</translation>
@@ -7390,6 +7422,7 @@
 Αρχείο κλειδιού: <ph name="KEY_FILE" />
 
 Διατηρείτε το αρχείο κλειδιού σε ασφαλές μέρος. Θα το χρειαστείτε για τη δημιουργία νέων εκδόσεων της επέκτασής σας.</translation>
+<translation id="8001100670809322641">Περιμένετε λίγα λεπτά και προσπαθήστε ξανά</translation>
 <translation id="8002274832045662704">Σύνθετη διαμόρφωση εκτυπωτή</translation>
 <translation id="8002670234429879764">Ο εκτυπωτής <ph name="PRINTER_NAME" /> δεν είναι πλέον διαθέσιμος.</translation>
 <translation id="8004092996156083991">Θα σας ειδοποιήσουμε σε περίπτωση παραβίασης των κωδικών πρόσβασής σας.</translation>
@@ -7399,6 +7432,7 @@
 <translation id="8008356846765065031">Η σύνδεση στο διαδίκτυο διακόπηκε. Ελέγξτε τη σύνδεσή σας στο διαδίκτυο.</translation>
 <translation id="8009225694047762179">Διαχείριση Κωδικός πρόσβασης</translation>
 <translation id="8011372169388649948">Ο σελιδοδείκτης <ph name="BOOKMARK_TITLE" /> μετακινήθηκε.</translation>
+<translation id="8011875486979733097">Δεν είναι δυνατή η εγκατάσταση του Steam</translation>
 <translation id="8012647001091218357">Δεν ήταν δυνατή η επικοινωνία με τους γονείς σας αυτήν τη στιγμή. Δοκιμάστε ξανά.</translation>
 <translation id="8013993649590906847">Εάν μια εικόνα δεν έχει κάποια χρήσιμη περιγραφή, το Chrome θα προσπαθήσει να σας προσφέρει μια περιγραφή. Για τη δημιουργία περιγραφών, αποστέλλονται εικόνες στην Google.</translation>
 <translation id="8014154204619229810">Το πρόγραμμα ενημέρωσης εκτελείται. Κάντε ανανέωση σε ένα λεπτό για να ελέγξετε ξανά.</translation>
@@ -7489,6 +7523,7 @@
 <translation id="808894953321890993">Αλλαγή κωδικού πρόσβασης</translation>
 <translation id="8090234456044969073">Ανάγνωση λίστας με τους ιστότοπους που επισκέπτεστε πιο συχνά</translation>
 <translation id="8090513782447872344">Μπορείτε να επιστρέψετε ανά πάσα στιγμή για να ρίξετε ακόμη μία ματιά</translation>
+<translation id="809312780580957751">Δεν ήταν δυνατή η εγκατάσταση του Steam σε αυτήν τη συσκευή</translation>
 <translation id="8093359998839330381">Η προσθήκη <ph name="PLUGIN_NAME" /> δεν ανταποκρίνεται</translation>
 <translation id="8095105960962832018"><ph name="BEGIN_PARAGRAPH1" />Δημιουργία αντιγράφων ασφαλείας στο Google Drive. Επαναφέρετε με ευκολία τα δεδομένα σας ή αλλάξτε συσκευή ανά πάσα στιγμή. Το αντίγραφο ασφαλείας σας περιλαμβάνει δεδομένα εφαρμογών.<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />Τα αντίγραφα ασφαλείας σας μεταφορτώνονται στην Google και κρυπτογραφούνται χρησιμοποιώντας τον κωδικό πρόσβασης του Λογαριασμού σας Google.<ph name="END_PARAGRAPH2" />
@@ -7584,6 +7619,7 @@
 <translation id="8177318697334260664">{NUM_TABS,plural, =1{Μετακίνηση καρτέλας σε νέο παράθυρο}other{Μετακίνηση καρτελών σε νέο παράθυρο}}</translation>
 <translation id="8179188928355984576">Δεν χρησιμοποιείται με εφαρμογές Android</translation>
 <translation id="8179976553408161302">Enter</translation>
+<translation id="8180785270975217276">Η Εξοικονόμηση ενέργειας ενεργοποιήθηκε</translation>
 <translation id="8180786512391440389">Η επέκταση "<ph name="EXTENSION" />" μπορεί να διαβάσει και να εγγράψει εικόνες, βίντεο και αρχεία ήχου σε επιλεγμένες τοποθεσίες.</translation>
 <translation id="8181215761849004992">Δεν είναι δυνατή η σύνδεση στον τομέα. Ελέγξτε τον λογαριασμό σας, για να δείτε εάν έχετε επαρκή προνόμια για την προσθήκη συσκευών.</translation>
 <translation id="8182105986296479640">Η εφαρμογή δεν αποκρίνεται.</translation>
@@ -7706,6 +7742,7 @@
 <translation id="828642162569365647">Αυτός ο κωδικός πρόσβασης ή το PIN προστατεύει τα δεδομένα σας στη συσκευή <ph name="DEVICE_TYPE" /> και τυχόν πληροφορίες στις οποίες έχετε πρόσβαση από το τηλέφωνό σας. Θα πρέπει να ξεκλειδώνετε τη συσκευή <ph name="DEVICE_TYPE" /> σε κάθε αφύπνιση από κατάσταση αδράνειας.</translation>
 <translation id="8287902281644548111">Αναζήτηση κατά κλήση API/URL</translation>
 <translation id="8288032458496410887">Απεγκατάσταση εφαρμογής <ph name="APP" />…</translation>
+<translation id="8288539437195337464">Βεβαιωθείτε ότι η συσκευή σας είναι ενημερωμένη και δοκιμάστε ξανά</translation>
 <translation id="8289128870594824098">Μέγεθος δίσκου</translation>
 <translation id="8289509909262565712">Καλώς ήρθατε στο <ph name="DEVICE_OS" /></translation>
 <translation id="8293206222192510085">Προσθήκη σελιδοδείκτη</translation>
@@ -8000,6 +8037,7 @@
 <translation id="8599864823732014237">Παράβλεψη εγγραφής επιχείρησης;</translation>
 <translation id="8601206103050338563">Έλεγχος ταυτότητας πελάτη TLS WWW</translation>
 <translation id="8601611099293226919">Αναζήτηση στην οθόνη σας με το Google Lens</translation>
+<translation id="8602674530529411098">Εφαρμογές (Beta)</translation>
 <translation id="8602851771975208551">Κάποιο άλλο πρόγραμμα στον υπολογιστή σας πρόσθεσε μια εφαρμογή, η οποία ενδέχεται να αλλάξει τον τρόπο λειτουργίας του Chrome.</translation>
 <translation id="8605428685123651449">Μνήμη SQLite</translation>
 <translation id="8608618451198398104">Προσθήκη εισιτηρίου Kerberos</translation>
@@ -8682,6 +8720,7 @@
 <translation id="939598580284253335">Εισαγωγή φράσης πρόσβασης</translation>
 <translation id="939736085109172342">Νέος φάκελος</translation>
 <translation id="942532530371314860">Η εφαρμογή <ph name="APP_NAME" /> μοιράζεται μια καρτέλα Chrome και ήχο.</translation>
+<translation id="944799160843436808">Παρουσιάστηκε πρόβλημα κατά τη ρύθμιση του Steam στο Chromebook</translation>
 <translation id="945522503751344254">Αποστολή σχολίων</translation>
 <translation id="947329552760389097">&amp;Inspect Elements</translation>
 <translation id="947526284350604411">Η απάντησή σας</translation>
@@ -8706,6 +8745,7 @@
 <translation id="968000525894980488">Ενεργοποίηση των Υπηρεσιών Google Play.</translation>
 <translation id="968037381421390582">Επικόλληση και αναζήτηση για "<ph name="SEARCH_TERMS" />"</translation>
 <translation id="969096075394517431">Αλλαγή γλωσσών</translation>
+<translation id="969574218206797926">Η Εξοικονόμηση μνήμης αποδεσμεύει μνήμη από τις ανενεργές καρτέλες, ώστε να μπορεί να χρησιμοποιηθεί από ενεργές καρτέλες και άλλες εφαρμογές</translation>
 <translation id="970047733946999531">{NUM_TABS,plural, =1{1 καρτέλα}other{# καρτέλες}}</translation>
 <translation id="971510864672937292">Διαγραφή δεδομένων ιστοτόπου και δικαιωμάτων για τον ιστότοπο <ph name="SITE_NAME" /> και όλους τους ιστοτόπους που περιλαμβάνονται σε αυτόν;</translation>
 <translation id="971774202801778802">URL σελιδοδείκτη</translation>
diff --git a/chrome/app/resources/generated_resources_en-GB.xtb b/chrome/app/resources/generated_resources_en-GB.xtb
index 7f3a647..8fe3f782 100644
--- a/chrome/app/resources/generated_resources_en-GB.xtb
+++ b/chrome/app/resources/generated_resources_en-GB.xtb
@@ -71,6 +71,7 @@
 <translation id="1067048845568873861">Created</translation>
 <translation id="1067661089446014701">For added safety, you can encrypt passwords on your device before they're saved to your Google Account</translation>
 <translation id="1067922213147265141">Other Google services</translation>
+<translation id="1069104208554708737">This passkey will only be saved on this device</translation>
 <translation id="1069355737714877171">Remove eSIM profile named <ph name="PROFILE_NAME" /></translation>
 <translation id="1069814191880976658">Choose a different screen</translation>
 <translation id="1070377999570795893">Another program on your computer added an extension that may change the way Chrome works.
@@ -349,6 +350,7 @@
 <translation id="1324106254079708331">Safeguards the personal Google Accounts of anyone at risk of targeted attacks</translation>
 <translation id="1327272175893960498">Kerberos tickets</translation>
 <translation id="1327495825214193325">To enable ADB debugging, a restart of this <ph name="DEVICE_TYPE" /> is required. Disabling it requires a reset to factory settings.</translation>
+<translation id="1327527584824210101">Use your passkey</translation>
 <translation id="1327794256477341646">Features that need your location won't work</translation>
 <translation id="1331977651797684645">This was me.</translation>
 <translation id="1333489022424033687">Some features on <ph name="ORIGIN" /> might not work until you clear data that other sites have stored on your device</translation>
@@ -409,6 +411,7 @@
 <translation id="139013308650923562">Allowed to use fonts installed on your device</translation>
 <translation id="1390548061267426325">Open as a Standard Tab</translation>
 <translation id="1390907927270446471"><ph name="PROFILE_USERNAME" /> is not authorised to print to <ph name="PRINTER_NAME" />. Please contact your administrator.</translation>
+<translation id="1392047138650695757">User dictionaries</translation>
 <translation id="1393283411312835250">Sun and clouds</translation>
 <translation id="1395730723686586365">Updater started</translation>
 <translation id="1395832189806039783">Highlight item with keyboard focus</translation>
@@ -1532,6 +1535,7 @@
 <translation id="2356070529366658676">Ask</translation>
 <translation id="2357330829548294574">Remove <ph name="USER_NAME" /></translation>
 <translation id="2358561147588818967">Sites can use Javascript</translation>
+<translation id="2358703245148663432">A different device</translation>
 <translation id="2358777858338503863">Click to allow on <ph name="ORIGIN" />:</translation>
 <translation id="2359071692152028734">Linux apps may become unresponsive.</translation>
 <translation id="2359345697448000899">Manage your extensions by clicking Extensions in the Tools menu.</translation>
@@ -1891,6 +1895,7 @@
 <translation id="271033894570825754">New</translation>
 <translation id="2711073837061989559">Trials</translation>
 <translation id="2712173769900027643">Ask permission</translation>
+<translation id="2712207122921938368">Create a passkey on another device</translation>
 <translation id="2713106313042589954">Turn off camera</translation>
 <translation id="2713444072780614174">White</translation>
 <translation id="2714393097308983682">Google Play Store</translation>
@@ -2404,6 +2409,7 @@
 <translation id="3182749001423093222">Spell check</translation>
 <translation id="3183139917765991655">Profile Importer</translation>
 <translation id="3183143381919926261">Mobile data networks</translation>
+<translation id="3183613134231754987">This passkey will be saved only in Windows Hello. It will remain on this device after you close all incognito windows.</translation>
 <translation id="3183944777708523606">Monitor arrangement</translation>
 <translation id="3184536091884214176">Set up or manage CUPS printers. <ph name="LINK_BEGIN" />Learn more<ph name="LINK_END" /></translation>
 <translation id="3185014249447200271">{NUM_APPS,plural, =1{This app is blocked}other{Some apps are blocked}}</translation>
@@ -2885,6 +2891,7 @@
 <translation id="3654045516529121250">Read your accessibility settings</translation>
 <translation id="3655712721956801464">{NUM_FILES,plural, =1{It has permanent access to one file.}other{It has permanent access to # files.}}</translation>
 <translation id="3658871634334445293">TrackPoint acceleration</translation>
+<translation id="3659550105763988702">Use your passkey for <ph name="APP_NAME" /></translation>
 <translation id="3659929705630080526">You have entered an incorrect access code too many times. Try again later</translation>
 <translation id="3660234220361471169">Untrusted</translation>
 <translation id="3664511988987167893">Extension Icon</translation>
@@ -3154,6 +3161,7 @@
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> wants to: <ph name="FIRST_PERMISSION" /> and <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Select keyboard</translation>
 <translation id="3900966090527141178">Export passwords</translation>
+<translation id="3902789559055749153">Choose how you want to create a passkey for <ph name="APP_NAME" /></translation>
 <translation id="3903187154317825986">Built-in keyboard</translation>
 <translation id="3904326018476041253">Location Services</translation>
 <translation id="3904849010307028014">Based on your interaction with a site, like regularly signing in to an account, that site can issue a trust token to your browser. Later, if other sites that you visit check for and find a valid trust token, they're more likely to treat you like a person and not a bot.</translation>
@@ -3485,6 +3493,7 @@
 <translation id="4218081191298393750">Click the speaker icon to mute this tab</translation>
 <translation id="4219558185499589032">Box</translation>
 <translation id="4220648711404560261">An error occurred during activation.</translation>
+<translation id="4223845867739585293">Create a passkey</translation>
 <translation id="4225397296022057997">On all sites</translation>
 <translation id="4228209296591583948">{NUM_EXTENSIONS,plural, =1{This extension is not allowed}other{Some extensions are not allowed}}</translation>
 <translation id="4231095370974836764">Install apps and games from Google Play on your <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Learn more<ph name="LINK_END" /></translation>
@@ -4129,6 +4138,7 @@
 <translation id="4838907349371614303">Password updated</translation>
 <translation id="4838958829619609362">Selection is not in <ph name="LANGUAGE" /></translation>
 <translation id="4839303808932127586">Sa&amp;ve video as...</translation>
+<translation id="4839910546484524995">Check your device</translation>
 <translation id="4840096453115567876">Exit Incognito mode anyway?</translation>
 <translation id="4841741146571978176">A required virtual machine does not exist. Please try setting up <ph name="VM_TYPE" /> to continue</translation>
 <translation id="4842976633412754305">This page is trying to load scripts from unauthenticated sources.</translation>
@@ -5040,6 +5050,7 @@
 <translation id="5729712731028706266">&amp;View</translation>
 <translation id="5731247495086897348">Pa&amp;ste and Go</translation>
 <translation id="5732392974455271431">Your parents can unblock it for you</translation>
+<translation id="5733109311583381874">Add your own words to the user dictionaries in order to customise the conversion candidates.</translation>
 <translation id="5733866499231170760">Invalid ID. The format that you entered is incorrect. Please check the instructions to ensure that you are entering the ID in the correct format. If you’re unable to resolve this issue, please leave the field blank and continue with installation.</translation>
 <translation id="5734362860645681824">Communications</translation>
 <translation id="5734697361979786483">Add file share</translation>
@@ -5148,6 +5159,7 @@
 <translation id="583431638776747">Site wasn’t available</translation>
 <translation id="5834581999798853053">About <ph name="TIME" /> minutes left</translation>
 <translation id="5835486486592033703"><ph name="WINDOW_TITLE" /> – Camera or microphone recording</translation>
+<translation id="5835625581856809102">Scan this QR code with the device where you want to create a passkey for <ph name="APP_NAME" /></translation>
 <translation id="583673505367439042">Sites can ask to edit files and folders on your device</translation>
 <translation id="5836999627049108525">Language to translate from</translation>
 <translation id="583756221537636748">Case</translation>
@@ -5390,6 +5402,7 @@
 <translation id="6059276912018042191">Recent Chrome tabs</translation>
 <translation id="6059652578941944813">Certificate Hierarchy</translation>
 <translation id="6059925163896151826">USB devices</translation>
+<translation id="6061408389284235459">A notification was sent to <ph name="DEVICE_NAME" /></translation>
 <translation id="6063284707309177505">Create QR code</translation>
 <translation id="6063847492705284550"><ph name="BEGIN_BOLD" />Note:<ph name="END_BOLD" /> A similar voice or recording might be able to access <ph name="SUPERVISED_USER_NAME" />’s personal results. To save battery, you can select in <ph name="SUPERVISED_USER_NAME" />’s Assistant settings to have ‘Hey Google’ on only when this device is connected to a power source.</translation>
 <translation id="6064217302520318294">Screen lock</translation>
@@ -5516,6 +5529,7 @@
 <translation id="6178664161104547336">Select a certificate</translation>
 <translation id="6178682841350631965">Your sign-in data was updated</translation>
 <translation id="6180510783007738939">Line tool</translation>
+<translation id="6180550893222597997">Which passkey do you want to use for <ph name="APP_NAME" />?</translation>
 <translation id="6181431612547969857">Download blocked</translation>
 <translation id="6184099524311454384">Search tabs</translation>
 <translation id="6185132558746749656">Device Location</translation>
@@ -5952,6 +5966,7 @@
 <translation id="6596816719288285829">IP Address</translation>
 <translation id="6597017209724497268">Samples</translation>
 <translation id="6597331566371766302">The following extensions were blocked by your administrator:</translation>
+<translation id="6601262427770154296">Manage user dictionaries</translation>
 <translation id="6601612474695404578">Some sites use third-party cookies to load their pages. If a site isn't working, you can try allowing cookies.</translation>
 <translation id="6602937173026466876">Access your printers</translation>
 <translation id="6602956230557165253">Use left and right arrow keys to navigate.</translation>
@@ -6313,6 +6328,7 @@
 <translation id="6943060957016121200">Enable Instant Tethering</translation>
 <translation id="6943176775188458830">Cancel printing</translation>
 <translation id="6943939122536910181">Disconnected from <ph name="DEVICE" /></translation>
+<translation id="6944708469742828051">This passkey will only be saved in Windows Hello</translation>
 <translation id="6945221475159498467">Select</translation>
 <translation id="694592694773692225">Redirect blocked on this page.</translation>
 <translation id="6947015141909171112">You’re seeing recipes based on your recent search activity for recipes.
@@ -6565,6 +6581,7 @@
 <translation id="7193051357671784796">This app was added by your organisation. Restart the app to finish installing it.</translation>
 <translation id="7193374945610105795">No passwords saved for <ph name="ORIGIN" /></translation>
 <translation id="7194873994243265344">Your organisation has blocked this file because it is encrypted. Ask its owner to decrypt it.</translation>
+<translation id="7196272782924897510">Use a passkey from another device?</translation>
 <translation id="7196913789568937443">Back up to Google Drive. Easily restore your data or switch device at any time. Your backup includes app data. Your backups are uploaded to Google and encrypted using your Google Account password. <ph name="BEGIN_LINK1" />Learn More<ph name="END_LINK1" /></translation>
 <translation id="7197190419934240522">Get Google Search and Google smarts every time that you browse</translation>
 <translation id="719791532916917144">Keyboard shortcut</translation>
@@ -7066,6 +7083,7 @@
 <translation id="7670483791111801022">Subtitles</translation>
 <translation id="7671130400130574146">Use system title bar and borders</translation>
 <translation id="767127784612208024">Touch to confirm reset</translation>
+<translation id="7672504401554182757">Choose which device has the passkey for <ph name="APP_NAME" /></translation>
 <translation id="7672520070349703697"><ph name="HUNG_IFRAME_URL" />, in <ph name="PAGE_TITLE" />.</translation>
 <translation id="7674416868315480713">Deactivate all ports being forwarded in Linux</translation>
 <translation id="7674537509496907005"><ph name="APP_COUNT" /> apps</translation>
@@ -7175,6 +7193,7 @@
 <translation id="7766807826975222231">Take a tour</translation>
 <translation id="7766838926148951335">Accept permissions</translation>
 <translation id="7767554953520855281">Details are hidden while you share your screen</translation>
+<translation id="7767972280546034736">Create a passkey for <ph name="APP_NAME" /></translation>
 <translation id="7768507955883790804">Sites automatically follow this setting when you visit them</translation>
 <translation id="7768526219335215384"><ph name="ORIGIN" /> will be able to view files in <ph name="FOLDERNAME" /></translation>
 <translation id="7768770796815395237">Change</translation>
@@ -7660,6 +7679,7 @@
 <translation id="820568752112382238">Most-visited sites</translation>
 <translation id="8206745257863499010">Bluesy</translation>
 <translation id="8206859287963243715">Mobile</translation>
+<translation id="8207404892907560325">Choose a passkey</translation>
 <translation id="8208216423136871611">Don't save</translation>
 <translation id="8210398899759134986">{MUTED_NOTIFICATIONS_COUNT,plural, =1{New notification}other{# new notifications}}</translation>
 <translation id="821119981794423735">To import passwords to Google Password Manager for <ph name="USER_EMAIL" />, select a CSV file</translation>
@@ -7833,6 +7853,7 @@
 <translation id="8376137163494131156">Tell us what's happening with Google Cast.</translation>
 <translation id="8376384591331888629">Including third-party cookies on this site</translation>
 <translation id="8376451933628734023">If this web app is trying to trick you into thinking it's a different app, uninstall it.</translation>
+<translation id="8377625247046155446">This passkey will only be saved on this device. It will remain on this device after you close all incognito windows.</translation>
 <translation id="8378714024927312812">Managed by your organisation</translation>
 <translation id="8379156816349755485">Upon signing in, a unique authentication token will be stored and used for all future eligible downloads.</translation>
 <translation id="8379878387931047019">This device doesn't support the type of security key requested by this website</translation>
@@ -8656,6 +8677,7 @@
       <ph name="LIST_ITEM" />Running Chrome Connectivity Diagnostics
     <ph name="END_LIST" /></translation>
 <translation id="916607977885256133">Picture in Picture</translation>
+<translation id="9166253503936244008">Scan this QR code with the device that has the passkey that you want to use for <ph name="APP_NAME" /></translation>
 <translation id="9167063903968449027">Show Reading List</translation>
 <translation id="9167450455589251456">The profile is not supported</translation>
 <translation id="9168436347345867845">Do it later</translation>
diff --git a/chrome/app/resources/generated_resources_es-419.xtb b/chrome/app/resources/generated_resources_es-419.xtb
index ce39a28..07c7c58e 100644
--- a/chrome/app/resources/generated_resources_es-419.xtb
+++ b/chrome/app/resources/generated_resources_es-419.xtb
@@ -8241,6 +8241,7 @@
 <translation id="8838601485495657486">Opaco</translation>
 <translation id="8838770651474809439">Hamburguesa</translation>
 <translation id="8838778928843281408">Administrar teléfonos</translation>
+<translation id="883924185304953854">Búsqueda por imagen</translation>
 <translation id="8841843049738266382">Leer y cambiar la lista de usuarios permitidos</translation>
 <translation id="8842594465773264717">Borrar esta huella dactilar</translation>
 <translation id="8845001906332463065">Obtener ayuda</translation>
diff --git a/chrome/app/resources/generated_resources_es.xtb b/chrome/app/resources/generated_resources_es.xtb
index 9460b3a..3c70172e 100644
--- a/chrome/app/resources/generated_resources_es.xtb
+++ b/chrome/app/resources/generated_resources_es.xtb
@@ -227,7 +227,7 @@
 <translation id="120069043972472860">Pésima</translation>
 <translation id="1201402288615127009">Siguiente</translation>
 <translation id="1201564082781748151">Los datos locales se pueden restaurar si olvidas tu contraseña</translation>
-<translation id="1202116106683864634">¿Seguro que quieres eliminar esta clave de acceso?</translation>
+<translation id="1202116106683864634">¿Seguro que quieres eliminar esta llave de acceso?</translation>
 <translation id="1202596434010270079">La aplicación de kiosco se ha actualizado. Extrae el dispositivo USB.</translation>
 <translation id="120368089816228251">Nota musical</translation>
 <translation id="1203942045716040624">SharedWorker: <ph name="SCRIPT_URL" /></translation>
@@ -701,7 +701,7 @@
 <translation id="1643072738649235303">Firma X9.62 ECDSA con SHA-1</translation>
 <translation id="1643921258693943800">Para usar Compartir con Nearby, activa el Bluetooth y el Wi‑Fi</translation>
 <translation id="1644574205037202324">Historial</translation>
-<translation id="1644852018355792105">Introduce la clave de acceso para el Bluetooth del dispositivo <ph name="DEVICE" /></translation>
+<translation id="1644852018355792105">Introduce la llave de acceso para el Bluetooth del dispositivo <ph name="DEVICE" /></translation>
 <translation id="1645004815457365098">Origen desconocido</translation>
 <translation id="1645516838734033527">Para mantener tu <ph name="DEVICE_TYPE" /> protegido, Smart Lock necesita que el teléfono tenga configurado el bloqueo de pantalla.</translation>
 <translation id="1646982517418478057">Introduce una contraseña para cifrar este certificado</translation>
@@ -770,7 +770,7 @@
 <translation id="1709106626015023981"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (resolución nativa)</translation>
 <translation id="1709217939274742847">Selecciona el ticket que vas a usar para autenticarte. <ph name="LINK_BEGIN" />Más información<ph name="LINK_END" /></translation>
 <translation id="1709762881904163296">Configuración de red</translation>
-<translation id="1709916727352927457">Eliminar clave de acceso</translation>
+<translation id="1709916727352927457">Eliminar llave de acceso</translation>
 <translation id="1709972045049031556">No se puede compartir</translation>
 <translation id="1711935594505774770">Esta acción borrará todos los datos y las cookies guardados por <ph name="SITE_GROUP_NAME" />, por los sitios que contenga y por sus aplicaciones instaladas</translation>
 <translation id="1714644264617423774">Permite habilitar las funciones de accesibilidad para facilitar el uso de tu dispositivo. <ph name="LINK_BEGIN" />Más información<ph name="LINK_END" /></translation>
@@ -1981,7 +1981,7 @@
 <translation id="2801954693771979815">Tamaño de la pantalla</translation>
 <translation id="2802557211515765772">No hay impresoras gestionadas.</translation>
 <translation id="2803313416453193357">Abrir carpeta</translation>
-<translation id="2803719750464280163">Confirma que <ph name="PASSKEY" /> es la clave de acceso que se muestra en el dispositivo Bluetooth <ph name="DEVICE" />.</translation>
+<translation id="2803719750464280163">Confirma que <ph name="PASSKEY" /> es la llave de acceso que se muestra en el dispositivo Bluetooth <ph name="DEVICE" />.</translation>
 <translation id="2804043232879091219">No se ha podido abrir el navegador alternativo</translation>
 <translation id="2804667941345577550">Se cerrará tu sesión en este sitio web (también en las pestañas abiertas)</translation>
 <translation id="2804680522274557040">Cámara desactivada</translation>
@@ -2035,7 +2035,7 @@
 <translation id="284805635805850872">¿Eliminar software dañino?</translation>
 <translation id="2849035674501872372">Buscar</translation>
 <translation id="284970761985428403"><ph name="ASCII_NAME" /> (<ph name="UNICODE_NAME" />)</translation>
-<translation id="284975061945174219">No se ha podido eliminar software malicioso</translation>
+<translation id="284975061945174219">No se ha podido eliminar malware</translation>
 <translation id="2849767214114481738">Tu PIN se ha añadido</translation>
 <translation id="2849936225196189499">Crítica</translation>
 <translation id="2850541429955027218">Añadir tema</translation>
@@ -2178,7 +2178,7 @@
 <translation id="2977480621796371840">Quitar del grupo</translation>
 <translation id="2979639724566107830">Abrir en una ventana nueva</translation>
 <translation id="2981113813906970160">Mostrar cursor del ratón grande</translation>
-<translation id="2981293774053328982">Este archivo contiene software malicioso que puede poner en riesgo tus cuentas personales o de redes sociales</translation>
+<translation id="2981293774053328982">Este archivo contiene malware que puede poner en riesgo tus cuentas personales o de redes sociales</translation>
 <translation id="2983373101216420412">Nivel de batería de la funda: <ph name="PERCENTAGE" /> %.</translation>
 <translation id="2985348301114641460">¿Quieres enviar una solicitud a tu administrador para instalar "<ph name="EXTENSION_NAME" />"?</translation>
 <translation id="2987620471460279764">Texto compartido desde otro dispositivo</translation>
@@ -2510,7 +2510,7 @@
 <translation id="3323577066981719144">Los cambios que hagas aquí se aplican solo al navegador Chrome. Para hacer cambios en tu configuración del navegador Lacros, abre el navegador Lacros y ve a los ajustes.</translation>
 <translation id="3325804108816646710">Buscando perfiles disponibles...</translation>
 <translation id="3325910708063135066">La cámara y el micrófono están desactivados en las Preferencias del Sistema de Mac</translation>
-<translation id="3327050066667856415">Los Chromebooks se han diseñado pensando en la seguridad. Tu dispositivo está protegido automáticamente contra el software malicioso. No necesita software adicional.</translation>
+<translation id="3327050066667856415">Los Chromebooks se han diseñado pensando en la seguridad. Tu dispositivo está protegido automáticamente contra el malware. No necesita software adicional.</translation>
 <translation id="3328489342742826322">Al restaurar una copia de seguridad, se eliminarán las aplicaciones y los datos actuales de Linux de la carpeta Archivos de Linux.</translation>
 <translation id="3329013043687509092">Saturación</translation>
 <translation id="3331321258768829690">(<ph name="UTCOFFSET" />) <ph name="LONGTZNAME" /> (<ph name="EXEMPLARCITY" />)</translation>
@@ -3664,7 +3664,7 @@
 <translation id="4423376891418188461">Restaurar configuración</translation>
 <translation id="442397852638519243"><ph name="USER_NAME" />, tu administrador solicita que cambies la contraseña.</translation>
 <translation id="4426464032773610160">Para empezar, comprueba que tu interruptor USB o Bluetooth esté conectado a tu Chromebook. También puedes usar teclas del teclado.</translation>
-<translation id="4427306783828095590">La protección mejorada es más eficaz para bloquear ataques de suplantación de identidad y software malicioso.</translation>
+<translation id="4427306783828095590">La protección mejorada es más eficaz para bloquear ataques de suplantación de identidad y malware.</translation>
 <translation id="4427365070557649936">Verificando el código de confirmación...</translation>
 <translation id="4429163740524851942">Diseño de teclado físico</translation>
 <translation id="4430019312045809116">Volumen</translation>
@@ -4071,7 +4071,7 @@
 <translation id="4823484602432206655">Leer y cambiar la configuración del dispositivo y del usuario</translation>
 <translation id="4824037980212326045">Copia de seguridad y restauración de Linux</translation>
 <translation id="4824958205181053313">¿Quieres cancelar la sincronización?</translation>
-<translation id="4825532258163983651">No se puede eliminar la clave de acceso</translation>
+<translation id="4825532258163983651">No se puede eliminar la llave de acceso</translation>
 <translation id="4827675678516992122">No se ha podido conectar</translation>
 <translation id="4827784381479890589">Revisión ortográfica mejorada en el navegador Chrome (el texto se envía a Google para que muestre sugerencias ortográficas)</translation>
 <translation id="4827904420700932487">Crear código QR para esta imagen</translation>
@@ -4140,7 +4140,7 @@
 <translation id="4878718769565915065">No se ha podido añadir una huella digital a esta llave de seguridad</translation>
 <translation id="4879491255372875719">Automático (predeterminado)</translation>
 <translation id="4880827082731008257">Buscar en el historial</translation>
-<translation id="4881062916686771679">Este archivo contiene software malicioso que puede poner en riesgo tus cuentas personales o de redes sociales, como <ph name="USER_EMAIL" /></translation>
+<translation id="4881062916686771679">Este archivo contiene malware que puede poner en riesgo tus cuentas personales o de redes sociales, como <ph name="USER_EMAIL" /></translation>
 <translation id="4881685975363383806">No me lo recuerdes la próxima vez</translation>
 <translation id="4881695831933465202">Abrir</translation>
 <translation id="488211015466188466">Seguir sitio</translation>
@@ -4243,7 +4243,7 @@
 <translation id="4975543297921324897">Fuente monoespaciada</translation>
 <translation id="4977882548591990850"><ph name="CHARACTER_COUNT" />/<ph name="CHARACTER_LIMIT" /></translation>
 <translation id="4977942889532008999">Confirmar acceso</translation>
-<translation id="4980805016576257426">Esta extensión contiene software malicioso.</translation>
+<translation id="4980805016576257426">Esta extensión contiene malware.</translation>
 <translation id="4981449534399733132">Para borrar los datos de navegación de todos los dispositivos sincronizados y de tu cuenta de Google, <ph name="BEGIN_LINK" />inicia sesión<ph name="END_LINK" />.</translation>
 <translation id="4982236238228587209">Software del dispositivo</translation>
 <translation id="4986728572522335985">Esta acción borrará todos los datos de la llave de seguridad, incluido el PIN</translation>
@@ -4499,7 +4499,7 @@
 <translation id="5252653240322147470">El PIN debe tener menos de <ph name="MAXIMUM" /> dígitos</translation>
 <translation id="5254368820972107711">Mostrar archivos que se van a eliminar</translation>
 <translation id="52550593576409946">La aplicación de kiosco no se ha podido iniciar.</translation>
-<translation id="5255726914791076208">Si editas tu clave de acceso, tu cuenta de <ph name="RP_ID" /> no cambiará</translation>
+<translation id="5255726914791076208">Si editas tu llave de acceso, tu cuenta de <ph name="RP_ID" /> no cambiará</translation>
 <translation id="5255859108402770436">Vuelve a iniciar sesión</translation>
 <translation id="52566111838498928">Cargando fuentes...</translation>
 <translation id="5256861893479663409">En todos los sitios</translation>
@@ -4933,7 +4933,7 @@
 <translation id="5659593005791499971">Correo</translation>
 <translation id="5662513737565158057">Cambia el funcionamiento de las aplicaciones de Linux.</translation>
 <translation id="5663459693447872156">Cambiar automáticamente a ancho medio</translation>
-<translation id="5667293444945855280">Software malicioso</translation>
+<translation id="5667293444945855280">Malware</translation>
 <translation id="5667546120811588575">Configurando Google Play...</translation>
 <translation id="5668351004957198136">Error</translation>
 <translation id="56702779821643359">Comparte archivos con personas que estén cerca de ti. <ph name="LINK_BEGIN" />Más información<ph name="LINK_END" /></translation>
@@ -5000,7 +5000,7 @@
 <translation id="5734362860645681824">Comunicaciones</translation>
 <translation id="5734697361979786483">Añadir sistema de archivos compartidos</translation>
 <translation id="5736796278325406685">Introduce un nombre de usuario válido</translation>
-<translation id="5738093759615225354">Necesitas esta clave de acceso para iniciar sesión en tu ordenador</translation>
+<translation id="5738093759615225354">Necesitas esta llave de acceso para iniciar sesión en tu ordenador</translation>
 <translation id="5739017626473506901">Inicia sesión para ayudar a <ph name="USER_NAME" /> a añadir una cuenta de centro educativo</translation>
 <translation id="5739235828260127894">Esperando verificación. <ph name="LINK_BEGIN" />Más información<ph name="LINK_END" />.</translation>
 <translation id="5739458112391494395">Muy grande</translation>
@@ -5697,7 +5697,7 @@
 <translation id="6408118934673775994">Leer y modificar tus datos en <ph name="WEBSITE_1" />, <ph name="WEBSITE_2" /> y <ph name="WEBSITE_3" /></translation>
 <translation id="6410257289063177456">Archivos de imagen</translation>
 <translation id="6410328738210026208">Cambiar canal y Powerwash</translation>
-<translation id="6410390304316730527">La función Navegación segura te protege frente a atacantes que pueden intentar engañarte para que realices alguna acción peligrosa, como instalar software malicioso o revelar información personal, incluidas contraseñas, números de teléfono o tarjetas de crédito. Si desactivas esta función, debes tener cuidado al navegar por sitios desconocidos o que no sean de confianza.</translation>
+<translation id="6410390304316730527">La función Navegación segura te protege frente a atacantes que pueden intentar engañarte para que realices alguna acción peligrosa, como instalar malware o revelar información personal, incluidas contraseñas, números de teléfono o tarjetas de crédito. Si desactivas esta función, debes tener cuidado al navegar por sitios desconocidos o que no sean de confianza.</translation>
 <translation id="6410668567036790476">Añadir motor de búsqueda</translation>
 <translation id="641469293210305670">Instalar actualizaciones y aplicaciones</translation>
 <translation id="6414878884710400018">Abrir Preferencias del Sistema</translation>
@@ -6053,7 +6053,7 @@
 <translation id="6748980958975836188">He leído y acepto los <ph name="BEGIN_LINK1" />Términos del Servicio de Google<ph name="END_LINK1" /> y los <ph name="BEGIN_LINK2" />Términos del Servicio Adicionales de Chrome y Chrome OS<ph name="END_LINK2" />.</translation>
 <translation id="6750757184909117990">Inhabilitar red móvil</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (incógnito)</translation>
-<translation id="6756157672127672536">La aplicación Archivos permite acceder rápidamente a los archivos que has guardado en Google Drive, en una memoria externa o en tu dispositivo ChromeOS.</translation>
+<translation id="6756157672127672536">La aplicación Archivos permite acceder rápidamente a los archivos que has guardado en Google Drive, en un almacenamiento interno o en tu dispositivo ChromeOS.</translation>
 <translation id="6756643207511618722">Motores de voz</translation>
 <translation id="6758056191028427665">Envíanos tu opinión sobre nuestro servicio.</translation>
 <translation id="6759193508432371551">Restablecer estado de fábrica</translation>
@@ -8124,7 +8124,7 @@
 <translation id="8724859055372736596">&amp;Mostrar en carpeta</translation>
 <translation id="8725066075913043281">Reintentar</translation>
 <translation id="8725178340343806893">Favoritos/Marcadores</translation>
-<translation id="87254326763805752">Confirma la clave de acceso</translation>
+<translation id="87254326763805752">Confirma la llave de acceso</translation>
 <translation id="8726206820263995930">Error al recuperar la configuración de política del servidor (<ph name="CLIENT_ERROR" />)</translation>
 <translation id="8728351286589123703">Se restablecerán los permisos que hayas elegido</translation>
 <translation id="8729133765463465108">Usar cámara para escanear código QR</translation>
@@ -8156,7 +8156,7 @@
 <translation id="8751419011949619279">Abrir sitios web en aplicaciones instaladas en tu dispositivo</translation>
 <translation id="8752451679755290210">Pasa de un elemento a otro de forma automática</translation>
 <translation id="8753868764580670305">Consulta y gestiona las contraseñas guardadas en este dispositivo</translation>
-<translation id="8753948258138515839">La aplicación Archivos permite acceder rápidamente a los archivos que has guardado en Google Drive, en una memoria externa o en tu dispositivo ChromeOS Flex.</translation>
+<translation id="8753948258138515839">La aplicación Archivos permite acceder rápidamente a los archivos que has guardado en Google Drive, en un almacenamiento interno o en tu dispositivo ChromeOS Flex.</translation>
 <translation id="8754200782896249056">&lt;p&gt;Al ejecutar <ph name="PRODUCT_NAME" /> en un entorno de escritorio compatible, se utilizará la configuración de proxy del sistema. Sin embargo, tu sistema no es compatible o ha habido algún problema al iniciar la configuración del sistema.&lt;/p&gt;
 
           &lt;p&gt;Aún puedes configurar el sistema mediante la línea de comandos. Para obtener más información sobre los indicadores y sobre las variables del entorno, consulta &lt;code&gt;man <ph name="PRODUCT_BINARY_NAME" />&lt;/code&gt;.&lt;/p&gt;</translation>
@@ -8465,7 +8465,7 @@
 <translation id="9041692268811217999">Tu administrador ha inhabilitado el acceso a los archivos locales de tu equipo</translation>
 <translation id="904224458472510106">Esta operación no se puede deshacer</translation>
 <translation id="9042893549633094279">Privacidad y seguridad</translation>
-<translation id="904451693890288097">Introduce la clave de acceso de "<ph name="DEVICE_NAME" />":</translation>
+<translation id="904451693890288097">Introduce la llave de acceso de "<ph name="DEVICE_NAME" />":</translation>
 <translation id="9044646465488564462">Error al establecer conexión con la red: <ph name="DETAILS" /></translation>
 <translation id="9045160989383249058">Tu lista de lectura se ha movido al nuevo panel lateral. Pruébala.</translation>
 <translation id="9045430190527754450">Envía la dirección web de la página a la que intentas acceder a Google</translation>
@@ -8511,7 +8511,7 @@
 <translation id="9087949559523851360">Añadir usuario restringido</translation>
 <translation id="9088234649737575428">Una política de empresa ha bloqueado el complemento <ph name="PLUGIN_NAME" /></translation>
 <translation id="9088446193279799727">No se ha podido configurar Linux. Conéctate a Internet y vuelve a intentarlo.</translation>
-<translation id="9088917181875854783">Confirma que esta clave de acceso aparezca en "<ph name="DEVICE_NAME" />":</translation>
+<translation id="9088917181875854783">Confirma que esta llave de acceso aparezca en "<ph name="DEVICE_NAME" />":</translation>
 <translation id="9089416786594320554">Métodos de entrada</translation>
 <translation id="9090044809052745245">Cómo ven los demás tu dispositivo</translation>
 <translation id="9093470422440389061">Métricas de rendimiento de la red Wi‑Fi</translation>
diff --git a/chrome/app/resources/generated_resources_et.xtb b/chrome/app/resources/generated_resources_et.xtb
index f92e3df1..5119c83 100644
--- a/chrome/app/resources/generated_resources_et.xtb
+++ b/chrome/app/resources/generated_resources_et.xtb
@@ -1125,6 +1125,7 @@
 <translation id="2034346955588403444">Muu WiFi-võrgu lisamine</translation>
 <translation id="2035211704574173780">Hallskaala</translation>
 <translation id="203574396658008164">Luba lukustuskuval märkmete tegemine</translation>
+<translation id="2036514476578229158">Küsisid selle saidi külastamiseks luba. Sinu vanemad saavad Family Linkis vastata.</translation>
 <translation id="2037445849770872822">Selle Google'i konto jaoks on seadistatud järelevalve. Kui soovite veel vanemliku järelevalve funktsioone seadistada, valige käsk Jätka.
 
 Muul juhul logige nüüd välja, et selle konto muudatused kajastuksid ka selles seadmes.
@@ -1246,6 +1247,7 @@
 <translation id="2135787500304447609">&amp;Taasta</translation>
 <translation id="2136372518715274136">Sisestage uus parool</translation>
 <translation id="2136476978468204130">Sisestatud parool on vale</translation>
+<translation id="2137891579555018930">Heakskiidu ootel …</translation>
 <translation id="2138398485845393913">Ühenduse loomine seadmega „<ph name="DEVICE_NAME" />” on pooleli</translation>
 <translation id="2139919072249842737">Seadistusnupp</translation>
 <translation id="2140788884185208305">Aku seisukord</translation>
@@ -4135,6 +4137,7 @@
 <translation id="4858913220355269194">Fritz</translation>
 <translation id="4862642413395066333">Signeerimise OCSP vastused</translation>
 <translation id="4863769717153320198">Näib kui <ph name="WIDTH" /> × <ph name="HEIGHT" /> (vaikeseade)</translation>
+<translation id="486459320933704969">Vanem või eestkostja peab andma sulle loa selle veebisaidi külastamiseks</translation>
 <translation id="4864805589453749318">Vali vanem, kes annab kooli konto lisamiseks loa.</translation>
 <translation id="486635084936119914">Teatud failitüübid avatakse pärast allalaadimist automaatselt</translation>
 <translation id="4868281708609571334">Õpetage Google'i assistenti kasutaja <ph name="SUPERVISED_USER_NAME" /> häält ära tundma</translation>
@@ -8716,6 +8719,7 @@
 <translation id="947329552760389097">&amp;Elementide uurimine</translation>
 <translation id="947526284350604411">Teie vastus</translation>
 <translation id="947667444780368238"><ph name="ORIGIN" /> ei saa selles kaustas olevaid faile avada, kuna see sisaldab süsteemifaile</translation>
+<translation id="949314938206378263">Küsisid selle saidi külastamiseks luba. Sinu vanem saab Family Linkis vastata.</translation>
 <translation id="950307215746360464">Seadistusjuhend</translation>
 <translation id="951991426597076286">Keeldu</translation>
 <translation id="952471655966876828">Kui seade on sisse lülitatud ja seda kasutatakse, ühendatakse seade automaatselt</translation>
diff --git a/chrome/app/resources/generated_resources_fa.xtb b/chrome/app/resources/generated_resources_fa.xtb
index bb354439..7647084 100644
--- a/chrome/app/resources/generated_resources_fa.xtb
+++ b/chrome/app/resources/generated_resources_fa.xtb
@@ -1131,6 +1131,7 @@
 <translation id="2034346955588403444">‏افزودن شبکه WiFi دیگر</translation>
 <translation id="2035211704574173780">سیاه‌وسفید</translation>
 <translation id="203574396658008164">فعال کردن یادداشت‌برداری از صفحه درحالت قفل</translation>
+<translation id="2036514476578229158">‏درخواست کرده‌اید از این سایت بازدید کنید. والدینتان می‌توانند در Family Link پاسخ دهند.</translation>
 <translation id="2037445849770872822">‏برای این «حساب Google» نظارت تنظیم شده است. برای تنظیم کنترل‌های والدین بیشتر، «ادامه» را انتخاب کنید.
 
 درغیر این‌صورت، همین‌الان از سیستم خارج شوید تا تغییرات این حساب در این دستگاه نشان داده شود.
@@ -1252,6 +1253,7 @@
 <translation id="2135787500304447609">&amp;ازسرگیری</translation>
 <translation id="2136372518715274136">گذرواژه جدید را وارد کنید</translation>
 <translation id="2136476978468204130">گذرعبارتی که وارد کردید نادرست است</translation>
+<translation id="2137891579555018930">درانتظار اجازه…</translation>
 <translation id="2138398485845393913">اتصال به «<ph name="DEVICE_NAME" />» همچنان در جریان است</translation>
 <translation id="2139919072249842737">دکمه راه‌اندازی</translation>
 <translation id="2140788884185208305">سلامت باتری</translation>
@@ -4142,6 +4144,7 @@
 <translation id="4858913220355269194">فوتبالی</translation>
 <translation id="4862642413395066333">‏امضا کردن پاسخ‌های OCSP</translation>
 <translation id="4863769717153320198">‏‎<ph name="WIDTH" /> × <ph name="HEIGHT" />‎ به‌نظر می‌رسد (پیش‌فرض)</translation>
+<translation id="486459320933704969">ولی یا سرپرست باید بازدید شما از این وب‌سایت را تأیید کند</translation>
 <translation id="4864805589453749318">ولی‌ای را که می‌خواهید به او اجازه دهید حساب محل تحصیل اضافه کند، انتخاب کنید.</translation>
 <translation id="486635084936119914">باز شدن خودکار برخی از انواع فایل بعد از بارگیری</translation>
 <translation id="4868281708609571334">‏آموزش دادن به «دستیار Google» برای تشخیص صدای <ph name="SUPERVISED_USER_NAME" /></translation>
@@ -8725,6 +8728,7 @@
 <translation id="947329552760389097">&amp;بازرسی عناصر</translation>
 <translation id="947526284350604411">پاسخ شما</translation>
 <translation id="947667444780368238"><ph name="ORIGIN" /> نمی‌تواند فایل‌های این پوشه را باز کند زیرا فایل‌های سیستم در آن وجود دارد</translation>
+<translation id="949314938206378263">‏درخواست کرده‌اید از این سایت بازدید کنید. ولی‌تان می‌تواند در Family Link پاسخ دهد.</translation>
 <translation id="950307215746360464">راهنمای راه‌اندازی</translation>
 <translation id="951991426597076286">رد کردن</translation>
 <translation id="952471655966876828">وقتی دستگاه روشن شود و از آن استفاده شود، به‌طور خودکار وصل می‌شود</translation>
diff --git a/chrome/app/resources/generated_resources_fi.xtb b/chrome/app/resources/generated_resources_fi.xtb
index 2b57452..7109b35 100644
--- a/chrome/app/resources/generated_resources_fi.xtb
+++ b/chrome/app/resources/generated_resources_fi.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="fi">
 <translation id="1001033507375626788">Tämä verkko on jaettu sinulle</translation>
+<translation id="1002085272681738789">Välilehti on taas aktiivinen</translation>
 <translation id="1003088604756913841">Avaa linkki uudessa ikkunassa (<ph name="APP" />)</translation>
 <translation id="100323615638474026">USB-laite (<ph name="VENDOR_ID" />: <ph name="PRODUCT_ID" />)</translation>
 <translation id="1004218526896219317">Sivustojen käyttöoikeudet</translation>
@@ -323,6 +324,7 @@
 <translation id="1296911687402551044">Kiinnitä valittu välilehti</translation>
 <translation id="1297175357211070620">Kohde</translation>
 <translation id="129770436432446029">Lähetä palautetta kokeilusta (<ph name="EXPERIMENT_NAME" />)</translation>
+<translation id="130097046531636712">Tämä pidentää akunkestoa rajoittamalla taustatoimintaa ja visuaalisia tehosteita, esimerkiksi sujuvaa vieritystä</translation>
 <translation id="1301135395320604080"><ph name="ORIGIN" /> saa muokata seuraavia tiedostoja</translation>
 <translation id="1302227299132585524">Salli JavaScript Apple Eventsistä</translation>
 <translation id="1303101771013849280">Lisää HTML-tiedoston kirjanmerkkeihin</translation>
@@ -381,6 +383,7 @@
 <translation id="1361655923249334273">Käyttämätön</translation>
 <translation id="1362865166188278099">Mekaaninen ongelma. Tarkista tulostin</translation>
 <translation id="1363585519747660921">USB-tulostin on määritettävä</translation>
+<translation id="136378536198524553">Virransäästö on päällä</translation>
 <translation id="1368603372088757436">Linuxia ei tueta <ph name="DEVICE_TYPE" />-laitteella. <ph name="LINK_BEGIN" />Lue lisää<ph name="LINK_END" /></translation>
 <translation id="1372841398847029212">Synkronoi tilillesi</translation>
 <translation id="1373176046406139583">Laitteen näkyvyysasetus määrittää, kuka voi jakaa sinulle, kun näyttösi ei ole lukittuna. <ph name="LINK_BEGIN" />Lue lisää<ph name="LINK_END" /></translation>
@@ -651,6 +654,7 @@
 <translation id="1610272688494140697">Sovellusasetukset</translation>
 <translation id="161042844686301425">Turkoosi</translation>
 <translation id="1611432201750675208">Laitteesi on lukittu</translation>
+<translation id="1611776894942218234">Laitteen täytyy olla betaversio</translation>
 <translation id="1612019740169791082">Säilö ei tue levyn koon muuttamista. Jos haluat muuttaa Linuxille varatun tilan määrää, luo varmuuskopio ja palauta se sitten uuteen säilöön.</translation>
 <translation id="1613019471223620622">Näytä salasana: <ph name="USERNAME" />, <ph name="DOMAIN" /></translation>
 <translation id="1613149688105334014">Chrome-sovellusten vanhoja versioita ei voi avata joulukuun 2022 jälkeen. Voit tarkistaa, onko uutta versiota saatavilla.</translation>
@@ -1129,6 +1133,7 @@
 <translation id="2034346955588403444">Lisää muu Wi-Fi-verkko</translation>
 <translation id="2035211704574173780">Harmaasävytila</translation>
 <translation id="203574396658008164">Salli muistiinpanojen tekeminen lukitusnäytöllä</translation>
+<translation id="2036514476578229158">Pyysit pääsyä tälle sivustolle. Vanhempasi voivat vastata Family Linkissä.</translation>
 <translation id="2037445849770872822">Tälle Google-tilille on määritetty valvonta. Jos haluat määrittää lisää lapsilukkoja, valitse Jatka.
 
 Muussa tapauksessa kirjaudu ulos nyt, jotta tilin muutokset näkyvät laitteella.
@@ -1214,6 +1219,7 @@
 <translation id="2098805196501063469">Tarkista loput salasanat</translation>
 <translation id="2099686503067610784">Poistetaanko palvelimen varmenne <ph name="CERTIFICATE_NAME" />?</translation>
 <translation id="2100273922101894616">Automaattinen kirjautuminen</translation>
+<translation id="2100986609271491802">Tämä laite ei tällä hetkellä tue Steamia Chromebookilla</translation>
 <translation id="2101225219012730419">Versio:</translation>
 <translation id="2102396546234652240">Älä salli sivustojen käyttää mikrofoniasi</translation>
 <translation id="2102495993840063010">Android-sovellukset</translation>
@@ -1249,6 +1255,7 @@
 <translation id="2135787500304447609">&amp;Jatka</translation>
 <translation id="2136372518715274136">Anna uusi salasana</translation>
 <translation id="2136476978468204130">Antamasi tunnuslause on virheellinen.</translation>
+<translation id="2137891579555018930">Odotetaan lupaa…</translation>
 <translation id="2138398485845393913">Yhteyden muodostaminen laitteeseen <ph name="DEVICE_NAME" /> on vielä kesken.</translation>
 <translation id="2139919072249842737">Määritä‑painike</translation>
 <translation id="2140788884185208305">Akun toiminta</translation>
@@ -1512,6 +1519,9 @@
 <translation id="2350133097354918058">Päivitetty</translation>
 <translation id="2350182423316644347">Käynnistetään sovellusta…</translation>
 <translation id="235028206512346451">Jos poistut laitteen läheltä, näyttö lukittuu automaattisesti. Kun pysyt laitteen edessä, näyttö pysyy päällä pidempään. Jos et käytä lukitusnäyttöä, laite siirtyy virransäästötilaan lukittumisen sijaan.</translation>
+<translation id="2350866610930767288"><ph name="BEGIN_PARAGRAPH1" />Jos sinua on neuvottu lisäämään jälleenmyyjän kauppatunnuskoodi demotilan asennuksen aikana, lisää se oikealle*.  Muussa tapauksessa voit jättää tämän kentän tyhjäksi ja jatkaa.<ph name="END_PARAGRAPH1" />
+    <ph name="BEGIN_PARAGRAPH2" />Voit asentaa demotilan myös ilman koodia, mutta se on tärkeää lisätä, jos kauppa vaatii sitä.<ph name="END_PARAGRAPH2" />
+    <ph name="BEGIN_PARAGRAPH3" />* Huom. Google käyttää näitä koodeja tunnistaakseen, mikä demotilan versio sopii laitteelle, ja demotilan käytön mittaamiseen.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="2352495879228166246">{NUM_ITEMS,plural, =1{1 kohde}other{{NUM_ITEMS} kohdetta}}</translation>
 <translation id="2352662711729498748">&lt; 1 Mt</translation>
 <translation id="2352810082280059586">Lukitusnäytön ilmoitukset tallennetaan automaattisesti sovellukseen <ph name="LOCK_SCREEN_APP_NAME" />. Viimeisin ilmoitus pysyy lukitusnäytöllä.</translation>
@@ -1962,6 +1972,7 @@
 <translation id="2776560192867872731">Vaihda laitteen nimeksi <ph name="DEVICE_NAME" /></translation>
 <translation id="2777251078198759550">Poista tämä säilö</translation>
 <translation id="2778471504622896352">Etäsovellusten lisääminen Chrome-käyttöjärjestelmän käynnistysohjelmaan</translation>
+<translation id="2781120507965857989">Laita synkronointi päälle, niin saat kirjanmerkkisi, historiasi ja muita asetuksiasi tälle laitteelle ja muille laitteille, joilla synkronoit. Google voi muokata Hakua ja muita Googlen palveluita historiasi perusteella.</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2782104745158847185">Virhe Linux-sovelluksen asennuksessa</translation>
 <translation id="2783298271312924866">Ladatut</translation>
@@ -1982,6 +1993,7 @@
 <translation id="2792697226874849938">Rajoituskuva</translation>
 <translation id="2794233252405721443">Sivusto estetty</translation>
 <translation id="2794522004398861033">Yhdistä Wi-Fi- tai Ethernet-verkkoon, niin voit ottaa eSIMin käyttöön</translation>
+<translation id="2795074478966352573">Family Linkin kautta hallinnoituja tilejä ei vielä tueta</translation>
 <translation id="2795716239552913152">Sivustot käyttävät yleensä sijaintia tarjotakseen siihen liittyviä ominaisuuksia tai tietoja (esim. paikallisuutisia tai tietoja lähellä olevista kaupoista)</translation>
 <translation id="2796424461616874739">Todennuksen aikakatkaisu yhdistettäessä kohteeseen <ph name="DEVICE_NAME" />.</translation>
 <translation id="2796740370559399562">Salli evästeet edelleen</translation>
@@ -2167,6 +2179,7 @@
 <translation id="2949289451367477459">Käytä sijaintia. Salli laitteen sijainnin käyttäminen sovelluksille ja palveluille, joilla on sijaintilupa. Google voi ajoittain kerätä sijaintitietoja ja käyttää niitä ei-yksilöivästi sijainnin tarkkuuden ja sijaintiin perustuvien palvelujen kehittämiseen. <ph name="BEGIN_LINK1" />Lue lisää<ph name="END_LINK1" /></translation>
 <translation id="2950666755714083615">Kyllä kiitos</translation>
 <translation id="2953019166882260872">Liitä puhelin johdolla</translation>
+<translation id="2953218713108551165">Ilmoitukset eivät ole sallittuja: <ph name="SITE" />. Tästä kysytään uudelleen seuraavalla käyntikerralla.</translation>
 <translation id="2956070239128776395">Osio sisällytetty ryhmään: <ph name="ERROR_LINE" /></translation>
 <translation id="2958721676848865875">Varoitus: pakattu laajennus</translation>
 <translation id="2959127025785722291">Jotain meni pieleen. Tarkistusta ei voitu suorittaa loppuun. Yritä uudelleen.</translation>
@@ -2875,6 +2888,7 @@
 <translation id="3665919494326051362">Nykyinen versio on <ph name="CURRENT_VERSION" /></translation>
 <translation id="3670113805793654926">Kaikkien toimittajien laitteet</translation>
 <translation id="3670229581627177274">Ota Bluetooth käyttöön</translation>
+<translation id="3672663996348587094">Salli "<ph name="EXTENSIONS_REQUESTING_ACCESS" />" sivustolla <ph name="ORIGIN" /> klikkaamalla:</translation>
 <translation id="3672681487849735243">Tehdasvirhe on havaittu</translation>
 <translation id="3673097791729989571">Sisäänkirjautuminen tapahtuu täällä: <ph name="SAML_DOMAIN" /></translation>
 <translation id="3673622964532248901">Sinulla ei ole lupaa striimata tälle laitteelle.</translation>
@@ -3387,6 +3401,7 @@
 <translation id="4132183752438206707">Etsi sovelluksia Google Play Kaupasta</translation>
 <translation id="4132364317545104286">Nimeä eSIM-profiili uudelleen</translation>
 <translation id="4133076602192971179">Avaa sovellus muuttaaksesi salasanan</translation>
+<translation id="4134818201340504801">Tallennustila ei riitä käyttöönoton viimeistelyyn. Vapauta tallennustilaa ja yritä uudelleen</translation>
 <translation id="4135746311382563554">Google Chromen ja ChromeOS:n lisäkäyttöehdot</translation>
 <translation id="4136203100490971508">Yövalo sammuu automaattisesti, kun aurinko nousee.</translation>
 <translation id="41365691917097717">Jatkamalla otat ADB-virheenkorjauksen käyttöön Android-sovellusten luomista ja testausta varten. Huomaa, että tämä sallii sellaisten Android-sovellusten asentamisen, joita Google ei ole vahvistanut. Ominaisuuden käytöstä poistaminen edellyttää tehdasasetusten palautusta.</translation>
@@ -3623,6 +3638,7 @@
 <translation id="4378556263712303865">Laitepyyntö</translation>
 <translation id="4379281552162875326">Poistetaanko <ph name="APP_NAME" />?</translation>
 <translation id="4380648069038809855">Siirryttiin koko näytön tilaan</translation>
+<translation id="4383048856908088702">Kun tämä välilehti ei ollut aktiivinen, Muistinsäästö vapautti <ph name="MEMORY_VALUE" /> muistia muihin tehtäviin. Voit vaihtaa valintasi milloin tahansa täältä: <ph name="SETTINGS_LINK" />.</translation>
 <translation id="4384312707950789900">Lisää ensisijaisiin</translation>
 <translation id="4384652540891215547">Aktivoi laajennus</translation>
 <translation id="4384886290276344300">Muuta näppäimistön asetuksia</translation>
@@ -3700,6 +3716,7 @@
 <translation id="4451479197788154834">Salasanasi on tallennettu tälle laitteelle ja Google-tilillesi</translation>
 <translation id="4451757071857432900">Estä sivustoilla, jotka näyttävät häiritseviä tai harhaanjohtavia mainoksia (suositus)</translation>
 <translation id="4453946976636652378">Tee <ph name="SEARCH_ENGINE_NAME" />-haku tai kirjoita URL-osoite</translation>
+<translation id="4458535500699390320">Kun tämä välilehti ei ollut aktiivinen, Muistinsäästö vapautti muistia muihin tehtäviin. Voit muuttaa valintasi milloin tahansa asetuksista.</translation>
 <translation id="4459169140545916303">Aktiivinen <ph name="DEVICE_LAST_ACTIVATED_TIME" /> päivää sitten</translation>
 <translation id="4460014764210899310">Poista ryhmittely</translation>
 <translation id="4462159676511157176">Omat nimipalvelimet</translation>
@@ -3872,6 +3889,7 @@
 <translation id="4613271546271159013">Laajennus vaihtoi sivua, joka näytetään avatessasi uuden välilehden.</translation>
 <translation id="4615586811063744755">ei evästeitä valittuna</translation>
 <translation id="461661862154729886">Energianlähde</translation>
+<translation id="461676224702246336">Klikkauksella tälle sivustolle</translation>
 <translation id="4617001782309103936">Liian lyhyt</translation>
 <translation id="4617019240346358451">Päivitä sivu käyttääksesi laajennusta: <ph name="EXTENSION_NAME" /></translation>
 <translation id="4617270414136722281">Laajennusasetukset</translation>
@@ -3994,6 +4012,7 @@
 <translation id="4728558894243024398">Käyttöympäristö</translation>
 <translation id="4728570203948182358"><ph name="BEGIN_LINK" />Järjestelmänvalvoja<ph name="END_LINK" /> on laittanut haittaohjelmatarkistukset pois päältä</translation>
 <translation id="4730492586225682674">Näyttökynä viimeisin muistiinpano lukitusnäytöllä</translation>
+<translation id="4730888769809690665">Ilmoitukset sallittu: <ph name="SITE" /></translation>
 <translation id="473140019006744096">Laitteen tila ei riitä päivityksen viimeistelyyn. Vapauta laitteelta <ph name="NECESSARY_SPACE" /> ja yritä uudelleen.</translation>
 <translation id="4733161265940833579"><ph name="BATTERY_PERCENTAGE" /> % (vasen)</translation>
 <translation id="4733793249294335256">Sijainti</translation>
@@ -4124,6 +4143,7 @@
 <translation id="4858913220355269194">Litti</translation>
 <translation id="4862642413395066333">OCSP-vastauksien allekirjoittaminen</translation>
 <translation id="4863769717153320198">Näyttää olevan <ph name="WIDTH" /> x <ph name="HEIGHT" /> (oletus)</translation>
+<translation id="486459320933704969">Vanhemman tai huoltajan on hyväksyttävä käyntisi tällä sivustolla</translation>
 <translation id="4864805589453749318">Valitse vanhempi, joka antaa luvan oppilaitostilin lisäämiseen.</translation>
 <translation id="486635084936119914">Avaa tietyn tyyppiset tiedostot automaattisesti latauksen jälkeen.</translation>
 <translation id="4868281708609571334">Opeta Google Assistant tunnistamaan, kun <ph name="SUPERVISED_USER_NAME" /> puhuu</translation>
@@ -4296,6 +4316,7 @@
 <translation id="5032430150487044192">QR-koodin luominen ei onnistu</translation>
 <translation id="5033137252639132982">Liiketunnistimien käyttö kielletty</translation>
 <translation id="5033266061063942743">Geometriset kuviot</translation>
+<translation id="5034000993065629381">Ota yhteyttä järjestelmänvalvojaan</translation>
 <translation id="5037676449506322593">Valitse kaikki</translation>
 <translation id="5038818366306248416">Estit aiemmin kaikki laajennukset täällä: <ph name="ORIGIN" /></translation>
 <translation id="5039696241953571917">Katso ja ylläpidä Google-tilille tallennettuja salasanoja</translation>
@@ -4426,6 +4447,7 @@
 <translation id="5161251470972801814">USB-laitteet: <ph name="VENDOR_NAME" /></translation>
 <translation id="5162905305237671850"><ph name="DEVICE_TYPE" /> on estetty</translation>
 <translation id="5163910114647549394">Välilehti siirretty rivin loppuun</translation>
+<translation id="5164530241085602114">Ilmoitukset eivät ole sallittuja: <ph name="SITE" /></translation>
 <translation id="516747639689914043">Hypertekstin siirtoprotokolla (HTTP)</translation>
 <translation id="5170568018924773124">Näytä kansiossa</translation>
 <translation id="5171045022955879922">Kirjoita hakusanoja tai URL-osoite</translation>
@@ -4528,6 +4550,7 @@
 <translation id="5269977353971873915">Tulostus epäonnistui</translation>
 <translation id="5273806377963980154">Muokkaa sivuston URL-osoitetta</translation>
 <translation id="5275084684151588738">Käyttäjän sanakirjat</translation>
+<translation id="5275100789567222478">Laita päälle vain, kun akkua on jäljellä <ph name="PERCENT" /> % tai vähemmän</translation>
 <translation id="5275338516105640560">Välilehtiryhmän painike tallennettu</translation>
 <translation id="5275352920323889391">Koira</translation>
 <translation id="527605719918376753">Mykistä välilehti</translation>
@@ -4546,6 +4569,7 @@
 <translation id="5285635972691565180">Näyttö <ph name="DISPLAY_ID" /></translation>
 <translation id="5286194356314741248">Etsitään</translation>
 <translation id="5287425679749926365">Tilisi</translation>
+<translation id="5288106344236929384">Lisää toimintoja ja avainkoodivaihtoehtoja: <ph name="USERNAME" />, <ph name="DOMAIN" /></translation>
 <translation id="5288678174502918605">Avaa sulj&amp;ettu välilehti uudelleen</translation>
 <translation id="52895863590846877">Eikö sivua ole kirjoitettu tällä kielellä: <ph name="LANGUAGE" />?</translation>
 <translation id="52912272896845572">Yksityinen avaintiedosto on virheellinen.</translation>
@@ -4741,6 +4765,7 @@
 <translation id="5473099001878321374">Jatkamalla hyväksyt, että laite voi myös automaattisesti ladata ja asentaa Googlen, lapsen operaattorin tai laitevalmistajan päivityksiä ja sovelluksia, mahdollisesti mobiilidatayhteyden välityksellä. Jotkin näistä sovelluksista voivat tarjota sovelluksen sisäisiä ostoksia.</translation>
 <translation id="5473156705047072749">{NUM_CHARACTERS,plural, =1{PIN-koodissa on oltava ainakin yksi merkki}other{PIN-koodissa on oltava ainakin # merkkiä}}</translation>
 <translation id="5474859849784484111"><ph name="MANAGER" /> edellyttää, että yhdistät Wi-Fi-verkkoon nyt ja lataat päivityksen. Voit myös ladata sen maksullisella yhteydellä (tästä voidaan veloittaa).</translation>
+<translation id="5476016146231427848">Käynnistä laite uudelleen, jotta voit käyttää Steamia Chromebookilla</translation>
 <translation id="5481273127572794904">Useiden tiedostojen automaattinen lataaminen kielletty</translation>
 <translation id="5481941284378890518">Lisää lähellä olevia tulostimia</translation>
 <translation id="5483785310822538350">Peru tiedoston ja laitteen käyttöoikeudet</translation>
@@ -4960,6 +4985,7 @@
 <translation id="5683806393796685434">Lisää aktivointikoodi</translation>
 <translation id="5684181005476681636">Wi-Fi-tiedot</translation>
 <translation id="5684661240348539843">Laitteen tunnus</translation>
+<translation id="5684969244627829799">Kirjaudu käyttäjätilille ja yritä uudelleen</translation>
 <translation id="5687326903064479980">Aikavyöhyke</translation>
 <translation id="5687935527303996204">Varmista, että laite on kytketty verkkovirtaan. Älä laita laitetta pois päältä. Asennuksessa voi kestää 20 minuuttia. Laite sammuu automaattisesti asennuksen jälkeen.</translation>
 <translation id="5689516760719285838">Sijainti</translation>
@@ -5086,6 +5112,7 @@
 <translation id="5805697420284793859">Ikkunat</translation>
 <translation id="5806447147478173900">Näkyvien sivustojen käyttämä tallennustila yhteensä: <ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">0° (oletus)</translation>
+<translation id="5810603387504252966">#borealis-enabledin on oltava käytössä täällä: chrome://flags</translation>
 <translation id="5810809306422959727">Tällä tilillä ei voi käyttää lapsilukkoa</translation>
 <translation id="5811614940486072060">Tätä tiedostoa ei ladata usein, ja se saattaa olla haitallinen</translation>
 <translation id="5812674658566766066">Laajenna kaikki</translation>
@@ -5165,6 +5192,7 @@
 <translation id="5882449899683447569">Jotain meni pieleen, eikä salasanojasi tuotu</translation>
 <translation id="5882919346125742463">Tunnetut verkot</translation>
 <translation id="5883356647197510494">Estetty automaattisesti: <ph name="PERMISSION_1" />, <ph name="PERMISSION_2" /></translation>
+<translation id="5884447826201752041">Muokkaa kullekin laajennukselle</translation>
 <translation id="5884474295213649357">Tämä välilehti on yhdistetty USB-laitteeseen.</translation>
 <translation id="5885314688092915589">Organisaatiosi ylläpitää tätä tiliä</translation>
 <translation id="5886009770935151472">Sormi 1</translation>
@@ -5604,6 +5632,7 @@
 <translation id="6301300352769835063">Salli Googlen käyttää laitedataasi palvelun (<ph name="DEVICE_OS" />) kehittämiseksi. Jos kieltäydyt, dataa lähetetään Googlelle tarvittavien päivitysten selvittämiseksi, mutta sitä ei tallenneta tai käytetä muihin tarkoituksiin. Lue lisää osoitteesta g.co/flex/HWDataCollection.</translation>
 <translation id="630292539633944562">Henkilötietoehdotukset</translation>
 <translation id="6305607932814307878">Yleinen käytäntö:</translation>
+<translation id="6305909198255586420">Asenna käyttäen ensisijaista profiilia</translation>
 <translation id="6307990684951724544">Järjestelmä on varattu</translation>
 <translation id="6308493641021088955">Kirjautumisen tarjoaa <ph name="EXTENSION_NAME" /></translation>
 <translation id="6308937455967653460">Tallenna lin&amp;kki nimellä...</translation>
@@ -5925,6 +5954,7 @@
 <translation id="6608166463665411119">Nollaa eSIM</translation>
 <translation id="6609478180749378879">Kirjautumisdata pysyy tällä laitteella incognito-tilan sulkemisen jälkeen. Voit myöhemmin kirjautua tälle sivustolle uudelleen laitteellasi.</translation>
 <translation id="6610002944194042868">Käännösasetukset</translation>
+<translation id="6611907964265870728">Varmista, että laite on yhdistetty internetiin</translation>
 <translation id="6611972847767394631">Löydät välilehdet täältä</translation>
 <translation id="6613668613087513143">Laitteen tila ei riitä päivityksen viimeistelyyn. Vapauta laitteelta <ph name="NECESSARY_SPACE" /> ja yritä uudelleen Chrome-selaimesta.</translation>
 <translation id="6615455863669487791">Näytä</translation>
@@ -6313,6 +6343,7 @@
 <translation id="697508444536771064">Sammuta Linux</translation>
 <translation id="6975361011348772931">Lukemis- ja muuttamislupaa pyydetty</translation>
 <translation id="6978121630131642226">Hakukoneet</translation>
+<translation id="6979041727349121225">Virransäästö</translation>
 <translation id="6979044105893951891">käynnistää ylläpidettyjä Vierailija-käyttökertoja ja poistua niistä</translation>
 <translation id="6979158407327259162">Google Drive</translation>
 <translation id="6979440798594660689">Mykistä (oletus)</translation>
@@ -6365,6 +6396,7 @@
 <translation id="7014174261166285193">Asennus epäonnistui.</translation>
 <translation id="7014480873681694324">Poista korostus</translation>
 <translation id="7014741021609395734">Zoomauksen taso</translation>
+<translation id="7015088858756332848">Steamin käynnistäminen Chromebookilla ei onnistunut. Yritä uudelleen</translation>
 <translation id="7017004637493394352">Sano ”Hey Google” uudelleen</translation>
 <translation id="7017219178341817193">Lisää uusi sivu</translation>
 <translation id="7017354871202642555">Tilaa ei voi asettaa ikkunan asettamisen jälkeen.</translation>
@@ -6741,6 +6773,7 @@
 <translation id="7409854300652085600">Kirjanmerkit tuotu.</translation>
 <translation id="7410344089573941623">Kysy, jos <ph name="HOST" /> haluaa käyttää kameraa ja mikrofonia</translation>
 <translation id="7410852728357935715">Striimaa laitteeseen</translation>
+<translation id="7411614333737930931">Käynnistä laite uudelleen ja yritä uudelleen</translation>
 <translation id="741204030948306876">Kyllä</translation>
 <translation id="7412226954991670867">Keskusyksikön muisti</translation>
 <translation id="7414464185801331860">18x</translation>
@@ -6971,6 +7004,7 @@
 <translation id="7635048370253485243">Järjestelmänvalvojan kiinnittämä</translation>
 <translation id="7636919061354591437">Asenna tälle laitteelle</translation>
 <translation id="7637253234491814483">Kosketa sormenjälkitunnistinta, joka on näppäimistön oikeassa yläkulmassa virtapainikkeen vieressä. Sormenjälkidata tallennetaan turvallisesti vain laitteellesi (<ph name="DEVICE_TYPE" />).</translation>
+<translation id="7637272932128132922">Kun tämä välilehti ei ollut aktiivinen, Muistinsäästö vapautti muistia muihin tehtäviin. Voit vaihtaa valintasi milloin tahansa täältä: <ph name="SETTINGS_LINK" />.</translation>
 <translation id="7637593984496473097">Levytila ei riitä</translation>
 <translation id="7639914187072011620">SAML-uudelleenohjauksen URL-osoitetta ei voitu noutaa palvelimelta</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> kirjaa sinut automaattisesti kelvollisille sivustoille, joiden salasanat olet tallentanut.</translation>
@@ -7087,6 +7121,7 @@
 <translation id="7728668285692163452">Kanavan muutos otetaan käyttöön myöhemmin</translation>
 <translation id="7730449930968088409">Ota ruutukaappaus</translation>
 <translation id="7730683939467795481">Laajennus <ph name="EXTENSION_NAME" /> muutti tätä sivua</translation>
+<translation id="7735165285389721951">Steamin käyttöönotto on jo käynnissä. Odota, kunnes se on valmis, ennen kuin yrität uudelleen</translation>
 <translation id="7737115349420013392"><ph name="DEVICE_NAME" /> lisätään laitepariksi…</translation>
 <translation id="7737846262459425222">Voit muuttaa tätä koska tahansa valitsemalla Asetukset &gt; Google Assistant &gt; Näyttökonteksti.</translation>
 <translation id="7737948071472253612">Kameran käyttö kielletty</translation>
@@ -7384,6 +7419,7 @@
 Avaintiedosto: <ph name="KEY_FILE" />
 
 Tallenna avaintiedosto suojattuun sijaintiin. Tarvitset sitä, jos haluat luoda uusia laajennusversioita.</translation>
+<translation id="8001100670809322641">Odota muutama minuutti ja yritä uudelleen</translation>
 <translation id="8002274832045662704">Tulostimen lisämääritykset</translation>
 <translation id="8002670234429879764"><ph name="PRINTER_NAME" /> ei ole enää käytettävissä</translation>
 <translation id="8004092996156083991">Kerromme, jos salasanojasi vaarantuu</translation>
@@ -7393,6 +7429,7 @@
 <translation id="8008356846765065031">Internetyhteys katkaistu. Tarkista internetyhteytesi.</translation>
 <translation id="8009225694047762179">Salasanojen hallinta</translation>
 <translation id="8011372169388649948"><ph name="BOOKMARK_TITLE" /> siirretty.</translation>
+<translation id="8011875486979733097">Steamia ei voi asentaa</translation>
 <translation id="8012647001091218357">Emme tavoittaneet vanhempiasi. Yritä uudelleen.</translation>
 <translation id="8013993649590906847">Jos kuvalla ei ole hyödyllistä kuvausta, Chrome yrittää luoda sellaisen. Kuvat lähetetään Googlelle kuvausten luomista varten.</translation>
 <translation id="8014154204619229810">Päivitysohjelma on käynnissä. Lataa sivu hetken kuluttua uudelleen ja tarkista tilanne.</translation>
@@ -7483,6 +7520,7 @@
 <translation id="808894953321890993">Vaihda salasana</translation>
 <translation id="8090234456044969073">Lukea useimmin käyttämiesi verkkosivustojen luettelo</translation>
 <translation id="8090513782447872344">Voit palata tänne milloin tahansa</translation>
+<translation id="809312780580957751">Steamin asentaminen tälle laitteelle ei onnistunut</translation>
 <translation id="8093359998839330381"><ph name="PLUGIN_NAME" /> ei vastaa.</translation>
 <translation id="8095105960962832018"><ph name="BEGIN_PARAGRAPH1" />Varmuuskopioi Google Driveen. Palauta dataa tai vaihda laitetta helposti milloin tahansa. Varmuuskopio sisältää sovellusdatan.<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />Varmuuskopiot ladataan Googleen ja salataan Google-tilisi salasanalla.<ph name="END_PARAGRAPH2" />
@@ -7578,6 +7616,7 @@
 <translation id="8177318697334260664">{NUM_TABS,plural, =1{Siirrä välilehti uuteen ikkunaan}other{Siirrä välilehdet uuteen ikkunaan}}</translation>
 <translation id="8179188928355984576">Ei käytössä Android-sovelluksissa</translation>
 <translation id="8179976553408161302">Enter</translation>
+<translation id="8180785270975217276">Virransäästö päällä</translation>
 <translation id="8180786512391440389"><ph name="EXTENSION" /> voi lukea ja poistaa kuva-, video- ja äänitiedostoja valituissa sijainneissa.</translation>
 <translation id="8181215761849004992">Verkkotunnukseen liittyminen ei onnistu. Katso tililtäsi, onko sinulla laitteiden lisäämisoikeudet.</translation>
 <translation id="8182105986296479640">Sovellus ei vastaa.</translation>
@@ -7700,6 +7739,7 @@
 <translation id="828642162569365647">Salasana tai PIN-koodi suojaa dataasi laitteella (<ph name="DEVICE_TYPE" />) ja puhelimella käyttämiäsi tietoja. Sinun on avattava lukitus aina, kun <ph name="DEVICE_TYPE" /> aktivoituu virransäästötilasta.</translation>
 <translation id="8287902281644548111">Hae API-kutsun/URL-osoitteen mukaan</translation>
 <translation id="8288032458496410887">Poista <ph name="APP" />…</translation>
+<translation id="8288539437195337464">Varmista, että laite on ajan tasalla, ja yritä uudelleen</translation>
 <translation id="8289128870594824098">Levyn koko</translation>
 <translation id="8289509909262565712">Tervetuloa, tämä on <ph name="DEVICE_OS" /></translation>
 <translation id="8293206222192510085">Lisää kirjanmerkki</translation>
@@ -7994,6 +8034,7 @@
 <translation id="8599864823732014237">Ohitetaanko yritysrekisteröinti?</translation>
 <translation id="8601206103050338563">TLS WWW -palvelimen todennus</translation>
 <translation id="8601611099293226919">Hae näytöltä Google Lensilla</translation>
+<translation id="8602674530529411098">Sovellukset (beta)</translation>
 <translation id="8602851771975208551">Toinen tietokoneellasi oleva ohjelma lisäsi sovelluksen, joka voi muuttaa Chromen toimintaa.</translation>
 <translation id="8605428685123651449">SQLiten käyttämä muisti</translation>
 <translation id="8608618451198398104">Lisää Kerberos-tukipyyntö</translation>
@@ -8678,10 +8719,12 @@
 <translation id="939598580284253335">Anna tunnuslause</translation>
 <translation id="939736085109172342">Uusi kansio</translation>
 <translation id="942532530371314860"><ph name="APP_NAME" /> jakaa Chrome-välilehden ja ääntä.</translation>
+<translation id="944799160843436808">Steamin käyttöönotto Chromebookilla ei onnistunut</translation>
 <translation id="945522503751344254">Lähetä palautetta</translation>
 <translation id="947329552760389097">Tutk&amp;i elementtejä</translation>
 <translation id="947526284350604411">Vastauksesi</translation>
 <translation id="947667444780368238"><ph name="ORIGIN" /> ei saa avata tämän kansion tiedostoja, koska se sisältää järjestelmätiedostoja</translation>
+<translation id="949314938206378263">Pyysit pääsyä tälle sivustolle. Vanhempasi voi vastata Family Linkissä.</translation>
 <translation id="950307215746360464">Käyttöönotto-opas</translation>
 <translation id="951991426597076286">Hylkää</translation>
 <translation id="952471655966876828">Laitteen yhteys muodostetaan automaattisesti, kun laite käynnistetään tai sitä käytetään</translation>
@@ -8702,6 +8745,7 @@
 <translation id="968000525894980488">Ota Google Play Palvelut käyttöön.</translation>
 <translation id="968037381421390582">Liitä ja tee haku <ph name="SEARCH_TERMS" /></translation>
 <translation id="969096075394517431">Vaihda kieltä</translation>
+<translation id="969574218206797926">Muistinsäästö vapauttaa muistia ei-aktiivisilta välilehdiltä, jotta aktiiviset välilehdet ja muut sovellukset voivat käyttää sitä</translation>
 <translation id="970047733946999531">{NUM_TABS,plural, =1{1 välilehti}other{# välilehteä}}</translation>
 <translation id="971510864672937292">Tyhjennetäänkö sivuston <ph name="SITE_NAME" /> ja kaikkien sen alla olevien sivustojen sivustodata ja luvat?</translation>
 <translation id="971774202801778802">Lisää URL-osoite kirjanmerkkeihin</translation>
diff --git a/chrome/app/resources/generated_resources_fil.xtb b/chrome/app/resources/generated_resources_fil.xtb
index baa46ca..6c5a88a9 100644
--- a/chrome/app/resources/generated_resources_fil.xtb
+++ b/chrome/app/resources/generated_resources_fil.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="fil">
 <translation id="1001033507375626788">Ibinabahagi sa iyo ang network na ito</translation>
+<translation id="1002085272681738789">Aktibo ulit ang tab</translation>
 <translation id="1003088604756913841">Buksan ang Link sa bagong Window ng <ph name="APP" /></translation>
 <translation id="100323615638474026">USB device (<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />)</translation>
 <translation id="1004218526896219317">Access sa site</translation>
@@ -324,6 +325,7 @@
 <translation id="1296911687402551044">I-pin ang Napiling Tab</translation>
 <translation id="1297175357211070620">Destinasyon</translation>
 <translation id="129770436432446029">Magpadala ng feedback para sa <ph name="EXPERIMENT_NAME" /></translation>
+<translation id="130097046531636712">Pinapatagal nito ang baterya sa pamamagitan ng paglilimita sa aktibidad sa background at mga visual effect tulad ng maayos na pag-scroll</translation>
 <translation id="1301135395320604080">Puwedeng i-edit ng <ph name="ORIGIN" /> ang mga sumusunod na file</translation>
 <translation id="1302227299132585524">Payagan ang JavaScript mula sa Apple Events</translation>
 <translation id="1303101771013849280">HTML File ng Mga Bookmark</translation>
@@ -382,6 +384,7 @@
 <translation id="1361655923249334273">Hindi nagamit</translation>
 <translation id="1362865166188278099">Mekanikal na isyu. Tingnan ang printer</translation>
 <translation id="1363585519747660921">Kailangan ng pag-configure ng USB printer</translation>
+<translation id="136378536198524553">Naka-on ang Energy Saver</translation>
 <translation id="1368603372088757436">Hindi sinusuportahan ang Linux sa iyong <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Matuto pa<ph name="LINK_END" /></translation>
 <translation id="1372841398847029212">I-sync sa iyong account</translation>
 <translation id="1373176046406139583">Kinokontrol ng pagiging visible ng device mo kung sino ang puwedeng magbahagi sa iyo habang naka-unlock ang screen mo. <ph name="LINK_BEGIN" />Matuto pa<ph name="LINK_END" /></translation>
@@ -652,6 +655,7 @@
 <translation id="1610272688494140697">Mga Setting ng App</translation>
 <translation id="161042844686301425">Cyan</translation>
 <translation id="1611432201750675208">Naka-lock ang iyong device</translation>
+<translation id="1611776894942218234">Dapat nasa Beta Channel ang device</translation>
 <translation id="1612019740169791082">Hindi naka-configure ang iyong container para suportahan ang mga pag-resize ng disk. Para isaayos ang laki ng espasyong nakareserba para sa Linux, i-back up at pagkatapos ay i-restore ito sa isang bagong container.</translation>
 <translation id="1613019471223620622">Ipakita ang password para sa username na <ph name="USERNAME" /> sa <ph name="DOMAIN" /></translation>
 <translation id="1613149688105334014">Hindi na bubukas ang mga lumang bersyon ng mga Chrome app pagkatapos ng Disyembre 2022. Puwede mong tingnan kung may available na bagong bersyon.</translation>
@@ -1217,6 +1221,7 @@
 <translation id="2098805196501063469">Suriin ang mga natitirang password</translation>
 <translation id="2099686503067610784">Tanggalin ang certificate ng server na "<ph name="CERTIFICATE_NAME" />"?</translation>
 <translation id="2100273922101894616">Awtomatikong Mag-sign in</translation>
+<translation id="2100986609271491802">Kasalukuyang hindi sinusuportahan ng device na ito ang Steam sa Chromebook</translation>
 <translation id="2101225219012730419">Bersyon:</translation>
 <translation id="2102396546234652240">Huwag payagan ang mga site na gamitin ang iyong mikropono</translation>
 <translation id="2102495993840063010">Mga Android app</translation>
@@ -1516,6 +1521,9 @@
 <translation id="2350133097354918058">Na-reload</translation>
 <translation id="2350182423316644347">Sinisimulan ang application...</translation>
 <translation id="235028206512346451">Kung lalayo ka sa device mo, awtomatikong mala-lock ang iyong screen. Kapag nasa harap ka ng device mo, iilaw ang iyong screen nang mas matagal. Kung hindi ka gumagamit ng lock screen, magsi-sleep ang iyong device sa halip na mag-lock.</translation>
+<translation id="2350866610930767288"><ph name="BEGIN_PARAGRAPH1" />Kung nakatanggap ka ng mga tagubilin para maglagay ng retailer-store ID code habang ini-install ang Demo Mode, pakilagay ito sa kanan*.  Kung hindi, puwede mong iwanang blangko ang field na ito at magpatuloy.<ph name="END_PARAGRAPH1" />
+    <ph name="BEGIN_PARAGRAPH2" />Mai-install mo pa rin ang Demo Mode nang walang code, pero mahalagang ilagay ang code na ito kung naaangkop ito sa iyong store.<ph name="END_PARAGRAPH2" />
+    <ph name="BEGIN_PARAGRAPH3" />*Tandaan: Ginagamit ng Google ang mga code na ito para tukuyin kung aling bersyon ng Demo Mode ang dapat gamitin ng device at para masukat ang paggamit ng Demo Mode.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="2352495879228166246">{NUM_ITEMS,plural, =1{1 item}one{{NUM_ITEMS} item}other{{NUM_ITEMS} na item}}</translation>
 <translation id="2352662711729498748">&lt; 1 MB</translation>
 <translation id="2352810082280059586">Awtomatikong nase-save sa <ph name="LOCK_SCREEN_APP_NAME" /> ang mga tala sa lock screen. Mananatili ang iyong pinakabagong tala sa lock screen.</translation>
@@ -1966,6 +1974,7 @@
 <translation id="2776560192867872731">Palitan ang pangalan ng device para sa <ph name="DEVICE_NAME" /></translation>
 <translation id="2777251078198759550">I-delete ang container na ito</translation>
 <translation id="2778471504622896352">Magdagdag ng mga remote na app sa launcher ng ChromeOS</translation>
+<translation id="2781120507965857989">I-on ang pag-sync para makuha ang iyong mga bookmark, password, history, at higit pa sa device na ito at sa iba pang device kung saan ka nagsi-sync. Puwedeng gamitin ng Google ang iyong history para i-personalize ang Search at iba pang serbisyo ng Google.</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2782104745158847185">Nagkaroon ng error sa pag-install ng Linux application</translation>
 <translation id="2783298271312924866">Na-download</translation>
@@ -1986,6 +1995,7 @@
 <translation id="2792697226874849938">Larawan ng Paghihigpit</translation>
 <translation id="2794233252405721443">Naka-block ang site</translation>
 <translation id="2794522004398861033">Kumonekta sa Wi-Fi o Ethernet para mag-set up ng eSIM</translation>
+<translation id="2795074478966352573">Hindi pa sinusuportahan ang mga account na pinapamahalaan ng Family Link</translation>
 <translation id="2795716239552913152">Karaniwang ginagamit ng mga site ang iyong lokasyon para sa mga nauugnay na feature o impormasyon, gaya ng lokal na balita o mga kalapit na tindahan</translation>
 <translation id="2796424461616874739">Nag-timeout ang pagpapatunay habang kumokonekta sa "<ph name="DEVICE_NAME" />".</translation>
 <translation id="2796740370559399562">Patuloy na pahintulutan ang cookies</translation>
@@ -2171,6 +2181,7 @@
 <translation id="2949289451367477459">Gamitin ang lokasyon. Payagan ang mga app at serbisyong may pahintulot sa lokasyon na gamitin ang lokasyon ng device na ito. Ang Google ay maaaring pana-panahong mangolekta ng data ng lokasyon at gamitin ang data na ito nang anonymous para maging mas tumpak ang lokasyon at ang mga serbisyong batay sa lokasyon. <ph name="BEGIN_LINK1" />Matuto Pa<ph name="END_LINK1" /></translation>
 <translation id="2950666755714083615">I-sign up ako</translation>
 <translation id="2953019166882260872">Ikonekta ang iyong telepono sa isang cable</translation>
+<translation id="2953218713108551165">Hindi pinapayagan ang mga notification para sa <ph name="SITE" />. Tatanungin ka ulit sa iyong susunod na pagbisita.</translation>
 <translation id="2956070239128776395">Seksyong naka-nest sa grupo: <ph name="ERROR_LINE" /></translation>
 <translation id="2958721676848865875">Babala sa extension ng pack</translation>
 <translation id="2959127025785722291">Nagkaproblema. Hindi makumpleto ang pag-scan. Pakisubukan ulit.</translation>
@@ -2879,6 +2890,7 @@
 <translation id="3665919494326051362">Ang kasalukuyang bersyon ay <ph name="CURRENT_VERSION" /></translation>
 <translation id="3670113805793654926">Mga device mula sa anumang vendor</translation>
 <translation id="3670229581627177274">I-on ang Bluetooth</translation>
+<translation id="3672663996348587094">I-click para payagan ang "<ph name="EXTENSIONS_REQUESTING_ACCESS" />" sa <ph name="ORIGIN" />:</translation>
 <translation id="3672681487849735243">Nakakita ng factory error</translation>
 <translation id="3673097791729989571">Hino-host ng <ph name="SAML_DOMAIN" /> ang pag-sign in</translation>
 <translation id="3673622964532248901">Hindi ka pinapayagang mag-cast sa device na ito.</translation>
@@ -3394,6 +3406,7 @@
 <translation id="4132183752438206707">Maghanap ng mga app sa Google Play Store</translation>
 <translation id="4132364317545104286">I-rename ang profile ng eSIM</translation>
 <translation id="4133076602192971179">Buksan ang app para mapalitan ang iyong password</translation>
+<translation id="4134818201340504801">Hindi sapat ang available na storage para makumpleto ang pag-set up. Magbakante ng storage at subukan ulit</translation>
 <translation id="4135746311382563554">Mga karagdagang tuntunin ng serbisyo ng Google Chrome at Chrome OS</translation>
 <translation id="4136203100490971508">Awtomatikong mag-o-on ang Night Light sa pagsikat ng araw</translation>
 <translation id="41365691917097717">Kapag nagpatuloy, mae-enable ang pag-debug ng ADB para sa paggawa at pagsubok ng mga Android app. Tandaang binibigyang-daan ng pagkilos na ito ang pag-install ng mga Android app na hindi pa na-verify ng Google, at nangangailangan ito ng factory reset para ma-disable.</translation>
@@ -3630,6 +3643,7 @@
 <translation id="4378556263712303865">Requisition ng device</translation>
 <translation id="4379281552162875326">I-uninstall ang "<ph name="APP_NAME" />"?</translation>
 <translation id="4380648069038809855">Pumasok sa full screen</translation>
+<translation id="4383048856908088702">Habang hindi aktibo ang tab na ito, nagbakante ang Memory Saver ng <ph name="MEMORY_VALUE" /> ng memory para sa iba pang gawain. Puwede mo itong baguhin anumang oras sa <ph name="SETTINGS_LINK" />.</translation>
 <translation id="4384312707950789900">Idagdag sa mga gustong network</translation>
 <translation id="4384652540891215547">I-activate ang extension</translation>
 <translation id="4384886290276344300">Palitan ang mga setting ng keyboard</translation>
@@ -3707,6 +3721,7 @@
 <translation id="4451479197788154834">Naka-save ang iyong password sa device na ito at sa Google Account mo</translation>
 <translation id="4451757071857432900">Naka-block sa mga site na nagpapakita ng mga nakakasagabal o nakakapanlinlang na ad (inirerekomenda)</translation>
 <translation id="4453946976636652378">Maghanap sa <ph name="SEARCH_ENGINE_NAME" /> o mag-type ng URL</translation>
+<translation id="4458535500699390320">Habang hindi aktibo ang tab na ito, nagbakante ang Memory Saver ng memory para sa iba pang gawain. Puwede mo itong baguhin anumang oras sa mga setting.</translation>
 <translation id="4459169140545916303">Aktibo <ph name="DEVICE_LAST_ACTIVATED_TIME" /> (na) araw ang nakalipas</translation>
 <translation id="4460014764210899310">I-ungroup</translation>
 <translation id="4462159676511157176">Custom na mga server ng pangalan</translation>
@@ -3879,6 +3894,7 @@
 <translation id="4613271546271159013">Binago ng isang extension ang ipinapakitang page kapag nagbukas ka ng bagong tab.</translation>
 <translation id="4615586811063744755">walang piniling cookie</translation>
 <translation id="461661862154729886">Energy source</translation>
+<translation id="461676224702246336">Kapag na-click para sa site na ito</translation>
 <translation id="4617001782309103936">Napakaikli</translation>
 <translation id="4617019240346358451">I-reload ang page para gamitin ang "<ph name="EXTENSION_NAME" />"</translation>
 <translation id="4617270414136722281">Mga opsyon ng extension</translation>
@@ -4001,6 +4017,7 @@
 <translation id="4728558894243024398">Platform</translation>
 <translation id="4728570203948182358">Na-off ng <ph name="BEGIN_LINK" />iyong administrator<ph name="END_LINK" /> ang pagsusuri para sa mapaminsalang software</translation>
 <translation id="4730492586225682674">Pinakabagong tala sa lock screen gamit ang stylus</translation>
+<translation id="4730888769809690665">Pinapayagan ang mga notification para sa <ph name="SITE" /></translation>
 <translation id="473140019006744096">Kulang ang espasyo sa device na ito para matapos ang pag-update na ito. Magbakante ng <ph name="NECESSARY_SPACE" /> sa iyong device at subukan ulit.</translation>
 <translation id="4733161265940833579"><ph name="BATTERY_PERCENTAGE" />% (Kaliwa)</translation>
 <translation id="4733793249294335256">Lokasyon</translation>
@@ -4304,6 +4321,7 @@
 <translation id="5032430150487044192">Hindi magawa ang QR Code</translation>
 <translation id="5033137252639132982">Hindi pinapayagang gumamit ng mga sensor ng paggalaw</translation>
 <translation id="5033266061063942743">Mga geometric na hugis</translation>
+<translation id="5034000993065629381">Makipag-ugnayan sa iyong administrator</translation>
 <translation id="5037676449506322593">Select All</translation>
 <translation id="5038818366306248416">Pinili mo dati na huwag payagan ang anumang extension sa <ph name="ORIGIN" /></translation>
 <translation id="5039696241953571917">Tingnan at pamahalaan ang mga naka-save na password sa iyong Google Account</translation>
@@ -4434,6 +4452,7 @@
 <translation id="5161251470972801814">Mga USB device mula sa <ph name="VENDOR_NAME" /></translation>
 <translation id="5162905305237671850">Na-block na ang <ph name="DEVICE_TYPE" /></translation>
 <translation id="5163910114647549394">Inilipat ang tab sa dulo ng tabstrip</translation>
+<translation id="5164530241085602114">Hindi pinapayagan ang mga notification para sa <ph name="SITE" /></translation>
 <translation id="516747639689914043">Hypertext Transport Protocol (HTTP)</translation>
 <translation id="5170568018924773124">Ipinakita sa folder</translation>
 <translation id="5171045022955879922">Hanapin o i-type ang URL</translation>
@@ -4536,6 +4555,7 @@
 <translation id="5269977353971873915">Nabigo ang Pag-print</translation>
 <translation id="5273806377963980154">I-edit ang URL ng site</translation>
 <translation id="5275084684151588738">Mga Diksyunaryo ng User</translation>
+<translation id="5275100789567222478">I-on lang kapag nasa <ph name="PERCENT" />% o mas mababa ang aking baterya</translation>
 <translation id="5275338516105640560">Button na Na-save na Grupo ng Tab</translation>
 <translation id="5275352920323889391">Aso</translation>
 <translation id="527605719918376753">I-mute ang tab</translation>
@@ -4554,6 +4574,7 @@
 <translation id="5285635972691565180">Display <ph name="DISPLAY_ID" /></translation>
 <translation id="5286194356314741248">Nagsa-scan</translation>
 <translation id="5287425679749926365">Ang iyong mga account</translation>
+<translation id="5288106344236929384">Higit pang pagkilos, opsyon sa passkey para kay <ph name="USERNAME" /> sa <ph name="DOMAIN" /></translation>
 <translation id="5288678174502918605">M&amp;uling Buksan ang Nakasarang Tab</translation>
 <translation id="52895863590846877">Hindi <ph name="LANGUAGE" /> ang page</translation>
 <translation id="52912272896845572">Hindi wasto ang file ng private na key.</translation>
@@ -4749,6 +4770,7 @@
 <translation id="5473099001878321374">Sa pamamagitan ng pagpapatuloy, sumasang-ayon kang ang device na ito ay posible ring awtomatikong mag-download at mag-install ng mga update at app mula sa Google, carrier ng iyong anak, at manufacturer ng device na ito, na posibleng gamit ang cellular data. Posibleng mag-alok ang ilan sa mga app na ito ng mga in-app na pagbili.</translation>
 <translation id="5473156705047072749">{NUM_CHARACTERS,plural, =1{Dapat ay hindi bababa sa isang character ang PIN}one{Dapat ay hindi bababa sa # character ang PIN}other{Dapat ay hindi bababa sa # na character ang PIN}}</translation>
 <translation id="5474859849784484111">Hinihiling sa iyo ng <ph name="MANAGER" /> na kumonekta ka sa Wi-Fi ngayon at mag-download ng update. O mag-download mula sa isang nakametrong koneksyon (posibleng may nalalapat na mga singil).</translation>
+<translation id="5476016146231427848">Paki-restart ang iyong device para magamit ang Steam sa Chromebook</translation>
 <translation id="5481273127572794904">Hindi pinapayagang awtomatikong mag-download ng maraming file</translation>
 <translation id="5481941284378890518">Magdagdag ng Mga Printer na Nasa Malapit</translation>
 <translation id="5483785310822538350">Bawiin ang access sa file at device</translation>
@@ -4968,6 +4990,7 @@
 <translation id="5683806393796685434">Pakilagay ang iyong code sa pag-activate</translation>
 <translation id="5684181005476681636">Mga detalye ng Wi-Fi</translation>
 <translation id="5684661240348539843">Identifier ng Asset</translation>
+<translation id="5684969244627829799">Mag-sign in sa isang user account at subukan ulit</translation>
 <translation id="5687326903064479980">Timezone</translation>
 <translation id="5687935527303996204">Tiyaking nakasaksak ang iyong device, at huwag itong i-off. Posibleng abutin nang hanggang 20 minuto ang pag-install. Awtomatikong magsa-shut down ang iyong device kapag tapos na ang pag-install.</translation>
 <translation id="5689516760719285838">Lokasyon</translation>
@@ -5094,6 +5117,7 @@
 <translation id="5805697420284793859">Window manager</translation>
 <translation id="5806447147478173900">Kabuuang storage na ginagamit ng mga naka-display na site: <ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">0° (Default)</translation>
+<translation id="5810603387504252966">Dapat naka-enable ang #borealis-enabled sa chrome://flags</translation>
 <translation id="5810809306422959727">Hindi kwalipikado ang account na ito para sa parental controls</translation>
 <translation id="5811614940486072060">Hindi karaniwang dina-download ang app na ito at posibleng mapanganib ito.</translation>
 <translation id="5812674658566766066">I-expand lahat</translation>
@@ -5173,6 +5197,7 @@
 <translation id="5882449899683447569">Nagkaproblema at hindi na-import ang iyong mga password</translation>
 <translation id="5882919346125742463">Mga Kilalang Network</translation>
 <translation id="5883356647197510494">Awtomatikong na-block ang <ph name="PERMISSION_1" />, <ph name="PERMISSION_2" /></translation>
+<translation id="5884447826201752041">I-customize para sa bawat extension</translation>
 <translation id="5884474295213649357">Nakakonekta ang tab na ito sa isang USB device.</translation>
 <translation id="5885314688092915589">Papamahalaan ng iyong organisasyon ang profile na ito</translation>
 <translation id="5886009770935151472">Daliri 1</translation>
@@ -5612,6 +5637,7 @@
 <translation id="6301300352769835063">Hayaan ang Google na gamitin ang data ng iyong hardware para makatulong na mapahusay ang <ph name="DEVICE_OS" />. Kung tatanggi ka, ipapadala pa rin ang data na ito sa Google para makatukoy ng mga angkop na update, pero hindi ito iso-store o gagamitin sa ibang paraan. Matuto pa sa g.co/flex/HWDataCollection.</translation>
 <translation id="630292539633944562">Mga suhestyon sa personal na impormasyon</translation>
 <translation id="6305607932814307878">Pandaigdigang Patakaran:</translation>
+<translation id="6305909198255586420">Paki-install gamit ang iyong pangunahing profile</translation>
 <translation id="6307990684951724544">Abala ang system</translation>
 <translation id="6308493641021088955">Ibinibigay ng <ph name="EXTENSION_NAME" /> ang pag-sign in</translation>
 <translation id="6308937455967653460">I-save ang lin&amp;k bilang...</translation>
@@ -5935,6 +5961,7 @@
 <translation id="6608166463665411119">I-reset ang eSIM</translation>
 <translation id="6609478180749378879">Iso-store ang data ng pag-sign in sa device na ito pagkatapos mong lumabas sa Incognito mode. Makakapag-sign in ka ulit sa website na ito gamit ang iyong device sa ibang pagkakataon.</translation>
 <translation id="6610002944194042868">Mga Opsyon sa Pagsasalin</translation>
+<translation id="6611907964265870728">Pakitiyak na nakakonekta ang iyong device sa internet</translation>
 <translation id="6611972847767394631">Hanapin ang iyong mga tab dito</translation>
 <translation id="6613668613087513143">Kulang ang espasyo sa device na ito para matapos ang pag-update na ito. Magbakante ng <ph name="NECESSARY_SPACE" /> sa iyong device at subukan ulit mula sa Chrome browser mo.</translation>
 <translation id="6615455863669487791">Ipakita sa akin</translation>
@@ -6323,6 +6350,7 @@
 <translation id="697508444536771064">I-shut down ang Linux</translation>
 <translation id="6975361011348772931">Humiling na basahin at baguhin</translation>
 <translation id="6978121630131642226">Mga Search Engine</translation>
+<translation id="6979041727349121225">Energy Saver</translation>
 <translation id="6979044105893951891">Ilunsad ang at lumabas sa mga pinapamahalaang session ng bisita</translation>
 <translation id="6979158407327259162">Google Drive</translation>
 <translation id="6979440798594660689">I-mute (default)</translation>
@@ -6375,6 +6403,7 @@
 <translation id="7014174261166285193">Nabigo ang pag-install.</translation>
 <translation id="7014480873681694324">Alisin ang Highlight</translation>
 <translation id="7014741021609395734">Antas ng pag-zoom</translation>
+<translation id="7015088858756332848">Hindi mailunsad ang Steam sa Chromebook. Pakisubukan ulit</translation>
 <translation id="7017004637493394352">Sabihing muli ang "Ok Google"</translation>
 <translation id="7017219178341817193">Magdagdag ng bagong page </translation>
 <translation id="7017354871202642555">Hindi matakda ang mode pagkatapos matakda ang window.</translation>
@@ -6751,6 +6780,7 @@
 <translation id="7409854300652085600">Na-import na ang mga bookmark.</translation>
 <translation id="7410344089573941623">Itanong kung gusto ng <ph name="HOST" /> na i-access ang iyong camera at mikropono</translation>
 <translation id="7410852728357935715">Mag-cast sa isang device</translation>
+<translation id="7411614333737930931">Paki-restart ang iyong device at subukan ulit</translation>
 <translation id="741204030948306876">Oo, sali ako</translation>
 <translation id="7412226954991670867">GPU Memory</translation>
 <translation id="7414464185801331860">18x</translation>
@@ -6981,6 +7011,7 @@
 <translation id="7635048370253485243">Na-pin ng iyong Administrator</translation>
 <translation id="7636919061354591437">I-install sa Device na ito</translation>
 <translation id="7637253234491814483">Pindutin ang sensor ng fingerprint sa kanang sulok sa itaas ng iyong keyboard, sa tabi ng Power button. Secure na sino-store ang data ng iyong fingerprint at hindi ito kailanman lalabas sa <ph name="DEVICE_TYPE" /> mo.</translation>
+<translation id="7637272932128132922">Habang hindi aktibo ang tab na ito, nagbakante ang Memory Saver ng memory para sa iba pang gawain. Puwede mo itong baguhin anumang oras sa <ph name="SETTINGS_LINK" />.</translation>
 <translation id="7637593984496473097">Hindi sapat ang espasyo sa disk</translation>
 <translation id="7639914187072011620">Hindi na-fetch ang URL sa pag-redirect ng SAML mula sa server</translation>
 <translation id="764017888128728">Awtomatiko kang sina-sign in ng <ph name="PASSWORD_MANAGER_BRAND" /> sa mga kwalipikadong site gamit ang mga password na na-save mo.</translation>
@@ -7097,6 +7128,7 @@
 <translation id="7728668285692163452">Malalapat ang pagbabago sa channel sa ibang pagkakataon</translation>
 <translation id="7730449930968088409">Kunan ang nilalaman ng iyong screen</translation>
 <translation id="7730683939467795481">Binago ng extension na "<ph name="EXTENSION_NAME" />" ang page na ito</translation>
+<translation id="7735165285389721951">May isa pang tumatakbong pag-set up ng Steam. Pakihintay na makumpleto ito bago subukan ulit</translation>
 <translation id="7737115349420013392">Ipinapares sa "<ph name="DEVICE_NAME" />" ...</translation>
 <translation id="7737846262459425222">Puwede mo itong baguhin anumang oras sa Mga Setting &gt; Google Assistant &gt; Konteksto ng screen.</translation>
 <translation id="7737948071472253612">Hindi pinapayagang gamitin ang iyong camera</translation>
@@ -7395,6 +7427,7 @@
 Key File: <ph name="KEY_FILE" />
 
 Ilagay ang iyong key file sa ligtas na lugar. Kailangan mo ito upang lumikha ng mga bagong bersyon ng iyong extension.</translation>
+<translation id="8001100670809322641">Maghintay nang ilang minuto at subukan ulit</translation>
 <translation id="8002274832045662704">Advanced na configuration ng printer</translation>
 <translation id="8002670234429879764">Hindi na available ang <ph name="PRINTER_NAME" /></translation>
 <translation id="8004092996156083991">Ipapaalam namin sa iyo kung nakompromiso ang mga password mo.</translation>
@@ -7404,6 +7437,7 @@
 <translation id="8008356846765065031">Nadiskonekta ang Internet. Pakisuri ang iyong koneksyon sa internet.</translation>
 <translation id="8009225694047762179">Pamahalaan ang Mga Password</translation>
 <translation id="8011372169388649948">Inilipat ang '<ph name="BOOKMARK_TITLE" />.'</translation>
+<translation id="8011875486979733097">Hindi ma-install ang Steam</translation>
 <translation id="8012647001091218357">Hindi namin makaugnayan ang iyong mga magulang sa sandaling ito. Pakisubukang muli.</translation>
 <translation id="8013993649590906847">Kung hindi sapat ang deskripsyon ng isang larawan, susubukan ng Chrome na ayusin ito para sa iyo. Para gumawa ng mga deskripsyon, ipinapadala ang mga larawan sa Google.</translation>
 <translation id="8014154204619229810">Kasalukuyang tumatakbo ang updater. I-refresh pagkatapos ng isang minuto upang muling suriin.</translation>
@@ -7494,6 +7528,7 @@
 <translation id="808894953321890993">Palitan ang password</translation>
 <translation id="8090234456044969073">Basahin ang isang listahan ng iyong mga pinakamadalas bisitahing website</translation>
 <translation id="8090513782447872344">Puwede kang bumalik anumang oras para tingnan ulit</translation>
+<translation id="809312780580957751">Hindi ma-install ang Steam sa device na ito</translation>
 <translation id="8093359998839330381">Hindi tumutugon ang <ph name="PLUGIN_NAME" /></translation>
 <translation id="8095105960962832018"><ph name="BEGIN_PARAGRAPH1" />Mag-back up sa Google Drive. Madaling i-restore ang iyong data o magpalit ng device anumang oras. Kabilang sa iyong backup ang data ng app.<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />Ina-upload sa Google ang iyong mga backup at ine-encrypt gamit ang password ng Google Account mo.<ph name="END_PARAGRAPH2" />
@@ -7589,6 +7624,7 @@
 <translation id="8177318697334260664">{NUM_TABS,plural, =1{Ilipat ang tab sa bagong window}one{Maglipat ng mga tab sa bagong window}other{Maglipat ng mga tab sa bagong window}}</translation>
 <translation id="8179188928355984576">Hindi ginagamit sa mga Android app</translation>
 <translation id="8179976553408161302">Enter</translation>
+<translation id="8180785270975217276">Na-on ang Energy Saver</translation>
 <translation id="8180786512391440389">Magagawa ng "<ph name="EXTENSION" />" na magbasa at magtanggal ng mga larawan, video, at sound file sa mga may check na lokasyon.</translation>
 <translation id="8181215761849004992">Hindi maisali sa domain. Suriin ang iyong account para makita kung mayroon kang sapat na mga pribilehiyo para magdagdag ng mga device.</translation>
 <translation id="8182105986296479640">Hindi tumutugon ang application.</translation>
@@ -7711,6 +7747,7 @@
 <translation id="828642162569365647">Pinoprotektahan ng password o PIN na ito ang iyong data sa <ph name="DEVICE_TYPE" /> na ito at ang anumang impormasyong ia-access mo mula sa iyong telepono. Kakailanganin mong mag-unlock sa bawat pagkakataong mag-wake mula sa sleep ang iyong <ph name="DEVICE_TYPE" />.</translation>
 <translation id="8287902281644548111">Maghanap ayon sa API call/URL</translation>
 <translation id="8288032458496410887">I-uninstall ang <ph name="APP" />...</translation>
+<translation id="8288539437195337464">Tiyaking up to date ang iyong device at subukan ulit</translation>
 <translation id="8289128870594824098">Laki ng disk</translation>
 <translation id="8289509909262565712">Welcome sa <ph name="DEVICE_OS" /></translation>
 <translation id="8293206222192510085">Magdagdag ng Bookmark</translation>
@@ -8006,6 +8043,7 @@
 <translation id="8599864823732014237">Laktawan ang pag-enroll sa enterprise?</translation>
 <translation id="8601206103050338563">Pagpapatotoo ng Client sa TLS WWW</translation>
 <translation id="8601611099293226919">Ibahagi ang iyong screen gamit ang Google Lens</translation>
+<translation id="8602674530529411098">Mga App (Beta)</translation>
 <translation id="8602851771975208551">Ang isa pang program sa iyong computer ay nagdagdag ng app na maaaring magpabago sa paraan ng paggana ng Chrome.</translation>
 <translation id="8605428685123651449">Memory ng SQLite</translation>
 <translation id="8608618451198398104">Magdagdag ng ticket ng Kerberos</translation>
@@ -8692,6 +8730,7 @@
 <translation id="939598580284253335">Ilagay ang passphrase</translation>
 <translation id="939736085109172342">Bagong folder</translation>
 <translation id="942532530371314860">Nagbabahagi ng tab ng Chrome at audio ang <ph name="APP_NAME" />.</translation>
+<translation id="944799160843436808">Nagkaproblema sa pag-set up ng Steam sa Chromebook</translation>
 <translation id="945522503751344254">Magpadala ng feedback</translation>
 <translation id="947329552760389097">&amp;Siyasatin ang Mga Element</translation>
 <translation id="947526284350604411">Ang iyong sagot</translation>
@@ -8717,6 +8756,7 @@
 <translation id="968000525894980488">I-on ang mga serbisyo ng Google Play.</translation>
 <translation id="968037381421390582">I-pa&amp;ste at Hanapin ang “<ph name="SEARCH_TERMS" />”</translation>
 <translation id="969096075394517431">Palitan ang mga wika</translation>
+<translation id="969574218206797926">Nagbabakante ang Memory Saver ng memory mula sa mga hindi aktibong app para magamit ito ng mga aktibong tab at iba pang app</translation>
 <translation id="970047733946999531">{NUM_TABS,plural, =1{1 Tab}one{# Tab}other{# na Tab}}</translation>
 <translation id="971510864672937292">I-clear ang data ng site at mga pahintulot para sa <ph name="SITE_NAME" /> at lahat ng site sa ilalim nito?</translation>
 <translation id="971774202801778802">URL ng Bookmark</translation>
diff --git a/chrome/app/resources/generated_resources_fr.xtb b/chrome/app/resources/generated_resources_fr.xtb
index 940e8ae..16013c7b 100644
--- a/chrome/app/resources/generated_resources_fr.xtb
+++ b/chrome/app/resources/generated_resources_fr.xtb
@@ -8249,6 +8249,7 @@
 <translation id="8838601485495657486">Opaque</translation>
 <translation id="8838770651474809439">Hamburger</translation>
 <translation id="8838778928843281408">Gérer les téléphones</translation>
+<translation id="883924185304953854">Rechercher par image</translation>
 <translation id="8841843049738266382">Accéder aux comptes utilisateur sur liste d'autorisation et les modifier</translation>
 <translation id="8842594465773264717">Supprimer cette empreinte digitale</translation>
 <translation id="8845001906332463065">Obtenir de l'aide</translation>
diff --git a/chrome/app/resources/generated_resources_gl.xtb b/chrome/app/resources/generated_resources_gl.xtb
index caf0dd5..2c7cff3 100644
--- a/chrome/app/resources/generated_resources_gl.xtb
+++ b/chrome/app/resources/generated_resources_gl.xtb
@@ -8239,6 +8239,7 @@
 <translation id="8838601485495657486">Opaco</translation>
 <translation id="8838770651474809439">Hamburguesa</translation>
 <translation id="8838778928843281408">Xestionar teléfonos</translation>
+<translation id="883924185304953854">Buscar por imaxe</translation>
 <translation id="8841843049738266382">Ler e cambiar a lista de usuarios permitidos</translation>
 <translation id="8842594465773264717">Eliminar esta impresión dixital</translation>
 <translation id="8845001906332463065">Obter axuda</translation>
diff --git a/chrome/app/resources/generated_resources_gu.xtb b/chrome/app/resources/generated_resources_gu.xtb
index c9ed341..2da9bc5 100644
--- a/chrome/app/resources/generated_resources_gu.xtb
+++ b/chrome/app/resources/generated_resources_gu.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="gu">
 <translation id="1001033507375626788">આ નેટવર્ક તમારી સાથે શેર કરેલું છે</translation>
+<translation id="1002085272681738789">ટૅબ ફરી સક્રિય કરો</translation>
 <translation id="1003088604756913841">નવી <ph name="APP" /> વિંડોમાં લિંક ખોલો</translation>
 <translation id="100323615638474026">USB ડિવાઇસ (<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />)</translation>
 <translation id="1004218526896219317">સાઇટ ઍક્સેસ</translation>
@@ -322,6 +323,7 @@
 <translation id="1296911687402551044">પસંદ કરેલી ટૅબને પિન કરો</translation>
 <translation id="1297175357211070620">લક્ષ્યસ્થાન</translation>
 <translation id="129770436432446029"><ph name="EXPERIMENT_NAME" /> માટે પ્રતિસાદ મોકલો</translation>
+<translation id="130097046531636712">આ બૅકગ્રાઉન્ડની પ્રવૃત્તિ અને સ્મૂધ સ્ક્રોલિંગ જેવી વિઝ્યુઅલ ઇફેક્ટને મર્યાદિત કરીને બૅટરી પાવર વધારે છે</translation>
 <translation id="1301135395320604080"><ph name="ORIGIN" /> નીચે આપેલી ફાઇલોમાં ફેરફાર કરી શકે છે</translation>
 <translation id="1302227299132585524">Apple ઇવેન્ટમાંથી JavaScriptને મંજૂરી આપો</translation>
 <translation id="1303101771013849280">બુકમાર્ક HTML ફાઇલ</translation>
@@ -380,6 +382,7 @@
 <translation id="1361655923249334273">બિનવપરાયેલ</translation>
 <translation id="1362865166188278099">મિકેનિકલ સમસ્યા. પ્રિન્ટર ચેક કરો</translation>
 <translation id="1363585519747660921">USB પ્રિન્ટર માટે ગોઠવણી જરૂરી છે</translation>
+<translation id="136378536198524553">એનર્જી સેવર ચાલુ છે</translation>
 <translation id="1368603372088757436">તમારા <ph name="DEVICE_TYPE" /> પર Linuxને સપોર્ટ કરવામાં આવતો નથી. <ph name="LINK_BEGIN" />વધુ જાણો<ph name="LINK_END" /></translation>
 <translation id="1372841398847029212">તમારા એકાઉન્ટ સાથે સિંક કરો</translation>
 <translation id="1373176046406139583">તમારી સ્ક્રીન અનલૉક કરેલી હોય, ત્યારે કોણ તમારી સાથે શેર કરી શકે તેનું નિયંત્રણ તમારા ડિવાઇસની દૃશ્યતા વડે થાય છે. <ph name="LINK_BEGIN" />વધુ જાણો<ph name="LINK_END" /></translation>
@@ -645,6 +648,7 @@
 <translation id="1610272688494140697">ઍપના સેટિંગ</translation>
 <translation id="161042844686301425">સ્યાન</translation>
 <translation id="1611432201750675208">તમારું ડિવાઇસ લૉક કરેલું છે</translation>
+<translation id="1611776894942218234">ડિવાઇસ બીટા ચૅનલમાં હોવું આવશ્યક છે</translation>
 <translation id="1612019740169791082">ડિસ્કનું કદ બદલવાને સપોર્ટ કરવા માટે તમારા કન્ટેન્ટની ગોઠવણી કરેલી નથી. Linux માટે આરક્ષિત રાખેલી સ્પેસની માત્રાને ગોઠવવા માટે, બૅકઅપ લો અને પછી નવા કન્ટેનરમાં રિસ્ટોર કરો.</translation>
 <translation id="1613019471223620622"><ph name="DOMAIN" /> પર <ph name="USERNAME" />નો પાસવર્ડ બતાવો</translation>
 <translation id="1613149688105334014">ડિસેમ્બર 2022 પછી Chrome ઍપના જૂના વર્ઝન ખૂલશે નહીં. નવું વર્ઝન ઉપલબ્ધ છે કે નહીં તે તમે ચેક કરી શકો છો.</translation>
@@ -1115,6 +1119,7 @@
 <translation id="2034346955588403444">અન્ય WiFi નેટવર્ક ઉમેરો</translation>
 <translation id="2035211704574173780">ગ્રેસ્કેલ</translation>
 <translation id="203574396658008164">લૉક સ્ક્રીનમાંથી નોંધ લેવાનું ચાલુ કરો</translation>
+<translation id="2036514476578229158">તમે આ સાઇટની મુલાકાત લેવા કહ્યું. તમારા માતાપિતા Family Linkમાં જવાબ આપી શકે છે.</translation>
 <translation id="2037445849770872822">આ Google એકાઉન્ટ માટે નિરીક્ષણ સેટ કરવામાં આવ્યું છે. વધુ પેરેંટલ કન્ટ્રોલ સેટ અપ કરવા માટે, ચાલુ રાખો પસંદ કરો.
 
 અન્યથા, હમણાં સાઇન આઉટ કરો જેથી આ એકાઉન્ટમાં કરેલા ફેરફારો આ ડિવાઇસ પર દેખાશે.
@@ -1200,6 +1205,7 @@
 <translation id="2098805196501063469">બાકીના પાસવર્ડ ચેક કરો</translation>
 <translation id="2099686503067610784">સર્વર પ્રમાણપત્ર "<ph name="CERTIFICATE_NAME" />"ને ડિલીટ કરી દઈએ?</translation>
 <translation id="2100273922101894616">સ્વતઃ સાઇન-ઇન</translation>
+<translation id="2100986609271491802">આ ડિવાઇસ હાલમાં Chromebook પર Steamને સપોર્ટ કરતું નથી</translation>
 <translation id="2101225219012730419">વર્ઝન:</translation>
 <translation id="2102396546234652240">સાઇટને તમારા માઇક્રોફોનનો ઉપયોગ કરવાની મંજૂરી આપશો નહીં</translation>
 <translation id="2102495993840063010">Android ઍપ્લિકેશનો</translation>
@@ -1235,6 +1241,7 @@
 <translation id="2135787500304447609">&amp;ફરી શરૂ કરો</translation>
 <translation id="2136372518715274136">નવો પાસવર્ડ દાખલ કરો</translation>
 <translation id="2136476978468204130">તમે દાખલ કરેલો પાસફ્રેઝ ખોટો છે</translation>
+<translation id="2137891579555018930">પરવાનગીની રાહ જોઈ રહ્યાં છીએ...</translation>
 <translation id="2138398485845393913">"<ph name="DEVICE_NAME" />" પર કનેક્શન હજી પણ પ્રક્રિયામાં છે</translation>
 <translation id="2139919072249842737">સેટઅપ કરો બટન</translation>
 <translation id="2140788884185208305">બૅટરીની ક્ષમતા</translation>
@@ -1496,6 +1503,9 @@
 <translation id="2350133097354918058">ફરીથી લોડ કર્યું</translation>
 <translation id="2350182423316644347">ઍપ્લિકેશન શરૂ કરી રહ્યું છે...</translation>
 <translation id="235028206512346451">જો તમે તમારા ડિવાઇસથી દૂર હટી જાઓ, તો તમારી સ્ક્રીન ઑટોમૅટિક રીતે લૉક થઈ જશે. જ્યારે તમે તમારા ડિવાઇસની સામે હાજર રહો, ત્યારે તમારી સ્ક્રીન વધુ સમય માટે સક્રિય રહેશે. જો તમે કોઈ લૉક સ્ક્રીનનો ઉપયોગ કરતા ન હો, તો તમારું ડિવાઇસ લૉક થવાને બદલે નિષ્ક્રિય થઈ જશે.</translation>
+<translation id="2350866610930767288"><ph name="BEGIN_PARAGRAPH1" />જો તમને ડેમો મોડના ઇન્સ્ટૉલેશન દરમિયાન છૂટક વેપારીના સ્ટોરનો ID કોડ દાખલ કરવા માટેની સૂચનાઓ પ્રાપ્ત થાય, તો કૃપા કરીને તેને જમણી બાજુએ દાખલ કરો*.  અન્યથા, તમે આ ફીલ્ડ ખાલી રાખીને ચાલુ રાખી શકો છો.<ph name="END_PARAGRAPH1" />
+    <ph name="BEGIN_PARAGRAPH2" />તમે કોડ વિના પણ ડેમો મોડ ઇન્સ્ટૉલ કરી શકશો, પણ જો તમારા સ્ટોર માટે તે લાગુ પડતું હોય, તો આ કોડ દાખલ કરવો મહત્ત્વપૂર્ણ છે.<ph name="END_PARAGRAPH2" />
+    <ph name="BEGIN_PARAGRAPH3" />*નોંધ: Google આ કોડનો ઉપયોગ ડિવાઇસને ડેમો મોડનું કયું વર્ઝન પ્રાપ્ત થવું જોઈએ તે ઓળખવા માટે અને ડેમો મોડનો વપરાશ માપવા માટે કરે છે.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="2352495879228166246">{NUM_ITEMS,plural, =1{1 આઇટમ}one{{NUM_ITEMS} આઇટમ}other{{NUM_ITEMS} આઇટમ}}</translation>
 <translation id="2352662711729498748">&lt; 1 MB</translation>
 <translation id="2352810082280059586">લૉક સ્ક્રીન નોંધ ઑટોમૅટિક રીતે <ph name="LOCK_SCREEN_APP_NAME" /> પર સાચવવામાં આવે છે. તમારી સૌથી તાજેતરની નોંધ લૉક સ્ક્રીન પર રહેશે.</translation>
@@ -1946,6 +1956,7 @@
 <translation id="2776560192867872731"><ph name="DEVICE_NAME" /> માટે ડિવાઇસનું નામ બદલો</translation>
 <translation id="2777251078198759550">આ કન્ટેનર ડિલીટ કરો</translation>
 <translation id="2778471504622896352">ChromeOS લૉન્ચરમાં રિમોટ ઍપ ઉમેરો</translation>
+<translation id="2781120507965857989">આ અને જ્યાં પણ તમે સિંક કરી રહ્યાં હો તે ડિવાઇસ પર તમારા બુકમાર્ક, પાસવર્ડ અને ઇતિહાસ જેવું બીજું ઘણું મેળવવા માટે, સિંકની સુવિધા ચાલુ કરો. Search અને Googleની અન્ય સેવાઓને મનગમતી બનાવવા માટે, Google તમારા ઇતિહાસનો ઉપયોગ કરી શકે છે.</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2782104745158847185">Linux ઍપ્લિકેશન ઇન્સ્ટૉલ કરવામાં ભૂલ</translation>
 <translation id="2783298271312924866">ડાઉનલોડ કરેલ</translation>
@@ -1966,6 +1977,7 @@
 <translation id="2792697226874849938">પ્રતિબંધની છબી</translation>
 <translation id="2794233252405721443">સાઇટ અવરોધિત કરી</translation>
 <translation id="2794522004398861033">ઇ-સિમનું સેટઅપ કરવા માટે વાઇ-ફાઇ અથવા ઇથરનેટથી કનેક્ટ થાઓ</translation>
+<translation id="2795074478966352573">Family Link દ્વારા મેનેજ થતા હોય તેવા એકાઉન્ટને હજી પણ સપોર્ટ કરવામાં આવતો નથી</translation>
 <translation id="2795716239552913152">સંબંધિત સુવિધાઓ માટે અથવા સ્થાનિક સમાચાર કે નજીકમાંની દુકાનો જેવી માહિતી માટે, સાઇટ સામાન્ય રીતે તમારા સ્થાનનો ઉપયોગ કરે છે</translation>
 <translation id="2796424461616874739">"<ph name="DEVICE_NAME" />" થી કનેક્ટ કરતી વખતે પ્રમાણીકરણ સમય સમાપ્ત થયો.</translation>
 <translation id="2796740370559399562">કુકીઝને મંજૂરી આપવાનું ચાલુ રાખો</translation>
@@ -2151,6 +2163,7 @@
 <translation id="2949289451367477459">સ્થાનનો ઉપયોગ કરો. સ્થાનની પરવાનગી ધરાવતી ઍપ અને સેવાઓને આ ડિવાઇસના સ્થાનનો ઉપયોગ કરવાની મંજૂરી આપો. Google સમય-સમય પર સ્થાન ડેટા એકત્રિત કરી શકે છે અને આ ડેટાને સ્થાન સચોટતા અને સ્થાન-આધારિત સેવાઓને બહેતર બનાવવા માટે અનામ રીતે ઉપયોગમાં લઈ શકે છે. <ph name="BEGIN_LINK1" />વધુ જાણો<ph name="END_LINK1" /></translation>
 <translation id="2950666755714083615">મને સાઇન અપ કરો</translation>
 <translation id="2953019166882260872">તમારા ફોનને કેબલથી કનેક્ટ કરો</translation>
+<translation id="2953218713108551165"><ph name="SITE" /> માટે નોટિફિકેશનની મંજૂરી નથી. તમને તમારી આગલી મુલાકાત વખતે ફરી પૂછવામાં આવશે.</translation>
 <translation id="2956070239128776395">ગ્રૂપમાં નેસ્ટ કરેલો વિભાગ: <ph name="ERROR_LINE" /></translation>
 <translation id="2958721676848865875">પૅક એક્સટેન્શનની ચેતવણી</translation>
 <translation id="2959127025785722291">કંઈક ખોટું થયું. સ્કૅન કરવાની પ્રક્રિયા પૂર્ણ થઈ શકી ન હતી. કૃપા કરીને ફરી પ્રયાસ કરો.</translation>
@@ -2859,6 +2872,7 @@
 <translation id="3665919494326051362">વર્તમાન વર્ઝન <ph name="CURRENT_VERSION" /> છે</translation>
 <translation id="3670113805793654926">કોઈ પણ વિક્રેતા પાસે ઉપલબ્ધ ડિવાઇસની શ્રેણી</translation>
 <translation id="3670229581627177274">Bluetooth ચાલુ કરો</translation>
+<translation id="3672663996348587094"><ph name="ORIGIN" /> પર "<ph name="EXTENSIONS_REQUESTING_ACCESS" />"ને મંજૂરી આપવા માટે ક્લિક કરો:</translation>
 <translation id="3672681487849735243">એક ફેક્ટરી ભૂલ શોધવામાં આવી છે</translation>
 <translation id="3673097791729989571"><ph name="SAML_DOMAIN" /> દ્વારા સાઇન ઇન કરવાની સુવિધા હોસ્ટ કરવામાં આવી છે</translation>
 <translation id="3673622964532248901">આ ડિવાઇસ પર કાસ્ટ કરવાની તમે મંજૂરી ધરાવતા નથી.</translation>
@@ -3374,6 +3388,7 @@
 <translation id="4132183752438206707">Google Play Store પરથી ઍપ મેળવો</translation>
 <translation id="4132364317545104286">ઇ-સિમ પ્રોફાઇલનું નામ બદલો</translation>
 <translation id="4133076602192971179">તમારો પાસવર્ડ બદલવા માટે ઍપ ખોલો</translation>
+<translation id="4134818201340504801">સેટઅપ પૂર્ણ કરવા માટે પર્યાપ્ત સ્ટોરેજ ઉપલબ્ધ નથી. કૃપા કરીને સ્ટોરેજ ખાલી કરો અને ફરી પ્રયાસ કરો</translation>
 <translation id="4135746311382563554">Google Chrome અને Chrome OSની વધારાની સેવાની શરતો</translation>
 <translation id="4136203100490971508">રાત્રિ પ્રકાશ સૂર્યોદય સમયે ઑટોમૅટિક રીતે બંધ થઈ જશે</translation>
 <translation id="41365691917097717">ચાલુ રાખવાથી Android ઍપ બનાવવા અને તેનું પરીક્ષણ કરવા માટે ADB ડિબગીંગ ચાલુ થશે. ધ્યાનમાં રાખો કે આ ક્રિયા દ્વારા ચકાસણી થઈ ન હોય એવી Android ઍપના ઇન્સ્ટૉલેશનની મંજૂરી આપે છે અને ફેક્ટરી રીસેટ બંધ કરવું જરૂરી છે.</translation>
@@ -3610,6 +3625,7 @@
 <translation id="4378556263712303865">ઉપકરણની માગણી</translation>
 <translation id="4379281552162875326">"<ph name="APP_NAME" />"ને અનઇન્સ્ટૉલ કરીએ?</translation>
 <translation id="4380648069038809855">પૂર્ણ-સ્ક્રીનમાં દાખલ થયા</translation>
+<translation id="4383048856908088702">જ્યારે આ ટૅબ નિષ્ક્રિય હતું, ત્યારે મેમરી સેવરે અન્ય કાર્યો માટે <ph name="MEMORY_VALUE" /> મેમરી ખાલી કરી હતી. <ph name="SETTINGS_LINK" />માં તમે આને કોઈપણ સમયે બદલી શકો છો.</translation>
 <translation id="4384312707950789900">પસંદગીમાં ઉમેરો</translation>
 <translation id="4384652540891215547">એક્સટેન્શન સક્રિય કરો</translation>
 <translation id="4384886290276344300">કીબોર્ડના સેટિંગ બદલો</translation>
@@ -3687,6 +3703,7 @@
 <translation id="4451479197788154834">તમારો પાસવર્ડ આ ડિવાઇસ પર અને તમારા Google એકાઉન્ટમાં સચવાયો.</translation>
 <translation id="4451757071857432900">ઘૃણાસ્પદ અથવા ભ્રામક જાહેરાતો બતાવતી સાઇટ પર બ્લૉક કરી છે (સુઝાવ આપીએ છીએ)</translation>
 <translation id="4453946976636652378"><ph name="SEARCH_ENGINE_NAME" /> શોધો અથવા URL ટાઇપ કરો</translation>
+<translation id="4458535500699390320">જ્યારે આ ટૅબ નિષ્ક્રિય હતું, ત્યારે મેમરી સેવરે અન્ય કાર્યો માટે મેમરી ખાલી કરી હતી. સેટિંગમાં તમે આને કોઈપણ સમયે બદલી શકો છો.</translation>
 <translation id="4459169140545916303"><ph name="DEVICE_LAST_ACTIVATED_TIME" /> દિવસ પહેલાં સક્રિય</translation>
 <translation id="4460014764210899310">અલગ થયેલું ગ્રૂપ</translation>
 <translation id="4462159676511157176">કસ્ટમ નામ સર્વર્સ</translation>
@@ -3858,6 +3875,7 @@
 <translation id="4613271546271159013">જ્યારે તમે કોઈ નવું ટૅબ ખોલો છો ત્યારે જે પેજ બતાવવામાં આવે છે તેને એક્સ્ટેન્શને બદલ્યું છે.</translation>
 <translation id="4615586811063744755">કોઈ કુકી પસંદ કરી નથી</translation>
 <translation id="461661862154729886">ઊર્જાનો સૉર્સ</translation>
+<translation id="461676224702246336">આ સાઇટ માટે ક્લિક પર</translation>
 <translation id="4617001782309103936">ઘણું નાનું</translation>
 <translation id="4617019240346358451">"<ph name="EXTENSION_NAME" />"નો ઉપયોગ કરવા માટે પેજ ફરીથી લોડ કરો</translation>
 <translation id="4617270414136722281">એક્સ્ટેન્શન વિકલ્પો</translation>
@@ -3980,6 +3998,7 @@
 <translation id="4728558894243024398">પ્લેટફોર્મ</translation>
 <translation id="4728570203948182358"><ph name="BEGIN_LINK" />તમારા વ્યવસ્થાપક<ph name="END_LINK" /> દ્વારા હાનિકારક સૉફ્ટવેર ચેક કરવાની સુવિધા બંધ કરવામાં આવી છે</translation>
 <translation id="4730492586225682674">લૉક સ્ક્રીન પર સ્ટાઇલ વડે એકદમ નવી નોંધ લેવાના સેટિંગ</translation>
+<translation id="4730888769809690665"><ph name="SITE" /> માટે નોટિફિકેશનની મંજૂરી આપેલી છે</translation>
 <translation id="473140019006744096">આ અપડેટ પૂર્ણ કરવા માટે આ ડિવાઇસ પર પૂરતી સ્પેસ નથી. તમારા ડિવાઇસ પર <ph name="NECESSARY_SPACE" /> સાફ કરો અને ફરીથી પ્રયાસ કરો.</translation>
 <translation id="4733161265940833579"><ph name="BATTERY_PERCENTAGE" />% (ડાબે)</translation>
 <translation id="4733793249294335256">સ્થાન</translation>
@@ -4110,6 +4129,7 @@
 <translation id="4858913220355269194">Fritz</translation>
 <translation id="4862642413395066333">OCSP પ્રતિસાદોને સાઇન ઇન કરે છે</translation>
 <translation id="4863769717153320198"><ph name="WIDTH" /> x <ph name="HEIGHT" /> જેવું લાગે છે (ડિફૉલ્ટ)</translation>
+<translation id="486459320933704969">માતાપિતા અથવા વાલીએ જણાવવું આવશ્યક છે કે જો તમે આ વેબસાઇટની મુલાકાત લો, તો તેમાં કોઈ વાંધો નથી</translation>
 <translation id="4864805589453749318">સ્કૂલ એકાઉન્ટ ઉમેરવાની પરવાનગી આપી રહ્યાં છે તે માતાપિતાને પસંદ કરો.</translation>
 <translation id="486635084936119914">ડાઉનલોડ કર્યા પછી કેટલાક ફાઇલ પ્રકારોને ઑટોમૅટિક રીતે ખોલો</translation>
 <translation id="4868281708609571334">Google Assistantને <ph name="SUPERVISED_USER_NAME" />નો વૉઇસ ઓળખતા શીખવો</translation>
@@ -4282,6 +4302,7 @@
 <translation id="5032430150487044192">QR કોડ બનાવી શકતા નથી</translation>
 <translation id="5033137252639132982">મોશન સેન્સરનો ઉપયોગ કરવાની મંજૂરી નથી</translation>
 <translation id="5033266061063942743">ભૌમિતિક આકાર</translation>
+<translation id="5034000993065629381">કૃપા કરીને તમારા ઍડમિનિસ્ટ્રેટરનો સંપર્ક કરો</translation>
 <translation id="5037676449506322593">બધા પસંદ કરો</translation>
 <translation id="5038818366306248416">અગાઉ તમે <ph name="ORIGIN" /> પર કોઈપણ એક્સ્ટેન્શનને મંજૂરી ન આપવાનું પસંદ કર્યું હતું</translation>
 <translation id="5039696241953571917">સાચવેલા પાસવર્ડને તમારા Google એકાઉન્ટમાં જુઓ અને મેનેજ કરો</translation>
@@ -4412,6 +4433,7 @@
 <translation id="5161251470972801814"><ph name="VENDOR_NAME" />ના USB ડિવાઇસ</translation>
 <translation id="5162905305237671850"><ph name="DEVICE_TYPE" /> બ્લૉક કરવામાં આવ્યું છે</translation>
 <translation id="5163910114647549394">ટૅબને ટૅબસ્ટ્રિપના અંતમાં ખસેડી</translation>
+<translation id="5164530241085602114"><ph name="SITE" /> માટે નોટિફિકેશનની મંજૂરી નથી</translation>
 <translation id="516747639689914043">હાઇપરટેક્સ્ટ ટ્રાન્સપોર્ટ પ્રોટોકૉલ (HTTP)</translation>
 <translation id="5170568018924773124">ફોલ્ડરમાં બતાવો</translation>
 <translation id="5171045022955879922">URL શોધો અથવા લખો</translation>
@@ -4514,6 +4536,7 @@
 <translation id="5269977353971873915">પ્રિન્ટ કાઢવામાં નિષ્ફળ</translation>
 <translation id="5273806377963980154">સાઇટના URLમાં ફેરફાર કરો</translation>
 <translation id="5275084684151588738">વપરાશકર્તા શબ્દકોશો</translation>
+<translation id="5275100789567222478">જ્યારે મારી બૅટરી <ph name="PERCENT" />% અથવા ઓછી હોય, માત્ર ત્યારે જ ચાલુ કરો</translation>
 <translation id="5275338516105640560">સાચવેલા ટૅબ ગ્રૂપનું બટન</translation>
 <translation id="5275352920323889391">કૂતરું</translation>
 <translation id="527605719918376753">ટૅબ મ્યૂટ કરો</translation>
@@ -4532,6 +4555,7 @@
 <translation id="5285635972691565180"><ph name="DISPLAY_ID" /> બતાવો</translation>
 <translation id="5286194356314741248">સ્કેનિંગ</translation>
 <translation id="5287425679749926365">તમારા એકાઉન્ટ્સ</translation>
+<translation id="5288106344236929384"><ph name="DOMAIN" /> પર <ph name="USERNAME" /> માટે વધુ ક્રિયાઓ, પાસકી વિકલ્પો</translation>
 <translation id="5288678174502918605">બંધ કરેલા ટૅબ ફ&amp;રીથી ખોલો</translation>
 <translation id="52895863590846877">પેજ <ph name="LANGUAGE" />માં નથી</translation>
 <translation id="52912272896845572">ખાનગી કી ફાઇલ અમાન્ય છે.</translation>
@@ -4727,6 +4751,7 @@
 <translation id="5473099001878321374">આગળ વધીને, તમે સંમત થાઓ છો કે આ ડિવાઇસ Google, તમારા બાળકના મોબાઇલ ઑપરેટર અને આ ડિવાઇસના નિર્માતા તરફથી સંભવિત રીતે સેલ્યુલર ડેટાનો ઉપયોગ કરીને, અપડેટ અને ઍપને ઑટોમૅટિક રીતે ડાઉનલોડ અને ઇન્સ્ટૉલ પણ કરી શકે છે. આમાંની અમુક ઍપ, ઍપમાંથી ખરીદીઓની ઑફર કરી શકે છે.</translation>
 <translation id="5473156705047072749">{NUM_CHARACTERS,plural, =1{પિન ઓછામાં ઓછો એક અક્ષરનો હોવો આવશ્યક છે}one{પિન ઓછામાં ઓછો # અક્ષરનો હોવો આવશ્યક છે}other{પિન ઓછામાં ઓછો # અક્ષરનો હોવો આવશ્યક છે}}</translation>
 <translation id="5474859849784484111"><ph name="MANAGER" /> માટે જરૂરી છે કે તમે હમણાં વાઇ-ફાઇથી કનેક્ટ થાઓ અને અપડેટ ડાઉનલોડ કરો. અથવા મીટર્ડ (ડેટા નિયંત્રણ) કનેક્શન પરથી ડાઉનલોડ કરો (શુલ્ક લાગુ થઈ શકે છે).</translation>
+<translation id="5476016146231427848">Chromebook પર Steamનો ઉપયોગ કરવા માટે, કૃપા કરીને તમારું ડિવાઇસ ફરી શરૂ કરો</translation>
 <translation id="5481273127572794904">એકથી વધારે ફાઇલો ઑટોમૅટિક રીતે ડાઉનલોડ કરવાની મંજૂરી નથી</translation>
 <translation id="5481941284378890518">નજીકના પ્રિન્ટર્સ ઉમેરો</translation>
 <translation id="5483785310822538350">ફાઇલ અને ઉપકરણ ઍક્સેસને રદબાતલ કરો</translation>
@@ -4947,6 +4972,7 @@
 <translation id="5683806393796685434">કૃપા કરીને તમારો સક્રિયકરણનો કોડ દાખલ કરો</translation>
 <translation id="5684181005476681636">વાઇ-ફાઇની વિગતો</translation>
 <translation id="5684661240348539843">સંપત્તિ ઓળખકર્તા</translation>
+<translation id="5684969244627829799">કૃપા કરીને વપરાશકર્તા એકાઉન્ટમાં સાઇન ઇન કરો અને ફરી પ્રયાસ કરો</translation>
 <translation id="5687326903064479980">સમયઝોન</translation>
 <translation id="5687935527303996204">તમારા ડિવાઇસને પ્લગ-ઇન કર્યુ હોવાની ખાતરી કરો અને તેને બંધ કરશો નહીં. ઇન્સ્ટૉલેશનમાં 20 મિનિટ જેટલો સમય લાગી શકે છે. ઇન્સ્ટૉલેશન પૂર્ણ થઈ ગયા પછી તમારું ડિવાઇસ ઑટોમૅટિક રીતે શટ ડાઉન થઈ જશે.</translation>
 <translation id="5689516760719285838">સ્થાન</translation>
@@ -5073,6 +5099,7 @@
 <translation id="5805697420284793859">વિન્ડો મેનેજર</translation>
 <translation id="5806447147478173900">પ્રદર્શિત થયેલી સાઇટ દ્વારા કરવામાં આવેલો સ્ટોરેજનો કુલ વપરાશ: <ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">0° (ડિફૉલ્ટ)</translation>
+<translation id="5810603387504252966">#borealis-enabledને Chrome://flagsમાં ચાલુ કરેલું હોવું આવશ્યક છે</translation>
 <translation id="5810809306422959727">આ એકાઉન્ટ માતાપિતાના યોગ્ય નિયંત્રણો માટે યોગ્યતા ધરાવતું નથી</translation>
 <translation id="5811614940486072060">આ ફાઇલ સામાન્ય રીતે ડાઉનલોડ કરવામાં આવતી નથી અને તે જોખમી હોઈ શકે છે</translation>
 <translation id="5812674658566766066">વધુ જુઓ</translation>
@@ -5152,6 +5179,7 @@
 <translation id="5882449899683447569">કંઈક ખોટું થયું અને તમારા પાસવર્ડ આયાત કરવામાં આવ્યા નથી</translation>
 <translation id="5882919346125742463">જાણીતા નેટવર્ક્સ</translation>
 <translation id="5883356647197510494"><ph name="PERMISSION_1" />, <ph name="PERMISSION_2" /> ઑટોમૅટિક રીતે બ્લૉક કરવામાં આવી</translation>
+<translation id="5884447826201752041">દરેક એક્સ્ટેન્શન માટે કસ્ટમાઇઝ કરો</translation>
 <translation id="5884474295213649357">આ ટૅબ USB ઉપકરણ સાથે કનેક્ટ થયેલ છે.</translation>
 <translation id="5885314688092915589">તમારી સંસ્થા આ પ્રોફાઇલ મેનેજ કરશે</translation>
 <translation id="5886009770935151472">આંગળી 1</translation>
@@ -5592,6 +5620,7 @@
 <translation id="6301300352769835063"><ph name="DEVICE_OS" />ને બહેતર બનાવવામાં સહાય કરવા માટે, Googleને તમારા હાર્ડવેર ડેટાનો ઉપયોગ કરવા દો. જો તમે નકારશો, તો પણ આ ડેટા યોગ્ય અપડેટ નક્કી કરવા માટે Googleને મોકલવામાં આવે છે, પરંતુ ન તો તેને સ્ટોર કરવામાં આવે છે કે ન તો તેનો અન્યથા ઉપયોગ કરવામાં આવે છે. g.co/flex/HWDataCollection પર વધુ જાણો.</translation>
 <translation id="630292539633944562">વ્યક્તિગત માહિતીના સૂચનો</translation>
 <translation id="6305607932814307878">વૈશ્વિક પૉલિસી:</translation>
+<translation id="6305909198255586420">કૃપા કરીને તમારી પ્રાથમિક પ્રોફાઇલનો ઉપયોગ કરીને ઇન્સ્ટૉલ કરો</translation>
 <translation id="6307990684951724544">સિસ્ટમ વ્યસ્ત છે</translation>
 <translation id="6308493641021088955"><ph name="EXTENSION_NAME" /> દ્વારા આપવામાં આવેલું સાઇન-ઇન</translation>
 <translation id="6308937455967653460">લિં&amp;કને આ રીતે સાચવો...</translation>
@@ -5915,6 +5944,7 @@
 <translation id="6608166463665411119">ઇ-સિમને રીસેટ કરો</translation>
 <translation id="6609478180749378879">તમે 'છૂપા મોડ'થી બહાર નીકળો, તે પછી સાઇન-ઇન ડેટા આ ડિવાઇસ પર સ્ટોર કરવામાં આવશે. તમે તમારા ડિવાઇસ વડે આ વેબસાઇટમાં થોડા સમય પછી સાઇન ઇન કરી શકશો.</translation>
 <translation id="6610002944194042868">અનુવાદ માટેના વિકલ્પો</translation>
+<translation id="6611907964265870728">કૃપા કરીને ખાતરી કરો કે તમારું ડિવાઇસ ઇન્ટરનેટ સાથે કનેક્ટેડ છે</translation>
 <translation id="6611972847767394631">તમારા ટૅબ અહીં મેળવો</translation>
 <translation id="6613668613087513143">આ અપડેટ પૂર્ણ કરવા માટે આ ડિવાઇસ પર પૂરતી સ્પેસ નથી. તમારા ડિવાઇસ પર <ph name="NECESSARY_SPACE" /> સાફ કરો અને તમારા Chrome બ્રાઉઝરમાંથી ફરીથી પ્રયાસ કરો.</translation>
 <translation id="6615455863669487791">મને બતાવો</translation>
@@ -6303,6 +6333,7 @@
 <translation id="697508444536771064">Linux શટ ડાઉન કરો</translation>
 <translation id="6975361011348772931">વાંચવા અને ફેરફાર કરવાની મંજૂરીની વિનંતી કરી છે</translation>
 <translation id="6978121630131642226">શોધ એન્જિન</translation>
+<translation id="6979041727349121225">એનર્જી સેવર</translation>
 <translation id="6979044105893951891">મેનેજ કરેલા અતિથિ સત્રો લૉન્ચ કરો અને બહાર નીકળો</translation>
 <translation id="6979158407327259162">Google Drive</translation>
 <translation id="6979440798594660689">મ્યૂટ કરો (ડિફૉલ્ટ)</translation>
@@ -6355,6 +6386,7 @@
 <translation id="7014174261166285193">ઇન્સ્ટોલેશન નિષ્ફળ થયું.</translation>
 <translation id="7014480873681694324">હાઇલાઇટ કાઢી નાખો</translation>
 <translation id="7014741021609395734">ઝૂમ લેવલ</translation>
+<translation id="7015088858756332848">Chromebook પર Steam લૉન્ચ કરી શકાઈ નથી. કૃપા કરીને ફરી પ્રયાસ કરો</translation>
 <translation id="7017004637493394352">ફરીથી "Ok Google" કહો</translation>
 <translation id="7017219178341817193">નવું પેજ ઉમેરો</translation>
 <translation id="7017354871202642555">વિંડો સેટ થઈ જાય પછી મોડને સેટ કરી શકાતો નથી.</translation>
@@ -6731,6 +6763,7 @@
 <translation id="7409854300652085600">બુકમાર્ક આયાત કર્યા.</translation>
 <translation id="7410344089573941623">પૂછો કે <ph name="HOST" /> તમારા કૅમેરા અને માઇક્રોફોનને ઍક્સેસ કરવા માંગે છે કે કેમ</translation>
 <translation id="7410852728357935715">કોઈ ડિવાઇસ પર કાસ્ટ કરો</translation>
+<translation id="7411614333737930931">કૃપા કરીને તમારું ડિવાઇસ ફરી શરૂ કરો અને ફરી પ્રયાસ કરો</translation>
 <translation id="741204030948306876">હા, હું સંમત છું</translation>
 <translation id="7412226954991670867">GPU મેમરી</translation>
 <translation id="7414464185801331860">18x</translation>
@@ -6961,6 +6994,7 @@
 <translation id="7635048370253485243">તમારા વ્યવસ્થાપકે પિન કરેલું છે</translation>
 <translation id="7636919061354591437">આ ડિવાઇસ પર ઇન્સ્ટૉલ કરો</translation>
 <translation id="7637253234491814483">તમારા કીબોર્ડના સૌથી ઉપરના જમણા ખૂણે પાવર બટનની બાજુમાં ફિંગરપ્રિન્ટ સેન્સરને ટચ કરો. તમારી ફિંગરપ્રિન્ટનો ડેટા સુરક્ષિત રીતે સ્ટોર કરવામાં આવે છે અને હંમેશાં તમારા <ph name="DEVICE_TYPE" />માં જ રહે છે.</translation>
+<translation id="7637272932128132922">જ્યારે આ ટૅબ નિષ્ક્રિય હતું, ત્યારે મેમરી સેવરે અન્ય કાર્યો માટે મેમરી ખાલી કરી હતી. <ph name="SETTINGS_LINK" />માં તમે આને કોઈપણ સમયે બદલી શકો છો.</translation>
 <translation id="7637593984496473097">ડિસ્કમાં પર્યાપ્ત સ્પેસ નથી</translation>
 <translation id="7639914187072011620">સર્વરમાંથી SAML રીડાયરેક્ટ URL લાવવામાં નિષ્ફળ રહ્યાં</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" />, તમને તમે સાચવેલા પાસવર્ડ વડે યોગ્ય હોય તેવી સાઇટમાં ઑટોમૅટિક રીતે સાઇન ઇન કરે છે.</translation>
@@ -7077,6 +7111,7 @@
 <translation id="7728668285692163452">ચૅનલ ફેરફાર પછીથી લાગુ થશે</translation>
 <translation id="7730449930968088409">તમારી સ્ક્રીનની કન્ટેન્ટ કેપ્ચર કરો</translation>
 <translation id="7730683939467795481">પેજને "<ph name="EXTENSION_NAME" />" એક્સ્ટેન્શન દ્વારા બદલવામાં આવ્યું હતું</translation>
+<translation id="7735165285389721951">Steamના સેટઅપની અન્ય પ્રક્રિયા ચાલી રહી છે. કૃપા કરીને ફરી પ્રયાસ કરતા પહેલાં, તેના પૂર્ણ થવાની રાહ જુઓ</translation>
 <translation id="7737115349420013392">"<ph name="DEVICE_NAME" />"ની સાથે જોડી બનાવો…</translation>
 <translation id="7737846262459425222">તમે આને કોઈપણ સમયે સેટિંગ &gt; Google Assistant &gt; સ્ક્રીન સંદર્ભમાં જઈને બદલી શકો છો.</translation>
 <translation id="7737948071472253612">તમારા કૅમેરાનો ઉપયોગ કરવાની મંજૂરી નથી</translation>
@@ -7369,6 +7404,7 @@
 <translation id="799570308305997052">WebView</translation>
 <translation id="7997826902155442747">પ્રાધાન્યતા પર પ્રક્રિયા કરો</translation>
 <translation id="7999229196265990314">નીચેની ફાઇલો બનાવાઈ: એક્સટેન્શન: <ph name="EXTENSION_FILE" />કી ફાઇલ: <ph name="KEY_FILE" />તમારી કી ફાઇલને સુરક્ષિત સ્થાન પર મૂકો. તમને તેની જરૂરિયાત તમારા એક્સટેન્શનના નવા વર્ઝન બનાવવા માટે પડશે.</translation>
+<translation id="8001100670809322641">કૃપા કરીને થોડી વાર રાહ જુઓ અને ફરીથી પ્રયાસ કરો</translation>
 <translation id="8002274832045662704">વિગતવાર પ્રિન્ટરની ગોઠવણી</translation>
 <translation id="8002670234429879764"><ph name="PRINTER_NAME" /> હવે ઉપલબ્ધ નથી</translation>
 <translation id="8004092996156083991">જો તમારા પાસવર્ડ સાથે ચેડાં કરાયેલા હોય, તો અમે તમને જણાવીશું.</translation>
@@ -7378,6 +7414,7 @@
 <translation id="8008356846765065031">ઇન્ટરનેટ ડિસ્કનેક્ટ કર્યું. કૃપા કરીને તમારું ઇન્ટરનેટ કનેક્શન તપાસો.</translation>
 <translation id="8009225694047762179">બધા પાસવર્ડ મેનેજ કરો</translation>
 <translation id="8011372169388649948">'<ph name="BOOKMARK_TITLE" />' ખસેડ્યું.</translation>
+<translation id="8011875486979733097">Steam ઇન્સ્ટૉલ કરી શકાતી નથી</translation>
 <translation id="8012647001091218357">અમે આ પળે તમારા વાલીઓ સુધી પહોંચી શક્યાં નથી. કૃપા કરીને ફરી પ્રયાસ કરો.</translation>
 <translation id="8013993649590906847">જો છબીમાં ઉપયોગી વર્ણન ન હોય, તો Chrome તમને વર્ણન પૂરું પાડવાનો પ્રયાસ કરશે. વર્ણન બનાવવા માટે, Googleને છબીઓ મોકલવામાં આવે છે.</translation>
 <translation id="8014154204619229810">અપડેટ કરનાર હાલમાં ચાલી રહ્યું છે. ફરીથી તપાસવા માટે થોડીવારમાં રિફ્રેશ કરો.</translation>
@@ -7468,6 +7505,7 @@
 <translation id="808894953321890993">પાસવર્ડ બદલો</translation>
 <translation id="8090234456044969073">તમારી મોટાભાગની અવારનાવર મુલાકાત લીધેલ વેબસાઇટ્સની સૂચિ વાંચો</translation>
 <translation id="8090513782447872344">તમે ફરીથી જોવા માટે કોઈપણ સમયે પાછા આવી શકો છો</translation>
+<translation id="809312780580957751">આ ડિવાઇસ પર Steam ઇન્સ્ટૉલ કરવાની પરવાનગી ન હોઈ શકે</translation>
 <translation id="8093359998839330381"><ph name="PLUGIN_NAME" /> પ્રતિસાદ આપી રહ્યું નથી</translation>
 <translation id="8095105960962832018"><ph name="BEGIN_PARAGRAPH1" />Google Driveમાં બૅકઅપ લો. કોઈપણ સમયે તમારો ડેટા સરળતાથી પાછો મેળવો અથવા ડિવાઇસ સ્વિચ કરો. તમારા બૅકઅપમાં ઍપનો ડેટા શામેલ હોય છે.<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />તમારા બૅકઅપ Google પર અપલોડ કરવામાં આવે છે અને Google એકાઉન્ટ પાસવર્ડનો ઉપયોગ કરીને એન્ક્રિપ્ટ કરવામાં આવે છે.<ph name="END_PARAGRAPH2" />
@@ -7563,6 +7601,7 @@
 <translation id="8177318697334260664">{NUM_TABS,plural, =1{ટૅબને નવી વિંડોમાં ખસેડો}one{ટૅબને નવી વિંડોમાં ખસેડો}other{ટૅબને નવી વિંડોમાં ખસેડો}}</translation>
 <translation id="8179188928355984576">Android ઍપ સાથે ઉપયોગ કરવામાં આવ્યો નથી</translation>
 <translation id="8179976553408161302">Enter</translation>
+<translation id="8180785270975217276">એનર્જી સેવર ચાલુ કર્યું</translation>
 <translation id="8180786512391440389">"<ph name="EXTENSION" />" આ તપાસાયેલા સ્થાનોમાં ફોટા, વીડિયો અને સાઉન્ડ ફાઇલોને વાંચી શકે છે.</translation>
 <translation id="8181215761849004992">ડોમેન જોડી શકાતું નથી. અમારી પાસે ઉપકરણો ઉમેરવા માટેના વિશેષાધિકાર છે કે નહીં તે જોવા માટે તમારું એકાઉન્ટ ચેક કરો.</translation>
 <translation id="8182105986296479640">ઍપ્લિકેશન ચાલી રહી નથી.</translation>
@@ -7685,6 +7724,7 @@
 <translation id="828642162569365647">આ પાસવર્ડ કે પિન આ <ph name="DEVICE_TYPE" /> પર તમારા ડેટાને અને તમે તમારા ફોન પરથી ઍક્સેસ કરતા હો એવી કોઈપણ માહિતીને સુરક્ષિત રાખે છે. જ્યારે તમારું <ph name="DEVICE_TYPE" /> ડિવાઇસ સ્લીપ મોડમાંથી બહાર આવે, ત્યારે પ્રત્યેક વખતે તમારે તેને અનલૉક કરવાની જરૂર રહેશે.</translation>
 <translation id="8287902281644548111">API કૉલ/URL અનુસાર શોધ કરો</translation>
 <translation id="8288032458496410887"><ph name="APP" />ને અનઇન્સ્ટૉલ કરો...</translation>
+<translation id="8288539437195337464">ખાતરી કરો કે તમારું ડિવાઇસ અપ ટૂ ડેટ છે અને ફરી પ્રયાસ કરો</translation>
 <translation id="8289128870594824098">ડિસ્કનું કદ</translation>
 <translation id="8289509909262565712"><ph name="DEVICE_OS" />માં તમારું સ્વાગત છે</translation>
 <translation id="8293206222192510085">બુકમાર્ક ઉમેરો</translation>
@@ -7979,6 +8019,7 @@
 <translation id="8599864823732014237">શું છૂટક એન્ટરપ્રાઇઝની નોંધણી છોડી દઈએ?</translation>
 <translation id="8601206103050338563">TLS WWW ક્લાયંટ પ્રમાણીકરણ</translation>
 <translation id="8601611099293226919">Google Lens વડે તમારી સ્ક્રીન શોધો</translation>
+<translation id="8602674530529411098">Apps (બીટા)</translation>
 <translation id="8602851771975208551">તમારા કમ્પ્યુટર પરના બીજા પ્રોગ્રામે એક ઍપ્લિકેશન ઉમેરી જે Chrome કાર્ય કરે છે તે રીતને બદલી શકે છે.</translation>
 <translation id="8605428685123651449">SQLite મેમરી</translation>
 <translation id="8608618451198398104">Kerberosની ટિકિટ ઉમેરો</translation>
@@ -8664,10 +8705,12 @@
 <translation id="939598580284253335">પાસફ્રેઝ દાખલ કરો</translation>
 <translation id="939736085109172342">નવું ફોલ્ડર</translation>
 <translation id="942532530371314860"><ph name="APP_NAME" />, Chrome ટૅબ અને ઑડિઓને શેર કરી રહી છે.</translation>
+<translation id="944799160843436808">Chromebook પર Steam સેટઅપ કરવામાં સમસ્યા આવી છે</translation>
 <translation id="945522503751344254">પ્રતિસાદ મોકલો</translation>
 <translation id="947329552760389097">&amp;ઘટકોની તપાસ કરો</translation>
 <translation id="947526284350604411">તમારો જવાબ</translation>
 <translation id="947667444780368238"><ph name="ORIGIN" /> આ ફોલ્ડરમાં ફાઇલો ખોલી શકતું નથી, કારણ કે તેમાં સિસ્ટમ ફાઇલો શામેલ છે</translation>
+<translation id="949314938206378263">તમે આ સાઇટની મુલાકાત લેવા કહ્યું. તમારા માતાપિતા Family Linkમાં જવાબ આપી શકે છે.</translation>
 <translation id="950307215746360464">સેટઅપની માર્ગદર્શિકા</translation>
 <translation id="951991426597076286">નકારો</translation>
 <translation id="952471655966876828">ડિવાઇસ જ્યારે ચાલુ કરવામાં આવે અથવા ઉપયોગમાં હોય, ત્યારે તે ઑટોમૅટિક રીતે કનેક્ટ થઈ જશે</translation>
@@ -8688,6 +8731,7 @@
 <translation id="968000525894980488">Google Play સેવાઓ ચાલુ કરો.</translation>
 <translation id="968037381421390582">“<ph name="SEARCH_TERMS" />” પે&amp;સ્ટ કરો અને શોધો</translation>
 <translation id="969096075394517431">ભાષાઓ બદલો</translation>
+<translation id="969574218206797926">મેમરી સેવર નિષ્ક્રિય ટૅબમાંથી મેમરી ખાલી કરે છે જેથી તેનો ઉપયોગ સક્રિય ટૅબ અને અન્ય ઍપ દ્વારા કરી શકાય</translation>
 <translation id="970047733946999531">{NUM_TABS,plural, =1{1 ટેબ}one{# ટેબ્સ}other{# ટેબ્સ}}</translation>
 <translation id="971510864672937292"><ph name="SITE_NAME" /> અને તેની હેઠળ આવતી બધી સાઇટ માટે સાઇટનો ડેટા તેમજ પરવાનગીઓ સાફ કરીએ?</translation>
 <translation id="971774202801778802">URL ને બુકમાર્ક કરો</translation>
diff --git a/chrome/app/resources/generated_resources_hi.xtb b/chrome/app/resources/generated_resources_hi.xtb
index 0c43ff6..18fd8c30 100644
--- a/chrome/app/resources/generated_resources_hi.xtb
+++ b/chrome/app/resources/generated_resources_hi.xtb
@@ -579,7 +579,7 @@
 <translation id="1544588554445317666">फ़ाइल का पाथ छोटा करें या इसे किसी दूसरी जगह सेव करके देखें</translation>
 <translation id="1545177026077493356">स्वचालित किओस्क मोड</translation>
 <translation id="1545749641540134597">QR कोड स्कैन करें</translation>
-<translation id="1545775234664667895">थीम "<ph name="THEME_NAME" />" स्थापित की गई</translation>
+<translation id="1545775234664667895">थीम "<ph name="THEME_NAME" />" इंस्टॉल की गई</translation>
 <translation id="1546280085599573572">इस एक्सटेंशन ने यह बदल दिया है कि जब आप 'होम बटन' पर क्लिक करते हैं तब कौन सा पेज दिखाया जाए.</translation>
 <translation id="1546452108651444655"><ph name="CHILD_NAME" /> एक <ph name="EXTENSION_TYPE" /> इंस्टॉल करना चाहता है जो ये काम कर सकता है:</translation>
 <translation id="1547808936554660006">मैं जानता हूं कि पावरवॉश, इंस्टॉल की गई ई-सिम प्रोफ़ाइलों को नहीं हटाएगा</translation>
@@ -1525,7 +1525,7 @@
 <translation id="2358561147588818967">साइटें JavaScript का इस्तेमाल कर सकती हैं</translation>
 <translation id="2358777858338503863"><ph name="ORIGIN" /> पर अनुमति देने के लिए क्लिक करें:</translation>
 <translation id="2359071692152028734">हो सकता है कि Linux ऐप्लिकेशन काम न करें.</translation>
-<translation id="2359345697448000899">टूल मेन्यू में एक्सटेंशन क्लिक करके अपने एक्सटेंशन प्रबंधित करें.</translation>
+<translation id="2359345697448000899">टूल मेन्यू में 'एक्सटेंशन' पर क्लिक करके अपने एक्सटेंशन मैनेज करें.</translation>
 <translation id="2359556993567737338">ब्लूटूथ डिवाइस कनेक्ट करें</translation>
 <translation id="2359808026110333948">जारी रखें</translation>
 <translation id="2361100938102002520">आप इस ब्राउज़र पर, एक मैनेज की जा रही प्रोफ़ाइल जोड़ रहे हैं. इस प्रोफ़ाइल को आपका एडमिन कंट्रोल करता है और इसका डेटा ऐक्सेस कर सकता है.</translation>
@@ -3764,7 +3764,7 @@
 <translation id="4513946894732546136">सुझाव/राय दें</translation>
 <translation id="451407183922382411"><ph name="COMPANY_NAME" /> के उपयोग से</translation>
 <translation id="4514610446763173167">वीडियो को 'चलाएं' या 'रोकें' पर टॉगल करें</translation>
-<translation id="451515744433878153">निकालें</translation>
+<translation id="451515744433878153">हटाएं</translation>
 <translation id="4515872537870654449">मरम्मत के लिए Dell से संपर्क करें. अगर पंखा काम नहीं कर रहा है, तो डॉक बंद हो जाएगा.</translation>
 <translation id="4518840066030486079">Shift बटन मोड स्टाइल</translation>
 <translation id="4519331665958994620">साइटें आपके कैमरे का इस्तेमाल करने के लिए पूछ सकती हैं</translation>
@@ -5632,7 +5632,7 @@
 <translation id="6322559670748154781">इस फ़ाइल को आम तौर पर डाउनलोड नहीं किया जाता है और इसे 'बेहतर सुरक्षा' सेटिंग ने ब्लॉक कर रखा है</translation>
 <translation id="6324916366299863871">शॉर्टकट में बदलाव करें</translation>
 <translation id="6325191661371220117">ऑटो-लॉन्च बंद करें</translation>
-<translation id="6326175484149238433">Chrome से नि‍कालें</translation>
+<translation id="6326175484149238433">Chrome से हटाएं</translation>
 <translation id="6326855256003666642">कीपअलाइव की गणना</translation>
 <translation id="6327785803543103246">वेब प्रॉक्सी अपने आप खोज</translation>
 <translation id="6331818708794917058">साइटें MIDI डिवाइस से कनेक्ट करने के लिए पूछ सकती हैं</translation>
@@ -8146,7 +8146,7 @@
 <translation id="8731629443331803108"><ph name="SITE_NAME" /> इसके लिए अनुमति चाहता है: <ph name="PERMISSION" /></translation>
 <translation id="8731787661154643562">पोर्ट नंबर</translation>
 <translation id="8731851055419582926">पासवर्ड की जांच की गई</translation>
-<translation id="8732030010853991079">इस आइकॉन पर क्लिक करके इस एक्सटेंशन का उपयोग करें.</translation>
+<translation id="8732030010853991079">इस आइकॉन पर क्लिक करके इस एक्सटेंशन का इस्तेमाल करें.</translation>
 <translation id="8732212173949624846">अपने प्रवेश किए हुए सभी डिवाइस पर अपना ब्राउज़िंग इतिहास पढ़ें और बदलें</translation>
 <translation id="8732844209475700754">निजता, सुरक्षा, और डेटा इकट्ठा करने से जुड़ी ज़्यादा सेटिंग</translation>
 <translation id="8734073480934656039">इस सेटिंग को सक्षम करने से किओस्क ऐप्लिकेशन स्टार्टअप पर अपने आप लॉन्च हो जाते हैं.</translation>
@@ -8262,6 +8262,7 @@
 <translation id="8838601485495657486">अपारदर्शी</translation>
 <translation id="8838770651474809439">हैमबर्गर</translation>
 <translation id="8838778928843281408">फ़ोन मैनेज करें</translation>
+<translation id="883924185304953854">इमेज से खोजें</translation>
 <translation id="8841843049738266382">अनुमित वाले उपयोगकर्ताओं की सूची को देखने और बदलाव करने का ऐक्सेस दें</translation>
 <translation id="8842594465773264717">इस फ़िंगरप्रिंट को मिटाएं</translation>
 <translation id="8845001906332463065">सहायता पाएं</translation>
@@ -8532,8 +8533,8 @@
 <translation id="9094033019050270033">पासवर्ड अपडेट करें</translation>
 <translation id="9094038138851891550">उपयोगकर्ता का नाम अमान्य है</translation>
 <translation id="9094859731829297286">क्या आप वाकई Linux के लिए, एक तय साइज़ की डिस्क रिज़र्व करना चाहते हैं?</translation>
-<translation id="9094982973264386462">निकालें</translation>
-<translation id="9095253524804455615">निकालें</translation>
+<translation id="9094982973264386462">हटाएं</translation>
+<translation id="9095253524804455615">हटाएं</translation>
 <translation id="909554839118732438">गुप्त विंडो बंद करें</translation>
 <translation id="9100416672768993722">आखिरी बार इस्तेमाल किए गए इनपुट के तरीके पर जाने के लिए, <ph name="BEGIN_SHORTCUT" /><ph name="BEGIN_CTRL" />Ctrl<ph name="END_CTRL" /><ph name="SEPARATOR" /><ph name="BEGIN_SPACE" />Space<ph name="END_SPACE" /><ph name="END_SHORTCUT" /> दबाएं</translation>
 <translation id="9100765901046053179">अतिरिक्त सेटिंग</translation>
diff --git a/chrome/app/resources/generated_resources_hr.xtb b/chrome/app/resources/generated_resources_hr.xtb
index 95c24325..9cf0418 100644
--- a/chrome/app/resources/generated_resources_hr.xtb
+++ b/chrome/app/resources/generated_resources_hr.xtb
@@ -2387,6 +2387,7 @@
 <translation id="3188465121994729530">Klizni prosjek</translation>
 <translation id="3189187154924005138">Veliki pokazivač</translation>
 <translation id="3190558889382726167">Zaporka spremljena</translation>
+<translation id="3192589799003798742">Postavljanje Steama na Chromebooku</translation>
 <translation id="3192947282887913208">Audio datoteke</translation>
 <translation id="3193695589337931419">Uslužni programi za signale sustava</translation>
 <translation id="3194786596445804250">Prikaži pojedinosti o blokiranju kolačića trećih strana</translation>
@@ -2526,6 +2527,7 @@
 <translation id="3341699307020049241">PIN nije točan. Preostalo pokušaja: <ph name="RETRIES" />.</translation>
 <translation id="3341703758641437857">Dozvoli pristup URL-ovima datoteke</translation>
 <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" želi ukloniti to proširenje.</translation>
+<translation id="3343977377045378693">Postavljanje</translation>
 <translation id="3345135638360864351">Slanje zahtjeva za pristup ovoj web-lokaciji korisniku <ph name="NAME" /> nije uspjelo. Pokušaj ponovo.</translation>
 <translation id="3345634917232014253">Sigurnosna provjera upravo je izvršena</translation>
 <translation id="3345886924813989455">Nije pronađen podržani preglednik</translation>
@@ -2537,6 +2539,7 @@
 <translation id="3354768182971982851">Stare verzije Chromeovih aplikacija neće se otvoriti na Mac uređajima nakon prosinca 2022. Možete provjeriti je li dostupna nova verzija.</translation>
 <translation id="3354972872297836698">Uparivanje s uređajem <ph name="DEVICE_NAME" /> nije uspjelo; odaberite uređaj da biste pokušali ponovo</translation>
 <translation id="3355936511340229503">Pogreška veze</translation>
+<translation id="3356036636691722598">Uživajte u videoigrama na Chromebooku</translation>
 <translation id="3356469410714175391">(Virtualna kartica je omogućena)</translation>
 <translation id="3356580349448036450">Dovršeno</translation>
 <translation id="3359256513598016054">Ograničenja pravila certifikata</translation>
@@ -3449,6 +3452,7 @@
 <translation id="4211904048067111541">Prestani koristiti s Android aplikacijama</translation>
 <translation id="42126664696688958">Izvezi</translation>
 <translation id="42137655013211669">Pristup tom resursu zabranio je poslužitelj.</translation>
+<translation id="4214192212360095377">Isključi odmah</translation>
 <translation id="4217558091331485702">Skenirajte prije otvaranja</translation>
 <translation id="4217571870635786043">Diktat</translation>
 <translation id="4218081191298393750">Kliknite ikonu zvučnika da biste isključili zvuk za ovu karticu</translation>
@@ -4344,6 +4348,7 @@
 <translation id="5089763948477033443">Ručica za promjenu veličine bočne ploče</translation>
 <translation id="5090637338841444533">Nije dopušteno praćenje položaja kamere</translation>
 <translation id="5093569275467863761">Anonimno predmemorirani posjećeni podokvir: <ph name="BACK_FORWARD_CACHE_INCOGNITO_PAGE_URL" /></translation>
+<translation id="5094042205195563542">Pokretanje instaliranja</translation>
 <translation id="5094176498302660097">Podržane datoteke možete otvarati i uređivati pomoću ove aplikacije iz aplikacije Datoteke ili drugih aplikacija. Za upravljanje datotekama koje mogu otvoriti aplikaciju prema zadanim postavkama <ph name="BEGIN_LINK" />saznajte kako postaviti zadane aplikacije na uređaju<ph name="END_LINK" />.</translation>
 <translation id="5094721898978802975">komunicirati sa suradničkim nativnim aplikacijama</translation>
 <translation id="5097002363526479830">Neuspješno povezivanje s mrežom "<ph name="NAME" />": <ph name="DETAILS" /></translation>
@@ -6357,6 +6362,7 @@
 <translation id="7014174261166285193">Instalacija nije uspjela.</translation>
 <translation id="7014480873681694324">Ukloni isticanje</translation>
 <translation id="7014741021609395734">Razina zumiranja</translation>
+<translation id="7014961128696979283">Pokreni Steam</translation>
 <translation id="7017004637493394352">Ponovo recite "Ok Google"</translation>
 <translation id="7017219178341817193">Dodajte novu stranicu</translation>
 <translation id="7017354871202642555">Nakon postavljanja prozora nije moguće postaviti način.</translation>
@@ -6748,6 +6754,7 @@
 <translation id="7423425410216218516">Vidljivost je uključena sljedeći broj minuta: <ph name="MINUTES" /></translation>
 <translation id="7423513079490750513">Ukloni <ph name="INPUT_METHOD_NAME" /></translation>
 <translation id="7423807071740419372"><ph name="APP_NAME" /> treba vaše dopuštenje za pokretanje</translation>
+<translation id="7424153922653300265">Štednja energije uključena</translation>
 <translation id="7424818322350938336">Mreža je dodana</translation>
 <translation id="7427315069950454694">vaše uspomene za danas</translation>
 <translation id="7427348830195639090">Pozadinska stranica: <ph name="BACKGROUND_PAGE_URL" /></translation>
@@ -7982,6 +7989,7 @@
 <translation id="859246725979739260">Ovoj web-lokaciji blokiran je pristup vašoj lokaciji.</translation>
 <translation id="8593121833493516339">Slanje podataka o upotrebi i dijagnostici. Pomognite poboljšati djetetov doživljaj Androida automatskim slanjem dijagnostičkih podataka i podataka o upotrebi uređaja i aplikacija Googleu. Ti se podaci neće upotrebljavati za identifikaciju vašeg djeteta, a pomoći će poboljšati sustav, stabilnost aplikacija i drugo. Neki skupni podaci pomoći će i Googleovim aplikacijama i partnerima, na primjer razvojnim programerima za Android. Ako je za vaše dijete uključena dodatna postavka Aktivnost na webu i u aplikacijama, ti se podaci mogu spremati na djetetov Google račun. <ph name="BEGIN_LINK1" />Saznajte više<ph name="END_LINK1" /></translation>
 <translation id="8596540852772265699">Prilagođene datoteke</translation>
+<translation id="8597404194697561297">Dobro došli u Steam na Chromebooku</translation>
 <translation id="8597845839771543242">Oblik svojstva:</translation>
 <translation id="8599681327221583254">Najmanje jedno pravilo nije točno konfigurirano. Obratite se administratoru</translation>
 <translation id="8599864823732014237">Želite li preskočiti prijavu poduzeća?</translation>
diff --git a/chrome/app/resources/generated_resources_hu.xtb b/chrome/app/resources/generated_resources_hu.xtb
index 87c296b..296253e 100644
--- a/chrome/app/resources/generated_resources_hu.xtb
+++ b/chrome/app/resources/generated_resources_hu.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="hu">
 <translation id="1001033507375626788">Ez a hálózat meg van osztva Önnel</translation>
+<translation id="1002085272681738789">A lap újra aktív</translation>
 <translation id="1003088604756913841">Link megnyitása új <ph name="APP" />-ablakban</translation>
 <translation id="100323615638474026">USB-eszköz (<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />)</translation>
 <translation id="1004218526896219317">Webhelyhozzáférés</translation>
@@ -323,6 +324,7 @@
 <translation id="1296911687402551044">Kiválasztott lap rögzítése</translation>
 <translation id="1297175357211070620">Cél</translation>
 <translation id="129770436432446029">Visszajelzés küldése a(z) <ph name="EXPERIMENT_NAME" /> kísérletről</translation>
+<translation id="130097046531636712">A művelettel növelheti az akkumulátor energiaszintjét azáltal, hogy korlátozza a háttértevékenységeket és a vizuális effekteket (például a finomgörgetést)</translation>
 <translation id="1301135395320604080">A(z) <ph name="ORIGIN" /> szerkesztheti a következő fájlokat:</translation>
 <translation id="1302227299132585524">A JavaScript engedélyezése Apple-eseményekből</translation>
 <translation id="1303101771013849280">Könyvjelzők HTML-fájlja</translation>
@@ -381,6 +383,7 @@
 <translation id="1361655923249334273">Nem használt</translation>
 <translation id="1362865166188278099">Mechanikai probléma. Ellenőrizze a nyomtatót.</translation>
 <translation id="1363585519747660921">Be kell állítani az USB-nyomtatót</translation>
+<translation id="136378536198524553">Az energiatakarékos mód be van kapcsolva</translation>
 <translation id="1368603372088757436"><ph name="DEVICE_TYPE" /> eszköze nem támogatja a Linux rendszert. <ph name="LINK_BEGIN" />További információ<ph name="LINK_END" />.</translation>
 <translation id="1372841398847029212">Szinkronizálás saját fiókkal</translation>
 <translation id="1373176046406139583">Eszközének láthatósága befolyásolja azt, hogy ki oszthat meg Önnel fájlokat, amíg a képernyője fel van oldva. <ph name="LINK_BEGIN" />További információ<ph name="LINK_END" />.</translation>
@@ -651,6 +654,7 @@
 <translation id="1610272688494140697">Alkalmazásbeállítások</translation>
 <translation id="161042844686301425">Cián</translation>
 <translation id="1611432201750675208">Eszköze zárolva van</translation>
+<translation id="1611776894942218234">Az eszköznek Béta csatornán kell lennie</translation>
 <translation id="1612019740169791082">A tárolónál nincs beállítva a lemezátméretezés támogatása. Ha módosítani szeretné a Linux számára lefoglalt területet, készítsen biztonsági másolatot az adatokról, majd állítsa vissza őket új tárolóban.</translation>
 <translation id="1613019471223620622"><ph name="USERNAME" /> jelszavának megjelenítése a következőhöz: <ph name="DOMAIN" /></translation>
 <translation id="1613149688105334014">A Chrome-alkalmazások régi verziói 2022 decembere után nem nyílnak majd meg. Ellenőrizheti, hogy rendelkezésre áll-e újabb verzió.</translation>
@@ -1215,6 +1219,7 @@
 <translation id="2098805196501063469">A hátralévő jelszavak ellenőrzése</translation>
 <translation id="2099686503067610784">Törli a(z) "<ph name="CERTIFICATE_NAME" />" szervertanúsítványt?</translation>
 <translation id="2100273922101894616">Automatikus bejelentkezés</translation>
+<translation id="2100986609271491802">Ez az eszköz jelenleg nem támogatja a Steam szolgáltatást Chromebookon</translation>
 <translation id="2101225219012730419">Verzió:</translation>
 <translation id="2102396546234652240">A webhelyek nem használhatják a mikrofont</translation>
 <translation id="2102495993840063010">Android-alkalmazások</translation>
@@ -1514,6 +1519,9 @@
 <translation id="2350133097354918058">Újratöltve</translation>
 <translation id="2350182423316644347">Alkalmazás indítása...</translation>
 <translation id="235028206512346451">Ha eltávolodik az eszközétől, a rendszer automatikusan lezárja a képernyőt. Amikor az eszköze előtt tartózkodik, a képernyő hosszabb ideig nem kapcsol ki. Ha nem használ lezárási képernyőt, akkor eszköze lezárás helyett alvó módba lép.</translation>
+<translation id="2350866610930767288"><ph name="BEGIN_PARAGRAPH1" />Ha a demó módban történő telepítés során a kiskereskedelmi üzlet azonosító kódjának megadására vonatkozó utasításokat kapott, akkor a kódot a jobb oldalon adhatja meg*.  Egyéb esetben üresen hagyhatja ezt a mezőt, és folytathatja a műveletet.<ph name="END_PARAGRAPH1" />
+    <ph name="BEGIN_PARAGRAPH2" />A demó mód telepítését kód nélkül is elvégezheti, de fontos, hogy adja meg a kódot, ha az üzletre nézve ez kötelező.<ph name="END_PARAGRAPH2" />
+    <ph name="BEGIN_PARAGRAPH3" />* Megjegyzés: A Google ezeket a kódokat használja annak azonosítására, hogy a demó mód mely verzióját kapja meg az eszköz, illetve a kódok segítségével méri a demó mód használatát.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="2352495879228166246">{NUM_ITEMS,plural, =1{1 elem}other{{NUM_ITEMS} elem}}</translation>
 <translation id="2352662711729498748">&lt;1 MB</translation>
 <translation id="2352810082280059586">A lezárási képernyő jegyzeteit a rendszer automatikusan elmenti ide: <ph name="LOCK_SCREEN_APP_NAME" />. A legutolsó jegyzet megmarad a lezárási képernyőn.</translation>
@@ -1964,6 +1972,7 @@
 <translation id="2776560192867872731">Eszköznév módosítása erre: <ph name="DEVICE_NAME" /></translation>
 <translation id="2777251078198759550">Tároló törlése</translation>
 <translation id="2778471504622896352">Távoli alkalmazások hozzáadása a ChromeOS indítójához</translation>
+<translation id="2781120507965857989">Ha bekapcsolja a szinkronizálást, hozzáférhet többek között könyvjelzőihez, jelszavaihoz és előzményeihez ezen az eszközön és bárhol máshol, ahol szinkronizál. A Google felhasználhatja az Ön előzményeit a Kereső és más Google-szolgáltatások személyre szabására.</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2782104745158847185">Hiba történt a Linux-alkalmazás telepítése során</translation>
 <translation id="2783298271312924866">Letöltött</translation>
@@ -1984,6 +1993,7 @@
 <translation id="2792697226874849938">Korlátozás képe</translation>
 <translation id="2794233252405721443">A webhely le van tiltva</translation>
 <translation id="2794522004398861033">Csatlakozzon Wi-Fi- vagy Ethernet-hálózathoz az eSIM beállításához</translation>
+<translation id="2795074478966352573">A Family Link által kezelt fiókok még nem támogatottak</translation>
 <translation id="2795716239552913152">A webhelyek általában arra használják az Ön helyadatait, hogy releváns szolgáltatásokat vagy információkat biztosítsanak (például helyi hírekről vagy közeli üzletekről)</translation>
 <translation id="2796424461616874739">Hitelesítési időtúllépés a(z) „<ph name="DEVICE_NAME" />” eszköz csatlakoztatása során.</translation>
 <translation id="2796740370559399562">Cookie-k engedélyezése továbbra is</translation>
@@ -2169,6 +2179,7 @@
 <translation id="2949289451367477459">A tartózkodási hely használata. A helymeghatározási jogosultsággal rendelkező alkalmazások és szolgáltatások számára lehetővé teszi az eszköz tartózkodási helyének használatát. A Google időről időre helyadatokat gyűjthet, és ezen adatok anonim módon történő felhasználásával javíthatja a helymeghatározás pontosságát, valamint a helyalapú szolgáltatásokat. <ph name="BEGIN_LINK1" />További információ<ph name="END_LINK1" />.</translation>
 <translation id="2950666755714083615">Regisztráció</translation>
 <translation id="2953019166882260872">Telefon csatlakoztatása kábellel</translation>
+<translation id="2953218713108551165">Az értesítések nem engedélyezettek a(z) <ph name="SITE" /> esetében. A rendszer következő látogatásakor ismét rákérdez.</translation>
 <translation id="2956070239128776395">Egy szakasz csoportba van beágyazva: <ph name="ERROR_LINE" /></translation>
 <translation id="2958721676848865875">Csomagbővítménnyel kapcsolatos figyelmeztetés</translation>
 <translation id="2959127025785722291">Hiba történt. A vizsgálatot nem sikerült elvégezni. Próbálja újra.</translation>
@@ -2877,6 +2888,7 @@
 <translation id="3665919494326051362">Jelenlegi verzió: <ph name="CURRENT_VERSION" /></translation>
 <translation id="3670113805793654926">Bármely gyártó eszközei</translation>
 <translation id="3670229581627177274">Bluetooth bekapcsolása</translation>
+<translation id="3672663996348587094">Kattintson, hogy engedélyezze a(z) „<ph name="EXTENSIONS_REQUESTING_ACCESS" />” bővítményt a(z) <ph name="ORIGIN" /> webhelyen:</translation>
 <translation id="3672681487849735243">A rendszer gyári hibát észlelt</translation>
 <translation id="3673097791729989571">Bejelentkezés a következővel: <ph name="SAML_DOMAIN" /></translation>
 <translation id="3673622964532248901">Önnek nincs engedélyezve az erre az eszközre való átküldés.</translation>
@@ -3391,6 +3403,7 @@
 <translation id="4132183752438206707">Keressen alkalmazásokat a Google Play Áruházban</translation>
 <translation id="4132364317545104286">Az eSIM-profil átnevezése</translation>
 <translation id="4133076602192971179">A jelszó módosításához nyissa meg az alkalmazást</translation>
+<translation id="4134818201340504801">Nincs elegendő tárhely a beállítás befejezéséhez. Szabadítson fel tárhelyet, és próbálkozzon újra.</translation>
 <translation id="4135746311382563554">A Google Chrome és a Chrome OS Kiegészítő Általános Szerződési Feltételei</translation>
 <translation id="4136203100490971508">Az Éjszakai fény automatikusan kikapcsol napkeltekor</translation>
 <translation id="41365691917097717">A folytatással engedélyezi az ADB-hibakeresés számára az Android-alkalmazások létrehozását és tesztelését. Ne feledje, hogy ez a művelet engedélyezi a Google által nem jóváhagyott Android-alkalmazások telepítését, és az eszköz letiltásához szükség van az eszköz gyári beállításainak visszaállítására.</translation>
@@ -3627,6 +3640,7 @@
 <translation id="4378556263712303865">Eszközigénylés</translation>
 <translation id="4379281552162875326">Eltávolítja a következőt: <ph name="APP_NAME" />?</translation>
 <translation id="4380648069038809855">Teljes képernyős módba lépett</translation>
+<translation id="4383048856908088702">Amíg ez a lap inaktív volt, a memóriatakarékos mód <ph name="MEMORY_VALUE" /> memóriát szabadított fel az egyéb feladatokhoz. A(z) <ph name="SETTINGS_LINK" /> alatt ez bármikor módosítható.</translation>
 <translation id="4384312707950789900">Hozzáadás az előnyben részesített hálózatokhoz</translation>
 <translation id="4384652540891215547">Bővítmény aktiválása</translation>
 <translation id="4384886290276344300">Billentyűzetbeállítások módosítása</translation>
@@ -3704,6 +3718,7 @@
 <translation id="4451479197788154834">A jelszó mentve van ezen az eszközön és a Google-fiókjában</translation>
 <translation id="4451757071857432900">Letiltva a tolakodó vagy félrevezető hirdetéseket megjelenítő webhelyeken (ajánlott)</translation>
 <translation id="4453946976636652378">Keressen a(z) <ph name="SEARCH_ENGINE_NAME" /> segítségével, vagy írja be az URL-t</translation>
+<translation id="4458535500699390320">Amíg ez a lap inaktív volt, a memóriatakarékos mód memóriát szabadított fel az egyéb feladatokhoz. A beállításokban ezt bármikor módosíthatja.</translation>
 <translation id="4459169140545916303"><ph name="DEVICE_LAST_ACTIVATED_TIME" /> napja volt aktív</translation>
 <translation id="4460014764210899310">Csoportosítás megszüntetése</translation>
 <translation id="4462159676511157176">Egyéni névszerverek</translation>
@@ -3876,6 +3891,7 @@
 <translation id="4613271546271159013">Egy bővítmény módosította az új lap megnyitásakor megjelenített oldalt.</translation>
 <translation id="4615586811063744755">nincs kiválasztva cookie</translation>
 <translation id="461661862154729886">Energiaforrás</translation>
+<translation id="461676224702246336">Az ezen a webhelyen való kattintásra</translation>
 <translation id="4617001782309103936">Túl rövid</translation>
 <translation id="4617019240346358451">Töltse be újra az oldalt a(z) „<ph name="EXTENSION_NAME" />” használatához</translation>
 <translation id="4617270414136722281">Bővítménybeállítások</translation>
@@ -3998,6 +4014,7 @@
 <translation id="4728558894243024398">Platform</translation>
 <translation id="4728570203948182358"><ph name="BEGIN_LINK" />Rendszergazdája<ph name="END_LINK" /> kikapcsolta a kártékony szoftverek keresését</translation>
 <translation id="4730492586225682674">Legújabb érintőceruzás jegyzet a lezárási képernyőn</translation>
+<translation id="4730888769809690665">Értesítések engedélyezve a következőhöz: <ph name="SITE" /></translation>
 <translation id="473140019006744096">Nincs elég tárhely ezen az eszközön a frissítés végrehajtásához. Szabadítson fel legalább <ph name="NECESSARY_SPACE" /> tárhelyet eszközén, majd próbálkozzon újra.</translation>
 <translation id="4733161265940833579"><ph name="BATTERY_PERCENTAGE" />% (bal)</translation>
 <translation id="4733793249294335256">Hely</translation>
@@ -4301,6 +4318,7 @@
 <translation id="5032430150487044192">Nem lehet létrehozni a QR-kódot.</translation>
 <translation id="5033137252639132982">Nem használhatnak mozgásérzékelőket</translation>
 <translation id="5033266061063942743">Geometriai alakzatok</translation>
+<translation id="5034000993065629381">Forduljon a rendszergazdához.</translation>
 <translation id="5037676449506322593">Összes kiválasztása</translation>
 <translation id="5038818366306248416">Ön korábban egyetlen bővítményt sem engedélyezett itt: <ph name="ORIGIN" /></translation>
 <translation id="5039696241953571917">Mentett jelszavait megtekintheti és kezelheti Google-fiókjában</translation>
@@ -4431,6 +4449,7 @@
 <translation id="5161251470972801814">USB-eszközök a következő gyártótól: <ph name="VENDOR_NAME" /></translation>
 <translation id="5162905305237671850"><ph name="DEVICE_TYPE" /> letiltva</translation>
 <translation id="5163910114647549394">Lap áthelyezve a lapsor végére</translation>
+<translation id="5164530241085602114">Az értesítések nem engedélyezettek a(z) <ph name="SITE" /> esetében</translation>
 <translation id="516747639689914043">Hypertext Transfer Protocol (HTTP)</translation>
 <translation id="5170568018924773124">Megjelenítés mappában</translation>
 <translation id="5171045022955879922">Keressen vagy írjon be egy URL-t</translation>
@@ -4533,6 +4552,7 @@
 <translation id="5269977353971873915">A nyomtatás nem sikerült</translation>
 <translation id="5273806377963980154">Webhely URL-jének módosítása</translation>
 <translation id="5275084684151588738">Felhasználói szótárak</translation>
+<translation id="5275100789567222478">Bekapcsolás csak akkor, ha az akkumulátor töltöttsége <ph name="PERCENT" />% vagy ennél alacsonyabb</translation>
 <translation id="5275338516105640560">Mentett lapcsoport gomb</translation>
 <translation id="5275352920323889391">Kutya</translation>
 <translation id="527605719918376753">Lap némítása</translation>
@@ -4552,6 +4572,7 @@
 <translation id="5285635972691565180">Kijelző (<ph name="DISPLAY_ID" />)</translation>
 <translation id="5286194356314741248">Keresés</translation>
 <translation id="5287425679749926365">Az Ön fiókjai</translation>
+<translation id="5288106344236929384">További műveletek, azonosítókulcs-lehetőségek a(z) <ph name="USERNAME" /> fiók számára itt: <ph name="DOMAIN" /></translation>
 <translation id="5288678174502918605">Bezárt lap m&amp;egnyitása</translation>
 <translation id="52895863590846877">Az oldal nem <ph name="LANGUAGE" /> nyelvű</translation>
 <translation id="52912272896845572">A privátkulcs-fájl érvénytelen.</translation>
@@ -4747,6 +4768,7 @@
 <translation id="5473099001878321374">Ha továbblép, azzal elfogadja, hogy az eszköz automatikusan letölthet és telepíthet frissítéseket és alkalmazásokat a Google-tól, gyermeke szolgáltatójától és az eszköz gyártójától, akár mobiladat-kapcsolaton keresztül is. Egyes alkalmazások alkalmazáson belüli vásárlásokat kínálhatnak.</translation>
 <translation id="5473156705047072749">{NUM_CHARACTERS,plural, =1{A PIN-kódnak legalább egy karakterből kell állnia}other{A PIN-kódnak legalább # karakterből kell állnia}}</translation>
 <translation id="5474859849784484111">A(z) <ph name="MANAGER" /> megköveteli, hogy eszközével most Wi-Fi-hálózathoz csatlakozzon, és letöltse a szükséges frissítést. A letöltés forgalomkorlátos kapcsolaton is végrehajtható (ez esetben a szolgáltató díjat számíthat fel).</translation>
+<translation id="5476016146231427848">A Steam Chromebookon való használatához indítsa újra eszközét</translation>
 <translation id="5481273127572794904">Nem tölthetnek le automatikusan egyszerre több fájlt</translation>
 <translation id="5481941284378890518">Közeli nyomtatók hozzáadása</translation>
 <translation id="5483785310822538350">Fájl- és eszközhozzáférés visszavonása</translation>
@@ -4967,6 +4989,7 @@
 <translation id="5683806393796685434">Adja meg az aktivációs kódot</translation>
 <translation id="5684181005476681636">Wi-Fi-hálózat részletei</translation>
 <translation id="5684661240348539843">Tartalomazonosító</translation>
+<translation id="5684969244627829799">Jelentkezzen be valamelyik felhasználói fiókba, és próbálja újra</translation>
 <translation id="5687326903064479980">Időzóna</translation>
 <translation id="5687935527303996204">Gondoskodjon arról, hogy eszköze hálózati áramforráshoz csatlakozzon, és ne kapcsolja ki. A telepítés 20 percig is eltarthat. Eszköze automatikusan leáll, ha befejezte a telepítést.</translation>
 <translation id="5689516760719285838">Tartózkodási hely</translation>
@@ -5093,6 +5116,7 @@
 <translation id="5805697420284793859">Ablakkezelő</translation>
 <translation id="5806447147478173900">A megjelenített webhelyek által felhasznált teljes tárhely: <ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">0° (alapértelmezett)</translation>
+<translation id="5810603387504252966">A #borealis-enabled jelzőt engedélyezni kell a chrome://flags oldalon</translation>
 <translation id="5810809306422959727">Ez a fiók nem jogosult arra, hogy szülői felügyeletet állítson be hozzá</translation>
 <translation id="5811614940486072060">Ezt a fájlt nem töltik le gyakran, és veszélyes lehet</translation>
 <translation id="5812674658566766066">Az összes kibontása</translation>
@@ -5172,6 +5196,7 @@
 <translation id="5882449899683447569">Valami hiba történt, és nem sikerült a jelszavak importálása.</translation>
 <translation id="5882919346125742463">Ismert hálózatok</translation>
 <translation id="5883356647197510494">Automatikusan letiltva: <ph name="PERMISSION_1" />, <ph name="PERMISSION_2" /></translation>
+<translation id="5884447826201752041">Személyre szabás az egyes bővítményeknél</translation>
 <translation id="5884474295213649357">Ez a lap USB-eszközhöz csatlakozik.</translation>
 <translation id="5885314688092915589">Az Ön szervezete kezeli majd ezt a profilt</translation>
 <translation id="5886009770935151472">1. ujj</translation>
@@ -5611,6 +5636,7 @@
 <translation id="6301300352769835063">Hardveradatok használatának engedélyezése a Google számára a <ph name="DEVICE_OS" /> fejlesztéséhez. Ha nem engedélyezi, a rendszer akkor is elküldi az adatokat a Google-nak, hogy meghatározhatók legyenek a megfelelő frissítések, viszont az adatok tárolására vagy egyéb jellegű felhasználására nem kerül sor. További információ: g.co/flex/HWDataCollection.</translation>
 <translation id="630292539633944562">Személyes adatokra vonatkozó javaslatok</translation>
 <translation id="6305607932814307878">Globális irányelvek:</translation>
+<translation id="6305909198255586420">Kérjük, az elsődleges profiljával végezze el a telepítést</translation>
 <translation id="6307990684951724544">A rendszer foglalt</translation>
 <translation id="6308493641021088955">A bejelentkezést biztosítja: <ph name="EXTENSION_NAME" /></translation>
 <translation id="6308937455967653460">Link mentése &amp;másként...</translation>
@@ -5932,6 +5958,7 @@
 <translation id="6608166463665411119">eSIM visszaállítása</translation>
 <translation id="6609478180749378879">Az inkognitó mód elhagyása után ez az eszköz tárolja a bejelentkezési adatokat. Eszközével később újra be tud jelentkezni ezen a webhelyen.</translation>
 <translation id="6610002944194042868">Fordítási beállítások</translation>
+<translation id="6611907964265870728">Ellenőrizze, hogy eszköze csatlakozik-e az internethez</translation>
 <translation id="6611972847767394631">Itt találhatja lapjait</translation>
 <translation id="6613668613087513143">Nincs elég tárhely ezen az eszközön a frissítés végrehajtásához. Szabadítson fel legalább <ph name="NECESSARY_SPACE" /> tárhelyet eszközén, majd próbálkozzon újra a Chrome böngészőben.</translation>
 <translation id="6615455863669487791">Megjelenítés</translation>
@@ -6320,6 +6347,7 @@
 <translation id="697508444536771064">A Linux leállítása</translation>
 <translation id="6975361011348772931">Olvasási és módosítási kérés</translation>
 <translation id="6978121630131642226">Keresők</translation>
+<translation id="6979041727349121225">Akkumulátorkímélő</translation>
 <translation id="6979044105893951891">Felügyelt vendég-munkafolyamatok indítása és befejezése</translation>
 <translation id="6979158407327259162">Google Drive</translation>
 <translation id="6979440798594660689">Némítás (alapértelmezett)</translation>
@@ -6372,6 +6400,7 @@
 <translation id="7014174261166285193">A telepítés nem sikerült.</translation>
 <translation id="7014480873681694324">Kiemelés eltávolítása</translation>
 <translation id="7014741021609395734">Nagyítás/kicsinyítés szintje</translation>
+<translation id="7015088858756332848">Nem sikerült elindítani a Steam alkalmazást a Chromebookon. Próbálja meg újra.</translation>
 <translation id="7017004637493394352">Mondja ki az „Ok Google” szavakat újra.</translation>
 <translation id="7017219178341817193">Új oldal hozzáadása</translation>
 <translation id="7017354871202642555">A mód beállítása már nem lehetséges, miután beállította az ablakot.</translation>
@@ -6748,6 +6777,7 @@
 <translation id="7409854300652085600">Könyvjelzők importálva.</translation>
 <translation id="7410344089573941623">Kérdezzen rá, ha a(z) <ph name="HOST" /> hozzá szeretne férni a kamerához és a mikrofonhoz</translation>
 <translation id="7410852728357935715">Átküldés egyetlen eszközre</translation>
+<translation id="7411614333737930931">Indítsa újra az eszközt, és próbálkozzon újra.</translation>
 <translation id="741204030948306876">Igen, folytatom</translation>
 <translation id="7412226954991670867">GPU memória</translation>
 <translation id="7414464185801331860">18×</translation>
@@ -6978,6 +7008,7 @@
 <translation id="7635048370253485243">A rendszergazda tűzte ki</translation>
 <translation id="7636919061354591437">Telepítés ezen az eszközön</translation>
 <translation id="7637253234491814483">Érintse meg az ujjlenyomat-érzékelőt a billentyűzet jobb felső sarkában, a bekapcsológomb mellett. Az ujjlenyomatadatokat a(z) <ph name="DEVICE_TYPE" /> biztonságosan tárolja, és soha nem kerülnek ki az eszközről.</translation>
+<translation id="7637272932128132922">Amíg ez a lap inaktív volt, a memóriatakarékos mód memóriát szabadított fel az egyéb feladatokhoz. A(z) <ph name="SETTINGS_LINK" /> alatt ez bármikor módosítható.</translation>
 <translation id="7637593984496473097">Nincs elég lemezterület</translation>
 <translation id="7639914187072011620">Nem sikerült lekérni a SAML átirányítási URL-jét a szerverről</translation>
 <translation id="764017888128728">A <ph name="PASSWORD_MANAGER_BRAND" /> segítségével automatikusan bejelentkezhet adott webhelyekre a mentett jelszavaival.</translation>
@@ -7094,6 +7125,7 @@
 <translation id="7728668285692163452">A csatornamódosítás alkalmazása csak később történik meg</translation>
 <translation id="7730449930968088409">Képernyőtartalom rögzítése</translation>
 <translation id="7730683939467795481">Ezt az oldalt a(z) „<ph name="EXTENSION_NAME" />” bővítmény módosította</translation>
+<translation id="7735165285389721951">Másik Steam-beállítás fut épp. Mielőtt ismét próbálkozna, várja meg, amíg a folyamat befejeződik.</translation>
 <translation id="7737115349420013392">Párosítás a következővel: <ph name="DEVICE_NAME" />…</translation>
 <translation id="7737846262459425222">Ezt bármikor módosíthatja a Beállítások &gt; Google Segéd &gt; Képernyőkontextus menüpontban.</translation>
 <translation id="7737948071472253612">Nem használhatják a kamerát</translation>
@@ -7392,6 +7424,7 @@
 Kulcsfájl: <ph name="KEY_FILE" />
 
 A kulcsfájlt tartsa biztonságos helyen. Szüksége lesz rá ahhoz, hogy új verziókat készítsen bővítményéből.</translation>
+<translation id="8001100670809322641">Várjon néhány percet, majd próbálja meg újra</translation>
 <translation id="8002274832045662704">Speciális nyomtatókonfiguráció</translation>
 <translation id="8002670234429879764">A nyomtató (<ph name="PRINTER_NAME" />) már nem áll rendelkezésre</translation>
 <translation id="8004092996156083991">Ha jelszavaihoz illetéktelenül hozzáférnek, értesítjük Önt</translation>
@@ -7401,6 +7434,7 @@
 <translation id="8008356846765065031">Az internetkapcsolat megszűnt. Kérjük, ellenőrizze az internetkapcsolatot.</translation>
 <translation id="8009225694047762179">Jelszó kezelése</translation>
 <translation id="8011372169388649948">„<ph name="BOOKMARK_TITLE" />” áthelyezve.</translation>
+<translation id="8011875486979733097">A Steam nem telepíthető</translation>
 <translation id="8012647001091218357">Jelenleg nem tudjuk elérni szüleidet. Próbálkozz újra.</translation>
 <translation id="8013993649590906847">Ha valamelyik kép nem rendelkezik hasznos leírással, akkor a Chrome igyekszik leírást adni róla. A Google automatikusan megkapja a leírások létrehozásához szükséges képeket.</translation>
 <translation id="8014154204619229810">A frissítő most fut. Frissítsen egy perc múlva, és ellenőrizze az állapotát.</translation>
@@ -7491,6 +7525,7 @@
 <translation id="808894953321890993">Jelszó módosítása</translation>
 <translation id="8090234456044969073">Az Ön által leggyakrabban felkeresett webhelyek listájának olvasása</translation>
 <translation id="8090513782447872344">Bármikor visszatérhet, hogy újabb pillantást vethessen az útmutatóra</translation>
+<translation id="809312780580957751">A Steam nem telepíthető erre az eszközre</translation>
 <translation id="8093359998839330381">A(z) <ph name="PLUGIN_NAME" /> nem válaszol</translation>
 <translation id="8095105960962832018"><ph name="BEGIN_PARAGRAPH1" />Biztonsági másolat készítése a Google Drive-ra. Bármikor könnyedén helyreállíthatja adatait, illetve lecserélheti eszközét. A biztonsági másolat alkalmazásadatokat tartalmaz.<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />A biztonsági másolatokat a Google szerveire tölti fel a rendszer, és az Ön Google-fiókjához használt jelszóval titkosítja.<ph name="END_PARAGRAPH2" />
@@ -7586,6 +7621,7 @@
 <translation id="8177318697334260664">{NUM_TABS,plural, =1{Lap áthelyezése új ablakba}other{Lapok áthelyezése új ablakba}}</translation>
 <translation id="8179188928355984576">Nincs használatban az Android-alkalmazásoknál</translation>
 <translation id="8179976553408161302">Enter</translation>
+<translation id="8180785270975217276">Az energiatakarékos mód be van kapcsolva</translation>
 <translation id="8180786512391440389">A(z) „<ph name="EXTENSION" />” olvashat és törölhet képeket, videókat és hangfájlokat a megjelölt helyeken.</translation>
 <translation id="8181215761849004992">Nem sikerült a csatlakozás a domainhez. Ellenőrizze fiókját, hogy meggyőződhessen, elegendő jogosultsággal rendelkezik az eszközök hozzáadásához.</translation>
 <translation id="8182105986296479640">Az alkalmazás nem válaszol.</translation>
@@ -7708,6 +7744,7 @@
 <translation id="828642162569365647">Ez a jelszó vagy PIN-kód megvédi az adatait ezen a(z) <ph name="DEVICE_TYPE" /> eszközön, és minden olyan információt is, amelyhez a telefonjáról fér hozzá. Minden alkalommal fel kell oldania a képernyőzárat, amikor <ph name="DEVICE_TYPE" /> eszköze alvó üzemmódból felébred.</translation>
 <translation id="8287902281644548111">Keresés API-hívás/URL szerint</translation>
 <translation id="8288032458496410887"><ph name="APP" /> eltávolítása…</translation>
+<translation id="8288539437195337464">Győződjön meg arról, hogy eszköze naprakész, majd próbálkozzon újra</translation>
 <translation id="8289128870594824098">Lemezméret</translation>
 <translation id="8289509909262565712">Üdvözli a(z) <ph name="DEVICE_OS" /> rendszer!</translation>
 <translation id="8293206222192510085">Könyvjelző hozzáadása</translation>
@@ -8002,6 +8039,7 @@
 <translation id="8599864823732014237">Kihagyja a vállalati regisztrációt?</translation>
 <translation id="8601206103050338563">TLS WWW ügyfél hitelesítése</translation>
 <translation id="8601611099293226919">Keresés a képernyőn a Google Lens segítségével</translation>
+<translation id="8602674530529411098">Alkalmazások (béta)</translation>
 <translation id="8602851771975208551">A számítógépen lévő egyik program olyan alkalmazást adott hozzá, amely módosíthatja a Chrome működését.</translation>
 <translation id="8605428685123651449">SQLite-memória</translation>
 <translation id="8608618451198398104">Kerberos-jegy felvétele</translation>
@@ -8686,6 +8724,7 @@
 <translation id="939598580284253335">Összetett jelszó megadása</translation>
 <translation id="939736085109172342">Új mappa</translation>
 <translation id="942532530371314860">A(z) <ph name="APP_NAME" /> megosztja a Chrome egy lapját és a hangot.</translation>
+<translation id="944799160843436808">Hiba történt a Steam Chromebookon való beállítása során</translation>
 <translation id="945522503751344254">Visszajelzés küldése</translation>
 <translation id="947329552760389097">&amp;Elemek vizsgálata</translation>
 <translation id="947526284350604411">Saját válasz</translation>
@@ -8711,6 +8750,7 @@
 <translation id="968000525894980488">Kapcsolja be a Google Play-szolgáltatásokat.</translation>
 <translation id="968037381421390582">„<ph name="SEARCH_TERMS" />” be&amp;illesztése és keresése</translation>
 <translation id="969096075394517431">Nyelvek módosítása</translation>
+<translation id="969574218206797926">A memóriatakarékos mód memóriát szabadít fel az inaktív lapokról, amelyet így az aktív lapok és más alkalmazások használhatnak</translation>
 <translation id="970047733946999531">{NUM_TABS,plural, =1{1 lap}other{# lap}}</translation>
 <translation id="971510864672937292">Törli a(z) <ph name="SITE_NAME" /> webhelyre, valamint az alá tartozó valamennyi webhelyre vonatkozó webhelyadatokat és -engedélyeket?</translation>
 <translation id="971774202801778802">Könyvjelző URL-je</translation>
diff --git a/chrome/app/resources/generated_resources_id.xtb b/chrome/app/resources/generated_resources_id.xtb
index dd93e885..0960a9d6 100644
--- a/chrome/app/resources/generated_resources_id.xtb
+++ b/chrome/app/resources/generated_resources_id.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="id">
 <translation id="1001033507375626788">Jaringan ini dibagikan kepada Anda</translation>
+<translation id="1002085272681738789">Tab aktif lagi</translation>
 <translation id="1003088604756913841">Buka Link di Jendela <ph name="APP" /> baru</translation>
 <translation id="100323615638474026">Perangkat USB (<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />)</translation>
 <translation id="1004218526896219317">Akses situs</translation>
@@ -323,6 +324,7 @@
 <translation id="1296911687402551044">Pasang Pin pada Tab Terpilih</translation>
 <translation id="1297175357211070620">Tujuan</translation>
 <translation id="129770436432446029">Kirim masukan untuk <ph name="EXPERIMENT_NAME" /></translation>
+<translation id="130097046531636712">Hal ini akan menghemat daya baterai dengan membatasi aktivitas latar belakang dan efek visual seperti scroll yang lancar</translation>
 <translation id="1301135395320604080"><ph name="ORIGIN" /> dapat mengedit file berikut ini</translation>
 <translation id="1302227299132585524">Izinkan JavaScript dari Apple Events</translation>
 <translation id="1303101771013849280">File HTML Bookmark</translation>
@@ -381,6 +383,7 @@
 <translation id="1361655923249334273">Tidak digunakan</translation>
 <translation id="1362865166188278099">Masalah mekanis. Periksa printer</translation>
 <translation id="1363585519747660921">Printer USB membutuhkan konfigurasi</translation>
+<translation id="136378536198524553">Penghemat Energi aktif</translation>
 <translation id="1368603372088757436">Linux tidak didukung di <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Pelajari lebih lanjut<ph name="LINK_END" /></translation>
 <translation id="1372841398847029212">Sinkronkan ke akun Anda</translation>
 <translation id="1373176046406139583">Visibilitas perangkat akan mengontrol siapa saja yang dapat berbagi dengan Anda saat kunci layar terbuka. <ph name="LINK_BEGIN" />Pelajari lebih lanjut<ph name="LINK_END" /></translation>
@@ -651,6 +654,7 @@
 <translation id="1610272688494140697">Setelan Aplikasi</translation>
 <translation id="161042844686301425">Sian</translation>
 <translation id="1611432201750675208">Perangkat Anda terkunci</translation>
+<translation id="1611776894942218234">Perangkat harus dalam Saluran Beta</translation>
 <translation id="1612019740169791082">Container Anda tidak dikonfigurasi untuk mendukung perubahan ukuran disk. Untuk menyesuaikan jumlah ruang yang telah ditetapkan untuk Linux, cadangkan lalu pulihkan ke dalam container baru.</translation>
 <translation id="1613019471223620622">Tampilkan sandi untuk <ph name="USERNAME" /> di <ph name="DOMAIN" /></translation>
 <translation id="1613149688105334014">Aplikasi Chrome versi lama tidak dapat dibuka setelah Desember 2022. Anda dapat memeriksa apakah versi baru telah tersedia.</translation>
@@ -1215,6 +1219,7 @@
 <translation id="2098805196501063469">Periksa sandi yang tersisa</translation>
 <translation id="2099686503067610784">Hapus sertifikat server "<ph name="CERTIFICATE_NAME" />"?</translation>
 <translation id="2100273922101894616">Login Otomatis</translation>
+<translation id="2100986609271491802">Saat ini perangkat ini tidak mendukung Steam di Chromebook</translation>
 <translation id="2101225219012730419">Versi:</translation>
 <translation id="2102396546234652240">Jangan izinkan situs menggunakan mikrofon Anda</translation>
 <translation id="2102495993840063010">Aplikasi Android</translation>
@@ -1513,6 +1518,9 @@
 <translation id="2350133097354918058">Dimuat ulang</translation>
 <translation id="2350182423316644347">Memulai aplikasi...</translation>
 <translation id="235028206512346451">Jika Anda beranjak dari perangkat, layar akan otomatis dikunci. Jika Anda di depan perangkat, layar akan tetap aktif lebih lama. Jika Anda tidak menggunakan layar kunci, perangkat akan masuk mode tidur dan tidak dikunci.</translation>
+<translation id="2350866610930767288"><ph name="BEGIN_PARAGRAPH1" />Jika Anda menerima petunjuk untuk memasukkan kode ID toko retailer selama penginstalan Mode Demo, masukkan kode tersebut di sebelah kanan*.  Jika tidak, Anda dapat mengosongkan kolom ini dan melanjutkan.<ph name="END_PARAGRAPH1" />
+    <ph name="BEGIN_PARAGRAPH2" />Anda tetap dapat menginstal Mode Demo tanpa kode, tetapi memasukkan kode ini penting dilakukan jika diperlukan untuk toko Anda.<ph name="END_PARAGRAPH2" />
+    <ph name="BEGIN_PARAGRAPH3" />*Catatan: Google menggunakan kode ini untuk mengidentifikasi versi Mode Demo yang harus diterima perangkat dan mengukur penggunaan Mode Demo.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="2352495879228166246">{NUM_ITEMS,plural, =1{1 item}other{{NUM_ITEMS} item}}</translation>
 <translation id="2352662711729498748">&lt; 1 MB</translation>
 <translation id="2352810082280059586">Catatan layar kunci disimpan otomatis ke <ph name="LOCK_SCREEN_APP_NAME" />. Catatan terbaru akan tetap berada di layar kunci.</translation>
@@ -1963,6 +1971,7 @@
 <translation id="2776560192867872731">Ubah nama perangkat untuk <ph name="DEVICE_NAME" /></translation>
 <translation id="2777251078198759550">Hapus penampung ini</translation>
 <translation id="2778471504622896352">Menambahkan aplikasi jarak jauh ke peluncur ChromeOS</translation>
+<translation id="2781120507965857989">Aktifkan sinkronisasi untuk mendapatkan bookmark, sandi, histori, dan lainnya di perangkat ini dan di tempat lain yang Anda sinkronkan. Google dapat menggunakan histori Anda untuk mempersonalisasi Penelusuran dan layanan Google lainnya.</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2782104745158847185">Error saat menginstal aplikasi Linux</translation>
 <translation id="2783298271312924866">Telah Didownload</translation>
@@ -1983,6 +1992,7 @@
 <translation id="2792697226874849938">Gambar batasan</translation>
 <translation id="2794233252405721443">Situs diblokir</translation>
 <translation id="2794522004398861033">Hubungkan ke Wi-Fi atau Ethernet untuk menyiapkan eSIM</translation>
+<translation id="2795074478966352573">Akun yang dikelola oleh Family Link belum didukung</translation>
 <translation id="2795716239552913152">Situs biasanya menggunakan lokasi Anda untuk fitur atau informasi yang relevan, seperti berita lokal atau toko terdekat</translation>
 <translation id="2796424461616874739">Waktu tunggu autentikasi habis saat menyambung ke "<ph name="DEVICE_NAME" />".</translation>
 <translation id="2796740370559399562">Terus izinkan cookie</translation>
@@ -2168,6 +2178,7 @@
 <translation id="2949289451367477459">Gunakan lokasi. Izinkan aplikasi dan layanan yang memiliki izin akses lokasi untuk menggunakan lokasi perangkat ini. Google dapat mengumpulkan data lokasi secara berkala dan menggunakan data ini secara anonim untuk meningkatkan akurasi lokasi dan layanan berdasarkan lokasi. <ph name="BEGIN_LINK1" />Pelajari Lebih Lanjut<ph name="END_LINK1" /></translation>
 <translation id="2950666755714083615">Daftar</translation>
 <translation id="2953019166882260872">Hubungkan ponsel dengan kabel</translation>
+<translation id="2953218713108551165">Notifikasi tidak diizinkan untuk <ph name="SITE" />. Anda akan ditanyai lagi pada kunjungan berikutnya.</translation>
 <translation id="2956070239128776395">Bagian tersarang dalam grup: <ph name="ERROR_LINE" /></translation>
 <translation id="2958721676848865875">Peringatan ekstensi pack</translation>
 <translation id="2959127025785722291">Terjadi error. Pemindaian tidak dapat diselesaikan. Coba lagi.</translation>
@@ -2876,6 +2887,7 @@
 <translation id="3665919494326051362">Versi saat ini adalah <ph name="CURRENT_VERSION" /></translation>
 <translation id="3670113805793654926">Perangkat dari semua vendor</translation>
 <translation id="3670229581627177274">Aktifkan Bluetooth</translation>
+<translation id="3672663996348587094">Klik untuk mengizinkan "<ph name="EXTENSIONS_REQUESTING_ACCESS" />" di <ph name="ORIGIN" />:</translation>
 <translation id="3672681487849735243">Kesalahan pabrik terdeteksi</translation>
 <translation id="3673097791729989571">Login dihosting oleh <ph name="SAML_DOMAIN" /></translation>
 <translation id="3673622964532248901">Anda tidak diizinkan melakukan transmisi ke perangkat ini.</translation>
@@ -3391,6 +3403,7 @@
 <translation id="4132183752438206707">Temukan aplikasi di Google Play Store</translation>
 <translation id="4132364317545104286">Ganti nama profil eSIM</translation>
 <translation id="4133076602192971179">Buka aplikasi untuk mengubah sandi</translation>
+<translation id="4134818201340504801">Penyimpanan yang tersedia tidak cukup untuk menyelesaikan penyiapan. Kosongkan penyimpanan lalu coba lagi</translation>
 <translation id="4135746311382563554">Persyaratan layanan tambahan Google Chrome dan Chrome OS</translation>
 <translation id="4136203100490971508">Fitur Cahaya Malam akan otomatis dinonaktifkan saat matahari terbit</translation>
 <translation id="41365691917097717">Dengan melanjutkan, proses debug ADB akan diaktifkan untuk membuat dan menguji aplikasi Android. Perhatikan bahwa tindakan ini dapat menginstal aplikasi Android yang belum diverifikasi oleh Google, dan perlu reset ke setelan pabrik untuk menonaktifkannya.</translation>
@@ -3627,6 +3640,7 @@
 <translation id="4378556263712303865">Permintaan perangkat</translation>
 <translation id="4379281552162875326">Uninstal "<ph name="APP_NAME" />"?</translation>
 <translation id="4380648069038809855">Layar penuh dibuka</translation>
+<translation id="4383048856908088702">Saat tab ini tidak aktif, Penghemat Memori akan membebaskan <ph name="MEMORY_VALUE" /> memori untuk tugas lain. Anda dapat mengubahnya kapan saja di <ph name="SETTINGS_LINK" />.</translation>
 <translation id="4384312707950789900">Tambahkan ke pilihan</translation>
 <translation id="4384652540891215547">Aktifkan ekstensi</translation>
 <translation id="4384886290276344300">Ubah setelan keyboard</translation>
@@ -3704,6 +3718,7 @@
 <translation id="4451479197788154834">Sandi disimpan di perangkat ini dan Akun Google Anda</translation>
 <translation id="4451757071857432900">Diblokir di situs yang menampilkan iklan yang mengganggu atau menyesatkan (direkomendasikan)</translation>
 <translation id="4453946976636652378">Telusuri <ph name="SEARCH_ENGINE_NAME" /> atau ketik URL</translation>
+<translation id="4458535500699390320">Saat tab ini tidak aktif, Penghemat Memori akan membebaskan memori untuk tugas lain. Anda dapat mengubahnya kapan saja di setelan.</translation>
 <translation id="4459169140545916303">Aktif <ph name="DEVICE_LAST_ACTIVATED_TIME" /> hari lalu</translation>
 <translation id="4460014764210899310">Pisahkan</translation>
 <translation id="4462159676511157176">Server nama khusus</translation>
@@ -3876,6 +3891,7 @@
 <translation id="4613271546271159013">Ekstensi telah mengubah apa yang ditampilkan halaman saat Anda membuka tab baru.</translation>
 <translation id="4615586811063744755">tidak ada cookie yang dipilih</translation>
 <translation id="461661862154729886">Sumber energi</translation>
+<translation id="461676224702246336">Saat diklik untuk situs ini</translation>
 <translation id="4617001782309103936">Terlalu pendek</translation>
 <translation id="4617019240346358451">Muat ulang halaman untuk menggunakan "<ph name="EXTENSION_NAME" />"</translation>
 <translation id="4617270414136722281">Opsi ekstensi</translation>
@@ -3998,6 +4014,7 @@
 <translation id="4728558894243024398">Platform</translation>
 <translation id="4728570203948182358"><ph name="BEGIN_LINK" />Administrator<ph name="END_LINK" /> Anda telah menonaktifkan pemeriksaan terhadap software berbahaya</translation>
 <translation id="4730492586225682674">Catatan terakhir stilus di layar kunci</translation>
+<translation id="4730888769809690665">Notifikasi diizinkan untuk <ph name="SITE" /></translation>
 <translation id="473140019006744096">Tidak tersedia cukup ruang di perangkat ini untuk menyelesaikan update ini. Kosongkan <ph name="NECESSARY_SPACE" /> di perangkat, lalu coba lagi.</translation>
 <translation id="4733161265940833579"><ph name="BATTERY_PERCENTAGE" />% (Kiri)</translation>
 <translation id="4733793249294335256">Lokasi</translation>
@@ -4300,6 +4317,7 @@
 <translation id="5032430150487044192">Tidak dapat membuat Kode QR</translation>
 <translation id="5033137252639132982">Tidak diizinkan menggunakan sensor gerakan</translation>
 <translation id="5033266061063942743">Bentuk geometris</translation>
+<translation id="5034000993065629381">Hubungi administrator Anda</translation>
 <translation id="5037676449506322593">Pilih Semua</translation>
 <translation id="5038818366306248416">Anda sebelumnya memilih untuk tidak mengizinkan ekstensi di <ph name="ORIGIN" /></translation>
 <translation id="5039696241953571917">Lihat dan kelola sandi tersimpan di Akun Google Anda</translation>
@@ -4430,6 +4448,7 @@
 <translation id="5161251470972801814">Perangkat USB dari <ph name="VENDOR_NAME" /></translation>
 <translation id="5162905305237671850"><ph name="DEVICE_TYPE" /> telah diblokir</translation>
 <translation id="5163910114647549394">Tab dipindahkan ke akhir tabstrip</translation>
+<translation id="5164530241085602114">Notifikasi tidak diizinkan untuk <ph name="SITE" /></translation>
 <translation id="516747639689914043">Hypertext Transport Protocol (HTTP)</translation>
 <translation id="5170568018924773124">Tampilkan dalam folder</translation>
 <translation id="5171045022955879922">Telusuri atau ketik URL</translation>
@@ -4532,6 +4551,7 @@
 <translation id="5269977353971873915">Gagal Mencetak</translation>
 <translation id="5273806377963980154">Edit URL situs</translation>
 <translation id="5275084684151588738">Kamus Pengguna</translation>
+<translation id="5275100789567222478">Aktifkan hanya saat baterai <ph name="PERCENT" />% atau lebih rendah</translation>
 <translation id="5275338516105640560">Tombol Grup Tab Tersimpan</translation>
 <translation id="5275352920323889391">Anjing</translation>
 <translation id="527605719918376753">Nonaktifkan tab</translation>
@@ -4550,6 +4570,7 @@
 <translation id="5285635972691565180">Layar <ph name="DISPLAY_ID" /></translation>
 <translation id="5286194356314741248">Memindai</translation>
 <translation id="5287425679749926365">Akun Anda</translation>
+<translation id="5288106344236929384">Tindakan lainnya, opsi kunci sandi untuk <ph name="USERNAME" /> di <ph name="DOMAIN" /></translation>
 <translation id="5288678174502918605">Buka K&amp;embali Tab yang Tertutup</translation>
 <translation id="52895863590846877">Halaman tidak dalam bahasa <ph name="LANGUAGE" /></translation>
 <translation id="52912272896845572">File kunci pribadi tidak valid.</translation>
@@ -4745,6 +4766,7 @@
 <translation id="5473099001878321374">Dengan melanjutkan, Anda setuju bahwa perangkat ini juga dapat otomatis mendownload serta menginstal update dan aplikasi dari Google, operator anak Anda, dan produsen perangkat ini, yang kemungkinan menggunakan data seluler. Beberapa aplikasi ini mungkin menawarkan pembelian dalam aplikasi.</translation>
 <translation id="5473156705047072749">{NUM_CHARACTERS,plural, =1{PIN harus berisi minimal satu karakter}other{PIN harus berisi minimal # karakter}}</translation>
 <translation id="5474859849784484111"><ph name="MANAGER" /> mengharuskan Anda terhubung ke Wi-Fi sekarang dan mendownload update. Atau, Anda dapat mendownload dengan koneksi berbayar (dapat dikenai biaya).</translation>
+<translation id="5476016146231427848">Mulai ulang perangkat Anda untuk menggunakan Steam di Chromebook</translation>
 <translation id="5481273127572794904">Tidak diizinkan mendownload otomatis beberapa file</translation>
 <translation id="5481941284378890518">Tambahkan Printer di Sekitar</translation>
 <translation id="5483785310822538350">Cabut akses perangkat dan file</translation>
@@ -4964,6 +4986,7 @@
 <translation id="5683806393796685434">Masukkan kode aktivasi Anda</translation>
 <translation id="5684181005476681636">Detail Wi-Fi</translation>
 <translation id="5684661240348539843">Pengenal Aset</translation>
+<translation id="5684969244627829799">Login ke akun pengguna lalu coba lagi</translation>
 <translation id="5687326903064479980">Zona waktu</translation>
 <translation id="5687935527303996204">Pastikan perangkat dicolokkan dan tidak dimatikan. Penginstalan dapat memerlukan waktu hingga 20 menit. Perangkat akan otomatis dimatikan saat penginstalan selesai.</translation>
 <translation id="5689516760719285838">Lokasi</translation>
@@ -5090,6 +5113,7 @@
 <translation id="5805697420284793859">Window manager</translation>
 <translation id="5806447147478173900">Total penyimpanan yang digunakan oleh situs yang ditampilkan: <ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">0° (Default)</translation>
+<translation id="5810603387504252966">#borealis-enabled harus diaktifkan di chrome://flags</translation>
 <translation id="5810809306422959727">Akun ini tidak memenuhi syarat kontrol orang tua</translation>
 <translation id="5811614940486072060">File ini tidak biasa didownload dan mungkin berbahaya</translation>
 <translation id="5812674658566766066">Luaskan semua</translation>
@@ -5169,6 +5193,7 @@
 <translation id="5882449899683447569">Terjadi error dan sandi Anda tidak diimpor</translation>
 <translation id="5882919346125742463">Jaringan yang Dikenal</translation>
 <translation id="5883356647197510494">Otomatis memblokir <ph name="PERMISSION_1" />, <ph name="PERMISSION_2" /></translation>
+<translation id="5884447826201752041">Sesuaikan untuk setiap ekstensi</translation>
 <translation id="5884474295213649357">Tab ini terhubung dengan perangkat USB.</translation>
 <translation id="5885314688092915589">Organisasi Anda akan mengelola profil ini</translation>
 <translation id="5886009770935151472">Jari 1</translation>
@@ -5608,6 +5633,7 @@
 <translation id="6301300352769835063">Izinkan Google menggunakan data hardware Anda untuk membantu meningkatkan <ph name="DEVICE_OS" />. Jika Anda menolak, data ini tetap dikirimkan ke Google untuk menentukan update yang tepat, tetapi tidak disimpan ataupun digunakan. Pelajari lebih lanjut di g.co/flex/HWDataCollection.</translation>
 <translation id="630292539633944562">Saran informasi pribadi</translation>
 <translation id="6305607932814307878">Kebijakan Global:</translation>
+<translation id="6305909198255586420">Instal menggunakan profil utama Anda</translation>
 <translation id="6307990684951724544">Sistem sibuk</translation>
 <translation id="6308493641021088955">Login disediakan oleh <ph name="EXTENSION_NAME" /></translation>
 <translation id="6308937455967653460">Simpan tau&amp;tan sebagai...</translation>
@@ -5929,6 +5955,7 @@
 <translation id="6608166463665411119">Reset eSIM</translation>
 <translation id="6609478180749378879">Data login akan disimpan di perangkat ini setelah Anda keluar dari mode Samaran. Anda dapat login ke situs ini dengan perangkat Anda lagi nanti.</translation>
 <translation id="6610002944194042868">Opsi Terjemahan</translation>
+<translation id="6611907964265870728">Pastikan perangkat Anda terhubung ke internet</translation>
 <translation id="6611972847767394631">Temukan tab Anda di sini</translation>
 <translation id="6613668613087513143">Tidak tersedia cukup ruang di perangkat ini untuk menyelesaikan update ini. Kosongkan <ph name="NECESSARY_SPACE" /> di perangkat, lalu coba lagi dari browser Chrome.</translation>
 <translation id="6615455863669487791">Tunjukkan</translation>
@@ -6317,6 +6344,7 @@
 <translation id="697508444536771064">Matikan Linux</translation>
 <translation id="6975361011348772931">Meminta untuk membaca &amp; mengubah</translation>
 <translation id="6978121630131642226">Mesin Telusur</translation>
+<translation id="6979041727349121225">Penghemat Energi</translation>
 <translation id="6979044105893951891">Luncurkan dan tutup sesi tamu terkelola</translation>
 <translation id="6979158407327259162">Google Drive</translation>
 <translation id="6979440798594660689">Matikan (default)</translation>
@@ -6369,6 +6397,7 @@
 <translation id="7014174261166285193">Pemasangan gagal.</translation>
 <translation id="7014480873681694324">Hapus Sorotan</translation>
 <translation id="7014741021609395734">Tingkat zoom</translation>
+<translation id="7015088858756332848">Tidak dapat meluncurkan Steam di Chromebook. Coba lagi</translation>
 <translation id="7017004637493394352">Ucapkan "Ok Google" lagi</translation>
 <translation id="7017219178341817193">Tambahkan halaman baru</translation>
 <translation id="7017354871202642555">Tidak dapat menyetel mode setelah jendela ditetapkan.</translation>
@@ -6745,6 +6774,7 @@
 <translation id="7409854300652085600">Bookmark diimpor.</translation>
 <translation id="7410344089573941623">Tanyakan jika <ph name="HOST" /> ingin mengakses kamera dan mikrofon Anda</translation>
 <translation id="7410852728357935715">Transmisikan ke perangkat</translation>
+<translation id="7411614333737930931">Mulai ulang perangkat lalu coba lagi</translation>
 <translation id="741204030948306876">Ya, saya setuju</translation>
 <translation id="7412226954991670867">Memori GPU</translation>
 <translation id="7414464185801331860">18x</translation>
@@ -6975,6 +7005,7 @@
 <translation id="7635048370253485243">Disematkan oleh Administrator Anda</translation>
 <translation id="7636919061354591437">Instal di Perangkat ini</translation>
 <translation id="7637253234491814483">Sentuh sensor sidik jari di pojok kanan atas keyboard, di samping tombol Daya. Data sidik jari Anda disimpan dengan aman dan hanya ada di <ph name="DEVICE_TYPE" />.</translation>
+<translation id="7637272932128132922">Saat tab ini tidak aktif, Penghemat Memori akan membebaskan memori untuk tugas lain. Anda dapat mengubahnya kapan saja di <ph name="SETTINGS_LINK" />.</translation>
 <translation id="7637593984496473097">Ruang disk tidak cukup</translation>
 <translation id="7639914187072011620">Gagal mengambil URL alihan SAML dari server</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> otomatis memasukkan Anda ke situs yang memenuhi syarat menggunakan sandi tersimpan.</translation>
@@ -7091,6 +7122,7 @@
 <translation id="7728668285692163452">Perubahan saluran akan diterapkan nanti</translation>
 <translation id="7730449930968088409">Menangkap konten layar Anda</translation>
 <translation id="7730683939467795481">Halaman ini diubah oleh ekstensi "<ph name="EXTENSION_NAME" />"</translation>
+<translation id="7735165285389721951">Penyiapan Steam lain sedang berlangsung. Tunggu hingga proses selesai sebelum mencoba lagi</translation>
 <translation id="7737115349420013392">Menyambungkan dengan "<ph name="DEVICE_NAME" />" ...</translation>
 <translation id="7737846262459425222">Anda dapat mengubahnya kapan saja di Setelan &gt; Asisten Google &gt; Konteks layar.</translation>
 <translation id="7737948071472253612">Tidak diizinkan menggunakan kamera Anda</translation>
@@ -7389,6 +7421,7 @@
 File Kunci: <ph name="KEY_FILE" />
 
 Simpan file kunci Anda di tempat yang aman. Anda akan membutuhkannya untuk membuat versi baru ekstensi.</translation>
+<translation id="8001100670809322641">Tunggu beberapa menit dan coba lagi</translation>
 <translation id="8002274832045662704">Konfigurasi printer lanjutan</translation>
 <translation id="8002670234429879764"><ph name="PRINTER_NAME" /> tidak lagi tersedia</translation>
 <translation id="8004092996156083991">Jika sandi dibobol, kami akan memberi tahu Anda.</translation>
@@ -7398,6 +7431,7 @@
 <translation id="8008356846765065031">Internet terputus. Periksa koneksi internet Anda.</translation>
 <translation id="8009225694047762179">Kelola Kata sandi</translation>
 <translation id="8011372169388649948">'<ph name="BOOKMARK_TITLE" />' dipindahkan.</translation>
+<translation id="8011875486979733097">Steam tidak dapat diinstal</translation>
 <translation id="8012647001091218357">Orang tua Anda saat ini tidak dapat dihubungi. Coba lagi.</translation>
 <translation id="8013993649590906847">Jika gambar tidak memiliki deskripsi yang berguna, Chrome akan mencoba memberikan deskripsi untuk Anda. Untuk membuat deskripsi, gambar akan dikirim ke Google.</translation>
 <translation id="8014154204619229810">Alat pembaru sedang berjalan. Segarkan dalam satu menit untuk memeriksa lagi.</translation>
@@ -7488,6 +7522,7 @@
 <translation id="808894953321890993">Ubah sandi</translation>
 <translation id="8090234456044969073">Membaca daftar situs web yang paling sering Anda kunjungi</translation>
 <translation id="8090513782447872344">Anda dapat kembali kapan saja untuk melihat Panduan Privasi lagi</translation>
+<translation id="809312780580957751">Steam tidak dapat diinstal di perangkat ini</translation>
 <translation id="8093359998839330381"><ph name="PLUGIN_NAME" /> tidak merespons</translation>
 <translation id="8095105960962832018"><ph name="BEGIN_PARAGRAPH1" />Cadangkan ke Google Drive. Pulihkan data atau beralih perangkat kapan saja dengan mudah. Cadangan Anda meliputi data aplikasi.<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />Cadangan Anda diupload ke Google dan dienkripsi menggunakan sandi Akun Google Anda.<ph name="END_PARAGRAPH2" />
@@ -7583,6 +7618,7 @@
 <translation id="8177318697334260664">{NUM_TABS,plural, =1{Pindahkan tab ke jendela baru}other{Pindahkan beberapa tab ke jendela baru}}</translation>
 <translation id="8179188928355984576">Tidak digunakan dengan aplikasi Android</translation>
 <translation id="8179976553408161302">Enter</translation>
+<translation id="8180785270975217276">Penghemat Energi diaktifkan</translation>
 <translation id="8180786512391440389">"<ph name="EXTENSION" />" dapat membaca dan menghapus file gambar, video, dan suara di lokasi yang dicentang.</translation>
 <translation id="8181215761849004992">Tidak dapat bergabung dengan domain. Periksa akun untuk mengetahui apakah Anda memiliki hak istimewa yang memadai untuk menambahkan perangkat.</translation>
 <translation id="8182105986296479640">Aplikasi tidak merespons.</translation>
@@ -7705,6 +7741,7 @@
 <translation id="828642162569365647">Sandi atau PIN ini melindungi data Anda pada <ph name="DEVICE_TYPE" /> ini dan informasi apa pun yang Anda akses dari ponsel. Anda harus membuka kunci setiap kali <ph name="DEVICE_TYPE" /> diaktifkan dari tidur.</translation>
 <translation id="8287902281644548111">Telusuri berdasarkan panggilan API/URL</translation>
 <translation id="8288032458496410887">Uninstal <ph name="APP" />...</translation>
+<translation id="8288539437195337464">Pastikan perangkat sudah diupdate dan coba lagi</translation>
 <translation id="8289128870594824098">Ukuran disk</translation>
 <translation id="8289509909262565712">Selamat datang di <ph name="DEVICE_OS" /></translation>
 <translation id="8293206222192510085">Tambahkan Bookmark</translation>
@@ -7999,6 +8036,7 @@
 <translation id="8599864823732014237">Lewati pendaftaran perusahaan?</translation>
 <translation id="8601206103050338563">Autentikasi klien TLS WWW</translation>
 <translation id="8601611099293226919">Telusuri layar Anda dengan Google Lens</translation>
+<translation id="8602674530529411098">Aplikasi (Beta)</translation>
 <translation id="8602851771975208551">Program lain di komputer Anda menambahkan aplikasi yang dapat mengubah cara kerja Chrome.</translation>
 <translation id="8605428685123651449">Memori SQLite</translation>
 <translation id="8608618451198398104">Tambahkan tiket Kerberos</translation>
@@ -8683,6 +8721,7 @@
 <translation id="939598580284253335">Masukkan frasa sandi</translation>
 <translation id="939736085109172342">Folder baru</translation>
 <translation id="942532530371314860"><ph name="APP_NAME" /> membagikan audio dan tab Chrome.</translation>
+<translation id="944799160843436808">Terjadi masalah saat menyiapkan Steam di Chromebook</translation>
 <translation id="945522503751344254">Kirim masukan</translation>
 <translation id="947329552760389097">&amp;Periksa Elemen</translation>
 <translation id="947526284350604411">Jawaban Anda</translation>
@@ -8707,6 +8746,7 @@
 <translation id="968000525894980488">Aktifkan layanan Google Play.</translation>
 <translation id="968037381421390582">Tempel dan Telusuri “<ph name="SEARCH_TERMS" />”</translation>
 <translation id="969096075394517431">Ubah bahasa</translation>
+<translation id="969574218206797926">Penghemat Memori akan membebaskan memori dari tab yang tidak aktif agar dapat digunakan oleh tab aktif dan aplikasi lainnya</translation>
 <translation id="970047733946999531">{NUM_TABS,plural, =1{1 Tab}other{# Tab}}</translation>
 <translation id="971510864672937292">Hapus data situs dan izin untuk <ph name="SITE_NAME" /> serta semua situs di bawahnya?</translation>
 <translation id="971774202801778802">URL bookmark</translation>
diff --git a/chrome/app/resources/generated_resources_is.xtb b/chrome/app/resources/generated_resources_is.xtb
index 3c1e166..b85abd7 100644
--- a/chrome/app/resources/generated_resources_is.xtb
+++ b/chrome/app/resources/generated_resources_is.xtb
@@ -1135,6 +1135,7 @@
 <translation id="2034346955588403444">Bæta við öðru Wi-Fi neti</translation>
 <translation id="2035211704574173780">Grátóna</translation>
 <translation id="203574396658008164">Virkja glósur af lásskjá</translation>
+<translation id="2036514476578229158">Þú baðst um að opna þetta vefsvæði. Foreldrar þínir geta svarað í Family Link.</translation>
 <translation id="2037445849770872822">Eftirlit er sett upp fyrir þennan Google reikning. Til að setja upp fleiri barnalæsingar skaltu velja „Halda áfram“.
 
 Annars skaltu skrá þig út núna svo breytingarnar á þessum reikningi taki gildi í þessu tæki.
@@ -1256,6 +1257,7 @@
 <translation id="2135787500304447609">Halda áf&amp;ram</translation>
 <translation id="2136372518715274136">Sláðu inn nýtt aðgangsorð</translation>
 <translation id="2136476978468204130">Innslegið aðgangsorð er rangt</translation>
+<translation id="2137891579555018930">Bíður heimildar…</translation>
 <translation id="2138398485845393913">Tenging við „<ph name="DEVICE_NAME" />“ er enn í vinnslu</translation>
 <translation id="2139919072249842737">Hnappur til að setja upp</translation>
 <translation id="2140788884185208305">Ástand rafhlöðu</translation>
@@ -4146,6 +4148,7 @@
 <translation id="4858913220355269194">Falur</translation>
 <translation id="4862642413395066333">Undirritar OCSP-svör</translation>
 <translation id="4863769717153320198">Virðist vera <ph name="WIDTH" /> x <ph name="HEIGHT" /> (sjálfgefið)</translation>
+<translation id="486459320933704969">Foreldri eða forráðamaður verður að samþykkja að þú opnir þetta vefsvæði</translation>
 <translation id="4864805589453749318">Veldu foreldrið sem gefur heimild til að bæta við skólareikningi.</translation>
 <translation id="486635084936119914">Opna tilteknar tegundir skráa sjálfkrafa að niðurhali loknu</translation>
 <translation id="4868281708609571334">Kenna Google hjálpara að þekkja röddina í: <ph name="SUPERVISED_USER_NAME" /></translation>
@@ -8729,6 +8732,7 @@
 <translation id="947329552760389097">&amp;Kanna einingar</translation>
 <translation id="947526284350604411">Svar þitt</translation>
 <translation id="947667444780368238"><ph name="ORIGIN" /> getur ekki opnað skrár í þessari möppu vegna þess að hún inniheldur kerfisskrár</translation>
+<translation id="949314938206378263">Þú baðst um að opna þetta vefsvæði. Foreldri þitt getur svarað í Family Link.</translation>
 <translation id="950307215746360464">Uppsetningarleiðbeiningar</translation>
 <translation id="951991426597076286">Hafna</translation>
 <translation id="952471655966876828">Tækið tengist sjálfkrafa þegar kveikt er á því og það notað</translation>
diff --git a/chrome/app/resources/generated_resources_it.xtb b/chrome/app/resources/generated_resources_it.xtb
index 2d86f11f3..742b3b2 100644
--- a/chrome/app/resources/generated_resources_it.xtb
+++ b/chrome/app/resources/generated_resources_it.xtb
@@ -1118,6 +1118,7 @@
 <translation id="2034346955588403444">Aggiungi un'altra rete Wi-Fi</translation>
 <translation id="2035211704574173780">Scala di grigi</translation>
 <translation id="203574396658008164">Attiva la scrittura di note dalla schermata di blocco</translation>
+<translation id="2036514476578229158">Hai chiesto di poter visitare questo sito. I tuoi genitori possono rispondere in Family Link.</translation>
 <translation id="2037445849770872822">La supervisione è configurata per questo Account Google. Per configurare altre funzioni di Controllo genitori, seleziona Continua.
 
 Altrimenti, esci ora in modo che le modifiche effettuate all'account si riflettano sul dispositivo.
@@ -1238,6 +1239,7 @@
 <translation id="2135787500304447609">&amp;Riprendi</translation>
 <translation id="2136372518715274136">Inserisci la nuova password</translation>
 <translation id="2136476978468204130">La passphrase inserita non è corretta</translation>
+<translation id="2137891579555018930">In attesa di autorizzazione…</translation>
 <translation id="2138398485845393913">Connessione a "<ph name="DEVICE_NAME" />" ancora in corso</translation>
 <translation id="2139919072249842737">Pulsante di configurazione</translation>
 <translation id="2140788884185208305">Condizioni batteria</translation>
@@ -4112,6 +4114,7 @@
 <translation id="4858913220355269194">Holly</translation>
 <translation id="4862642413395066333">Firma risposte OCSP</translation>
 <translation id="4863769717153320198">Risoluzione di <ph name="WIDTH" /> x <ph name="HEIGHT" /> (valore predefinito)</translation>
+<translation id="486459320933704969">Un genitore o tutore deve autorizzarti a visitare questo sito web</translation>
 <translation id="4864805589453749318">Seleziona il genitore che sta concedendo l'autorizzazione per aggiungere un account della scuola.</translation>
 <translation id="486635084936119914">Apri automaticamente determinati tipi di file dopo il download</translation>
 <translation id="4868281708609571334">Insegna all'Assistente Google a riconoscere la voce di <ph name="SUPERVISED_USER_NAME" /></translation>
@@ -8668,6 +8671,7 @@
 <translation id="947329552760389097">&amp;Ispeziona elementi</translation>
 <translation id="947526284350604411">La tua risposta</translation>
 <translation id="947667444780368238"><ph name="ORIGIN" /> non può aprire i file in questa cartella perché contiene file di sistema</translation>
+<translation id="949314938206378263">Hai chiesto di poter visitare questo sito. Uno dei tuoi genitori può rispondere in Family Link.</translation>
 <translation id="950307215746360464">Guida alla configurazione</translation>
 <translation id="951991426597076286">Rifiuta</translation>
 <translation id="952471655966876828">Il dispositivo si connetterà automaticamente quando verrà acceso e sarà in uso</translation>
diff --git a/chrome/app/resources/generated_resources_ja.xtb b/chrome/app/resources/generated_resources_ja.xtb
index daa1764..0d5adaac 100644
--- a/chrome/app/resources/generated_resources_ja.xtb
+++ b/chrome/app/resources/generated_resources_ja.xtb
@@ -71,6 +71,7 @@
 <translation id="1067661089446014701">セキュリティ強化のため、Google アカウントに保存する前にデバイス上でパスワードを暗号化できます。</translation>
 <translation id="1067922213147265141">他の Google サービス</translation>
 <translation id="1069355737714877171"><ph name="PROFILE_NAME" /> という名前の eSIM プロファイルを削除します</translation>
+<translation id="1069814191880976658">別の画面を選択</translation>
 <translation id="1070377999570795893">パソコン上の別のプログラムにより、Chrome の動作に影響を及ぼす可能性のある拡張機能が追加されました。
 
 <ph name="EXTENSION_NAME" /></translation>
@@ -226,6 +227,7 @@
 <translation id="120069043972472860">視聴不能</translation>
 <translation id="1201402288615127009">次へ</translation>
 <translation id="1201564082781748151">パスワードを忘れてもローカルデータを復元できます</translation>
+<translation id="1202116106683864634">このパスキーを削除してもよろしいですか?</translation>
 <translation id="1202596434010270079">キオスクアプリを更新しました。USB スティックを取り外してください。</translation>
 <translation id="120368089816228251">音符</translation>
 <translation id="1203942045716040624">共有ワーカー: <ph name="SCRIPT_URL" /></translation>
@@ -249,6 +251,7 @@
 <translation id="1223853788495130632">この設定には管理者が特定の値を推奨しています。</translation>
 <translation id="1225177025209879837">リクエストを処理しています...</translation>
 <translation id="1227507814927581609">「<ph name="DEVICE_NAME" />」への接続中に、認証に失敗しました。</translation>
+<translation id="1227660082540388410">パスキーの編集</translation>
 <translation id="1227993798763400520">キャストできませんでした。もう一度お試しください。</translation>
 <translation id="1230417814058465809">標準保護機能がオンになっています。セキュリティをさらに強化するには、保護強化機能を使用してください。</translation>
 <translation id="1231733316453485619">同期を有効にしますか?</translation>
@@ -766,6 +769,7 @@
 <translation id="1709106626015023981"><ph name="WIDTH" />x<ph name="HEIGHT" />(ネイティブ)</translation>
 <translation id="1709217939274742847">認証に使用するチケットを選択します。<ph name="LINK_BEGIN" />詳細<ph name="LINK_END" /></translation>
 <translation id="1709762881904163296">ネットワーク設定</translation>
+<translation id="1709916727352927457">パスキーの削除</translation>
 <translation id="1709972045049031556">共有できません</translation>
 <translation id="1711935594505774770"><ph name="SITE_GROUP_NAME" /> とその下位のすべてのサイトにより保存されたすべてのデータと Cookie、インストールされたアプリが削除されます</translation>
 <translation id="1714644264617423774">ユーザー補助機能を有効にするとデバイスが使いやすくなります。<ph name="LINK_BEGIN" />詳細<ph name="LINK_END" /></translation>
@@ -1088,6 +1092,7 @@
 <translation id="2007404777272201486">問題の報告...</translation>
 <translation id="2009590708342941694">絵文字ツール</translation>
 <translation id="2010501376126504057">対応デバイス</translation>
+<translation id="2010888903612390044">マイクが接続されていません</translation>
 <translation id="2015232545623037616">PC と Chromecast が同じ Wi-Fi ネットワークに接続している</translation>
 <translation id="2016473077102413275">画像を必要とする機能は動作しなくなります</translation>
 <translation id="2016574333161572915">Google Meet ハードウェアの準備ができました</translation>
@@ -3014,6 +3019,7 @@
 <translation id="3813296892522778813">探しているものが見つからない場合は、<ph name="BEGIN_LINK_CHROMIUM" />Google Chrome のヘルプ<ph name="END_LINK_CHROMIUM" />をご覧ください。</translation>
 <translation id="3813358687923336574">ページの翻訳とクイック アンサーに使用する言語</translation>
 <translation id="3814529970604306954">学校用アカウント</translation>
+<translation id="3814792775883886759">カメラが接続されていません</translation>
 <translation id="3816118180265633665">Chrome の色</translation>
 <translation id="3817524650114746564">パソコンのプロキシ設定を開く</translation>
 <translation id="3819164369574292143">画面上の項目を拡大表示します。拡大鏡をオンまたはオフにするには、検索+Ctrl+M キーを使用します。拡大した状態で移動するには、Ctrl+Alt+矢印キーを使用します。</translation>
@@ -4254,6 +4260,7 @@
 <translation id="5017643436812738274">テキスト カーソルを使ってページ間を移動できます。オフにするには Ctrl+検索+7 キーを押します。</translation>
 <translation id="5018207570537526145">拡張機能のウェブサイトを開く</translation>
 <translation id="5018526990965779848">使用状況データや診断データを送信します。診断データやデバイスとアプリの使用状況データを Google に自動送信して、Android の機能向上にご協力ください。この情報は、システムとアプリの安定性の向上やその他の機能の改善に役立てられます。また、Google のアプリやパートナー(Android デベロッパーなど)も、集計データとしてこの情報を活用します。[その他のウェブとアプリのアクティビティ] の設定がオンになっている場合、このデータは Google アカウントに保存されます。</translation>
+<translation id="5020008942039547742">別のウィンドウを選択</translation>
 <translation id="5021750053540820849">まだ更新されていません</translation>
 <translation id="5024511550058813796">同期しているすべてのデバイスから履歴にアクセスして、作業の続きを行うことができます</translation>
 <translation id="5026492829171796515">ログインして Google アカウントを追加</translation>
@@ -4478,6 +4485,7 @@
 <translation id="5252653240322147470">PIN は <ph name="MAXIMUM" /> 桁未満で指定してください</translation>
 <translation id="5254368820972107711">削除されるファイルを表示</translation>
 <translation id="52550593576409946">キオスク アプリケーションを起動できませんでした。</translation>
+<translation id="5255726914791076208">パスキーを編集しても、<ph name="RP_ID" /> のアカウントは変更されません</translation>
 <translation id="5255859108402770436">もう一度ログインする</translation>
 <translation id="52566111838498928">フォントを読み込んでいます...</translation>
 <translation id="5256861893479663409">すべてのサイト</translation>
@@ -6005,6 +6013,7 @@
 <translation id="672609503628871915">新機能を確認する</translation>
 <translation id="67269783048918309">使用状況データや診断データを送信します。このデバイスは現在、診断データやデバイスとアプリの使用状況データを Google に自動送信するように設定されています。この情報を使ってお子様個人が特定されることはありません。この情報は、システムとアプリの安定性の向上やその他の機能の改善に役立てられます。また、Google のアプリやパートナー(Android デベロッパーなど)も、集計データとしてこの情報を活用します。この<ph name="BEGIN_LINK1" />設定<ph name="END_LINK1" />は所有者によって管理されています。お子様の [その他のウェブとアプリのアクティビティ] の設定がオンになっている場合、このデータはお子様の Google アカウントに保存されます。<ph name="BEGIN_LINK2" />詳細<ph name="END_LINK2" /></translation>
 <translation id="6727969043791803658">接続済み、<ph name="BATTERY_PERCENTAGE" />% のバッテリー残量</translation>
+<translation id="6729192290958770680">ユーザー名を入力してください</translation>
 <translation id="6731320427842222405">数分かかることがあります</translation>
 <translation id="6733620523445262364">「<ph name="BOOKMARK_TITLE" />」を作成しました。</translation>
 <translation id="6735304988756581115">Cookie と他のサイトのデータを表示...</translation>
diff --git a/chrome/app/resources/generated_resources_ka.xtb b/chrome/app/resources/generated_resources_ka.xtb
index 49cfc38..fc42c36 100644
--- a/chrome/app/resources/generated_resources_ka.xtb
+++ b/chrome/app/resources/generated_resources_ka.xtb
@@ -2397,6 +2397,7 @@
 <translation id="3188465121994729530">საშუალო გადაადგილება</translation>
 <translation id="3189187154924005138">დიდი კურსორი</translation>
 <translation id="3190558889382726167">პაროლი შენახულია</translation>
+<translation id="3192589799003798742">მიმდინარეობს Steam-ის დაყენება Chromebook-ში</translation>
 <translation id="3192947282887913208">აუდიო ფაილები</translation>
 <translation id="3193695589337931419">სისტემის სიგნალების ხელსაწყოები</translation>
 <translation id="3194786596445804250">მესამე მხარის ქუქი-ჩანაწერების დაბლოკვასთან დაკავშირებული დეტალების ჩვენება</translation>
@@ -2536,6 +2537,7 @@
 <translation id="3341699307020049241">PIN-კოდი არასწორია. დაგრჩათ <ph name="RETRIES" /> მცდელობა.</translation>
 <translation id="3341703758641437857">ფაილის URL-ებზე წვდომის დაშვება</translation>
 <translation id="3342361181740736773">„<ph name="TRIGGERING_EXTENSION_NAME" />“-ს სურს, ამოშალოს ეს გაფართოება.</translation>
+<translation id="3343977377045378693">მიმდინარეობს დაყენება</translation>
 <translation id="3345135638360864351">თქვენი მოთხოვნა, რომ შეხვიდეთ ამ საიტზე ვერ გაიგზავნა <ph name="NAME" /> -სთან. გთხოვთ სცადოთ განმეორებით.</translation>
 <translation id="3345634917232014253">უსაფრთხოების შემოწმება ეს-ესაა შესრულდა</translation>
 <translation id="3345886924813989455">მხარდაჭერილი ბრაუზერი ვერ მოიძებნა</translation>
@@ -2547,6 +2549,7 @@
 <translation id="3354768182971982851">Chrome-ის აპების ძველი ვერსიები 2022 წლის დეკემბრის შემდეგ აღარ გაიხსნება Mac‑მოწყობილობებზე. შეგიძლიათ შეამოწმოთ ახალი ვერსიის ხელმისაწვდომობა.</translation>
 <translation id="3354972872297836698">მოწყობილობასთან <ph name="DEVICE_NAME" /> დაწყვილება ვერ მოხერხდა; ხელახლა საცდელად არჩიეთ მოწყობილოა</translation>
 <translation id="3355936511340229503">კავშირის შეცდომა</translation>
+<translation id="3356036636691722598">ისიამოვნეთ თამაშებით თქვენს Chromebook-ში</translation>
 <translation id="3356469410714175391">(ვირტუალური ბარათი ჩართულია)</translation>
 <translation id="3356580349448036450">დასრულებულია</translation>
 <translation id="3359256513598016054">სერტიფიკატის პოლიტიკის შეზღუდვები</translation>
@@ -3461,6 +3464,7 @@
 <translation id="4211904048067111541">Android აპებში გამოყენების შეწყვეტა</translation>
 <translation id="42126664696688958">ექსპორტი</translation>
 <translation id="42137655013211669">ამ რესურსზე წვდომა აიკრძალა სერვერის მიერ.</translation>
+<translation id="4214192212360095377">ახლავე გამორთვა</translation>
 <translation id="4217558091331485702">გახსნამდე სკანირება</translation>
 <translation id="4217571870635786043">კარნახი</translation>
 <translation id="4218081191298393750">ამ ჩანართის დასადუმებლად შეეხეთ დინამიკის ხატულას</translation>
@@ -4362,6 +4366,7 @@
 <translation id="5089763948477033443">გვერდითი პანელის ზომის შეცვლის სახელური</translation>
 <translation id="5090637338841444533">თქვენი კამერის პოზიციისთვის თვალის მიდევნება დაუშვებელია</translation>
 <translation id="5093569275467863761">ქეშირებული ქვეფრეიმი უკან-წინ გადასვლის შესაძლებლობით: <ph name="BACK_FORWARD_CACHE_INCOGNITO_PAGE_URL" /></translation>
+<translation id="5094042205195563542">ინსტალაცია იწყება</translation>
 <translation id="5094176498302660097">ამ აპის მეშვეობით შეგიძლიათ გახსნათ და დაარედაქტიროთ მხარდაჭერილი ფაილები ფაილების აპიდან ან სხვა აპებიდან. იმისთვის, რომ გააკონტროლოთ, ნაგულისხმევად რომელმა ფაილებმა გახსნას ეს აპი, <ph name="BEGIN_LINK" />შეიტყვეთ, როგორ დააყენოთ ნაგულისხმევი აპები თქვენს მოწყობილობაზე<ph name="END_LINK" />.</translation>
 <translation id="5094721898978802975">მოთანამშრომლე ძირითად პროგრამებთან კომუნიკაცია</translation>
 <translation id="5097002363526479830">ქსელთან დაკავშირება ვერ მოხერხდა „<ph name="NAME" />“: <ph name="DETAILS" /></translation>
@@ -6384,6 +6389,7 @@
 <translation id="7014174261166285193">ინსტალაცია ვერ მოხერხდა.</translation>
 <translation id="7014480873681694324">გამოყოფის ამოშლა</translation>
 <translation id="7014741021609395734">მასშტაბის დონე</translation>
+<translation id="7014961128696979283">Steam-ის გაშვება</translation>
 <translation id="7015088858756332848">Steam on Chromebook-ის გაშვება ვერ მოხერხდა. ცადეთ ხელახლა.</translation>
 <translation id="7017004637493394352">კიდევ ერთხელ წარმოთქვით „Ok Google“</translation>
 <translation id="7017219178341817193">ახალი გვერდის დამატება</translation>
@@ -6777,6 +6783,7 @@
 <translation id="7423425410216218516">ხილვადობა ჩართულია <ph name="MINUTES" /> წუთით</translation>
 <translation id="7423513079490750513">წაიშალოს <ph name="INPUT_METHOD_NAME" /></translation>
 <translation id="7423807071740419372"><ph name="APP_NAME" />-ის გასაშვებად საჭიროა ნებართვა</translation>
+<translation id="7424153922653300265">ენერგიის დამზოგი ჩაირთო</translation>
 <translation id="7424818322350938336">ქსელი დამატებულია</translation>
 <translation id="7427315069950454694">თქვენი მოგონებები დღეისთვის</translation>
 <translation id="7427348830195639090">ფონის გვერდი: <ph name="BACKGROUND_PAGE_URL" /></translation>
@@ -8017,6 +8024,7 @@
 <translation id="859246725979739260">ამ საიტისთვის დაიბლოკა თქვენს მდებარეობაზე წვდომა.</translation>
 <translation id="8593121833493516339">გამოყენებისა და დიაგნოსტიკის მონაცემების გაგზავნა. ხელი შეუწყვეთ Android-ის გაუმჯობესებას თქვენი შვილისთვის, დიაგნოსტიკისა და მოწყობილობის/აპების გამოყენების მონაცემების ავტომატურად გაგზავნით Google-ში. აღნიშნული მონაცემები არ იქნება გამოყენებული თქვენი შვილის ვინაობის დასადგენად, არამედ დაგვეხმარება სისტემის/აპების სტაბილურობისა და სხვა ფუნქციების გაუმჯობესებაში. გარდა ამისა, გაერთიანებული მონაცემების ნაწილი ხელს შეუწყობს Google აპებსა და პარტნიორებს, მაგალითად, Android-ის დეველოპერებს. თუ თქვენი შვილისთვის ჩართულია ვებსა და აპებში დამატებითი აქტივობის პარამეტრი, აღნიშნული მონაცემები შესაძლოა შეინახოს მის Google ანგარიშში. <ph name="BEGIN_LINK1" />შეიტყვეთ მეტი<ph name="END_LINK1" /></translation>
 <translation id="8596540852772265699">მორგებული ფაილები</translation>
+<translation id="8597404194697561297">მოგესალმებათ Steam Chromebook-ში</translation>
 <translation id="8597845839771543242">ქონების ფორმატი:</translation>
 <translation id="8599681327221583254">ერთი ან მეტი წესი არასწორად არის კონფიგურირებული. მიმართეთ თქვენს ადმინისტრატორს</translation>
 <translation id="8599864823732014237">გსურთ, გამოტოვოთ კორპორაციული რეგისტრაცია?</translation>
diff --git a/chrome/app/resources/generated_resources_km.xtb b/chrome/app/resources/generated_resources_km.xtb
index feb5d78..6347898 100644
--- a/chrome/app/resources/generated_resources_km.xtb
+++ b/chrome/app/resources/generated_resources_km.xtb
@@ -1130,6 +1130,7 @@
 <translation id="2034346955588403444">បន្ថែមបណ្តាញ WiFi ផ្សេងទៀត</translation>
 <translation id="2035211704574173780">មាត្រដ្ឋាន​ពណ៌ប្រផេះ</translation>
 <translation id="203574396658008164">បើកការកត់ត្រាពីអេក្រង់ចាក់សោ</translation>
+<translation id="2036514476578229158">អ្នក​បានស្នើសុំ​ចូលទៅកាន់​គេហទំព័រ​នេះ។ មាតាបិតា​របស់អ្នក​អាច​ឆ្លើយតប​នៅក្នុង Family Link។</translation>
 <translation id="2037445849770872822">ការគ្រប់គ្រង​ត្រូវបាន​រៀបចំ​សម្រាប់​គណនី Google នេះ។ ដើម្បី​រៀបចំការគ្រប់គ្រងដោយមាតាបិតា​បន្ថែម​ទៀត សូម​ជ្រើសរើស "បន្ត"។
 
 បើមិនដូច្នោះទេ សូម​ចាកចេញ​ឥឡូវនេះ ដើម្បីអនុវត្តការផ្លាស់ប្ដូរចំពោះ​គណនី​នេះនៅលើឧបករណ៍​នេះ។
@@ -1250,6 +1251,7 @@
 <translation id="2135787500304447609">បន្ត</translation>
 <translation id="2136372518715274136">បញ្ចូល​ពាក្យសម្ងាត់​ថ្មី</translation>
 <translation id="2136476978468204130">ឃ្លាសម្ងាត់​ដែល​អ្នកបាន​បញ្ចូល​គឺមិន​ត្រឹមត្រូវ​ទេ</translation>
+<translation id="2137891579555018930">កំពុង​រង់ចាំ​ការអនុញ្ញាត...</translation>
 <translation id="2138398485845393913">ការ​តភ្ជាប់​ទៅ "<ph name="DEVICE_NAME" />" កំពុង​ដំណើរការ​នៅ​ឡើយ</translation>
 <translation id="2139919072249842737">ប៊ូតុង​រៀបចំ</translation>
 <translation id="2140788884185208305">គុណភាព​ថ្ម</translation>
@@ -4128,6 +4130,7 @@
 <translation id="4858913220355269194">Fritz</translation>
 <translation id="4862642413395066333">ការចុះហត្ថលេខាការឆ្លើយតប OCSP</translation>
 <translation id="4863769717153320198">មើល​ទៅដូចជា <ph name="WIDTH" /> x <ph name="HEIGHT" /> (លំនាំ​ដើម)</translation>
+<translation id="486459320933704969">មាតាបិតា ឬ​អាណាព្យាបាល​ចាំបាច់ត្រូវនិយាយថាមិនអីទេ អ្នក​អាចចូលទៅកាន់​គេហទំព័រ​នេះបាន</translation>
 <translation id="4864805589453749318">ជ្រើសរើស​មាតាបិតា​ដែលកំពុងផ្ដល់​ការអនុញ្ញាតឱ្យ​បញ្ចូល​គណនី​សាលារៀន។</translation>
 <translation id="486635084936119914">បើក​ប្រភេទឯកសារជាក់លាក់ដោយស្វ័យប្រវត្តិ បន្ទាប់ពីទាញយករួចហើយ</translation>
 <translation id="4868281708609571334">បង្រៀន Google ជំនួយការ​ឱ្យស្គាល់​សំឡេងរបស់ <ph name="SUPERVISED_USER_NAME" /></translation>
@@ -8688,6 +8691,7 @@
 <translation id="947329552760389097">ត្រួតពិនិត្យ​ធាតុ</translation>
 <translation id="947526284350604411">ចម្លើយរបស់អ្នក</translation>
 <translation id="947667444780368238"><ph name="ORIGIN" /> មិនអាច​បើកឯកសារ​នៅក្នុង​ថតនេះ​បានទេ ដោយសារ​ថតនេះមាន​ឯកសារ​ប្រព័ន្ធ</translation>
+<translation id="949314938206378263">អ្នក​បានស្នើសុំ​ចូលទៅកាន់​គេហទំព័រ​នេះ។ មាតាបិតា​របស់អ្នក​អាច​ឆ្លើយតប​នៅក្នុង Family Link។</translation>
 <translation id="950307215746360464">ការណែនាំអំពី​ការរៀបចំ</translation>
 <translation id="951991426597076286">បដិសេធ</translation>
 <translation id="952471655966876828">ឧបករណ៍​នឹងភ្ជាប់ដោយស្វ័យប្រវត្តិ នៅពេលបើក ឬកំពុង​ត្រូវបានប្រើប្រាស់</translation>
diff --git a/chrome/app/resources/generated_resources_kn.xtb b/chrome/app/resources/generated_resources_kn.xtb
index 19da3ac0..31b6462c 100644
--- a/chrome/app/resources/generated_resources_kn.xtb
+++ b/chrome/app/resources/generated_resources_kn.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="kn">
 <translation id="1001033507375626788">ಈ ನೆಟ್‌ವರ್ಕ್ ಅನ್ನು ನಿಮ್ಮ ಜೊತೆ ಹಂಚಿಕೊಳ್ಳಲಾಗಿದೆ</translation>
+<translation id="1002085272681738789">ಟ್ಯಾಬ್ ಮತ್ತೆ ಸಕ್ರಿಯವಾಗಿದೆ</translation>
 <translation id="1003088604756913841">ಹೊಸ <ph name="APP" /> ವಿಂಡೋದಲ್ಲಿ ಲಿಂಕ್ ತೆರೆಯಿರಿ</translation>
 <translation id="100323615638474026">USB ಸಾಧನ (<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />)</translation>
 <translation id="1004218526896219317">ಸೈಟ್ ಪ್ರವೇಶ</translation>
@@ -324,6 +325,7 @@
 <translation id="1296911687402551044">ಆಯ್ಕೆ ಮಾಡಲಾದ ಟ್ಯಾಬ್ ಅನ್ನು ಪಿನ್ ಮಾಡಿ</translation>
 <translation id="1297175357211070620">ಗಮ್ಯಸ್ಥಾನ</translation>
 <translation id="129770436432446029"><ph name="EXPERIMENT_NAME" /> ಗಾಗಿ ಪ್ರತಿಕ್ರಿಯೆ ಕಳುಹಿಸಿ</translation>
+<translation id="130097046531636712">ಹಿನ್ನೆಲೆ ಚಟುವಟಿಕೆ ಮತ್ತು ಸ್ಮೂತ್ ಸ್ಕ್ರಾಲಿಂಗ್‌ನಂತಹ ವಿಶುವಲ್ ಎಫೆಕ್ಟ್‌ಗಳನ್ನು ಸೀಮಿತಗೊಳಿಸುವ ಮೂಲಕ ಇದು ಬ್ಯಾಟರಿ ಪವರ್ ಅನ್ನು ವಿಸ್ತರಿಸುತ್ತದೆ</translation>
 <translation id="1301135395320604080">ಈ ಮುಂದಿನ ಫೈಲ್‌ಗಳನ್ನು <ph name="ORIGIN" /> ಎಡಿಟ್ ಮಾಡಬಹುದು</translation>
 <translation id="1302227299132585524">Apple ಈವೆಂಟ್‌ಗಳಿಂದ JavaScript ಗೆ ಅನುಮತಿಸಿ</translation>
 <translation id="1303101771013849280">ಬುಕ್‌ಮಾರ್ಕ್‌ಗಳ HTML ಫೈಲ್‌</translation>
@@ -382,6 +384,7 @@
 <translation id="1361655923249334273">ಬಳಸದ</translation>
 <translation id="1362865166188278099">ಯಾಂತ್ರಿಕ ಸಮಸ್ಯೆ. ಪ್ರಿಂಟರ್ ಪರಿಶೀಲಿಸಿ</translation>
 <translation id="1363585519747660921">USB ಪ್ರಿಂಟರ್ ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಬೇಕಾಗಿದೆ</translation>
+<translation id="136378536198524553">ಎನರ್ಜಿ ಸೇವರ್ ಆನ್ ಆಗಿದೆ</translation>
 <translation id="1368603372088757436">ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> ನಲ್ಲಿ Linux ಬೆಂಬಲಿಸುವುದಿಲ್ಲ. <ph name="LINK_BEGIN" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="LINK_END" /></translation>
 <translation id="1372841398847029212">ನಿಮ್ಮ ಖಾತೆಗೆ ಸಿಂಕ್ ಮಾಡಿ</translation>
 <translation id="1373176046406139583">ನಿಮ್ಮ ಸ್ಕ್ರೀನ್ ಅನ್‌ಲಾಕ್ ಆಗಿರುವಾಗ ನಿಮ್ಮ ಜೊತೆಗೆ ಯಾರು ಹಂಚಿಕೊಳ್ಳಬಹುದು ಎಂಬುದನ್ನು ನಿಮ್ಮ ಸಾಧನದ ಗೋಚರತೆ ನಿಯಂತ್ರಿಸುತ್ತದೆ. <ph name="LINK_BEGIN" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="LINK_END" /></translation>
@@ -653,6 +656,7 @@
 <translation id="1610272688494140697">ಆ್ಯಪ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳು</translation>
 <translation id="161042844686301425">ಹಸಿರುನೀಲಿ</translation>
 <translation id="1611432201750675208">ನಿಮ್ಮ ಸಾಧನವನ್ನು ಲಾಕ್ ಮಾಡಲಾಗಿದೆ</translation>
+<translation id="1611776894942218234">ಸಾಧನವು ಬೀಟಾ ಚಾನಲ್‌ನಲ್ಲಿರಬೇಕು</translation>
 <translation id="1612019740169791082">ಡಿಸ್ಕ್ ಮರುಗಾತ್ರಗೊಳಿಸುವಿಕೆಯನ್ನು ಬೆಂಬಲಿಸಲು ನಿಮ್ಮ ಕಂಟೇನರ್ ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಿಲ್ಲ. Linux ಗೆ ಕಾಯ್ದಿರಿಸಿದ ಸ್ಥಳಾವಕಾಶದ ಪ್ರಮಾಣವನ್ನು ಹೊಂದಿಸಲು, ಬ್ಯಾಕಪ್ ಮಾಡಿ ನಂತರ ಹೊಸ ಕಂಟೇನರ್‌ನಲ್ಲಿ ಮರುಸ್ಥಾಪಿಸಿ.</translation>
 <translation id="1613019471223620622"><ph name="DOMAIN" /> ನಲ್ಲಿ <ph name="USERNAME" /> ಗೆ ಸಂಬಂಧಿಸಿದ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ತೋರಿಸಿ</translation>
 <translation id="1613149688105334014">Chrome ಆ್ಯಪ್‌ಗಳ ಹಳೆಯ ಆವೃತ್ತಿಗಳು ಡಿಸೆಂಬರ್ 2022 ರವರೆಗೆ ತೆರೆದಿರುವುದಿಲ್ಲ. ಹೊಸ ಆವೃತ್ತಿ ಲಭ್ಯವಿದೆಯೇ ಎಂದು ನೀವು ಪರಿಶೀಲಿಸಬಹುದು.</translation>
@@ -1123,6 +1127,7 @@
 <translation id="2034346955588403444">ಇತರ ವೈಫೈ ನೆಟ್‌ವರ್ಕ್ ಸೇರಿಸಿ</translation>
 <translation id="2035211704574173780">ಗ್ರೇಸ್ಕೇಲ್</translation>
 <translation id="203574396658008164">ಲಾಕ್ ಪರದೆಯಿಂದ ಟಿಪ್ಪಣಿ ತೆಗೆದುಕೊಳ್ಳುವುದನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ</translation>
+<translation id="2036514476578229158">ಈ ಸೈಟ್‌ಗೆ ಭೇಟಿ ನೀಡಲು ನೀವು ಅನುಮತಿಯನ್ನು ವಿನಂತಿಸಿದ್ದೀರಿ. ನಿಮ್ಮ ಪೋಷಕರು Family Link ನಲ್ಲಿ ಪ್ರತ್ಯುತ್ತರ ನೀಡಬಹುದು.</translation>
 <translation id="2037445849770872822">ಈ Google ಖಾತೆಗೆ ಮೇಲ್ವಿಚಾರಣೆಯನ್ನು ಸೆಟಪ್ ಮಾಡಲಾಗಿದೆ. ಇನ್ನಷ್ಟು ಪೋಷಕ ನಿಯಂತ್ರಣಗಳನ್ನು ಸೆಟಪ್ ಮಾಡಲು, ಮುಂದುವರಿಸಿ ಆಯ್ಕೆಮಾಡಿ.
 
 ಇಲ್ಲದಿದ್ದರೆ, ಈ ಖಾತೆಯಲ್ಲಿ ಮಾಡಿರುವ ಬದಲಾವಣೆಗಳು ಈ ಸಾಧನದಲ್ಲಿ ಕಾಣಿಸುವುದಕ್ಕಾಗಿ ಇದೀಗ ಸೈನ್ ಔಟ್ ಮಾಡಿ.
@@ -1208,6 +1213,7 @@
 <translation id="2098805196501063469">ಬಾಕಿ ಉಳಿದ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಪರಿಶೀಲಿಸಿ</translation>
 <translation id="2099686503067610784">"<ph name="CERTIFICATE_NAME" />" ಸರ್ವರ್ ಪ್ರಮಾಣಪತ್ರವನ್ನು ಅಳಿಸುವುದೆ?</translation>
 <translation id="2100273922101894616">ಸ್ವಯಂ ಸೈನ್-ಇನ್</translation>
+<translation id="2100986609271491802">ಈ ಸಾಧನವು ಪ್ರಸ್ತುತ Chromebook ನಲ್ಲಿ Steam ಅನ್ನು ಬೆಂಬಲಿಸುತ್ತಿಲ್ಲ</translation>
 <translation id="2101225219012730419">ಆವೃತ್ತಿ:</translation>
 <translation id="2102396546234652240">ನಿಮ್ಮ ಮೈಕ್ರೋಫೋನ್‌ ಬಳಸಲು ಸೈಟ್‌ಗಳಿಗೆ ಅನುಮತಿಸಬೇಡಿ</translation>
 <translation id="2102495993840063010">Android ಅಪ್ಲಿಕೇಶನ್‌ಗಳು</translation>
@@ -1243,6 +1249,7 @@
 <translation id="2135787500304447609">&amp;ಪುನರಾರಂಭಿಸು</translation>
 <translation id="2136372518715274136">ಹೊಸ ಪಾಸ್‌ವರ್ಡ್ ನಮೂದಿಸಿ</translation>
 <translation id="2136476978468204130">ನೀವು ನಮೂದಿಸಿದ ಪಾಸ್‌ಫ್ರೇಸ್ ತಪ್ಪಾಗಿದೆ</translation>
+<translation id="2137891579555018930">ಅನುಮತಿಗಾಗಿ ನಿರೀಕ್ಷಿಸಲಾಗುತ್ತಿದೆ...</translation>
 <translation id="2138398485845393913">"<ph name="DEVICE_NAME" />" ಗೆ ಸಂಪರ್ಕವು ಇನ್ನೂ ಪ್ರಗತಿಯಲ್ಲಿದೆ</translation>
 <translation id="2139919072249842737">ಸೆಟಪ್ ಬಟನ್</translation>
 <translation id="2140788884185208305">ಬ್ಯಾಟರಿ ಬಾಳಿಕೆ</translation>
@@ -1506,6 +1513,9 @@
 <translation id="2350133097354918058">ಮರುಲೋಡ್ ಮಾಡಲಾಗಿದೆ</translation>
 <translation id="2350182423316644347">ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಆರಂಭಿಸಲಾಗುತ್ತಿದೆ...</translation>
 <translation id="235028206512346451">ನಿಮ್ಮ ಸಾಧನದಿಂದ ನೀವು ದೂರ ಹೋದರೆ, ನಿಮ್ಮ ಸ್ಕ್ರೀನ್ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಲಾಕ್ ಆಗುತ್ತದೆ. ನೀವು ನಿಮ್ಮ ಸಾಧನದ ಎದುರಿಗಿರುವಾಗ, ನಿಮ್ಮ ಸ್ಕ್ರೀನ್ ಹೆಚ್ಚು ಸಮಯ ಎಚ್ಚರವಾಗಿರುತ್ತದೆ. ನೀವು ಲಾಕ್ ಸ್ಕ್ರೀನ್ ಬಳಸದಿದ್ದರೆ, ನಿಮ್ಮ ಸಾಧನ ಲಾಕ್ ಆಗುವ ಬದಲು ಸ್ಲೀಪ್ ಮೋಡ್‌ಗೆ ಹೋಗುತ್ತದೆ.</translation>
+<translation id="2350866610930767288"><ph name="BEGIN_PARAGRAPH1" />ಡೆಮೋ ಮೋಡ್ ಇನ್‍‌ಸ್ಟಾಲ್ ಮಾಡುವಾಗ ರಿಟೇಲರ್-ಸ್ಟೋರ್ ಐಡಿ ಕೋಡ್ ಅನ್ನು ನಮೂದಿಸಲು ನಿಮಗೆ ಸೂಚಿಸಲಾಗಿದ್ದರೆ, ಅದನ್ನು ಬಲಬದಿಯಲ್ಲಿ ನಮೂದಿಸಿ*.  ಇಲ್ಲದಿದ್ದರೆ, ನೀವು ಈ ಫೀಲ್ಡ್ ಅನ್ನು ಖಾಲಿ ಬಿಟ್ಟು ಮುಂದುವರಿಯಬಹುದು.<ph name="END_PARAGRAPH1" />
+    <ph name="BEGIN_PARAGRAPH2" />ಡೆಮೋ ಕೋಡ್ ಇಲ್ಲದೆ ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಲು ನಿಮಗೆ ಸಾಧ್ಯವಾಗುತ್ತದೆ, ಆದರೆ ಈ ಕೋಡ್ ನಿಮ್ಮ ಸ್ಟೋರ್‌ಗೆ ಅನ್ವಯಿಸಿದರೆ, ಇದನ್ನು ನಮೂದಿಸುವುದು ಮುಖ್ಯವಾಗಿದೆ.<ph name="END_PARAGRAPH2" />
+    <ph name="BEGIN_PARAGRAPH3" />*ಸೂಚನೆ: ಸಾಧನವು ಡೆಮೋ ಮೋಡ್‌ನ ಯಾವ ಆವೃತ್ತಿಯನ್ನು ಸ್ವೀಕರಿಸಬೇಕು ಎಂಬುದನ್ನು ಗುರುತಿಸಲು ಮತ್ತು ಡೆಮೋ ಮೋಡ್‌ನ ಬಳಕೆಯನ್ನು ಮಾಪನ ಮಾಡಲು Google ಈ ಕೋಡ್‌ಗಳನ್ನು ಬಳಸುತ್ತದೆ.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="2352495879228166246">{NUM_ITEMS,plural, =1{1 ಐಟಂ}one{{NUM_ITEMS} ಐಟಂಗಳು}other{{NUM_ITEMS} ಐಟಂಗಳು}}</translation>
 <translation id="2352662711729498748">&lt; 1 MB</translation>
 <translation id="2352810082280059586">ಲಾಕ್ ಪರದೆ ಟಿಪ್ಪಣಿಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ <ph name="LOCK_SCREEN_APP_NAME" /> ನಲ್ಲಿ ಉಳಿಸಲಾಗುತ್ತದೆ. ನಿಮ್ಮ ಇತ್ತೀಚಿನ ಟಿಪ್ಪಣಿಯು ಲಾಕ್ ಪರದೆಯಲ್ಲಿರುತ್ತದೆ.</translation>
@@ -1956,6 +1966,7 @@
 <translation id="2776560192867872731"><ph name="DEVICE_NAME" /> ನ ಸಾಧನದ ಹೆಸರನ್ನು ಬದಲಿಸಿ</translation>
 <translation id="2777251078198759550">ಈ ಕಂಟೇನರ್ ಅಳಿಸಿ</translation>
 <translation id="2778471504622896352">ChromeOS ಲಾಂಚರ್‌ಗೆ ರಿಮೋಟ್ ಆ್ಯಪ್‌ಗಳನ್ನು ಸೇರಿಸಿ</translation>
+<translation id="2781120507965857989">ಈ ಸಾಧನದಲ್ಲಿ ಮತ್ತು ನೀವು ಸಿಂಕ್ ಮಾಡುತ್ತಿರುವ ಬೇರೆಲ್ಲಿಯಾದರೂ ನಿಮ್ಮ ಬುಕ್‌ಮಾರ್ಕ್‌ಗಳು, ಪಾಸ್‌ವರ್ಡ್‌ಗಳು, ಇತಿಹಾಸ ಮತ್ತು ಇನ್ನಷ್ಟನ್ನು ಪಡೆಯಲು ಸಿಂಕ್ ಅನ್ನು ಆನ್ ಮಾಡಿ. Search ಮತ್ತು ಇತರ Google ಸೇವೆಗಳನ್ನು ವೈಯಕ್ತೀಕರಿಸಲು Google ನಿಮ್ಮ ಇತಿಹಾಸವನ್ನು ಬಳಸಬಹುದು.</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2782104745158847185">Linux ಅಪ್ಲಿಕೇಶನ್‌ ಇನ್‌ಸ್ಟಾಲ್‌ ಮಾಡುವಲ್ಲಿ ದೋಷ ಕಂಡುಬಂದಿದೆ</translation>
 <translation id="2783298271312924866">ಡೌನ್‌ಲೋಡ್ ಮಾಡಲಾಗಿದೆ</translation>
@@ -1976,6 +1987,7 @@
 <translation id="2792697226874849938">ನಿರ್ಬಂಧದ ಚಿತ್ರ</translation>
 <translation id="2794233252405721443">ಸೈಟ್ ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ</translation>
 <translation id="2794522004398861033">eSIM ಅನ್ನು ಸೆಟಪ್ ಮಾಡಲು ವೈ-ಫೈ ಅಥವಾ ಇಥರ್ನೆಟ್‌ಗೆ ಕನೆಕ್ಟ್ ಮಾಡಿ</translation>
+<translation id="2795074478966352573">Family Link ನಿರ್ವಹಿಸುವ ಖಾತೆಗಳಿಗೆ ಇನ್ನೂ ಬೆಂಬಲವಿಲ್ಲ</translation>
 <translation id="2795716239552913152">ಸೈಟ್‌ಗಳು ಸಾಮಾನ್ಯವಾಗಿ, ಸ್ಥಳೀಯ ಸುದ್ದಿ ಅಥವಾ ಸಮೀಪದಲ್ಲಿರುವ ಅಂಗಡಿಗಳಂತಹ ಸಂಬಂಧಿತ ಫೀಚರ್‌ಗಳು ಅಥವಾ ಮಾಹಿತಿಗಾಗಿ ನಿಮ್ಮ ಸ್ಥಳವನ್ನು ಬಳಸಿಕೊಳ್ಳುತ್ತವೆ</translation>
 <translation id="2796424461616874739">"<ph name="DEVICE_NAME" />" ಗೆ ಸಂಪರ್ಕಪಡಿಸುವಾಗ ದೃಢೀಕರಣದ ಸಮಯ ಮುಕ್ತಾಯಗೊಂಡಿದೆ.</translation>
 <translation id="2796740370559399562">ಕುಕೀಗಳನ್ನು ಅನುಮತಿಸುವುದನ್ನು ಮುಂದುವರಿಸಿ</translation>
@@ -2161,6 +2173,7 @@
 <translation id="2949289451367477459">ಸ್ಥಳವನ್ನು ಬಳಸಿ. ಸ್ಥಳ ಅನುಮತಿಯನ್ನು ಹೊಂದಿರುವ ಆ್ಯಪ್‌ಗಳು ಮತ್ತು ಸೇವೆಗಳಿಗೆ ಈ ಸಾಧನದ ಸ್ಥಳವನ್ನು ಬಳಸಲು ಅವಕಾಶ ನೀಡಿ. ಸ್ಥಳ ಡೇಟಾವನ್ನು Google ನಿಯತಕಾಲಿಕವಾಗಿ ಸಂಗ್ರಹಿಸಬಹುದು ಮತ್ತು ಸ್ಥಳ ನಿಖರತೆ ಮತ್ತು ಸ್ಥಳ ಆಧಾರಿತ ಸೇವೆಗಳನ್ನು ಸುಧಾರಿಸಲು ಅನಾಮಧೇಯ ರೀತಿಯಲ್ಲಿ ಈ ಡೇಟಾವನ್ನು ಬಳಸಬಹುದು. <ph name="BEGIN_LINK1" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="END_LINK1" /></translation>
 <translation id="2950666755714083615">ನನ್ನನ್ನು ಸೈನ್ ಅಪ್ ಮಾಡಿ</translation>
 <translation id="2953019166882260872">ಕೇಬಲ್ ಮೂಲಕ ನಿಮ್ಮ ಫೋನ್ ಅನ್ನು ಕನೆಕ್ಟ್ ಮಾಡಿ</translation>
+<translation id="2953218713108551165"><ph name="SITE" /> ಗಾಗಿ ಅಧಿಸೂಚನೆಗಳಿಗೆ ಅನುಮತಿಯಿಲ್ಲ. ನೀವು ಮುಂದಿನ ಬಾರಿ ಭೇಟಿ ನೀಡಿದಾಗ ಮತ್ತೊಮ್ಮೆ ಕೇಳಲಾಗುತ್ತದೆ.</translation>
 <translation id="2956070239128776395">ವಿಭಾಗವನ್ನು ಗುಂಪಿನೊಳಗೆ ಸೇರಿಸಲಾಗಿದೆ: <ph name="ERROR_LINE" /></translation>
 <translation id="2958721676848865875">ಪ್ಯಾಕ್ ವಿಸ್ತರಣೆಯ ಎಚ್ಚರಿಕೆ</translation>
 <translation id="2959127025785722291">ಏನೋ ತಪ್ಪಾಗಿದೆ. ಸ್ಕ್ಯಾನಿಂಗ್ ಅನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ಪುನಃ ಪ್ರಯತ್ನಿಸಿ.</translation>
@@ -2869,6 +2882,7 @@
 <translation id="3665919494326051362">ಪ್ರಸ್ತುತ ಆವೃತ್ತಿ <ph name="CURRENT_VERSION" /> ಆಗಿದೆ</translation>
 <translation id="3670113805793654926">ಯಾವುದೇ ಮಾರಾಟಗಾರರಿಂದ ಸಾಧನಗಳು</translation>
 <translation id="3670229581627177274">ಬ್ಲೂಟೂತ್ ಆನ್ ಮಾಡಿ</translation>
+<translation id="3672663996348587094"><ph name="ORIGIN" /> ನಲ್ಲಿ "<ph name="EXTENSIONS_REQUESTING_ACCESS" />" ಅನ್ನು ಅನುಮತಿಸಲು ಕ್ಲಿಕ್ ಮಾಡಿ:</translation>
 <translation id="3672681487849735243">ತಯಾರಿಕೆಯ ದೋಷವನ್ನು ಪತ್ತೆ ಮಾಡಲಾಗಿದೆ</translation>
 <translation id="3673097791729989571">ಸೈನ್ ಇನ್ ಅನ್ನು <ph name="SAML_DOMAIN" /> ಮೂಲಕ ಹೋಸ್ಟ್ ಮಾಡಲಾಗಿದೆ</translation>
 <translation id="3673622964532248901">ಈ ಸಾಧನಕ್ಕೆ ಬಿತ್ತರಿಸಲು ನಿಮಗೆ ಅನುಮತಿಯಿಲ್ಲ.</translation>
@@ -3385,6 +3399,7 @@
 <translation id="4132183752438206707">Google Play Store ನಲ್ಲಿ  ಆ್ಯಪ್‌ಗಳನ್ನು ಹುಡುಕಿ</translation>
 <translation id="4132364317545104286">eSIM ಪ್ರೊಫೈಲ್ ಅನ್ನು ಮರುಹೆಸರಿಸಿ</translation>
 <translation id="4133076602192971179">ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಬದಲಾಯಿಸಲು ಆ್ಯಪ್ ಅನ್ನು ತೆರೆಯಿರಿ</translation>
+<translation id="4134818201340504801">ಸೆಟಪ್ ಅನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು ಸಾಕಷ್ಟು ಸಂಗ್ರಹಣಾ ಸ್ಥಳ ಲಭ್ಯವಿಲ್ಲ. ಸಂಗ್ರಹಣಾ ಸ್ಥಳವನ್ನು ಮುಕ್ತಗೊಳಿಸಿ, ಪುನಃ ಪ್ರಯತ್ನಿಸಿ</translation>
 <translation id="4135746311382563554">Google Chrome ಮತ್ತು ChromeOS ಹೆಚ್ಚುವರಿ ಸೇವಾ ನಿಯಮಗಳು</translation>
 <translation id="4136203100490971508">ನೈಟ್ ಲೈಟ್ ಸೂರ್ಯೋದಯದ ಸಮಯದಲ್ಲಿ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಆಫ್ ಆಗುತ್ತದೆ</translation>
 <translation id="41365691917097717">ಮುಂದುವರಿಸಿದರೆ, Android ಆ್ಯಪ್‌ಗಳನ್ನು ರಚಿಸಲು ಮತ್ತು ಪರೀಕ್ಷಿಸಲು ADB ಡೀಬಗ್ ಮಾಡುವಿಕೆಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗುತ್ತದೆ. ಇದು Google ನಿಂದ ದೃಢೀಕರಿಸದ Android ಆ್ಯಪ್‌ಗಳನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಲು ಅನುಮತಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಗಮನಿಸಿ ಹಾಗೂ ಇದನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ಫ್ಯಾಕ್ಟರಿ ಸೆಟ್ಟಿಂಗ್‌ಗಳಿಗೆ ಮರುಹೊಂದಿಸುವ ಅಗತ್ಯವಿದೆ.</translation>
@@ -3621,6 +3636,7 @@
 <translation id="4378556263712303865">ಸಾಧನದ ನಿಯೋಜನೆ</translation>
 <translation id="4379281552162875326">"<ph name="APP_NAME" />" ಅನ್ನು ಅನ್‌ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಬೇಕೆ?</translation>
 <translation id="4380648069038809855">ಪೂರ್ಣಪರದೆಗೆ ಪ್ರವೇಶಿಸಲಾಗಿದೆ</translation>
+<translation id="4383048856908088702">ಈ ಟ್ಯಾಬ್ ನಿಷ್ಕ್ರಿಯವಾಗಿದ್ದಾಗ, ಇತರ ಕಾರ್ಯಗಳಿಗಾಗಿ ಮೆಮೊರಿ ಸೇವರ್ <ph name="MEMORY_VALUE" /> ಯಷ್ಟು ಮೆಮೊರಿಯನ್ನು ಮುಕ್ತಗೊಳಿಸಿತು. ನೀವು ಇದನ್ನು ಯಾವಾಗ ಬೇಕಾದರೂ <ph name="SETTINGS_LINK" /> ನಲ್ಲಿ ಬದಲಾಯಿಸಬಹುದು.</translation>
 <translation id="4384312707950789900">ಆದ್ಯತೆಗೆ ಸೇರಿಸಿ</translation>
 <translation id="4384652540891215547">ವಿಸ್ತರಣೆಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ</translation>
 <translation id="4384886290276344300">ಕೀಬೋರ್ಡ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಬದಲಾಯಿಸಿ</translation>
@@ -3698,6 +3714,7 @@
 <translation id="4451479197788154834">ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಈ ಸಾಧನದಲ್ಲಿ ಮತ್ತು ನಿಮ್ಮ ಖಾತೆಯಲ್ಲಿ ಉಳಿಸಲಾಗಿದೆ</translation>
 <translation id="4451757071857432900">ಅತಿಕ್ರಮಣಕಾರಿಯಾಗಿರುವ ಅಥವಾ ತಪ್ಪುದಾರಿಗೆಳೆಯುವ ಜಾಹೀರಾತುಗಳನ್ನು ತೋರಿಸುವ ಸೈಟ್‌ಗಳಲ್ಲಿ ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ (ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ)</translation>
 <translation id="4453946976636652378"><ph name="SEARCH_ENGINE_NAME" /> ಹುಡುಕಿ ಅಥವಾ URL ಟೈಪ್ ಮಾಡಿ</translation>
+<translation id="4458535500699390320">ಈ ಟ್ಯಾಬ್ ನಿಷ್ಕ್ರಿಯವಾಗಿದ್ದಾಗ, ಮೆಮೊರಿ ಸೇವರ್ ಇತರ ಕಾರ್ಯಗಳಿಗಾಗಿ ಮೆಮೊರಿಯನ್ನು ಮುಕ್ತಗೊಳಿಸಿತು. ನೀವು ಇದನ್ನು ಯಾವಾಗ ಬೇಕಾದರೂ ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಬದಲಾಯಿಸಬಹುದು.</translation>
 <translation id="4459169140545916303"><ph name="DEVICE_LAST_ACTIVATED_TIME" /> ದಿನಗಳ ಹಿಂದೆ ಸಕ್ರಿಯ</translation>
 <translation id="4460014764210899310">ಗುಂಪು ವಿಂಗಡಿಸಿ</translation>
 <translation id="4462159676511157176">ಕಸ್ಟಮ್ ಹೆಸರು ಸರ್ವರ್‌ಗಳು</translation>
@@ -3869,6 +3886,7 @@
 <translation id="4613271546271159013">ನೀವು ಹೊಸ ಟ್ಯಾಬ್ ತೆರೆದಿರುವಾಗ ಯಾವ ಪುಟವನ್ನು ತೋರಿಸಲಾಗಿದೆ ಎಂಬುದರ ವಿಸ್ತರಣೆ ಬದಲಾಗಿದೆ.</translation>
 <translation id="4615586811063744755">ಯಾವುದೇ ಕುಕೀ ಆಯ್ಕೆ ಮಾಡಲಾಗಿಲ್ಲ</translation>
 <translation id="461661862154729886">ಶಕ್ತಿಯ ಮೂಲ</translation>
+<translation id="461676224702246336">ಈ ಸೈಟ್‌ಗಾಗಿ ಕ್ಲಿಕ್ ಮಾಡಿದಾಗ</translation>
 <translation id="4617001782309103936">ತೀರಾ ಚಿಕ್ಕದು</translation>
 <translation id="4617019240346358451">"<ph name="EXTENSION_NAME" />" ಅನ್ನು ಬಳಸಲು ಪುಟವನ್ನು ಪುನಃ ಲೋಡ್ ಮಾಡಿ</translation>
 <translation id="4617270414136722281">ವಿಸ್ತರಣೆ ಆಯ್ಕೆಗಳು</translation>
@@ -3991,6 +4009,7 @@
 <translation id="4728558894243024398">ಪ್ಲಾಟ್‌ಫಾರ್ಮ್</translation>
 <translation id="4728570203948182358"><ph name="BEGIN_LINK" />ನಿಮ್ಮ ನಿರ್ವಾಹಕರು<ph name="END_LINK" /> ಹಾನಿಕಾರಕ ಸಾಫ್ಟ್‌ವೇರ್‌ಗಾಗಿ ಪರಿಶೀಲನೆಯನ್ನು ಆಫ್ ಮಾಡಿದ್ದಾರೆ</translation>
 <translation id="4730492586225682674">ಲಾಕ್‌ ಸ್ಕ್ರೀನ್‌ನಲ್ಲಿನ ಸ್ಟೈಲಸ್ ಇತ್ತೀಚಿನ ಟಿಪ್ಪಣಿ</translation>
+<translation id="4730888769809690665"><ph name="SITE" /> ಗಾಗಿ ಅಧಿಸೂಚನೆಗಳಿಗೆ ಅನುಮತಿಯಿದೆ</translation>
 <translation id="473140019006744096">ಈ ಅಪ್‌ಡೇಟ್‌ ಅನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು ಈ ಸಾಧನದಲ್ಲಿ ಸಾಕಷ್ಟು ಸ್ಥಳಾವಕಾಶವಿಲ್ಲ. ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ <ph name="NECESSARY_SPACE" /> ಅನ್ನು ತೆರವುಗೊಳಿಸಿ ಮತ್ತು ಪುನಃ ಪ್ರಯತ್ನಿಸಿ.</translation>
 <translation id="4733161265940833579"><ph name="BATTERY_PERCENTAGE" />% (ಎಡಬದಿ)</translation>
 <translation id="4733793249294335256">ಸ್ಥಳ</translation>
@@ -4122,6 +4141,7 @@
 <translation id="4858913220355269194">ಫ್ರಿಟ್ಜ್</translation>
 <translation id="4862642413395066333">OCSP ಪ್ರತಿಕ್ರಿಯೆಗಳಿಗೆ ಸೈನ್ ಇನ್ ಮಾಡಲಾಗುತ್ತಿದೆ</translation>
 <translation id="4863769717153320198"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (ಡಿಫಾಲ್ಟ್‌‌) ನಂತೆ ತೋರುತ್ತಿದೆ</translation>
+<translation id="486459320933704969">ನೀವು ಈ ವೆಬ್‌ಸೈಟ್‌ಗೆ ಭೇಟಿ ನೀಡುವುದಕ್ಕಾಗಿ ನಿಮ್ಮ ಪೋಷಕರ ಅನುಮತಿ ಅಗತ್ಯವಿದೆ</translation>
 <translation id="4864805589453749318">ಶಾಲಾ ಖಾತೆಯನ್ನು ಸೇರಿಸಲು ಅನುಮತಿ ಒದಗಿಸುತ್ತಿರುವ ಪೋಷಕರನ್ನು ಆಯ್ಕೆ ಮಾಡಿ.</translation>
 <translation id="486635084936119914">ಡೌನ್‌ಲೋಡ್ ಮಾಡಿದ ನಂತರ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಕೆಲವು ಫೈಲ್ ಪ್ರಕಾರಗಳನ್ನು ತೆರೆಯಿರಿ</translation>
 <translation id="4868281708609571334"><ph name="SUPERVISED_USER_NAME" /> ಅವರ ಧ್ವನಿಯನ್ನು ಗುರುತಿಸಲು Google Assistant ಗೆ ಕಲಿಸಿ</translation>
@@ -4294,6 +4314,7 @@
 <translation id="5032430150487044192">QR ಕೋಡ್‌ ಅನ್ನು ರಚಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ</translation>
 <translation id="5033137252639132982">ಮೋಷನ್ ಸೆನ್ಸರ್‌ಗಳನ್ನು ಬಳಸಲು ಈ ಸೈಟ್‌ಗಳಿಗೆ ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ</translation>
 <translation id="5033266061063942743">ಜ್ಯಾಮಿತೀಯ ಆಕೃತಿಗಳು</translation>
+<translation id="5034000993065629381">ನಿಮ್ಮ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ</translation>
 <translation id="5037676449506322593">ಎಲ್ಲವನ್ನು ಆಯ್ಕೆಮಾಡಿ</translation>
 <translation id="5038818366306248416"><ph name="ORIGIN" /> ನಲ್ಲಿ ಯಾವುದೇ ವಿಸ್ತರಣೆಗಳನ್ನು ಅನುಮತಿಸದಿರಲು ನೀವು ಈ ಹಿಂದೆ ಆಯ್ಕೆ ಮಾಡಿದ್ದೀರಿ</translation>
 <translation id="5039696241953571917">ನಿಮ್ಮ Google ಖಾತೆಯಲ್ಲಿ ಉಳಿಸಲಾದ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ವೀಕ್ಷಿಸಿ ಮತ್ತು ನಿರ್ವಹಿಸಿ</translation>
@@ -4424,6 +4445,7 @@
 <translation id="5161251470972801814"><ph name="VENDOR_NAME" /> ಅವರ USB ಸಾಧನಗಳು</translation>
 <translation id="5162905305237671850"><ph name="DEVICE_TYPE" /> ಅನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ</translation>
 <translation id="5163910114647549394">ಟ್ಯಾಬ್‌ಸ್ಟ್ರಿಪ್‌ನ ಕೊನೆಗೆ ಟ್ಯಾಬ್ ಅನ್ನು ಸರಿಸಲಾಗಿದೆ</translation>
+<translation id="5164530241085602114"><ph name="SITE" /> ಗಾಗಿ ಅಧಿಸೂಚನೆಗಳಿಗೆ ಅನುಮತಿಯಿಲ್ಲ</translation>
 <translation id="516747639689914043">ಹೈಪರ್‌ಟೆಕ್ಸ್ಟ್ ಟ್ರಾನ್ಸ್‌ಪೋರ್ಟ್ ಪ್ರೊಟೊಕಾಲ್ (HTTP)</translation>
 <translation id="5170568018924773124">ಫೋಲ್ಡರ್‌ನಲ್ಲಿ ತೋರಿಸಿ</translation>
 <translation id="5171045022955879922">ಹುಡುಕಾಟ ನಡೆಸಿ ಅಥವಾ URL ಅನ್ನು ಟೈಪ್‌ ಮಾಡಿ</translation>
@@ -4526,6 +4548,7 @@
 <translation id="5269977353971873915">ಮುದ್ರಣ ವಿಫಲಗೊಂಡಿದೆ</translation>
 <translation id="5273806377963980154">ಸೈಟ್ URL ಅನ್ನು ಎಡಿಟ್ ಮಾಡಿ</translation>
 <translation id="5275084684151588738">ಬಳಕೆದಾರರ ನಿಘಂಟುಗಳು</translation>
+<translation id="5275100789567222478">ನನ್ನ ಬ್ಯಾಟರಿ <ph name="PERCENT" />% ಅಥವಾ ಕಡಿಮೆ ಇದ್ದಾಗ ಮಾತ್ರ ಆನ್ ಮಾಡಿ</translation>
 <translation id="5275338516105640560">ಉಳಿಸಲಾದ ಟ್ಯಾಬ್ ಗುಂಪು ಬಟನ್</translation>
 <translation id="5275352920323889391">ನಾಯಿ</translation>
 <translation id="527605719918376753">ಟ್ಯಾಬ್ ಮ್ಯೂಟ್ ಮಾಡಿ</translation>
@@ -4544,6 +4567,7 @@
 <translation id="5285635972691565180">ಡಿಸ್‌ಪ್ಲೇ <ph name="DISPLAY_ID" /></translation>
 <translation id="5286194356314741248">ಸ್ಕ್ಯಾನಿಂಗ್</translation>
 <translation id="5287425679749926365">ನಿಮ್ಮ ಖಾತೆಗಳು</translation>
+<translation id="5288106344236929384"><ph name="DOMAIN" /> ನಲ್ಲಿ <ph name="USERNAME" /> ಅವರಿಗಾಗಿ ಇನ್ನಷ್ಟು ಕ್ರಿಯೆಗಳು, ಪಾಸ್‌ಕೀ ಆಯ್ಕೆಗಳು</translation>
 <translation id="5288678174502918605">ಮುಚ್ಚಿದ ಟ್ಯಾಬ್ ಮರು&amp;ತೆರೆಯಿರಿ</translation>
 <translation id="52895863590846877">ಪುಟವು <ph name="LANGUAGE" /> ಭಾಷೆಯಲ್ಲಿಲ್ಲ</translation>
 <translation id="52912272896845572">ಖಾಸಗಿ ಕೀಲಿ ಫೈಲ್ ಅಮಾನ್ಯವಾಗಿದೆ.</translation>
@@ -4739,6 +4763,7 @@
 <translation id="5473099001878321374">ಮುಂದುವರೆಯುವ ಮೂಲಕ, ಈ ಸಾಧನವು ಸಂಭಾವ್ಯವಾಗಿ ಸೆಲ್ಯುಲರ್ ಡೇಟಾ ಬಳಸಿಕೊಂಡು Google ನಿಂದ, ನಿಮ್ಮ ಮಗುವಿನ ವಾಹಕದಿಂದ ಮತ್ತು ಈ ಸಾಧನದ ತಯಾರಕರಿಂದ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಅಪ್‌ಡೇಟ್‌ಗಳು ಮತ್ತು ಆ್ಯಪ್‌ಗಳನ್ನು ಸಹ ಡೌನ್‌ಲೋಡ್ ಮಾಡಬಹುದು ಹಾಗೂ ಇನ್‍ಸ್ಟಾಲ್ ಮಾಡಬಹುದು ಎನ್ನುವುದಕ್ಕೆ ನೀವು ಸಮ್ಮತಿಸುತ್ತೀರಿ. ಈ ಆ್ಯಪ್‌ಗಳ ಪೈಕಿ ಕೆಲವು ಆ್ಯಪ್‌ಗಳು, ಆ್ಯಪ್‌ನಲ್ಲಿ ಖರೀದಿಸುವ ಸೌಲಭ್ಯ ಒದಗಿಸಬಹುದು.</translation>
 <translation id="5473156705047072749">{NUM_CHARACTERS,plural, =1{ಪಿನ್ ಕನಿಷ್ಠ ಒಂದು ಅಕ್ಷರವನ್ನು ಹೊಂದಿರಬೇಕು}one{ಪಿನ್ ಕನಿಷ್ಠ # ಅಕ್ಷರಗಳನ್ನು ಹೊಂದಿರಬೇಕು}other{ಪಿನ್ ಕನಿಷ್ಠ # ಅಕ್ಷರಗಳನ್ನು ಹೊಂದಿರಬೇಕು}}</translation>
 <translation id="5474859849784484111"><ph name="MANAGER" />, ನೀವು ಇದೀಗ ವೈ-ಫೈಗೆ ಕನೆಕ್ಟ್ ಆಗುವ ಮೂಲಕ ಅಪ್‌ಡೇಟ್ ಅನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಿಕೊಳ್ಳಬೇಕೆಂದು ಬಯಸುತ್ತದೆ. ಅಥವಾ ಮಾಪನ ಮಾಡಲಾದ ಕನೆಕ್ಷನ್‌ನಿಂದ ಡೌನ್‌ಲೋಡ್ ಮಾಡಿಕೊಳ್ಳಿ (ಶುಲ್ಕಗಳು ಅನ್ವಯವಾಗಬಹುದು).</translation>
+<translation id="5476016146231427848">Chromebook ನಲ್ಲಿ Steam ಬಳಸಲು ನಿಮ್ಮ ಸಾಧನವನ್ನು ಮರುಪ್ರಾರಂಭಿಸಿ</translation>
 <translation id="5481273127572794904">ಬಹು ಫೈಲ್‌ಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಡೌನ್‌ಲೋಡ್ ಮಾಡಲು ಈ ಸೈಟ್‌ಗಳಿಗೆ ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ</translation>
 <translation id="5481941284378890518">ಸಮೀಪದ ಪ್ರಿಂಟರ್‌ಗಳನ್ನು ಸೇರಿಸು</translation>
 <translation id="5483785310822538350">ಫೈಲ್ ಮತ್ತು ಸಾಧನ ಪ್ರವೇಶವನ್ನು ಹಿಂತೆಗೆದುಕೊಳ್ಳಿ</translation>
@@ -4959,6 +4984,7 @@
 <translation id="5683806393796685434">ನಿಮ್ಮ ಸಕ್ರಿಯಗೊಳಿಸುವಿಕೆ ಕೋಡ್ ಅನ್ನು ನಮೂದಿಸಿ</translation>
 <translation id="5684181005476681636">ವೈ-ಫೈ ವಿವರಗಳು</translation>
 <translation id="5684661240348539843">ಸ್ವತ್ತು ಗುರುತಿಸುವಿಕೆ</translation>
+<translation id="5684969244627829799">ಬಳಕೆದಾರರ ಖಾತೆಗೆ ಸೈನ್ ಇನ್ ಮಾಡಿ ಪುನಃ ಪ್ರಯತ್ನಿಸಿ</translation>
 <translation id="5687326903064479980">ಸಮಯ ವಲಯ</translation>
 <translation id="5687935527303996204">ನಿಮ್ಮ ಸಾಧನವನ್ನು ಪ್ಲಗ್ ಇನ್ ಮಾಡಲಾಗಿದೆ ಎಂಬುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ ಹಾಗೂ ಅದನ್ನು ಆಫ್ ಮಾಡಬೇಡಿ. ಇನ್‌ಸ್ಟಾಲ್ ಆಗಲು 20 ನಿಮಿಷಗಳವರೆಗೆ ತೆಗೆದುಕೊಳ್ಳಬಹುದು. ಇನ್‌ಸ್ಟಾಲ್ ಪ್ರಕ್ರಿಯೆ ಪೂರ್ಣಗೊಂಡ ನಂತರ, ನಿಮ್ಮ ಸಾಧನವು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಶಟ್ ಡೌನ್ ಆಗುತ್ತದೆ.</translation>
 <translation id="5689516760719285838">ಸ್ಥಳ</translation>
@@ -5085,6 +5111,7 @@
 <translation id="5805697420284793859">ವಿಂಡೋ ಮ್ಯಾನೇಜರ್</translation>
 <translation id="5806447147478173900">ಪ್ರದರ್ಶಿಸಲಾದ ಸೈಟ್‌ಗಳು ಬಳಸಿದ ಒಟ್ಟು ಸಂಗ್ರಹಣೆ: <ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">0° (ಡೀಫಾಲ್ಟ್)</translation>
+<translation id="5810603387504252966">#borealis-enabled ಅನ್ನು chrome://flags ನಲ್ಲಿ ಸಕ್ರಿಯಗೊಳಿಸಿರಬೇಕು</translation>
 <translation id="5810809306422959727">ಈ ಖಾತೆಯು ಪೋಷಕ ನಿಯಂತ್ರಣಗಳಿಗಾಗಿ ಅರ್ಹವಾಗಿಲ್ಲ</translation>
 <translation id="5811614940486072060">ಈ ಫೈಲ್ ಅನ್ನು ಸಾಮಾನ್ಯ ರೀತಿಯಲ್ಲಿ ಡೌನ್‌ಲೋಡ್ ಮಾಡಲಾಗಿಲ್ಲ ಮತ್ತು ಅಪಾಯಕಾರಿಯಾಗಿರಬಹುದು</translation>
 <translation id="5812674658566766066">ಎಲ್ಲವನ್ನೂ ವಿಸ್ತರಿಸಿ</translation>
@@ -5164,6 +5191,7 @@
 <translation id="5882449899683447569">ಏನೋ ತಪ್ಪಾಗಿದೆ ಹಾಗೂ ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಆಮದು ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ</translation>
 <translation id="5882919346125742463">ತಿಳಿದಿರುವ ನೆಟ್‌ವರ್ಕ್‌ಗಳು</translation>
 <translation id="5883356647197510494"><ph name="PERMISSION_1" />, <ph name="PERMISSION_2" /> ಅನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ</translation>
+<translation id="5884447826201752041">ಪ್ರತಿ ವಿಸ್ತರಣೆಗಾಗಿ ಕಸ್ಟಮೈಸ್ ಮಾಡಿ</translation>
 <translation id="5884474295213649357">ಈ ಟ್ಯಾಬ್ USB ಸಾಧನಕ್ಕೆ ಸಂಪರ್ಕಗೊಂಡಿದೆ.</translation>
 <translation id="5885314688092915589">ನಿಮ್ಮ ಸಂಸ್ಥೆಯು ಈ ಪ್ರೊಫೈಲ್ ಅನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ</translation>
 <translation id="5886009770935151472">ಬೆರಳು 1</translation>
@@ -5603,6 +5631,7 @@
 <translation id="6301300352769835063"><ph name="DEVICE_OS" /> ಅನ್ನು ಸುಧಾರಿಸಲು ನೆರವಾಗಲು Google ಗೆ ನಿಮ್ಮ ಹಾರ್ಡ್‌ವೇರ್ ಡೇಟಾ ಬಳಸಲು ಅನುಮತಿಸಿ. ನೀವು ನಿರಾಕರಿಸಿದರೆ, ಸೂಕ್ತವಾದ ಅಪ್‌ಡೇಟ್‌ಗಳನ್ನು ನಿರ್ಧರಿಸಲು ಈ ಡೇಟಾವನ್ನು ಈಗಲೂ Google ಗೆ ಕಳುಹಿಸಲಾಗುತ್ತದೆ ಆದರೆ ಅದನ್ನು ಬೇರೆ ರೀತಿಯಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗುವುದಿಲ್ಲ ಅಥವಾ ಬಳಸಲಾಗುವುದಿಲ್ಲ. g.co/flex/HWDataCollection ನಲ್ಲಿ ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ.</translation>
 <translation id="630292539633944562">ವೈಯಕ್ತಿಕ ಮಾಹಿತಿ ಸಲಹೆಗಳು</translation>
 <translation id="6305607932814307878">ಜಾಗತಿಕ ನೀತಿ:</translation>
+<translation id="6305909198255586420">ನಿಮ್ಮ ಪ್ರಾಥಮಿಕ ಪ್ರೊಫೈಲ್ ಅನ್ನು ಬಳಸಿ ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿ</translation>
 <translation id="6307990684951724544">ಸಿಸ್ಟಂ ಕಾರ್ಯನಿರತವಾಗಿದೆ</translation>
 <translation id="6308493641021088955"><ph name="EXTENSION_NAME" />, ಸೈನ್ ಇನ್ ಅನ್ನು ಒದಗಿಸಿದೆ</translation>
 <translation id="6308937455967653460">ಇದರಂತೆ ಲಿಂ&amp;ಕ್ ಅನ್ನು ಉಳಿಸಿ...</translation>
@@ -5926,6 +5955,7 @@
 <translation id="6608166463665411119">eSIM ರೀಸೆಟ್ ಮಾಡಿ</translation>
 <translation id="6609478180749378879">ನೀವು ಅಜ್ಞಾತ ಮೋಡ್‌ನಿಂದ ನಿರ್ಗಮಿಸಿದ ಬಳಿಕ, ಸೈನ್ ಇನ್ ಡೇಟಾವನ್ನು ಈ ಸಾಧನದಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ. ನಂತರ ಮತ್ತೆ ನಿಮ್ಮ ಸಾಧನದ ಮೂಲಕ ಈ ವೆಬ್‌ಸೈಟ್‌ಗೆ ಸೈನ್ ಇನ್ ಮಾಡಲು ನಿಮಗೆ ಸಾಧ್ಯವಾಗುತ್ತದೆ.</translation>
 <translation id="6610002944194042868">ಅನುವಾದ ಆಯ್ಕೆಗಳು</translation>
+<translation id="6611907964265870728">ನಿಮ್ಮ ಸಾಧನವು ಇಂಟರ್ನೆಟ್‌ಗೆ ಕನೆಕ್ಟ್ ಆಗಿರುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ</translation>
 <translation id="6611972847767394631">ನಿಮ್ಮ ಟ್ಯಾಬ್‌ಗಳನ್ನು ಇಲ್ಲಿ ಕಂಡುಕೊಳ್ಳಿ</translation>
 <translation id="6613668613087513143">ಈ ಅಪ್‌ಡೇಟ್‌ ಅನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು ಈ ಸಾಧನದಲ್ಲಿ ಸಾಕಷ್ಟು ಸ್ಥಳಾವಕಾಶವಿಲ್ಲ. ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ <ph name="NECESSARY_SPACE" /> ಅನ್ನು ತೆರವುಗೊಳಿಸಿ ಮತ್ತು ನಿಮ್ಮ Chrome ಬ್ರೌಸರ್‌ನಿಂದ ಪುನಃ ಪ್ರಯತ್ನಿಸಿ.</translation>
 <translation id="6615455863669487791">ನನಗೆ ತೋರಿಸಿ</translation>
@@ -6314,6 +6344,7 @@
 <translation id="697508444536771064">Linux ಅನ್ನು ಶಟ್ ಡೌನ್ ಮಾಡಿ</translation>
 <translation id="6975361011348772931">ಓದಲು ಮತ್ತು ಬದಲಾಯಿಸಲು ವಿನಂತಿಸಲಾಗಿದೆ</translation>
 <translation id="6978121630131642226">ಹುಡುಕಾಟ ಇಂಜಿನ್‌ಗಳು</translation>
+<translation id="6979041727349121225">ಎನರ್ಜಿ ಸೇವರ್</translation>
 <translation id="6979044105893951891">ನಿರ್ವಹಿಸಿದ ಅತಿಥಿ ಸೆಷನ್‌ಗಳನ್ನು ಪ್ರಾರಂಭಿಸಿ ಮತ್ತು ಅವುಗಳಿಂದ ನಿರ್ಗಮಿಸಿ</translation>
 <translation id="6979158407327259162">Google Drive</translation>
 <translation id="6979440798594660689">ಮ್ಯೂಟ್ (ಡಿಫಾಲ್ಟ್)</translation>
@@ -6366,6 +6397,7 @@
 <translation id="7014174261166285193">ಸ್ಥಾಪನೆ ವಿಫಲವಾಗಿದೆ.</translation>
 <translation id="7014480873681694324">ಹೈಲೈಟ್ ತೆಗೆದುಹಾಕಿ</translation>
 <translation id="7014741021609395734">ಝೂಮ್ ಮಟ್ಟ</translation>
+<translation id="7015088858756332848">Chromebook ನಲ್ಲಿ Steam ಅನ್ನು ಲಾಂಚ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ಪುನಃ ಪ್ರಯತ್ನಿಸಿ</translation>
 <translation id="7017004637493394352">"Ok Google" ಎಂದು ಮತ್ತೊಮ್ಮೆ ಹೇಳಿ</translation>
 <translation id="7017219178341817193">ಒಂದು ಹೊಸ ಪುಟವನ್ನು ಸೇರಿಸಿ</translation>
 <translation id="7017354871202642555">ವಿಂಡೋ ಸೆಟ್ ಮಾಡಿದ ನಂತರ ಮೋಡ್ ಅನ್ನು ಸೆಟ್ ಮಾಡಲಾಗುವುದಿಲ್ಲ.</translation>
@@ -6743,6 +6775,7 @@
 <translation id="7409854300652085600">ಬುಕ್‌ಮಾರ್ಕ್‌ಗಳನ್ನು ಆಮದು ಮಾಡಲಾಗಿದೆ.</translation>
 <translation id="7410344089573941623">ನಿಮ್ಮ ಕ್ಯಾಮರಾ ಹಾಗೂ ಮೈಕ್ರೋಫೋನ್ ಪ್ರವೇಶಿಸಲು <ph name="HOST" /> ಬಯಸುತ್ತಾರೆಯೇ ಎಂಬುದನ್ನು ಕೇಳಿ</translation>
 <translation id="7410852728357935715">ಸಾಧನಕ್ಕೆ ಬಿತ್ತರಿಸಿ</translation>
+<translation id="7411614333737930931">ನಿಮ್ಮ ಸಾಧನವನ್ನು ಮರುಪ್ರಾರಂಭಿಸಿ ಹಾಗೂ ಪುನಃ ಪ್ರಯತ್ನಿಸಿ</translation>
 <translation id="741204030948306876">ಹೌದು, ನಾನಿದ್ದೇನೆ</translation>
 <translation id="7412226954991670867">GPU ಸ್ಮರಣೆ</translation>
 <translation id="7414464185801331860">18x</translation>
@@ -6973,6 +7006,7 @@
 <translation id="7635048370253485243">ನಿಮ್ಮ ನಿರ್ವಾಹಕರು ಪಿನ್ ಮಾಡಿದ್ದಾರೆ</translation>
 <translation id="7636919061354591437">ಈ ಸಾಧನದಲ್ಲಿ ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿ</translation>
 <translation id="7637253234491814483">ಪವರ್ ಬಟನ್‌ನ ಪಕ್ಕದಲ್ಲಿರುವ ನಿಮ್ಮ ಕೀಬೋರ್ಡ್‌ನ ಮೇಲಿನ ಬಲ ಮೂಲೆಯಲ್ಲಿರುವ ಫಿಂಗರ್‌ಪ್ರಿಂಟ್ ಸೆನ್ಸರ್ ಅನ್ನು ಸ್ಪರ್ಶಿಸಿ. ನಿಮ್ಮ ಫಿಂಗರ್‌ಪ್ರಿಂಟ್ ಡೇಟಾವನ್ನು ಸುರಕ್ಷಿತವಾಗಿ ಸಂಗ್ರಹಣೆ ಮಾಡಲಾಗಿದೆ ಮತ್ತು ಇದು ಎಂದೂ ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> ನಿಂದ ಹೊರಗೆ ಹೋಗುವುದಿಲ್ಲ.</translation>
+<translation id="7637272932128132922">ಈ ಟ್ಯಾಬ್ ನಿಷ್ಕ್ರಿಯವಾಗಿದ್ದಾಗ, ಮೆಮೊರಿ ಸೇವರ್ ಇತರ ಕಾರ್ಯಗಳಿಗಾಗಿ ಮೆಮೊರಿಯನ್ನು ಮುಕ್ತಗೊಳಿಸಿತು. ನೀವು ಇದನ್ನು ಯಾವಾಗ ಬೇಕಾದರೂ <ph name="SETTINGS_LINK" /> ನಲ್ಲಿ ಬದಲಾಯಿಸಬಹುದು.</translation>
 <translation id="7637593984496473097">ಸಾಕಷ್ಟು ಡಿಸ್ಕ್ ಸ್ಥಳಾವಕಾಶವಿಲ್ಲ</translation>
 <translation id="7639914187072011620">ಸರ್ವರ್‌ನಿಂದ SAML ಮರುನಿರ್ದೇಶನದ URL ಅನ್ನು ಪಡೆದುಕೊಳ್ಳಲು ವಿಫಲವಾಗಿದೆ</translation>
 <translation id="764017888128728">ನೀವು ಉಳಿಸಲಾದ ಪಾಸ್‌ವರ್ಡ್‌ಗಳ ಮೂಲಕ ಅರ್ಹರಾಗಿರುವ ಸೈಟ್‌ಗಳಿಗೆ <ph name="PASSWORD_MANAGER_BRAND" /> ನಿಮ್ಮನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸೈನ್ ಇನ್ ಮಾಡುತ್ತದೆ.</translation>
@@ -7089,6 +7123,7 @@
 <translation id="7728668285692163452">ಚಾನಲ್ ಬದಲಾವಣೆಯನ್ನು ನಂತರ ಅನ್ವಯಿಸಲಾಗುತ್ತದೆ</translation>
 <translation id="7730449930968088409">ನಿಮ್ಮ ಪರದೆಯ ವಿಷಯವನ್ನು ಸೆರೆಹಿಡಿಯಿರಿ</translation>
 <translation id="7730683939467795481">ಈ ಪುಟವನ್ನು "<ph name="EXTENSION_NAME" />" ವಿಸ್ತರಣೆ ಬಳಸಿ ಬದಲಾಯಿಸಲಾಗಿದೆ</translation>
+<translation id="7735165285389721951">ಮತ್ತೊಂದು Steam ಸೆಟಪ್ ರನ್ ಆಗುತ್ತಿದೆ. ಮತ್ತೊಮ್ಮೆ ಪ್ರಯತ್ನಿಸುವ ಮೊದಲು, ಅದು ಪೂರ್ಣವಾಗುವವರೆಗೆ ನಿರೀಕ್ಷಿಸಿ</translation>
 <translation id="7737115349420013392">"<ph name="DEVICE_NAME" />" ಜೊತೆ ಜೋಡಿಸಲಾಗುತ್ತಿದೆ...</translation>
 <translation id="7737846262459425222">ನೀವು ಇದನ್ನು ಯಾವಾಗ ಬೇಕಾದರೂ ಸೆಟ್ಟಿಂಗ್‌ಗಳು &gt; Google Assistant &gt; ಸ್ಕ್ರೀನ್ ಸಂದರ್ಭದಲ್ಲಿ ಬದಲಾಯಿಸಬಹುದು.</translation>
 <translation id="7737948071472253612">ನಿಮ್ಮ ಕ್ಯಾಮರಾ ಬಳಸಲು ಈ ಸೈಟ್‌ಗಳಿಗೆ ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ</translation>
@@ -7383,6 +7418,7 @@
 <translation id="7999229196265990314">ಕೆಳಗಿನ ಫೈಲ್‌ಗಳನ್ನು ರಚಿಸಲಾಗಿದೆ:
 
 ವಿಸ್ತರಣೆ: <ph name="EXTENSION_FILE" />             ಮುಖ್ಯ ಫೈಲ್: <ph name="KEY_FILE" />             ನಿಮ್ಮ ಮುಖ್ಯ ಫೈಲ್ ಅನ್ನು ಸುರಕ್ಷಿತ ಸ್ಥಳದಲ್ಲಿಡಿ. ನಿಮ್ಮ ವಿಸ್ತರಣೆಯ ಹೊಸ ಆವೃತ್ತಿಗಳನ್ನು ರಚಿಸುವ ಅಗತ್ಯತೆ ಇದೆ.</translation>
+<translation id="8001100670809322641">ಕೆಲವು ನಿಮಿಷಗಳವರೆಗೆ ನಿರೀಕ್ಷಿಸಿ ಮತ್ತು ಪುನಃ ಪ್ರಯತ್ನಿಸಿ</translation>
 <translation id="8002274832045662704">ಸುಧಾರಿತ ಪ್ರಿಂಟರ್ ಕಾನ್ಫಿಗರೇಶನ್</translation>
 <translation id="8002670234429879764"><ph name="PRINTER_NAME" /> ಪ್ರಿಂಟರ್ ಇನ್ನು ಮುಂದೆ ಲಭ್ಯವಿರುವುದಿಲ್ಲ</translation>
 <translation id="8004092996156083991">ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್‌ಗಳು ಅಪಾಯಕ್ಕೀಡಾಗಿದ್ದರೆ ನಾವು ನಿಮಗೆ ತಿಳಿಸುತ್ತೇವೆ.</translation>
@@ -7392,6 +7428,7 @@
 <translation id="8008356846765065031">ಇಂಟರ್ನೆಟ್ ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಲಾಗಿದೆ. ದಯವಿಟ್ಟು ನಿಮ್ಮ ಇಂಟರ್ನೆಟ್ ಸಂಪರ್ಕವನ್ನು ಪರಿಶೀಲಿಸಿ.</translation>
 <translation id="8009225694047762179">ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸಿ</translation>
 <translation id="8011372169388649948">'<ph name="BOOKMARK_TITLE" />' ಸರಿಸಲಾಗಿದೆ.</translation>
+<translation id="8011875486979733097">Steam ಅನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ</translation>
 <translation id="8012647001091218357">ಈ ಕ್ಷಣದಲ್ಲಿ ನಿಮ್ಮ ಪೋಷಕರನ್ನು ತಲುಪಲು ನಮಗೆ ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.</translation>
 <translation id="8013993649590906847">ಚಿತ್ರದಲ್ಲಿ ಉಪಯುಕ್ತ ವಿವರಣೆಯು ಇಲ್ಲದಿದ್ದರೆ, Chrome ನಿಮಗಾಗಿ ಒಂದು ವಿವರಣೆಯನ್ನು ಒದಗಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತದೆ. ವಿವರಣೆಗಳನ್ನು ರಚಿಸಲು, ಚಿತ್ರಗಳನ್ನು Google ಗೆ ಕಳುಹಿಸಲಾಗುತ್ತದೆ.</translation>
 <translation id="8014154204619229810">ಅಪ್‌ಡೇಟರ್ ಪ್ರಸ್ತುತ ರನ್ ಆಗುತ್ತಿದೆ. ಮತ್ತೊಮ್ಮೆ ಪರಿಶೀಲಿಸಲು ಒಂದು ನಿಮಿಷದಲ್ಲಿ ರಿಫ್ರೆಶ್ ಮಾಡಿ.</translation>
@@ -7482,6 +7519,7 @@
 <translation id="808894953321890993">ಪಾಸ್‌ವರ್ಡ್ ಬದಲಿಸಿ</translation>
 <translation id="8090234456044969073">ನಿಮ್ಮ ಪದೇ ಪದೇ ಭೇಟಿ ನೀಡಿದ ವೆಬ್‌ಸೈಟ್‌ಗಳ ಪಟ್ಟಿಯನ್ನು ಓದಿ</translation>
 <translation id="8090513782447872344">ಪುನಃ ನೋಡಲು ನೀವು ಯಾವಾಗ ಬೇಕಾದರೂ ಹಿಂತಿರುಗಬಹುದು</translation>
+<translation id="809312780580957751">ಈ ಸಾಧನದಲ್ಲಿ Steam ಅನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ</translation>
 <translation id="8093359998839330381"><ph name="PLUGIN_NAME" /> ಪ್ರತಿಕ್ರಿಯಿಸುತ್ತಿಲ್ಲ</translation>
 <translation id="8095105960962832018"><ph name="BEGIN_PARAGRAPH1" />Google ಡ್ರೈವ್‌ಗೆ ಬ್ಯಾಕಪ್ ಮಾಡಿ. ಯಾವುದೇ ಸಮಯದಲ್ಲಿ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಮರುಸಂಗ್ರಹಿಸಿ ಅಥವಾ ಸಾಧನವನ್ನು ಬದಲಿಸಿ. ನಿಮ್ಮ ಬ್ಯಾಕಪ್, ಆ್ಯಪ್ ಡೇಟಾವನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ.<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />ನಿಮ್ಮ ಬ್ಯಾಕಪ್‌ಗಳನ್ನು Google ಗೆ ಅಪ್‌ಲೋಡ್ ಮಾಡಲಾಗುತ್ತದೆ ಮತ್ತು ನಿಮ್ಮ Google ಖಾತೆ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಅವುಗಳನ್ನು ಎನ್‌ಕ್ರಿಪ್ಟ್ ಮಾಡಲಾಗುತ್ತದೆ.<ph name="END_PARAGRAPH2" />
@@ -7577,6 +7615,7 @@
 <translation id="8177318697334260664">{NUM_TABS,plural, =1{ಟ್ಯಾಬ್ ಅನ್ನು ಹೊಸ ವಿಂಡೋಗೆ ಸರಿಸಿ}one{ಟ್ಯಾಬ್‌ಗಳನ್ನು ಹೊಸ ವಿಂಡೋಗೆ ಸರಿಸಿ}other{ಟ್ಯಾಬ್‌ಗಳನ್ನು ಹೊಸ ವಿಂಡೋಗೆ ಸರಿಸಿ}}</translation>
 <translation id="8179188928355984576">Android ಅಪ್ಲಿಕೇಶನ್‌ಗಳ ಜೊತೆ ಬಳಸಲಾಗಿಲ್ಲ</translation>
 <translation id="8179976553408161302">Enter</translation>
+<translation id="8180785270975217276">ಎನರ್ಜಿ ಸೇವರ್ ಆನ್ ಆಗಿದೆ</translation>
 <translation id="8180786512391440389">ಗುರುತಿಸಿದ ಸ್ಥಳಗಳಲ್ಲಿನ ಚಿತ್ರಗಳು, ವಿಡಿಯೋ, ಮತ್ತು ಧ್ವನಿ ಫೈಲ್‌ಗಳನ್ನು "<ph name="EXTENSION" />" ಓದಬಹುದು ಮತ್ತು ಅಳಿಸಬಹುದು.</translation>
 <translation id="8181215761849004992">ಡೊಮೇನ್ ಸೇರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ಸಾಧನಗಳನ್ನು ಸೇರಿಸಲು ನೀವು ಸಾಕಷ್ಟು ಸವಲತ್ತುಗಳನ್ನು ಹೊಂದಿರುವಿರಾ ಎಂಬುದನ್ನು ನೋಡಲು ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಪರಿಶೀಲಿಸಿ.</translation>
 <translation id="8182105986296479640">ಅಪ್ಲಿಕೇಶನ್ ಪ್ರತಿಕ್ರಿಯಿಸುತ್ತಿಲ್ಲ.</translation>
@@ -7699,6 +7738,7 @@
 <translation id="828642162569365647">ಈ ಪಾಸ್‌ವರ್ಡ್ ಅಥವಾ ಪಿನ್ ಈ <ph name="DEVICE_TYPE" /> ನಲ್ಲಿನ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಮತ್ತು ನಿಮ್ಮ ಫೋನ್‌ನಿಂದ ನೀವು ಪ್ರವೇಶಿಸುವ ಯಾವುದೇ ಮಾಹಿತಿಯನ್ನು ರಕ್ಷಿಸುತ್ತದೆ. <ph name="DEVICE_TYPE" /> ಸ್ಲೀಪ್ ಮೋಡ್‌ನಿಂದ ನಿರ್ಗಮಿಸಿದಾಗಲೆಲ್ಲಾ ನೀವು ಅದನ್ನು ಅನ್‌ಲಾಕ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ.</translation>
 <translation id="8287902281644548111">API ಕರೆ/URL ಪ್ರಕಾರವಾಗಿ ಹುಡುಕಿ</translation>
 <translation id="8288032458496410887"><ph name="APP" /> ಅನ್‌ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿ...</translation>
+<translation id="8288539437195337464">ನಿಮ್ಮ ಸಾಧನವು ಅಪ್‌ ಟು ಡೇಟ್‌‌ ಆಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ ಮತ್ತು ಪುನಃ ಪ್ರಯತ್ನಿಸಿ</translation>
 <translation id="8289128870594824098">ಡಿಸ್ಕ್ ಗಾತ್ರ</translation>
 <translation id="8289509909262565712"><ph name="DEVICE_OS" /> ಗೆ ಸುಸ್ವಾಗತ</translation>
 <translation id="8293206222192510085">ಬುಕ್‌ಮಾರ್ಕ್ ಸೇರಿಸು</translation>
@@ -7993,6 +8033,7 @@
 <translation id="8599864823732014237">ಎಂಟರ್‌ಪ್ರೈಸ್ ನೋಂದಣಿಯನ್ನು ಸ್ಕಿಪ್ ಮಾಡಬೇಕೇ?</translation>
 <translation id="8601206103050338563">TLS WWW ಗ್ರಾಹಕ ಅಪ್ಲಿಕೇಶನ್</translation>
 <translation id="8601611099293226919">Google Lens ಮೂಲಕ ನಿಮ್ಮ ಸ್ಕ್ರೀನ್‌ನಲ್ಲಿ ಹುಡುಕಿ</translation>
+<translation id="8602674530529411098">ಆ್ಯಪ್‌ಗಳು (ಬೀಟಾ)</translation>
 <translation id="8602851771975208551">ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್‌ನಲ್ಲಿನ ಮತ್ತೊಂದು ಪ್ರೋಗ್ರಾಂ Chrome ಕಾರ್ಯನಿರ್ವಹಿಸುವ ವಿಧಾನವನ್ನು ಬದಲಿಸಬಹುದಾದಂತಹ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಸೇರಿಸಿದೆ.</translation>
 <translation id="8605428685123651449">SQLite ಸ್ಮರಣೆ</translation>
 <translation id="8608618451198398104">Kerberos ಟಿಕೆಟ್ ಸೇರಿಸಿ</translation>
@@ -8255,6 +8296,7 @@
 <translation id="8838601485495657486">ಅಪಾರದರ್ಶಕ</translation>
 <translation id="8838770651474809439">ಹ್ಯಾಂಬರ್ಗರ್</translation>
 <translation id="8838778928843281408">ಫೋನ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸಿ</translation>
+<translation id="883924185304953854">ಚಿತ್ರದ ಮೂಲಕ ಹುಡುಕಿ</translation>
 <translation id="8841843049738266382">ಅನುಮತಿಪಟ್ಟಿಯಲ್ಲಿರುವ ಬಳಕೆದಾರರನ್ನು ಓದಿ ಮತ್ತು ಬದಲಾಯಿಸಿ</translation>
 <translation id="8842594465773264717">ಈ ಫಿಂಗರ್‌ಪ್ರಿಂಟ್ ಅನ್ನು ಅಳಿಸಿ</translation>
 <translation id="8845001906332463065">ಸಹಾಯ ಪಡೆಯಿರಿ</translation>
@@ -8678,10 +8720,12 @@
 <translation id="939598580284253335">ಪಾಸ್‌ಫ್ರೇಸ್ ಅನ್ನು ನಮೂದಿಸಿ</translation>
 <translation id="939736085109172342">ಹೊಸ ಫೋಲ್ಡರ್</translation>
 <translation id="942532530371314860">Chrome ಟ್ಯಾಬ್ ಮತ್ತು ಆಡಿಯೋವನ್ನು <ph name="APP_NAME" /> ಹಂಚಿಕೊಳ್ಳುತ್ತಿದೆ.</translation>
+<translation id="944799160843436808">Chromebook ನಲ್ಲಿ Steam ಅನ್ನು ಸೆಟಪ್ ಮಾಡುವಾಗ ಸಮಸ್ಯೆ ಉಂಟಾಯಿತು</translation>
 <translation id="945522503751344254">ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಕಳುಹಿಸಿ</translation>
 <translation id="947329552760389097">&amp;ಅಂಶಗಳನ್ನು ಪರಿಶೀಲಿಸಿ</translation>
 <translation id="947526284350604411">ನಿಮ್ಮ ಉತ್ತರ</translation>
 <translation id="947667444780368238"><ph name="ORIGIN" /> ಗೆ ಈ ಫೋಲ್ಡರ್‌ನಲ್ಲಿರುವ ಫೈಲ್‌ಗಳನ್ನು ತೆರೆಯಲು ಸಾಧ್ಯವಿಲ್ಲ ಏಕೆಂದರೆ ಇದರಲ್ಲಿ ಸಿಸ್ಟಂ ಫೈಲ್‍ಗಳಿವೆ</translation>
+<translation id="949314938206378263">ಈ ಸೈಟ್‌ಗೆ ಭೇಟಿ ನೀಡಲು ನೀವು ಅನುಮತಿಯನ್ನು ವಿನಂತಿಸಿದ್ದೀರಿ. ನಿಮ್ಮ ಪೋಷಕರು Family Link ನಲ್ಲಿ ಪ್ರತ್ಯುತ್ತರ ನೀಡಬಹುದು.</translation>
 <translation id="950307215746360464">ಸೆಟಪ್ ಗೈಡ್</translation>
 <translation id="951991426597076286">ನಿರಾಕರಿಸಿ</translation>
 <translation id="952471655966876828">ಸಾಧನವನ್ನು ಆನ್ ಮಾಡಿದಾಗ ಮತ್ತು ಬಳಸುತ್ತಿರುವಾಗ ಅದು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಕನೆಕ್ಟ್ ಆಗುತ್ತದೆ</translation>
@@ -8702,6 +8746,7 @@
 <translation id="968000525894980488">Google Play ಸೇವೆಗಳನ್ನು ಆನ್ ಮಾಡಿ.</translation>
 <translation id="968037381421390582">ಅಂ&amp;ಟಿಸಿ ಮತ್ತು “<ph name="SEARCH_TERMS" />” ಗಾಗಿ ಹುಡುಕಿ</translation>
 <translation id="969096075394517431">ಭಾಷೆಗಳನ್ನು ಬದಲಾಯಿಸಿ</translation>
+<translation id="969574218206797926">ಮೆಮೊರಿ ಸೇವರ್, ನಿಷ್ಕ್ರಿಯ ಟ್ಯಾಬ್‌ಗಳಿಂದ ಮೆಮೊರಿಯನ್ನು ಮುಕ್ತಗೊಳಿಸಿ, ಸಕ್ರಿಯ ಟ್ಯಾಬ್‌ಗಳು ಹಾಗೂ ಇತರ ಆ್ಯಪ್‌ಗಳು ಅದನ್ನು ಬಳಸುವುದಕ್ಕೆ ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ</translation>
 <translation id="970047733946999531">{NUM_TABS,plural, =1{1 ಟ್ಯಾಬ್}one{# ಟ್ಯಾಬ್‌ಗಳು}other{# ಟ್ಯಾಬ್‌ಗಳು}}</translation>
 <translation id="971510864672937292"><ph name="SITE_NAME" /> ಮತ್ತು ಅದರ ಅಡಿಯಲ್ಲಿರುವ ಎಲ್ಲಾ ಸೈಟ್‌ಗಳಿಗೆ ಸಂಬಂಧಿಸಿದ ಸೈಟ್ ಡೇಟಾ ಮತ್ತು ಅನುಮತಿಗಳನ್ನು ತೆರವುಗೊಳಿಸಬೇಕೆ?</translation>
 <translation id="971774202801778802">ಬುಕ್‌ಮಾರ್ಕ್‌ URL</translation>
diff --git a/chrome/app/resources/generated_resources_ko.xtb b/chrome/app/resources/generated_resources_ko.xtb
index b02cbd9..e2bcf6fe 100644
--- a/chrome/app/resources/generated_resources_ko.xtb
+++ b/chrome/app/resources/generated_resources_ko.xtb
@@ -1130,6 +1130,7 @@
 <translation id="2034346955588403444">다른 Wi-Fi 네트워크 추가</translation>
 <translation id="2035211704574173780">그레이스케일</translation>
 <translation id="203574396658008164">잠금 화면에서 메모 작성 사용</translation>
+<translation id="2036514476578229158">이 사이트의 방문을 요청했습니다. 부모님이 Family Link에서 답장을 보낼 수 있습니다.</translation>
 <translation id="2037445849770872822">이 Google 계정에 감독 기능이 설정되었습니다. 더 많은 자녀 보호 기능을 설정하려면 계속을 선택하세요.
 
 그럴 필요가 없다면 계정의 변경사항이 기기에 반영되도록 지금 로그아웃합니다.
@@ -1250,6 +1251,7 @@
 <translation id="2135787500304447609">다시 시작(&amp;R)</translation>
 <translation id="2136372518715274136">새 비밀번호 입력</translation>
 <translation id="2136476978468204130">입력한 암호가 잘못되었습니다.</translation>
+<translation id="2137891579555018930">권한을 기다리는 중…</translation>
 <translation id="2138398485845393913"><ph name="DEVICE_NAME" />에 연결 중입니다.</translation>
 <translation id="2139919072249842737">설정 버튼</translation>
 <translation id="2140788884185208305">배터리 상태</translation>
@@ -4127,6 +4129,7 @@
 <translation id="4858913220355269194">축구왕</translation>
 <translation id="4862642413395066333">OCSP 응답 서명</translation>
 <translation id="4863769717153320198"><ph name="WIDTH" />x<ph name="HEIGHT" />(권장)처럼 보입니다.</translation>
+<translation id="486459320933704969">부모님 또는 보호자가 이 웹사이트를 방문해도 괜찮다고 말해야 합니다.</translation>
 <translation id="4864805589453749318">학교 계정을 추가할 수 있도록 권한을 부여할 부모님을 선택하세요.</translation>
 <translation id="486635084936119914">다운로드 후에 특정 파일 형식을 자동으로 열기</translation>
 <translation id="4868281708609571334">Google 어시스턴트가 <ph name="SUPERVISED_USER_NAME" />님의 음성을 인식하도록 학습시키세요</translation>
@@ -8687,6 +8690,7 @@
 <translation id="947329552760389097">요소 검사(&amp;I)</translation>
 <translation id="947526284350604411">답변</translation>
 <translation id="947667444780368238">이 폴더에는 시스템 파일이 포함되어 있으므로 <ph name="ORIGIN" />에서 폴더의 파일을 열 수 없습니다.</translation>
+<translation id="949314938206378263">이 사이트의 방문을 요청했습니다. 부모님이 Family Link에서 답장을 보낼 수 있습니다.</translation>
 <translation id="950307215746360464">설정 가이드</translation>
 <translation id="951991426597076286">거부</translation>
 <translation id="952471655966876828">기기가 켜져 있고 사용 중일 때 자동으로 연결됩니다.</translation>
diff --git a/chrome/app/resources/generated_resources_ky.xtb b/chrome/app/resources/generated_resources_ky.xtb
index 01bd9cc..5c4e5a6 100644
--- a/chrome/app/resources/generated_resources_ky.xtb
+++ b/chrome/app/resources/generated_resources_ky.xtb
@@ -1130,6 +1130,7 @@
 <translation id="2034346955588403444">Башка WiFi тармагын кошуу</translation>
 <translation id="2035211704574173780">Боз түстөгү фон</translation>
 <translation id="203574396658008164">Кулпуланган экран менен эскертме жазууну иштетүү</translation>
+<translation id="2036514476578229158">Бул сайтка кирүүгө уруксат сурадың. Ата-энең Family Link кызматында жооп бере алат.</translation>
 <translation id="2037445849770872822">Бул Google аккаунтун көзөмөлдөө жөндөлдү. Ата-эненин көзөмөлүн улантып жөндөө үчүн "Улантуу" баскычын басыңыз.
 
 Болбосо, аккаунттан чыгыңыз. Ага киргизилген өзгөрүүлөр ушул түзмөктө чагылдырылат.
@@ -1250,6 +1251,7 @@
 <translation id="2135787500304447609">&amp;Улантуу</translation>
 <translation id="2136372518715274136">Жаңы сырсөз киргизүү</translation>
 <translation id="2136476978468204130">Киргизилген купуя сөз айкашы туура эмес</translation>
+<translation id="2137891579555018930">Уруксат күтүлүүдө...</translation>
 <translation id="2138398485845393913">Дагы эле "<ph name="DEVICE_NAME" />" түзмөгүнө туташып жатат</translation>
 <translation id="2139919072249842737">Жөндөө баскычы</translation>
 <translation id="2140788884185208305">Батареянын иштөө мөөнөтү</translation>
@@ -2399,6 +2401,7 @@
 <translation id="3188465121994729530">Жылма ортоломо</translation>
 <translation id="3189187154924005138">Чоң курсор</translation>
 <translation id="3190558889382726167">Сырсөз сакталды</translation>
+<translation id="3192589799003798742">Chromebook'тагы Steam'ди тууралоо</translation>
 <translation id="3192947282887913208">Аудио файлдар</translation>
 <translation id="3193695589337931419">Тутум сигналдарынын кызматтык программалары</translation>
 <translation id="3194786596445804250">Үчүнчү тараптын cookie файлдарын бөгөттөө жөнүндө маалыматты көрсөтүү</translation>
@@ -2538,6 +2541,7 @@
 <translation id="3341699307020049241">PIN код туура эмес. Дагы <ph name="RETRIES" /> жолу аракет кыла аласыз.</translation>
 <translation id="3341703758641437857">Файлдын URL даректерин колдонууга уруксат берүү</translation>
 <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" бул кеңейтүүнү алып салганы жатат.</translation>
+<translation id="3343977377045378693">Туураланып жатат</translation>
 <translation id="3345135638360864351">Бул сайтка кирүү суранычыңыз <ph name="NAME" /> дегенге жөнөтүлбөй койду. Кайталап көрүңүз.</translation>
 <translation id="3345634917232014253">Коопсуздук бир аз убакыт мурун текшерилди</translation>
 <translation id="3345886924813989455">Колдоого алынган серепчи табылган жок</translation>
@@ -2549,6 +2553,7 @@
 <translation id="3354768182971982851">Chrome колдонмолорунун эски версиялары 2022-жылдын декабрь айынан кийин Mac түзмөктөрүндө ачылбай калышат. Жаңы версиясы жеткиликтүү экенин текшерсеңиз болот.</translation>
 <translation id="3354972872297836698"><ph name="DEVICE_NAME" /> түзмөгү жупташтырылган жок; башка түзмөктү тандап, кайталаңыз</translation>
 <translation id="3355936511340229503">Туташуу катасы</translation>
+<translation id="3356036636691722598">Оюндарды Chromebook'та ойноңуз</translation>
 <translation id="3356469410714175391">(Виртуалдык карта иштетилди)</translation>
 <translation id="3356580349448036450">Аяктады</translation>
 <translation id="3359256513598016054">Тастыктама саясатындагы чектөөлөр</translation>
@@ -3461,6 +3466,7 @@
 <translation id="4211904048067111541">Android колдонмолорунда колдонууну токтотуу</translation>
 <translation id="42126664696688958">Экспорттоо</translation>
 <translation id="42137655013211669">Бул булакка кирүүгө сервер тыюу салган.</translation>
+<translation id="4214192212360095377">Азыр өчүрүү</translation>
 <translation id="4217558091331485702">Ачуудан мурда текшерүү</translation>
 <translation id="4217571870635786043">Үн менен жазуу</translation>
 <translation id="4218081191298393750">Бул өтмөктүн үнүн басуу үчүн динамиктин сүрөтчөсүн басыңыз</translation>
@@ -4128,6 +4134,7 @@
 <translation id="4858913220355269194">Фриц</translation>
 <translation id="4862642413395066333">OCSP Жоопторуна кол коюу</translation>
 <translation id="4863769717153320198"><ph name="WIDTH" /> x <ph name="HEIGHT" /> сыяктуу көрүнөт (демейки дааналыгы)</translation>
+<translation id="486459320933704969">Ата-энең же камкорчуң вебсайтка кирүүңө уруксат бериши керек</translation>
 <translation id="4864805589453749318">Мектеп аккаунтун кошуу үчүн уруксат берип жаткан ата-энени тандаңыз.</translation>
 <translation id="486635084936119914">Айрым файл форматтары жүктөлүп алынгандан кийин автоматтык түрдө ачуу</translation>
 <translation id="4868281708609571334">Google Жардамчыга <ph name="SUPERVISED_USER_NAME" /> аттуу колдонуучунун үнүн тааныганды үйрөтүү</translation>
@@ -4357,6 +4364,7 @@
 <translation id="5089763948477033443">Капталдагы тилкенин өлчөмүн өзгөртүү маркери</translation>
 <translation id="5090637338841444533">Камераңыздын абалына көз сала албайт</translation>
 <translation id="5093569275467863761">Кештелген жашыруун көмөкчү фрейм: <ph name="BACK_FORWARD_CACHE_INCOGNITO_PAGE_URL" /></translation>
+<translation id="5094042205195563542">Орнотуу башталууда</translation>
 <translation id="5094176498302660097">Бул колдонмодо колдоого алынган файлдарды Files же башка колдонмолордо ачып, түзөтө аласыз. Бул колдонмодо демейки шартта кайсы файлдар ачыларын көзөмөлдөө үчүн <ph name="BEGIN_LINK" />түзмөктө демейки колдонмолорду жөндөө жөнүндө билип алыңыз<ph name="END_LINK" />.</translation>
 <translation id="5094721898978802975">Түпнуска колдонмолор менен кызматташып байланышуу</translation>
 <translation id="5097002363526479830">'<ph name="NAME" />' тармагына туташпай калды: <ph name="DETAILS" /></translation>
@@ -6369,6 +6377,7 @@
 <translation id="7014174261166285193">Орнотулбай калды.</translation>
 <translation id="7014480873681694324">Бөлүп көрсөтүүнү өчүрүү</translation>
 <translation id="7014741021609395734">Чоңойтуп/кичирейтүү деңгээли</translation>
+<translation id="7014961128696979283">Steam'ди иштетүү</translation>
 <translation id="7017004637493394352">"Ok Google" деп кайра айтыңыз</translation>
 <translation id="7017219178341817193">Жаңы бет кошуу</translation>
 <translation id="7017354871202642555">Терезе коюлгандан кийин режимди коюуга болбойт.</translation>
@@ -6760,6 +6769,7 @@
 <translation id="7423425410216218516">Түзмөк <ph name="MINUTES" /> мүнөткө чейин көрүнөт</translation>
 <translation id="7423513079490750513">Өчүрүү: <ph name="INPUT_METHOD_NAME" /></translation>
 <translation id="7423807071740419372"><ph name="APP_NAME" /> колдонмосун иштетүү үчүн уруксат талап кылынат</translation>
+<translation id="7424153922653300265">Кубатты үнөмдөгүч күйгүзүлдү</translation>
 <translation id="7424818322350938336">Тармак кошулду</translation>
 <translation id="7427315069950454694">бүгүнкү эстен кеткис көз ирмемдериңиз</translation>
 <translation id="7427348830195639090">Фондук бет: <ph name="BACKGROUND_PAGE_URL" /></translation>
@@ -7993,6 +8003,7 @@
 <translation id="859246725979739260">Бул сайттын жайгашкан жериңизди көрүү мүмкүнчүлүгү бөгөттөлгөн</translation>
 <translation id="8593121833493516339">Түзмөктүн иштеши тууралуу маалыматтарды жөнөтүү. Балаңыздын Android'ди колдонуу тажрыйбасын жакшыртууга көмөктөшүп, мүчүлүштүктөрдү издөө жана түзмөк менен колдонмолорду пайдалануу дайындарын автоматтык түрдө Google'га жөнөтүүгө уруксат бериңиз. Бул маалымат балаңыздын өздүгүн аныктоо үчүн колдонулбайт жана тутум менен колдонмонун кыйла туруктуу иштешин камсыз кылууга жана башка нерселерди жакшыртууга көмөктөшөт. Айрым нерселердин Google'дун өнөктөштөрүнө, мисалы, Android'ди иштеп чыгуучуларга да кереги тийиши мүмкүн. Эгер кошумча Колдонмолор жана Интернеттеги аракеттер таржымалы балаңыз үчүн күйгүзүлгөн болсо, бул нерселер анын Google аккаунтуна сакталышы мүмкүн. <ph name="BEGIN_LINK1" />Кеңири маалымат<ph name="END_LINK1" /></translation>
 <translation id="8596540852772265699">Өзгөчөлөштүрүлгөн файлдар</translation>
+<translation id="8597404194697561297">Chromebook'тагы Steam'ге кош келиңиз</translation>
 <translation id="8597845839771543242">Менчик форматы:</translation>
 <translation id="8599681327221583254">Бир же бир нече саясат туура эмес конфигурацияланды. Администраторуңузга кайрылыңыз</translation>
 <translation id="8599864823732014237">Корпоративдик катталууну өткөрүп жибересизби?</translation>
@@ -8259,6 +8270,7 @@
 <translation id="8838601485495657486">Бүдөмүк</translation>
 <translation id="8838770651474809439">Гамбургер</translation>
 <translation id="8838778928843281408">Телефондорду башкаруу</translation>
+<translation id="883924185304953854">Сүрөт боюнча издөө</translation>
 <translation id="8841843049738266382">Ак тизмеге киргизилген колдонуучуларды окуу жана өзгөртүү</translation>
 <translation id="8842594465773264717">Бул манжа изин жок кылуу</translation>
 <translation id="8845001906332463065">Жардам алуу</translation>
@@ -8685,6 +8697,7 @@
 <translation id="947329552760389097">&amp;Элементтерди иликтөө</translation>
 <translation id="947526284350604411">Жообуңуз</translation>
 <translation id="947667444780368238"><ph name="ORIGIN" /> бул папкадагы файлдарды ача албайт, себеби анда тутум файлдары бар</translation>
+<translation id="949314938206378263">Бул сайтка кирүүгө уруксат сурадың. Ата-энең Family Link кызматында жооп бере алат.</translation>
 <translation id="950307215746360464">Жөндөө жетеги</translation>
 <translation id="951991426597076286">Четке кагуу</translation>
 <translation id="952471655966876828">Күйүп жана колдонулуп жатканда түзмөк автоматтык түрдө туташат</translation>
diff --git a/chrome/app/resources/generated_resources_lo.xtb b/chrome/app/resources/generated_resources_lo.xtb
index a7e1dff..f86c146 100644
--- a/chrome/app/resources/generated_resources_lo.xtb
+++ b/chrome/app/resources/generated_resources_lo.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="lo">
 <translation id="1001033507375626788">ເຄືອຂ່າຍນີ້ແບ່ງປັນກັບທ່ານແລ້ວ</translation>
+<translation id="1002085272681738789">ແຖບກັບມາເຮັດວຽກແລ້ວ</translation>
 <translation id="1003088604756913841">ເປີດລິ້ງໃນໜ້າຈໍ <ph name="APP" /> ໃໝ່</translation>
 <translation id="100323615638474026">ອຸປະກອນ USB (<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />)</translation>
 <translation id="1004218526896219317">ສິດເຂົ້າເຖິງເວັບໄຊ</translation>
@@ -323,6 +324,7 @@
 <translation id="1296911687402551044">ປັກໝຸດແຖບທີ່ເລືອກ</translation>
 <translation id="1297175357211070620">​ປາຍ​ທາງ</translation>
 <translation id="129770436432446029">ສົ່ງຄຳຕິຊົມສຳລັບ <ph name="EXPERIMENT_NAME" /></translation>
+<translation id="130097046531636712">ນີ້ຈະຍືດອາຍຸແບັດເຕີຣີໂດຍການຈຳກັດການເຄື່ອນໄຫວໃນພື້ນຫຼັງ ແລະ ເອັບເຟັກດ້ານພາບ ເຊັ່ນ: ການເລື່ອນແບບນຸ້ມນວນ</translation>
 <translation id="1301135395320604080"><ph name="ORIGIN" /> ສາມາດແກ້ໄຂໄຟລ໌ຕໍ່ໄປນີ້ໄດ້</translation>
 <translation id="1302227299132585524">ອະນຸຍາດ JavaScript ຈາກ Apple Events</translation>
 <translation id="1303101771013849280">ໄຟລ໌ HTML ບຸກມາກສ໌</translation>
@@ -381,6 +383,7 @@
 <translation id="1361655923249334273">ບໍ່​ໄດ້​ໃຊ້</translation>
 <translation id="1362865166188278099">ບັນຫາກົນໄກ. ກວດສອບເຄື່ອງພິມ</translation>
 <translation id="1363585519747660921">ເຄື່ອງພິມ USB ຈໍາເປັນຕ້ອງກຳນົດຄ່າ</translation>
+<translation id="136378536198524553">ເປີດໃຊ້ຕົວປະຢັດພະລັງງານແລ້ວ</translation>
 <translation id="1368603372088757436">ຂອງທ່ານບໍ່ຮອງຮັບ <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />ສຶກສາເພີ່ມເຕີມ<ph name="LINK_END" /></translation>
 <translation id="1372841398847029212">ຊິ້ງຂໍ້ມູນກັບບັນຊີຂອງທ່ານ</translation>
 <translation id="1373176046406139583">ການເບິ່ງເຫັນຂອງອຸປະກອນທ່ານຈະຄວບຄຸມວ່າໃຜສາມາດແບ່ງປັນໃຫ້ກັບທ່ານໃນຕອນທີ່ໜ້າຈໍຂອງທ່ານຖືກປົດລັອກໄດ້ແດ່. <ph name="LINK_BEGIN" />ສຶກສາເພີ່ມເຕີມ<ph name="LINK_END" /></translation>
@@ -649,6 +652,7 @@
 <translation id="1610272688494140697">ການຕັ້ງຄ່າແອັບ</translation>
 <translation id="161042844686301425">ສີຟ້າຂຽວ</translation>
 <translation id="1611432201750675208">ອຸປະກອນຂອງທ່ານລັອກຢູ່</translation>
+<translation id="1611776894942218234">ອຸປະກອນຈະຕ້ອງຢູ່ໃນຊ່ອງ Beta</translation>
 <translation id="1612019740169791082">ກ່ອງບັນຈຸຂອງທ່ານບໍ່ໄດ້ຖືກຕັ້ງຄ່າໃຫ້ຮອງຮັບການປັບຂະໜາດດິສກ໌. ເພື່ອປັບປະລິມານພື້ນທີ່ທີ່ສະຫງວນໄວ້ໃຫ້ Linux, ກະລຸນາສຳຮອງຂໍ້ມູນໄວ້ ແລະ ຈາກນັ້ນກູ້ຄືນໃສ່ກ່ອງບັນຈຸໃໝ່.</translation>
 <translation id="1613019471223620622">ສະແດງລະຫັດຜ່ານສຳລັບ <ph name="USERNAME" /> ຢູ່ <ph name="DOMAIN" /></translation>
 <translation id="1613149688105334014">ຈະບໍ່ສາມາດເປີດແອັບ Chrome ເວີຊັນເກົ່າໄດ້ຫຼັງຈາກເດືອນທັນວາ 2022. ທ່ານສາມາດກວດເບິ່ງວ່າມີເວີຊັນໃໝ່ຫຼືບໍ່ໄດ້.</translation>
@@ -1127,6 +1131,7 @@
 <translation id="2034346955588403444">ເພີ່ມເຄືອຂ່າຍ WiFi ອື່ນ</translation>
 <translation id="2035211704574173780">ສີຂາວດຳ</translation>
 <translation id="203574396658008164">ເປີດນຳໃຊ້ການຈົດບັນທຶກຈາກໜ້າຈໍລັອກ</translation>
+<translation id="2036514476578229158">ທ່ານໄດ້ຂໍເຂົ້າເບິ່ງເວັບໄຊນີ້. ຜູ້ປົກຄອງຂອງທ່ານສາມາດຕອບກັບໃນ Family Link.</translation>
 <translation id="2037445849770872822">ມີການຕັ້ງຄ່າການຄວບຄຸມເບິ່ງແຍງສຳລັບບັນຊີ Google ນີ້. ເພື່ອຕັ້ງຄ່າການຄວບຄຸມຂອງພໍ່ແມ່ເພີ່ມເຕີມ, ກະລຸນາເລືອກ ສືບຕໍ່.
 
 ຫຼືບໍ່ດັ່ງນັ້ນ, ກະລຸນາອອກຈາກລະບົບຕອນນີ້ເພື່ອໃຫ້ສະທ້ອນການປ່ຽນແປງຕໍ່ກັບບັນຊີນີ້ຢູ່ໃນອຸປະກອນນີ້.
@@ -1213,6 +1218,7 @@
 <translation id="2098805196501063469">ກວດລະຫັດຜ່ານທີ່ເຫຼືອ</translation>
 <translation id="2099686503067610784">ລຶບໃບຢັ້ງຢືນເຊີບເວີ "<ph name="CERTIFICATE_NAME" />" ບໍ?</translation>
 <translation id="2100273922101894616">ເຂົ້າສູ່​ລະບົບ​ອັດຕະໂນມັດ</translation>
+<translation id="2100986609271491802">ຕອນນີ້ອຸປະກອນນີ້ບໍ່ຮອງຮັບ Steam ຢູ່ Chromebook ເທື່ອ</translation>
 <translation id="2101225219012730419">ລຸ້ນ:</translation>
 <translation id="2102396546234652240">ບໍ່ອະນຸຍາດໃຫ້ເວັບໄຊໃຊ້ໄມໂຄຣໂຟນຂອງທ່ານ</translation>
 <translation id="2102495993840063010">ແອັບ Android</translation>
@@ -1248,6 +1254,7 @@
 <translation id="2135787500304447609">ເລີ່ມຕົ້ນອີກ</translation>
 <translation id="2136372518715274136">ປ້ອນລະຫັດໃໝ່</translation>
 <translation id="2136476978468204130">ວະລີຜ່ານທີ່ທ່ານປ້ອນເຂົ້າບໍ່ຖືກຕ້ອງ</translation>
+<translation id="2137891579555018930">ກຳລັງລໍຖ້າການອະນຸຍາດ...</translation>
 <translation id="2138398485845393913">ການເຊື່ອມຕໍ່ກັບ "<ph name="DEVICE_NAME" />" ຍັງດຳເນີນຢູ່</translation>
 <translation id="2139919072249842737">ປຸ່ມຕັ້ງຄ່າ</translation>
 <translation id="2140788884185208305">ປະສິດທິພາບຂອງແບັດເຕີຣີ</translation>
@@ -1512,6 +1519,9 @@
 <translation id="2350133097354918058">ໂຫຼດຄືນໃໝ່ແລ້ວ</translation>
 <translation id="2350182423316644347">ກໍາລັງລິເລີ່ມແອັບພລິເຄຊັນ...</translation>
 <translation id="235028206512346451">ຫາກທ່ານອອກຫ່າງຈາກອຸປະກອນຂອງທ່ານ, ໜ້າຈໍຂອງທ່ານຈະລັອກອັດຕະໂນມັດ. ເມື່ອທ່ານຢູ່ໜ້າອຸປະກອນຂອງທ່ານ, ອຸປະກອນຂອງທ່ານຈະເປີດໜ້າຈໍດົນຂຶ້ນ. ຫາກທ່ານບໍ່ໄດ້ໃຊ້ໜ້າຈໍລັອກ, ອຸປະກອນຂອງທ່ານຈະນອນແທນລັອກ.</translation>
+<translation id="2350866610930767288"><ph name="BEGIN_PARAGRAPH1" />ຫາກທ່ານໄດ້ຮັບຄຳແນະນຳໃຫ້ລະບຸລະຫັດ ID ຮ້ານຄ້າຍ່ອຍໃນລະຫວ່າງການຕິດຕັ້ງໂໝດສາທິດ, ໃຫ້ລະບຸມັນໃສ່ທາງຂວາ*.  ບໍ່ດັ່ງນັ້ນ, ທ່ານສາມາດເວັ້ນຫວ່າງຊ່ອງຂໍ້ມູນນີ້ແລ້ວສືບຕໍ່ໄດ້.<ph name="END_PARAGRAPH1" />
+    <ph name="BEGIN_PARAGRAPH2" />ທ່ານຈະຍັງຄົງສາມາດຕິດຕັ້ງໂໝດສາທິດໄດ້ໂດຍບໍ່ຕ້ອງໃຊ້ລະຫັດ, ແຕ່ມັນເປັນເລື່ອງສຳຄັນທີ່ຈະຕ້ອງໃສ່ລະຫັດນີ້ຫາກມັນກ່ຽວຂ້ອງກັບຮ້ານຄ້າຂອງທ່ານ.<ph name="END_PARAGRAPH2" />
+    <ph name="BEGIN_PARAGRAPH3" />*ໝາຍເຫດ: Google ໃຊ້ລະຫັດເຫຼົ່ານີ້ເພື່ອລະບຸເວີຊັນຂອງໂໝດສາທິດທີ່ອຸປະກອນຄວນໄດ້ຮັບ ແລະ ເພື່ອວັດແທກການນຳໃຊ້ໂໝດສາທິດ.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="2352495879228166246">{NUM_ITEMS,plural, =1{1 ລາຍການ}other{{NUM_ITEMS} ລາຍການ}}</translation>
 <translation id="2352662711729498748">&lt; 1 MB</translation>
 <translation id="2352810082280059586">ບັນທຶກໜ້າຈໍລັອກຖືກບັນທຶກໄວ້ໃນ <ph name="LOCK_SCREEN_APP_NAME" /> ໂດຍອັດຕະໂນມັດ. ບັນທຶກໃໝ່ຫຼ້າສຸດຂອງທ່ານຈະຍັງຄົງຢູ່ໜ້າຈໍລັອກ.</translation>
@@ -1962,6 +1972,7 @@
 <translation id="2776560192867872731">ປ່ຽນຊື່ອຸປະກອນສຳລັບ <ph name="DEVICE_NAME" /></translation>
 <translation id="2777251078198759550">ລຶບກ່ອງບັນຈຸນີ້</translation>
 <translation id="2778471504622896352">ເພີ່ມແອັບຣີໂໝດຫາຕົວເປີດໃຊ້ ChromeOS</translation>
+<translation id="2781120507965857989">ເປີດການຊິ້ງຂໍ້ມູນເພື່ອໂຫຼດບຸກມາກ, ລະຫັດຜ່ານ, ປະຫວັດ ແລະ ອື່ນໆຂອງທ່ານໃນອຸປະກອນນີ້ ແລະ ບ່ອນໃດກໍຕາມທີ່ທ່ານຈະຊິ້ງຂໍ້ມູນ. Google ອາດໃຊ້ປະຫວັດຂອງທ່ານເພື່ອປັບແຕ່ງການຊອກຫາ ແລະ ບໍລິການອື່ນໆຂອງ Google ໃຫ້ເປັນແບບສ່ວນຕົວ.</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2782104745158847185">ເກີດຜິດພາດໃນການຕິດຕັ້ງແອັບພລິເຄຊັນ Linux</translation>
 <translation id="2783298271312924866">ດາວ​ໂຫລດແລ້ວ</translation>
@@ -1982,6 +1993,7 @@
 <translation id="2792697226874849938">ຮູບການຈຳກັດ</translation>
 <translation id="2794233252405721443">ບລັອກເວັບໄຊໄວ້ແລ້ວ</translation>
 <translation id="2794522004398861033">ເຊື່ອມຕໍ່ຫາ Wi-Fi ຫຼື Ethernet ເພື່ອຕັ້ງຄ່າ eSIM</translation>
+<translation id="2795074478966352573">ຍັງບໍ່ຮອງຮັບບັນຊີທີ່ຈັດການໂດຍ Family Link ເທື່ອ</translation>
 <translation id="2795716239552913152">ໂດຍປົກກະຕິແລ້ວ ເວັບໄຊຈະໃຊ້ສະຖານທີ່ຂອງທ່ານສຳລັບຄຸນສົມບັດ ຫຼື ຂໍ້ມູນ ເຊັ່ນ: ຂ່າວໃນທ້ອງຖິ່ນ ຫຼື ຮ້ານຄ້າທີ່ຢູ່ໃກ້ຄຽງ</translation>
 <translation id="2796424461616874739">ການຮັບຮອງໝົດເວລາໃນຂະນະທີ່ກໍາລັງເຊື່ອມຕໍ່ກັບ "<ph name="DEVICE_NAME" />".</translation>
 <translation id="2796740370559399562">ສືບຕໍ່ອະນຸຍາດຄຸກກີ້</translation>
@@ -2167,6 +2179,7 @@
 <translation id="2949289451367477459">ໃຊ້ສະຖານທີ່. ອະນຸຍາດໃຫ້ແອັບ ແລະ ການບໍລິການທີ່ມີການອະນຸຍາດສະຖານທີ່ໃຊ້ສະຖານທີ່ຂອງອຸປະກອນນີ້. Google ອາດຈະເກັບກຳຂໍ້ມູນສະຖານທີ່ເປັນຊ່ວງໄລຍະ ແລະ ໃຊ້ຂໍ້ມູນນີ້ໃນແບບທີ່ບໍ່ເປີດເຜີຍຊື່ເພື່ອປັບປຸງຄວາມຖືກຕ້ອງຂອງສະຖານທີ່ ແລະ ການບໍລິການທີ່ອີງໃສ່ສະຖານທີ່. <ph name="BEGIN_LINK1" />ສຶກສາເພີ່ມເຕີມ<ph name="END_LINK1" /></translation>
 <translation id="2950666755714083615">ໃຫ້ຂ້ອຍລົງທະບຽນ</translation>
 <translation id="2953019166882260872">ເຊື່ອມຕໍ່ໂທລະສັບໂດຍໃຊ້ສາຍ</translation>
+<translation id="2953218713108551165">ບໍ່ອະນຸຍາດການແຈ້ງເຕືອນສຳລັບ <ph name="SITE" />. ທ່ານຈະຖືກຖາມອີກເທື່ອໜຶ່ງໃນການເຂົ້າເບິ່ງເທື່ອຕໍ່ໄປຂອງທ່ານ.</translation>
 <translation id="2956070239128776395">ສ່ວນທີ່ຝັງຢູ່ໃນກຸ່ມ: <ph name="ERROR_LINE" /></translation>
 <translation id="2958721676848865875">ຄຳເຕືອນກ່ຽວກັບສ່ວນຂະຫຍາຍແພັກ</translation>
 <translation id="2959127025785722291">ມີບາງຢ່າງຜິດພາດ. ບໍ່ສາມາດສຳເລັດການສະແກນໄດ້. ກະລຸນາລອງໃໝ່.</translation>
@@ -2875,6 +2888,7 @@
 <translation id="3665919494326051362">ເວີຊັນປັດຈຸບັນແມ່ນ <ph name="CURRENT_VERSION" /></translation>
 <translation id="3670113805793654926">ອຸປະກອນຈາກຜູ້ຂາຍໃດໆກໍຕາມ</translation>
 <translation id="3670229581627177274">ເປີດໃຊ້ Bluetooth</translation>
+<translation id="3672663996348587094">ຄລິກອະນຸຍາດ "<ph name="EXTENSIONS_REQUESTING_ACCESS" />" ຢູ່ <ph name="ORIGIN" />:</translation>
 <translation id="3672681487849735243">ກວດພົບຄວາມ​ຜິດ​ພາດ​ຂອງ​ໂຮງ​ງານແລ້ວ</translation>
 <translation id="3673097791729989571">ການເຂົ້າສູ່ລະບົບໂຮສໂດຍ <ph name="SAML_DOMAIN" /></translation>
 <translation id="3673622964532248901">ທ່ານບໍ່ໄດ້ຮັບອະນຸຍາດໃຫ້ສົ່ງສັນຍານໄປຫາອຸປະກອນນີ້.</translation>
@@ -3390,6 +3404,7 @@
 <translation id="4132183752438206707">ຊອກແອັບໃນ Google Play Store</translation>
 <translation id="4132364317545104286">ປ່ຽນຊື່ໂປຣໄຟລ໌ eSIM</translation>
 <translation id="4133076602192971179">ເປີດແອັບເພື່ອປ່ຽນລະຫັດຜ່ານຂອງທ່ານ</translation>
+<translation id="4134818201340504801">ມີບ່ອນຈັດເກັບຂໍ້ມູນບໍ່ພຽງພໍໃຫ້ຕັ້ງຄ່າໃຫ້ສຳເລັດໄດ້. ກະລຸນາສ້າງພື້ນທີ່ຫວ່າງແລ້ວລອງໃໝ່</translation>
 <translation id="4135746311382563554">ຂໍ້ກຳນົດບໍລິການ Google Chrome ແລະ ChromeOS ເພີ່ມເຕີມ</translation>
 <translation id="4136203100490971508">ແສງກາງຄືນຈະປິດໂດຍອັດຕະໂນມັດເມື່ອຕາເວັນຂຶ້ນ</translation>
 <translation id="41365691917097717">ການສືບຕໍ່ຈະເປີດນຳໃຊ້ການດີບັກ ADB ສຳລັບການສ້າງ ແລະ ທົດສອບແອັບ Android. ກະລຸນາຮັບຊາບວ່າການດຳເນີນການນີ້ອະນຸຍາດການຕິດຕັ້ງແອັບ Android ທີ່ບໍ່ໄດ້ຜ່ານການກວດຢັ້ງຢືນຈາກ Google ແລະ ຈຳເປັນຕ້ອງຣີເຊັດເປັນຄ່າໂຮງງານເພື່ອປິດນຳໃຊ້.</translation>
@@ -3626,6 +3641,7 @@
 <translation id="4378556263712303865">ຂໍ້ກຳນົດຂອງອຸປະກອນ</translation>
 <translation id="4379281552162875326">ຖອນການຕິດຕັ້ງ "<ph name="APP_NAME" />" ບໍ?</translation>
 <translation id="4380648069038809855">ເຂົ້າສູ່ໜ້າຈໍເຕັມແລ້ວ</translation>
+<translation id="4383048856908088702">ໃນຂະນະທີ່ແຖບນີ້ບໍ່ເຮັດວຽກ, ຕົວປະຢັດໜ່ວຍຄວາມຈຳຈະສ້າງພື້ນທີ່ຫວ່າງ <ph name="MEMORY_VALUE" /> ໃນໜ່ວຍຄວາມຈຳເພື່ອໃຫ້ໜ້າວຽກອື່ນໃຊ້ໄດ້. ທ່ານສາມາດປ່ຽນສິ່ງນີ້ຕອນໃດກໍໄດ້ໃນ <ph name="SETTINGS_LINK" />.</translation>
 <translation id="4384312707950789900">ເພີ່ມໃສ່ລາຍການເຄືອຂ່າຍທີ່ຕ້ອງການໃຊ້ກ່ອນ</translation>
 <translation id="4384652540891215547">ເປີດໃຊ້ງານສ່ວນຂະຫຍາຍ</translation>
 <translation id="4384886290276344300">ປ່ຽນການຕັ້ງຄ່າແປ້ນພິມ</translation>
@@ -3703,6 +3719,7 @@
 <translation id="4451479197788154834">ລະຫັດຜ່ານຂອງທ່ານຖືກບັນທຶກໄວ້ໃນອຸປະກອນນີ້ ແລະ ໃນບັນຊີ Google ຂອງທ່ານ</translation>
 <translation id="4451757071857432900">ບລັອກໃນເວັບໄຊທີ່ສະແດງໂຄສະນາທີ່ລົບກວນ ຫຼື ຫຼອກລວງ (ແນະນຳ)</translation>
 <translation id="4453946976636652378">ຊອກຫາ <ph name="SEARCH_ENGINE_NAME" /> ຫຼື ພິມ URL</translation>
+<translation id="4458535500699390320">ໃນຂະນະທີ່ແຖບນີ້ບໍ່ເຮັດວຽກ, ຕົວປະຢັດໜ່ວຍຄວາມຈຳຈະສ້າງພື້ນທີ່ຫວ່າງໃນໜ່ວຍຄວາມຈຳເພື່ອໃຫ້ໜ້າວຽກອື່ນໃຊ້ໄດ້. ທ່ານສາມາດປ່ຽນສິ່ງນີ້ຕອນໃດກໍໄດ້ໃນການຕັ້ງຄ່າ.</translation>
 <translation id="4459169140545916303">ເຂົ້າໃຊ້ເມື່ອ <ph name="DEVICE_LAST_ACTIVATED_TIME" /> ມື້ກ່ອນ</translation>
 <translation id="4460014764210899310">ຍົກເລີກການຈັດກຸ່ມ</translation>
 <translation id="4462159676511157176">ເຊີບເວີຊື່ກໍານົດເອງ</translation>
@@ -3875,6 +3892,7 @@
 <translation id="4613271546271159013">ສ່ວນຂະຫຍາຍໄດ້ປ່ຽນແປງສິ່ງທີ່ໜ້າສະແດງຂຶ້ນ ເມື່ອທ່ານເປີດແຖບໃໝ່.</translation>
 <translation id="4615586811063744755">ບໍ່ໄດ້ເລືອກຄຸກກີ້ໃດ</translation>
 <translation id="461661862154729886">ແຫຼ່ງພະລັງງານ</translation>
+<translation id="461676224702246336">ເມື່ອຄລິກສຳລັບເວັບໄຊນີ້</translation>
 <translation id="4617001782309103936">ສັ້ນເກີນໄປ</translation>
 <translation id="4617019240346358451">ໂຫຼດໜ້າໃໝ່ເພື່ອໃຊ້ "<ph name="EXTENSION_NAME" />"</translation>
 <translation id="4617270414136722281">ຕົວເລືອກສ່ວນຂະຫຍາຍ</translation>
@@ -3997,6 +4015,7 @@
 <translation id="4728558894243024398">ເວທີ</translation>
 <translation id="4728570203948182358"><ph name="BEGIN_LINK" />ຜູ້ເບິ່ງແຍງລະບົບຂອງທ່ານ<ph name="END_LINK" /> ໄດ້ປິດການກວດຫາຊອບແວອັນຕະລາຍແລ້ວ</translation>
 <translation id="4730492586225682674">ບັນທຶກຫຼ້າສຸດທີ່ຂຽນດ້ວຍປາຍປາກກາໃນໜ້າຈໍລັອກ</translation>
+<translation id="4730888769809690665">ອະນຸຍາດການແຈ້ງເຕືອນສຳລັບ <ph name="SITE" /> ແລ້ວ</translation>
 <translation id="473140019006744096">ມີພື້ນທີ່ບໍ່ພຽງພໍຢູ່ອຸປະກອນນີ້ເພື່ອອັບເດດໃຫ້ສຳເລັດ. ກະລຸນາສ້າງພື້ນທີ່ຫວ່າງ <ph name="NECESSARY_SPACE" /> ຢູ່ອຸປະກອນຂອງທ່ານແລ້ວລອງໃໝ່.</translation>
 <translation id="4733161265940833579"><ph name="BATTERY_PERCENTAGE" />% (ຊ້າຍ)</translation>
 <translation id="4733793249294335256">ສະຖານທີ່</translation>
@@ -4127,6 +4146,7 @@
 <translation id="4858913220355269194">ຖືກທໍາລາຍ</translation>
 <translation id="4862642413395066333">ການເຊັນການຕອບຮັບ OCSP</translation>
 <translation id="4863769717153320198">ຄວາມລະອຽດ <ph name="WIDTH" /> x <ph name="HEIGHT" /> (ຄ່າເລີ່ມຕົ້ນ)</translation>
+<translation id="486459320933704969">ພໍ່ແມ່ ຫຼື ຜູ້ປົກຄອງຕ້ອງເວົ້າວ່າທ່ານສາມາດເຂົ້າເບິ່ງເວັບໄຊນີ້ໄດ້</translation>
 <translation id="4864805589453749318">ເລືອກພໍ່ແມ່ທີ່ກຳລັງໃຫ້ການອະນຸຍາດໃຫ້ເພີ່ມບັນຊີໂຮງຮຽນ.</translation>
 <translation id="486635084936119914">ເປີດໄຟລ໌ປະເພດສະເພາະໂດຍອັດຕະໂນມັດຫຼັງຈາກດາວໂຫຼດແລ້ວ</translation>
 <translation id="4868281708609571334">ສອນຜູ້ຊ່ວຍ Google ໃຫ້ຮູ້ຈັກສຽງຂອງ <ph name="SUPERVISED_USER_NAME" /></translation>
@@ -4299,6 +4319,7 @@
 <translation id="5032430150487044192">ບໍ່ສາມາດສ້າງລະຫັດ QR ໄດ້</translation>
 <translation id="5033137252639132982">ບໍ່ໄດ້ຮັບອະນຸຍາດໃຫ້ໃຊ້ເຊັນເຊີກວດຈັບການເຄື່ອນໄຫວ</translation>
 <translation id="5033266061063942743">ຮູບຮ່າງເລຂາຄະນິດ</translation>
+<translation id="5034000993065629381">ກະລຸນາຕິດຕໍ່ຜູ້ເບິ່ງແຍງລະບົບຂອງທ່ານ</translation>
 <translation id="5037676449506322593">ເລືອກ​ທັງ​ຫມົດ</translation>
 <translation id="5038818366306248416">ກ່ອນໜ້ານີ້ທ່ານເລືອກບໍ່ອະນຸຍາດສ່ວນຂະຫຍາຍໃດກໍຕາມຢູ່ <ph name="ORIGIN" /></translation>
 <translation id="5039696241953571917">ເບິ່ງ ແລະ ຈັດການລະຫັດຜ່ານທີ່ບັນທຶກໄວ້ໃນ ບັນຊີ Google ຂອງທ່ານ</translation>
@@ -4429,6 +4450,7 @@
 <translation id="5161251470972801814">ອຸປະກອນ USB ຈາກ <ph name="VENDOR_NAME" /></translation>
 <translation id="5162905305237671850">ບລັອກ <ph name="DEVICE_TYPE" /> ແລ້ວ</translation>
 <translation id="5163910114647549394">ຍ້າຍແຖບໄປຢູ່ທ້າຍສຸດຂອງ tabstrip ແລ້ວ</translation>
+<translation id="5164530241085602114">ບໍ່ອະນຸຍາດການແຈ້ງເຕືອນສຳລັບ <ph name="SITE" /></translation>
 <translation id="516747639689914043">Hypertext Transport Protocol (HTTP)</translation>
 <translation id="5170568018924773124">ສະ​ແດງ​ຢູ່​ໃນ​ໂຟລ​ເດີ</translation>
 <translation id="5171045022955879922">ຊອກຫາ ຫຼື ພິມ URL</translation>
@@ -4531,6 +4553,7 @@
 <translation id="5269977353971873915">ພິມບໍ່ສໍາເລັດ</translation>
 <translation id="5273806377963980154">ແກ້ໄຈ URL ເວັບໄຊ</translation>
 <translation id="5275084684151588738">ວັດຈະນານຸກົມຜູ້ໃຊ້</translation>
+<translation id="5275100789567222478">ເປີດໃຊ້ສະເພາະກໍລະນີທີ່ແບັດເຕີຣີຂອງຂ້ອຍເຫຼືອ <ph name="PERCENT" />% ຫຼື ຕ່ຳກວ່າເທົ່ານັ້ນ</translation>
 <translation id="5275338516105640560">ປຸ່ມກຸ່ມແຖບທີ່ບັນທຶກໄວ້</translation>
 <translation id="5275352920323889391">ໝາ</translation>
 <translation id="527605719918376753">ປິດສຽງແຖບ</translation>
@@ -4549,6 +4572,7 @@
 <translation id="5285635972691565180">ຈໍສະແດງຜົນ <ph name="DISPLAY_ID" /></translation>
 <translation id="5286194356314741248">ກຳລັງສະແກນ</translation>
 <translation id="5287425679749926365">ບັນ​ຊີ​ຂອງ​ທ່ານ</translation>
+<translation id="5288106344236929384">ຄຳສັ່ງເພີ່ມເຕີມ, ຕົວເລືອກກະແຈຜ່ານສຳລັບ <ph name="USERNAME" /> ຢູ່ <ph name="DOMAIN" /></translation>
 <translation id="5288678174502918605">ເປີດແຖບທີ່ປິດແລ້ວຄືນໃໝ່</translation>
 <translation id="52895863590846877">ໜ້ານີ້ບໍ່ແມ່ນພາສາ <ph name="LANGUAGE" /></translation>
 <translation id="52912272896845572">ໄຟລ໌ລະຫັດສ່ວນຕົວໃຊ້ບໍ່ໄດ້.</translation>
@@ -4743,6 +4767,7 @@
 <translation id="5473099001878321374">ໂດຍການສືບຕໍ່, ແມ່ນຖືວ່າທ່ານຍອມຮັບວ່າອຸປະກອນນີ້ອາດດາວໂຫຼດ ແລະ ຕິດຕັ້ງອັບເດດ ແລະ ແອັບຈາກ Google, ຜູ້ໃຫ້ບໍລິການຂອງລູກທ່ານ ແລະ ຜູ້ຜະລິດອຸປະກອນນີ້, ເຊິ່ງເປັນໄປໄດ້ວ່າອາດຈະໃຊ້ອິນເຕີເນັດມືຖື. ແອັບບາງຢ່າງເຫຼົ່ານີ້ອາດມີການສະເໜີການຊື້ໃນແອັບ.</translation>
 <translation id="5473156705047072749">{NUM_CHARACTERS,plural, =1{PIN ຕ້ອງມີຢ່າງໜ້ອຍໜຶ່ງຕົວອັກສອນ}other{PIN ຕ້ອງມີຢ່າງໜ້ອຍ # ຕົວອັກສອນ}}</translation>
 <translation id="5474859849784484111"><ph name="MANAGER" /> ກຳນົດໃຫ້ທ່ານຕ້ອງເຊື່ອມຕໍ່ກັບ Wi-Fi ຕອນນີ້ ແລະ ດາວໂຫຼດການອັບເດດ. ຫຼື ດາວໂຫຼດຈາກການເຊື່ອມຕໍ່ແບບວັດແທກປະລິມານອິນເຕີເນັດ (ອາດເກັບຄ່າບໍລິການ).</translation>
+<translation id="5476016146231427848">ກະລຸນາຣີສະຕາດອຸປະກອນຂອງທ່ານເພື່ອໃຊ້ Steam ຢູ່ Chromebook</translation>
 <translation id="5481273127572794904">ບໍ່ໄດ້ຮັບອະນຸຍາດໃຫ້ດາວໂຫຼດຫຼາຍໄຟລ໌ໂດຍອັດຕະໂນມັດ</translation>
 <translation id="5481941284378890518">ເພີ່ມເຄື່ອງພິມທີ່ຢູ່ໃກ້ຄຽງ</translation>
 <translation id="5483785310822538350">ຖອນຄືນ​ໄຟລ​໌​ ແລະ​ການ​ເຂົ້າຫາ​ອຸ​ປະ​ກອນ</translation>
@@ -4962,6 +4987,7 @@
 <translation id="5683806393796685434">ກະລຸນາປ້ອນລະຫັດການເປີດນຳໃຊ້ຂອງທ່ານ</translation>
 <translation id="5684181005476681636">ລາຍລະອຽດ Wi-Fi</translation>
 <translation id="5684661240348539843">ຕົວ​ລະ​ບຸ​ຊັບ​ສິນ</translation>
+<translation id="5684969244627829799">ກະລຸນາເຂົ້າສູ່ລະບົບຫາບັນຊີຜູ້ໃຊ້ແລ້ວລອງໃໝ່</translation>
 <translation id="5687326903064479980">ເຂດເວລາ</translation>
 <translation id="5687935527303996204">ກະລຸນາກວດສອບວ່າທ່ານສຽບສາຍອຸປະກອນແລ້ວ ແລະ ຢ່າປິດມັນໄວ້. ການຕິດຕັ້ງອາດໃຊ້ເວລາສູງສຸດ 20 ນາທີ. ອຸປະກອນຂອງທ່ານຈະປິດເຄື່ອງອັດຕະໂນມັດເມື່ອການຕິດຕັ້ງສຳເລັດແລ້ວ.</translation>
 <translation id="5689516760719285838">ສະຖານທີ່</translation>
@@ -5088,6 +5114,7 @@
 <translation id="5805697420284793859">ຕົວຈັດການໜ້າຈໍ</translation>
 <translation id="5806447147478173900">ການໃຊ້ບ່ອນຈັດເກັບຂໍ້ມູນທັງໝົດຕາມເວັບໄຊທີ່ສະແດງ: <ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">0° (ຕາມຄ່າເລີ່ມຕົ້ນ)</translation>
+<translation id="5810603387504252966">ຈະຕ້ອງເປີດການນຳໃຊ້ #borealis-enabled ໃນ chrome://flags ກ່ອນ</translation>
 <translation id="5810809306422959727">ບັນຊີນີ້ບໍ່ມີສິດນຳໃຊ້ການຄວບຄຸມຂອງພໍ່ແມ່</translation>
 <translation id="5811614940486072060">ໄຟລ໌ນີ້ບໍ່ໄດ້ດາວໂຫຼດໂດຍທົ່ວໄປ ແລະ ອາດເປັນອັນຕະລາຍໄດ້</translation>
 <translation id="5812674658566766066">ຂະຫຍາຍອອກທັງໝົດ</translation>
@@ -5167,6 +5194,7 @@
 <translation id="5882449899683447569">ມີບາງຢ່າງຜິດພາດເກີດຂຶ້ນ ແລະ ບໍ່ສາມາດນຳເຂົ້າລະຫັດຜ່ານຂອງທ່ານໄດ້</translation>
 <translation id="5882919346125742463">ເຄືອຂ່າຍທີ່ຮູ້ຈັກ</translation>
 <translation id="5883356647197510494">ບລັອກ <ph name="PERMISSION_1" />, <ph name="PERMISSION_2" /> ໂດຍອັດຕະໂນມັດແລ້ວ</translation>
+<translation id="5884447826201752041">ປັບແຕ່ງສຳລັບແຕ່ລະສ່ວນຂະຫຍາຍ</translation>
 <translation id="5884474295213649357">ແຖບນີ້ຖືກເຊື່ອມຕໍ່ກັບອຸປະກອນ USB.</translation>
 <translation id="5885314688092915589">ອົງການຂອງທ່ານຈະຈັດການໂປຣໄຟລ໌ນີ້</translation>
 <translation id="5886009770935151472">ນິ້ວ 1</translation>
@@ -5606,6 +5634,7 @@
 <translation id="6301300352769835063">ໃຫ້ Google ໃຊ້ຂໍ້ມູນຮາດແວຂອງທ່ານເພື່ອຊ່ວຍປັບປຸງ <ph name="DEVICE_OS" />. ຫາກທ່ານປະຕິເສດ, ຂໍ້ມູນນີ້ຈະຍັງຄົງຖືກສົ່ງໄປໃຫ້ Google ເພື່ອກວດສອບການອັບເດດທີ່ເໝາະສົມ, ແຕ່ຈະບໍ່ຖືກຈັດເກັບ ຫຼື ຖືກໃຊ້ໄປໃນທາງອື່ນ. ສຶກສາເພີ່ມເຕີມຢູ່ g.co/flex/HWDataCollection.</translation>
 <translation id="630292539633944562">ການແນະນຳຂໍ້ມູນສ່ວນຕົວ</translation>
 <translation id="6305607932814307878">ນະໂຍບາຍທົ່ວໂລກ:</translation>
+<translation id="6305909198255586420">ກະລຸນາຕິດຕັ້ງໂດຍໃຊ້ໂປຣໄຟລ໌ຫຼັກຂອງທ່ານ</translation>
 <translation id="6307990684951724544">ລະ​ບົບ​ບໍ່ຫວ່າງ</translation>
 <translation id="6308493641021088955">ການເຂົ້າສູ່ລະບົບທີ່ໃຫ້ໂດຍ <ph name="EXTENSION_NAME" /></translation>
 <translation id="6308937455967653460">ບັນທຶກລິ້ງເປັນ...</translation>
@@ -5927,6 +5956,7 @@
 <translation id="6608166463665411119">ຣີເຊັດ eSIM</translation>
 <translation id="6609478180749378879">ລະບົບຈະເກັບຂໍ້ມູນເຂົ້າສູ່ລະບົບໄວ້ໃນອຸປະກອນນີ້ຫຼັງຈາກທີ່ທ່ານອອກຈາກໂໝດທີ່ບໍ່ເຜີຍຕົວຕົນ. ທ່ານຈະສາມາດເຂົ້າສູ່ລະບົບເວັບໄຊນີ້ໄດ້ອີກຄັ້ງໃນພາຍຫຼັງດ້ວຍອຸປະກອນຂອງທ່ານ.</translation>
 <translation id="6610002944194042868">ຕົວເລືອກແປພາສາ</translation>
+<translation id="6611907964265870728">ກະລຸນາກວດສອບວ່າອຸປະກອນຂອງທ່ານເຊື່ອມຕໍ່ຫາອິນເຕີເນັດແລ້ວ</translation>
 <translation id="6611972847767394631">ຊອກຫາແຖບຂອງທ່ານຢູ່ທີ່ນີ້</translation>
 <translation id="6613668613087513143">ມີພື້ນທີ່ບໍ່ພຽງພໍຢູ່ອຸປະກອນນີ້ເພື່ອອັບເດດໃຫ້ສຳເລັດ. ກະລຸນາສ້າງພື້ນທີ່ຫວ່າງ <ph name="NECESSARY_SPACE" /> ຢູ່ອຸປະກອນຂອງທ່ານແລ້ວລອງໃໝ່ຈາກໂປຣແກຣມທ່ອງເວັບ Chrome ຂອງທ່ານ.</translation>
 <translation id="6615455863669487791">ສະ​ແດງຂ້ອຍ</translation>
@@ -6315,6 +6345,7 @@
 <translation id="697508444536771064">ປິດເຄື່ອງ Linux</translation>
 <translation id="6975361011348772931">ໄດ້ຮ້ອງຂໍໃຫ້ອ່ານ ແລະ ປ່ຽນແປງ</translation>
 <translation id="6978121630131642226">ເຄື່ອງ​ຈັກ​ຄົ້ນ​ຫາ</translation>
+<translation id="6979041727349121225">ຕົວປະຢັດພະລັງງານ</translation>
 <translation id="6979044105893951891">ເປີດໃຊ້ ແລະ ອອກຈາກເຊດຊັນແຂກທີ່ມີການຈັດການ</translation>
 <translation id="6979158407327259162">Google Drive</translation>
 <translation id="6979440798594660689">ປິດສຽງ (ຄ່າເລີ່ມຕົ້ນ)</translation>
@@ -6367,6 +6398,7 @@
 <translation id="7014174261166285193">ການ​ຕິດ​ຕັ້ງ​ບໍ່ສໍາເລັດ.</translation>
 <translation id="7014480873681694324">ລຶບໄຮໄລ້ອອກ</translation>
 <translation id="7014741021609395734">ລະດັບການຊູມ</translation>
+<translation id="7015088858756332848">ບໍ່ສາມາດເປີດໃຊ້ Steam ຢູ່ Chromebook ໄດ້. ກະລຸນາລອງໃໝ່</translation>
 <translation id="7017004637493394352">ເວົ້າ​ "Ok Google" ອີກເທື່ອໜຶ່ງ</translation>
 <translation id="7017219178341817193">ເພີ່ມໜ້າໃໝ່</translation>
 <translation id="7017354871202642555">ບໍ່ສາມາດຕັ້ງໂໝດໄດ້ຫຼັງຈາກຕັ້ງໜ້າຕ່າງແລ້ວ.</translation>
@@ -6743,6 +6775,7 @@
 <translation id="7409854300652085600">ນຳເຂົ້າບຸກມາກແລ້ວ.</translation>
 <translation id="7410344089573941623">ຖາມ​ເບິ່ງວ່າ <ph name="HOST" /> ຕ້ອງ​ການ​​ເຂົ້າຫາ​ກ້ອງ​ຖ່າຍ​ຮູບ​ ແລະໄມໂຄຣໂຟນຂອງ​ທ່ານບໍ່</translation>
 <translation id="7410852728357935715">ສົ່ງສັນຍານໄປຫາອຸປະກອນ</translation>
+<translation id="7411614333737930931">ກະລຸນາຣີສະຕາດອຸປະກອນຂອງທ່ານແລ້ວລອງໃໝ່</translation>
 <translation id="741204030948306876">ແມ່ນ, ຂ້ອຍຂໍເຂົ້າຮ່ວມ</translation>
 <translation id="7412226954991670867">ຄວາມ​ຈໍາ GPU</translation>
 <translation id="7414464185801331860">18x</translation>
@@ -6973,6 +7006,7 @@
 <translation id="7635048370253485243">ປັກໝຸດໂດຍຜູ້ເບິ່ງແຍງລະບົບຂອງທ່ານ</translation>
 <translation id="7636919061354591437">ຕິດຕັ້ງໃນອຸປະກອນນີ້</translation>
 <translation id="7637253234491814483">ແຕະໃສ່ເຊັນ​ເຊີລາຍນິ້ວ​ມືຢູ່ມຸມຂວາເທິງຂອງແປ້ນພິມທ່ານ, ຖັດຈາກປຸ່ມເປີດປິດ. ຂໍ້ມູນລາຍນິ້ວມືຂອງທ່ານຖືກເກັບໄວ້ຢ່າງປອດໄພ ແລະ ຈະບໍ່ຖືກສົ່ງອອກຈາກ <ph name="DEVICE_TYPE" /> ຂອງທ່ານເດັດຂາດ.</translation>
+<translation id="7637272932128132922">ໃນຂະນະທີ່ແຖບນີ້ບໍ່ເຮັດວຽກ, ຕົວປະຢັດໜ່ວຍຄວາມຈຳຈະສ້າງພື້ນທີ່ຫວ່າງໃນໜ່ວຍຄວາມຈຳເພື່ອໃຫ້ໜ້າວຽກອື່ນໃຊ້ໄດ້. ທ່ານສາມາດປ່ຽນສິ່ງນີ້ຕອນໃດກໍໄດ້ໃນ <ph name="SETTINGS_LINK" />.</translation>
 <translation id="7637593984496473097">ບ່ອນຈັດເກັບຂໍ້ມູນບໍ່ພຽງພໍ</translation>
 <translation id="7639914187072011620">ໂຫຼດການປ່ຽນເສັ້ນທາງ SAML ຈາກເຊີບເວີບໍ່ສຳເລັດ</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> ນຳທ່ານເຂົ້າສູ່ລະບົບເວັບໄຊທີ່ມີສິດໂດຍອັດຕະໂນມັດດ້ວຍລະຫັດຜ່ານທີ່ທ່ານບັນທຶກໄວ້.</translation>
@@ -7089,6 +7123,7 @@
 <translation id="7728668285692163452">ການປ່ຽນຊ່ອງຈະຖືກນຳໃຊ້ໃນພາຍຫຼັງ</translation>
 <translation id="7730449930968088409">ແຄັບເຈີເນື້ອໃນຂອງໜ້າຈໍຂອງທ່ານ</translation>
 <translation id="7730683939467795481">ໜ້ານີ້ຖືກປ່ຽນໂດຍສ່ວນຂະຫຍາຍ "<ph name="EXTENSION_NAME" />"</translation>
+<translation id="7735165285389721951">ກຳລັງມີການເອີ້ນໃຊ້ການຕັ້ງຄ່າ Steam ອື່ນຢູ່. ກະລຸນາລໍຖ້າໃຫ້ມັນສຳເລັດກ່ອນການລອງໃໝ່</translation>
 <translation id="7737115349420013392">ກຳລັງຈັບຄູ່ກັບ "<ph name="DEVICE_NAME" />" ...</translation>
 <translation id="7737846262459425222">ທ່ານສາມາດປ່ຽນສິ່ງນີ້ຕອນໃດກໍໄດ້ໃນການຕັ້ງຄ່າ &gt; ຜູ້ຊ່ວຍ Google &gt; ບໍລິບົດໜ້າຈໍ.</translation>
 <translation id="7737948071472253612">ບໍ່ໄດ້ຮັບອະນຸຍາດໃຫ້ໃຊ້ກ້ອງຂອງທ່ານ</translation>
@@ -7386,6 +7421,7 @@
 ໄຟລ໌ສໍາຄັນ: <ph name="KEY_FILE" />
 
 ຮັກສາໄຟລ໌ຂອງທ່ານໄວ້ໃນບ່ອນທີ່ປອດໄພ. ທ່ານຕ້ອງມີມັນ ເພື່ອສ້າງສ່ວນຂະຫຍາຍຂອງທ່ານລຸ້ນໃໝ່.</translation>
+<translation id="8001100670809322641">ກະລຸນາລໍຖ້າສອງສາມນາທີແລ້ວລອງໃໝ່</translation>
 <translation id="8002274832045662704">ການກຳນົດຄ່າເຄື່ອງພິມຂັ້ນສູງ</translation>
 <translation id="8002670234429879764"><ph name="PRINTER_NAME" /> ບໍ່ສາມາດໃຊ້ໄດ້ອີກຕໍ່ໄປ</translation>
 <translation id="8004092996156083991">ຫາກລະຫັດຜ່ານຂອງທ່ານຖືກລະເມີດ, ພວກເຮົາຈະແຈ້ງໃຫ້ທ່ານຮູ້.</translation>
@@ -7395,6 +7431,7 @@
 <translation id="8008356846765065031">ອິນເຕີເນັດຕັດເຊື່ອມຕໍ່ແລ້ວ. ກະລຸນາກວດເບິ່ງການເຊື່ອມຕໍ່ອິນເຕີເນັດຂອງທ່ານ.</translation>
 <translation id="8009225694047762179">ຈັດການລະຫັດຜ່ານ</translation>
 <translation id="8011372169388649948">ຍ້າຍ '<ph name="BOOKMARK_TITLE" />' ແລ້ວ.</translation>
+<translation id="8011875486979733097">ບໍ່ສາມາດຕິດຕັ້ງ Steam ໄດ້</translation>
 <translation id="8012647001091218357">ພວກ​ເຮົາ​ບໍ່​ສາ​ມາດ​ຕິດ​ຕໍ່​ຜູ້​ປົກ​ຄອງ​ຂອງ​ທ່ານ​ໄດ້​ໃນ​ຂະ​ນະ​ນີ້. ກະ​ລຸ​ນາ​ລອງ​ໃໝ່​ອີກ.</translation>
 <translation id="8013993649590906847">ຖ້າຮູບບໍ່ມີລາຍລະອຽດທີ່ເປັນປະໂຫຍດ, Chrome ຈະພະຍາຍາມໃຫ້ລາຍລະອຽດແກ່ທ່ານ. ເພື່ອສ້າງລາຍລະອຽດ, ລະບົບຈະສົ່ງຮູບພາບໃຫ້ Google.</translation>
 <translation id="8014154204619229810">ຕົວ​ອັບ​ເດດ​ກຳ​ລັງ​ເຮັດ​ວຽກ​ຢູ່​ໃນ​ປະ​ຈຸ​ບັນ. ອີກ​ໜຶ່ງ​ນາ​ທີໃຫ້​ຣີ​ເຟ​ຣັ​ຊ​ໃໝ່ ເພື່ອກວດ​ເບິ່ງ​ອີກ.</translation>
@@ -7484,6 +7521,7 @@
 <translation id="808894953321890993">ປ່ຽນລະຫັດຜ່ານ</translation>
 <translation id="8090234456044969073">ອ່ານລາຍຊື່ເວັບໄຊທ໌ທີ່ທ່ານເຂົ້າເບິ່ງເລື້ອຍທີ່ສຸດ</translation>
 <translation id="8090513782447872344">ທ່ານສາມາດກັບມາອ່ານໃໝ່ຕອນໃດກໍໄດ້</translation>
+<translation id="809312780580957751">ບໍ່ສາມາດຕິດຕັ້ງ Steam ຢູ່ອຸປະກອນນີ້ໄດ້</translation>
 <translation id="8093359998839330381"><ph name="PLUGIN_NAME" /> ບໍ່ຕອບສະໜອງ</translation>
 <translation id="8095105960962832018"><ph name="BEGIN_PARAGRAPH1" />ສຳຮອງຂໍ້ມູນໄວ້ໃນ Google Drive. ກູ້ຄືນຂໍ້ມູນຂອງທ່ານໄດ້ຢ່າງງ່າຍດາຍ ຫຼື ປ່ຽນອຸປະກອນໄດ້ທຸກເວລາ. ຂໍ້ມູນທີ່ສຳຮອງໄວ້ຂອງທ່ານຮວມເອົາຂໍ້ມູນແອັບ.<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />ຂໍ້ມູນທີ່ສຳຮອງໄວ້ຂອງທ່ານຖືກອັບໂຫຼດໄວ້ໃນ Google ແລະ ເຂົ້າລະຫັດໄວ້ໂດຍໃຊ້ລະຫັດຜ່ານບັນຊີ Google ຂອງທ່ານ.<ph name="END_PARAGRAPH2" />
@@ -7579,6 +7617,7 @@
 <translation id="8177318697334260664">{NUM_TABS,plural, =1{ຍ້າຍແຖບໄປໜ້າຈໍໃໝ່}other{ຍ້າຍແຖບໄປໜ້າຈໍໃໝ່}}</translation>
 <translation id="8179188928355984576">ບໍ່ໄດ້ໃຊ້ກັບແອັບ Android</translation>
 <translation id="8179976553408161302">ປ້ອນເຂົ້າ</translation>
+<translation id="8180785270975217276">ເປີດໃຊ້ຕົວປະຢັດພະລັງງານແລ້ວ</translation>
 <translation id="8180786512391440389">"<ph name="EXTENSION" />" ສາມາດອ່ານ ແລະລຶບໄຟລ໌ຮູບ, ວິດີໂອ, ແລະສຽງຢູ່ໃນຢູ່ໃນທີ່ຕັ້ງທີ່ໝາຍຕິກແລ້ວໄດ້.</translation>
 <translation id="8181215761849004992">ບໍ່ສາມາດເຂົ້າຮ່ວມໂດເມນໄດ້. ກະລຸນາກວດບັນຊີຂອງທ່ານເພື່ອເບິ່ງວ່າທ່ານມີສິດພຽງພໍໃນການເພີ່ມອຸປະກອນຫຼືບໍ່.</translation>
 <translation id="8182105986296479640">ແອັບພລິເຄຊັນບໍ່ຕອບສະໜອງ.</translation>
@@ -7701,6 +7740,7 @@
 <translation id="828642162569365647">ລະຫັດຜ່ານ ຫຼື PIN ນີ້ຈະປົກປ້ອງຂໍ້ມູນຂອງທ່ານຢູ່ <ph name="DEVICE_TYPE" /> ນີ້ ແລະ ຂໍ້ມູນໃດກໍຕາມທີ່ທ່ານເຂົ້າເຖິງຈາກໂທລະສັບຂອງທ່ານ. ທ່ານຈະຕ້ອງປົດລັອກແຕ່ລະເທື່ອທີ່ <ph name="DEVICE_TYPE" /> ຂອງທ່ານຕື່ນຈາກການນອນ.</translation>
 <translation id="8287902281644548111">ຊອກຫາຕາມການເອີ້ນໃຊ້ API/URL</translation>
 <translation id="8288032458496410887">ຖອນຕິດຕັ້ງ <ph name="APP" />...</translation>
+<translation id="8288539437195337464">ກວດສອບວ່າມີການອັບເດດອຸປະກອນຂອງທ່ານແລ້ວ ແລະ ລອງໃໝ່ອີກເທື່ອໜຶ່ງ</translation>
 <translation id="8289128870594824098">ຂະໜາດດິສ</translation>
 <translation id="8289509909262565712">ຍິນດີຕ້ອນຮັບສູ່ <ph name="DEVICE_OS" /></translation>
 <translation id="8293206222192510085">ເພີ່ມບຸກມາກຄ໌</translation>
@@ -7995,6 +8035,7 @@
 <translation id="8599864823732014237">ຂ້າມການລົງທະບຽນອົງກອນບໍ?</translation>
 <translation id="8601206103050338563">ການຮັບຮອງລູກຂ່າຍ TLS WWW</translation>
 <translation id="8601611099293226919">ຊອກຫາໜ້າຈໍຂອງທ່ານດ້ວຍ Google Lens</translation>
+<translation id="8602674530529411098">ແອັບ (ເບຕ້າ)</translation>
 <translation id="8602851771975208551">ໂປຣແກຼມອື່ນຢູ່ໃນຄອມພິວເຕີຂອງທ່ານໄດ້ເພີ່ມແອັບທີ່ອາດຈະປ່ຽນແປງວິທີການເຮັດວຽກຂອງ Chrome ແລ້ວ.</translation>
 <translation id="8605428685123651449">ຄວາມ​ຈໍາ SQLite</translation>
 <translation id="8608618451198398104">ເພີ່ມປີ້ Kerberos</translation>
@@ -8679,10 +8720,12 @@
 <translation id="939598580284253335">ປ້ອນວະລີຜ່ານໃສ່</translation>
 <translation id="939736085109172342">ໂຟລເດີ​ໃຫມ່</translation>
 <translation id="942532530371314860"><ph name="APP_NAME" /> ກຳລັງແບ່ງປັນແຖບ Chrome ແລະ ສຽງ.</translation>
+<translation id="944799160843436808">ເກີດບັນຫາໃນການຕັ້ງຄ່າ Steam ຢູ່ Chromebook</translation>
 <translation id="945522503751344254">ສົ່ງ​ຄໍາ​ຄິດ​​ເຫັນ</translation>
 <translation id="947329552760389097">&amp;ກວດກາອົງປະກອບ</translation>
 <translation id="947526284350604411">ຄຳຕອບຂອງທ່ານ</translation>
 <translation id="947667444780368238"><ph name="ORIGIN" /> ບໍ່ສາມາດເປີດໄຟລ໌ໃນໂຟນເດີນີ້ໄດ້ເນື່ອງຈາກມັນມີໄຟລ໌ລະບົບ</translation>
+<translation id="949314938206378263">ທ່ານໄດ້ຂໍເຂົ້າເບິ່ງເວັບໄຊນີ້. ຜູ້ປົກຄອງຂອງທ່ານສາມາດຕອບກັບໃນ Family Link.</translation>
 <translation id="950307215746360464">ຄຳແນະນຳການຕັ້ງຄ່າ</translation>
 <translation id="951991426597076286">ປະຕິເສດ</translation>
 <translation id="952471655966876828">ອຸປະກອນຈະເຊື່ອມຕໍ່ອັດຕະໂນມັດເມື່ອເປີດມັນ ແລະ ກຳລັງຖືກໃຊ້ຢູ່</translation>
@@ -8703,6 +8746,7 @@
 <translation id="968000525894980488">ເປີດການບໍລິການ Google Play.</translation>
 <translation id="968037381421390582">ວາງໃສ່ ແລະ ຊອກຫາ “<ph name="SEARCH_TERMS" />”</translation>
 <translation id="969096075394517431">ປ່ຽນ​ພາ​ສາ</translation>
+<translation id="969574218206797926">ຕົວປະຢັດໜ່ວຍຄວາມຈຳຈະສ້າງພື້ນທີ່ຫວ່າງໃນໜ່ວຍຄວາມຈຳຈາກແຖບທີ່ບໍ່ເຮັດວຽກເພື່ອໃຫ້ມັນສາມາດຖືກໃຊ້ໄດ້ໂດຍແຖບທີ່ເຮັດວຽກ ແລະ ແອັບອື່ນໆ</translation>
 <translation id="970047733946999531">{NUM_TABS,plural, =1{1 ແຖບ}other{# ແຖບ}}</translation>
 <translation id="971510864672937292">ລຶບລ້າງຂໍ້ມູນເວັບໄຊ ແລະ ການອະນຸຍາດສຳລັບ <ph name="SITE_NAME" /> ແລະ ເວັບໄຊທັງໝົດພາຍໃຕ້ມັນອອກບໍ?</translation>
 <translation id="971774202801778802">URL ບຸກມາກຄ໌</translation>
diff --git a/chrome/app/resources/generated_resources_lt.xtb b/chrome/app/resources/generated_resources_lt.xtb
index 8c0927c..02b3f1a 100644
--- a/chrome/app/resources/generated_resources_lt.xtb
+++ b/chrome/app/resources/generated_resources_lt.xtb
@@ -1137,6 +1137,7 @@
 <translation id="2034346955588403444">Pridėti kitą „WiFi“ tinklą</translation>
 <translation id="2035211704574173780">Pilkumo tonai</translation>
 <translation id="203574396658008164">Įgalinti užrašų rašymą užrakinimo ekrane</translation>
+<translation id="2036514476578229158">Prašėte leidimo apsilankyti šioje svetainėje. Tėvai gali atsakyti programoje „Family Link“.</translation>
 <translation id="2037445849770872822">Šioje „Google“ paskyroje nustatyta priežiūra. Jei norite nustatyti daugiau tėvų kontrolės nustatymų, pasirinkite „Tęsti“.
 
 Jei nenorite, dabar atsijunkite, kad šios paskyros pakeitimai būtų matomi šiame įrenginyje.
@@ -1258,6 +1259,7 @@
 <translation id="2135787500304447609">&amp;Atnaujinti</translation>
 <translation id="2136372518715274136">Įveskite naują slaptažodį</translation>
 <translation id="2136476978468204130">Įvesta slaptafrazė netinka</translation>
+<translation id="2137891579555018930">Laukiama leidimo...</translation>
 <translation id="2138398485845393913">Vis dar bandoma užmegzti ryšį su „<ph name="DEVICE_NAME" />“</translation>
 <translation id="2139919072249842737">Nustatymo mygtukas</translation>
 <translation id="2140788884185208305">Akumuliatoriaus būsena</translation>
@@ -4148,6 +4150,7 @@
 <translation id="4858913220355269194">Šemberas</translation>
 <translation id="4862642413395066333">OCSP atsakų pasirašymas</translation>
 <translation id="4863769717153320198">Atrodo kaip <ph name="WIDTH" /> × <ph name="HEIGHT" /> (numatytasis)</translation>
+<translation id="486459320933704969">Vienas iš tėvų ar globėjų turi patvirtinti, kad galite apsilankyti šioje svetainėje</translation>
 <translation id="4864805589453749318">Pasirinkite vieną iš tėvų, kuris suteikia leidimą pridėti mokyklos paskyrą.</translation>
 <translation id="486635084936119914">Automatiškai atidaryti tam tikrų tipų failus, kai jie atsisiunčiami</translation>
 <translation id="4868281708609571334">„Google“ padėjėjo mokymas atpažinti <ph name="SUPERVISED_USER_NAME" /> balsą</translation>
@@ -8311,6 +8314,7 @@
 <translation id="8838601485495657486">Neskaidru</translation>
 <translation id="8838770651474809439">Mėsainis</translation>
 <translation id="8838778928843281408">Telefonų valdymas</translation>
+<translation id="883924185304953854">Ieškoti pagal vaizdą</translation>
 <translation id="8841843049738266382">Skaityti ir keisti į leidžiamųjų sąrašą įtrauktus naudotojus</translation>
 <translation id="8842594465773264717">Ištrinti šį kontrolinį kodą</translation>
 <translation id="8845001906332463065">Gauti pagalbos</translation>
@@ -8738,6 +8742,7 @@
 <translation id="947329552760389097">&amp;Tikrinti elementus</translation>
 <translation id="947526284350604411">Jūsų atsakymas</translation>
 <translation id="947667444780368238"><ph name="ORIGIN" /> negali atidaryti šiame aplanke esančių failų, nes aplanke yra sistemos failų</translation>
+<translation id="949314938206378263">Prašėte leidimo apsilankyti šioje svetainėje. Vienas iš tėvų gali atsakyti programoje „Family Link“.</translation>
 <translation id="950307215746360464">Sąrankos vadovas</translation>
 <translation id="951991426597076286">Atmesti</translation>
 <translation id="952471655966876828">Įrenginys bus automatiškai prijungtas, kai bus įjungtas ar naudojamas</translation>
diff --git a/chrome/app/resources/generated_resources_lv.xtb b/chrome/app/resources/generated_resources_lv.xtb
index 0d3da90..dd8e2b3 100644
--- a/chrome/app/resources/generated_resources_lv.xtb
+++ b/chrome/app/resources/generated_resources_lv.xtb
@@ -8248,6 +8248,7 @@
 <translation id="8838601485495657486">Necaurspīdīgs</translation>
 <translation id="8838770651474809439">Hamburgers</translation>
 <translation id="8838778928843281408">Pārvaldīt tālruņus</translation>
+<translation id="883924185304953854">Meklēt pēc attēla</translation>
 <translation id="8841843049738266382">Lasīt un mainīt atļaušanas sarakstā iekļautos lietotājus</translation>
 <translation id="8842594465773264717">Dzēst šo pirksta nospiedumu</translation>
 <translation id="8845001906332463065">Saņemt palīdzību</translation>
diff --git a/chrome/app/resources/generated_resources_mk.xtb b/chrome/app/resources/generated_resources_mk.xtb
index c3cb7ca..5c4120ee7 100644
--- a/chrome/app/resources/generated_resources_mk.xtb
+++ b/chrome/app/resources/generated_resources_mk.xtb
@@ -71,6 +71,7 @@
 <translation id="1067048845568873861">Создадено</translation>
 <translation id="1067661089446014701">За дополнителна безбедност, можете да ги шифрирате лозинките на уредот пред да се зачуваат во сметката на Google</translation>
 <translation id="1067922213147265141">Други услуги на Google</translation>
+<translation id="1069104208554708737">Криптографскиов клуч ќе се зачува само на уредов</translation>
 <translation id="1069355737714877171">Отстранете го профилот на eSIM наречен <ph name="PROFILE_NAME" /></translation>
 <translation id="1069814191880976658">Изберете друг екран</translation>
 <translation id="1070377999570795893">Друга програма на компјутерот додаде екстензија што може да промени како работи Chrome.
@@ -350,6 +351,7 @@
 <translation id="1324106254079708331">Ги чува личните сметки на Google на луѓето што се во ризик од насочени напади</translation>
 <translation id="1327272175893960498">Билети на Kerberos</translation>
 <translation id="1327495825214193325">За да се овозможи отстранување грешки на ADB, потребно е рестартирање на <ph name="DEVICE_TYPE" />. За да се оневозможи, потребно ресетирање на фабрички поставки.</translation>
+<translation id="1327527584824210101">Користете го криптографскиот клуч</translation>
 <translation id="1327794256477341646">Функциите на коишто им треба локацијата нема да работат</translation>
 <translation id="1331977651797684645">Јас бев.</translation>
 <translation id="1333489022424033687">Некои функции на <ph name="ORIGIN" /> можеби нема да работат додека не ги избришете податоците што другите сајтови ги складирале на вашиот уред</translation>
@@ -410,6 +412,7 @@
 <translation id="139013308650923562">Дозволено им е да ги користат фонтовите инсталирани на уредот</translation>
 <translation id="1390548061267426325">Отвори како обична картичка</translation>
 <translation id="1390907927270446471"><ph name="PROFILE_USERNAME" /> нема овластување да печати на <ph name="PRINTER_NAME" />. Контактирајте со администраторот.</translation>
+<translation id="1392047138650695757">Речници на корисникот</translation>
 <translation id="1393283411312835250">Сонце и облаци</translation>
 <translation id="1395730723686586365">Ажурирањето започна</translation>
 <translation id="1395832189806039783">Нагласување ставка со фокусот на тастатурата</translation>
@@ -1533,6 +1536,7 @@
 <translation id="2356070529366658676">Прашај</translation>
 <translation id="2357330829548294574">Отстранете <ph name="USER_NAME" /></translation>
 <translation id="2358561147588818967">Сајтовите може да користат JavaScript</translation>
+<translation id="2358703245148663432">Друг уред</translation>
 <translation id="2358777858338503863">Кликнете за да се дозволи на <ph name="ORIGIN" />:</translation>
 <translation id="2359071692152028734">Апликациите на Linux може да не реагираат.</translation>
 <translation id="2359345697448000899">Уредувајте со наставки со кликнување на Наставки во менито Алатки.</translation>
@@ -1892,6 +1896,7 @@
 <translation id="271033894570825754">Ново</translation>
 <translation id="2711073837061989559">Пробни периоди</translation>
 <translation id="2712173769900027643">Побарај дозвола</translation>
+<translation id="2712207122921938368">Создајте криптографски клуч на друг уред</translation>
 <translation id="2713106313042589954">Исклучи ја камерата</translation>
 <translation id="2713444072780614174">Бела</translation>
 <translation id="2714393097308983682">Google Play Store</translation>
@@ -2405,6 +2410,7 @@
 <translation id="3182749001423093222">Проверка на правопис</translation>
 <translation id="3183139917765991655">Увозник на профил</translation>
 <translation id="3183143381919926261">Мобилни мрежи</translation>
+<translation id="3183613134231754987">Криптографскиов клуч ќе се зачува само во Windows Hello. Ќе остане на уредов откако ќе ги затворите сите прозорци „Инкогнито“.</translation>
 <translation id="3183944777708523606">Подредување на мониторот</translation>
 <translation id="3184536091884214176">Поставете ги или управувајте со печатачите за CUPS. <ph name="LINK_BEGIN" />Дознајте повеќе<ph name="LINK_END" /></translation>
 <translation id="3185014249447200271">{NUM_APPS,plural, =1{Апликацијава е блокирана}one{Некои апликации се блокирани}other{Некои апликации се блокирани}}</translation>
@@ -2413,6 +2419,7 @@
 <translation id="3188465121994729530">Движечки просек</translation>
 <translation id="3189187154924005138">Голем курсор</translation>
 <translation id="3190558889382726167">Лозинката е зачувана</translation>
+<translation id="3192589799003798742">Се поставува Steam на Chromebook</translation>
 <translation id="3192947282887913208">Аудиодатотеки</translation>
 <translation id="3193695589337931419">Алатки за системски сигнали</translation>
 <translation id="3194786596445804250">Прикажи детали за блокирање колачиња од трети страни</translation>
@@ -2552,6 +2559,7 @@
 <translation id="3341699307020049241">Погрешен PIN. Имате уште <ph name="RETRIES" /> обиди.</translation>
 <translation id="3341703758641437857">Дозволи пристап до URL на датотеките</translation>
 <translation id="3342361181740736773">„<ph name="TRIGGERING_EXTENSION_NAME" />“ сака да ја отстрани екстензијата.</translation>
+<translation id="3343977377045378693">Се извршува поставување</translation>
 <translation id="3345135638360864351">Барањето за пристап до локацијата не може да се испрати до <ph name="NAME" />. Обидете се повторно.</translation>
 <translation id="3345634917232014253">Безбедносната проверка беше извршена предмалку</translation>
 <translation id="3345886924813989455">Не се најде поддржан прелистувач</translation>
@@ -2563,6 +2571,7 @@
 <translation id="3354768182971982851">Старите верзии на апликациите на Chrome нема да се отвораат на уреди со Mac по декември 2022 година. Може да проверите дали има достапно нова верзија.</translation>
 <translation id="3354972872297836698">Не можеше да се спари со уредот „<ph name="DEVICE_NAME" />“, изберете уред за да се обидете повторно</translation>
 <translation id="3355936511340229503">Грешка при поврзување</translation>
+<translation id="3356036636691722598">Уживајте во вашиот Chromebook</translation>
 <translation id="3356469410714175391">(Овозможена е виртуелна картичка)</translation>
 <translation id="3356580349448036450">Завршено</translation>
 <translation id="3359256513598016054">Ограничувања на политика за сертификат</translation>
@@ -2883,6 +2892,7 @@
 <translation id="3654045516529121250">Прочитајте ги поставките за пристапност</translation>
 <translation id="3655712721956801464">{NUM_FILES,plural, =1{Има постојан пристап до една датотека.}one{Има постојан пристап до # датотека.}other{Има постојан пристап до # датотеки.}}</translation>
 <translation id="3658871634334445293">Забрзување на TrackPoint</translation>
+<translation id="3659550105763988702">Користете го криптографскиот клуч за <ph name="APP_NAME" /></translation>
 <translation id="3659929705630080526">Внесовте премногу неточни кодови за пристап. Обидете се повторно подоцна</translation>
 <translation id="3660234220361471169">Недоверливи</translation>
 <translation id="3664511988987167893">Икона за екстензијата</translation>
@@ -3152,6 +3162,7 @@
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> сака да: <ph name="FIRST_PERMISSION" /> и <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Изберете тастатура</translation>
 <translation id="3900966090527141178">Извезување лозинки</translation>
+<translation id="3902789559055749153">Изберете како сакате да создадете криптографски клуч за <ph name="APP_NAME" /></translation>
 <translation id="3903187154317825986">Вградена тастатура</translation>
 <translation id="3904326018476041253">Услуги според локација</translation>
 <translation id="3904849010307028014">Според вашата интеракција со некој сајт, како што е редовното најавување на сметка, тој сајт може да му издаде токен за доверба на вашиот прелистувач. Подоцна, ако другите сајтови што ги посетувате проверат и пронајдат важечки токен за доверба, поверојатно е дека ќе ве третираат како човек, а не како бот.</translation>
@@ -3477,11 +3488,13 @@
 <translation id="4211904048067111541">Престани да користиш со апликации на Android</translation>
 <translation id="42126664696688958">Извези</translation>
 <translation id="42137655013211669">Пристапот до изворов е забранет од серверот.</translation>
+<translation id="4214192212360095377">Исклучи сега</translation>
 <translation id="4217558091331485702">Скенирај пред отворање</translation>
 <translation id="4217571870635786043">Диктат</translation>
 <translation id="4218081191298393750">Кликнете на иконата за звучник за да го исклучите звукот на картичкава</translation>
 <translation id="4219558185499589032">Box</translation>
 <translation id="4220648711404560261">Грешка при активацијата.</translation>
+<translation id="4223845867739585293">Создајте лозинка</translation>
 <translation id="4225397296022057997">На сите сајтови</translation>
 <translation id="4228209296591583948">{NUM_EXTENSIONS,plural, =1{Екстензијава не е дозволена}one{Некои екстензии не се дозволени}other{Некои екстензии не се дозволени}}</translation>
 <translation id="4231095370974836764">Инсталирајте апликации и игри од Google Play на вашиот <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Дознајте повеќе<ph name="LINK_END" /></translation>
@@ -4126,6 +4139,7 @@
 <translation id="4838907349371614303">Лозинката е ажурирана</translation>
 <translation id="4838958829619609362">Не е избран <ph name="LANGUAGE" /></translation>
 <translation id="4839303808932127586">За&amp;чувај видео како...</translation>
+<translation id="4839910546484524995">Проверете го уредот</translation>
 <translation id="4840096453115567876">Сепак да се излезе од режимот „Инкогнито“?</translation>
 <translation id="4841741146571978176">Бараната виртуелна машина не постои. Поставете <ph name="VM_TYPE" /> за да продолжите</translation>
 <translation id="4842976633412754305">Страницата се обидува да вчита скрипти од непроверени извори.</translation>
@@ -4379,6 +4393,7 @@
 <translation id="5089763948477033443">Рачка за менување големина на странична табла</translation>
 <translation id="5090637338841444533">Не им е дозволено да ја следат позицијата на камерата</translation>
 <translation id="5093569275467863761">Подрамка за инкогнито за кеш за движење наназад/нанапред: <ph name="BACK_FORWARD_CACHE_INCOGNITO_PAGE_URL" /></translation>
+<translation id="5094042205195563542">Започнува инсталација</translation>
 <translation id="5094176498302660097">Со апликацијава може да отворате и уредувате поддржани датотеки од апликацијата Files или од други апликации. За да контролирате кои датотеки стандардно се отвораат во апликацијава, <ph name="BEGIN_LINK" />дознајте како да поставите стандардни апликации на вашиот уред<ph name="END_LINK" />.</translation>
 <translation id="5094721898978802975">Комуницирај со матични апликации што соработуваат</translation>
 <translation id="5097002363526479830">Не успеа да се поврзе на мрежа „<ph name="NAME" />“: <ph name="DETAILS" /></translation>
@@ -5036,6 +5051,7 @@
 <translation id="5729712731028706266">&amp;Приказ</translation>
 <translation id="5731247495086897348">За&amp;лепи и оди</translation>
 <translation id="5732392974455271431">Родителите може да го одблокираат</translation>
+<translation id="5733109311583381874">Додајте свои зборови во речниците на корисникот за да ги приспособите кандидатите за конверзија.</translation>
 <translation id="5733866499231170760">Неважечки ID. Форматот што го внесовте е погрешен. Проверете ги упатствата што ги добивте за да се уверите дека го внесувате ID во точниот формат. Ако не можете да го решите проблемов, оставете го полево празно и продолжете со инсталацијата.</translation>
 <translation id="5734362860645681824">Комуникации</translation>
 <translation id="5734697361979786483">Додајте споделување датотеки</translation>
@@ -5144,6 +5160,7 @@
 <translation id="583431638776747">Сајтот не беше достапен</translation>
 <translation id="5834581999798853053">Преостануваат околу <ph name="TIME" /> минути</translation>
 <translation id="5835486486592033703"><ph name="WINDOW_TITLE" /> - камерата или микрофонот снима</translation>
+<translation id="5835625581856809102">Скенирајте го QR-кодов со уредот каде што сакате да создадете криптографски клуч за <ph name="APP_NAME" /></translation>
 <translation id="583673505367439042">Сајтовите може да прашуваат за да ги изменуваат датотеките и папките на уредот</translation>
 <translation id="5836999627049108525">Јазик од кој треба да се преведе</translation>
 <translation id="583756221537636748">Футрола за полнење</translation>
@@ -5386,6 +5403,7 @@
 <translation id="6059276912018042191">Неодамнешни картички на Chrome</translation>
 <translation id="6059652578941944813">Хиерархија на сертификат</translation>
 <translation id="6059925163896151826">USB-уреди</translation>
+<translation id="6061408389284235459">Известување е испратено на <ph name="DEVICE_NAME" /></translation>
 <translation id="6063284707309177505">Создај QR-код</translation>
 <translation id="6063847492705284550"><ph name="BEGIN_BOLD" />Напомена:<ph name="END_BOLD" /> некој со сличен глас или снимка ќе може да пристапи до личните резултати на <ph name="SUPERVISED_USER_NAME" />. За да заштедите батерија, во поставките за „Помошникот“ на <ph name="SUPERVISED_USER_NAME" /> може да изберете „Ok Google“ да биде вклучено само кога уредов е поврзан со извор на напојување.</translation>
 <translation id="6064217302520318294">Заклучување екран</translation>
@@ -5512,6 +5530,7 @@
 <translation id="6178664161104547336">Избери сертификат</translation>
 <translation id="6178682841350631965">Податоците за најавување се ажурирани</translation>
 <translation id="6180510783007738939">Алатка за линија</translation>
+<translation id="6180550893222597997">Кој криптографски клуч сакате да го користите за <ph name="APP_NAME" />?</translation>
 <translation id="6181431612547969857">Преземањето е блокирано</translation>
 <translation id="6184099524311454384">Пребарајте ги картичките</translation>
 <translation id="6185132558746749656">Локација на уредот</translation>
@@ -5950,6 +5969,7 @@
 <translation id="6596816719288285829">IP-адреса</translation>
 <translation id="6597017209724497268">Примероци</translation>
 <translation id="6597331566371766302">Следниве екстензии се блокирани од администраторот:</translation>
+<translation id="6601262427770154296">Управувајте со речниците на корисникот</translation>
 <translation id="6601612474695404578">Некои сајтови користат колачиња од трети страни за вчитување на нивните страници. Ако сајтот не работи, обидете се да дозволите колачиња.</translation>
 <translation id="6602937173026466876">Пристапувајте до печатачите</translation>
 <translation id="6602956230557165253">За навигација користете ги левото и десното копче со стрелка.</translation>
@@ -6311,6 +6331,7 @@
 <translation id="6943060957016121200">Овозможување инстант врзување</translation>
 <translation id="6943176775188458830">Откажи печатење</translation>
 <translation id="6943939122536910181">Не е поврзан со <ph name="DEVICE" /></translation>
+<translation id="6944708469742828051">Криптографскиов клуч ќе се зачува само во Windows Hello</translation>
 <translation id="6945221475159498467">Избери</translation>
 <translation id="694592694773692225">Пренасочувањето е блокирано на оваа страница.</translation>
 <translation id="6947015141909171112">Прикажани се рецепти според вашата неодамнешна активност на пребарување рецепти.
@@ -6403,6 +6424,7 @@
 <translation id="7014174261166285193">Инсталацијата не успеа.</translation>
 <translation id="7014480873681694324">Отстрани нагласување</translation>
 <translation id="7014741021609395734">Ниво на зумирање</translation>
+<translation id="7014961128696979283">Вклучи Steam</translation>
 <translation id="7015088858756332848">Не можеше да се стартува Steam на Chromebook. Обидете се повторно</translation>
 <translation id="7017004637493394352">Кажете „Ok Google" повторно</translation>
 <translation id="7017219178341817193">Додај нова страница</translation>
@@ -6562,6 +6584,7 @@
 <translation id="7193051357671784796">Вашата организација ја додаде апликацијава. Рестартирајте ја апликацијата за да завршите со инсталацијата.</translation>
 <translation id="7193374945610105795">Не се зачувани лозинки за <ph name="ORIGIN" /></translation>
 <translation id="7194873994243265344">Организацијата ја блокираше датотекава бидејќи е шифрирана. Побарајте од сопственикот да ја дешифрира.</translation>
+<translation id="7196272782924897510">Да се користи криптографски клуч од друг уред?</translation>
 <translation id="7196913789568937443">Направете бекап на Google Drive. Лесно враќајте ги податоците или менувајте ги уредите во секое време. Бекапот опфаќа податоци за апликациите. Вашиот бекап се прикачува во Google и се шифрира со помош на лозинката за вашата сметка на Google. <ph name="BEGIN_LINK1" />Дознајте повеќе<ph name="END_LINK1" /></translation>
 <translation id="7197190419934240522">Добијте ги „Пребарување на Google“ и паметните опции на Google секогаш кога прелистувате</translation>
 <translation id="719791532916917144">Кратенки од тастатура</translation>
@@ -6796,6 +6819,7 @@
 <translation id="7423425410216218516">Видливоста е вклучена во траење од <ph name="MINUTES" /> минути</translation>
 <translation id="7423513079490750513">Отстранете го лицето <ph name="INPUT_METHOD_NAME" /></translation>
 <translation id="7423807071740419372"><ph name="APP_NAME" /> бара дозвола за да се изврши</translation>
+<translation id="7424153922653300265">„Штедачот на енергија“ е вклучен</translation>
 <translation id="7424818322350938336">Додадена е мрежа</translation>
 <translation id="7427315069950454694">вашите спомени за денес</translation>
 <translation id="7427348830195639090">Страница во заднина: <ph name="BACKGROUND_PAGE_URL" /></translation>
@@ -7062,6 +7086,7 @@
 <translation id="7670483791111801022">Титлови</translation>
 <translation id="7671130400130574146">Користи системска лента за наслови и граници</translation>
 <translation id="767127784612208024">Допрете за да го потврдите ресетирањето</translation>
+<translation id="7672504401554182757">Изберете го уредот каде што се наоѓа криптографскиот клуч за <ph name="APP_NAME" /></translation>
 <translation id="7672520070349703697"><ph name="HUNG_IFRAME_URL" />, на <ph name="PAGE_TITLE" />.</translation>
 <translation id="7674416868315480713">Деактивирај ги сите порти што се проследени во Linux</translation>
 <translation id="7674537509496907005"><ph name="APP_COUNT" /> апликации</translation>
@@ -7171,6 +7196,7 @@
 <translation id="7766807826975222231">Направете разгледување</translation>
 <translation id="7766838926148951335">Прифати ги дозволите</translation>
 <translation id="7767554953520855281">Деталите се сокриени додека го споделувате екранот</translation>
+<translation id="7767972280546034736">Создајте криптографски клуч за <ph name="APP_NAME" /></translation>
 <translation id="7768507955883790804">Сајтовите автоматски ја следат оваа поставка кога ги посетувате</translation>
 <translation id="7768526219335215384"><ph name="ORIGIN" /> ќе може да ги прегледува датотеките во <ph name="FOLDERNAME" /></translation>
 <translation id="7768770796815395237">Промени</translation>
@@ -7655,6 +7681,7 @@
 <translation id="820568752112382238">Најпосетувани веб-сајтови</translation>
 <translation id="8206745257863499010">Блузист</translation>
 <translation id="8206859287963243715">Мобилен</translation>
+<translation id="8207404892907560325">Изберете криптографски клуч</translation>
 <translation id="8208216423136871611">Не зачувувај</translation>
 <translation id="8210398899759134986">{MUTED_NOTIFICATIONS_COUNT,plural, =1{Ново известување}one{# ново известување}other{# нови известувања}}</translation>
 <translation id="821119981794423735">За да увезете лозинки на Google Password Manager за <ph name="USER_EMAIL" />, изберете датотека CSV</translation>
@@ -7831,6 +7858,7 @@
 <translation id="8376137163494131156">Кажете ни што се случува со Google Cast.</translation>
 <translation id="8376384591331888629">Вклучувајќи колачиња од трети страни</translation>
 <translation id="8376451933628734023">Ако веб-апликацијава се обидува да ве измами да мислите дека е друга апликација, деинсталирајте ја.</translation>
+<translation id="8377625247046155446">Криптографскиов клуч ќе се зачува само на уредов. Ќе остане на уредов откако ќе ги затворите сите прозорци „Инкогнито“.</translation>
 <translation id="8378714024927312812">Управувано од вашата организација</translation>
 <translation id="8379156816349755485">По најавување, ќе се зачува уникатен токен за проверка што ќе се користи за сите идни подобни преземања.</translation>
 <translation id="8379878387931047019">Уредов не го поддржува типот на безбедносен клуч што го бара веб-страницава</translation>
@@ -8039,6 +8067,7 @@
 <translation id="859246725979739260">Пристапот до вашата локација е блокиран за сајтов.</translation>
 <translation id="8593121833493516339">Испраќајте податоци за користење и дијагностика. Помогнете ни да го подобриме искуството на вашето дете со Android со автоматско испраќање дијагностички и податоци за користењето на уредот и апликациите до Google. Овие податоци нема да се користат за идентификација на вашето дете, а ќе ни помогнат околу стабилноста на системот и апликациите и за други подобрувања. Некои збирни податоци ќе им помогнат на апликациите и партнерите на Google, како што се програмерите на Android. Ако сте ја вклучиле дополнителната „Активност на интернет и апликации“ за вашето дете, овие податоци може да се зачувуваат во сметката на Google на детето. <ph name="BEGIN_LINK1" />Дознајте повеќе<ph name="END_LINK1" /></translation>
 <translation id="8596540852772265699">Приспособени датотеки</translation>
+<translation id="8597404194697561297">Добре дојдовте на Steam на Chromebook</translation>
 <translation id="8597845839771543242">Формат на својството:</translation>
 <translation id="8599681327221583254">Едно или повеќе правила не се правилно конфигурирани. Контактирајте со администраторот</translation>
 <translation id="8599864823732014237">Да се прескокне регистрирањето претпријатие?</translation>
@@ -8654,6 +8683,7 @@
       <ph name="LIST_ITEM" />да извршите проверка преку „Дијагностика за поврзливост на Chrome“
     <ph name="END_LIST" /></translation>
 <translation id="916607977885256133">Слика во слика</translation>
+<translation id="9166253503936244008">Скенирајте го QR-кодов со уредот каде што се наоѓа криптографскиот клуч што сакате да го користите за <ph name="APP_NAME" /></translation>
 <translation id="9167063903968449027">Прикажи го списокот за читање</translation>
 <translation id="9167450455589251456">Профилот не е поддржан</translation>
 <translation id="9168436347345867845">Остави за подоцна</translation>
diff --git a/chrome/app/resources/generated_resources_ml.xtb b/chrome/app/resources/generated_resources_ml.xtb
index 3c84040..66c2745c 100644
--- a/chrome/app/resources/generated_resources_ml.xtb
+++ b/chrome/app/resources/generated_resources_ml.xtb
@@ -1121,6 +1121,7 @@
 <translation id="2034346955588403444">മറ്റൊരു WiFi നെറ്റ്‌വർക്ക് ചേർക്കുക</translation>
 <translation id="2035211704574173780">ഗ്രേസ്‌കെയിൽ</translation>
 <translation id="203574396658008164">ലോക്ക് സ്‌ക്രീനിൽ നിന്ന് കുറിപ്പെടുക്കുന്നത് പ്രവർത്തനക്ഷമമാക്കുക</translation>
+<translation id="2036514476578229158">നിങ്ങൾ ഈ സൈറ്റ് സന്ദർശിക്കാൻ ആവശ്യപ്പെട്ടു. നിങ്ങളുടെ രക്ഷിതാക്കൾക്ക് Family Link-ൽ മറുപടി നൽകാം.</translation>
 <translation id="2037445849770872822">ഈ Google അക്കൗണ്ടിനായി മേൽനോട്ടം സജ്ജീകരിച്ചു. കൂടുതൽ രക്ഷാകർതൃ നിയന്ത്രണങ്ങൾ സജ്ജീകരിക്കാൻ 'തുടരുക' തിരഞ്ഞെടുക്കുക.
 
 അല്ലെങ്കിൽ, ഇപ്പോൾ സൈൻ ഔട്ട് ചെയ്യുന്നതിലൂടെ ഈ അക്കൗണ്ടിൽ വരുത്തിയ മാറ്റങ്ങൾ ഈ ഉപകരണത്തിൽ പ്രതിഫലിക്കും.
@@ -1242,6 +1243,7 @@
 <translation id="2135787500304447609">&amp;പുനരാരംഭിക്കുക</translation>
 <translation id="2136372518715274136">പുതിയ പാസ്‌വേഡ് നൽകുക</translation>
 <translation id="2136476978468204130">നിങ്ങള്‍ നല്‍കിയ പാസ്ഫ്രേസ് തെറ്റാണ്</translation>
+<translation id="2137891579555018930">അനുമതിക്കായി കാത്തിരിക്കുന്നു...</translation>
 <translation id="2138398485845393913">"<ph name="DEVICE_NAME" />" എന്നതിലേക്കുള്ള കണക്ഷൻ ഇപ്പോഴും പുരോഗതിയിലാണ്</translation>
 <translation id="2139919072249842737">സജ്ജീകരണ ബട്ടൺ</translation>
 <translation id="2140788884185208305">ബാറ്ററിയുടെ പ്രവർത്തനക്ഷമത</translation>
@@ -4127,6 +4129,7 @@
 <translation id="4858913220355269194">ഫ്രിറ്റ്‌സ്</translation>
 <translation id="4862642413395066333">OCSP പ്രതികരണങ്ങള്‍‌ സൈന്‍‌ ചെയ്യുന്നു</translation>
 <translation id="4863769717153320198"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (ഡിഫോൾട്ട്) പോലെ തോന്നുന്നു</translation>
+<translation id="486459320933704969">നിങ്ങൾക്ക് ഈ വെബ്സൈറ്റ് സന്ദർശിക്കാമെന്ന് രക്ഷിതാവോ നിയമപരമായ പ്രതിനിധിയോ പറയേണ്ടതുണ്ട്</translation>
 <translation id="4864805589453749318">സ്‌കൂൾ അക്കൗണ്ട് ചേർക്കാനുള്ള അനുമതി നൽകുന്ന രക്ഷിതാവിനെ തിരഞ്ഞെടുക്കുക.</translation>
 <translation id="486635084936119914">ചില ഫയൽ തരങ്ങളെ ഡൗൺലോഡ് ചെയ്‌ത ശേഷം സ്വയം തുറക്കുക</translation>
 <translation id="4868281708609571334"><ph name="SUPERVISED_USER_NAME" /> എന്നയാളുടെ ശബ്‌ദം തിരിച്ചറിയാൻ Google Assistant-നെ പഠിപ്പിക്കുക</translation>
@@ -8709,6 +8712,7 @@
 <translation id="947329552760389097">&amp;ഘടകങ്ങൾ പരിശോധിക്കുക</translation>
 <translation id="947526284350604411">നിങ്ങളുടെ ഉത്തരം</translation>
 <translation id="947667444780368238">സിസ്‌റ്റം ഫയലുകൾ അടങ്ങിയിരിക്കുന്നതിനാൽ <ph name="ORIGIN" /> എന്നതിന് ഈ ഫോൾഡറിലെ ഫയലുകൾ തുറക്കാനാകില്ല</translation>
+<translation id="949314938206378263">നിങ്ങൾ ഈ സൈറ്റ് സന്ദർശിക്കാൻ ആവശ്യപ്പെട്ടു. നിങ്ങളുടെ രക്ഷിതാവിന് Family Link-ൽ മറുപടി നൽകാം.</translation>
 <translation id="950307215746360464">ഗൈഡ് സജ്ജീകരിക്കുക</translation>
 <translation id="951991426597076286">നിരസിക്കുക</translation>
 <translation id="952471655966876828">ഉപകരണം ഓണാക്കിയിരിക്കുമ്പോഴും ഉപയോഗത്തിലായിരിക്കുമ്പോഴും സ്വയമേവ കണക്റ്റ് ചെയ്യും</translation>
diff --git a/chrome/app/resources/generated_resources_mn.xtb b/chrome/app/resources/generated_resources_mn.xtb
index 9a9d1a8..82b65728 100644
--- a/chrome/app/resources/generated_resources_mn.xtb
+++ b/chrome/app/resources/generated_resources_mn.xtb
@@ -1130,6 +1130,7 @@
 <translation id="2034346955588403444">Бусад WiFi сүлжээ нэмэх</translation>
 <translation id="2035211704574173780">Саарал</translation>
 <translation id="203574396658008164">Тэмдэглэл бичих аппыг түгжигдсэн дэлгэцээс идэвхжүүлэх</translation>
+<translation id="2036514476578229158">Та энэ сайтад зочлохыг хүссэн. Таны эцэг эх Family Link-д хариу бичих боломжтой.</translation>
 <translation id="2037445849770872822">Энэ Google Бүртгэлд зориулж хяналтыг тохируулсан. Эцэг эхийн бусад хяналтыг тохируулахын тулд Үргэлжлүүлэхийг сонгоно уу.
 
 Бусад тохиолдолд энэ бүртгэлд хийсэн өөрчлөлтийг энэ төхөөрөмж дээр тусгахын тулд одоо гарна уу.
@@ -1251,6 +1252,7 @@
 <translation id="2135787500304447609">&amp; Сэргээн үргэлжүүлэх</translation>
 <translation id="2136372518715274136">Шинэ нууц үг оруулна уу</translation>
 <translation id="2136476978468204130">Таны оруулсан нэвтрэх үг буруу байна</translation>
+<translation id="2137891579555018930">Зөвшөөрөл хүлээж байна...</translation>
 <translation id="2138398485845393913">"<ph name="DEVICE_NAME" />" руу холбогдож байна</translation>
 <translation id="2139919072249842737">Тохируулах товчлуур</translation>
 <translation id="2140788884185208305">Батарейн барилт</translation>
@@ -4140,6 +4142,7 @@
 <translation id="4858913220355269194">Fritz</translation>
 <translation id="4862642413395066333">OCSP хариултууд руу нэвтэрч байна</translation>
 <translation id="4863769717153320198"><ph name="WIDTH" /> x <ph name="HEIGHT" /> юм шиг харагдаж байна (Өгөгдмөл)</translation>
+<translation id="486459320933704969">Эцэг эх эсвэл асран хамгаалагч таныг энэ вебсайтад зочилж БОЛНО гэж хэлэх ёстой</translation>
 <translation id="4864805589453749318">Сургуулийн бүртгэл нэмэх зөвшөөрөл олгож буй эцэг эхээ сонгоно уу.</translation>
 <translation id="486635084936119914">Татаж авсны дараа тодорхой файлын хэлбэрийг автоматаар нээх</translation>
 <translation id="4868281708609571334">Google Туслахад <ph name="SUPERVISED_USER_NAME" />-н дуу хоолойг танихыг зааж өгөх</translation>
@@ -8716,6 +8719,7 @@
 <translation id="947329552760389097">&amp;Элементүүдийг шалгах</translation>
 <translation id="947526284350604411">Tаны хариулт</translation>
 <translation id="947667444780368238">Энэ фолдер системийн файл агуулдаг тул <ph name="ORIGIN" /> үүний файлыг нээх боломжгүй</translation>
+<translation id="949314938206378263">Та энэ сайтад зочлохыг хүссэн. Таны эцэг эх Family Link-д хариу бичих боломжтой.</translation>
 <translation id="950307215746360464">Тохируулгын хөтөч</translation>
 <translation id="951991426597076286">Татгалзах</translation>
 <translation id="952471655966876828">Төхөөрөмж асаалттай эсвэл ашиглагдах үедээ автоматаар холбогдоно</translation>
diff --git a/chrome/app/resources/generated_resources_mr.xtb b/chrome/app/resources/generated_resources_mr.xtb
index a34bb6bb..6704e291 100644
--- a/chrome/app/resources/generated_resources_mr.xtb
+++ b/chrome/app/resources/generated_resources_mr.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="mr">
 <translation id="1001033507375626788">हे नेटवर्क तुमच्यासोबत शेअर केले आहे</translation>
+<translation id="1002085272681738789">टॅब पुन्हा अ‍ॅक्टिव्ह केला आहे</translation>
 <translation id="1003088604756913841">लिंक नवीन <ph name="APP" /> विंडोमध्ये उघडा</translation>
 <translation id="100323615638474026">USB डिव्हाइस (<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />)</translation>
 <translation id="1004218526896219317">साइट अ‍ॅक्सेस</translation>
@@ -323,6 +324,7 @@
 <translation id="1296911687402551044">निवडलेला टॅब पिन करा</translation>
 <translation id="1297175357211070620">गंतव्य</translation>
 <translation id="129770436432446029"><ph name="EXPERIMENT_NAME" /> विषयी फीडबॅक पाठवा</translation>
+<translation id="130097046531636712">हे बॅकग्राउंड अ‍ॅक्टिव्हिटी आणि सहजपणे होणारे स्क्रोलिंग यांसारखे व्हिज्युअल इफेक्ट मर्यादित ठेवून बॅटरीची पॉवर वाढवते</translation>
 <translation id="1301135395320604080"><ph name="ORIGIN" /> खालील फाइल संपादित करू शकते</translation>
 <translation id="1302227299132585524">Apple इव्हेंट वरून JavaScript ला अनुमती द्या</translation>
 <translation id="1303101771013849280">HTML फाईल बुकमार्क करते</translation>
@@ -381,6 +383,7 @@
 <translation id="1361655923249334273">न वापरलेले</translation>
 <translation id="1362865166188278099">यांत्रिकी समस्या. प्रिंटर तपासा</translation>
 <translation id="1363585519747660921">USB प्रिंटर कॉंफिगर करणे आवश्यक आहे</translation>
+<translation id="136378536198524553">एनर्जी सेव्हर सुरू आहे</translation>
 <translation id="1368603372088757436">Linux ला तुमच्या <ph name="DEVICE_TYPE" /> वर सपोर्ट नाही. <ph name="LINK_BEGIN" />अधिक जाणून घ्या<ph name="LINK_END" /></translation>
 <translation id="1372841398847029212">तुमच्या खात्याशी सिंक करा</translation>
 <translation id="1373176046406139583">तुमची स्क्रीन अनलॉक केलेली असताना तुमच्यासोबत कोण शेअर करू शकते हे तुमच्या डिव्हाइसची दृश्यमानता नियंत्रित करते. <ph name="LINK_BEGIN" />अधिक जाणून घ्या<ph name="LINK_END" /></translation>
@@ -650,6 +653,7 @@
 <translation id="1610272688494140697">ॲप सेटिंग्ज</translation>
 <translation id="161042844686301425">निळसर</translation>
 <translation id="1611432201750675208">तुमचे डिव्हाइस लॉक केले आहे</translation>
+<translation id="1611776894942218234">डिव्हाइस हे बीटा चॅनल मध्ये असणे आवश्यक आहे</translation>
 <translation id="1612019740169791082">तुमचा कंटेनर डिस्कचा आकार बदलण्यास सपोर्ट करण्यासाठी कॉन्फिगर केलेला नाही. Linux साठी आरक्षित केलेल्या जागेचे प्रमाण अ‍ॅडजस्ट करण्यासाठी, बॅक अप घ्या आणि त्यानंतर नवीन कंटेनरमध्ये रिस्टोअर करा.</translation>
 <translation id="1613019471223620622"><ph name="DOMAIN" /> वरील <ph name="USERNAME" /> साठीचा पासवर्ड दाखवा</translation>
 <translation id="1613149688105334014">Chrome अ‍ॅप्स च्या जुन्या आवृत्त्या डिसेंबर २०२२ नंतर उघडणार नाहीत. नवीन आवृत्ती उपलब्ध आहे का ते तुम्ही तपासू शकता.</translation>
@@ -1214,6 +1218,7 @@
 <translation id="2098805196501063469">शिल्लक पासवर्ड तपासा</translation>
 <translation id="2099686503067610784">सर्व्हर सर्टिफिकेट "<ph name="CERTIFICATE_NAME" />" हटवायचे?</translation>
 <translation id="2100273922101894616">ऑटो साइन इन करा</translation>
+<translation id="2100986609271491802">हे डिव्हाइस सध्या Chromebook वर Steam ला सपोर्ट करत नाही</translation>
 <translation id="2101225219012730419">आवृत्ती:</translation>
 <translation id="2102396546234652240">साइटना तुमचा मायक्रोफोन वापरण्याची अनुमती देऊ नका</translation>
 <translation id="2102495993840063010">Android अ‍ॅप्स</translation>
@@ -1512,6 +1517,9 @@
 <translation id="2350133097354918058">रीलोड केलेले</translation>
 <translation id="2350182423316644347">ॲप्लिकेशन सुरू करत आहे...</translation>
 <translation id="235028206512346451">तुम्ही तुमच्या डिव्हाइसपासून दूर गेल्यास, तुमची स्क्रीन आपोआप लॉक होईल. तुम्ही तुमच्या डिव्हाइससमोर असता, तेव्हा तुमची स्क्रीन जास्त वेळ सुरू राहील. तुम्ही लॉक स्‍क्रीन वापरत नसल्यास, तुमचे डिव्हाइस लॉक होण्याऐवजी स्लीप मोडवर जाईल.</translation>
+<translation id="2350866610930767288"><ph name="BEGIN_PARAGRAPH1" />डेमो मोड च्या इंस्टॉलेशनदरम्यान तुम्हाला रिटेलर-स्टोअर आयडी कोड एंटर करण्याशी संबंधित सूचना मिळाल्यास, कृपया तो उजवीकडे एंटर करा*.  अन्यथा, तुम्ही हे फील्ड रिक्त ठेवून पुढे सुरू ठेवू शकता.<ph name="END_PARAGRAPH1" />
+    <ph name="BEGIN_PARAGRAPH2" />तुम्ही कोडशिवाय तरीही डेमो मोड इंस्टॉल करू शकाल, पण हा कोड तुमच्या स्टोअरला लागू होत असल्यास तो एंटर करणे महत्त्वाचे आहे.<ph name="END_PARAGRAPH2" />
+    <ph name="BEGIN_PARAGRAPH3" />*टीप: डिव्हाइसला डेमो मोडची कोणती आवृत्ती मिळावी हे ओळखण्यासाठी आणि डेमो मोडच्या वापराचे मापन करण्यासाठी Google हे कोड वापरते.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="2352495879228166246">{NUM_ITEMS,plural, =1{एक आयटम}other{{NUM_ITEMS} आयटम}}</translation>
 <translation id="2352662711729498748">&lt; 1 MB</translation>
 <translation id="2352810082280059586">लॉक स्‍क्रीन नोट <ph name="LOCK_SCREEN_APP_NAME" /> वर आपोआप सेव्ह केल्या जातात. तुमची सर्वात अलीकडील नोट लॉक स्‍क्रीनवर राहील.</translation>
@@ -1962,6 +1970,7 @@
 <translation id="2776560192867872731"><ph name="DEVICE_NAME" /> या डिव्हाइसचे नाव बदला</translation>
 <translation id="2777251078198759550">हा कंटेनर हटवा</translation>
 <translation id="2778471504622896352">ChromeOS लाँचरमध्ये रिमोट अ‍ॅप्स जोडा</translation>
+<translation id="2781120507965857989">तुमचे बुकमार्क, पासवर्ड, इतिहास आणि बरेच काही या डिव्हाइसवर व तुम्ही सिंक करत असलेल्या इतरत्र मिळवण्यासाठी सिंक सुरू करा. Search आणि इतर Google सेवा पर्सनलाइझ करण्यासाठी Google तुमचा इतिहास वापरू शकते.</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2782104745158847185">Linux ॲप्लिकेशन इंस्टॉल करताना एरर आली</translation>
 <translation id="2783298271312924866">डाउनलोड केलेले</translation>
@@ -1982,6 +1991,7 @@
 <translation id="2792697226874849938">निर्बंधाशी संबंधित इमेज</translation>
 <translation id="2794233252405721443">साइट ब्लॉक केली</translation>
 <translation id="2794522004398861033">eSIM सेट करण्यासाठी वाय-फायशी किंवा इथरनेटशी कनेक्ट करा</translation>
+<translation id="2795074478966352573">Family Link द्वारे व्यवस्थापित केलेल्या खात्यांना अद्याप सपोर्ट नाही</translation>
 <translation id="2795716239552913152">संबंधित वैशिष्ट्ये किंवा स्थानिक बातम्या अथवा जवळपासची दुकाने यांसारख्या माहितीसाठी साइट सामान्यपणे तुमचे स्थान वापरतात</translation>
 <translation id="2796424461616874739">Authentication timeout while connecting to "<ph name="DEVICE_NAME" />".</translation>
 <translation id="2796740370559399562">कुकीजना अनुमती देणे सुरू ठेवा</translation>
@@ -2167,6 +2177,7 @@
 <translation id="2949289451367477459">स्‍थान वापरा. स्थान परवानगी असलेल्या अ‍ॅप्स आणि सेवांना या डिव्हाइसचे स्थान वापरण्याची अनुमती द्या. Google अधूनमधून स्थान डेटा गोळा करू शकते आणि स्थान अचूकता व स्थानावर आधारित सेवांमध्ये सुधारणा करण्यासाठी हा डेटा निनावी वापरू शकते. <ph name="BEGIN_LINK1" />अधिक जाणून घ्या<ph name="END_LINK1" /></translation>
 <translation id="2950666755714083615">मला साइन अप करा</translation>
 <translation id="2953019166882260872">तुमचा फोन केबलने कनेक्ट करा</translation>
+<translation id="2953218713108551165"><ph name="SITE" /> साठी सूचनांना अनुमती नाही. तुमच्या पुढील भेटीच्या वेळी पुन्हा विचारले जाईल.</translation>
 <translation id="2956070239128776395">गटामध्ये विभाग नेस्ट केले: <ph name="ERROR_LINE" /></translation>
 <translation id="2958721676848865875">पॅक एक्स्टेंशन चेतावणी</translation>
 <translation id="2959127025785722291">काहीतरी चूक झाली. स्कॅनिंग पूर्ण करता आले नाही. कृपया पुन्हा प्रयत्न करा.</translation>
@@ -2875,6 +2886,7 @@
 <translation id="3665919494326051362">सध्याची आवृत्ती <ph name="CURRENT_VERSION" /> ही आहे</translation>
 <translation id="3670113805793654926">कोणत्याही विक्रेत्याकडील डिव्हाइस</translation>
 <translation id="3670229581627177274">ब्लूटूथ सुरू करा</translation>
+<translation id="3672663996348587094">"<ph name="EXTENSIONS_REQUESTING_ACCESS" />" ला <ph name="ORIGIN" /> वर अनुमती देण्यासाठी क्लिक करा:</translation>
 <translation id="3672681487849735243">एक फॅक्टरी एरर शोधली गेली</translation>
 <translation id="3673097791729989571">साइन इन करणे <ph name="SAML_DOMAIN" /> द्वारे होस्ट केले आहे</translation>
 <translation id="3673622964532248901">तुम्हाला या डिव्हाइसवर कास्ट करण्याची अनुमती नाही.</translation>
@@ -3388,6 +3400,7 @@
 <translation id="4132183752438206707">Google Play Store वर अ‍ॅप्स शोधा</translation>
 <translation id="4132364317545104286">eSIM प्रोफाइलचे नाव बदला</translation>
 <translation id="4133076602192971179">तुमचा पासवर्ड बदलण्यासाठी अ‍ॅप उघडा</translation>
+<translation id="4134818201340504801">सेटअप पूर्ण करण्यासाठी पुरेसे स्टोरेज उपलब्ध नाही. कृपया स्टोरेज मोकळे करा आणि पुन्हा प्रयत्न करा</translation>
 <translation id="4135746311382563554">Google Chrome आणि ChromeOS अतिरिक्त सेवा अटी</translation>
 <translation id="4136203100490971508">सूर्योदयाच्या वेळी रात्रीचा प्रकाश आपोआप बंद होईल</translation>
 <translation id="41365691917097717">सुरू ठेवल्याने Android अ‍ॅप्स तयार करण्यासाठी आणि त्यांची चाचणी घेण्यासाठी ADB डीबगिंग सुरू केले जाईल. लक्षात घ्या की, ही कृती Google ने पडताळणी न केलेली Android ॲप्स इंस्टॉल करू देते आणि बंद करण्यासाठी फॅक्टरी रीसेटची आवश्यकता आहे.</translation>
@@ -3624,6 +3637,7 @@
 <translation id="4378556263712303865">डीव्हाइसची मागणी</translation>
 <translation id="4379281552162875326">"<ph name="APP_NAME" />" अनइंस्टॉल करायचे?</translation>
 <translation id="4380648069038809855">फुल स्क्रीनमध्ये प्रवेश केला आहे</translation>
+<translation id="4383048856908088702">हा टॅब निष्क्रिय असताना, मेमरी सेव्हरने इतर टास्कसाठी <ph name="MEMORY_VALUE" /> मेमरी मोकळी केली. तुम्ही हे <ph name="SETTINGS_LINK" /> मध्ये कधीही बदलू शकता.</translation>
 <translation id="4384312707950789900">प्राधान्यीकृतमध्‍ये जोडा</translation>
 <translation id="4384652540891215547">एक्स्टेंशन सुरू करा</translation>
 <translation id="4384886290276344300">कीबोर्ड सेटिंग्ज बदला</translation>
@@ -3701,6 +3715,7 @@
 <translation id="4451479197788154834">तुमचा पासवर्ड या डिव्हाइसवर आणि तुमच्या Google खाते मध्ये सेव्ह केला गेला</translation>
 <translation id="4451757071857432900">अनाहूत किंवा दिशाभूल करणाऱ्या जाहिराती दाखवणाऱ्या साइटवर ब्लॉक केले (शिफारस केलेले)</translation>
 <translation id="4453946976636652378"><ph name="SEARCH_ENGINE_NAME" /> वर शोधा किंवा URL टाइप करा</translation>
+<translation id="4458535500699390320">हा टॅब निष्क्रिय असताना, मेमरी सेव्हरने इतर टास्कसाठी मेमरी मोकळी केली. तुम्ही सेटिंग्जमध्ये हे कधीही बदलू शकता.</translation>
 <translation id="4459169140545916303"><ph name="DEVICE_LAST_ACTIVATED_TIME" /> दिवसांपूर्वी ॲक्टिव्ह होते</translation>
 <translation id="4460014764210899310">गटामधून काढून टाका</translation>
 <translation id="4462159676511157176">कस्टम नाव सर्व्हर</translation>
@@ -3873,6 +3888,7 @@
 <translation id="4613271546271159013">तुम्ही नवीन टॅब उघडता तेव्हा कोणते पेज दर्शविले जाते हे एक्स्टेंशनने बदलले आहे.</translation>
 <translation id="4615586811063744755">कोणत्याही कुकीज निवडलेल्या नाही</translation>
 <translation id="461661862154729886">ऊर्जा स्रोत</translation>
+<translation id="461676224702246336">या साइटसाठी क्लिक करून ॲक्सेस करा</translation>
 <translation id="4617001782309103936">खूपच लहान</translation>
 <translation id="4617019240346358451">"<ph name="EXTENSION_NAME" />" वापरण्यासाठी पेज रीलोड करा</translation>
 <translation id="4617270414136722281">एक्स्टेंशन पर्याय</translation>
@@ -3995,6 +4011,7 @@
 <translation id="4728558894243024398">प्लॅटफॉर्म</translation>
 <translation id="4728570203948182358"><ph name="BEGIN_LINK" />तुमचा अ‍ॅडमिनिस्ट्रेटर<ph name="END_LINK" /> याने हानिकारक सॉफ्टवेअर तपासणे बंद केले आहे</translation>
 <translation id="4730492586225682674">लॉक स्क्रीनवर स्टायलस नवीनतम टीप</translation>
+<translation id="4730888769809690665"><ph name="SITE" /> साठी सूचनांना अनुमती आहे</translation>
 <translation id="473140019006744096">हे अपडेट पूर्ण करण्यासाठी, या डिव्हाइसवर पुरेशी जागा नाही. तुमच्या डिव्हाइसवर <ph name="NECESSARY_SPACE" /> साफ करा आणि पुन्हा प्रयत्न करा.</translation>
 <translation id="4733161265940833579"><ph name="BATTERY_PERCENTAGE" />% (शिल्लक)</translation>
 <translation id="4733793249294335256">स्थान</translation>
@@ -4297,6 +4314,7 @@
 <translation id="5032430150487044192">QR कोड तयार करता आला नाही</translation>
 <translation id="5033137252639132982">मोशन सेन्सर वापरण्याची अनुमती नाही</translation>
 <translation id="5033266061063942743">भूमितीय आकार</translation>
+<translation id="5034000993065629381">कृपया तुमच्या अ‍ॅडमिनिस्ट्रेटरशी संपर्क साधा</translation>
 <translation id="5037676449506322593">सर्व निवडा</translation>
 <translation id="5038818366306248416">तुम्ही पूर्वी <ph name="ORIGIN" /> वर सर्व एक्स्टेंशनना अनुमती न देणे निवडले आहे</translation>
 <translation id="5039696241953571917">तुमच्या Google खाते मध्ये सेव्ह केलेले पासवर्ड पहा आणि व्यवस्थापित करा</translation>
@@ -4427,6 +4445,7 @@
 <translation id="5161251470972801814"><ph name="VENDOR_NAME" /> कडील USB डिव्हाइस</translation>
 <translation id="5162905305237671850"><ph name="DEVICE_TYPE" /> ला ब्लॉक केले आहे</translation>
 <translation id="5163910114647549394">टॅब टॅबस्ट्रिपच्या शेवटी हलवला आहे</translation>
+<translation id="5164530241085602114"><ph name="SITE" /> साठी सूचनांना अनुमती नाही</translation>
 <translation id="516747639689914043">हायपरटेक्स्ट ट्रान्सपोर्ट प्रोटोकॉल (HTTP)</translation>
 <translation id="5170568018924773124">फोल्डरमध्ये दर्शवा</translation>
 <translation id="5171045022955879922">URL शोधा किंवा टाइप करा</translation>
@@ -4529,6 +4548,7 @@
 <translation id="5269977353971873915">प्रिंट अयशस्वी</translation>
 <translation id="5273806377963980154">साइटची URL संपादित करा</translation>
 <translation id="5275084684151588738">वापरकर्ता शब्दकोश</translation>
+<translation id="5275100789567222478">माझी बॅटरी <ph name="PERCENT" />% किंवा कमी असेल, तेव्हाच सुरू करा</translation>
 <translation id="5275338516105640560">सेव्ह केलेला टॅब गट हे बटण</translation>
 <translation id="5275352920323889391">कुत्रा</translation>
 <translation id="527605719918376753">टॅब म्यूट करा</translation>
@@ -4547,6 +4567,7 @@
 <translation id="5285635972691565180">डिस्‍प्‍ले <ph name="DISPLAY_ID" /></translation>
 <translation id="5286194356314741248">स्‍कॅन करीत आहे</translation>
 <translation id="5287425679749926365">तुमची खाती</translation>
+<translation id="5288106344236929384"><ph name="DOMAIN" /> वर <ph name="USERNAME" /> साठी आणखी कृती, पासकी पर्याय</translation>
 <translation id="5288678174502918605">बंद केलेले टॅब पु&amp;न्हा उघडा</translation>
 <translation id="52895863590846877">पेज <ph name="LANGUAGE" /> मध्ये नाही</translation>
 <translation id="52912272896845572">प्रायव्हेट की फाइल चुकीची आहे.</translation>
@@ -4742,6 +4763,7 @@
 <translation id="5473099001878321374">पुढे सुरू ठेवून, तुम्ही सहमती दर्शवता, की हे डिव्हाइस कदाचित मोबाइल डेटा वापरून Google, तुमच्या लहान मुलाचा वाहक आणि या डिव्हाइसचा उत्पादक यांच्याकडून अपडेट व अ‍ॅप्स आपोआप डाउनलोड आणि इंस्टॉलदेखील करू शकेल. यांपैकी काही अ‍ॅप्स अ‍ॅपमधील खरेदी करण्याचा पर्याय देऊ शकतात.</translation>
 <translation id="5473156705047072749">{NUM_CHARACTERS,plural, =1{पिन हा किमान एका वर्णाचा असणे आवश्यक आहे}other{पिन हा किमान # वर्णांचा असणे आवश्यक आहे}}</translation>
 <translation id="5474859849784484111"><ph name="MANAGER" /> नुसार तुम्ही आता वाय-फायशी कनेक्ट करून अपडेट डाउनलोड करणे आवश्यक आहे. किंवा मर्यादित कनेक्शनमधून डाउनलोड करा (शुल्क लागू शकते).</translation>
+<translation id="5476016146231427848">Chromebook वर Steam वापरण्यासाठी कृपया तुमचे डिव्हाइस रीस्टार्ट करा</translation>
 <translation id="5481273127572794904">एकाहून अधिक फाइल आपोआप डाउनलोड करण्याची अनुमती नाही</translation>
 <translation id="5481941284378890518">जवळपासचे प्रिंटर जोडा</translation>
 <translation id="5483785310822538350">फाइल आणि डिव्हाइस ॲक्सेस रद्द करा</translation>
@@ -4961,6 +4983,7 @@
 <translation id="5683806393796685434">कृपया तुमचा अ‍ॅक्टिव्हेशन कोड एंटर करा</translation>
 <translation id="5684181005476681636">वाय-फायचे तपशील</translation>
 <translation id="5684661240348539843">मालमत्ता अभिज्ञापक</translation>
+<translation id="5684969244627829799">कृपया वापरकर्ता खात्यामध्ये साइन इन करा आणि पुन्हा प्रयत्न करा</translation>
 <translation id="5687326903064479980">टाइमझोन</translation>
 <translation id="5687935527303996204">तुमचे डिव्हाइस प्लग इन केले असल्याची खात्री करा आणि ते बंद करू नका. इंस्टॉलेशनला कमाल २० मिनिटे लागू शकतात. तुमचे डिव्हाइस इंस्टॉलेशन पूर्ण होईल तेव्हा, आपोआप बंद होईल.</translation>
 <translation id="5689516760719285838">स्थान</translation>
@@ -5087,6 +5110,7 @@
 <translation id="5805697420284793859">विंडो व्यवस्थापक</translation>
 <translation id="5806447147478173900">दाखवलेल्या साइटनी वापरलेले एकूण स्टोरेज: <ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">०° (डीफॉल्ट)</translation>
+<translation id="5810603387504252966">#borealis-enabled हे chrome://flags मध्ये सुरू करणे आवश्यक आहे</translation>
 <translation id="5810809306422959727">हे खाते पालक नियंत्रणांसाठी पात्र नाही</translation>
 <translation id="5811614940486072060">ही फाइल सामान्यतः डाउनलोड केली जात नाही आणि ती धोकादायक असू शकते</translation>
 <translation id="5812674658566766066">सर्व विस्‍तृत करा</translation>
@@ -5166,6 +5190,7 @@
 <translation id="5882449899683447569">काहीतरी चूक झाली आणि तुमचे पासवर्ड इंपोर्ट केले नाहीत</translation>
 <translation id="5882919346125742463">ज्ञात नेटवर्क</translation>
 <translation id="5883356647197510494">आपोआप ब्लॉक केलेले <ph name="PERMISSION_1" />, <ph name="PERMISSION_2" /></translation>
+<translation id="5884447826201752041">प्रत्येक एक्स्टेंशनसाठी कस्टमाइझ करा</translation>
 <translation id="5884474295213649357">हा टॅब USB डिव्हाइसशी कनेक्ट केला आहे.</translation>
 <translation id="5885314688092915589">तुमची संस्था ही प्रोफाइल व्यवस्थापित करेल</translation>
 <translation id="5886009770935151472">पहिले बोट</translation>
@@ -5606,6 +5631,7 @@
 <translation id="6301300352769835063"><ph name="DEVICE_OS" /> मध्ये सुधारणा करण्यात मदत करण्यासाठी Google ला तुमचा हार्डवेअर डेटा वापरू द्या. तुम्ही नकार दिल्यास, योग्य ती अपडेट निर्धारित करण्यासाठी हा डेटा तरीही Google ला पाठवला जातो, पण स्टोअर केला जात नाही किंवा इतरत्र वापरला जात नाही. g.co/flex/HWDataCollection येथे अधिक जाणून घ्या.</translation>
 <translation id="630292539633944562">वैयक्तिक माहिती सूचना</translation>
 <translation id="6305607932814307878">जागतिक धोरण:</translation>
+<translation id="6305909198255586420">कृपया तुमची प्राथमिक प्रोफाइल वापरून इंस्टॉल करा</translation>
 <translation id="6307990684951724544">सिस्‍टीम व्यस्त</translation>
 <translation id="6308493641021088955"><ph name="EXTENSION_NAME" /> ने पुरवलेले साइन इन</translation>
 <translation id="6308937455967653460">या फॉरमॅटमध्ये लिंक सेव्ह करा...</translation>
@@ -5927,6 +5953,7 @@
 <translation id="6608166463665411119">eSIM रीसेट करा</translation>
 <translation id="6609478180749378879">तुम्ही गुप्त मोड यामधून बाहेर पडल्यानंतर साइन इन डेटा या डिव्हाइसवर सेव्ह केला जाईल. तुम्हाला नंतर पुन्हा तुमचे डिव्हाइस वापरून या वेबसाइटवर साइन करता येईल.</translation>
 <translation id="6610002944194042868">भाषांतराचे पर्याय</translation>
+<translation id="6611907964265870728">कृपया तुमचे डिव्हाइस इंटरनेटशी कनेक्ट केलेले आहे याची खात्री करा</translation>
 <translation id="6611972847767394631">येथे तुमचे टॅब शोधा</translation>
 <translation id="6613668613087513143">हे अपडेट पूर्ण करण्यासाठी, या डिव्हाइसवर पुरेशी जागा नाही. तुमच्या डिव्हाइसवरील <ph name="NECESSARY_SPACE" /> साफ करा आणि Chrome ब्राउझरवरून पुन्हा प्रयत्न करा.</translation>
 <translation id="6615455863669487791">मला दर्शवा</translation>
@@ -6315,6 +6342,7 @@
 <translation id="697508444536771064">Linux बंद करा</translation>
 <translation id="6975361011348772931">रीड करण्याची आणि बदलण्याची विनंती केली आहे</translation>
 <translation id="6978121630131642226">शोध इंजिने</translation>
+<translation id="6979041727349121225">एनर्जी सेव्हर</translation>
 <translation id="6979044105893951891">लाँच करा आणि व्यवस्थापित केलेल्या अतिथी सत्रांमधून बाहेर पडा</translation>
 <translation id="6979158407327259162">Google Drive</translation>
 <translation id="6979440798594660689">निःशब्द करा (डीफॉल्ट)</translation>
@@ -6367,6 +6395,7 @@
 <translation id="7014174261166285193">स्थापना अयशस्वी.</translation>
 <translation id="7014480873681694324">हायलाइट काढून टाका</translation>
 <translation id="7014741021609395734">झूम करण्याची पातळी</translation>
+<translation id="7015088858756332848">Steam ही Chromebook वर लाँच करता आली नाही. कृपया पुन्हा प्रयत्न करा</translation>
 <translation id="7017004637493394352">पुन्हा "Ok Google" म्हणा</translation>
 <translation id="7017219178341817193">एक नवीन पृष्ठ जोडा</translation>
 <translation id="7017354871202642555">विंडो सेट केल्यानंतर मोड सेट करणे शक्य नाही.</translation>
@@ -6743,6 +6772,7 @@
 <translation id="7409854300652085600">बुकमार्क इंपोर्ट केली.</translation>
 <translation id="7410344089573941623"><ph name="HOST" /> तुमच्या कॅमेरा आणि मायक्रोफोन ॲक्सेस करू इच्छित असल्यास विचारा</translation>
 <translation id="7410852728357935715">डिव्हाइसवर कास्ट करा</translation>
+<translation id="7411614333737930931">कृपया तुमचे डिव्हाइस रीस्टार्ट करा आणि पुन्हा प्रयत्न करा</translation>
 <translation id="741204030948306876">होय, मला मान्य आहे</translation>
 <translation id="7412226954991670867">GPU मेमरी</translation>
 <translation id="7414464185801331860">१८x</translation>
@@ -6973,6 +7003,7 @@
 <translation id="7635048370253485243">तुमच्या अ‍ॅडमिनिस्ट्रेटरने पिन केले</translation>
 <translation id="7636919061354591437">या डिव्हाइसवर इंस्टॉल करा</translation>
 <translation id="7637253234491814483">तुमच्या कीबोर्डवरील सर्वात वरच्या उजव्या कोपऱ्यात, पॉवर बटणच्या शेजारी असलेल्या फिंगरप्रिंट सेन्सरला स्पर्श करा. तुमचा फिंगरप्रिंट डेटा सुरक्षितपणे स्टोअर केला आहे आणि तुमच्या <ph name="DEVICE_TYPE" /> मध्येच राहील.</translation>
+<translation id="7637272932128132922">हा टॅब निष्क्रिय असताना, मेमरी सेव्हरने इतर टास्कसाठी मेमरी मोकळी केली. तुम्ही हे <ph name="SETTINGS_LINK" /> मध्ये कधीही बदलू शकता.</translation>
 <translation id="7637593984496473097">डिस्कमध्ये पुरेशी जागा नाही</translation>
 <translation id="7639914187072011620">सर्व्हरवरून SAML रीडिरेक्ट URL मिळवता आली नाही</translation>
 <translation id="764017888128728">तुम्ही सेव्ह केलेल्या संकेतशब्दासह <ph name="PASSWORD_MANAGER_BRAND" /> स्वयंचलितपणे तुम्हाला पात्र असलेल्या साइटमध्ये साइन इन करते.</translation>
@@ -7089,6 +7120,7 @@
 <translation id="7728668285692163452">चॅनल बदल नंतर लागू होईल</translation>
 <translation id="7730449930968088409">तुमच्या स्क्रीनचा आशय कॅप्चर करा</translation>
 <translation id="7730683939467795481">हे पेज "<ph name="EXTENSION_NAME" />" एक्स्टेंशनने बदलले.</translation>
+<translation id="7735165285389721951">दुसरे Steam सेटअप रन होत आहे. पुन्हा प्रयत्न करण्यापूर्वी ते पूर्ण होण्याची प्रतीक्षा करा</translation>
 <translation id="7737115349420013392">"<ph name="DEVICE_NAME" />" सोबत पेअर करत आहे...</translation>
 <translation id="7737846262459425222">तुम्ही हे सेटिंग्ज &gt; Google Assistant &gt;स्क्रीन संदर्भ येथे कधीही बदलू शकता.</translation>
 <translation id="7737948071472253612">तुमचा कॅमेरा वापरण्याची अनुमती नाही</translation>
@@ -7385,6 +7417,7 @@
 की फाइल: <ph name="KEY_FILE" />
 
 तुमची की फाइल एका सुरक्षित ठिकाणी ठेवा. तुमच्या एक्स्टेंशनच्या नवीन आवृत्या तयार करण्यासाठी तुम्हाला त्याची आवश्यकता असेल.</translation>
+<translation id="8001100670809322641">कृपया काही मिनिटे थांबा आणि पुन्हा प्रयत्न करा</translation>
 <translation id="8002274832045662704">प्रगत प्रिंटर कॉंफिगरेशन</translation>
 <translation id="8002670234429879764"><ph name="PRINTER_NAME" /> यापुढे उपलब्ध असणार नाही</translation>
 <translation id="8004092996156083991">तुमचे पासवर्ड धोक्यात आले असल्यास, आम्ही तुम्हाला कळवू.</translation>
@@ -7394,6 +7427,7 @@
 <translation id="8008356846765065031">इंटरनेट डिस्कनेक्ट झाले. कृपया तुमचे इंटरनेट कनेक्शन तपासा.</translation>
 <translation id="8009225694047762179">पासवर्ड व्यवस्थापित करा</translation>
 <translation id="8011372169388649948">'<ph name="BOOKMARK_TITLE" />' हलवले.</translation>
+<translation id="8011875486979733097">Steam इंस्टॉल केली जाऊ शकत नाही</translation>
 <translation id="8012647001091218357">आम्ही याक्षणी आपल्या पालकांपर्यंत पोहोचू शकलो नाही. कृपया पुन्हा प्रयत्न करा.</translation>
 <translation id="8013993649590906847">इमेजचे उपयोगी वर्णन नसल्यास, Chrome तुमच्यासाठी ते देण्याचा प्रयत्न करेल. वर्णने तयार करण्यासाठी, इमेज Google ला पाठवल्या जातात.</translation>
 <translation id="8014154204619229810">अद्यतनकर्ता सध्या सुरू आहे. पुन्हा तपासण्यासाठी एक मिनिटात रिफ्रेश करा.</translation>
@@ -7484,6 +7518,7 @@
 <translation id="808894953321890993">पासवर्ड बदला</translation>
 <translation id="8090234456044969073">आपल्‍या सर्वाधिक वारंवार भेट दिलेल्‍या वेबसाइटची सूची वाचा</translation>
 <translation id="8090513782447872344">तुम्ही पुन्हा पाहण्यासाठी कधीही परत येऊ शकता</translation>
+<translation id="809312780580957751">Steam ही या डिव्हाइसवर इंस्टॉल केली जाऊ शकली नाही</translation>
 <translation id="8093359998839330381"><ph name="PLUGIN_NAME" /> प्रतिसाद देत नाही</translation>
 <translation id="8095105960962832018"><ph name="BEGIN_PARAGRAPH1" />Google ड्राइव्ह मध्ये बॅकअप घ्या. तुमचा डेटा कधीही सहजपणे रिस्टोअर करा किंवा डिव्हाइस बदला. तुमच्या बॅकअपमध्ये अ‍ॅप डेटाचा समावेश आहे.<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />तुमचे बॅकअप Google वर अपलोड केले आहेत आणि ते तुमचा Google खाते पासवर्ड वापरून एंक्रिप्ट केले आहेत.<ph name="END_PARAGRAPH2" />
@@ -7579,6 +7614,7 @@
 <translation id="8177318697334260664">{NUM_TABS,plural, =1{टॅब नवीन विंडोवर हलवा}other{टॅब नवीन विंडोवर हलवा}}</translation>
 <translation id="8179188928355984576">Android अ‍ॅप्ससोबत न वापरलेली</translation>
 <translation id="8179976553408161302">Enter</translation>
+<translation id="8180785270975217276">एनर्जी सेव्हर सुरू झाला आहे</translation>
 <translation id="8180786512391440389">"<ph name="EXTENSION" />" चेक केलेल्या स्थानांमधील इमेज, व्हिडिओ आणि ध्वनी फाइल वाचू आणि हटवू शकते.</translation>
 <translation id="8181215761849004992">डोमेनशी जोडू शकत नाही. तुम्हाला डिव्हाइस जोडण्याचे पुरेसे विशेषाधिकार आहेत का हे पाहण्यासाठी तुमचे खाते तपासा.</translation>
 <translation id="8182105986296479640">ॲप्लिकेशन प्रतिसाद देत नाही.</translation>
@@ -7701,6 +7737,7 @@
 <translation id="828642162569365647">हा पासवर्ड किंवा पिन या <ph name="DEVICE_TYPE" /> वरील तुमचा डेटा आणि तुम्ही तुमच्या फोनवरून ॲक्सेस केलेली कोणतीही माहिती संरक्षित करतो. प्रत्येक वेळी तुमचे <ph name="DEVICE_TYPE" /> सुरू झाल्यावर तुम्ही अनलॉक करणे आवश्यक आहे.</translation>
 <translation id="8287902281644548111">API कॉल/URL नुसार शोधा</translation>
 <translation id="8288032458496410887"><ph name="APP" /> अनइंस्टॉल करा...</translation>
+<translation id="8288539437195337464">तुमचे डिव्हाइस अप टू डेट असल्याची खात्री करा आणि पुन्हा प्रयत्न करा</translation>
 <translation id="8289128870594824098">डिस्कचा आकार</translation>
 <translation id="8289509909262565712"><ph name="DEVICE_OS" /> मध्ये तुमचे स्वागत आहे</translation>
 <translation id="8293206222192510085">बुकमार्क जोडा</translation>
@@ -7995,6 +8032,7 @@
 <translation id="8599864823732014237">एंटरप्राइझ नोंदणी वगळायची आहे करा?</translation>
 <translation id="8601206103050338563">TLS WWW क्लायंट ऑथेंटिकेशन</translation>
 <translation id="8601611099293226919">Google Lens वापरून तुमच्या स्क्रीनवरील गोष्टी शोधा</translation>
+<translation id="8602674530529411098">ॲप्स (बीटा)</translation>
 <translation id="8602851771975208551">तुमच्या कॉंप्युटरवरील दुसऱ्या प्रोग्रामने Chrome च्या काम करण्याचा मार्ग बदलू शकणारा अ‍ॅप जोडला.</translation>
 <translation id="8605428685123651449">SQLite मेमरी</translation>
 <translation id="8608618451198398104">Kerberos तिकीट जोडा</translation>
@@ -8257,6 +8295,7 @@
 <translation id="8838601485495657486">अपारदर्शक</translation>
 <translation id="8838770651474809439">हॅमबर्गर</translation>
 <translation id="8838778928843281408">फोन व्यवस्थापित करा</translation>
+<translation id="883924185304953854">इमेजनुसार शोधा</translation>
 <translation id="8841843049738266382">अनुमती दिलेल्या सूची मधील वापरकर्ते पहा आणि बदला</translation>
 <translation id="8842594465773264717">हे फिंगरप्रिंट हटवा</translation>
 <translation id="8845001906332463065">मदत मिळवा</translation>
@@ -8679,6 +8718,7 @@
 <translation id="939598580284253335">सांकेतिक पासफ्रेझ एंटर करा</translation>
 <translation id="939736085109172342">नवीन फोल्‍डर</translation>
 <translation id="942532530371314860"><ph name="APP_NAME" /> Chrome टॅब आणि ऑडिओ शेअर करीत आहे.</translation>
+<translation id="944799160843436808">Steam ही Chromebook वर सेट करताना समस्या आली</translation>
 <translation id="945522503751344254">अभिप्राय पाठवा</translation>
 <translation id="947329552760389097">&amp;तपासणी घटक</translation>
 <translation id="947526284350604411">तुमचे उत्तर</translation>
@@ -8703,6 +8743,7 @@
 <translation id="968000525894980488">Google Play सेवा सुरू करा.</translation>
 <translation id="968037381421390582">पेस्ट करा आणि “<ph name="SEARCH_TERMS" />” शोधा</translation>
 <translation id="969096075394517431">भाषा बदला</translation>
+<translation id="969574218206797926">मेमरी सेव्हर निष्क्रिय टॅबमधील मेमरी मोकळी करते, जेणेकरून ती अ‍ॅक्टिव्ह टॅब आणि इतर अ‍ॅप्सद्वारे वापरली जाईल</translation>
 <translation id="970047733946999531">{NUM_TABS,plural, =1{1 टॅब}other{# टॅब}}</translation>
 <translation id="971510864672937292"><ph name="SITE_NAME" /> साठी आणि त्याच्या अंतर्गत सर्व साइटसाठी साइट डेटा आणि परवानग्या साफ करायच्या का?</translation>
 <translation id="971774202801778802">बुकमार्क URL</translation>
diff --git a/chrome/app/resources/generated_resources_ms.xtb b/chrome/app/resources/generated_resources_ms.xtb
index 668c8d6..954fca9 100644
--- a/chrome/app/resources/generated_resources_ms.xtb
+++ b/chrome/app/resources/generated_resources_ms.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="ms">
 <translation id="1001033507375626788">Rangkaian ini dikongsi dengan anda</translation>
+<translation id="1002085272681738789">Tab aktif semula</translation>
 <translation id="1003088604756913841">Buka Pautan dalam Tetingkap <ph name="APP" /> baharu</translation>
 <translation id="100323615638474026">Peranti USB (<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />)</translation>
 <translation id="1004218526896219317">Akses tapak</translation>
@@ -323,6 +324,7 @@
 <translation id="1296911687402551044">Sematkan Tab yang Dipilih</translation>
 <translation id="1297175357211070620">Destinasi</translation>
 <translation id="129770436432446029">Hantar maklum balas untuk <ph name="EXPERIMENT_NAME" /></translation>
+<translation id="130097046531636712">Ciri ini memanjangkan kuasa bateri dengan mengehadkan aktiviti latar dan kesan visual seperti penatalan lancar</translation>
 <translation id="1301135395320604080"><ph name="ORIGIN" /> boleh mengedit fail yang berikut</translation>
 <translation id="1302227299132585524">Benarkan JavaScript daripada Apple Events</translation>
 <translation id="1303101771013849280">Menandakan Fail HTML</translation>
@@ -381,6 +383,7 @@
 <translation id="1361655923249334273">Tidak digunakan</translation>
 <translation id="1362865166188278099">Masalah mekanikal. Semak pencetak</translation>
 <translation id="1363585519747660921">Pencetak USB memerlukan konfigurasi</translation>
+<translation id="136378536198524553">Penjimat Kuasa dihidupkan</translation>
 <translation id="1368603372088757436">Linux tidak disokong pada <ph name="DEVICE_TYPE" /> anda. <ph name="LINK_BEGIN" />Ketahui lebih lanjut<ph name="LINK_END" /></translation>
 <translation id="1372841398847029212">Segerakkan ke akaun anda</translation>
 <translation id="1373176046406139583">Keterlihatan peranti anda mengawal orang yang boleh berkongsi dengan anda semasa skrin anda dibuka kunci. <ph name="LINK_BEGIN" />Ketahui lebih lanjut<ph name="LINK_END" /></translation>
@@ -651,6 +654,7 @@
 <translation id="1610272688494140697">Tetapan Apl</translation>
 <translation id="161042844686301425">Sian</translation>
 <translation id="1611432201750675208">Peranti anda dikunci</translation>
+<translation id="1611776894942218234">Peranti mesti berada dalam Saluran Beta</translation>
 <translation id="1612019740169791082">Bekas anda tidak dikonfigurasikan untuk menyokong pengubahan saiz cakera. Untuk melaraskan jumlah ruang yang dirizabkan untuk Linux, buat sandaran, kemudian pulihkan dalam bekas baharu.</translation>
 <translation id="1613019471223620622">Tunjukkan kata laluan untuk <ph name="USERNAME" /> di <ph name="DOMAIN" /></translation>
 <translation id="1613149688105334014">Versi lama apl Chrome tidak akan dibuka selepas Disember 2022. Anda boleh menyemak jika terdapat versi baharu.</translation>
@@ -1130,6 +1134,7 @@
 <translation id="2034346955588403444">Tambahkan rangkaian Wi-Fi lain</translation>
 <translation id="2035211704574173780">Skala kelabu</translation>
 <translation id="203574396658008164">Dayakan ciri catatan nota daripada skrin kunci</translation>
+<translation id="2036514476578229158">Anda meminta untuk melawat laman ini. Ibu bapa anda boleh membalas dalam Family Link.</translation>
 <translation id="2037445849770872822">Pengawasan ditetapkan untuk Akaun Google ini. Untuk menyediakan lebih banyak kawalan ibu bapa, pilih Teruskan.
 
 Jika tidak, log keluar sekarang agar perubahan pada akaun ini akan dipaparkan pada peranti ini.
@@ -1215,6 +1220,7 @@
 <translation id="2098805196501063469">Semak kata laluan yang tinggal</translation>
 <translation id="2099686503067610784">Padamkan sijil pelayan "<ph name="CERTIFICATE_NAME" />"?</translation>
 <translation id="2100273922101894616">Auto Log masuk</translation>
+<translation id="2100986609271491802">Peranti ini tidak menyokong Stim pada Chromebook pada masa ini</translation>
 <translation id="2101225219012730419">Versi:</translation>
 <translation id="2102396546234652240">Jangan benarkan laman menggunakan mikrofon anda</translation>
 <translation id="2102495993840063010">Apl Android</translation>
@@ -1250,6 +1256,7 @@
 <translation id="2135787500304447609">&amp;Sambung semula</translation>
 <translation id="2136372518715274136">Masukkan kata laluan baharu</translation>
 <translation id="2136476978468204130">Ungkapan laluan yang anda masukkan tidak betul</translation>
+<translation id="2137891579555018930">Menunggu kebenaran...</translation>
 <translation id="2138398485845393913">Sambungan ke "<ph name="DEVICE_NAME" />" masih berlangsung</translation>
 <translation id="2139919072249842737">Butang penyediaan</translation>
 <translation id="2140788884185208305">Kesihatan Bateri</translation>
@@ -1513,6 +1520,9 @@
 <translation id="2350133097354918058">Dimuat semula</translation>
 <translation id="2350182423316644347">Memulakan aplikasi...</translation>
 <translation id="235028206512346451">Jika anda menjauhi peranti anda, skrin anda akan dikunci secara automatik. Apabila anda berada di hadapan peranti, skrin anda akan tetap berjaga lebih lama. Jika anda tidak menggunakan skrin kunci, peranti anda akan tidur dan bukannya kunci.</translation>
+<translation id="2350866610930767288"><ph name="BEGIN_PARAGRAPH1" />Jika anda menerima arahan untuk memasukkan kod ID gedung peruncit semasa pemasangan Mod Tunjuk Cara, sila masukkannya di sebelah kanan*.  Jika tidak, anda boleh membiarkan medan ini kosong dan teruskan.<ph name="END_PARAGRAPH1" />
+    <ph name="BEGIN_PARAGRAPH2" />Anda masih boleh memasang Mod Tunjuk Cara tanpa kod, tetapi penting untuk memasukkan kod ini jika bersesuaian dengan gedung anda.<ph name="END_PARAGRAPH2" />
+    <ph name="BEGIN_PARAGRAPH3" />*Nota: Google menggunakan kod ini untuk mengenal pasti versi Mod Tunjuk Cara yang peranti harus terima dan untuk mengukur penggunaan Mod Tunjuk Cara.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="2352495879228166246">{NUM_ITEMS,plural, =1{1 item}other{{NUM_ITEMS} item}}</translation>
 <translation id="2352662711729498748">&lt;1 MB</translation>
 <translation id="2352810082280059586">Nota kunci skrin disimpan secara automatik ke <ph name="LOCK_SCREEN_APP_NAME" />. Nota terbaharu anda akan kekal pada kunci skrin.</translation>
@@ -1963,6 +1973,7 @@
 <translation id="2776560192867872731">Tukar nama peranti untuk <ph name="DEVICE_NAME" /></translation>
 <translation id="2777251078198759550">Padamkan bekas ini</translation>
 <translation id="2778471504622896352">Tambahkan apl kawalan jauh pada pelancar Chrome OS</translation>
+<translation id="2781120507965857989">Hidupkan penyegerakan untuk mendapatkan penanda halaman, kata laluan, sejarah dan pelbagai lagi pada peranti ini dan di tempat lain yang anda segerakkan. Google mungkin menggunakan sejarah anda untuk memperibadikan Search dan perkhidmatan Google yang lain.</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2782104745158847185">Ralat semasa memasang aplikasi Linux</translation>
 <translation id="2783298271312924866">Sudah dimuat turun</translation>
@@ -1983,6 +1994,7 @@
 <translation id="2792697226874849938">Imej sekatan</translation>
 <translation id="2794233252405721443">Tapak disekat</translation>
 <translation id="2794522004398861033">Sambung kepada Wi-Fi atau Ethernet untuk menyediakan eSIM</translation>
+<translation id="2795074478966352573">Akaun yang diurus oleh Family Link belum lagi disokong</translation>
 <translation id="2795716239552913152">Tapak biasanya menggunakan lokasi anda untuk ciri atau maklumat yang berkaitan, seperti berita tempatan atau kedai berdekatan</translation>
 <translation id="2796424461616874739">Pengesahan tamat masa semasa menyambung ke "<ph name="DEVICE_NAME" />".</translation>
 <translation id="2796740370559399562">Teruskan membenarkan kuki</translation>
@@ -2168,6 +2180,7 @@
 <translation id="2949289451367477459">Gunakan lokasi. Benarkan apl dan perkhidmatan dengan kebenaran lokasi menggunakan lokasi peranti ini. Google mungkin mengumpulkan data lokasi secara berkala dan menggunakan data ini secara awanama untuk meningkatkan ketepatan lokasi dan perkhidmatan berasaskan lokasi. <ph name="BEGIN_LINK1" />Ketahui Lebih Lanjut<ph name="END_LINK1" /></translation>
 <translation id="2950666755714083615">Daftarkan saya</translation>
 <translation id="2953019166882260872">Sambungkan telefon anda menggunakan kabel</translation>
+<translation id="2953218713108551165">Pemberitahuan tidak dibenarkan untuk <ph name="SITE" />. Anda akan ditanya lagi pada lawatan akan datang.</translation>
 <translation id="2956070239128776395">Seksyen diletakkan dalam kumpulan: <ph name="ERROR_LINE" /></translation>
 <translation id="2958721676848865875">Amaran sambungan pek</translation>
 <translation id="2959127025785722291">Kesilapan telah berlaku. Pengimbasan tidak dapat diselesaikan. Sila cuba lagi.</translation>
@@ -2876,6 +2889,7 @@
 <translation id="3665919494326051362">Versi semasa ialah <ph name="CURRENT_VERSION" /></translation>
 <translation id="3670113805793654926">Peranti daripada mana-mana vendor</translation>
 <translation id="3670229581627177274">Hidupkan Bluetooth</translation>
+<translation id="3672663996348587094">Klik untuk membenarkan "<ph name="EXTENSIONS_REQUESTING_ACCESS" />" di <ph name="ORIGIN" />:</translation>
 <translation id="3672681487849735243">Ralat kilang telah dikesan</translation>
 <translation id="3673097791729989571">Log masuk dihoskan oleh <ph name="SAML_DOMAIN" /></translation>
 <translation id="3673622964532248901">Anda tidak dibenarkan menghantar ke peranti ini.</translation>
@@ -3391,6 +3405,7 @@
 <translation id="4132183752438206707">Cari apl di Gedung Google Play</translation>
 <translation id="4132364317545104286">Namakan semula profil eSIM</translation>
 <translation id="4133076602192971179">Buka apl untuk menukar kata laluan anda</translation>
+<translation id="4134818201340504801">Storan yang tersedia tidak mencukupi untuk menyelesaikan persediaan. Sila kosongkan storan dan cuba lagi</translation>
 <translation id="4135746311382563554">Syarat perkhidmatan tambahan Google Chrome dan ChromeOS</translation>
 <translation id="4136203100490971508">Cahaya Malam akan dimatikan secara automatik pada waktu matahari terbit</translation>
 <translation id="41365691917097717">Tindakan meneruskan persediaan akan mendayakan penyahpepijatan ADB yang membuat dan menguji apl Android. Harap maklum bahawa tindakan ini membolehkan pemasangan apl Android yang belum disahkan oleh Google dan memerlukan tetapan semula kilang untuk melumpuhkan ciri ini.</translation>
@@ -3627,6 +3642,7 @@
 <translation id="4378556263712303865">Permintaan peranti</translation>
 <translation id="4379281552162875326">Nyahpasang "<ph name="APP_NAME" />"?</translation>
 <translation id="4380648069038809855">Telah memasuki skrin penuh</translation>
+<translation id="4383048856908088702">Semasa tab ini tidak aktif, Penjimat Memori mengosongkan <ph name="MEMORY_VALUE" /> memori untuk tugasan lain. Anda boleh menukar pilihan ini pada bila-bila masa dalam <ph name="SETTINGS_LINK" />.</translation>
 <translation id="4384312707950789900">Tambahkan pada pilihan</translation>
 <translation id="4384652540891215547">Aktifkan sambungan</translation>
 <translation id="4384886290276344300">Tukar tetapan papan kekunci</translation>
@@ -3704,6 +3720,7 @@
 <translation id="4451479197788154834">Kata laluan anda disimpan pada peranti ini dan dalam Akaun Google anda</translation>
 <translation id="4451757071857432900">Disekat di tapak yang menyiarkan iklan yang mengganggu atau mengelirukan (disyorkan)</translation>
 <translation id="4453946976636652378">Cari <ph name="SEARCH_ENGINE_NAME" /> atau taipkan URL</translation>
+<translation id="4458535500699390320">Semasa tab ini tidak aktif, Penjimat Memori mengosongkan memori untuk tugasan lain. Anda boleh menukar pilihan ini pada bila-bila masa dalam tetapan.</translation>
 <translation id="4459169140545916303">Aktif <ph name="DEVICE_LAST_ACTIVATED_TIME" /> hari lalu</translation>
 <translation id="4460014764210899310">Nyahkumpulan</translation>
 <translation id="4462159676511157176">Nama pelayan tersuai</translation>
@@ -3876,6 +3893,7 @@
 <translation id="4613271546271159013">Sambungan telah menukar halaman yang ditunjukkan apabila anda membuka halaman baharu.</translation>
 <translation id="4615586811063744755">tiada kuki dipilih</translation>
 <translation id="461661862154729886">Sumber tenaga</translation>
+<translation id="461676224702246336">Klik laman web ini</translation>
 <translation id="4617001782309103936">Terlalu pendek</translation>
 <translation id="4617019240346358451">Muat semula halaman untuk menggunakan "<ph name="EXTENSION_NAME" />"</translation>
 <translation id="4617270414136722281">Pilihan sambungan</translation>
@@ -3998,6 +4016,7 @@
 <translation id="4728558894243024398">Platform</translation>
 <translation id="4728570203948182358"><ph name="BEGIN_LINK" />Pentadbir anda<ph name="END_LINK" /> telah mematikan penyemakan untuk mengesan perisian berbahaya</translation>
 <translation id="4730492586225682674">Nota terkini stilus pada skrin kunci</translation>
+<translation id="4730888769809690665">Pemberitahuan dibenarkan untuk <ph name="SITE" /></translation>
 <translation id="473140019006744096">Ruang pada peranti ini tidak mencukupi untuk menyelesaikan kemaskinian ini. Kosongkan <ph name="NECESSARY_SPACE" /> pada peranti anda dan cuba lagi.</translation>
 <translation id="4733161265940833579"><ph name="BATTERY_PERCENTAGE" />% (Kiri)</translation>
 <translation id="4733793249294335256">Lokasi</translation>
@@ -4128,6 +4147,7 @@
 <translation id="4858913220355269194">Fritz</translation>
 <translation id="4862642413395066333">Menandatangan Respons OCSP</translation>
 <translation id="4863769717153320198">Kelihatan seperti <ph name="WIDTH" /> x <ph name="HEIGHT" /> (Lalai)</translation>
+<translation id="486459320933704969">Ibu/bapa atau penjaga perlu menyatakan bahawa anda boleh melawati laman web ini</translation>
 <translation id="4864805589453749318">Pilih ibu/bapa yang memberikan kebenaran untuk menambah akaun sekolah.</translation>
 <translation id="486635084936119914">Buka jenis fail tertentu secara automatik selepas memuat turun</translation>
 <translation id="4868281708609571334">Ajar Google Assistant untuk mengecam suara <ph name="SUPERVISED_USER_NAME" /></translation>
@@ -4300,6 +4320,7 @@
 <translation id="5032430150487044192">Tidak dapat membuat Kod QR</translation>
 <translation id="5033137252639132982">Tidak dibenarkan untuk menggunakan penderia gerakan</translation>
 <translation id="5033266061063942743">Bentuk geometri</translation>
+<translation id="5034000993065629381">Sila hubungi pentadbir anda</translation>
 <translation id="5037676449506322593">Pilih Semua</translation>
 <translation id="5038818366306248416">Sebelum ini anda memilih untuk tidak membenarkan sebarang sambungan pada <ph name="ORIGIN" /></translation>
 <translation id="5039696241953571917">Lihat dan urus kata laluan yang disimpan dalam Akaun Google anda</translation>
@@ -4430,6 +4451,7 @@
 <translation id="5161251470972801814">Peranti USB daripada <ph name="VENDOR_NAME" /></translation>
 <translation id="5162905305237671850"><ph name="DEVICE_TYPE" /> telah disekat</translation>
 <translation id="5163910114647549394">Tab dialihkan ke bahagian hujung jalur tab</translation>
+<translation id="5164530241085602114">Pemberitahuan tidak dibenarkan untuk <ph name="SITE" /></translation>
 <translation id="516747639689914043">Protokol Pengangkutan Hiperteks (HTTP)</translation>
 <translation id="5170568018924773124">Paparkan dalam folder</translation>
 <translation id="5171045022955879922">Buat carian atau taipkan URL</translation>
@@ -4532,6 +4554,7 @@
 <translation id="5269977353971873915">Cetakan Gagal</translation>
 <translation id="5273806377963980154">Edit URL laman</translation>
 <translation id="5275084684151588738">Kamus Pengguna</translation>
+<translation id="5275100789567222478">Hidupkan hanya apabila bateri pada kadar <ph name="PERCENT" />% atau lebih rendah</translation>
 <translation id="5275338516105640560">Butang Kumpulan Tab Disimpan</translation>
 <translation id="5275352920323889391">Anjing</translation>
 <translation id="527605719918376753">Redam tab</translation>
@@ -4550,6 +4573,7 @@
 <translation id="5285635972691565180">Paparkan <ph name="DISPLAY_ID" /></translation>
 <translation id="5286194356314741248">Mengimbas</translation>
 <translation id="5287425679749926365">Akaun anda</translation>
+<translation id="5288106344236929384">Lebih banyak tindakan, pilihan kunci laluan untuk <ph name="USERNAME" /> di <ph name="DOMAIN" /></translation>
 <translation id="5288678174502918605">B&amp;uka Semula Tab Yang Ditutup</translation>
 <translation id="52895863590846877">Halaman bukan dalam <ph name="LANGUAGE" /></translation>
 <translation id="52912272896845572">Fail penting persendirian adalah tidak sah.</translation>
@@ -4745,6 +4769,7 @@
 <translation id="5473099001878321374">Dengan meneruskan penggunaan, anda bersetuju bahawa peranti ini juga mungkin memuat turun dan memasang kemas kini dan apl daripada Google, pembawa anak anda dan pengeluar peranti ini secara automatik dan mungkin menggunakan data selular. Sesetengah apl ini mungkin menawarkan pembelian dalam apl.</translation>
 <translation id="5473156705047072749">{NUM_CHARACTERS,plural, =1{PIN mestilah sekurang-kurangnya satu aksara}other{PIN mestilah sekurang-kurangnya # aksara}}</translation>
 <translation id="5474859849784484111"><ph name="MANAGER" /> menghendaki anda menyambung kepada Wi-Fi sekarang dan memuat turun kemaskinian. Atau, muat turun daripada sambungan bermeter (caj mungkin dikenakan).</translation>
+<translation id="5476016146231427848">Sila mulakan semula peranti anda untuk menggunakan Stim pada Chromebook</translation>
 <translation id="5481273127572794904">Tidak dibenarkan untuk memuat turun berbilang fail secara automatik</translation>
 <translation id="5481941284378890518">Tambahkan Pencetak Berdekatan</translation>
 <translation id="5483785310822538350">Batalkan akses fail dan peranti</translation>
@@ -4964,6 +4989,7 @@
 <translation id="5683806393796685434">Sila masukkan kod pengaktifan anda</translation>
 <translation id="5684181005476681636">Butiran Wi-Fi</translation>
 <translation id="5684661240348539843">Pengecam Aset</translation>
+<translation id="5684969244627829799">Sila log masuk ke akaun pengguna dan cuba lagi</translation>
 <translation id="5687326903064479980">Zon waktu</translation>
 <translation id="5687935527303996204">Pastikan peranti anda dipalamkan dan jangan matikan. Pemasangan mungkin mengambil masa sehingga 20 minit. Peranti anda akan dimatikan secara automatik apabila pemasangan selesai.</translation>
 <translation id="5689516760719285838">Lokasi</translation>
@@ -5090,6 +5116,7 @@
 <translation id="5805697420284793859">Pengurus tetingkap</translation>
 <translation id="5806447147478173900">Jumlah storan yang digunakan oleh laman yang dipaparkan: <ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">0° (Lalai)</translation>
+<translation id="5810603387504252966">#borealis-enabled mesti didayakan dalam chrome://flags</translation>
 <translation id="5810809306422959727">Akaun ini tidak layak untuk kawalan ibu bapa</translation>
 <translation id="5811614940486072060">Fail ini tidak biasa dimuat turun dan mungkin berbahaya</translation>
 <translation id="5812674658566766066">Kembangkan semua</translation>
@@ -5169,6 +5196,7 @@
 <translation id="5882449899683447569">Kesilapan telah berlaku dan kata laluan anda tidak diimport</translation>
 <translation id="5882919346125742463">Rangkaian Yang Diketahui</translation>
 <translation id="5883356647197510494"><ph name="PERMISSION_1" />, <ph name="PERMISSION_2" /> disekat secara automatik</translation>
+<translation id="5884447826201752041">Sesuaikan untuk setiap sambungan</translation>
 <translation id="5884474295213649357">Tab ini disambungkan ke peranti USB.</translation>
 <translation id="5885314688092915589">Organisasi anda akan mengurus profil ini</translation>
 <translation id="5886009770935151472">Jari 1</translation>
@@ -5608,6 +5636,7 @@
 <translation id="6301300352769835063">Benarkan Google menggunakan data perkakasan anda untuk meningkatkan <ph name="DEVICE_OS" />. Jika anda menolak, data ini masih dihantar kepada Google untuk menentukan kemaskinian yang betul, tetapi data tidak disimpan atau digunakan. Ketahui lebih lanjut di g.co/flex/HWDataCollection.</translation>
 <translation id="630292539633944562">Cadangan maklumat peribadi</translation>
 <translation id="6305607932814307878">Dasar Global:</translation>
+<translation id="6305909198255586420">Sila pasang menggunakan profil utama anda</translation>
 <translation id="6307990684951724544">Sistem sibuk</translation>
 <translation id="6308493641021088955">Log masuk disediakan oleh <ph name="EXTENSION_NAME" /></translation>
 <translation id="6308937455967653460">Simpan pau&amp;tan sebagai...</translation>
@@ -5929,6 +5958,7 @@
 <translation id="6608166463665411119">Tetapkan semula eSIM</translation>
 <translation id="6609478180749378879">Data log masuk akan disimpan pada peranti ini selepas anda keluar daripada mod Inkognito. Anda akan dapat log masuk ke laman web ini menggunakan peranti anda kemudian.</translation>
 <translation id="6610002944194042868">Pilihan Terjemahan</translation>
+<translation id="6611907964265870728">Sila pastikan peranti anda disambungkan ke Internet</translation>
 <translation id="6611972847767394631">Cari tab anda di sini</translation>
 <translation id="6613668613087513143">Ruang pada peranti ini tidak mencukupi untuk menyelesaikan kemaskinian ini. Bersihkan <ph name="NECESSARY_SPACE" /> pada peranti anda dan cuba lagi daripada penyemak imbas Chrome anda.</translation>
 <translation id="6615455863669487791">Tunjukkan kepada saya</translation>
@@ -6317,6 +6347,7 @@
 <translation id="697508444536771064">Matikan Linux</translation>
 <translation id="6975361011348772931">Diminta untuk membaca &amp; menukar</translation>
 <translation id="6978121630131642226">Enjin Carian</translation>
+<translation id="6979041727349121225">Penjimat Tenaga</translation>
 <translation id="6979044105893951891">Lancarkan dan keluar daripada sesi tetamu yang diurus</translation>
 <translation id="6979158407327259162">Google Drive</translation>
 <translation id="6979440798594660689">Redam (lalai)</translation>
@@ -6369,6 +6400,7 @@
 <translation id="7014174261166285193">Gagal pemasangan.</translation>
 <translation id="7014480873681694324">Alih Keluar Serlahan</translation>
 <translation id="7014741021609395734">Tahap zum</translation>
+<translation id="7015088858756332848">Tidak dapat melancarkan Stim pada Chromebook. Sila cuba lagi</translation>
 <translation id="7017004637493394352">Sebut "Ok Google" sekali lagi</translation>
 <translation id="7017219178341817193">Tambah halaman baharu</translation>
 <translation id="7017354871202642555">Tidak dapat menetapkan mod selepas tetingkap ditetapkan.</translation>
@@ -6745,6 +6777,7 @@
 <translation id="7409854300652085600">Penanda halaman diimport.</translation>
 <translation id="7410344089573941623">Tanya jika <ph name="HOST" /> ingin mengakses kamera dan mikrofon anda</translation>
 <translation id="7410852728357935715">Hantar ke peranti</translation>
+<translation id="7411614333737930931">Sila mulakan semula peranti anda dan cuba lagi</translation>
 <translation id="741204030948306876">Ya, saya setuju</translation>
 <translation id="7412226954991670867">Memori GPU</translation>
 <translation id="7414464185801331860">18x</translation>
@@ -6975,6 +7008,7 @@
 <translation id="7635048370253485243">Disemat oleh Pentadbir anda</translation>
 <translation id="7636919061354591437">Pasang pada Peranti ini</translation>
 <translation id="7637253234491814483">Sentuh penderia cap jari di penjuru kanan sebelah atas papan kekunci anda, bersebelahan dengan butang Kuasa. Data cap jari anda disimpan dengan selamat dan tidak sekali-kali dihantar keluar daripada <ph name="DEVICE_TYPE" /> anda.</translation>
+<translation id="7637272932128132922">Semasa tab ini tidak aktif, Penjimat Memori mengosongkan memori untuk tugasan lain. Anda boleh menukar pilihan ini pada bila-bila masa dalam <ph name="SETTINGS_LINK" />.</translation>
 <translation id="7637593984496473097">Ruang cakera tidak mencukupi</translation>
 <translation id="7639914187072011620">Gagal mengambil URL ubah hala SAML daripada pelayan</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> melog masuk anda secara automatik ke laman web yang layak menggunakan kata laluan yang disimpan.</translation>
@@ -7091,6 +7125,7 @@
 <translation id="7728668285692163452">Perubahan saluran akan dilaksanakan kemudian</translation>
 <translation id="7730449930968088409">Abadikan kandungan skrin anda</translation>
 <translation id="7730683939467795481">Halaman ini telah ditukar oleh sambungan "<ph name="EXTENSION_NAME" />"</translation>
+<translation id="7735165285389721951">Satu lagi persediaan Stim sedang berjalan. Sila tunggu sehingga selesai sebelum mencuba semula</translation>
 <translation id="7737115349420013392">Berpasangan dengan "<ph name="DEVICE_NAME" />" ...</translation>
 <translation id="7737846262459425222">Anda boleh menukar tetapan ini pada bila-bila masa dalam Tetapan &gt; Google Assistant &gt; Konteks skrin.</translation>
 <translation id="7737948071472253612">Tidak dibenarkan untuk menggunakan kamera anda</translation>
@@ -7389,6 +7424,7 @@
 Fail Kunci: <ph name="KEY_FILE" />
 
 Simpan fail kunci anda di tempat selamat. Anda akan memerlukannya untuk mencipta versi baharu sambungan anda.</translation>
+<translation id="8001100670809322641">Sila tunggu beberapa minit, kemudian cuba lagi</translation>
 <translation id="8002274832045662704">Konfigurasi terperinci pencetak</translation>
 <translation id="8002670234429879764"><ph name="PRINTER_NAME" />tidak lagi tersedia.</translation>
 <translation id="8004092996156083991">Jika kata laluan anda terjejas, kami akan memberitahu anda.</translation>
@@ -7398,6 +7434,7 @@
 <translation id="8008356846765065031">Internet terputus sambungan. Sila periksa sambungan internet anda.</translation>
 <translation id="8009225694047762179">Urus Kata Laluan</translation>
 <translation id="8011372169388649948">'<ph name="BOOKMARK_TITLE" />' dialihkan.</translation>
+<translation id="8011875486979733097">Stim tidak boleh dipasang</translation>
 <translation id="8012647001091218357">Kami tidak dapat menghubungi ibu bapa anda pada masa ini. Sila cuba lagi.</translation>
 <translation id="8013993649590906847">Jika imej tiada perihalan yang berguna, Chrome akan cuba memberikan perihalan untuk anda. Untuk membuat perihalan, imej dihantar kepada Google.</translation>
 <translation id="8014154204619229810">Pengemaskinian sedang dijalankan. Muatkan semula dalam satu minit untuk memeriksa lagi.</translation>
@@ -7488,6 +7525,7 @@
 <translation id="808894953321890993">Tukar kata laluan</translation>
 <translation id="8090234456044969073">Baca senarai laman web yang paling kerap anda lawati</translation>
 <translation id="8090513782447872344">Anda boleh kembali untuk menyemak panduan ini lagi pada bila-bila masa</translation>
+<translation id="809312780580957751">Stim tidak boleh dipasangkan pada peranti ini.</translation>
 <translation id="8093359998839330381"><ph name="PLUGIN_NAME" /> tidak bertindak balas</translation>
 <translation id="8095105960962832018"><ph name="BEGIN_PARAGRAPH1" />Sandarkan ke Google Drive. Pulihkan data anda atau tukar peranti anda dengan mudah pada bila-bila masa. Sandaran anda merangkumi data apl.<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />Sandaran anda dimuat naik ke Google dan disulitkan dengan menggunakan kata laluan Akaun Google anda.<ph name="END_PARAGRAPH2" />
@@ -7583,6 +7621,7 @@
 <translation id="8177318697334260664">{NUM_TABS,plural, =1{Alihkan tab ke tetingkap baharu}other{Alihkan tab ke tetingkap baharu}}</translation>
 <translation id="8179188928355984576">Tidak digunakan dengan apl Android</translation>
 <translation id="8179976553408161302">Enter</translation>
+<translation id="8180785270975217276">Penjimat Tenaga dihidupkan</translation>
 <translation id="8180786512391440389">"<ph name="EXTENSION" />" boleh membaca dan memadamkan fail imej, video dan bunyi di lokasi yang ditandai.</translation>
 <translation id="8181215761849004992">Tidak dapat menghubungkan domain. Semak akaun anda untuk mengetahui sama ada anda mempunyai keistimewaan yang mencukupi untuk menambahkan peranti.</translation>
 <translation id="8182105986296479640">Aplikasi tiada respons.</translation>
@@ -7705,6 +7744,7 @@
 <translation id="828642162569365647">Kata laluan atau PIN ini melindungi data anda pada <ph name="DEVICE_TYPE" /> ini dan sebarang maklumat yang anda akses daripada telefon anda. Anda perlu membuka kunci setiap kali <ph name="DEVICE_TYPE" /> bangkit daripada tidur.</translation>
 <translation id="8287902281644548111">Cari menggunakan panggilan API/URL</translation>
 <translation id="8288032458496410887">Nyahpasang <ph name="APP" />...</translation>
+<translation id="8288539437195337464">Pastikan peranti anda terkini dan cuba lagi</translation>
 <translation id="8289128870594824098">Saiz cakera</translation>
 <translation id="8289509909262565712">Selamat datang ke <ph name="DEVICE_OS" /></translation>
 <translation id="8293206222192510085">Tambah Penanda Halaman</translation>
@@ -8000,6 +8040,7 @@
 <translation id="8599864823732014237">Langkau pendaftaran perusahaan?</translation>
 <translation id="8601206103050338563">Pengesahan Klien TLS WWW</translation>
 <translation id="8601611099293226919">Cari pada skrin anda dengan Google Lens</translation>
+<translation id="8602674530529411098">Apl (Beta)</translation>
 <translation id="8602851771975208551">Program lain pada komputer anda menambah apl yang boleh mengubah cara Chrome berfungsi.</translation>
 <translation id="8605428685123651449">Memori SQLite</translation>
 <translation id="8608618451198398104">Tambahkan tiket Kerberos</translation>
@@ -8684,10 +8725,12 @@
 <translation id="939598580284253335">Masukkan frasa laluan</translation>
 <translation id="939736085109172342">Folder baharu</translation>
 <translation id="942532530371314860"><ph name="APP_NAME" /> berkongsi tab dan audio Chrome.</translation>
+<translation id="944799160843436808">Terdapat masalah menyediakan Stim pada Chromebook</translation>
 <translation id="945522503751344254">Hantar maklum balas</translation>
 <translation id="947329552760389097">&amp;Periksa Unsur</translation>
 <translation id="947526284350604411">Jawapan anda</translation>
 <translation id="947667444780368238"><ph name="ORIGIN" /> tidak dapat membuka fail dalam folder ini kerana folder ini mengandungi fail sistem</translation>
+<translation id="949314938206378263">Anda meminta untuk melawat laman ini. Ibu bapa anda boleh membalas dalam Family Link.</translation>
 <translation id="950307215746360464">Panduan persediaan</translation>
 <translation id="951991426597076286">Tolak</translation>
 <translation id="952471655966876828">Peranti akan menyambung secara automatik apabila dihidupkan atau digunakan</translation>
@@ -8708,6 +8751,7 @@
 <translation id="968000525894980488">Hidupkan perkhidmatan Google Play.</translation>
 <translation id="968037381421390582">Ta&amp;mpal dan Cari “<ph name="SEARCH_TERMS" />”</translation>
 <translation id="969096075394517431">Tukar bahasa</translation>
+<translation id="969574218206797926">Penjimat Memori mengosongkan memori daripada tab tidak aktif supaya dapat digunakan oleh tab aktif dan apl lain</translation>
 <translation id="970047733946999531">{NUM_TABS,plural, =1{1 Tab}other{# Tab}}</translation>
 <translation id="971510864672937292">Kosongkan data dan kebenaran laman untuk <ph name="SITE_NAME" /> dan semua laman di bawahnya?</translation>
 <translation id="971774202801778802">URL Penanda Halaman</translation>
diff --git a/chrome/app/resources/generated_resources_my.xtb b/chrome/app/resources/generated_resources_my.xtb
index 469d516..6fb0ea2 100644
--- a/chrome/app/resources/generated_resources_my.xtb
+++ b/chrome/app/resources/generated_resources_my.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="my">
 <translation id="1001033507375626788">ဤကွန်ရက်ကို သင့်အား မျှဝေထားသည်</translation>
+<translation id="1002085272681738789">တဘ်ပြန်လည်အသုံးပြုသည်</translation>
 <translation id="1003088604756913841"><ph name="APP" /> ဝင်းဒိုးအသစ်တွင် လင့်ခ်ကို ဖွင့်ခြင်း</translation>
 <translation id="100323615638474026">USB ကိရိယာ (<ph name="VENDOR_ID" />- <ph name="PRODUCT_ID" />)</translation>
 <translation id="1004218526896219317">ဝင်ခွင့်ရသော ဝဘ်ဆိုက်</translation>
@@ -323,6 +324,7 @@
 <translation id="1296911687402551044">ရွေးထားသောတဘ်ကို ပင်ထိုးရန်</translation>
 <translation id="1297175357211070620">ခရီးဆုံး</translation>
 <translation id="129770436432446029"><ph name="EXPERIMENT_NAME" /> အတွက် အကြံပြုချက် ပို့ရန်</translation>
+<translation id="130097046531636712">၎င်းသည် နောက်ခံလုပ်ဆောင်ချက်နှင့် ချောမွေ့စွာ လှိမ့်ခြင်းကဲ့သို့ အမြင်ပိုင်း အထူးပြုလုပ်ချက်အား ကန့်သတ်ခြင်းဖြင့် ဘက်ထရီသက်တမ်းကို တိုးစေသည်</translation>
 <translation id="1301135395320604080"><ph name="ORIGIN" /> က အောက်ပါဖိုင်များကို တည်းဖြတ်နိုင်သည်</translation>
 <translation id="1302227299132585524">Apple ပွဲများ၏ JavaScript ကို ခွင့်ပြုရန်</translation>
 <translation id="1303101771013849280">HTML ဖိုင်ကို စာညှပ်ပေးရန်</translation>
@@ -381,6 +383,7 @@
 <translation id="1361655923249334273">မသုံးခဲ့</translation>
 <translation id="1362865166188278099">စက်ပြဿနာ။ ပရင်တာကိုစစ်ပါ</translation>
 <translation id="1363585519747660921">USB ပရင်တာအတွက် စီစဉ်သတ်မှတ်မှု လိုအပ်သည်</translation>
+<translation id="136378536198524553">‘စွမ်းအင်ချွေတာစနစ်’ ဖွင့်ထားသည်</translation>
 <translation id="1368603372088757436">သင်၏ <ph name="DEVICE_TYPE" /> တွင် Linux ကို မပံ့ပိုးပါ။ <ph name="LINK_BEGIN" />ပိုမိုလေ့လာရန်<ph name="LINK_END" /></translation>
 <translation id="1372841398847029212">သင့်အကောင့်သို့ စင့်ခ်လုပ်ရန်</translation>
 <translation id="1373176046406139583">ဖန်သားပြင်ဖွင့်ထားစဉ် သင့်အားမျှဝေနိုင်သူကို သင့်စက်၏မြင်နိုင်မှုက ထိန်းချုပ်သည်။ <ph name="LINK_BEGIN" />ပိုမိုလေ့လာရန်<ph name="LINK_END" /></translation>
@@ -650,6 +653,7 @@
 <translation id="1610272688494140697">အက်ပ်ဆက်တင်များ</translation>
 <translation id="161042844686301425">Cyan</translation>
 <translation id="1611432201750675208">သင့်စက်ကို လော့ခ်ချထားပါသည်</translation>
+<translation id="1611776894942218234">စက်က ‘စမ်းသပ်ချန်နယ်’ တွင်ရှိရမည်</translation>
 <translation id="1612019740169791082">ဒစ်ခ်အရွယ်အစားပြင်ပေးနိုင်ရန် သင့်ကွန်တိန်နာကို စီစဉ်သတ်မှတ်မထားပါ။ Linux အတွက် ဖယ်ထားသော နေရာပမာဏကို ချိန်ညှိရန် အရန်သိမ်းပြီး ကွန်တိန်နာအသစ်သို့ ပြန်ယူပါ။</translation>
 <translation id="1613019471223620622"><ph name="DOMAIN" /> ပေါ်ရှိ <ph name="USERNAME" /> အတွက် စကားဝှက်ကိုပြပါ</translation>
 <translation id="1613149688105334014">၂၀၂၂ ခုနှစ်၊ ဒီဇင်ဘာလနောက်ပိုင်းတွင် Chrome အက်ပ် ဗားရှင်းအဟောင်းများကို ဖွင့်၍မရတော့ပါ။ ဗားရှင်းအသစ် ရှိ၊ မရှိ စစ်ဆေးနိုင်သည်။</translation>
@@ -1214,6 +1218,7 @@
 <translation id="2098805196501063469">ကျန်ရှိသော စကားဝှက်များ စစ်ဆေးရန်</translation>
 <translation id="2099686503067610784">ဆာဗာ လက်မှတ် "<ph name="CERTIFICATE_NAME" />" ကို ဖျက်မလား?</translation>
 <translation id="2100273922101894616">အလိုအလျောက် ဝင်ရောက်ရန်</translation>
+<translation id="2100986609271491802">ဤစက်သည် Chromebook ရှိ Steam ကို လောလောဆယ် မပံ့ပိုးပါ</translation>
 <translation id="2101225219012730419">ဗားရှင်း:</translation>
 <translation id="2102396546234652240">သင့်မိုက်ခရိုဖုန်းသုံးရန် ဝဘ်ဆိုက်များကို ခွင့်မပြုပါနှင့်</translation>
 <translation id="2102495993840063010">Android အက်ပ်များ</translation>
@@ -1513,6 +1518,9 @@
 <translation id="2350133097354918058">ပြန်လည် စတင်ထားသည်</translation>
 <translation id="2350182423316644347">အပလီကေးရှင်းကို စသုံးရန် လုပ်ကိုင်နေ...</translation>
 <translation id="235028206512346451">သင်စက်အနီးမှ ထွက်သွားပါက ဖန်သားပြင်ကို အလိုအလျောက် လော့ခ်ချပါမည်။ သင်စက်အရှေ့တွင် ရှိနေပါက ဖန်သားပြင် ပိုမိုကြာရှည်စွာ ဖွင့်လျက်သားရှိနေပါမည်။ သင်လော့ခ်မျက်နှာပြင်ကို သုံးမထားပါက စက်လော့ခ်ချမည့်အစား ရပ်နားသွားပါမည်။</translation>
+<translation id="2350866610930767288"><ph name="BEGIN_PARAGRAPH1" />‘သရုပ်ပြမုဒ်’ ထည့်သွင်းနေစဉ် လက်လီရောင်းသူ-စတိုးဆိုင် ID ကုဒ်ကို ထည့်သွင်းရန် ညွှန်ကြားချက် ရရှိထားပါက ညာဘက်*တွင် ထည့်သွင်းပါ။  မရရှိထားပါက ဤအကွက်ကို ချန်ထားပြီး ရှေ့ဆက်နိုင်သည်။<ph name="END_PARAGRAPH1" />
+    <ph name="BEGIN_PARAGRAPH2" />သင်သည် ကုဒ်မပါဘဲ ‘သရုပ်ပြမုဒ်’ ကို ထည့်သွင်းနိုင်ဆဲဖြစ်သော်လည်း ဤကုဒ်သည် သင့်စတိုးနှင့် သက်ဆိုင်မှုရှိပါက ထည့်သွင်းရန် အရေးကြီးပါသည်။<ph name="END_PARAGRAPH2" />
+    <ph name="BEGIN_PARAGRAPH3" />*မှတ်ချက်- စက်က လက်ခံရရှိသင့်သည့် ‘သရုပ်ပြမုဒ်’ ဗားရှင်းကို ခွဲခြားဖော်ထုတ်ရန်နှင့် ‘သရုပ်ပြမုဒ်’ အသုံးပြုမှုကို တိုင်းတာရန် Google သည် ဤကုဒ်ကို အသုံးပြုသည်။<ph name="END_PARAGRAPH3" /></translation>
 <translation id="2352495879228166246">{NUM_ITEMS,plural, =1{၁ ခု}other{{NUM_ITEMS} ခု}}</translation>
 <translation id="2352662711729498748">&lt; ၁ မီဂါဘိုက်</translation>
 <translation id="2352810082280059586">လော့ခ်မျက်နှာပြင်တွင် မှတ်သားထားသည့် မှတ်စုများကို <ph name="LOCK_SCREEN_APP_NAME" /> သို့ အလိုအလျောက် သိမ်းဆည်းပေးပါသည်။ သင်နောက်ဆုံးမှတ်သားထားသည့် မှတ်စုကို လော့ခ်မျက်နှာပြင်ပေါ်တွင် မြင်နိုင်ပါမည်။</translation>
@@ -1963,6 +1971,7 @@
 <translation id="2776560192867872731">စက်အမည်ကို <ph name="DEVICE_NAME" /> ဟု ပြောင်းရန်</translation>
 <translation id="2777251078198759550">ဤကွန်တိန်နာကို ဖျက်ရန်</translation>
 <translation id="2778471504622896352">ChromeOS Launcher တွင် အဝေးထိန်းအက်ပ်များ ထည့်နိုင်သည်</translation>
+<translation id="2781120507965857989">သင့်လိပ်စာ၊ စကားဝှက်၊ မှတ်တမ်း စသည်တို့အား ဤစက်နှင့် သင်စင့်ခ်လုပ်နေသည့် နေရာများတွင် ရယူရန် စင့်ခ်လုပ်ခြင်းကို ဖွင့်ပါ။ Google သည် Search နှင့် အခြား Google ဝန်ဆောင်မှုများကို ပုဂ္ဂိုလ်ရေးသီးသန့်ပြုလုပ်ရန် သင်၏မှတ်တမ်းကို သုံးနိုင်သည်။</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2782104745158847185">Linux အပလီကေးရှင်းကို ထည့်ရာတွင် အမှားအယွင်းရှိနေသည်</translation>
 <translation id="2783298271312924866">ဒေါင်းလုပ်ရယူပြီး၏</translation>
@@ -1983,6 +1992,7 @@
 <translation id="2792697226874849938">ပုံ ကန့်သတ်ချက်</translation>
 <translation id="2794233252405721443">ဆိုက်ကို ပိတ်ဆို့ထားပါသည်</translation>
 <translation id="2794522004398861033">eSIM စနစ်ထည့်သွင်းရန် Wi-Fi သို့မဟုတ် အီသာနက်နှင့် ချိတ်ဆက်ပါ</translation>
+<translation id="2795074478966352573">Family Link က စီမံသည့် အကောင့်များကို မပံ့ပိုးသေးပါ</translation>
 <translation id="2795716239552913152">ဒေသတွင်းသတင်း သို့မဟုတ် အနီးအနားရှိဆိုင်များကဲ့သို့ သက်ဆိုင်ရာဝန်ဆောင်မှုများ (သို့) အချက်အလက်များအတွက် ဝဘ်ဆိုက်များက သင့်တည်နေရာကို အသုံးပြုလေ့ရှိသည်</translation>
 <translation id="2796424461616874739">"<ph name="DEVICE_NAME" />"အား ချိတ်ဆက်နေစဉ် အချိန် ကုန်သွားသည်။</translation>
 <translation id="2796740370559399562">ကူကီးများအား ဆက်လက်ခွင့်ပြုထားပါ</translation>
@@ -2168,6 +2178,7 @@
 <translation id="2949289451367477459">တည်နေရာကို အသုံးပြုပါ။ တည်နေရာ ခွင့်ပြုချက်ပါဝင်သည့် အက်ပ်နှင့် ဝန်ဆောင်မှုများအား ဤစက်၏ တည်နေရာကို အသုံးပြုခွင့်ပေးပါ။ Google သည် တည်နေရာအချက်အလက်များကို အခါအားလျော်စွာ စုဆောင်းနိုင်ပြီး တည်နေရာ ပိုမိုတိကျလာစေရန်နှင့် တည်နေရာအခြေခံသည့် ဝန်ဆောင်မှုများ ကောင်းမွန်လာစေရန် ၎င်းဒေတာများကို အမည်မဖော်ဘဲ အသုံးပြုသွားပါမည်။ <ph name="BEGIN_LINK1" />ပိုမိုလေ့လာရန်<ph name="END_LINK1" /></translation>
 <translation id="2950666755714083615">စာရင်းသွင်းရန်</translation>
 <translation id="2953019166882260872">သင့်ဖုန်းကို ကြိုးဖြင့်ချိတ်ဆက်ခြင်း</translation>
+<translation id="2953218713108551165"><ph name="SITE" /> အတွက် အကြောင်းကြားချက်ကို ခွင့်ပြုမထားပါ။ နောက်တစ်ကြိမ်ဝင်ကြည့်သောအခါ ထပ်မံမေးမြန်းပါမည်။</translation>
 <translation id="2956070239128776395">အပိုင်းကို ထည့်သွင်းထားသည့် အုပ်စု- <ph name="ERROR_LINE" /></translation>
 <translation id="2958721676848865875">နောက်ဆက်တွဲ သိမ်းဆည်းမှု သတိပေးချက်</translation>
 <translation id="2959127025785722291">တစ်ခုခုမှားသွားသည်။ ပြီးမြောက်အောင် စစ်ဆေး၍မရပါ။ ထပ်လုပ်ကြည့်ပါ။</translation>
@@ -2876,6 +2887,7 @@
 <translation id="3665919494326051362">လက်ရှိဗားရှင်းသည် <ph name="CURRENT_VERSION" /> ဖြစ်သည်</translation>
 <translation id="3670113805793654926">မည်သည့်ရောင်းချသူမဆိုထံမှ စက်ပစ္စည်းများ</translation>
 <translation id="3670229581627177274">ဘလူးတုသ်ကို ဖွင့်ရန်</translation>
+<translation id="3672663996348587094"><ph name="ORIGIN" /> တွင် "<ph name="EXTENSIONS_REQUESTING_ACCESS" />" ကို ခွင့်ပြုရန် နှိပ်ပါ-</translation>
 <translation id="3672681487849735243">စက်ရုံ အမှား တစ်ခု ရှာတွေခဲ့</translation>
 <translation id="3673097791729989571">လက်မှတ်ထိုးဝင်ခြင်းကို <ph name="SAML_DOMAIN" /> က လက်ခံဆောင်ရွက်သည်</translation>
 <translation id="3673622964532248901">ဤစက်ပစ္စည်းတွင် ကာစ်လုပ်ရန် သင့်ကိုခွင့်ပြုမထားပါ။</translation>
@@ -3390,6 +3402,7 @@
 <translation id="4132183752438206707">အက်ပ်များကို 'Google Play စတိုး' တွင် ရှာဖွေခြင်း</translation>
 <translation id="4132364317545104286">eSIM ပရိုဖိုင် အမည်ပြောင်းရန်</translation>
 <translation id="4133076602192971179">သင့်စကားဝှက်ပြောင်းရန် အက်ပ်ကို ဖွင့်ပါ</translation>
+<translation id="4134818201340504801">စနစ်ထည့်သွင်းမှုအပြီးသတ်ရန် ရနိုင်သည့် သိုလှောင်ခန်း မလုံလောက်ပါ။ သိုလှောင်ခန်းကို နေရာလွတ်ပြုလုပ်ပြီး ထပ်စမ်းကြည့်ပါ</translation>
 <translation id="4135746311382563554">Google Chrome နှင့် Chrome OS ထပ်တိုး ဝန်ဆောင်မှုစည်းမျဉ်းများ</translation>
 <translation id="4136203100490971508">နေထွက်ချိန်တွင် Night Light အလိုအလျောက် ပိတ်ပါမည်</translation>
 <translation id="41365691917097717">ရှေ့ဆက်ခြင်းအားဖြင့် Android အက်ပ်များ ပြုလုပ်ရန်နှင့် စမ်းသပ်ရန်အတွက် ADB အမှားရှာပြင်ခြင်းကို ဖွင့်သွားပါမည်။ ယခုလုပ်ဆောင်ချက်သည် Google က အတည်မပြုရသေးသော Android အက်ပ်များကို ထည့်သွင်းရန်ခွင့်ပြုပြီး ပိတ်ရန်အတွက် စက်ရုံထုတ်ဆက်တင် ပြင်ဆင်သတ်မှတ်ရန် လိုအပ်ကြောင်း သတိပြုပါ။</translation>
@@ -3626,6 +3639,7 @@
 <translation id="4378556263712303865">စက်ပစ္စည်း လိုအပ်ချက်</translation>
 <translation id="4379281552162875326">"<ph name="APP_NAME" />" ကို ဖယ်ရှားလိုပါသလား။</translation>
 <translation id="4380648069038809855">မျက်နှာပြင်အပြည့်သို့ ဝင်ထားသည်</translation>
+<translation id="4383048856908088702">ဤတဘ်ကို အသုံးမပြုစဉ် ‘မှတ်ဉာဏ်ချွေတာစနစ်’ သည် အခြားလုပ်ဆောင်စရာများအတွက် မှတ်ဉာဏ် <ph name="MEMORY_VALUE" /> ကို နေရာလွတ်ပြုလုပ်ထားသည်။ ၎င်းကို <ph name="SETTINGS_LINK" /> တွင် အချိန်မရွေး ပြောင်းနိုင်သည်။</translation>
 <translation id="4384312707950789900">ပိုနှစ်သက်သည့်စာရင်းသို့ ထည့်ရန်</translation>
 <translation id="4384652540891215547">တိုးချဲ့မှုကို ဖွင့်ထားရန်</translation>
 <translation id="4384886290276344300">ကီးဘုတ်ဆက်တင်များ ပြောင်းရန်</translation>
@@ -3703,6 +3717,7 @@
 <translation id="4451479197788154834">သင့်စကားဝှက်ကို ဤစက်နှင့် သင့် Google Account တွင် သိမ်းထားသည်</translation>
 <translation id="4451757071857432900">စိတ်အနှောင့်အယှက်ဖြစ်စေသော (သို့) အထင်အမြင်မှားစေသော ကြော်ငြာများကို ပြသည့် ဝဘ်ဆိုက်များကို ပိတ်ထားသည် (အကြံပြုထားသည်)</translation>
 <translation id="4453946976636652378"><ph name="SEARCH_ENGINE_NAME" /> ကို ရှာပါ သို့မဟုတ် URL ရိုက်ထည့်ပါ</translation>
+<translation id="4458535500699390320">ဤတဘ်ကို အသုံးမပြုစဉ် ‘မှတ်ဉာဏ်ချွေတာစနစ်’ သည် အခြားလုပ်ဆောင်စရာများအတွက် မှတ်ဉာဏ်ကို နေရာလွတ်ပြုလုပ်ထားသည်။ ၎င်းကို ဆက်တင်များတွင် အချိန်မရွေး ပြောင်းနိုင်သည်။</translation>
 <translation id="4459169140545916303">ပြီးခဲ့သော <ph name="DEVICE_LAST_ACTIVATED_TIME" /> ရက်က အသုံးပြုထားသည်</translation>
 <translation id="4460014764210899310">အုပ်စု ဖွဲ့မထားပါ</translation>
 <translation id="4462159676511157176">စိတ်ကြိုက်အမည် ဆာဗာများ</translation>
@@ -3875,6 +3890,7 @@
 <translation id="4613271546271159013">တိုးချဲ့မှု တစ်ခုက သင်က တဘ် အသစ်ကို ဖွင့်လိုက်သည့် အခါမှာ ပြသည့် စာမျက်နှာကို ပြောင်းလဲခဲ့သည်။</translation>
 <translation id="4615586811063744755">မည်သည့် ကွတ်ကီးကိုမျှ ရွေးမထားပါ</translation>
 <translation id="461661862154729886">စွမ်းအင် ရင်းမြစ်</translation>
+<translation id="461676224702246336">ဤဝဘ်ဆိုက်အတွက် ဖွင့်ရန်</translation>
 <translation id="4617001782309103936">တိုလွန်းသည်</translation>
 <translation id="4617019240346358451">“<ph name="EXTENSION_NAME" />” သုံးရန် စာမျက်နှာကို ပြန်လည်စတင်ပါ</translation>
 <translation id="4617270414136722281">နောက်ဆက်တွဲ ရွေးချယ်စရာများ</translation>
@@ -3997,6 +4013,7 @@
 <translation id="4728558894243024398">ပလက်ဖောင်</translation>
 <translation id="4728570203948182358">အန္တရာယ်ဆော့ဖ်ဝဲ ရှာဖွေခြင်းကို <ph name="BEGIN_LINK" />သင်၏စီမံခန့်ခွဲသူ<ph name="END_LINK" /> က ပိတ်ထားသည်</translation>
 <translation id="4730492586225682674">လော့ခ်ချထားချိန် မျက်နှာပြင်ရှိ စတိုင်လပ်စ် နောက်ဆုံးမှတ်စု</translation>
+<translation id="4730888769809690665"><ph name="SITE" /> အတွက် အကြောင်းကြားချက်ကို ခွင့်ပြုထားသည်</translation>
 <translation id="473140019006744096">ဤအပ်ဒိတ်အပြီးသတ်ရန် ယခုစက်တွင် နေရာမလောက်ပါ။ သင့်စက်တွင် <ph name="NECESSARY_SPACE" /> ရှင်းထုတ်ပြီး ထပ်စမ်းကြည့်ပါ။</translation>
 <translation id="4733161265940833579"><ph name="BATTERY_PERCENTAGE" />% (ဘယ်)</translation>
 <translation id="4733793249294335256">တည်နေရာ</translation>
@@ -4300,6 +4317,7 @@
 <translation id="5032430150487044192">QR ကုဒ် ပြုလုပ်၍မရပါ</translation>
 <translation id="5033137252639132982">လှုပ်ရှားမှုအာရုံခံစနစ်များ သုံးရန် ခွင့်ပြုမထားပါ</translation>
 <translation id="5033266061063942743">ဂဲဩမေတြီဆိုင်ရာ ပုံသဏ္ဌာန်များ</translation>
+<translation id="5034000993065629381">သင့်စီမံခန့်ခွဲသူကို ဆက်သွယ်ပါ</translation>
 <translation id="5037676449506322593">အားလုံးကို ရွေးရန်</translation>
 <translation id="5038818366306248416"><ph name="ORIGIN" /> တွင် နောက်ဆက်တွဲအားလုံးကို ခွင့်မပြုရန် သင်ယခင်က ရွေးချယ်ထားသည်</translation>
 <translation id="5039696241953571917">သင်၏ Google Account တွင် သိမ်းထားသော စကားဝှက်များကို ကြည့်ပြီးစီမံနိုင်သည်</translation>
@@ -4430,6 +4448,7 @@
 <translation id="5161251470972801814"><ph name="VENDOR_NAME" /> မှ USB ကိရိယာများ</translation>
 <translation id="5162905305237671850"><ph name="DEVICE_TYPE" /> ကို ပိတ်ထားလိုက်ပါပြီ</translation>
 <translation id="5163910114647549394">တဘ်အတန်း၏အဆုံးသို့ တဘ်ကို ရွှေ့လိုက်သည်</translation>
+<translation id="5164530241085602114"><ph name="SITE" /> အတွက် အကြောင်းကြားချက်ကို ခွင့်ပြုမထားပါ</translation>
 <translation id="516747639689914043">ဟိုက်ပါတက်စ် ပို့ဆောင်ရေး ပရိုတိုကော (HTTP)</translation>
 <translation id="5170568018924773124">ဖိုလ်ဒါ ထဲမှာ ပြရန်</translation>
 <translation id="5171045022955879922">ရှာကြည့်ရန် သို့မဟုတ် URL ရိုက်ထည့်ရန်</translation>
@@ -4532,6 +4551,7 @@
 <translation id="5269977353971873915">ပရင်ထုတ်ရန် မအောင်မြင်ပါ</translation>
 <translation id="5273806377963980154">ဝဘ်ဆိုက် URL တည်းဖြတ်ရန်</translation>
 <translation id="5275084684151588738">အသုံးပြုသူ အဘိဓာန်များ</translation>
+<translation id="5275100789567222478">ဘက်ထရီ <ph name="PERCENT" />% (သို့) ၎င်းထက်ပိုနည်းမှသာ ဖွင့်ရန်</translation>
 <translation id="5275338516105640560">သိမ်းထားသည့် တဘ်အုပ်စု ခလုတ်</translation>
 <translation id="5275352920323889391">ခွေး</translation>
 <translation id="527605719918376753">တဘ်အား အသံပိတ်ရန်</translation>
@@ -4550,6 +4570,7 @@
 <translation id="5285635972691565180">မျက်နှာပြင် ပြသမှု <ph name="DISPLAY_ID" /></translation>
 <translation id="5286194356314741248">ရှာဖွေနေသည်</translation>
 <translation id="5287425679749926365">သင်၏ အကောင့်များ</translation>
+<translation id="5288106344236929384"><ph name="DOMAIN" /> ရှိ <ph name="USERNAME" /> အတွက် နောက်ထပ်လုပ်ဆောင်ချက်များ၊ လျှို့ဝှက်ကီး ရွေးချယ်စရာများ</translation>
 <translation id="5288678174502918605">ပိတ်ပြီးတဲပ်များ ပြန်ဖွင့်</translation>
 <translation id="52895863590846877">စာမျက်နှာသည် <ph name="LANGUAGE" /> ဘာသာဖြင့် မဟုတ်ပါ</translation>
 <translation id="52912272896845572">ကိုယ်ရေးကိုယ်တာ ကီးဖိုင် မှန်ကန်မှု မရှိ။</translation>
@@ -4745,6 +4766,7 @@
 <translation id="5473099001878321374">ရှေ့ဆက်ခြင်းအားဖြင့် ဤစက်ပစ္စည်းသည် Google၊ သင့်ကလေး၏ ဖုန်းဝန်ဆောင်မှုပေးသူနှင့် ဤစက်ပစ္စည်း ထုတ်လုပ်သူတို့ထံမှ အပ်ဒိတ်များနှင့် အက်ပ်များကို အလိုအလျောက် ဒေါင်းလုဒ်လုပ်၍ ထည့်သွင်းနိုင်ကြောင်းကို သင်က သဘောတူရာ ရောက်ပြီး ယင်းသို့ထည့်သွင်းရာတွင် ဆယ်လူလာ ဒေတာအသုံးပြုနိုင်ပါသည်။ အချို့သော အက်ပ်များတွင် အက်ပ်အတွင်းဝယ်ယူခြင်းများကို ကမ်းလှမ်းနိုင်သည်။</translation>
 <translation id="5473156705047072749">{NUM_CHARACTERS,plural, =1{ပင်နံပါတ်တွင် အနည်းဆုံးအက္ခရာ 1 လုံး ပါရမည်}other{ပင်နံပါတ်တွင် အနည်းဆုံးအက္ခရာ # လုံး ပါရမည်}}</translation>
 <translation id="5474859849784484111"><ph name="MANAGER" /> က Wi-Fi သို့ ယခုချိတ်ဆက်ပြီး အပ်ဒိတ်ကို ဒေါင်းလုဒ်လုပ်စေလိုသည်။ သို့မဟုတ် အခမဲ့ မဟုတ်သော ချိတ်ဆက်မှုမှ ဒေါင်းလုဒ်လုပ်ပါ (ဒေတာသုံးစွဲခ ကျသင့်နိုင်သည်)။</translation>
+<translation id="5476016146231427848">Chromebook တွင် Steam အသုံးပြုရန် သင့်စက်ကို ပြန်စပါ</translation>
 <translation id="5481273127572794904">ဖိုင်အများအပြား အလိုအလျောက်ဒေါင်းလုဒ်လုပ်ရန် ခွင့်ပြုမထားပါ</translation>
 <translation id="5481941284378890518">အနီးတဝိုက်ရှိ ပုံနှိပ်စက်များကို ထည့်ပါ</translation>
 <translation id="5483785310822538350">ဖိုင်နှင့် စက်ပစ္စည်းအသုံးပြုမှုကို ရုပ်သိမ်းရန်</translation>
@@ -4965,6 +4987,7 @@
 <translation id="5683806393796685434">သင်၏စသုံးရန်ကုဒ် ထည့်ပါ</translation>
 <translation id="5684181005476681636">Wi-Fi အသေးစိတ်</translation>
 <translation id="5684661240348539843">ပိုင်ဆိုင်မှု အထောက်အထား</translation>
+<translation id="5684969244627829799">အသုံးပြုသူအကောင့်သို့ လက်မှတ်ထိုးဝင်ပြီး ထပ်စမ်းကြည့်ပါ</translation>
 <translation id="5687326903064479980">စံတော်ချိန်</translation>
 <translation id="5687935527303996204">သင့်စက်ကို ပလပ်တပ်ထားကြောင်း သေချာစေပြီး မပိတ်ပါနှင့်။ ထည့်သွင်းမှုသည် မိနစ် ၂၀ အထိ ကြာနိုင်သည်။ ထည့်သွင်းပြီးပါက သင့်စက် အလိုအလျောက်ပိတ်သွားပါမည်။</translation>
 <translation id="5689516760719285838">တည်နေရာ</translation>
@@ -5091,6 +5114,7 @@
 <translation id="5805697420284793859">ဝင်းဒိုး မန်နေဂျာ</translation>
 <translation id="5806447147478173900">ပြထားသည့် ဝဘ်ဆိုက်များက အသုံးပြုထားသည့် စုစုပေါင်းသိုလှောင်ခန်း- <ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">၀° (မူရင်း)</translation>
+<translation id="5810603387504252966">#borealis-enabled ကို chrome://flags တွင် ဖွင့်ထားရမည်</translation>
 <translation id="5810809306422959727">ဤအကောင့်တွင် မိဘ အထိန်းအချုပ်များကို အသုံးပြု၍မရပါ</translation>
 <translation id="5811614940486072060">ဤဖိုင်ကို အများအားဖြင့် ဒေါင်းလုဒ်လုပ်လေ့ မရှိပါ။ အန္တရာယ်ရှိနိုင်ပါသည်</translation>
 <translation id="5812674658566766066">အားလုံးချဲ့ရန်</translation>
@@ -5170,6 +5194,7 @@
 <translation id="5882449899683447569">တစ်ခုခု မှားသွားသောကြောင့် သင့်စကားဝှက်များကို ထည့်သွင်းမထားပါ</translation>
 <translation id="5882919346125742463">သိရှိထားသည့် ကွန်ရက်များ</translation>
 <translation id="5883356647197510494"><ph name="PERMISSION_1" />၊ <ph name="PERMISSION_2" /> ကို အလိုအလျောက် ပိတ်ထားသည်</translation>
+<translation id="5884447826201752041">နောက်ဆက်တွဲတစ်ခုစီအတွက် စိတ်ကြိုက်လုပ်ရန်</translation>
 <translation id="5884474295213649357">ဤတဘ်သည် USB စက်ပစ္စည်းတစ်ခုသို့ ချိတ်ဆက်ထားသည်။</translation>
 <translation id="5885314688092915589">ဤပရိုဖိုင်ကို သင့်အဖွဲ့အစည်းက စီမံပါမည်</translation>
 <translation id="5886009770935151472">လက်ချောင်း ၁</translation>
@@ -5608,6 +5633,7 @@
 <translation id="6301300352769835063"><ph name="DEVICE_OS" /> ပိုမိုကောင်းမွန်စေရန် သင့်ကွန်ပျူတာဆိုင်ရာ စက်ပစ္စည်းဒေတာကို Google အားသုံးခွင့်ပေးပါ။ သဘောမတူပါက ဤဒေတာကို သင့်လျော်သော အပ်ဒိတ်များ ဆုံးဖြတ်ပေးရန် Google သို့ ပို့မည်ဖြစ်သော်လည်း အခြားကိစ္စများအတွက် သိမ်းထားမည်မဟုတ်ပါ (သို့) သုံးမည်မဟုတ်ပါ။ g.co/flex/HWDataCollection တွင် ပိုမိုလေ့လာပါ။</translation>
 <translation id="630292539633944562">ကိုယ်ရေးကိုယ်တာအချက်အလက် အကြံပြုချက်များ</translation>
 <translation id="6305607932814307878">ကမ္ဘာသုံး မူဝါဒ−</translation>
+<translation id="6305909198255586420">သင်၏ ပင်မပရိုဖိုင် အသုံးပြု၍ ထည့်သွင်းပါ</translation>
 <translation id="6307990684951724544">စနစ် မအားပါ</translation>
 <translation id="6308493641021088955"><ph name="EXTENSION_NAME" /> က လက်မှတ်ထိုးဝင်ခြင်းကို ထောက်ပံ့ပေးထားသည်</translation>
 <translation id="6308937455967653460">လင့်&amp;ကို အဖြစ် သိမ်းရန်...</translation>
@@ -5927,6 +5953,7 @@
 <translation id="6608166463665411119">eSIM ပြင်ဆင်သတ်မှတ်ရန်</translation>
 <translation id="6609478180749378879">'ရုပ်ဖျက်မုဒ်' မှထွက်ပြီးသောအခါ လက်မှတ်ထိုးဝင်ခြင်းဆိုင်ရာ ဒေတာကို ဤစက်တွင် သိမ်းထားပါမည်။ ဤဝဘ်ဆိုက်သို့ နောင်တွင် သင့်စက်ဖြင့် ထပ်မံလက်မှတ်ထိုးဝင်နိုင်ပါမည်။</translation>
 <translation id="6610002944194042868">ဘာသာပြန်ရန် ရွေးစရာများ</translation>
+<translation id="6611907964265870728">သင့်ဖုန်းကို အင်တာနက်ချိတ်ဆက်ထားကြောင်း သေချာပါစေ</translation>
 <translation id="6611972847767394631">သင်၏ တဘ်များကို ဤနေရာတွင် ရှာယူပါ</translation>
 <translation id="6613668613087513143">ဤအပ်ဒိတ်အပြီးသတ်ရန် ယခုစက်တွင် နေရာမလောက်ပါ။ သင့်စက်တွင် <ph name="NECESSARY_SPACE" /> ရှင်းထုတ်ပြီး သင်၏ Chrome ဘရောင်ဇာတွင် ထပ်စမ်းကြည့်ပါ။</translation>
 <translation id="6615455863669487791">ပြရန်</translation>
@@ -6315,6 +6342,7 @@
 <translation id="697508444536771064">Linux ကို အပြီးပိတ်ရန်</translation>
 <translation id="6975361011348772931">ဖတ်ပြီးပြောင်းရန် တောင်းဆိုထားသည်</translation>
 <translation id="6978121630131642226">ရှာဖွေရေး အင်ဂျင်များ</translation>
+<translation id="6979041727349121225">စွမ်းအင်ချွေတာစနစ်</translation>
 <translation id="6979044105893951891">စီမံခန့်ခွဲထားသည့် ဧည့်သည်စက်ရှင်များကို ဖွင့်ခြင်းနှင့် ပိတ်ခြင်း</translation>
 <translation id="6979158407327259162">Google Drive</translation>
 <translation id="6979440798594660689">အသံပိတ်ရန် (မူရင်း)</translation>
@@ -6367,6 +6395,7 @@
 <translation id="7014174261166285193">ထည့်သွင်းခြင်း မအောင်မြင်ပါ။</translation>
 <translation id="7014480873681694324">မြင်သာအောင်လုပ်ထားသည်ကို ဖယ်ရှားရန်</translation>
 <translation id="7014741021609395734">ဇူးမ်အဆင့်</translation>
+<translation id="7015088858756332848">Chromebook တွင် Steam ကို ဖွင့်၍မရပါ။ ထပ်စမ်းကြည့်ပါ</translation>
 <translation id="7017004637493394352">"Ok Google" ဟု ထပ်ပြောပါ</translation>
 <translation id="7017219178341817193">စာမျက်နှာ အသစ် တစ်ခုကို ထည့်ရန်</translation>
 <translation id="7017354871202642555">ဝင်းဒိုးသတ်မှတ်ပြီးလျှင် မုဒ်သတ်မှတ်လို့မရပါ။</translation>
@@ -6743,6 +6772,7 @@
 <translation id="7409854300652085600">လိပ်စာများ ထည့်သွင်းလိုက်သည်။</translation>
 <translation id="7410344089573941623"><ph name="HOST" /> သည် သင့်ကင်မရာနှင့် မိုက်ခရိုဖုန်းအား အသုံးပြုလိုသလား မေးပါ</translation>
 <translation id="7410852728357935715">စက်တစ်ခုသို့ ကာစ်လုပ်ရန်</translation>
+<translation id="7411614333737930931">သင့်စက်ကို ပြန်စပြီး ထပ်စမ်းကြည့်ပါ</translation>
 <translation id="741204030948306876">ပါဝင်ပါမည်</translation>
 <translation id="7412226954991670867">GPU မှတ်ဉာဏ်</translation>
 <translation id="7414464185801331860">၁၈ ဆ</translation>
@@ -6973,6 +7003,7 @@
 <translation id="7635048370253485243">သင်၏ 'စီမံခန့်ခွဲသူ' က ပင်ထိုးထားသည်</translation>
 <translation id="7636919061354591437">ဤ' စက်ပစ္စည်း' တွင် ထည့်သွင်းရန်</translation>
 <translation id="7637253234491814483">သင့်ကီးဘုတ်၏ ညာဘက်အပေါ်ထောင့်တွင် ‘ဖွင့်ပိတ်ခလုတ်’ ဘေးရှိ လက်ဗွေအာရုံခံကိရိယာကို ထိပါ။ သင့်လက်ဗွေဒေတာကို သင်၏ <ph name="DEVICE_TYPE" /> တွင်သာ လုံခြုံစွာသိမ်းထားပြီး အခြားနေရာသို့ မယူဆောင်ပါ။</translation>
+<translation id="7637272932128132922">ဤတဘ်ကို အသုံးမပြုစဉ် ‘မှတ်ဉာဏ်ချွေတာစနစ်’ သည် အခြားလုပ်ဆောင်စရာများအတွက် မှတ်ဉာဏ်ကို နေရာလွတ်ပြုလုပ်ထားသည်။ ၎င်းကို <ph name="SETTINGS_LINK" /> တွင် အချိန်မရွေး ပြောင်းနိုင်သည်။</translation>
 <translation id="7637593984496473097">သိုလှောင်ခန်းနေရာ မလုံလောက်ပါ</translation>
 <translation id="7639914187072011620">ဆာဗာမှ SAML တစ်ဆင့်ပြန်ညွှန်ပြသော URL ကို မရယူနိုင်ပါ</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> သည်သင်သိမ်းဆည်းထားသည့် စကားဝှက်များဖြင့် အရည်အချင်းပြည့်မီသည့်ဆိုက်များသို့ အလိုအလျောက် လက်မှတ်ထိုးဝင်ပေးပါသည်။</translation>
@@ -7089,6 +7120,7 @@
 <translation id="7728668285692163452">ချန်နယ် ပြောင်းလဲမှုသည် နောက်မှ အသက်ဝင်လာမည်ဖြစ်သည်</translation>
 <translation id="7730449930968088409">သင့်မျက်နှာပြင်၏ အကြောင်းအရာကို ဖမ်းယူရန်</translation>
 <translation id="7730683939467795481">ဤစာမျက်နှာကို "<ph name="EXTENSION_NAME" />" နောက်ဆက်တွဲက ပြောင်းထားသည်</translation>
+<translation id="7735165285389721951">နောက်ထပ် Steam စနစ်ထည့်သွင်းမှုတစ်ခု လုပ်ဆောင်နေသည်။ ထပ်မံမလုပ်ဆောင်မီ ၎င်းကိုပြီးဆုံးသည်အထိ စောင့်ပါ</translation>
 <translation id="7737115349420013392">"<ph name="DEVICE_NAME" />" နှင့် တွဲချိတ်နေသည် ...</translation>
 <translation id="7737846262459425222">၎င်းကို ဆက်တင်များ &gt; Google Assistant &gt; ‘ဖန်သားပြင်’ အကြောင်းအရာ တွင် အချိန်မရွေး ပြောင်းနိုင်သည်။</translation>
 <translation id="7737948071472253612">သင့်ကင်မရာ သုံးရန် ခွင့်ပြုမထားပါ</translation>
@@ -7387,6 +7419,7 @@
 ကီးဖိုင်: <ph name="KEY_FILE" />
 
 သင့်ဖိုင်များကို လုံခြုံသည့် နေရာတွင် ထားပါ။ သင့်အိတ်စတန်းရှင်း၏ ဗားရှင်းအသစ်ကို သင်ဖန်တီးရပါမည်။</translation>
+<translation id="8001100670809322641">အချိန်အနည်းငယ်စောင့်ပြီး ထပ်စမ်းကြည့်ပါ</translation>
 <translation id="8002274832045662704">ပရင်တာ စီစဉ်သတ်မှတ်ချက် နောက်ထပ်ရွေးချယ်စရာများ</translation>
 <translation id="8002670234429879764"><ph name="PRINTER_NAME" /> ကို မရနိုင်တော့ပါ</translation>
 <translation id="8004092996156083991">သင့်စကားဝှက်များ ပေါက်ကြားသွားပါက သင့်ကို ကျွန်ုပ်တို့အသိပေးပါမည်။</translation>
@@ -7396,6 +7429,7 @@
 <translation id="8008356846765065031">အင်တာနက် ချိတ်ဆက်မှုဖြုတ်လိုက်ပါပြီ။ ကျေးဇူးပြု၍ သင့်အင်တာနက် ချိတ်ဆက်မှုကို စစ်ဆေးပါ။</translation>
 <translation id="8009225694047762179">စကားဝှက်များကို စီမံခြင်း</translation>
 <translation id="8011372169388649948">‘<ph name="BOOKMARK_TITLE" />’ ကို ရွှေ့ထားသည်။</translation>
+<translation id="8011875486979733097">Steam ထည့်သွင်း၍မရပါ</translation>
 <translation id="8012647001091218357">သင့်မိဘများကို ယခုမဆက်သွယ်နိုင်သေးပါ။ ကျေးဇူးပြု၍ ထပ်မံကြိုးစားပါ။</translation>
 <translation id="8013993649590906847">ပုံတွင် အသုံးဝင်သော အကြောင်းအရာ မပါလျှင် Chrome က သင့်အတွက် ဖော်ပြပေးပါမည်။ အကြောင်းအရာများ ဖော်ပြပေးရန် ပုံများကို Google သို့ပို့လိုက်ပါသည်။</translation>
 <translation id="8014154204619229810">အပ်ဒိတ်လုပ်ပေးသူ လက်ရှိအချိန်မှာ လုပ်ဆောင်နေသည်။ တစ်မိနစ် အကြာမှာ ပြန်စစ်ကြည့်ရန် ဆန်းသစ်ယူပါ။</translation>
@@ -7485,6 +7519,7 @@
 <translation id="808894953321890993">စကားဝှက် ပြောင်းရန်</translation>
 <translation id="8090234456044969073">သင် အများဆုံး မကြာခဏ သွားလေ့ရှိသော ဝက်ဆိုက်များ စာရင်းအား ဖတ်ရန်</translation>
 <translation id="8090513782447872344">နောက်တစ်ခါကြည့်ရန် အချိန်မရွေး ပြန်လာနိုင်သည်</translation>
+<translation id="809312780580957751">Steam ကို ဤစက်တွင် ထည့်သွင်း၍မရပါ</translation>
 <translation id="8093359998839330381"><ph name="PLUGIN_NAME" /> သည် တုံ့ပြန်မှုမရှိပါ</translation>
 <translation id="8095105960962832018"><ph name="BEGIN_PARAGRAPH1" />Google Drive သို့ အရန်သိမ်းပါ။ သင့်ဒေတာများကို ပြန်ယူခြင်း (သို့) စက်ပစ္စည်းပြောင်းခြင်းတို့ အချိန်မရွေး လွယ်ကူစွာပြုလုပ်နိုင်သည်။ သင့်အရန်တွင် အက်ပ်ဒေတာများ ပါဝင်သည်။<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />သင်၏ Google အကောင့်စကားဝှက် အသုံးပြု၍ ၎င်းတို့ကို Google သို့ အပ်လုဒ်လုပ်ပြီး အသွင်ဝှက်ထားပါသည်။<ph name="END_PARAGRAPH2" />
@@ -7580,6 +7615,7 @@
 <translation id="8177318697334260664">{NUM_TABS,plural, =1{တဘ်ကို ဝင်းဒိုးအသစ်သို့ ရွှေ့ရန်}other{တဘ်များကို ဝင်းဒိုးအသစ်သို့ ရွှေ့ရန်}}</translation>
 <translation id="8179188928355984576">Android အက်ပ်များနှင့် မသုံးပါ</translation>
 <translation id="8179976553408161302">အင်တာ</translation>
+<translation id="8180785270975217276">‘စွမ်းအင်ချွေတာစနစ်’ ဖွင့်ထားသည်</translation>
 <translation id="8180786512391440389">"<ph name="EXTENSION" />" သည် ပုံများ၊ ဗီဒီယို၊ နှင့်အသံဖိုင်များကို အမှန်ခြစ်ထားသည့် တည်နေရာများတွင် ဖတ်နိုင်ပြီး ဖျက်နိုင်ပါသည်။</translation>
 <translation id="8181215761849004992">ဒိုမိန်းသို့ ချိတ်ဆက်၍မရပါ။ စက်ပစ္စည်းများ ထည့်သွင်းရန် လုံလောက်သည့် လုပ်ပိုင်ခွင့်များ ရှိမရှိ သိရန် သင်၏အကောင့်ကို စစ်ဆေးပါ။</translation>
 <translation id="8182105986296479640">အပလီကေးရှင်း တုံ့ပြန်မှုမရှိခြင်း။</translation>
@@ -7702,6 +7738,7 @@
 <translation id="828642162569365647">ဤစကားဝှက် (သို့) ပင်နံပါတ်က <ph name="DEVICE_TYPE" /> မှ သင့်ဒေတာနှင့် ဖုန်းမှယူသုံးသော အချက်အလက်မှန်သမျှကို ကာကွယ်ပေးသည်။ သင့် <ph name="DEVICE_TYPE" /> နားနေသည်ကို နှိုးသည့်အခါတိုင်း လော့ခ်ဖွင့်ရမည်။</translation>
 <translation id="8287902281644548111">API ခေါ်ဆိုမှု/URL တို့ဖြင့် ရှာရန်</translation>
 <translation id="8288032458496410887"><ph name="APP" /> ကို ဖယ်ရှားပါ...</translation>
+<translation id="8288539437195337464">သင့်စက် အပ်ဒိတ်ဖြစ်နေကြောင်း သေချာစစ်ဆေးပြီး ထပ်စမ်းကြည့်ပါ</translation>
 <translation id="8289128870594824098">ဒစ်ခ်အရွယ်အစား</translation>
 <translation id="8289509909262565712"><ph name="DEVICE_OS" /> က ကြိုဆိုပါသည်</translation>
 <translation id="8293206222192510085">စာညှပ် ထည့်ပေးရန်</translation>
@@ -7996,6 +8033,7 @@
 <translation id="8599864823732014237">လုပ်ငန်းသုံးတွင် စာရင်းသွင်းခြင်းကို ကျော်မလား။</translation>
 <translation id="8601206103050338563">TLS WWW သုံးစွဲသူကို စိစစ်ခြင်း</translation>
 <translation id="8601611099293226919">Google Lens ဖြင့် သင့်ဖန်သားပြင်တွင် ရှာဖွေပါ</translation>
+<translation id="8602674530529411098">အက်ပ်များ (စမ်းသပ်ဆော့ဖ်ဝဲ)</translation>
 <translation id="8602851771975208551">Chrome အလုပ်လုပ်ပုံပေါင်းလဲသွားစေမည့် အက်ပ် တစ်ခုကို သင့်ကွန်ပျူတာရှိ အခြား ပရိုဂရမ်မှ ပေါင်းထည့်ခဲ့သည်။</translation>
 <translation id="8605428685123651449">SQLite မှတ်ဉာဏ်</translation>
 <translation id="8608618451198398104">Kerberos လက်မှတ်တစ်ခု ထည့်ခြင်း</translation>
@@ -8680,6 +8718,7 @@
 <translation id="939598580284253335">စကားစုဝှက်ကို ရိုက်ထည့်ရန်</translation>
 <translation id="939736085109172342">ဖိုင်တွဲအသစ်</translation>
 <translation id="942532530371314860"><ph name="APP_NAME" /> သည် Chrome တဘ်နှင့် အသံကို မျှဝေနေသည်။</translation>
+<translation id="944799160843436808">Chromebook တွင် Steam ကို စနစ်ထည့်သွင်းရာတွင် ပြဿနာရှိနေသည်</translation>
 <translation id="945522503751344254">အကြံပြုချက် ပေးပို့မည်</translation>
 <translation id="947329552760389097">&amp;စာမျက်နှာအတွင်းရှိ အရာများကို စစ်ဆေးရန်</translation>
 <translation id="947526284350604411">သင့်အဖြေ</translation>
@@ -8705,6 +8744,7 @@
 <translation id="968000525894980488">Google Play ဝန်ဆောင်မှုများကို ဖွင့်ပါ။</translation>
 <translation id="968037381421390582">“<ph name="SEARCH_TERMS" />” ကို ကူးထည့်ပြီး ရှာဖွေပါ</translation>
 <translation id="969096075394517431">ဘာသာစကားပြောင်းရန်</translation>
+<translation id="969574218206797926">အသုံးပြုနေသည့်တဘ်နှင့် အခြားအက်ပ်များက မှတ်ဉာဏ်ကို အသုံးပြုနိုင်ရန် ‘မှတ်ဉာဏ် ချွေတာစနစ်’ က အသုံးမပြုသည့် တဘ်များရှိ မှတ်ဉာဏ်ကို နေရာလွတ်ပြုလုပ်သည်</translation>
 <translation id="970047733946999531">{NUM_TABS,plural, =1{တဘ် ၁}other{# တဘ်များ}}</translation>
 <translation id="971510864672937292"><ph name="SITE_NAME" /> နှင့် ၎င်းအောက်ရှိ ဝဘ်ဆိုက်အားလုံးအတွက် ဝဘ်ဆိုက်ဒေတာနှင့် ခွင့်ပြုချက်များ ဖယ်ရှားမလား။</translation>
 <translation id="971774202801778802">URL ကို စာညှပ်ထည့်ရန်</translation>
diff --git a/chrome/app/resources/generated_resources_ne.xtb b/chrome/app/resources/generated_resources_ne.xtb
index 4ad48aab..fad0f45e 100644
--- a/chrome/app/resources/generated_resources_ne.xtb
+++ b/chrome/app/resources/generated_resources_ne.xtb
@@ -1115,6 +1115,7 @@
 <translation id="2034346955588403444">अन्य WiFi नेटवर्क थप्नुहोस्</translation>
 <translation id="2035211704574173780">ग्रेस्केल</translation>
 <translation id="203574396658008164">लक स्क्रिनबाटै टिपोट लिने एपलाई सक्षम पार्नुहोस्</translation>
+<translation id="2036514476578229158">तपाईंले यो साइटमा जाने अनुमति माग्नुभएको छ। तपाईंका अभिभावकहरू Family Link मार्फत अनुमति दिन वा नदिन सक्छन्।</translation>
 <translation id="2037445849770872822">यो Google खातामा सुपरिवेक्षण सेटअप गरिएको छ। थप अभिभावकीय नियन्त्रणहरू सेटअप गर्न जारी राख्नुहोस् नामक विकल्प चयन गर्नुहोस्।
 
 अन्यथा, यो खातामा गरिएका परिवर्तनहरू यस यन्त्रमा देखियून् भन्नाका लागि अहिले साइन आउट गर्नुहोस्।
@@ -1235,6 +1236,7 @@
 <translation id="2135787500304447609">पुनः &amp;निरन्तरता दिनुहोस्</translation>
 <translation id="2136372518715274136">नयाँ पासवर्ड प्रविष्टि गर्नुहोस्</translation>
 <translation id="2136476978468204130">तपाईंले प्रविष्ट गर्नुभएको पासफ्रेज गलत छ</translation>
+<translation id="2137891579555018930">अनुमति प्राप्त गर्न बाँकी छ…</translation>
 <translation id="2138398485845393913">"<ph name="DEVICE_NAME" />" मा जडान हुने क्रम अझै जारी छ</translation>
 <translation id="2139919072249842737">सेटअप गर्ने बटन</translation>
 <translation id="2140788884185208305">ब्याट्रीको अवस्था</translation>
@@ -4109,6 +4111,7 @@
 <translation id="4858913220355269194">फ्रिट्ज</translation>
 <translation id="4862642413395066333">OCSP प्रतिक्रियाहरू साइन गर्दै</translation>
 <translation id="4863769717153320198"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (डिफल्ट) जस्तो देखिन्छ</translation>
+<translation id="486459320933704969">तपाईंका आमाबुवा वा अभिभावकले तपाईंलाई यो साइटमा जाने अनुमति दिनु पर्ने हुन्छ</translation>
 <translation id="4864805589453749318">विद्यालयको खाता थप्न अनुमति दिन लागिरहनुभएको अभिभावक चयन गर्नुहोस्।</translation>
 <translation id="486635084936119914">डाउनलोडपछि निश्चित प्रकारका फाइलहरू स्वतः खोल्नुहोस्</translation>
 <translation id="4868281708609571334">Google सहायकलाई <ph name="SUPERVISED_USER_NAME" /> को आवाज चिनाउनुहोस्</translation>
@@ -8666,6 +8669,7 @@
 <translation id="947329552760389097">तत्त्वहरूको निरीक्षण गर्नुहोस्</translation>
 <translation id="947526284350604411">तपाईंको जवाफ:</translation>
 <translation id="947667444780368238">यो फोल्डरमा प्रणालीका फाइलहरू भएकाले <ph name="ORIGIN" /> ले यो फोल्डरमा भएका फाइल खोल्न सक्दैन</translation>
+<translation id="949314938206378263">तपाईंले यो साइटमा जाने अनुमति माग्नुभएको छ। तपाईंका अभिभावक Family Link मार्फत अनुमति दिन वा नदिन सक्छन्।</translation>
 <translation id="950307215746360464">सेटअप गाइड</translation>
 <translation id="951991426597076286">अस्वीकार गर्नुहोस्</translation>
 <translation id="952471655966876828">डिभाइस अन गरिएको खण्डमा वा उक्त डिभाइस प्रयोग भएको बेला सो डिभाइस स्वतः कनेक्ट हुने छ</translation>
diff --git a/chrome/app/resources/generated_resources_nl.xtb b/chrome/app/resources/generated_resources_nl.xtb
index 759153f2..6eb5148 100644
--- a/chrome/app/resources/generated_resources_nl.xtb
+++ b/chrome/app/resources/generated_resources_nl.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="nl">
 <translation id="1001033507375626788">Dit netwerk is met jou gedeeld</translation>
+<translation id="1002085272681738789">Tabblad weer actief</translation>
 <translation id="1003088604756913841">Link openen in een nieuw <ph name="APP" />-venster</translation>
 <translation id="100323615638474026">USB-apparaat (<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />)</translation>
 <translation id="1004218526896219317">Toegang tot site</translation>
@@ -321,6 +322,7 @@
 <translation id="1296911687402551044">Geselecteerd tabblad vastzetten</translation>
 <translation id="1297175357211070620">Bestemming</translation>
 <translation id="129770436432446029">Feedback sturen voor <ph name="EXPERIMENT_NAME" /></translation>
+<translation id="130097046531636712">Zo verleng je de batterijduur door achtergrondactiviteit en visuele effecten te beperken, zoals vloeiend scrollen</translation>
 <translation id="1301135395320604080"><ph name="ORIGIN" /> kan de volgende bestanden bewerken</translation>
 <translation id="1302227299132585524">JavaScript vanuit Apple Events toestaan</translation>
 <translation id="1303101771013849280">HTML-bestand met bookmarks</translation>
@@ -379,6 +381,7 @@
 <translation id="1361655923249334273">Ongebruikt</translation>
 <translation id="1362865166188278099">Mechanisch probleem. Controleer de printer.</translation>
 <translation id="1363585519747660921">USB-printer moet worden geconfigureerd</translation>
+<translation id="136378536198524553">Energiebesparing staat aan</translation>
 <translation id="1368603372088757436">Linux wordt niet ondersteund op je <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Meer informatie<ph name="LINK_END" /></translation>
 <translation id="1372841398847029212">Synchroniseren met je account</translation>
 <translation id="1373176046406139583">Je apparaatzichtbaarheid bepaalt wie content met je kan delen terwijl je scherm ontgrendeld is. <ph name="LINK_BEGIN" />Meer informatie<ph name="LINK_END" /></translation>
@@ -648,6 +651,7 @@
 <translation id="1610272688494140697">App-instellingen</translation>
 <translation id="161042844686301425">Cyaan</translation>
 <translation id="1611432201750675208">Je apparaat is vergrendeld</translation>
+<translation id="1611776894942218234">Apparaat moet zich in het bètakanaal bevinden</translation>
 <translation id="1612019740169791082">Je container is niet geconfigureerd om de schijfgrootte aan te passen. Als je de hoeveelheid ruimte wilt aanpassen die is gereserveerd voor Linux, maak je een back-up en zet je deze terug in een nieuwe container.</translation>
 <translation id="1613019471223620622">Wachtwoord tonen voor <ph name="USERNAME" /> op <ph name="DOMAIN" /></translation>
 <translation id="1613149688105334014">Oude versies van Chrome-apps worden na december 2022 niet meer geopend. Je kunt checken of er een nieuwe versie beschikbaar is.</translation>
@@ -1203,6 +1207,7 @@
 <translation id="2098805196501063469">Resterende wachtwoorden checken</translation>
 <translation id="2099686503067610784">Servercertificaat '<ph name="CERTIFICATE_NAME" />' verwijderen?</translation>
 <translation id="2100273922101894616">Automatisch inloggen</translation>
+<translation id="2100986609271491802">Dit apparaat biedt momenteel geen ondersteuning voor Steam op de Chromebook</translation>
 <translation id="2101225219012730419">Versie:</translation>
 <translation id="2102396546234652240">Niet toestaan dat sites je microfoon gebruiken</translation>
 <translation id="2102495993840063010">Android-apps</translation>
@@ -1498,6 +1503,9 @@
 <translation id="2350133097354918058">Opnieuw geladen</translation>
 <translation id="2350182423316644347">App initialiseren...</translation>
 <translation id="235028206512346451">Als je wegloopt bij je apparaat, wordt het scherm automatisch vergrendeld. Het scherm blijft actief langer als je voor het apparaat staat. Als je geen vergrendelscherm gebruikt, wordt de slaapstand van je apparaat geactiveerd in plaats van de vergrendeling.</translation>
+<translation id="2350866610930767288"><ph name="BEGIN_PARAGRAPH1" />Als je instructies hebt gekregen om tijdens de installatie van de demomodus een winkel-ID-code op te geven, geef je deze aan de rechterkant op*.  Anders kun je dit veld leeg laten en doorgaan.<ph name="END_PARAGRAPH1" />
+    <ph name="BEGIN_PARAGRAPH2" />Je kunt de demomodus nog steeds installeren zonder code, maar het is belangrijk dat je deze code opgeeft als die van toepassing is op je winkel.<ph name="END_PARAGRAPH2" />
+    <ph name="BEGIN_PARAGRAPH3" />*Opmerking: Google gebruikt deze codes om te bepalen welke versie van de demomodus het apparaat moet krijgen en om het gebruik van de demomodus te meten.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="2352495879228166246">{NUM_ITEMS,plural, =1{1 item}other{{NUM_ITEMS} items}}</translation>
 <translation id="2352662711729498748">&lt; 1 MB</translation>
 <translation id="2352810082280059586">Notities op het vergrendelscherm worden automatisch opgeslagen in <ph name="LOCK_SCREEN_APP_NAME" />. Je laatste notitie blijft op het vergrendelscherm staan.</translation>
@@ -1948,6 +1956,7 @@
 <translation id="2776560192867872731">Apparaatnaam wijzigen voor <ph name="DEVICE_NAME" /></translation>
 <translation id="2777251078198759550">Deze container verwijderen</translation>
 <translation id="2778471504622896352">Externe apps toevoegen aan de ChromeOS Launcher</translation>
+<translation id="2781120507965857989">Zet synchronisatie aan om onder andere je bookmarks, wachtwoorden en geschiedenis te gebruiken op dit apparaat en elke andere locatie waar je synchroniseert. Google kan je geschiedenis gebruiken om Google Zoeken en andere Google-services te personaliseren.</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2782104745158847185">Fout bij het installeren van de Linux-app</translation>
 <translation id="2783298271312924866">Gedownload</translation>
@@ -1968,6 +1977,7 @@
 <translation id="2792697226874849938">Beperkingsafbeelding</translation>
 <translation id="2794233252405721443">Site geblokkeerd</translation>
 <translation id="2794522004398861033">Maak verbinding met wifi of Ethernet om de e-simkaart in te stellen</translation>
+<translation id="2795074478966352573">Accounts die door Family Link worden beheerd, worden nog niet ondersteund</translation>
 <translation id="2795716239552913152">Sites gebruiken je locatie meestal voor relevante functies of informatie, zoals lokaal nieuws of winkels in de buurt</translation>
 <translation id="2796424461616874739">Time-out voor verificatie tijdens verbinden met '<ph name="DEVICE_NAME" />'.</translation>
 <translation id="2796740370559399562">Cookies blijven toestaan</translation>
@@ -2153,6 +2163,7 @@
 <translation id="2949289451367477459">Locatie gebruiken. Apps en services met locatierechten mogen de locatie van dit apparaat gebruiken. Google kan periodiek locatiegegevens verzamelen en deze anoniem gebruiken om de locatienauwkeurigheid en locatiegebaseerde services te verbeteren. <ph name="BEGIN_LINK1" />Meer informatie<ph name="END_LINK1" /></translation>
 <translation id="2950666755714083615">Ik wil me aanmelden</translation>
 <translation id="2953019166882260872">Sluit je telefoon aan met een kabel</translation>
+<translation id="2953218713108551165">Meldingen niet toegestaan voor <ph name="SITE" />. Dit wordt volgende keer opnieuw gevraagd.</translation>
 <translation id="2956070239128776395">Onderliggende sectie in groep: <ph name="ERROR_LINE" /></translation>
 <translation id="2958721676848865875">Waarschuwing over pakketextensie</translation>
 <translation id="2959127025785722291">Er is iets misgegaan. De scan kan niet worden voltooid. Probeer het opnieuw.</translation>
@@ -2384,6 +2395,7 @@
 <translation id="3188465121994729530">Voortschrijdend gemiddelde</translation>
 <translation id="3189187154924005138">Grote cursor</translation>
 <translation id="3190558889382726167">Wachtwoord opgeslagen</translation>
+<translation id="3192589799003798742">Steam op Chromebook instellen</translation>
 <translation id="3192947282887913208">Audiobestanden</translation>
 <translation id="3193695589337931419">Hulpprogramma's voor systeemsignalen</translation>
 <translation id="3194786596445804250">Details tonen over het blokkeren van cookies van derden</translation>
@@ -2523,6 +2535,7 @@
 <translation id="3341699307020049241">Onjuiste pincode. Je hebt nog <ph name="RETRIES" /> pogingen over.</translation>
 <translation id="3341703758641437857">Toegang tot bestand-URL's toestaan</translation>
 <translation id="3342361181740736773">'<ph name="TRIGGERING_EXTENSION_NAME" />' wil deze extensie verwijderen.</translation>
+<translation id="3343977377045378693">Instellen uitvoeren</translation>
 <translation id="3345135638360864351">Je verzoek om toegang tot deze site kan niet worden verzonden naar <ph name="NAME" />. Probeer het opnieuw.</translation>
 <translation id="3345634917232014253">Veiligheidscheck is zojuist uitgevoerd</translation>
 <translation id="3345886924813989455">Er is geen ondersteunde browser gevonden</translation>
@@ -2534,6 +2547,7 @@
 <translation id="3354768182971982851">Oude versies van Chrome-apps kunnen na december 2022 niet meer worden geopend op Mac-apparaten. Je kunt checken of er een nieuwe versie beschikbaar is.</translation>
 <translation id="3354972872297836698">Kan niet koppelen met apparaat <ph name="DEVICE_NAME" />, selecteer het apparaat om het opnieuw te proberen</translation>
 <translation id="3355936511340229503">Verbindingsfout</translation>
+<translation id="3356036636691722598">Veel plezier met gamen op je Chromebook</translation>
 <translation id="3356469410714175391">(Virtuele kaart staat aan)</translation>
 <translation id="3356580349448036450">Voltooid</translation>
 <translation id="3359256513598016054">Beleidsbeperkingen voor certificaat</translation>
@@ -2861,6 +2875,7 @@
 <translation id="3665919494326051362">Huidige versie is <ph name="CURRENT_VERSION" /></translation>
 <translation id="3670113805793654926">Apparaten van elke leverancier</translation>
 <translation id="3670229581627177274">Bluetooth aanzetten</translation>
+<translation id="3672663996348587094">Klik om <ph name="EXTENSIONS_REQUESTING_ACCESS" /> toe te staan op <ph name="ORIGIN" />:</translation>
 <translation id="3672681487849735243">Er is een fabrieksfout gedetecteerd</translation>
 <translation id="3673097791729989571">Inloggen gehost door <ph name="SAML_DOMAIN" /></translation>
 <translation id="3673622964532248901">Je mag niet casten naar dit apparaat.</translation>
@@ -3375,6 +3390,7 @@
 <translation id="4132183752438206707">Apps zoeken in de Google Play Store</translation>
 <translation id="4132364317545104286">Naam van profiel voor e-simkaart wijzigen</translation>
 <translation id="4133076602192971179">Open de app om je wachtwoord te wijzigen</translation>
+<translation id="4134818201340504801">Er is onvoldoende opslagruimte beschikbaar om het instellen af te ronden. Maak opslagruimte vrij en probeer het opnieuw.</translation>
 <translation id="4135746311382563554">Aanvullende servicevoorwaarden van Google Chrome en Chrome OS</translation>
 <translation id="4136203100490971508">Nachtverlichting wordt automatisch uitgezet bij zonsopkomst</translation>
 <translation id="41365691917097717">Als je doorgaat, wordt ADB-foutopsporing aangezet om Android-apps te maken en te testen. Let op: Met deze actie sta je toe dat Android-apps worden geïnstalleerd die niet door Google zijn geverifieerd. Als je deze functie wilt uitzetten, moeten de fabrieksinstellingen van je apparaat worden hersteld.</translation>
@@ -3445,6 +3461,7 @@
 <translation id="4211904048067111541">Niet meer gebruiken met Android-apps</translation>
 <translation id="42126664696688958">Exporteren</translation>
 <translation id="42137655013211669">De toegang tot deze bron is verboden door de server.</translation>
+<translation id="4214192212360095377">Nu uitzetten</translation>
 <translation id="4217558091331485702">Scannen vóór openen</translation>
 <translation id="4217571870635786043">Dicteren</translation>
 <translation id="4218081191298393750">Klik op het speakericoon om het geluid uit te zetten voor dit tabblad</translation>
@@ -3611,6 +3628,7 @@
 <translation id="4378556263712303865">Apparaataanvraag</translation>
 <translation id="4379281552162875326">'<ph name="APP_NAME" />' verwijderen?</translation>
 <translation id="4380648069038809855">Volledig scherm geopend</translation>
+<translation id="4383048856908088702">Terwijl dit tabblad inactief was, heeft Geheugenbesparing <ph name="MEMORY_VALUE" /> aan geheugen vrijgemaakt voor andere taken. Je kunt dit altijd wijzigen via <ph name="SETTINGS_LINK" />.</translation>
 <translation id="4384312707950789900">Toevoegen aan voorkeursnetwerken</translation>
 <translation id="4384652540891215547">Activeer de extensie</translation>
 <translation id="4384886290276344300">Toetsenbordinstellingen wijzigen</translation>
@@ -3688,6 +3706,7 @@
 <translation id="4451479197788154834">Je wachtwoord is opgeslagen op dit apparaat en in je Google-account</translation>
 <translation id="4451757071857432900">Geblokkeerd op sites die opdringerige of misleidende advertenties bekijken (aanbevolen)</translation>
 <translation id="4453946976636652378">Zoek met <ph name="SEARCH_ENGINE_NAME" /> of voer een URL in</translation>
+<translation id="4458535500699390320">Terwijl dit tabblad inactief was, heeft Geheugenbesparing geheugen vrijgemaakt voor andere taken. Je kunt dit altijd wijzigen in de instellingen.</translation>
 <translation id="4459169140545916303"><ph name="DEVICE_LAST_ACTIVATED_TIME" /> dagen geleden actief</translation>
 <translation id="4460014764210899310">Groeperen ongedaan maken</translation>
 <translation id="4462159676511157176">Aangepaste naamservers</translation>
@@ -3859,6 +3878,7 @@
 <translation id="4613271546271159013">Een extensie heeft de pagina gewijzigd die je ziet als je een nieuw tabblad opent.</translation>
 <translation id="4615586811063744755">geen cookie geselecteerd</translation>
 <translation id="461661862154729886">Energiebron</translation>
+<translation id="461676224702246336">Bij klikken voor deze site</translation>
 <translation id="4617001782309103936">Te kort</translation>
 <translation id="4617019240346358451">Laad de pagina opnieuw om <ph name="EXTENSION_NAME" /> te gebruiken</translation>
 <translation id="4617270414136722281">Opties voor extensies</translation>
@@ -3980,6 +4000,7 @@
 <translation id="4728558894243024398">Platform</translation>
 <translation id="4728570203948182358"><ph name="BEGIN_LINK" />Je beheerder<ph name="END_LINK" /> heeft de controle op schadelijke software uitgezet</translation>
 <translation id="4730492586225682674">Laatste notitie met stylus op vergrendelscherm</translation>
+<translation id="4730888769809690665">Meldingen toegestaan voor <ph name="SITE" /></translation>
 <translation id="473140019006744096">Er is niet voldoende ruimte op dit apparaat beschikbaar om deze update af te ronden. Maak <ph name="NECESSARY_SPACE" /> vrij op je apparaat en probeer het opnieuw.</translation>
 <translation id="4733161265940833579"><ph name="BATTERY_PERCENTAGE" />% (links)</translation>
 <translation id="4733793249294335256">Locatie</translation>
@@ -4282,6 +4303,7 @@
 <translation id="5032430150487044192">Kan geen QR-code maken</translation>
 <translation id="5033137252639132982">Geen toestemming om bewegingssensoren te gebruiken</translation>
 <translation id="5033266061063942743">Geometrische vormen</translation>
+<translation id="5034000993065629381">Neem contact op met je beheerder</translation>
 <translation id="5037676449506322593">Selecteer alles</translation>
 <translation id="5038818366306248416">Je hebt er eerder voor gekozen om geen extensies op <ph name="ORIGIN" /> toe te staan</translation>
 <translation id="5039696241953571917">Opgeslagen wachtwoorden in je Google-account bekijken en beheren</translation>
@@ -4339,6 +4361,7 @@
 <translation id="5089763948477033443">Handgreep voor wijziging van het formaat van het zijvenster</translation>
 <translation id="5090637338841444533">Geen toestemming om je camerapositie bij te houden</translation>
 <translation id="5093569275467863761">Incognitosubframe in Back-Forward Cache: <ph name="BACK_FORWARD_CACHE_INCOGNITO_PAGE_URL" /></translation>
+<translation id="5094042205195563542">Installatie starten</translation>
 <translation id="5094176498302660097">Je kunt ondersteunde bestanden openen en bewerken met deze app vanuit de app Bestanden of andere apps. <ph name="BEGIN_LINK" />Bekijk hoe je standaard-apps instelt op je apparaat<ph name="END_LINK" /> om te bepalen welke bestanden standaard worden geopend in deze app.</translation>
 <translation id="5094721898978802975">Communiceren met samenwerkende legitieme apps</translation>
 <translation id="5097002363526479830">Kan geen verbinding maken met het netwerk '<ph name="NAME" />': <ph name="DETAILS" /></translation>
@@ -4412,6 +4435,7 @@
 <translation id="5161251470972801814">USB-apparaten van <ph name="VENDOR_NAME" /></translation>
 <translation id="5162905305237671850"><ph name="DEVICE_TYPE" /> is geblokkeerd</translation>
 <translation id="5163910114647549394">Tabblad verplaatst naar einde van tabbladstrook</translation>
+<translation id="5164530241085602114">Meldingen niet toegestaan voor <ph name="SITE" /></translation>
 <translation id="516747639689914043">Hypertext Transport Protocol (HTTP)</translation>
 <translation id="5170568018924773124">Tonen in map</translation>
 <translation id="5171045022955879922">Zoek of typ een URL</translation>
@@ -4514,6 +4538,7 @@
 <translation id="5269977353971873915">Afdrukken mislukt</translation>
 <translation id="5273806377963980154">Site-URL bewerken</translation>
 <translation id="5275084684151588738">Gebruikerswoordenboeken</translation>
+<translation id="5275100789567222478">Alleen aanzetten als mijn batterijlading <ph name="PERCENT" />% of minder is</translation>
 <translation id="5275338516105640560">Knop Tabbladgroep opgeslagen</translation>
 <translation id="5275352920323889391">Hond</translation>
 <translation id="527605719918376753">Tabblad dempen</translation>
@@ -4532,6 +4557,7 @@
 <translation id="5285635972691565180">Scherm <ph name="DISPLAY_ID" /></translation>
 <translation id="5286194356314741248">Scannen</translation>
 <translation id="5287425679749926365">Je accounts</translation>
+<translation id="5288106344236929384">Meer acties, toegangscodeopties voor <ph name="USERNAME" /> op <ph name="DOMAIN" /></translation>
 <translation id="5288678174502918605">Gesloten tabblad opni&amp;euw openen</translation>
 <translation id="52895863590846877">Pagina is niet in het <ph name="LANGUAGE" /></translation>
 <translation id="52912272896845572">Privésleutelbestand is ongeldig.</translation>
@@ -4727,6 +4753,7 @@
 <translation id="5473099001878321374">Als je verdergaat, ga je ermee akkoord dat dit apparaat ook automatische updates en apps van Google, de provider van je kind en de fabrikant van dit apparaat kan downloaden en installeren, waarbij mogelijk mobiele data worden gebruikt. Sommige van deze apps kunnen in-app aankopen aanbieden.</translation>
 <translation id="5473156705047072749">{NUM_CHARACTERS,plural, =1{De pincode moet ten minste 1 teken bevatten}other{De pincode moet ten minste # tekens bevatten}}</translation>
 <translation id="5474859849784484111"><ph name="MANAGER" /> vereist dat je nu verbinding maakt met wifi en een update downloadt. Je kunt de update ook downloaden via een verbinding met datalimiet (er kunnen kosten van toepassing zijn).</translation>
+<translation id="5476016146231427848">Start je apparaat opnieuw op om Steam te gebruiken op je Chromebook</translation>
 <translation id="5481273127572794904">Geen toestemming om automatisch meerdere bestanden te downloaden</translation>
 <translation id="5481941284378890518">Printers in de buurt toevoegen</translation>
 <translation id="5483785310822538350">Toegang tot bestand en apparaat intrekken</translation>
@@ -4944,6 +4971,7 @@
 <translation id="5683806393796685434">Geef je activatiecode op</translation>
 <translation id="5684181005476681636">Wifi-gegevens</translation>
 <translation id="5684661240348539843">Item-ID</translation>
+<translation id="5684969244627829799">Log in op een gebruikersaccount en probeer het opnieuw</translation>
 <translation id="5687326903064479980">Tijdzone</translation>
 <translation id="5687935527303996204">Zorg dat je apparaat is aangesloten en zet het niet uit. De installatie kan tot 20 minuten duren. Je apparaat wordt automatisch uitgezet nadat de installatie is afgerond.</translation>
 <translation id="5689516760719285838">Locatie</translation>
@@ -5070,6 +5098,7 @@
 <translation id="5805697420284793859">Vensterbeheer</translation>
 <translation id="5806447147478173900">Totale opslagruimte gebruikt door getoonde sites: <ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">0° (standaard)</translation>
+<translation id="5810603387504252966">#borealis-enabled moet zijn aangezet in chrome://flags</translation>
 <translation id="5810809306422959727">Dit account komt niet in aanmerking voor ouderlijk toezicht</translation>
 <translation id="5811614940486072060">Dit bestand wordt niet vaak gedownload en kan gevaarlijk zijn</translation>
 <translation id="5812674658566766066">Alles uitvouwen</translation>
@@ -5149,6 +5178,7 @@
 <translation id="5882449899683447569">Er is iets misgegaan en je wachtwoorden zijn niet geïmporteerd</translation>
 <translation id="5882919346125742463">Bekende netwerken</translation>
 <translation id="5883356647197510494">Rechten voor <ph name="PERMISSION_1" />, <ph name="PERMISSION_2" /> automatisch geblokkeerd</translation>
+<translation id="5884447826201752041">Aanpassen voor elke extensie</translation>
 <translation id="5884474295213649357">Dit tabblad is gekoppeld aan een USB-apparaat.</translation>
 <translation id="5885314688092915589">Je organisatie beheert dit profiel</translation>
 <translation id="5886009770935151472">Vinger 1</translation>
@@ -5586,6 +5616,7 @@
 <translation id="6301300352769835063">Toestaan dat Google je hardwaregegevens gebruikt om <ph name="DEVICE_OS" /> te verbeteren. Als je geen toestemming geeft, worden deze gegevens nog wel naar Google gestuurd om te bepalen welke updates nodig zijn. De gegevens worden niet anderszins opgeslagen of gebruikt. Bekijk meer informatie op g.co/flex/HWDataCollection.</translation>
 <translation id="630292539633944562">Suggesties voor persoonlijke informatie</translation>
 <translation id="6305607932814307878">Algemeen beleid:</translation>
+<translation id="6305909198255586420">Installeer dit met je primaire profiel</translation>
 <translation id="6307990684951724544">Systeem is bezet</translation>
 <translation id="6308493641021088955">Inloggen mogelijk gemaakt door <ph name="EXTENSION_NAME" /></translation>
 <translation id="6308937455967653460">Lin&amp;k opslaan als...</translation>
@@ -5907,6 +5938,7 @@
 <translation id="6608166463665411119">E-simkaart resetten</translation>
 <translation id="6609478180749378879">Nadat je de incognitomodus hebt afgesloten, worden de inloggegevens opgeslagen op dit apparaat. Je kunt later weer inloggen bij deze website met je apparaat.</translation>
 <translation id="6610002944194042868">Opties voor vertalen</translation>
+<translation id="6611907964265870728">Zorg dat je apparaat verbinding heeft met internet</translation>
 <translation id="6611972847767394631">Hier vind je je tabbladen</translation>
 <translation id="6613668613087513143">Er is niet voldoende ruimte op dit apparaat beschikbaar om deze update af te ronden. Maak <ph name="NECESSARY_SPACE" /> vrij op je apparaat en probeer het opnieuw vanuit je Chrome-browser.</translation>
 <translation id="6615455863669487791">Tonen</translation>
@@ -6294,6 +6326,7 @@
 <translation id="697508444536771064">Linux afsluiten</translation>
 <translation id="6975361011348772931">Lezen en wijzigen aangevraagd</translation>
 <translation id="6978121630131642226">Zoekmachines</translation>
+<translation id="6979041727349121225">Energiebesparing</translation>
 <translation id="6979044105893951891">Beheerde gastsessies starten en beëindigen</translation>
 <translation id="6979158407327259162">Google Drive</translation>
 <translation id="6979440798594660689">Geluid uitzetten (standaard)</translation>
@@ -6346,6 +6379,8 @@
 <translation id="7014174261166285193">Installatie mislukt.</translation>
 <translation id="7014480873681694324">Markering verwijderen</translation>
 <translation id="7014741021609395734">Zoomniveau</translation>
+<translation id="7014961128696979283">Steam starten</translation>
+<translation id="7015088858756332848">Kan Steam niet starten op de Chromebook. Probeer het opnieuw.</translation>
 <translation id="7017004637493394352">Zeg nog een keer "Oké Google"</translation>
 <translation id="7017219178341817193">Een nieuwe pagina toevoegen</translation>
 <translation id="7017354871202642555">Kan modus niet instellen nadat venster is ingesteld.</translation>
@@ -6722,6 +6757,7 @@
 <translation id="7409854300652085600">Bookmarks geïmporteerd.</translation>
 <translation id="7410344089573941623">Vragen of <ph name="HOST" /> toegang wil tot je camera en microfoon</translation>
 <translation id="7410852728357935715">Casten naar een apparaat</translation>
+<translation id="7411614333737930931">Start je apparaat opnieuw op en probeer het nogmaals</translation>
 <translation id="741204030948306876">Ja, aanzetten</translation>
 <translation id="7412226954991670867">GPU-geheugen</translation>
 <translation id="7414464185801331860">18x</translation>
@@ -6737,6 +6773,7 @@
 <translation id="7423425410216218516">Zichtbaarheid staat <ph name="MINUTES" /> minuten aan</translation>
 <translation id="7423513079490750513"><ph name="INPUT_METHOD_NAME" /> verwijderen</translation>
 <translation id="7423807071740419372"><ph name="APP_NAME" /> heeft rechten nodig om te worden uitgevoerd</translation>
+<translation id="7424153922653300265">Energiebesparing staat aan</translation>
 <translation id="7424818322350938336">Netwerk toegevoegd</translation>
 <translation id="7427315069950454694">je herinneringen voor vandaag</translation>
 <translation id="7427348830195639090">Achtergrondpagina: <ph name="BACKGROUND_PAGE_URL" /></translation>
@@ -6952,6 +6989,7 @@
 <translation id="7635048370253485243">Vastgezet door je beheerder</translation>
 <translation id="7636919061354591437">Installeren op dit apparaat</translation>
 <translation id="7637253234491814483">Raak de vingerafdruksensor rechtsboven op je toetsenbord aan, naast de aan/uit-knop. Je vingerafdrukgegevens worden beveiligd opgeslagen en blijven uitsluitend op je <ph name="DEVICE_TYPE" /> staan.</translation>
+<translation id="7637272932128132922">Terwijl dit tabblad inactief was, heeft Geheugenbesparing geheugen vrijgemaakt voor andere taken. Je kunt dit altijd wijzigen via <ph name="SETTINGS_LINK" />.</translation>
 <translation id="7637593984496473097">Onvoldoende schijfruimte</translation>
 <translation id="7639914187072011620">Kan de SAML-omleidings-URL niet ophalen van de server</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> logt je automatisch in bij geschikte sites met wachtwoorden die je hebt opgeslagen.</translation>
@@ -7068,6 +7106,7 @@
 <translation id="7728668285692163452">Wijziging van kanaal wordt later toegepast</translation>
 <translation id="7730449930968088409">De content van je scherm vastleggen</translation>
 <translation id="7730683939467795481">Deze pagina is gewijzigd door de extensie '<ph name="EXTENSION_NAME" />'</translation>
+<translation id="7735165285389721951">Er is al een instelproces voor Steam actief. Wacht tot dit is afgerond voordat je het opnieuw probeert.</translation>
 <translation id="7737115349420013392">Koppelen met '<ph name="DEVICE_NAME" />'…</translation>
 <translation id="7737846262459425222">Je kunt dit altijd wijzigen via Instellingen &gt; Google Assistent &gt; Schermcontext.</translation>
 <translation id="7737948071472253612">Geen toestemming om je camera te gebruiken</translation>
@@ -7364,6 +7403,7 @@
 Sleutelbestand: <ph name="KEY_FILE" />
 
 Bewaar je sleutelbestand op een veilige plaats. Je hebt het bestand nodig om nieuwe versies van je extensie te maken.</translation>
+<translation id="8001100670809322641">Wacht een paar minuten en probeer het opnieuw</translation>
 <translation id="8002274832045662704">Geavanceerde printerconfiguratie</translation>
 <translation id="8002670234429879764"><ph name="PRINTER_NAME" /> is niet meer beschikbaar</translation>
 <translation id="8004092996156083991">Als je wachtwoorden zijn gehackt, laten we je dat weten.</translation>
@@ -7373,6 +7413,7 @@
 <translation id="8008356846765065031">Verbinding met internet verbroken. Controleer je internetverbinding.</translation>
 <translation id="8009225694047762179">Wachtwoorden beheren</translation>
 <translation id="8011372169388649948"><ph name="BOOKMARK_TITLE" /> verplaatst.</translation>
+<translation id="8011875486979733097">Steam kan niet worden geïnstalleerd</translation>
 <translation id="8012647001091218357">We kunnen je ouders momenteel niet bereiken. Probeer het opnieuw.</translation>
 <translation id="8013993649590906847">Als een afbeelding geen nuttige beschrijving bevat, probeert Chrome je er een te geven. Afbeeldingen worden naar Google verzonden om beschrijvingen te maken.</translation>
 <translation id="8014154204619229810">De updater wordt momenteel uitgevoerd. Klik op Vernieuwen om opnieuw te controleren.</translation>
@@ -7463,6 +7504,7 @@
 <translation id="808894953321890993">Wachtwoord wijzigen</translation>
 <translation id="8090234456044969073">Lijst met je meest bezochte websites bekijken</translation>
 <translation id="8090513782447872344">Je kunt altijd terugkomen om nog een kijkje te nemen</translation>
+<translation id="809312780580957751">Steam kan niet worden geïnstalleerd op dit apparaat</translation>
 <translation id="8093359998839330381"><ph name="PLUGIN_NAME" /> reageert niet</translation>
 <translation id="8095105960962832018"><ph name="BEGIN_PARAGRAPH1" />Maak een back-up in Google Drive. Herstel makkelijk je gegevens of wissel op elk gewenst moment van apparaat. Je back-up bevat app-gegevens.<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />Je back-ups worden geüpload naar Google en versleuteld met het wachtwoord van je Google-account.<ph name="END_PARAGRAPH2" />
@@ -7558,6 +7600,7 @@
 <translation id="8177318697334260664">{NUM_TABS,plural, =1{Tabblad verplaatsen naar nieuw venster}other{Tabbladen verplaatsen naar nieuw venster}}</translation>
 <translation id="8179188928355984576">Niet gebruikt met Android-apps</translation>
 <translation id="8179976553408161302">Enter</translation>
+<translation id="8180785270975217276">Energiebesparing staat aan</translation>
 <translation id="8180786512391440389">'<ph name="EXTENSION" />' kan afbeeldingen, video- en geluidsbestanden lezen en verwijderen op de gecontroleerde locaties.</translation>
 <translation id="8181215761849004992">Kan het domein niet koppelen. Controleer je account om te zien of je over voldoende rechten beschikt om apparaten toe te voegen.</translation>
 <translation id="8182105986296479640">App reageert niet</translation>
@@ -7680,6 +7723,7 @@
 <translation id="828642162569365647">Dit wachtwoord of deze pincode beschermt je gegevens op deze <ph name="DEVICE_TYPE" /> en informatie die je opent vanaf je telefoon. Je moet elke keer ontgrendelen als je <ph name="DEVICE_TYPE" /> uit de slaapstand komt.</translation>
 <translation id="8287902281644548111">Zoeken op API-aanroep/URL</translation>
 <translation id="8288032458496410887"><ph name="APP" /> verwijderen...</translation>
+<translation id="8288539437195337464">Zorg dat je apparaat up-to-date is en probeer het opnieuw</translation>
 <translation id="8289128870594824098">Schijfgrootte</translation>
 <translation id="8289509909262565712">Welkom bij <ph name="DEVICE_OS" /></translation>
 <translation id="8293206222192510085">Bookmark toevoegen</translation>
@@ -7969,11 +8013,13 @@
 <translation id="859246725979739260">Toegang tot je locatie is geblokkeerd voor deze site.</translation>
 <translation id="8593121833493516339">Stuur gebruiks- en diagnostische gegevens. Verbeter de Android-functionaliteit voor je kind door automatisch diagnostische, apparaat- en app-gebruiksgegevens naar Google te sturen. Deze gegevens worden niet gebruikt om je kind te identificeren en kunnen helpen om de systeem- en app-stabiliteit te verbeteren en andere optimalisaties mogelijk te maken. Daarnaast zijn bepaalde verzamelde gegevens nuttig voor Google-apps en -partners, zoals Android-ontwikkelaars. Als je aanvullende Web- en app-activiteit hebt aangezet voor het account van je kind, kunnen deze gegevens worden opgeslagen in het Google-account van je kind. <ph name="BEGIN_LINK1" />Meer informatie<ph name="END_LINK1" /></translation>
 <translation id="8596540852772265699">Aangepaste bestanden</translation>
+<translation id="8597404194697561297">Welkom bij Steam op Chromebook</translation>
 <translation id="8597845839771543242">Notatie van property:</translation>
 <translation id="8599681327221583254">Een of meer beleidsregels zijn niet correct ingesteld. Neem contact op met je beheerder.</translation>
 <translation id="8599864823732014237">Zakelijke inschrijving overslaan?</translation>
 <translation id="8601206103050338563">TLS WWW-clientverificatie</translation>
 <translation id="8601611099293226919">Zoeken op je scherm met Google Lens</translation>
+<translation id="8602674530529411098">Apps (bèta)</translation>
 <translation id="8602851771975208551">Een ander programma op je computer heeft een app toegevoegd die de manier waarop Chrome werkt kan wijzigen.</translation>
 <translation id="8605428685123651449">SQLite-geheugen</translation>
 <translation id="8608618451198398104">Een Kerberos-ticket toevoegen</translation>
@@ -8659,6 +8705,7 @@
 <translation id="939598580284253335">Wachtwoordzin opgeven</translation>
 <translation id="939736085109172342">Nieuwe map</translation>
 <translation id="942532530371314860"><ph name="APP_NAME" /> deelt een Chrome-tabblad en audio.</translation>
+<translation id="944799160843436808">Er is iets misgegaan bij het instellen van Steam op je Chromebook</translation>
 <translation id="945522503751344254">Feedback sturen</translation>
 <translation id="947329552760389097">Elementen &amp;inspecteren</translation>
 <translation id="947526284350604411">Jouw antwoord</translation>
@@ -8683,6 +8730,7 @@
 <translation id="968000525894980488">Zet Google Play-services aan.</translation>
 <translation id="968037381421390582">Pl&amp;akken en zoeken naar '<ph name="SEARCH_TERMS" />'</translation>
 <translation id="969096075394517431">Talen wijzigen</translation>
+<translation id="969574218206797926">Met Geheugenbesparing wordt geheugen van inactieve tabbladen vrijgemaakt zodat het kan worden gebruikt door actieve tabbladen en andere apps</translation>
 <translation id="970047733946999531">{NUM_TABS,plural, =1{1 tabblad}other{# tabbladen}}</translation>
 <translation id="971510864672937292">Sitegegevens en rechten wissen voor <ph name="SITE_NAME" /> en alle onderliggende sites?</translation>
 <translation id="971774202801778802">Bookmark-URL</translation>
diff --git a/chrome/app/resources/generated_resources_no.xtb b/chrome/app/resources/generated_resources_no.xtb
index 9beea06e..3555583c 100644
--- a/chrome/app/resources/generated_resources_no.xtb
+++ b/chrome/app/resources/generated_resources_no.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="no">
 <translation id="1001033507375626788">Dette nettverket deles med deg</translation>
+<translation id="1002085272681738789">Fanen er aktiv igjen</translation>
 <translation id="1003088604756913841">Åpne linken i et nytt <ph name="APP" />-vindu</translation>
 <translation id="100323615638474026">USB-enhet (<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />)</translation>
 <translation id="1004218526896219317">Nettstedstilgang</translation>
@@ -132,7 +133,7 @@
 <translation id="1119447706177454957">Intern feil</translation>
 <translation id="1122068467107743258">Jobb</translation>
 <translation id="1122198203221319518">&amp;Verktøy</translation>
-<translation id="1122242684574577509">Autentiseringen mislyktes. Klikk for å gå til påloggingssiden for Wi-Fi-nettverket du bruker (<ph name="NETWORK_ID" />).</translation>
+<translation id="1122242684574577509">Autentiseringen mislyktes. Klikk for å gå til påloggingssiden for wifi-nettverket du bruker (<ph name="NETWORK_ID" />).</translation>
 <translation id="1122913801042512795">Påloggingsinformasjonen for kontoen din er utdatert. Logg av og på igjen.</translation>
 <translation id="1122960773616686544">Bokmerkenavn</translation>
 <translation id="1124772482545689468">Bruker</translation>
@@ -244,8 +245,8 @@
 <translation id="1217668622537098248">Gå tilbake til venstreklikk etter handling</translation>
 <translation id="121783623783282548">Passordene stemmer ikke overens.</translation>
 <translation id="1218015446623563536">Slett Linux</translation>
-<translation id="1218839827383191197"><ph name="BEGIN_PARAGRAPH1" />Googles posisjonstjeneste bruker kilder som Wi-Fi, mobilnettverk og sensorer til å beregne enhetens posisjon.<ph name="END_PARAGRAPH1" />
-    <ph name="BEGIN_PARAGRAPH2" />Du kan slå av Posisjon ved å slå av hovedinnstillingen for Posisjon på enheten. Du kan også slå av bruken av Wi-Fi, mobilnettverk og sensorer for posisjon fra posisjonsinnstillingene.<ph name="END_PARAGRAPH2" /></translation>
+<translation id="1218839827383191197"><ph name="BEGIN_PARAGRAPH1" />Googles posisjonstjeneste bruker kilder som Wifi, mobilnettverk og sensorer til å beregne enhetens posisjon.<ph name="END_PARAGRAPH1" />
+    <ph name="BEGIN_PARAGRAPH2" />Du kan slå av Posisjon ved å slå av hovedinnstillingen for Posisjon på enheten. Du kan også slå av bruken av Wifi, mobilnettverk og sensorer for posisjon fra posisjonsinnstillingene.<ph name="END_PARAGRAPH2" /></translation>
 <translation id="122082903575839559">Signaturalgoritme for sertifikat</translation>
 <translation id="1221024147024329929">PKCS #1 MD2 med RSA-kryptering</translation>
 <translation id="1221825588892235038">Bare utvalg</translation>
@@ -323,6 +324,7 @@
 <translation id="1296911687402551044">Fest den valgte fanen</translation>
 <translation id="1297175357211070620">Destinasjon</translation>
 <translation id="129770436432446029">Send tilbakemelding om <ph name="EXPERIMENT_NAME" /></translation>
+<translation id="130097046531636712">Dette forlenger batterilevetiden ved å begrense bakgrunnsaktivitet og visuelle effekter, for eksempel jevn rulling</translation>
 <translation id="1301135395320604080"><ph name="ORIGIN" /> kan redigere disse filene</translation>
 <translation id="1302227299132585524">Tillat JavaScript fra Apple-hendelser</translation>
 <translation id="1303101771013849280">HTML-fil med bokmerker</translation>
@@ -381,6 +383,7 @@
 <translation id="1361655923249334273">Ubrukt</translation>
 <translation id="1362865166188278099">Mekanisk feil. Sjekk skriveren</translation>
 <translation id="1363585519747660921">USB-skriveren må konfigureres</translation>
+<translation id="136378536198524553">Strømsparing er på</translation>
 <translation id="1368603372088757436">Linux støttes ikke på <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Finn ut mer<ph name="LINK_END" /></translation>
 <translation id="1372841398847029212">Synkroniser til kontoen din</translation>
 <translation id="1373176046406139583">Synligheten til enheten din kontrollerer hvem som kan dele med deg mens skjermen er låst opp. <ph name="LINK_BEGIN" />Finn ut mer<ph name="LINK_END" /></translation>
@@ -552,14 +555,14 @@
 <translation id="1523978563989812243">Motorer for tekst til tale</translation>
 <translation id="1524430321211440688">Tastatur</translation>
 <translation id="1524563461097350801">Nei takk</translation>
-<translation id="1525740877599838384">Bruk bare Wi-Fi til å fastslå posisjonen</translation>
+<translation id="1525740877599838384">Bruk bare Wifi til å fastslå posisjonen</translation>
 <translation id="152629053603783244">Start Linux på nytt</translation>
 <translation id="1526335046150927198">Slå på rulleakselerering for styreflaten</translation>
 <translation id="1526560967942511387">Dokument uten tittel</translation>
 <translation id="1527336312600375509">Oppdateringsfrekvens for skjermen</translation>
 <translation id="152913213824448541">Kontakter for nærdeling</translation>
 <translation id="1529891865407786369">Strømkilde</translation>
-<translation id="1531275250079031713">Vis dialogboksen «Legg til nytt Wi-Fi-nettverk»</translation>
+<translation id="1531275250079031713">Vis dialogboksen «Legg til nytt Wifi-nettverk»</translation>
 <translation id="1531734061664070992"><ph name="FIRST_SWITCH" />, <ph name="SECOND_SWITCH" />, <ph name="THIRD_SWITCH" /></translation>
 <translation id="1533948060140843887">Jeg forstår at denne nedlastingen kommer til å skade datamaskinen min</translation>
 <translation id="1535228823998016251">Høyt</translation>
@@ -601,7 +604,7 @@
 <translation id="1571304935088121812">Kopiér brukernavnet</translation>
 <translation id="1571738973904005196">Vis fanen <ph name="TAB_ORIGIN" /></translation>
 <translation id="1572139610531470719"><ph name="WINDOW_TITLE" /> (gjest)</translation>
-<translation id="1572266655485775982">Slå på Wi-Fi</translation>
+<translation id="1572266655485775982">Slå på Wifi</translation>
 <translation id="1572876035008611720">Skriv inn e-postadressen din</translation>
 <translation id="1573117025466282241">Bruk telefonen med en QR-kode</translation>
 <translation id="1575741822946219011">Språk og inndatametoder</translation>
@@ -611,7 +614,7 @@
 <translation id="1581962803218266616">Vis i Finder</translation>
 <translation id="1582955169539260415">slett [<ph name="FINGERPRINT_NAME" />]</translation>
 <translation id="1583127975413389276"><ph name="LANGUAGE" /> behandles lokalt og fungerer uten nett</translation>
-<translation id="1584990664401018068">Det kan hende at Wi-Fi-nettverket du bruker (<ph name="NETWORK_ID" />), krever autentisering.</translation>
+<translation id="1584990664401018068">Det kan hende at Wifi-nettverket du bruker (<ph name="NETWORK_ID" />), krever autentisering.</translation>
 <translation id="1585717515139318619">Et annet program på datamaskinen la til et tema som kan endre måten Chrome fungerer på. 
 
 <ph name="EXTENSION_NAME" /></translation>
@@ -648,6 +651,7 @@
 <translation id="1610272688494140697">Appinnstillinger</translation>
 <translation id="161042844686301425">Cyan</translation>
 <translation id="1611432201750675208">Enheten er låst</translation>
+<translation id="1611776894942218234">Enheten må være i betakanalen</translation>
 <translation id="1612019740169791082">Beholderen er ikke konfigurert med støtte for endring av diskstørrelse. For å justere mengden plass som er reservert for Linux, sikkerhetskopiér disken og gjenopprett den i en ny beholder.</translation>
 <translation id="1613019471223620622">Vis passord for <ph name="USERNAME" /> på <ph name="DOMAIN" /></translation>
 <translation id="1613149688105334014">Gamle versjoner av Chrome-apper er ikke mulige å åpne etter desember 2022. Du kan sjekke om en ny versjon er tilgjengelig.</translation>
@@ -667,7 +671,7 @@
 <translation id="1621729191093924223">Funksjoner som krever mikrofon, kommer ikke til å virke</translation>
 <translation id="1621831347985899379">Dataene på <ph name="DEVICE_TYPE" /> kommer til å bli slettet</translation>
 <translation id="1621984899599015181">Alternativer for deling administreres av organisasjonen din. Noen elementer kan være skjult.</translation>
-<translation id="1622054403950683339">Glem Wi-Fi-nettverket</translation>
+<translation id="1622054403950683339">Glem Wifi-nettverket</translation>
 <translation id="1623723619460186680">Reduksjon av blått lys</translation>
 <translation id="1624599281783425761">Du kommer ikke til å se <ph name="MERCHANT" /> mer</translation>
 <translation id="1624863973697515675">Denne filen er for stor til at enheten din kan håndtere den. Prøv å laste den ned på en annen enhet</translation>
@@ -699,14 +703,14 @@
 <translation id="1642492862748815878">Koblet til <ph name="DEVICE" /> og <ph name="NUMBER_OF_DEVICES" /> andre Bluetooth-enheter</translation>
 <translation id="1642494467033190216">Fjerning av rootfs-beskyttelse og omstart er nødvendig før du slår på andre feilsøkingsfunksjoner.</translation>
 <translation id="1643072738649235303">X9.62 ECDSA-signatur med SHA-1</translation>
-<translation id="1643921258693943800">For å bruke nærdeling, slå på Bluetooth og Wi-Fi</translation>
+<translation id="1643921258693943800">For å bruke nærdeling, slå på Bluetooth og Wifi</translation>
 <translation id="1644574205037202324">Logg</translation>
 <translation id="1644852018355792105">Skriv inn Bluetooth-passordet for enheten <ph name="DEVICE" /></translation>
 <translation id="1645004815457365098">Ukjent kilde</translation>
 <translation id="1645516838734033527">Smart Lock krever en skjermlås på telefonen for å holde <ph name="DEVICE_TYPE" />-enheten trygg.</translation>
 <translation id="1646982517418478057">Skriv inn et passord for å kryptere dette sertifikatet.</translation>
 <translation id="1647408325348388858">Vil du åpne og redigere <ph name="FILE_NAME" /> i dette nettprogrammet?</translation>
-<translation id="1648528859488547844">Bruk Wi-Fi eller mobilnettverk til å fastslå posisjonen</translation>
+<translation id="1648528859488547844">Bruk Wifi eller mobilnettverk til å fastslå posisjonen</translation>
 <translation id="164936512206786300">Koble fra Bluetooth-enheten</translation>
 <translation id="1651008383952180276">Du må skrive inn den samme passordfrasen to ganger</translation>
 <translation id="1652326691684645429">Slå på nærdeling</translation>
@@ -1034,7 +1038,7 @@
 <translation id="1936157145127842922">Vis i mappe</translation>
 <translation id="1936931585862840749">Bruk et tall for å angi hvor mange eksemplarer som skal skrives ut (1–<ph name="MAX_COPIES" />).</translation>
 <translation id="1937774647013465102">Kan ikke importere beholderarkitekturtypen <ph name="ARCHITECTURE_CONTAINER" /> med denne enheten (<ph name="ARCHITECTURE_DEVICE" />). Du kan prøve å gjenopprette denne beholderen på en annen enhet, eller du kan få tilgang til filene i beholderavbildningen ved å åpne den i Filer-appen.</translation>
-<translation id="1938320257168860255">Noe gikk galt. Sørg for at telefonen er i nærheten, at den er opplåst, og at Bluetooth og Wi-Fi er på.</translation>
+<translation id="1938320257168860255">Noe gikk galt. Sørg for at telefonen er i nærheten, at den er opplåst, og at Bluetooth og Wifi er på.</translation>
 <translation id="1938351510777341717">Ekstern kommando</translation>
 <translation id="1940546824932169984">Tilkoblede enheter</translation>
 <translation id="1941410638996203291">Starttid: <ph name="TIME" /></translation>
@@ -1093,7 +1097,7 @@
 <translation id="1999115740519098545">Ved oppstart</translation>
 <translation id="2000419248597011803">Sender noen informasjonskapsler og søk fra adressefeltet og søkefeltet samt noen informasjonskapsler til standardsøkemotoren din</translation>
 <translation id="2002109485265116295">Sanntid</translation>
-<translation id="2003130567827682533">For å aktivere «<ph name="NAME" />»-dataene må du først koble til et Wi-Fi-nettverk</translation>
+<translation id="2003130567827682533">For å aktivere «<ph name="NAME" />»-dataene må du først koble til et Wifi-nettverk</translation>
 <translation id="2004697686368036666">Det kan hende at funksjoner på noen nettsteder ikke fungerer</translation>
 <translation id="2005199804247617997">Andre profiler</translation>
 <translation id="2005967212456643969">Tilpass tillatelser for hver utvidelse</translation>
@@ -1102,12 +1106,12 @@
 <translation id="2009590708342941694">Emojiverktøy</translation>
 <translation id="2010501376126504057">Kompatible enheter</translation>
 <translation id="2010888903612390044">Det er ingen mikrofon tilkoblet</translation>
-<translation id="2015232545623037616">PC og Chromecast på samme Wi-Fi-nettverk</translation>
+<translation id="2015232545623037616">PC og Chromecast på samme Wifi-nettverk</translation>
 <translation id="2016473077102413275">Funksjoner som krever bilder, kommer ikke til å virke</translation>
 <translation id="2016574333161572915">Google Meet-enhetene dine er klare til konfigurering</translation>
 <translation id="2017334798163366053">Deaktiver innsamling av ytelsesdata</translation>
 <translation id="2018352199541442911">Beklager, men den eksterne lagringsenheten din støttes foreløpig ikke.</translation>
-<translation id="2018615379714355980">PC er kablet og Chromecast er på Wi-Fi</translation>
+<translation id="2018615379714355980">PC er kablet og Chromecast er på Wifi</translation>
 <translation id="2019718679933488176">&amp;Åpne lyd i ny fane</translation>
 <translation id="2020183425253392403">Vis innstillingene for nettverksadresse</translation>
 <translation id="2020225359413970060">Gjennomsøk fil</translation>
@@ -1120,8 +1124,8 @@
 <translation id="2030455719695904263">Styreflate</translation>
 <translation id="2031639749079821948">Passordet er lagret i Google-kontoen din</translation>
 <translation id="2031914984822377766">Legg til <ph name="LINK_BEGIN" />nettstedspråkene<ph name="LINK_END" /> du foretrekker. Det øverste språket på listen blir brukt i oversettelser.</translation>
-<translation id="2033758234986231162">Kan ikke opprette forbindelse med telefonen din. Sørg for at telefonen er i nærheten, at den er opplåst, og at Bluetooth og Wi-Fi er på.</translation>
-<translation id="2034346955588403444">Legg til et annet Wi-Fi-nettverk</translation>
+<translation id="2033758234986231162">Kan ikke opprette forbindelse med telefonen din. Sørg for at telefonen er i nærheten, at den er opplåst, og at Bluetooth og Wifi er på.</translation>
+<translation id="2034346955588403444">Legg til et annet Wifi-nettverk</translation>
 <translation id="2035211704574173780">Gråtoner</translation>
 <translation id="203574396658008164">Slå på notatskriving på låseskjermen</translation>
 <translation id="2036514476578229158">Du ba om å få besøke dette nettstedet. Foreldrene dine kan svare i Family Link.</translation>
@@ -1210,6 +1214,7 @@
 <translation id="2098805196501063469">Sjekk resten av passordene</translation>
 <translation id="2099686503067610784">Slette tjenersertifikatet «<ph name="CERTIFICATE_NAME" />»?</translation>
 <translation id="2100273922101894616">Automatisk pålogging</translation>
+<translation id="2100986609271491802">Denne enheten støtter for tiden ikke Steam på Chromebook</translation>
 <translation id="2101225219012730419">Versjon:</translation>
 <translation id="2102396546234652240">Ikke la nettsteder bruke mikrofonen</translation>
 <translation id="2102495993840063010">Android-apper</translation>
@@ -1276,7 +1281,7 @@
 <translation id="2157875535253991059">Denne siden vises nå i full skjerm.</translation>
 <translation id="2158475082070321257">Kopiér link til markert tekst</translation>
 <translation id="2159488579268505102">USB-C</translation>
-<translation id="216169395504480358">Legg til Wi-Fi</translation>
+<translation id="216169395504480358">Legg til wifi</translation>
 <translation id="2162155940152307086">Synkroniseringen starter når du går ut av synkroniseringsinnstillingene</translation>
 <translation id="2162705204091149050">lese informasjon om nettleseren, OS-et, enheten, installert programvare og filer</translation>
 <translation id="2162926944953615670">Ingen tilgjengelige e-SIM-kortprofiler</translation>
@@ -1471,7 +1476,7 @@
 <translation id="2322193970951063277">Topp- og bunntekst</translation>
 <translation id="2322318151094136999">Spør når et nettsted vil ha tilgang til serielle porter (anbefales)</translation>
 <translation id="2322622365472107569">Sluttid: <ph name="TIME" /></translation>
-<translation id="2323018538045954000">Lagrede Wi-Fi-nettverk</translation>
+<translation id="2323018538045954000">Lagrede Wifi-nettverk</translation>
 <translation id="2325444234681128157">Husk passordet</translation>
 <translation id="2326188115274135041">Bekreft PIN-koden for å slå på automatisk opplåsing</translation>
 <translation id="2326931316514688470">&amp;Last inn appen på nytt</translation>
@@ -1509,6 +1514,9 @@
 <translation id="2350133097354918058">Lastet inn på nytt</translation>
 <translation id="2350182423316644347">Appen startes opp …</translation>
 <translation id="235028206512346451">Hvis du beveger deg bort fra enheten, låses skjermen automatisk. Når du er foran enheten, holder skjermen seg ulåst lenger. Hvis du ikke bruker en låseskjerm, går enheten over i hvilemodus i stedet for å bli låst.</translation>
+<translation id="2350866610930767288"><ph name="BEGIN_PARAGRAPH1" />Hvis du har fått beskjed om å skrive inn en ID-kode for en forhandlerbutikk under installasjon av demomodus, kan du skrive den inn på høyre side*.  Ellers kan du la dette feltet stå tomt og fortsette.<ph name="END_PARAGRAPH1" />
+    <ph name="BEGIN_PARAGRAPH2" />Du kan fortsatt installere demomodus uten noen kode, men det er viktig at du skriver inn denne koden hvis den er nødvendig for butikken din.<ph name="END_PARAGRAPH2" />
+    <ph name="BEGIN_PARAGRAPH3" />*Merk: Google bruker disse kodene til å identifisere hvilken versjon av demomodusen enheten skal motta, og til å måle bruken av demomodus.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="2352495879228166246">{NUM_ITEMS,plural, =1{1 element}other{{NUM_ITEMS} elementer}}</translation>
 <translation id="2352662711729498748">&lt; 1 MB</translation>
 <translation id="2352810082280059586">Notater på låseskjermen lagres automatisk i <ph name="LOCK_SCREEN_APP_NAME" />. Det nyeste notatet ditt forblir på låseskjermen.</translation>
@@ -1536,7 +1544,7 @@
 <translation id="2373666622366160481">Tilpass til papiret</translation>
 <translation id="2375406435414127095">Koble til telefonen din</translation>
 <translation id="2376056713414548745">Les høyt</translation>
-<translation id="2377588536920405462">Du kan slå av Posisjon ved å slå av enhetens hovedinnstilling for Posisjon. Du kan også slå av bruken av Wi-Fi, mobilnettverk og sensorer for posisjon i posisjonsinnstillingene.</translation>
+<translation id="2377588536920405462">Du kan slå av Posisjon ved å slå av enhetens hovedinnstilling for Posisjon. Du kan også slå av bruken av Wifi, mobilnettverk og sensorer for posisjon i posisjonsinnstillingene.</translation>
 <translation id="2377667304966270281">Harde feil</translation>
 <translation id="237828693408258535">Vil du oversette denne siden?</translation>
 <translation id="2378982052244864789">Velg katalog for utvidelsen.</translation>
@@ -1575,7 +1583,7 @@
 <translation id="2423578206845792524">Lagre &amp;bildet som...</translation>
 <translation id="2424424966051154874">{0,plural, =1{Gjest}other{Gjest (#)}}</translation>
 <translation id="2428510569851653187">Beskriv hva du holdt på med da fanen krasjet</translation>
-<translation id="2428939361789119025">Slå av Wi-Fi</translation>
+<translation id="2428939361789119025">Slå av Wifi</translation>
 <translation id="2428978615149723410">disse handlekurvene</translation>
 <translation id="2431027948063157455">Google-assistenten kunne ikke lastes inn. Kontrollér nettverkstilkoblingen din, og prøv på nytt.</translation>
 <translation id="243179355394256322">Organisasjonen din begrenser registrering av enheter til kun autoriserte brukere. Denne brukeren er ikke autorisert til å registrere enheter. Sørg for at brukeren har administratorrettigheten «Registrer Google Meet-enheter» i Brukere-delen av administrasjonskonsollen.</translation>
@@ -1823,7 +1831,7 @@
 <translation id="2659381484350128933"><ph name="FOOTNOTE_POINTER" />Funksjonene varierer fra enhet til enhet</translation>
 <translation id="2659971421398561408">Endre diskstørrelsen for Crostini</translation>
 <translation id="2660779039299703961">Aktivitet</translation>
-<translation id="266079277508604648">Kan ikke koble til skriveren. Kontrollér at skriveren er slått på og koblet til Chromebooken din via Wi-Fi eller USB.</translation>
+<translation id="266079277508604648">Kan ikke koble til skriveren. Kontrollér at skriveren er slått på og koblet til Chromebooken din via Wifi eller USB.</translation>
 <translation id="2661315027005813059">Side i frem-og-tilbake-bufferen: <ph name="BACK_FORWARD_CACHE_PAGE_URL" /></translation>
 <translation id="2661714428027871023">Surf raskere og bruk mindre data med forenklet modus. Klikk for å finne ut mer.</translation>
 <translation id="2662876636500006917">Chrome Nettmarked</translation>
@@ -1959,6 +1967,7 @@
 <translation id="2776560192867872731">Endre enhetsnavn for <ph name="DEVICE_NAME" /></translation>
 <translation id="2777251078198759550">Slett denne beholderen</translation>
 <translation id="2778471504622896352">Legg til eksterne apper i ChromeOS-appoversikten</translation>
+<translation id="2781120507965857989">Slå på synkronisering for å få blant annet bokmerker, passord og logg på denne enheten og alle andre steder du synkroniserer. Google kan bruke loggen din for å gi Søk og andre Google-tjenester et personlig preg.</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2782104745158847185">Feil ved installasjon av Linux-programmet</translation>
 <translation id="2783298271312924866">Lastet ned</translation>
@@ -1978,7 +1987,8 @@
 <translation id="2792465461386711506">Slå på Chrome-synkronisering for å se nylige Chrome-faner fra telefonen din</translation>
 <translation id="2792697226874849938">Restriksjonsbilde</translation>
 <translation id="2794233252405721443">Nettstedet er blokkert</translation>
-<translation id="2794522004398861033">Koble til Wi-Fi eller Ethernet for å konfigurere eSIM</translation>
+<translation id="2794522004398861033">Koble til wifi eller Ethernet for å konfigurere eSIM</translation>
+<translation id="2795074478966352573">Kontoer som administreres via Family Link, støttes foreløpig ikke</translation>
 <translation id="2795716239552913152">Nettsteder bruker vanligvis posisjonen din for å kunne tilby relevante funksjoner eller opplysninger, som lokalnyheter eller butikker i nærheten</translation>
 <translation id="2796424461616874739">Tidsavbrudd for autentisering under tilkoblingen til <ph name="DEVICE_NAME" />.</translation>
 <translation id="2796740370559399562">Fortsett å tillate informasjonskapsler</translation>
@@ -2021,7 +2031,7 @@
 <translation id="2824942875887026017"><ph name="IDS_SHORT_PRODUCT_NAME" /> bruker proxy-tjenerinnstillinger fra administratoren din</translation>
 <translation id="2825758591930162672">Enhetens offentlige nøkkel</translation>
 <translation id="2828375943530438449">Tilbake fra pålogging</translation>
-<translation id="2828650939514476812">Koble til Wi-Fi-nettverk</translation>
+<translation id="2828650939514476812">Koble til wifi-nettverk</translation>
 <translation id="2831430281393059038">Enheten støttes</translation>
 <translation id="2832124733806557606">Barnet ditt kan bruke en PIN-kode for å logge på eller låse opp enheten.</translation>
 <translation id="2835177225987815960">Den nåværende konfigurasjonen din for skanning blir tilbakestilt, inkludert eventuelle brytere som er tilordnet, og hastighetsinnstillinger for automatisk skanning.</translation>
@@ -2164,6 +2174,7 @@
 <translation id="2949289451367477459">Bruk posisjon. Tillat at apper og tjenester med posisjonstillatelse bruker posisjonen til enheten. Google kan samle inn posisjonsdata med jevne mellomrom og bruke disse dataene til å forbedre posisjonsnøyaktigheten og posisjonsbaserte tjenester på en anonym måte. <ph name="BEGIN_LINK1" />Finn ut mer<ph name="END_LINK1" /></translation>
 <translation id="2950666755714083615">Registrer meg</translation>
 <translation id="2953019166882260872">Koble til telefonen med kabel</translation>
+<translation id="2953218713108551165">Varsler er ikke tillatt for <ph name="SITE" />. Du blir spurt på nytt neste gang du besøker nettstedet.</translation>
 <translation id="2956070239128776395">En seksjon er flettet i en gruppe: <ph name="ERROR_LINE" /></translation>
 <translation id="2958721676848865875">Advarsel om pakkeutvidelse</translation>
 <translation id="2959127025785722291">Noe gikk galt. Gjennomsøkingen kunne ikke fullføres. Prøv på nytt.</translation>
@@ -2174,7 +2185,7 @@
 <translation id="2961210776189273067">Tittel</translation>
 <translation id="2961695502793809356">Klikk for å gå fremover – hold for å se logg</translation>
 <translation id="2963151496262057773">Følgende programtillegg svarer ikke: <ph name="PLUGIN_NAME" />Vil du stoppe det?</translation>
-<translation id="2964193600955408481">Deaktiver Wi-Fi</translation>
+<translation id="2964193600955408481">Deaktiver Wifi</translation>
 <translation id="2964245677645334031">Tilgang for nærdeling</translation>
 <translation id="2966937470348689686">Administrer Android-innstillinger</translation>
 <translation id="2967926928600500959">Nettadresser som gir treff på disse reglene, blir tvunget til å åpnes i en spesifikk nettleser.</translation>
@@ -2210,13 +2221,13 @@
 <translation id="3003144360685731741">Foretrukne nettverk</translation>
 <translation id="3003623123441819449">CSS-buffer</translation>
 <translation id="3003828226041301643">Kan ikke knytte enheten til domenet. Kontrollér kontoen din for å se om du har rettighet til å legge til enheter.</translation>
-<translation id="3003967365858406397"><ph name="PHONE_NAME" />-enheten din oppretter en privat Wi-Fi-tilkobling.</translation>
+<translation id="3003967365858406397"><ph name="PHONE_NAME" />-enheten din oppretter en privat Wifi-tilkobling.</translation>
 <translation id="3005574332301273731">Ikke vis</translation>
 <translation id="3006881078666935414">Ingen bruksdata</translation>
 <translation id="3007771295016901659">Dupliser fanen</translation>
 <translation id="3008232374986381779">Kjør Linux-verktøy, -redigeringsverktøy og -IDE-er på <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Finn ut mer<ph name="LINK_END" /></translation>
 <translation id="3008272652534848354">Tilbakestill tillatelser</translation>
-<translation id="3008694618228964140">{NUM_DAYS,plural, =1{<ph name="MANAGER" /> krever at du kobler til Wi-Fi i dag og laster ned en oppdatering. Eller last ned via en tilkobling med datamåling (kostnader kan påløpe).}other{<ph name="MANAGER" /> krever at du kobler til Wi-Fi og laster ned en oppdatering før tidsfristen. Eller last ned via en tilkobling med datamåling (kostnader kan påløpe).}}</translation>
+<translation id="3008694618228964140">{NUM_DAYS,plural, =1{<ph name="MANAGER" /> krever at du kobler til Wifi i dag og laster ned en oppdatering. Eller last ned via en tilkobling med datamåling (kostnader kan påløpe).}other{<ph name="MANAGER" /> krever at du kobler til Wifi og laster ned en oppdatering før tidsfristen. Eller last ned via en tilkobling med datamåling (kostnader kan påløpe).}}</translation>
 <translation id="3009178788565917040">Utdata</translation>
 <translation id="3009300415590184725">Er du sikker på at du vil avbryte konfigurasjonsprosessen for mobildatatjenesten?</translation>
 <translation id="3009779501245596802">Indekserte databaser</translation>
@@ -2277,7 +2288,7 @@
 <translation id="3058517085907878899">Gi enheten navn</translation>
 <translation id="3059195548603439580">Ser du etter systemkomponenter? Gå til</translation>
 <translation id="3060952009917586498">Bytt enhetsspråk. Gjeldende språk er <ph name="LANGUAGE" />.</translation>
-<translation id="3060987956645097882">Vi kunne ikke koble til telefonen. Sørg for at telefonen er i nærheten, at den er opplåst, og at Bluetooth og Wi-Fi er slått på.</translation>
+<translation id="3060987956645097882">Vi kunne ikke koble til telefonen. Sørg for at telefonen er i nærheten, at den er opplåst, og at Bluetooth og Wifi er slått på.</translation>
 <translation id="3064871050034234884">Nettsteder kan spille av lyd</translation>
 <translation id="3065041951436100775">Tilbakemelding for lukket fane.</translation>
 <translation id="3065522099314259755">Gjentakelsesforsinkelse for tastaturet</translation>
@@ -2343,7 +2354,7 @@
 <translation id="3129215702932019810">Feil under programoppstart</translation>
 <translation id="3130528281680948470">Enheten blir tilbakestilt, og alle brukerkontoer og lokale data blir fjernet. Dette kan ikke reverseres.</translation>
 <translation id="313205617302240621">Glemt passordet?</translation>
-<translation id="3132277757485842847">Vi kunne ikke opprettholde tilkoblingen til telefonen. Sørg for at telefonen er i nærheten, at den er opplåst, og at Bluetooth og Wi-Fi er slått på.</translation>
+<translation id="3132277757485842847">Vi kunne ikke opprettholde tilkoblingen til telefonen. Sørg for at telefonen er i nærheten, at den er opplåst, og at Bluetooth og Wifi er slått på.</translation>
 <translation id="3132896062549112541">Regel</translation>
 <translation id="3132996321662585180">Oppdater daglig</translation>
 <translation id="3134393957315651797">Velg eksperimenttilstand for <ph name="EXPERIMENT_NAME" />-eksperimentet. Beskrivelse av eksperimentet: <ph name="EXPERIMENT_DESCRIPTION" /></translation>
@@ -2395,6 +2406,7 @@
 <translation id="3188465121994729530">Glidende gjennomsnitt</translation>
 <translation id="3189187154924005138">Stor markør</translation>
 <translation id="3190558889382726167">Passordet er lagret</translation>
+<translation id="3192589799003798742">Konfigurerer Steam på Chromebook</translation>
 <translation id="3192947282887913208">Lydfiler</translation>
 <translation id="3193695589337931419">Systemverktøy for systemsignaler</translation>
 <translation id="3194786596445804250">Vis detaljer om å blokkere informasjonskapsler fra tredjeparter</translation>
@@ -2479,7 +2491,7 @@
 <translation id="328571385944182268">Vil du lagre passordene dine?</translation>
 <translation id="3288047731229977326">Utvidelser som kjører i utviklermodus kan skade datamaskinen din. Hvis du ikke er utvikler, bør du deaktivere disse utvidelsene som kjører i utviklermodus, for å være på den sikre siden.</translation>
 <translation id="3289668031376215426">Automatisk stor forbokstav</translation>
-<translation id="3289856944988573801">For å sjekke etter oppdateringer, kan du bruke Ethernet eller Wi-Fi.</translation>
+<translation id="3289856944988573801">For å sjekke etter oppdateringer, kan du bruke Ethernet eller Wifi.</translation>
 <translation id="3290249595466894471">Sender også et lite utvalg av sider, nedlastinger, utvidelsesaktivitet og systeminformasjon for å bidra til å oppdage nye trusler</translation>
 <translation id="3293644607209440645">Send denne siden</translation>
 <translation id="32939749466444286">Linux-beholderen startet ikke. Prøv på nytt.</translation>
@@ -2534,6 +2546,7 @@
 <translation id="3341699307020049241">Feil PIN-kode. Du har <ph name="RETRIES" /> forsøk igjen.</translation>
 <translation id="3341703758641437857">Tillat tilgang til filnettadresser</translation>
 <translation id="3342361181740736773">«<ph name="TRIGGERING_EXTENSION_NAME" />» vil fjerne denne utvidelsen.</translation>
+<translation id="3343977377045378693">Utfører konfigurering</translation>
 <translation id="3345135638360864351">Forespørselen om tilgang til dette nettstedet kunne ikke sendes til <ph name="NAME" />. Prøv på nytt.</translation>
 <translation id="3345634917232014253">Sikkerhetssjekken ble nettopp kjørt</translation>
 <translation id="3345886924813989455">Ingen støttede nettlesere funnet</translation>
@@ -2545,6 +2558,7 @@
 <translation id="3354768182971982851">Gamle versjoner av Chrome-apper lar seg ikke åpne på Mac-enheter etter desember 2022. Du kan sjekke om en ny versjon er tilgjengelig.</translation>
 <translation id="3354972872297836698">Kunne ikke koble til enheten <ph name="DEVICE_NAME" /> – velg en enhet for å prøve på nytt</translation>
 <translation id="3355936511340229503">Tilkoblingsfeil</translation>
+<translation id="3356036636691722598">Kos deg med gaming på Chromebook</translation>
 <translation id="3356469410714175391">(Virtuelt kort er påslått)</translation>
 <translation id="3356580349448036450">Fullført</translation>
 <translation id="3359256513598016054">Retningslinjebegrensninger for sertifikat</translation>
@@ -2651,7 +2665,7 @@
 <translation id="3449393517661170867">Nytt vindu med faner</translation>
 <translation id="3449839693241009168">Trykk på <ph name="SEARCH_KEY" /> for å sende kommandoer til <ph name="EXTENSION_NAME" /></translation>
 <translation id="3450157232394774192">Utnyttelsesgrad for hviletilstand</translation>
-<translation id="3450180775417907283"><ph name="MANAGER" /> krever at du kobler til Wi-Fi nå og laster ned en oppdatering.</translation>
+<translation id="3450180775417907283"><ph name="MANAGER" /> krever at du kobler til wifi nå og laster ned en oppdatering.</translation>
 <translation id="3452999110156026232">Foreldretilgang</translation>
 <translation id="3453612417627951340">Trenger autorisasjon</translation>
 <translation id="3454213325559396544">Dette er den siste automatiske programvare- og sikkerhetsoppdateringen for denne <ph name="DEVICE_TYPE" />-enheten. For å få fremtidige oppdateringer, oppgrader til en nyere modell.</translation>
@@ -2768,7 +2782,7 @@
 <translation id="3562423906127931518">Denne prosessen kan ta noen minutter. Konfigurerer Linux-beholderen.</translation>
 <translation id="3562655211539199254">Se nylige Chrome-faner fra telefonen</translation>
 <translation id="3563432852173030730">Kiosk-appen kunne ikke lastes ned.</translation>
-<translation id="3564334271939054422">Det kan hende at Wi-Fi-nettverket du bruker (<ph name="NETWORK_ID" />), krever at du besøker en påloggingsside.</translation>
+<translation id="3564334271939054422">Det kan hende at Wifi-nettverket du bruker (<ph name="NETWORK_ID" />), krever at du besøker en påloggingsside.</translation>
 <translation id="3564848315152754834">USB-sikkerhetsnøkkel</translation>
 <translation id="3566325075220776093">Fra denne enheten</translation>
 <translation id="3566721612727112615">Ingen nettsteder er lagt til</translation>
@@ -2858,7 +2872,7 @@
 <translation id="3650753875413052677">Registreringsfeil</translation>
 <translation id="3650845953328929506">Venter på opplasting av logg.</translation>
 <translation id="3650952250015018111">Tillat at «<ph name="APP_NAME" />» får tilgang til</translation>
-<translation id="3651488188562686558">koble fra Wi-Fi</translation>
+<translation id="3651488188562686558">koble fra wifi</translation>
 <translation id="3652817283076144888">Initialiserer</translation>
 <translation id="3653160965917900914">Fildelinger på nettverket</translation>
 <translation id="3653999333232393305">Fortsett å tillate <ph name="HOST" /> å bruke mikrofonen din</translation>
@@ -2872,6 +2886,7 @@
 <translation id="3665919494326051362">Gjeldende versjon er <ph name="CURRENT_VERSION" /></translation>
 <translation id="3670113805793654926">Enheter fra alle leverandører</translation>
 <translation id="3670229581627177274">Slå på Bluetooth</translation>
+<translation id="3672663996348587094">Klikk for å tillate «<ph name="EXTENSIONS_REQUESTING_ACCESS" />» på <ph name="ORIGIN" />:</translation>
 <translation id="3672681487849735243">En fabrikkfeil har blitt oppdaget</translation>
 <translation id="3673097791729989571"><ph name="SAML_DOMAIN" /> er vert for påloggingen</translation>
 <translation id="3673622964532248901">Du har ikke tillatelse til å caste til denne enheten.</translation>
@@ -2911,7 +2926,7 @@
 <translation id="3704331259350077894">Handlingsstopp</translation>
 <translation id="3705722231355495246">-</translation>
 <translation id="3706463572498736864">Sider per ark</translation>
-<translation id="370649949373421643">Aktiver Wi-Fi</translation>
+<translation id="370649949373421643">Aktiver Wifi</translation>
 <translation id="370665806235115550">Laster inn ...</translation>
 <translation id="3707163604290651814">For øyeblikket logget på som <ph name="NAME" /></translation>
 <translation id="3708295717182051206">Teksting</translation>
@@ -2930,7 +2945,7 @@
 <translation id="3721119614952978349">Deg og Google</translation>
 <translation id="3722108462506185496">Feil ved oppstart av den virtuelle maskinen. Prøv på nytt.</translation>
 <translation id="3726965532284929944">QT</translation>
-<translation id="3727144509609414201">Tilgjengelige Wi-Fi-nettverk</translation>
+<translation id="3727144509609414201">Tilgjengelige Wifi-nettverk</translation>
 <translation id="3727187387656390258">Undersøk hurtigvindu</translation>
 <translation id="372722114124766626">Bare én gang</translation>
 <translation id="3727332897090187514">Det er ikke lagt til noe notat</translation>
@@ -3170,7 +3185,7 @@
 <translation id="3930737994424905957">Leter etter enheter</translation>
 <translation id="3930968231047618417">Bakgrunnsfarge</translation>
 <translation id="3933283459331715412">Gjenopprett slettet passord for <ph name="USERNAME" /></translation>
-<translation id="3936260554100916852"><ph name="DEVICE_NAME" /> deler et Wi-Fi-nettverk med deg</translation>
+<translation id="3936260554100916852"><ph name="DEVICE_NAME" /> deler et Wifi-nettverk med deg</translation>
 <translation id="3936390757709632190">&amp;Åpne lyd i ny fane</translation>
 <translation id="3936925983113350642">Passordet du velger, er nødvendig for å gjenopprette dette sertifikatet på et senere tidspunkt. Oppbevar det på et sikkert sted.</translation>
 <translation id="3937640725563832867">Alternativt navn på sertifikatutsteder</translation>
@@ -3385,6 +3400,7 @@
 <translation id="4132183752438206707">Finn apper i Google Play-butikken</translation>
 <translation id="4132364317545104286">Gi nytt navn til e-SIM-kortprofilen</translation>
 <translation id="4133076602192971179">Åpne appen for å endre passordet</translation>
+<translation id="4134818201340504801">Det er ikke nok ledig lagringsplass til å fullføre konfigureringen. Frigjør lagringsplass, og prøv på nytt</translation>
 <translation id="4135746311382563554">Tilleggsvilkår for bruk av Google Chrome og ChromeOS</translation>
 <translation id="4136203100490971508">Nattlys blir slått av automatisk ved soloppgang</translation>
 <translation id="41365691917097717">Hvis du fortsetter, blir ADB-feilsøking slått på for utvikling og testing av Android-apper. Merk at dette gjør det mulig å installere Android-apper som ikke er verifisert av Google, og enheten må tilbakestilles til fabrikkinnstillingene hvis du vil slå av ADB igjen.</translation>
@@ -3455,6 +3471,7 @@
 <translation id="4211904048067111541">Slutt å bruke med Android-apper</translation>
 <translation id="42126664696688958">Eksportér</translation>
 <translation id="42137655013211669">Tilgangen til denne ressursen ble avvist av tjeneren.</translation>
+<translation id="4214192212360095377">Slå av nå</translation>
 <translation id="4217558091331485702">Skann før åpning</translation>
 <translation id="4217571870635786043">Diktering</translation>
 <translation id="4218081191298393750">Klikk på høyttalerikonet for å kutte lyden for denne fanen</translation>
@@ -3500,7 +3517,7 @@
 <translation id="4261429981378979799">Utvidelsestillatelser</translation>
 <translation id="4262004481148703251">Avvis varsel</translation>
 <translation id="4263223596040212967">Kontrollér tastaturoppsettet og prøv på nytt.</translation>
-<translation id="426564820080660648">For å sjekke etter oppdateringer, kan du bruke Ethernet eller Wi-Fi.</translation>
+<translation id="426564820080660648">For å sjekke etter oppdateringer, kan du bruke Ethernet eller Wifi.</translation>
 <translation id="4266679478228765574">Hvis du fjerner mapper, deles de ikke lenger, men filene blir ikke slettet.</translation>
 <translation id="4267455501101322486">For å legge til en konto for tilgang til læringsressurser, be en forelder om å gi deg tillatelse</translation>
 <translation id="4267924571297947682">Spør en forelder om tillatelse</translation>
@@ -3621,6 +3638,7 @@
 <translation id="4378556263712303865">Enhetsrekvisisjon</translation>
 <translation id="4379281552162875326">Vil du avinstallere «<ph name="APP_NAME" />»?</translation>
 <translation id="4380648069038809855">Åpnet fullskjerm</translation>
+<translation id="4383048856908088702">Mens denne fanen var inaktiv, frigjorde minnesparing <ph name="MEMORY_VALUE" /> minne til andre oppgaver. Du kan når som helst endre dette i <ph name="SETTINGS_LINK" />.</translation>
 <translation id="4384312707950789900">Legg til som et foretrukket nettverk</translation>
 <translation id="4384652540891215547">Aktiver utvidelsen</translation>
 <translation id="4384886290276344300">Endre tastaturinnstillinger</translation>
@@ -3698,6 +3716,7 @@
 <translation id="4451479197788154834">Passordet er lagret på denne enheten og i Google-kontoen din</translation>
 <translation id="4451757071857432900">Blokkert på nettsteder som viser forstyrrende eller villedende annonser (anbefales)</translation>
 <translation id="4453946976636652378">Søk i <ph name="SEARCH_ENGINE_NAME" /> eller skriv inn en nettadresse</translation>
+<translation id="4458535500699390320">Mens denne fanen var inaktiv, frigjorde minnesparing minne til andre oppgaver. Du kan når som helst endre dette i innstillingene.</translation>
 <translation id="4459169140545916303">Aktiv for <ph name="DEVICE_LAST_ACTIVATED_TIME" /> dager siden</translation>
 <translation id="4460014764210899310">Fjern gruppering</translation>
 <translation id="4462159676511157176">Egendefinerte navnetjenere</translation>
@@ -3735,7 +3754,7 @@
 <translation id="4493468155686877504">Anbefalt (<ph name="INSTALL_SIZE" />)</translation>
 <translation id="4495002167047709180">Vil du tillate denne utvidelsen på <ph name="SITE" />?</translation>
 <translation id="4495419450179050807">Ikke vis på denne siden</translation>
-<translation id="4497145443434063861">PC og Chromecast på ulike Wi-Fi-nettverk (f.eks. 2,4 GHz og 5 GHz)</translation>
+<translation id="4497145443434063861">PC og Chromecast på ulike Wifi-nettverk (f.eks. 2,4 GHz og 5 GHz)</translation>
 <translation id="4500114933761911433"><ph name="PLUGIN_NAME" /> har krasjet</translation>
 <translation id="450099669180426158">Utropstegnikon</translation>
 <translation id="4501530680793980440">Bekreftelse av fjerning</translation>
@@ -3854,7 +3873,7 @@
 <translation id="4596295440756783523">Du har registrerte sertifikater som identifiserer disse tjenerne</translation>
 <translation id="4598345735110653698">Administrer tilgangsnøkler</translation>
 <translation id="4598556348158889687">Lagringsbehandling</translation>
-<translation id="4598776695426288251">Wi-Fi er tilgjengelig via flere enheter</translation>
+<translation id="4598776695426288251">Wifi er tilgjengelig via flere enheter</translation>
 <translation id="4600071396330666617">Antall forslag</translation>
 <translation id="4601426376352205922">Merk som ulest</translation>
 <translation id="4602466770786743961">Tillat alltid at <ph name="HOST" /> bruker kameraet og mikrofonen</translation>
@@ -3869,6 +3888,7 @@
 <translation id="4613271546271159013">En utvidelse har endret hvilken siden som vises når du åpner en ny fane.</translation>
 <translation id="4615586811063744755">ingen informasjonskapsel er valgt</translation>
 <translation id="461661862154729886">Energikilde</translation>
+<translation id="461676224702246336">Kun ved klikk for dette nettstedet</translation>
 <translation id="4617001782309103936">For kort</translation>
 <translation id="4617019240346358451">Oppdater siden for å bruke «<ph name="EXTENSION_NAME" />»</translation>
 <translation id="4617270414136722281">Alternativer for utvidelser</translation>
@@ -3991,6 +4011,7 @@
 <translation id="4728558894243024398">Plattform</translation>
 <translation id="4728570203948182358"><ph name="BEGIN_LINK" />Administratoren din<ph name="END_LINK" /> har slått av skanning etter skadelig programvare</translation>
 <translation id="4730492586225682674">Vis det siste pekepenn-notatet på låseskjermen</translation>
+<translation id="4730888769809690665">Varsler er tillatt for <ph name="SITE" /></translation>
 <translation id="473140019006744096">Det er ikke nok plass på enheten til å fullføre oppdateringen. Frigjør <ph name="NECESSARY_SPACE" /> på enheten, og prøv igjen.</translation>
 <translation id="4733161265940833579"><ph name="BATTERY_PERCENTAGE" /> % (venstre)</translation>
 <translation id="4733793249294335256">Sted</translation>
@@ -4009,7 +4030,7 @@
 <translation id="4746351372139058112">Meldinger</translation>
 <translation id="4748783296226936791">Nettsteder kobler vanligvis til HID-enheter for å kunne tilby funksjoner som bruker uvanlige tastaturer, spillkontrollere og andre enheter</translation>
 <translation id="4749960740855309258">Åpne en ny fane</translation>
-<translation id="4750185073185658673">Gå til telefonen din for å gå gjennom noen flere tillatelser. Sørg for at Bluetooth og Wi-Fi er påslått på telefonen.</translation>
+<translation id="4750185073185658673">Gå til telefonen din for å gå gjennom noen flere tillatelser. Sørg for at Bluetooth og Wifi er påslått på telefonen.</translation>
 <translation id="4750394297954878236">Forslag</translation>
 <translation id="475088594373173692">Første bruker</translation>
 <translation id="4756378406049221019">Stopp / last inn på nytt</translation>
@@ -4207,7 +4228,7 @@
 <translation id="4932733599132424254">Dato</translation>
 <translation id="4933484234309072027">lagt til på <ph name="URL" /></translation>
 <translation id="4936042273057045735">Synkronisering av varsler støttes ikke for telefoner i jobbprofiler</translation>
-<translation id="4937676329899947885">Mottar et Wi-Fi-nettverk</translation>
+<translation id="4937676329899947885">Mottar et Wifi-nettverk</translation>
 <translation id="4938788218358929252">disse oppskriftsideene</translation>
 <translation id="4939805055470675027">Kunne ikke koble til <ph name="CARRIER_NAME" /></translation>
 <translation id="4940364377601827259"><ph name="PRINTER_COUNT" /> skrivere er tilgjengelige for lagring.</translation>
@@ -4235,7 +4256,7 @@
 <translation id="496185450405387901">Denne appen er installert av administratoren.</translation>
 <translation id="4963789650715167449">Fjern gjeldende fane</translation>
 <translation id="4964455510556214366">Oppsett</translation>
-<translation id="496446150016900060">synkronisere Wi-Fi-nettverk med telefonen din</translation>
+<translation id="496446150016900060">synkronisere Wifi-nettverk med telefonen din</translation>
 <translation id="4965808351167763748">Er du sikker på at du vil konfigurere Hangouts Meet på denne enheten?</translation>
 <translation id="4966972803217407697">Du er inkognito</translation>
 <translation id="4967227914555989138">Legg til en merknad</translation>
@@ -4284,7 +4305,7 @@
 <translation id="5021750053540820849">Ikke oppdatert ennå</translation>
 <translation id="5024511550058813796">Du får loggen din på alle synkroniserte enheter, slik at du kan fortsette med det du holdt på med</translation>
 <translation id="5026492829171796515">Logg på for å legge til en Google-konto</translation>
-<translation id="5026806129670917316">Slå på Wi-Fi</translation>
+<translation id="5026806129670917316">Slå på Wifi</translation>
 <translation id="5026874946691314267">Ikke vis dette igjen.</translation>
 <translation id="5027550639139316293">E-postsertifikat</translation>
 <translation id="5027562294707732951">Legg til utvidelsen</translation>
@@ -4294,6 +4315,7 @@
 <translation id="5032430150487044192">Kan ikke opprette QR-kode</translation>
 <translation id="5033137252639132982">Nettsteder som ikke har lov til å bruke bevegelsessensorer</translation>
 <translation id="5033266061063942743">Geometriske figurer</translation>
+<translation id="5034000993065629381">Kontakt administratoren din</translation>
 <translation id="5037676449506322593">Velg alle</translation>
 <translation id="5038818366306248416">Du har tidligere valgt å ikke tillate noen utvidelser på <ph name="ORIGIN" /></translation>
 <translation id="5039696241953571917">Se og administrer lagrede passord i Google-kontoen din</translation>
@@ -4351,6 +4373,7 @@
 <translation id="5089763948477033443">Håndtak for endring av størrelsen på sidepanelet</translation>
 <translation id="5090637338841444533">Nettsteder som ikke har lov til å spore kameraposisjonen din</translation>
 <translation id="5093569275467863761">Inkognito-underramme i frem-og-tilbake-bufferen: <ph name="BACK_FORWARD_CACHE_INCOGNITO_PAGE_URL" /></translation>
+<translation id="5094042205195563542">Starter installasjonen</translation>
 <translation id="5094176498302660097">Du kan åpne og redigere støttede filer med denne appen i Filer-appen eller andre apper. For å styre hvilke filer som åpner denne appen som standard, <ph name="BEGIN_LINK" />finn ut hvordan du angir standardapper på enheten<ph name="END_LINK" />.</translation>
 <translation id="5094721898978802975">kommunisere med samarbeidende integrerte apper</translation>
 <translation id="5097002363526479830">Kunne ikke koble til nettverket «<ph name="NAME" />»: <ph name="DETAILS" /></translation>
@@ -4403,7 +4426,7 @@
 <translation id="5145464978649806571">Hvis du beveger deg bort fra enheten, låses skjermen automatisk. Når du er foran enheten, holder skjermen seg ulåst lenger. Hvis låseskjermen er avslått, går enheten over i hvilemodus i stedet for å bli låst.</translation>
 <translation id="514575469079499857">Bruk IP-adressen din til å fastslå posisjonen (standard)</translation>
 <translation id="5147103632304200977">Spør når nettsteder vil ha tilgang til HID-enheter (anbefales)</translation>
-<translation id="5148277445782867161">Googles posisjonstjeneste bruker kilder som Wi-Fi, mobilnettverk og sensorer til å estimere posisjonen til enheten din.</translation>
+<translation id="5148277445782867161">Googles posisjonstjeneste bruker kilder som Wifi, mobilnettverk og sensorer til å estimere posisjonen til enheten din.</translation>
 <translation id="5150070631291639005">Personverninnstillinger</translation>
 <translation id="5150254825601720210">Navn på Netscape SSL-tjenersertifikat</translation>
 <translation id="5151354047782775295">Frigjør lagringsplass eller velg data som kan slettes automatisk</translation>
@@ -4424,6 +4447,7 @@
 <translation id="5161251470972801814">USB-enheter fra <ph name="VENDOR_NAME" /></translation>
 <translation id="5162905305237671850"><ph name="DEVICE_TYPE" /> er blokkert</translation>
 <translation id="5163910114647549394">Fanen er flyttet til slutten av faneraden</translation>
+<translation id="5164530241085602114">Varsler er ikke tillatt for <ph name="SITE" /></translation>
 <translation id="516747639689914043">Protokoll for hypertekstoverføring (HTTP)</translation>
 <translation id="5170568018924773124">Vis i mappen</translation>
 <translation id="5171045022955879922">Søk, eller skriv inn en nettadresse</translation>
@@ -4452,8 +4476,8 @@
 <translation id="5193988420012215838">Kopiert til utklippstavlen</translation>
 <translation id="5194256020863090856">Dette berører kun inkognitovinduer</translation>
 <translation id="5195074424945754995">Nettadresser som gir treff på disse reglene, utløser ikke bytte av nettleser og kan åpnes i både <ph name="BROWSER_NAME" /> og <ph name="ALTERNATIVE_BROWSER_NAME" />.</translation>
-<translation id="5195863934285556588"><ph name="BEGIN_PARAGRAPH1" />Googles posisjonstjeneste bruker kilder som Wi-Fi, mobilnettverk og sensorer til å estimere enhetens posisjon.<ph name="END_PARAGRAPH1" />
-    <ph name="BEGIN_PARAGRAPH2" />Du kan når som helst slå av posisjonen på denne Android-enheten ved å gå til Innstillinger &gt; Apper &gt; Google Play Butikk &gt; Administrer Android-innstillinger &gt; Sikkerhet og posisjon &gt; Posisjon. Du kan også slå av bruken av Wi-Fi, mobilnettverk og sensorer for Android-posisjonen ved å slå av «Google Posisjonsnøyaktighet» på den samme menyen.<ph name="END_PARAGRAPH2" /></translation>
+<translation id="5195863934285556588"><ph name="BEGIN_PARAGRAPH1" />Googles posisjonstjeneste bruker kilder som Wifi, mobilnettverk og sensorer til å estimere enhetens posisjon.<ph name="END_PARAGRAPH1" />
+    <ph name="BEGIN_PARAGRAPH2" />Du kan når som helst slå av posisjonen på denne Android-enheten ved å gå til Innstillinger &gt; Apper &gt; Google Play Butikk &gt; Administrer Android-innstillinger &gt; Sikkerhet og posisjon &gt; Posisjon. Du kan også slå av bruken av Wifi, mobilnettverk og sensorer for Android-posisjonen ved å slå av «Google Posisjonsnøyaktighet» på den samme menyen.<ph name="END_PARAGRAPH2" /></translation>
 <translation id="5197255632782567636">Internett</translation>
 <translation id="5198430103906431024">Send bruks- og diagnostikkdata. Denne enheten sender for øyeblikket diagnostikk-, enhets- og appbruksdata til Google automatisk. Dette bidrar til å gjøre systemet og appene bedre og mer stabile. Noen aggregerte data hjelper også Google-apper og -partnere, for eksempel Android-utviklere. Hvis du har slått på innstillingen for annen nett- og appaktivitet, kan disse dataene bli lagret i Google-kontoen din.</translation>
 <translation id="5199729219167945352">Eksperimenter</translation>
@@ -4526,6 +4550,7 @@
 <translation id="5269977353971873915">Utskrift mislyktes</translation>
 <translation id="5273806377963980154">Rediger nettstedets nettadresse</translation>
 <translation id="5275084684151588738">Brukerordlister</translation>
+<translation id="5275100789567222478">Slå på kun når batteriet er på <ph name="PERCENT" /> % eller lavere</translation>
 <translation id="5275338516105640560">Knapp for lagret fanegruppe</translation>
 <translation id="5275352920323889391">Hund</translation>
 <translation id="527605719918376753">Slå av lyden for fanen</translation>
@@ -4544,6 +4569,7 @@
 <translation id="5285635972691565180">Skjerm <ph name="DISPLAY_ID" /></translation>
 <translation id="5286194356314741248">Skanning</translation>
 <translation id="5287425679749926365">Dine kontoer</translation>
+<translation id="5288106344236929384">Flere handlinger og alternativer for tilgangsnøkler for <ph name="USERNAME" /> på <ph name="DOMAIN" /></translation>
 <translation id="5288678174502918605">Gj&amp;enåpne den lukkede fanen</translation>
 <translation id="52895863590846877">Siden er ikke på <ph name="LANGUAGE" /></translation>
 <translation id="52912272896845572">Den private nøkkelfilen er ugyldig.</translation>
@@ -4737,7 +4763,8 @@
 <translation id="5473075389972733037">IBM</translation>
 <translation id="5473099001878321374">Hvis du fortsetter, godtar du at apper og oppdateringer fra Google, barnets operatør og enhetsprodusenten også kan lastes ned og installeres på enheten automatisk – muligens via mobildata. Noen av disse appene kan tilby kjøp i appen.</translation>
 <translation id="5473156705047072749">{NUM_CHARACTERS,plural, =1{PIN-koden må bestå av minst ett tegn}other{PIN-koden må bestå av minst # tegn}}</translation>
-<translation id="5474859849784484111"><ph name="MANAGER" /> krever at du kobler til Wi-Fi nå og laster ned en oppdatering. Eller last ned via en tilkobling med datamåling (kostnader kan påløpe).</translation>
+<translation id="5474859849784484111"><ph name="MANAGER" /> krever at du kobler til wifi nå og laster ned en oppdatering. Eller last ned via en tilkobling med datamåling (kostnader kan påløpe).</translation>
+<translation id="5476016146231427848">Start enheten på nytt for å bruke Steam på Chromebook</translation>
 <translation id="5481273127572794904">Nettsteder som ikke har lov til å laste ned flere filer automatisk</translation>
 <translation id="5481941284378890518">Legg til skrivere i nærheten</translation>
 <translation id="5483785310822538350">Opphev fil- og enhetstilgangen</translation>
@@ -4955,8 +4982,9 @@
 <translation id="5678955352098267522">Les dataene dine på <ph name="WEBSITE_1" /></translation>
 <translation id="5680050361008726776">Vil du fjerne «<ph name="ESIM_PROFILE_NAME" />»?</translation>
 <translation id="5683806393796685434">Oppgi aktiveringskoden</translation>
-<translation id="5684181005476681636">Wi-Fi-detaljer</translation>
+<translation id="5684181005476681636">Wifi-detaljer</translation>
 <translation id="5684661240348539843">Ressursidentifikator</translation>
+<translation id="5684969244627829799">Logg på en brukerkonto, og prøv igjen</translation>
 <translation id="5687326903064479980">Tidssone</translation>
 <translation id="5687935527303996204">Sørg for at enheten er koblet til, og ikke slå den av. Installasjonen kan ta opptil 20 minutter. Enheten slår seg av automatisk når installasjonen er fullført.</translation>
 <translation id="5689516760719285838">Sted</translation>
@@ -5083,6 +5111,7 @@
 <translation id="5805697420284793859">Window Manager</translation>
 <translation id="5806447147478173900">Total mengde lagringsplass som brukes av nettstedene som vises: <ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">0° (standard)</translation>
+<translation id="5810603387504252966">#borealis-enabled må være aktivert i chrome://flags</translation>
 <translation id="5810809306422959727">Denne kontoen er ikke kvalifisert for foreldrekontroll</translation>
 <translation id="5811614940486072060">Denne filen lastes sjelden ned og kan være farlig.</translation>
 <translation id="5812674658566766066">Vis alle</translation>
@@ -5127,7 +5156,7 @@
 <translation id="5852137567692933493">Omstart og Powerwash</translation>
 <translation id="5854066326260337683">Støtte for eldre nettlesere er avslått for øyeblikket. Du kan slå på støtte for eldre nettlesere ved å angi regelen <ph name="BEGIN_LINK" />{BrowserSwitcherEnabled}<ph name="END_LINK" />.</translation>
 <translation id="5854912040170951372">Pizzaelsker</translation>
-<translation id="5855267860608268405">Kjente Wi-Fi-nettverk</translation>
+<translation id="5855267860608268405">Kjente Wifi-nettverk</translation>
 <translation id="5855643921295613558">0,6 sekunder</translation>
 <translation id="5856721540245522153">Slå på feilsøkingsfunksjoner</translation>
 <translation id="5857090052475505287">Ny mappe</translation>
@@ -5162,12 +5191,13 @@
 <translation id="5882449899683447569">Noe gikk galt. Passordene ble ikke importert.</translation>
 <translation id="5882919346125742463">Kjente nettverk</translation>
 <translation id="5883356647197510494">Blokkerte automatisk <ph name="PERMISSION_1" /> og <ph name="PERMISSION_2" /></translation>
+<translation id="5884447826201752041">Tilpass for hver enkelt utvidelse</translation>
 <translation id="5884474295213649357">Denne fanen er koblet til en USB-enhet.</translation>
 <translation id="5885314688092915589">Organisasjonen din kommer til å administrere denne profilen</translation>
 <translation id="5886009770935151472">Finger 1</translation>
 <translation id="5886384907280980632">Slå av nå</translation>
 <translation id="5889282057229379085">Maksimalt antall mellomliggende sertifiseringsinstanser: <ph name="NUM_INTERMEDIATE_CA" /></translation>
-<translation id="5891688036610113830">Foretrukne Wi-Fi-nettverk</translation>
+<translation id="5891688036610113830">Foretrukne Wifi-nettverk</translation>
 <translation id="5895138241574237353">Start på nytt</translation>
 <translation id="5895335062901455404">Du får tilgang til de lagrede preferansene dine og den lagrede aktiviteten din på alle ChromeOS Flex-enheter når du logger på med Google-kontoen din. Du kan velge hva du vil synkronisere, i Innstillinger.</translation>
 <translation id="589541317545606110">Søk på siden med <ph name="VISUAL_SEARCH_PROVIDER" /></translation>
@@ -5199,7 +5229,7 @@
 <translation id="5916664084637901428">På</translation>
 <translation id="59174027418879706">Aktivert</translation>
 <translation id="5920543303088087579">Administratoren din har slått av muligheten for å koble til dette nettverket</translation>
-<translation id="5921257443092182237">Googles posisjonstjeneste bruker kilder som Wi-Fi, mobilnettverk og sensorer til å estimere posisjonen til enheten.</translation>
+<translation id="5921257443092182237">Googles posisjonstjeneste bruker kilder som Wifi, mobilnettverk og sensorer til å estimere posisjonen til enheten.</translation>
 <translation id="5924047253200400718">Få hjelp<ph name="SCANNING_STATUS" /></translation>
 <translation id="5924527146239595929">Ta et nytt bilde eller velg et eksisterende bilde eller ikon.
    <ph name="LINE_BREAK" />
@@ -5277,7 +5307,7 @@
 <translation id="5984222099446776634">Nylig besøkte</translation>
 <translation id="5985458664595100876">Ugyldig nettadresseformat. Støttede formater er \\tjener\delt og smb://tjener/delt.</translation>
 <translation id="598810097218913399">Fjern tilordningen</translation>
-<translation id="5990266201903445068">Bare Wi-Fi</translation>
+<translation id="5990266201903445068">Bare Wifi</translation>
 <translation id="5990386583461751448">Oversatt</translation>
 <translation id="599131315899248751">{NUM_APPLICATIONS,plural, =1{For å sikre at du fortsatt kan surfe på nettet, be administratoren din om å fjerne dette programmet.}other{For å sikre at du fortsatt kan surfe på nettet, be administratoren din om å fjerne disse programmene.}}</translation>
 <translation id="5997337190805127100">Finn ut mer om nettstedstilgang</translation>
@@ -5320,8 +5350,8 @@
 <translation id="6038929619733116134">Blokkér hvis nettstedet viser forstyrrende eller villedende annonser</translation>
 <translation id="6039651071822577588">Ordlisten som eies av nettverket, har feil format</translation>
 <translation id="6040143037577758943">Lukk</translation>
-<translation id="6041046205544295907"><ph name="BEGIN_PARAGRAPH1" />Googles posisjonstjeneste bruker kilder som Wi-Fi, mobilnettverk og sensorer til å beregne enhetens posisjon.<ph name="END_PARAGRAPH1" />
-    <ph name="BEGIN_PARAGRAPH2" />Du kan slå av Posisjon ved å slå av hovedinnstillingen for Posisjon på enheten. Du kan også slå av bruken av Wi-Fi, mobilnettverk og sensorer for posisjon fra posisjonsinnstillingene.<ph name="END_PARAGRAPH2" /></translation>
+<translation id="6041046205544295907"><ph name="BEGIN_PARAGRAPH1" />Googles posisjonstjeneste bruker kilder som Wifi, mobilnettverk og sensorer til å beregne enhetens posisjon.<ph name="END_PARAGRAPH1" />
+    <ph name="BEGIN_PARAGRAPH2" />Du kan slå av Posisjon ved å slå av hovedinnstillingen for Posisjon på enheten. Du kan også slå av bruken av Wifi, mobilnettverk og sensorer for posisjon fra posisjonsinnstillingene.<ph name="END_PARAGRAPH2" /></translation>
 <translation id="6041155700700864984">Avslutt fullskjermmodus</translation>
 <translation id="6042308850641462728">Mer</translation>
 <translation id="604388835206766544">Kunne ikke parse konfigurasjonen</translation>
@@ -5432,9 +5462,9 @@
 <translation id="6129691635767514872">De valgte dataene er fjernet fra Chrome og alle synkroniserte enheter. Det kan hende Google-kontoen din har andre typer nettleserlogger, for eksempel for søk og aktivitet fra andre Google-tjenester, på <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
 <translation id="6129938384427316298">Kommentar til Netscape-sertifikat</translation>
 <translation id="6129953537138746214">Mellomrom</translation>
-<translation id="6130692320435119637">Legg til Wi-Fi</translation>
+<translation id="6130692320435119637">Legg til wifi</translation>
 <translation id="6130887916931372608">Tastaturtast</translation>
-<translation id="6135823405800500595">Sørg for at telefonen er i nærheten, at den er opplåst, og at Bluetooth og Wi-Fi er på</translation>
+<translation id="6135823405800500595">Sørg for at telefonen er i nærheten, at den er opplåst, og at Bluetooth og Wifi er på</translation>
 <translation id="6135826623269483856">Nettsteder som ikke har lov til å administrere vinduer på alle skjermene dine</translation>
 <translation id="6136114942382973861">Lukk nedlastingsraden</translation>
 <translation id="6136287496450963112">Sikkerhetsnøkkelen din er ikke beskyttet med PIN-kode. For å administrere fingeravtrykk må du opprette en PIN-kode først.</translation>
@@ -5518,7 +5548,7 @@
 <translation id="6226777517901268232">Privat nøkkelfil (valgfritt)</translation>
 <translation id="6227002569366039565">Trykk på |<ph name="ACCELERATOR" />| for å fokusere på denne boblen, og trykk en gang til for å fokusere på elementet den peker på.</translation>
 <translation id="6227280783235722609">utvidelse</translation>
-<translation id="6229849828796482487">Koble fra Wi-Fi-nettverket</translation>
+<translation id="6229849828796482487">Koble fra wifi-nettverket</translation>
 <translation id="6230165830166519105">Prøv en annen måte</translation>
 <translation id="6231782223312638214">Foreslått</translation>
 <translation id="6231881193380278751">Legg til en forespørselsparameter i nettadressen for å laste inn siden på nytt automatisk: chrome://device-log/?refresh=&lt;sek&gt;</translation>
@@ -5601,6 +5631,7 @@
 <translation id="6301300352769835063">La Google bruke maskinvaredataene dine for å gjøre <ph name="DEVICE_OS" /> bedre. Hvis du avviser dette, blir dataene fremdeles sendt til Google for å fastslå hvilke oppdateringer enheten trenger, men de blir ikke lagret eller brukt ellers. Finn ut mer på g.co/flex/HWDataCollection.</translation>
 <translation id="630292539633944562">Forslag til personopplysninger</translation>
 <translation id="6305607932814307878">Globale retningslinjer:</translation>
+<translation id="6305909198255586420">Installer via primærprofilen din</translation>
 <translation id="6307990684951724544">Systemet er opptatt</translation>
 <translation id="6308493641021088955">Påloggingen leveres av <ph name="EXTENSION_NAME" /></translation>
 <translation id="6308937455967653460">Lagre lin&amp;ken som…</translation>
@@ -5670,7 +5701,7 @@
 <translation id="6374635887697228982">Vil du få rabatter?</translation>
 <translation id="637642201764944055">Gamle versjoner av Chrome-apper lar seg ikke åpne på Linux-enheter etter desember 2022. Kontakt administratoren din for å oppdatere til en ny versjon eller fjerne denne appen.</translation>
 <translation id="6377268785556383139">1 resultat for «<ph name="SEARCH_TEXT" />»</translation>
-<translation id="6378392501584240055">Åpne i Wi-Fi-nettverk</translation>
+<translation id="6378392501584240055">Åpne i Wifi-nettverk</translation>
 <translation id="6380143666419481200">Godta og fortsett</translation>
 <translation id="6382616130475191723">Tillatt å lese og endre <ph name="SITE_NAME" /></translation>
 <translation id="6382958439467370461">Ingen inaktive snarveier</translation>
@@ -5849,8 +5880,8 @@
 <translation id="6545867563032584178">Mikrofonen er slått av i Mac-systemvalgene</translation>
 <translation id="6546856949879953071">For å se detaljert informasjon om oppgraderingen, se loggene som er lagret i Filer &gt; Mine filer &gt; <ph name="LOG_FILE" /></translation>
 <translation id="6547354035488017500">Frigjør minst 512 MB lagringsplass for å unngå at enheten slutter å reagere. For å frigjøre plass, slett filer fra enhetslagringen.</translation>
-<translation id="6547854317475115430"><ph name="BEGIN_PARAGRAPH1" />Googles posisjonstjeneste bruker kilder som Wi-Fi, mobilnettverk og sensorer til å estimere enhetens posisjon.<ph name="END_PARAGRAPH1" />
-    <ph name="BEGIN_PARAGRAPH2" />Du kan når som helst slå av posisjonen på Android-enheten din ved å gå til Innstillinger &gt; Apper &gt; Google Play Butikk &gt; Administrer Android-innstillinger &gt; Sikkerhet og posisjon &gt; Posisjon. Du kan også slå av bruken av Wi-Fi, mobilnettverk og sensorer for Android-posisjonen ved å slå av «Google Posisjonsnøyaktighet» på den samme menyen.<ph name="END_PARAGRAPH2" /></translation>
+<translation id="6547854317475115430"><ph name="BEGIN_PARAGRAPH1" />Googles posisjonstjeneste bruker kilder som Wifi, mobilnettverk og sensorer til å estimere enhetens posisjon.<ph name="END_PARAGRAPH1" />
+    <ph name="BEGIN_PARAGRAPH2" />Du kan når som helst slå av posisjonen på Android-enheten din ved å gå til Innstillinger &gt; Apper &gt; Google Play Butikk &gt; Administrer Android-innstillinger &gt; Sikkerhet og posisjon &gt; Posisjon. Du kan også slå av bruken av Wifi, mobilnettverk og sensorer for Android-posisjonen ved å slå av «Google Posisjonsnøyaktighet» på den samme menyen.<ph name="END_PARAGRAPH2" /></translation>
 <translation id="654871471440386944">Vil du slå på markørsurfing?</translation>
 <translation id="6549038875972762904">Gjør om konfigurering</translation>
 <translation id="6550675742724504774">Alternativer</translation>
@@ -5922,6 +5953,7 @@
 <translation id="6608166463665411119">Tilbakestill e-SIM-kortet</translation>
 <translation id="6609478180749378879">Påloggingsdata blir lagret på denne enheten når du går ut av Inkognitomodus. Du kan logge på dette nettstedet med enheten din igjen senere.</translation>
 <translation id="6610002944194042868">Alternativer for oversettelse</translation>
+<translation id="6611907964265870728">Sørg for at enheten er koblet til internett</translation>
 <translation id="6611972847767394631">Se fanene dine her</translation>
 <translation id="6613668613087513143">Det er ikke nok plass på enheten til å fullføre oppdateringen. Frigjør <ph name="NECESSARY_SPACE" /> på enheten, og prøv igjen via Chrome-nettleseren.</translation>
 <translation id="6615455863669487791">Vis meg</translation>
@@ -5961,7 +5993,7 @@
 <translation id="6650234781371031356">Passordet ditt for <ph name="WEBSITE" /> er lagret på denne enheten og i Google-kontoen din. Hvilket vil du slette?</translation>
 <translation id="665061930738760572">Åpne i &amp;nytt vindu</translation>
 <translation id="6651237644330755633">Stol på dette sertifikatet for identifisering av nettsteder.</translation>
-<translation id="6651495917527016072">Synkroniser Wi-Fi-nettverk med telefonen din. <ph name="LINK_BEGIN" />Finn ut mer<ph name="LINK_END" /></translation>
+<translation id="6651495917527016072">Synkroniser Wifi-nettverk med telefonen din. <ph name="LINK_BEGIN" />Finn ut mer<ph name="LINK_END" /></translation>
 <translation id="665355505818177700">Chrome <ph name="MS_AD_NAME" />-integrering støttes bare på x86_64-plattformer. Chromebook-enheter som er bygget på en ARM- eller x86-plattform, støtter ikke denne funksjonaliteten.</translation>
 <translation id="6654509035557065241">Foretrekk nettverk</translation>
 <translation id="6655190889273724601">Utviklermodus</translation>
@@ -6024,7 +6056,7 @@
 <translation id="6713233729292711163">Legg til en jobbprofil</translation>
 <translation id="6715803357256707211">Det oppsto en feil under installasjon av Linux-programmet. Klikk på varselet for mer informasjon.</translation>
 <translation id="671619610707606484">Dette sletter <ph name="TOTAL_USAGE" /> data som er lagret av nettsteder</translation>
-<translation id="6716798148881908873">Nettverkstilkoblingen ble brutt. Kontrollér tilkoblingen eller prøv et annet Wi-Fi-nettverk.</translation>
+<translation id="6716798148881908873">Nettverkstilkoblingen ble brutt. Kontrollér tilkoblingen eller prøv et annet Wifi-nettverk.</translation>
 <translation id="671928215901716392">Lås skjerm</translation>
 <translation id="6721744718589119342">Vi kan sende deg e-post med oppdateringer eller for å be om mer informasjon</translation>
 <translation id="6721972322305477112">&amp;Fil</translation>
@@ -6310,6 +6342,7 @@
 <translation id="697508444536771064">Avslutt Linux</translation>
 <translation id="6975361011348772931">Har bedt om tillatelse til å lese og endre</translation>
 <translation id="6978121630131642226">Søkemotorer</translation>
+<translation id="6979041727349121225">Strømsparing</translation>
 <translation id="6979044105893951891">starte og avslutte administrerte gjesteøkter</translation>
 <translation id="6979158407327259162">Google Disk</translation>
 <translation id="6979440798594660689">Kutt lyden (standard)</translation>
@@ -6362,6 +6395,8 @@
 <translation id="7014174261166285193">Installeringen mislyktes.</translation>
 <translation id="7014480873681694324">Fjern markering</translation>
 <translation id="7014741021609395734">Zoomnivå</translation>
+<translation id="7014961128696979283">Start Steam</translation>
+<translation id="7015088858756332848">Kunne ikke starte Steam på Chromebook. Prøv igjen</translation>
 <translation id="7017004637493394352">Si «Ok Google» igjen</translation>
 <translation id="7017219178341817193">Legg til en ny side</translation>
 <translation id="7017354871202642555">Kan ikke angi modus etter at vinduet er opprettet.</translation>
@@ -6562,7 +6597,7 @@
 <translation id="7235873936132740888">Nettsteder kan håndtere spesialoppgaver når du klikker på visse typer linker, for eksempel å opprette nye meldinger i e-postklienten din eller legge til nye hendelser i nettkalenderen din</translation>
 <translation id="7238609589076576185">Et aksenttegn er satt inn.</translation>
 <translation id="7239108166256782787"><ph name="DEVICE_NAME" /> avbrøt overføringen</translation>
-<translation id="7240339475467890413">Vil du koble til den nye Wi-Fi-sonen?</translation>
+<translation id="7240339475467890413">Vil du koble til den nye Wifi-sonen?</translation>
 <translation id="7241389281993241388">Logg på <ph name="TOKEN_NAME" /> for å importere klientsertifikat.</translation>
 <translation id="7241763419756062043">Velg søke- og nettlesingskvalitet</translation>
 <translation id="7243632151880336635">Slett og logg av</translation>
@@ -6584,7 +6619,7 @@
 <translation id="7255935316994522020">Bruk</translation>
 <translation id="7256069762010468647">Nettstedet bruker kameraet ditt</translation>
 <translation id="7256710573727326513">Åpne i en fane</translation>
-<translation id="7257173066616499747">Wi-Fi-nettverk</translation>
+<translation id="7257173066616499747">Wifi-nettverk</translation>
 <translation id="725758059478686223">Utskriftstjeneste</translation>
 <translation id="7257666756905341374">lese data du kopierer og limer inn</translation>
 <translation id="7258192266780953209">Transformasjoner</translation>
@@ -6692,7 +6727,7 @@
 <translation id="7367714965999718019">QR-kodegenerator</translation>
 <translation id="736877393389250337">Kunne ikke åpne <ph name="URL" /> i <ph name="ALTERNATIVE_BROWSER_NAME" />. Kontakt systemadministratoren din.</translation>
 <translation id="7370592524170198497">Ethernet-EAP:</translation>
-<translation id="7371490947952970241">Du kan slå av Posisjon ved å slå av enhetens hovedinnstilling for Posisjon. Du kan også slå av bruken av Wi-Fi, mobilnettverk og sensorer for posisjon i posisjonsinnstillingene.</translation>
+<translation id="7371490947952970241">Du kan slå av Posisjon ved å slå av enhetens hovedinnstilling for Posisjon. Du kan også slå av bruken av Wifi, mobilnettverk og sensorer for posisjon i posisjonsinnstillingene.</translation>
 <translation id="7371917887111892735">Faner krymper til de er på bredde med festede faner</translation>
 <translation id="7374376573160927383">Administrer USB-enheter</translation>
 <translation id="7376553024552204454">Fremhev musepekeren når den beveger seg</translation>
@@ -6702,7 +6737,7 @@
 <translation id="7378611153938412599">Svake passord er enkle å gjette. Sørg for at du lager sterke passord. <ph name="BEGIN_LINK" />Se flere sikkerhetstips.<ph name="END_LINK" /></translation>
 <translation id="73786666777299047">Åpne Chrome Nettmarked</translation>
 <translation id="737938816678769289">Koble til og konfigurer enheter i nærheten enkelt med rask sammenkobling</translation>
-<translation id="7380459290951585794">Sørg for at telefonen er i nærheten, at den er opplåst, og at Bluetooth og Wi-Fi er slått på</translation>
+<translation id="7380459290951585794">Sørg for at telefonen er i nærheten, at den er opplåst, og at Bluetooth og Wifi er slått på</translation>
 <translation id="7380622428988553498">Enhetsnavnet inneholder ugyldige tegn</translation>
 <translation id="7380768571499464492"><ph name="PRINTER_NAME" /> er oppdatert</translation>
 <translation id="7382085868019811559">Støtte for eldre nettlesere gjør at spesifikke nettadressemønstre kan åpnes i en alternativ nettleser med støtte for eldre funksjoner som kreves for å kunne kjøre de aktuelle nettstedene på riktig måte.</translation>
@@ -6738,6 +6773,7 @@
 <translation id="7409854300652085600">Bokmerkene er importert.</translation>
 <translation id="7410344089573941623">Spør om <ph name="HOST" /> ønsker å bruke kameraet og mikrofonen din</translation>
 <translation id="7410852728357935715">Cast til en enhet</translation>
+<translation id="7411614333737930931">Start enheten på nytt, og prøv igjen</translation>
 <translation id="741204030948306876">Ja, jeg er med</translation>
 <translation id="7412226954991670867">GPU-minne</translation>
 <translation id="7414464185801331860">18x</translation>
@@ -6753,6 +6789,7 @@
 <translation id="7423425410216218516">Synlighet er på i <ph name="MINUTES" /> minutter</translation>
 <translation id="7423513079490750513">Fjern <ph name="INPUT_METHOD_NAME" /></translation>
 <translation id="7423807071740419372"><ph name="APP_NAME" /> trenger tillatelse til å kjøre</translation>
+<translation id="7424153922653300265">Strømsparing er slått på</translation>
 <translation id="7424818322350938336">Nettverket ble lagt til</translation>
 <translation id="7427315069950454694">minnene dine for i dag</translation>
 <translation id="7427348830195639090">Bakgrunnsside: <ph name="BACKGROUND_PAGE_URL" /></translation>
@@ -6968,6 +7005,7 @@
 <translation id="7635048370253485243">Festet av administratoren din</translation>
 <translation id="7636919061354591437">Installer på denne enheten</translation>
 <translation id="7637253234491814483">Trykk på fingeravtrykkssensoren øverst til høyre på tastaturet, ved siden av av/på-knappen. Fingeravtrykksdataene lagres sikkert og sendes aldri fra <ph name="DEVICE_TYPE" />.</translation>
+<translation id="7637272932128132922">Mens denne fanen var inaktiv, frigjorde minnesparing minne til andre oppgaver. Du kan når som helst endre dette i <ph name="SETTINGS_LINK" />.</translation>
 <translation id="7637593984496473097">Det er for lite diskplass</translation>
 <translation id="7639914187072011620">Kunne ikke hente SAML-viderekoblingsadressen fra tjeneren</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> logger deg på kvalifiserte nettsteder automatisk med passord du har lagret.</translation>
@@ -6985,7 +7023,7 @@
 <translation id="7650178491875594325">Gjenoppretter lokale data</translation>
 <translation id="7650511557061837441">«<ph name="TRIGGERING_EXTENSION_NAME" />» vil fjerne «<ph name="EXTENSION_NAME" />».</translation>
 <translation id="7650582458329409456">{COUNT,plural, =1{1 fingeravtrykk er konfigurert}other{{COUNT} fingeravtrykk er konfigurert}}</translation>
-<translation id="7650677314924139716">Gjeldende innstilling for databruk er Bare Wi-Fi</translation>
+<translation id="7650677314924139716">Gjeldende innstilling for databruk er Bare Wifi</translation>
 <translation id="7650920359639954963">Ikke aktivert: <ph name="REASON" /></translation>
 <translation id="7651784568388208829">Fortsettelse av oppgaver med Telefonstyring</translation>
 <translation id="765293928828334535">Apper, utvidelser og brukerskript kan ikke legges til fra dette nettstedet</translation>
@@ -7084,6 +7122,7 @@
 <translation id="7728668285692163452">Kanalendringen blir tatt i bruk senere.</translation>
 <translation id="7730449930968088409">ta bilde av innhold på skjermen din</translation>
 <translation id="7730683939467795481">Denne siden ble endret av utvidelsen «<ph name="EXTENSION_NAME" />»</translation>
+<translation id="7735165285389721951">En annen Steam-konfigurering kjører. Vent til den er ferdig, før du prøver på nytt</translation>
 <translation id="7737115349420013392">Sammenkobler med «<ph name="DEVICE_NAME" />» …</translation>
 <translation id="7737846262459425222">Du kan når som helst endre dette i Innstillinger &gt; Google-assistent &gt; Skjermkontekst.</translation>
 <translation id="7737948071472253612">Nettsteder som ikke har lov til å bruke kameraet ditt</translation>
@@ -7121,7 +7160,7 @@
 <translation id="7764256770584298012"><ph name="DOWNLOAD_RECEIVED" /> fra <ph name="DOWNLOAD_DOMAIN" /></translation>
 <translation id="7764857504908700767">Når prøveprosjekter er påslått, blir mengden nettsøppel og svindel redusert ved bruk av tillitstokener, som hjelper nettsteder med å bekjempe svindel og skille mellom roboter og mennesker.</translation>
 <translation id="7765158879357617694">Flytt</translation>
-<translation id="7765507180157272835">Bluetooth og Wi-Fi kreves</translation>
+<translation id="7765507180157272835">Bluetooth og Wifi kreves</translation>
 <translation id="7766082757934713382">Bidrar til å redusere databruken i nettverket ved å sette automatiske app- og systemoppdateringer på pause</translation>
 <translation id="7766807826975222231">Få en innføring</translation>
 <translation id="7766838926148951335">Godta tillatelsene</translation>
@@ -7301,7 +7340,7 @@
 <translation id="7928175190925744466">Har du allerede endret dette passordet?</translation>
 <translation id="7930294771522048157">Lagrede betalingsmåter vises her</translation>
 <translation id="79312157130859720"><ph name="APP_NAME" /> deler lyden og skjermen din.</translation>
-<translation id="793293630927785390">Dialogboks for å legge til nytt Wi-Fi-nettverk</translation>
+<translation id="793293630927785390">Dialogboks for å legge til nytt Wifi-nettverk</translation>
 <translation id="7932969338829957666">Delte mapper er tilgjengelige i Linux i <ph name="BASE_DIR" />.</translation>
 <translation id="7933314993013528982">{NUM_TABS,plural, =1{Slå på lyden for nettstedet}other{Slå på lyden for nettstedene}}</translation>
 <translation id="7933518760693751884">For å lagre en side til senere, klikk på bokmerkeikonet</translation>
@@ -7382,6 +7421,7 @@
 Nøkkelfil: <ph name="KEY_FILE" />
 
 Oppbevar nøkkelfilen på et trygt sted. Du får bruk for den når du skal opprette nye versjoner av utvidelsen.</translation>
+<translation id="8001100670809322641">Vent noen minutter, og prøv igjen</translation>
 <translation id="8002274832045662704">Avansert skriveroppsett</translation>
 <translation id="8002670234429879764"><ph name="PRINTER_NAME" /> er ikke tilgjengelig lenger</translation>
 <translation id="8004092996156083991">Vi gir deg beskjed hvis passordene dine blir utsatt for sikkerhetsbrudd.</translation>
@@ -7391,6 +7431,7 @@
 <translation id="8008356846765065031">Internett er frakoblet. Sjekk Internett-forbindelsen din .</translation>
 <translation id="8009225694047762179">Administrer passord</translation>
 <translation id="8011372169388649948">«<ph name="BOOKMARK_TITLE" />» ble flyttet.</translation>
+<translation id="8011875486979733097">Kan ikke installere Steam</translation>
 <translation id="8012647001091218357">Vi kunne ikke nå foreldrene dine akkurat nå. Prøv på nytt.</translation>
 <translation id="8013993649590906847">Hvis et bilde ikke har noen nyttig beskrivelse, prøver Chrome å finne en til deg. For å opprette beskrivelser blir bilder sendt til Google.</translation>
 <translation id="8014154204619229810">Oppdateringsprogrammet kjører. Last inn siden på nytt om en liten stund for å sjekke igjen.</translation>
@@ -7481,6 +7522,7 @@
 <translation id="808894953321890993">Endre passord</translation>
 <translation id="8090234456044969073">lese en liste over nettstedene du besøker mest</translation>
 <translation id="8090513782447872344">Du kan når som helst komme tilbake for å ta en ny titt</translation>
+<translation id="809312780580957751">Kunne ikke installere Steam på denne enheten</translation>
 <translation id="8093359998839330381"><ph name="PLUGIN_NAME" /> svarer ikke</translation>
 <translation id="8095105960962832018"><ph name="BEGIN_PARAGRAPH1" />Sikkerhetskopiér til Google Disk. Gjenopprett dataene dine eller bytt enhet når som helst – helt enkelt. Sikkerhetskopier inkluderer appdata.<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />Sikkerhetskopiene dine lastes opp til Google og krypteres med passordet for Google-kontoen din.<ph name="END_PARAGRAPH2" />
@@ -7576,6 +7618,7 @@
 <translation id="8177318697334260664">{NUM_TABS,plural, =1{Flytt fanen til et nytt vindu}other{Flytt fanene til et nytt vindu}}</translation>
 <translation id="8179188928355984576">Brukes ikke med Android-apper</translation>
 <translation id="8179976553408161302">Enter</translation>
+<translation id="8180785270975217276">Strømsparing er slått på</translation>
 <translation id="8180786512391440389">«<ph name="EXTENSION" />» kan lese og slette bilder, videofiler og lydfiler i posisjonene det er merket av for.</translation>
 <translation id="8181215761849004992">Kan ikke knytte til domenet. Sjekk kontoen din for å se om du har tilstrekkelige rettigheter til å legge til enheter.</translation>
 <translation id="8182105986296479640">Appen svarer ikke.</translation>
@@ -7698,11 +7741,12 @@
 <translation id="828642162569365647">Passordet eller PIN-koden beskytter dataene dine på <ph name="DEVICE_TYPE" /> og eventuell informasjon du har tilgang til via telefonen. Du må låse opp enheten hver gang <ph name="DEVICE_TYPE" /> vekkes fra hvilemodus.</translation>
 <translation id="8287902281644548111">Søk etter API-kall/nettadresser</translation>
 <translation id="8288032458496410887">Avinstaller <ph name="APP" /></translation>
+<translation id="8288539437195337464">Sørg for at enheten er oppdatert, og prøv igjen</translation>
 <translation id="8289128870594824098">Diskstørrelse</translation>
 <translation id="8289509909262565712">Velkommen til <ph name="DEVICE_OS" /></translation>
 <translation id="8293206222192510085">Legg til bokmerke</translation>
 <translation id="8294431847097064396">Kilde</translation>
-<translation id="8298429963694909221">Du kan nå motta varsler fra telefonen din på <ph name="DEVICE_TYPE" />. Hvis du lukker varsler på <ph name="DEVICE_TYPE" />, blir de også lukket på telefonen. Sørg for at telefonen er i nærheten, og at Bluetooth og Wi-Fi er slått på.</translation>
+<translation id="8298429963694909221">Du kan nå motta varsler fra telefonen din på <ph name="DEVICE_TYPE" />. Hvis du lukker varsler på <ph name="DEVICE_TYPE" />, blir de også lukket på telefonen. Sørg for at telefonen er i nærheten, og at Bluetooth og Wifi er slått på.</translation>
 <translation id="8299319456683969623">Du er for øyeblikket ikke på nett.</translation>
 <translation id="8300011035382349091">Rediger bokmerket for denne fanen</translation>
 <translation id="8300374739238450534">Midnattsblå</translation>
@@ -7987,11 +8031,13 @@
 <translation id="859246725979739260">Dette nettstedet er blokkert fra å få tilgang til posisjonen din.</translation>
 <translation id="8593121833493516339">Send bruks- og diagnostikkdata. Hjelp til med å gjøre Android-opplevelsen bedre for barnet ditt ved å sende diagnostikk-, enhets- og appbruksdata til Google automatisk. Disse dataene brukes ikke til å identifisere barnet ditt, men bidrar til å gjøre systemet og appene bedre og mer stabile. Noen aggregerte data hjelper også Google-apper og -partnere, for eksempel Android-utviklere. Hvis du har slått på annen nett- og appaktivitet for barnet ditt, kan disse dataene bli lagret i barnets Google-konto. <ph name="BEGIN_LINK1" />Finn ut mer<ph name="END_LINK1" /></translation>
 <translation id="8596540852772265699">Egendefinerte filer</translation>
+<translation id="8597404194697561297">Velkommen til Steam på Chromebook</translation>
 <translation id="8597845839771543242">Områdeformat:</translation>
 <translation id="8599681327221583254">Én eller flere regler er ikke riktig konfigurert. Kontakt administratoren din</translation>
 <translation id="8599864823732014237">Vil du hoppe over bedriftsregistrering?</translation>
 <translation id="8601206103050338563">Autentisering av klienten TLS WWW</translation>
 <translation id="8601611099293226919">Søk på skjermen med Google Lens</translation>
+<translation id="8602674530529411098">Apper (beta)</translation>
 <translation id="8602851771975208551">Et annet program på datamaskinen la til en app som kan endre måten Chrome fungerer på.</translation>
 <translation id="8605428685123651449">SQLite-minne</translation>
 <translation id="8608618451198398104">Legg til en Kerberos-sak</translation>
@@ -8105,7 +8151,7 @@
 <translation id="8702825062053163569"><ph name="DEVICE_TYPE" /> er nå låst.</translation>
 <translation id="8703346390800944767">Hopp over annonsen</translation>
 <translation id="8705331520020532516">Serienummer</translation>
-<translation id="8705580154597116082">Wi-Fi er tilgjengelig via telefon</translation>
+<translation id="8705580154597116082">Wifi er tilgjengelig via telefon</translation>
 <translation id="8705629851992224300">Kunne ikke lese sikkerhetsnøkkelen</translation>
 <translation id="8706111173576263877">QR-koden er skannet.</translation>
 <translation id="8708000541097332489">Fjern ved avslutning</translation>
@@ -8202,7 +8248,7 @@
 <translation id="8786824282808281903">Når barnet ser dette ikonet, kan barnet bruke fingeravtrykket sitt til å identifisere seg eller godkjenne kjøp.</translation>
 <translation id="8787575090331305835">{NUM_TABS,plural, =1{Gruppe uten navn – 1 fane}other{Gruppe uten navn – # faner}}</translation>
 <translation id="8791534160414513928">Send en «Ingen sporing»-forespørsel med nettrafikken din</translation>
-<translation id="879413103056696865">Når Wi-Fi-sonen er på, kommer <ph name="PHONE_NAME" /> til å</translation>
+<translation id="879413103056696865">Når Wifi-sonen er på, kommer <ph name="PHONE_NAME" /> til å</translation>
 <translation id="8795916974678578410">Nytt vindu</translation>
 <translation id="8797459392481275117">Oversett aldri dette nettstedet</translation>
 <translation id="8798099450830957504">Standard</translation>
@@ -8221,7 +8267,7 @@
 <translation id="8812593354822910461">Slett også nettlesingsdata (<ph name="URL" />), noe som medfører at du blir logget av <ph name="DOMAIN" />. <ph name="LEARN_MORE" /></translation>
 <translation id="8813698869395535039">Kan ikke logge på <ph name="USERNAME" /></translation>
 <translation id="8813872945700551674">Få en forelder til å godkjenne «<ph name="EXTENSION_NAME" />»</translation>
-<translation id="8814190375133053267">Wi-Fi</translation>
+<translation id="8814190375133053267">Wifi</translation>
 <translation id="8814319344131658221">Språkene for stavekontroll er basert på språkpreferansen din</translation>
 <translation id="8814644416678422095">Harddisk</translation>
 <translation id="881782782501875829">Legg til portnummer</translation>
@@ -8596,7 +8642,7 @@
 <translation id="9159643062839240276">Prøv å
     <ph name="BEGIN_LIST" />
       <ph name="LIST_ITEM" />kontrollere nettverkskablene, modemet og ruteren
-      <ph name="LIST_ITEM" />koble til Wi-Fi på nytt
+      <ph name="LIST_ITEM" />koble til Wifi på nytt
       <ph name="LIST_ITEM" />kjøre Tilkoblingsdiagnostikk for Chrome
     <ph name="END_LIST" /></translation>
 <translation id="916607977885256133">Bilde i bilde</translation>
@@ -8676,6 +8722,7 @@
 <translation id="939598580284253335">Angi en passordfrase</translation>
 <translation id="939736085109172342">Ny mappe</translation>
 <translation id="942532530371314860"><ph name="APP_NAME" /> deler lyd og en fane fra Chrome.</translation>
+<translation id="944799160843436808">Det oppsto et problem med konfigurering av Steam på Chromebook</translation>
 <translation id="945522503751344254">Send tilbakemelding</translation>
 <translation id="947329552760389097">&amp;Undersøk elementer</translation>
 <translation id="947526284350604411">Svaret ditt</translation>
@@ -8701,6 +8748,7 @@
 <translation id="968000525894980488">Slå på Google Play Tjenester.</translation>
 <translation id="968037381421390582">&amp;Lim inn og søk etter «<ph name="SEARCH_TERMS" />»</translation>
 <translation id="969096075394517431">Endre språk</translation>
+<translation id="969574218206797926">Minnesparing frigjør minne fra inaktive faner, slik at det kan brukes av aktive faner og andre apper</translation>
 <translation id="970047733946999531">{NUM_TABS,plural, =1{1 fane}other{# faner}}</translation>
 <translation id="971510864672937292">Vil du slette nettstedsdata og -tillatelser for <ph name="SITE_NAME" /> og alle undernettsteder?</translation>
 <translation id="971774202801778802">Bokmerkenettadresse</translation>
diff --git a/chrome/app/resources/generated_resources_or.xtb b/chrome/app/resources/generated_resources_or.xtb
index 9982ed81..bde1230 100644
--- a/chrome/app/resources/generated_resources_or.xtb
+++ b/chrome/app/resources/generated_resources_or.xtb
@@ -2395,6 +2395,7 @@
 <translation id="3188465121994729530">ହାରାହାରି ଗତି</translation>
 <translation id="3189187154924005138">ବଡ଼ କର୍ସର୍</translation>
 <translation id="3190558889382726167">ପାସୱାର୍ଡ ସେଭ୍‍ କରାଯାଇଛି</translation>
+<translation id="3192589799003798742">Chromebookରେ Steam ସେଟ ଅପ କରାଯାଉଛି</translation>
 <translation id="3192947282887913208">ଅଡିଓ ଫାଇଲ୍ସ</translation>
 <translation id="3193695589337931419">ସିଷ୍ଟମ ସିଗନାଲ ୟୁଟିଲିଟିଜ</translation>
 <translation id="3194786596445804250">ତୃତୀୟ-ପକ୍ଷ କୁକୀଗୁଡ଼ିକୁ ବ୍ଲକ କରିବା ବିଷୟରେ ବିବରଣୀ ଦେଖାନ୍ତୁ</translation>
@@ -2534,6 +2535,7 @@
 <translation id="3341699307020049241">ଭୁଲ ପିନ୍। ଆପଣଙ୍କର <ph name="RETRIES" />ଟି ପ୍ରଚେଷ୍ଟା ବାକି ଅଛି।</translation>
 <translation id="3341703758641437857">ଫାଇଲ୍ URLଗୁଡ଼ିକୁ ଆକ୍‌ସେସ୍ କରିବା ପାଇଁ ଅନୁମତି ଦିଅନ୍ତୁ</translation>
 <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" ଏହି ଏକ୍ସଟେନ୍‌ସନ୍‌କୁ କାଢିବାକୁ ଚାହୁଁଛି।</translation>
+<translation id="3343977377045378693">ସେଟଅପ କରାଯାଉଛି</translation>
 <translation id="3345135638360864351">ଆପଣଙ୍କର ଏହି ସାଇଟ୍‌କୁ ଆକ୍ସେସ୍‌ କରିବାକୁ ଅନୁରୋଧ <ph name="NAME" />ଙ୍କୁ ପଠାଯାଇପାରିଲା ନାହିଁ। ଦୟାକରି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।</translation>
 <translation id="3345634917232014253">ସୁରକ୍ଷା ଯାଞ୍ଚ କିଛି ସମୟ ପୂର୍ବରୁ ହୋଇଯାଇଛି</translation>
 <translation id="3345886924813989455">କୌଣସି ସମର୍ଥିତ ବ୍ରାଉଜର୍ ମିଳିଲା ନାହିଁ</translation>
@@ -2545,6 +2547,7 @@
 <translation id="3354768182971982851">Chrome ଆପ୍ସର ପୁରୁଣା ସଂସ୍କରଣଗୁଡ଼ିକ ଡିସେମ୍ବର 2022 ପରେ Mac ଡିଭାଇସଗୁଡ଼ିକରେ ଖୋଲିବ ନାହିଁ। ଏକ ନୂଆ ସଂସ୍କରଣ ଉପଲବ୍ଧ ଅଛି ନା ନାହିଁ ତାହା ଆପଣ ଯାଞ୍ଚ କରିପାରିବେ।</translation>
 <translation id="3354972872297836698"><ph name="DEVICE_NAME" /> ଡିଭାଇସ ସହ ପେୟାର କରାଯାଇପାରିଲା ନାହିଁ; ପୁଣି ଚେଷ୍ଟା କରିବା ପାଇଁ ଡିଭାଇସ ଚୟନ କରନ୍ତୁ</translation>
 <translation id="3355936511340229503">ସଂଯୋଗରେ ତ୍ରୁଟି</translation>
+<translation id="3356036636691722598">ଆପଣଙ୍କ Chromebookରେ ଗେମିଂର ମଜା ନିଅନ୍ତୁ</translation>
 <translation id="3356469410714175391">(ଭର୍ଚୁଆଲ କାର୍ଡ ସକ୍ଷମ କରାଯାଇଛି)</translation>
 <translation id="3356580349448036450">ସମ୍ପୂର୍ଣ୍ଣ ହୋଇଛି</translation>
 <translation id="3359256513598016054">ସାର୍ଟିଫିକେଟ୍ ନୀତି ପ୍ରତିବନ୍ଧଗୁଡ଼ିକ</translation>
@@ -3458,6 +3461,7 @@
 <translation id="4211904048067111541">Android ଆପ ସହ ବ୍ୟବହାର କରିବା ବନ୍ଦ କରନ୍ତୁ</translation>
 <translation id="42126664696688958">ଏକ୍ସପୋର୍ଟ କରନ୍ତୁ</translation>
 <translation id="42137655013211669">ଏହି ରିସୋର୍ସକୁ ଆକ୍ସେସ୍‌ ସର୍ଭର୍‌ ଦ୍ୱାରା ନିଷିଦ୍ଧ କରାଯାଇଥିଲା।</translation>
+<translation id="4214192212360095377">ବର୍ତ୍ତମାନ ବନ୍ଦ କରନ୍ତୁ</translation>
 <translation id="4217558091331485702">ଖୋଲିବା ପୂର୍ବରୁ ସ୍କାନ କରନ୍ତୁ</translation>
 <translation id="4217571870635786043">ଶ୍ରୁତଲିଖନ</translation>
 <translation id="4218081191298393750">ଏହି ଟାବକୁ ମ୍ୟୁଟ କରିବା ପାଇଁ ସ୍ପିକର ଆଇକନରେ କ୍ଲିକ କରନ୍ତୁ</translation>
@@ -4360,6 +4364,7 @@
 <translation id="5089763948477033443">ସାଇଡ ପ୍ୟାନେଲ ହ୍ୟାଣ୍ଡେଲ ରିସାଇଜ</translation>
 <translation id="5090637338841444533">ଆପଣଙ୍କ କ୍ୟାମେରାର ସ୍ଥିତିକୁ ଟ୍ରାକ୍ କରିବାକୁ ଅନୁମତି ଦିଆଯାଇନାହିଁ</translation>
 <translation id="5093569275467863761">ଇନକଗ୍ନିଟୋ ବ୍ୟାକ୍/ଫରୱାର୍ଡ୍ କ୍ୟାଶ୍ ସବଫ୍ରେମ୍: <ph name="BACK_FORWARD_CACHE_INCOGNITO_PAGE_URL" /></translation>
+<translation id="5094042205195563542">ଇନଷ୍ଟଲେସନ ଆରମ୍ଭ କରାଯାଉଛି</translation>
 <translation id="5094176498302660097">ଆପଣ ଏହି ଆପ ମାଧ୍ୟମରେ ଫାଇଲ୍ସ ଆପ କିମ୍ବା ଅନ୍ୟ ଆପ୍ସରୁ ସମର୍ଥିତ ଫାଇଲଗୁଡ଼ିକୁ ଖୋଲିପାରିବେ ଏବଂ ଏଡିଟ କରିପାରିବେ। କେଉଁ ଫାଇଲଗୁଡ଼ିକ ଡିଫଲ୍ଟ ଭାବେ ଏହି ଆପକୁ ଖୋଲିବ ତାହା ନିୟନ୍ତ୍ରଣ କରିବା ପାଇଁ, <ph name="BEGIN_LINK" />ଆପଣଙ୍କ ଡିଭାଇସରେ ଡିଫଲ୍ଟ ଆପ୍ସ କିପରି ସେଟ କରିବେ ତାହା ଜାଣନ୍ତୁ<ph name="END_LINK" />।</translation>
 <translation id="5094721898978802975">ସହଯୋଗୀ ସ୍ଥାନୀୟ ଆପ୍ଲିକେସନ୍‌ଗୁଡ଼ିକ ସହିତ ଯୋଗାଯୋଗ କରନ୍ତୁ</translation>
 <translation id="5097002363526479830">ନେଟ୍‌ୱର୍କ '<ph name="NAME" /> ସହ ସଂଯୋଗ ହୋଇପାରିଲା ନାହିଁ': <ph name="DETAILS" /></translation>
@@ -6381,6 +6386,7 @@
 <translation id="7014174261166285193">ଇନ୍‍ଷ୍ଟଲ୍ କରିହେଲା ନାହିଁ</translation>
 <translation id="7014480873681694324">ହାଇଲାଇଟ୍ କାଢ଼ି ଦିଅନ୍ତୁ</translation>
 <translation id="7014741021609395734">ଜୁମ୍ ସ୍ତର</translation>
+<translation id="7014961128696979283">Steam ଲଞ୍ଚ କରନ୍ତୁ</translation>
 <translation id="7015088858756332848">Chromebookରେ Steam ଆରମ୍ଭ କରାଯାଇପାରିଲା ନାହିଁ। ଦୟାକରି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ</translation>
 <translation id="7017004637493394352">ପୁଣି "Ok Google" କୁହନ୍ତୁ</translation>
 <translation id="7017219178341817193">ଏକ ନୂଆ ପୃଷ୍ଠା ଯୋଗ କରନ୍ତୁ</translation>
@@ -6774,6 +6780,7 @@
 <translation id="7423425410216218516"><ph name="MINUTES" /> ମିନିଟ୍ ପାଇଁ ଭିଜିବିଲିଟୀ ଚାଲୁ ଅଛି</translation>
 <translation id="7423513079490750513"><ph name="INPUT_METHOD_NAME" /> କାଢ଼ି ଦିଅନ୍ତୁ</translation>
 <translation id="7423807071740419372">ଚାଲିବା ପାଇଁ <ph name="APP_NAME" /> ଅନୁମତି ଆବଶ୍ୟକ କରେ</translation>
+<translation id="7424153922653300265">ଏନର୍ଜି ସେଭର ଚାଲୁ କରାଯାଇଛି</translation>
 <translation id="7424818322350938336">ନେଟୱାର୍କ ଯୋଗ କରାଯାଇଛି</translation>
 <translation id="7427315069950454694">ଆଜି ପାଇଁ ଆପଣଙ୍କ ମେମୋରୀ</translation>
 <translation id="7427348830195639090">ପୃଷ୍ଠପଟ ପୃଷ୍ଠା: <ph name="BACKGROUND_PAGE_URL" /></translation>
@@ -8013,6 +8020,7 @@
 <translation id="859246725979739260">ଆପଣଙ୍କ ଲୋକେସନ୍ ଆକ୍ସେସ୍ କରିବାରୁ ଏହି ସାଇଟକୁ ବ୍ଲକ୍ କରାଯାଇଛି।</translation>
 <translation id="8593121833493516339">ବ୍ୟବହାର ଓ ଡାଏଗ୍ନୋଷ୍ଟିକ୍ ଡାଟା ପଠାନ୍ତୁ। ସ୍ଵଚାଳିତ ଭାବେ ଡାଏଗ୍ନୋଷ୍ଟିକ୍, ଡିଭାଇସ୍ ଓ ଆପ୍ ବ୍ୟବହାର ଡାଟାକୁ Googleକୁ ପଠାଇ ଆପଣଙ୍କ ପିଲାର Android ଅନୁଭବକୁ ଉନ୍ନତ କରିବାରେ ସାହାଯ୍ୟ କରନ୍ତୁ। ଆପଣଙ୍କ ପିଲାକୁ ଚିହ୍ନଟ କରିବାରେ ଏହାକୁ ବ୍ୟବହାର କରାଯାଇପାରିବ ନାହିଁ ଏବଂ ସିଷ୍ଟମ୍ ଓ ଆପ୍‌ରେ ସ୍ଥିରତା ତଥା ଅନ୍ୟ ଉନ୍ନତିଗୁଡ଼ିକ ଆଣିବାରେ ସାହାଯ୍ୟ କରିବ। କିଛି ଏକତ୍ରିତ ଡାଟା Google ଆପ୍ସ ଏବଂ ତାହାର ସହଭାଗୀ, ଯେପରିକି Android ଡେଭଲପର୍‌କୁ ମଧ୍ୟ ସାହାଯ୍ୟ କରିବ। ଯଦି ଅତିରିକ୍ତ ୱେବ୍ ଓ ଆପ୍ କାର୍ଯ୍ୟକଳାପକୁ ଆପଣଙ୍କ ପିଲା ପାଇଁ ଚାଲୁ କରାଯାଏ, ତେବେ ଏହି ଡାଟା ସେମାନଙ୍କ Google ଆକାଉଣ୍ଟରେ ସେଭ୍ ହୋ‍ଇପାରେ। <ph name="BEGIN_LINK1" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="END_LINK1" /></translation>
 <translation id="8596540852772265699">କଷ୍ଟମ୍ ଫାଇଲ୍ସ</translation>
+<translation id="8597404194697561297">Chromebookରେ Streamକୁ ସ୍ୱାଗତ</translation>
 <translation id="8597845839771543242">ପ୍ରପର୍ଟି ଫର୍ମାଟ୍:</translation>
 <translation id="8599681327221583254">ଏକ କିମ୍ବା ଅଧିକ ନୀତିକୁ ସଠିକ୍ ଭାବରେ କନଫିଗର୍ କରାଯାଇନାହିଁ। ଦୟାକରି ଆପଣଙ୍କ ଆଡମିନିଷ୍ଟ୍ରେଟରଙ୍କ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ</translation>
 <translation id="8599864823732014237">ଏଣ୍ଟରପ୍ରାଇଜ ପଞ୍ଜିକରଣକୁ ବାଦ୍ ଦେବେ?</translation>
diff --git a/chrome/app/resources/generated_resources_pa.xtb b/chrome/app/resources/generated_resources_pa.xtb
index fedb580a..5148592 100644
--- a/chrome/app/resources/generated_resources_pa.xtb
+++ b/chrome/app/resources/generated_resources_pa.xtb
@@ -2407,6 +2407,7 @@
 <translation id="3188465121994729530">ਮੂਵ ਕਰਨ ਦੀ ਔਸਤ</translation>
 <translation id="3189187154924005138">ਵੱਡਾ ਕਰਸਰ</translation>
 <translation id="3190558889382726167">ਪਾਸਵਰਡ ਰੱਖਿਅਤ ਕੀਤਾ ਗਿਆ</translation>
+<translation id="3192589799003798742">Chromebook 'ਤੇ Steam ਦਾ ਸੈੱਟਅੱਪ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ</translation>
 <translation id="3192947282887913208">ਆਡੀਓ ਫਾਈਲ</translation>
 <translation id="3193695589337931419">ਸਿਸਟਮ ਸਿਗਨਲਾਂ ਦੀਆਂ ਉਪਯੋਗਤਾਵਾਂ</translation>
 <translation id="3194786596445804250">ਤੀਜੀ-ਧਿਰ ਦੀਆਂ ਕੁਕੀਜ਼ ਨੂੰ ਬਲਾਕ ਕਰਨ ਬਾਰੇ ਵੇਰਵੇ ਦਿਖਾਓ</translation>
@@ -2546,6 +2547,7 @@
 <translation id="3341699307020049241">ਗਲਤ ਪਿੰਨ। ਤੁਹਾਡੇ ਕੋਲ <ph name="RETRIES" /> ਕੋਸ਼ਿਸ਼ਾਂ ਬਾਕੀ ਹਨ।</translation>
 <translation id="3341703758641437857">ਫਾਈਲ URL ਤੱਕ ਪਹੁੰਚ ਦੀ ਆਗਿਆ ਦਿਓ</translation>
 <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" ਇਸ ਐਕਟੈਂਸ਼ਨ ਨੂੰ ਹਟਾਉਣਾ ਚਾਹੁੰਦੀ ਹੈ।</translation>
+<translation id="3343977377045378693">ਸੈੱਟਅੱਪ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ</translation>
 <translation id="3345135638360864351">ਇਸ ਸਾਈਟ ਤੱਕ ਪਹੁੰਚ ਲਈ ਤੁਹਾਡੀ ਬੇਨਤੀ <ph name="NAME" /> ਨੂੰ ਨਹੀਂ ਭੇਜੀ ਜਾ ਸਕੀ। ਕਿਰਪਾ ਕਰਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।</translation>
 <translation id="3345634917232014253">ਸੁਰੱਖਿਆ ਜਾਂਚ ਕੁਝ ਸਮਾਂ ਪਹਿਲਾਂ ਚਲਾਈ ਗਈ</translation>
 <translation id="3345886924813989455">ਕੋਈ ਸਮਰਥਿਤ ਬ੍ਰਾਊਜ਼ਰ ਨਹੀਂ ਮਿਲਿਆ</translation>
@@ -2557,6 +2559,7 @@
 <translation id="3354768182971982851">ਦਸੰਬਰ 2022 ਤੋਂ ਬਾਅਦ Chrome ਐਪਾਂ ਦੇ ਪੁਰਾਣੇ ਵਰਜ਼ਨ Mac ਡੀਵਾਈਸਾਂ 'ਤੇ ਨਹੀਂ ਖੁੱਲ੍ਹਣਗੇ। ਤੁਸੀਂ ਜਾਂਚ ਕਰ ਸਕਦੇ ਹੋ ਕਿ ਕੋਈ ਨਵਾਂ ਵਰਜਨ ਉਪਲਬਧ ਹੈ ਜਾਂ ਨਹੀਂ।</translation>
 <translation id="3354972872297836698"><ph name="DEVICE_NAME" /> ਡੀਵਾਈਸ ਨਾਲ ਜੋੜਾਬੱਧ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ; ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਲਈ ਡੀਵਾਈਸ ਚੁਣੋ</translation>
 <translation id="3355936511340229503">ਕਨੈਕਸ਼ਨ ਗੜਬੜ</translation>
+<translation id="3356036636691722598">ਆਪਣੀ Chromebook 'ਤੇ ਗੇਮਿੰਗ ਦਾ ਅਨੰਦ ਮਾਣੋ</translation>
 <translation id="3356469410714175391">(ਆਭਾਸੀ ਕਾਰਡ ਚਾਲੂ ਹੈ)</translation>
 <translation id="3356580349448036450">ਪੂਰਾ</translation>
 <translation id="3359256513598016054">ਪ੍ਰਮਾਣ-ਪੱਤਰ ਨੀਤੀ ਪਾਬੰਦੀਆਂ</translation>
@@ -3471,6 +3474,7 @@
 <translation id="4211904048067111541">Android ਐਪਾਂ ਨਾਲ ਵਰਤਣਾ ਬੰਦ ਕਰੋ</translation>
 <translation id="42126664696688958">ਨਿਰਯਾਤ ਕਰੋ</translation>
 <translation id="42137655013211669">ਇਸ ਸਾਧਨ ਤੱਕ ਪਹੁੰਚ ਸਰਵਰ ਵੱਲੋਂ ਵਰਜਿਤ ਸੀ।</translation>
+<translation id="4214192212360095377">ਹੁਣੇ ਬੰਦ ਕਰੋ</translation>
 <translation id="4217558091331485702">ਖੋਲ੍ਹਣ ਤੋਂ ਪਹਿਲਾਂ ਸਕੈਨ ਕਰੋ</translation>
 <translation id="4217571870635786043">ਬੋਲ ਅਨੁਸਾਰ ਲਿਖਤ</translation>
 <translation id="4218081191298393750">ਇਸ ਟੈਬ ਨੂੰ ਮਿਊਟ ਕਰਨ ਲਈ ਸਪੀਕਰ ਪ੍ਰਤੀਕ 'ਤੇ ਕਲਿੱਕ ਕਰੋ</translation>
@@ -4370,6 +4374,7 @@
 <translation id="5089763948477033443">ਸਾਈਡ ਪੈਨਲ ਦਾ ਆਕਾਰ ਬਦਲਣ ਵਾਲਾ ਹੈਂਡਲ</translation>
 <translation id="5090637338841444533">ਤੁਹਾਡੇ ਕੈਮਰੇ ਦੀ ਸਥਿਤੀ ਨੂੰ ਟਰੈਕ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ</translation>
 <translation id="5093569275467863761">ਪੂਰੇ ਪੰਨੇ ਦੇ ਕੈਸ਼ੇ ਵਿੱਚ ਸਟੋਰ ਕੀਤਾ ਇਨਕੋਗਨਿਟੋ ਸਬਫ੍ਰੇਮ: <ph name="BACK_FORWARD_CACHE_INCOGNITO_PAGE_URL" /></translation>
+<translation id="5094042205195563542">ਸਥਾਪਨਾ ਨੂੰ ਸ਼ੁਰੂ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ</translation>
 <translation id="5094176498302660097">ਤੁਸੀਂ ਆਪਣੇ ਫ਼ਾਈਲ ਐਪ ਜਾਂ ਹੋਰ ਐਪਾਂ ਤੋਂ ਇਸ ਐਪ ਨਾਲ ਸਮਰਥਿਤ ਫ਼ਾਈਲਾਂ ਨੂੰ ਖੋਲ੍ਹ ਸਕਦੇ ਹੋ ਅਤੇ ਉਨ੍ਹਾਂ ਦਾ ਸੰਪਾਦਨ ਕਰ ਸਕਦੇ ਹੋ। ਇਹ ਕੰਟਰੋਲ ਕਰਨ ਲਈ ਕਿ ਕਿਹੜੀਆਂ ਫ਼ਾਈਲਾਂ ਪੂਰਵ-ਨਿਰਧਾਰਿਤ ਤੌਰ 'ਤੇ ਇਸ ਐਪ ਨੂੰ ਖੋਲ੍ਹਣ, ਇਸ ਲਈ <ph name="BEGIN_LINK" />ਆਪਣੇ ਡੀਵਾਈਸ 'ਤੇ ਪੂਰਵ-ਨਿਰਧਾਰਿਤ ਐਪਾਂ ਨੂੰ ਸੈੱਟ ਕਰਨ ਦਾ ਤਰੀਕਾ ਜਾਣੋ<ph name="END_LINK" />।</translation>
 <translation id="5094721898978802975">ਨੇਟਿਵ ਐਪਲੀਕੇਸ਼ਨਾਂ ਨਾਲ ਸਹਿਯੋਗ ਕਰਦੇ ਹੋਏ ਸੰਚਾਰ ਕਰੋੇ</translation>
 <translation id="5097002363526479830">'<ph name="NAME" />' ਨਾਲ ਕਨੈਕਟ ਕਰਨ ਵਿੱਚ ਅਸਫਲ ਹੋ ਗਿਆ: <ph name="DETAILS" /></translation>
@@ -6391,6 +6396,7 @@
 <translation id="7014174261166285193">ਇੰਸਟੌਲੇਸ਼ਨ ਅਸਫਲ।</translation>
 <translation id="7014480873681694324">ਹਾਈਲਾਈਟ ਹਟਾਓ</translation>
 <translation id="7014741021609395734">ਜ਼ੂਮ ਪੱਧਰ</translation>
+<translation id="7014961128696979283">Steam ਨੂੰ ਲਾਂਚ ਕਰੋ</translation>
 <translation id="7017004637493394352">ਦੁਬਾਰਾ "Ok Google" ਕਹੋ</translation>
 <translation id="7017219178341817193">ਇੱਕ ਨਵਾਂ ਸਫ਼ਾ ਜੋੜੋ</translation>
 <translation id="7017354871202642555">window ਦੇ ਸੈਟ ਹੋਣ ਤੋਂ ਬਾਅਦ ਮੋਡ ਸੈਟ ਨਹੀਂ ਕਰ ਸਕਦਾ।</translation>
@@ -6783,6 +6789,7 @@
 <translation id="7423425410216218516">ਦਿਖਣਯੋਗਤਾ <ph name="MINUTES" /> ਮਿੰਟ ਲਈ ਚਾਲੂ ਹੈ</translation>
 <translation id="7423513079490750513"><ph name="INPUT_METHOD_NAME" /> ਨੂੰ ਹਟਾਓ</translation>
 <translation id="7423807071740419372"><ph name="APP_NAME" /> ਨੂੰ ਚਲਾਉਣ ਲਈ ਇਜਾਜ਼ਤ ਦੀ ਲੋੜ ਹੈ</translation>
+<translation id="7424153922653300265">ਊਰਜਾ ਸੇਵਰ ਨੂੰ ਚਾਲੂ ਕੀਤਾ ਗਿਆ</translation>
 <translation id="7424818322350938336">ਨੈੱਟਵਰਕ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ</translation>
 <translation id="7427315069950454694">ਅੱਜ ਦੇ ਲਈ ਤੁਹਾਡੀਆਂ ਯਾਦਾਂ</translation>
 <translation id="7427348830195639090">ਪਿਛੋਕੜ ਸਫ਼ਾ: <ph name="BACKGROUND_PAGE_URL" /></translation>
@@ -8019,6 +8026,7 @@
 <translation id="859246725979739260">ਇਸ ਸਾਈਟ ਨੂੰ ਤੁਹਾਡੇ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਤੋਂ ਬਲਾਕ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ।</translation>
 <translation id="8593121833493516339">ਵਰਤੋਂ ਅਤੇ ਤਸ਼ਖੀਸ ਡਾਟਾ ਭੇਜੋ। Google ਨੂੰ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਤਸ਼ਖੀਸ, ਡੀਵਾਈਸ ਅਤੇ ਐਪ ਵਰਤੋਂ ਡਾਟਾ ਭੇਜ ਕੇ ਆਪਣੇ ਬੱਚੇ ਦਾ Android ਅਨੁਭਵ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਵਿੱਚ ਮਦਦ ਕਰੋ। ਇਸਦੀ ਵਰਤੋਂ ਤੁਹਾਡੇ ਬੱਚੇ ਦੀ ਪਛਾਣ ਕਰਨ ਲਈ ਨਹੀਂ ਕੀਤੀ ਜਾਵੇਗੀ ਅਤੇ ਸਿਸਟਮ ਅਤੇ ਐਪ ਸਥਿਰਤਾ ਅਤੇ ਹੋਰ ਚੀਜ਼ਾਂ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਵਿੱਚ ਮਦਦ ਮਿਲੇਗੀ। ਕੁਝ ਏਕੀਕ੍ਰਿਤ ਜਾਣਕਾਰੀ Google ਐਪਾਂ ਅਤੇ ਪਾਰਟਨਰਾਂ, ਜਿਵੇਂ ਕਿ Android ਵਿਕਾਸਕਾਰਾਂ, ਦੀ ਵੀ ਮਦਦ ਕਰੇਗੀ। ਜੇ ਤੁਹਾਡੇ ਬੱਚੇ ਲਈ ਵਧੀਕ 'ਵੈੱਬ ਅਤੇ ਐਪ ਸਰਗਰਮੀ' ਚਾਲੂ ਹੋਵੇ, ਤਾਂ ਇਹ ਡਾਟਾ ਉਸਦੇ Google ਖਾਤੇ ਵਿੱਚ ਰੱਖਿਅਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। <ph name="BEGIN_LINK1" />ਹੋਰ ਜਾਣੋ<ph name="END_LINK1" /></translation>
 <translation id="8596540852772265699">ਵਿਉਂਤਬੱਧ ਫਾਈਲਾਂ</translation>
+<translation id="8597404194697561297">Chromebook 'ਤੇ Steam ਵਿੱਚ ਜੀ ਆਇਆਂ ਨੂੰ</translation>
 <translation id="8597845839771543242">ਪ੍ਰਾਪਰਟੀ ਫੌਰਮੈਟ:</translation>
 <translation id="8599681327221583254">ਇੱਕ ਜਾਂ ਇੱਕ ਤੋਂ ਵੱਧ ਨੀਤੀਆਂ ਦਾ ਸਹੀ ਤਰੀਕੇ ਨਾਲ ਸੰਰੂਪਣ ਨਹੀਂ ਕੀਤਾ ਗਿਆ। ਕਿਰਪਾ ਕਰਕੇ ਆਪਣੇ ਪ੍ਰਸ਼ਾਸਕ ਨੂੰ ਸੰਪਰਕ ਕਰੋ</translation>
 <translation id="8599864823732014237">ਕੀ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਦਰਜ ਕਰਨ ਦੀ ਪ੍ਰਕਿਰਿਆ ਛੱਡਣੀ ਹੈ?</translation>
diff --git a/chrome/app/resources/generated_resources_pl.xtb b/chrome/app/resources/generated_resources_pl.xtb
index a551d43..7389141a 100644
--- a/chrome/app/resources/generated_resources_pl.xtb
+++ b/chrome/app/resources/generated_resources_pl.xtb
@@ -1116,6 +1116,7 @@
 <translation id="2034346955588403444">Dodaj inną sieć Wi-Fi</translation>
 <translation id="2035211704574173780">Skala szarości</translation>
 <translation id="203574396658008164">Włącz robienie notatek na ekranie blokady</translation>
+<translation id="2036514476578229158">Otrzymaliśmy Twoją prośbę o zgodę na odwiedzenie tej strony. Twoi rodzice mogą odpowiedzieć w Family Link.</translation>
 <translation id="2037445849770872822">To konto Google ma ustawiony nadzór. Jeśli chcesz skonfigurować dodatkowe ustawienia kontroli rodzicielskiej, kliknij Dalej.
 
 W przeciwnym razie wyloguj się, by zmiany wprowadzone na koncie były widoczne na urządzeniu.
@@ -1236,6 +1237,7 @@
 <translation id="2135787500304447609">&amp;Wznów</translation>
 <translation id="2136372518715274136">Wpisz nowe hasło</translation>
 <translation id="2136476978468204130">Wpisane hasło jest nieprawidłowe</translation>
+<translation id="2137891579555018930">Czekam na uzyskanie pozwolenia…</translation>
 <translation id="2138398485845393913">Połączenie z urządzeniem „<ph name="DEVICE_NAME" />” jest nadal w toku</translation>
 <translation id="2139919072249842737">Przycisk konfiguracji</translation>
 <translation id="2140788884185208305">Kondycja baterii</translation>
@@ -2371,6 +2373,7 @@
 <translation id="3188465121994729530">Średnia krocząca</translation>
 <translation id="3189187154924005138">Duży kursor</translation>
 <translation id="3190558889382726167">Hasło zostało zapisane</translation>
+<translation id="3192589799003798742">Konfiguruję aplikację Steam na Chromebooka</translation>
 <translation id="3192947282887913208">Pliki dźwiękowe</translation>
 <translation id="3193695589337931419">Narzędzia do zbierania sygnałów systemowych</translation>
 <translation id="3194786596445804250">Pokaż szczegóły blokowania plików cookie innych firm</translation>
@@ -2510,6 +2513,7 @@
 <translation id="3341699307020049241">Nieprawidłowy kod PIN. Liczba pozostałych prób: <ph name="RETRIES" />.</translation>
 <translation id="3341703758641437857">Zezwalaj na dostęp do adresów URL plików</translation>
 <translation id="3342361181740736773">„<ph name="TRIGGERING_EXTENSION_NAME" />” chce usunąć to rozszerzenie.</translation>
+<translation id="3343977377045378693">Konfiguruję</translation>
 <translation id="3345135638360864351">Nie udało się wysłać żądania dostępu do strony do <ph name="NAME" />. Spróbuj ponownie.</translation>
 <translation id="3345634917232014253">Kontrola zabezpieczeń została wykonana przed chwilą.</translation>
 <translation id="3345886924813989455">Nie znaleziono obsługiwanej przeglądarki</translation>
@@ -2521,6 +2525,7 @@
 <translation id="3354768182971982851">Z końcem grudnia 2022 r. stare wersje aplikacji Chrome przestaną działać na urządzeniach Mac. Możesz sprawdzić, czy jest dostępna nowa wersja.</translation>
 <translation id="3354972872297836698">Nie udało się sparować urządzenia <ph name="DEVICE_NAME" />. Wybierz urządzenie i spróbuj ponownie</translation>
 <translation id="3355936511340229503">Błąd połączenia</translation>
+<translation id="3356036636691722598">Miłego grania na Chromebooku</translation>
 <translation id="3356469410714175391">(Włączono wirtualną kartę)</translation>
 <translation id="3356580349448036450">Zakończone</translation>
 <translation id="3359256513598016054">Ograniczenia zasad certyfikatu</translation>
@@ -3433,6 +3438,7 @@
 <translation id="4211904048067111541">Przestań używać z aplikacjami na Androida</translation>
 <translation id="42126664696688958">Eksportuj</translation>
 <translation id="42137655013211669">Serwer zabronił dostępu do tego zasobu.</translation>
+<translation id="4214192212360095377">Wyłącz teraz</translation>
 <translation id="4217558091331485702">Przeskanuj przed otwarciem</translation>
 <translation id="4217571870635786043">Dyktowanie</translation>
 <translation id="4218081191298393750">Kliknij ikonę głośnika, aby wyciszyć tę kartę</translation>
@@ -4099,6 +4105,7 @@
 <translation id="4858913220355269194">Fritz</translation>
 <translation id="4862642413395066333">Podpisywanie odpowiedzi protokołu OCSP</translation>
 <translation id="4863769717153320198">Wygląda na <ph name="WIDTH" /> × <ph name="HEIGHT" /> (domyślna)</translation>
+<translation id="486459320933704969">Twój rodzic lub opiekun musi wyrazić zgodę na odwiedzenie tej witryny</translation>
 <translation id="4864805589453749318">Wybierz rodzica, który zezwala na dodanie konta szkolnego.</translation>
 <translation id="486635084936119914">Automatycznie otwieraj określone typy plików po pobraniu</translation>
 <translation id="4868281708609571334">Naucz Asystenta Google rozpoznawać głos użytkownika <ph name="SUPERVISED_USER_NAME" /></translation>
@@ -4328,6 +4335,7 @@
 <translation id="5089763948477033443">Uchwyt zmiany rozmiaru panelu bocznego</translation>
 <translation id="5090637338841444533">Nie zezwolono na śledzenie pozycji kamery</translation>
 <translation id="5093569275467863761">Ramka podrzędna w trybie incognito w pamięci podręcznej stanu strony internetowej: <ph name="BACK_FORWARD_CACHE_INCOGNITO_PAGE_URL" /></translation>
+<translation id="5094042205195563542">Rozpoczynam instalację</translation>
 <translation id="5094176498302660097">W tej aplikacji możesz otwierać i edytować obsługiwane pliki, do których uzyskujesz dostęp za pomocą aplikacji Pliki lub innych aplikacji. Aby określić, które pliki powinny się domyślnie otwierać w tej aplikacji, <ph name="BEGIN_LINK" />dowiedz się, jak ustawić domyślne aplikacje na urządzeniu<ph name="END_LINK" />.</translation>
 <translation id="5094721898978802975">Komunikowanie się ze współpracującymi aplikacjami natywnymi</translation>
 <translation id="5097002363526479830">Nie udało się połączyć z siecią „<ph name="NAME" />”: <ph name="DETAILS" /></translation>
@@ -6341,6 +6349,7 @@
 <translation id="7014174261166285193">Instalacja nie powiodła się.</translation>
 <translation id="7014480873681694324">Usuń podświetlenie</translation>
 <translation id="7014741021609395734">Poziom powiększenia</translation>
+<translation id="7014961128696979283">Uruchom Steam</translation>
 <translation id="7017004637493394352">Powiedz „OK Google” jeszcze raz</translation>
 <translation id="7017219178341817193">Dodaj nową stronę</translation>
 <translation id="7017354871202642555">Nie można ustawić trybu po ustawieniu okna.</translation>
@@ -6732,6 +6741,7 @@
 <translation id="7423425410216218516">Widoczność jest włączona na <ph name="MINUTES" /> min</translation>
 <translation id="7423513079490750513">Usuń: <ph name="INPUT_METHOD_NAME" /></translation>
 <translation id="7423807071740419372"><ph name="APP_NAME" /> wymaga pozwolenia na uruchomienie</translation>
+<translation id="7424153922653300265">Oszczędzanie energii włączone</translation>
 <translation id="7424818322350938336">Dodano sieć</translation>
 <translation id="7427315069950454694">swoje wspomnienia na dziś</translation>
 <translation id="7427348830195639090">Strona w tle: <ph name="BACKGROUND_PAGE_URL" /></translation>
@@ -7966,6 +7976,7 @@
 <translation id="859246725979739260">Tej stronie zablokowano dostęp do Twojej lokalizacji.</translation>
 <translation id="8593121833493516339">Wysyłaj dane diagnostyczne oraz informacje o użytkowaniu. Pomóż ulepszyć działanie Androida na urządzeniu dziecka, automatycznie wysyłając do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Nie zostaną one użyte do zidentyfikowania Twojego dziecka. Wykorzystamy je, by poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. Jeśli na koncie Google dziecka włączysz Dodatkową aktywność w internecie i aplikacjach, te dane mogą być zapisywane na tym koncie. <ph name="BEGIN_LINK1" />Więcej informacji<ph name="END_LINK1" /></translation>
 <translation id="8596540852772265699">Pliki niestandardowe</translation>
+<translation id="8597404194697561297">Witamy w aplikacji Steam na Chromebooka</translation>
 <translation id="8597845839771543242">Format właściwości:</translation>
 <translation id="8599681327221583254">Co najmniej 1 zasada jest niewłaściwie skonfigurowana. Skontaktuj się z administratorem</translation>
 <translation id="8599864823732014237">Pominąć rejestrację firmy?</translation>
@@ -8658,6 +8669,7 @@
 <translation id="947329552760389097">&amp;Sprawdź elementy</translation>
 <translation id="947526284350604411">Twoja odpowiedź</translation>
 <translation id="947667444780368238"><ph name="ORIGIN" /> nie może otwierać plików z tego folderu, bo zawiera on pliki systemowe</translation>
+<translation id="949314938206378263">Otrzymaliśmy Twoją prośbę o zgodę na odwiedzenie tej strony. Twój rodzic może odpowiedzieć w Family Link.</translation>
 <translation id="950307215746360464">Przewodnik po konfiguracji</translation>
 <translation id="951991426597076286">Odrzuć</translation>
 <translation id="952471655966876828">Gdy urządzenie zostanie włączone i będzie używane, automatycznie się połączy</translation>
diff --git a/chrome/app/resources/generated_resources_pt-BR.xtb b/chrome/app/resources/generated_resources_pt-BR.xtb
index 821c63e2..2163349 100644
--- a/chrome/app/resources/generated_resources_pt-BR.xtb
+++ b/chrome/app/resources/generated_resources_pt-BR.xtb
@@ -7345,7 +7345,7 @@
 <translation id="7953669802889559161">Entradas</translation>
 <translation id="7953955868932471628">Gerenciar atalhos</translation>
 <translation id="7955105108888461311">Perguntar diretamente</translation>
-<translation id="7955177647836564772">Se o Smart Lock estiver ativado e o smartphone desbloqueado, não vai ser necessário digitar uma senha ou um PIN</translation>
+<translation id="7955177647836564772">Se o Smart Lock estiver ativado e o smartphone desbloqueado, você não vai precisar digitar uma senha ou um PIN</translation>
 <translation id="7956373551960864128">Suas impressoras salvas</translation>
 <translation id="7957074856830851026">Ver informações do dispositivo, como o número de série ou o ID do recurso</translation>
 <translation id="7959074893852789871">O arquivo continha vários certificados e alguns deles não foram importados:</translation>
@@ -8266,6 +8266,7 @@
 <translation id="8838601485495657486">Opaco</translation>
 <translation id="8838770651474809439">Hambúrger</translation>
 <translation id="8838778928843281408">Gerenciar smartphones</translation>
+<translation id="883924185304953854">Pesquisar por imagem</translation>
 <translation id="8841843049738266382">Ler e mudar usuários na lista de permissões</translation>
 <translation id="8842594465773264717">Excluir essa impressão digital</translation>
 <translation id="8845001906332463065">Ajuda</translation>
diff --git a/chrome/app/resources/generated_resources_pt-PT.xtb b/chrome/app/resources/generated_resources_pt-PT.xtb
index 8c5c41b..039cd51c 100644
--- a/chrome/app/resources/generated_resources_pt-PT.xtb
+++ b/chrome/app/resources/generated_resources_pt-PT.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="pt-PT">
 <translation id="1001033507375626788">Esta rede é partilhada consigo</translation>
+<translation id="1002085272681738789">Separador novamente ativo</translation>
 <translation id="1003088604756913841">Abrir link numa nova janela da aplicação <ph name="APP" /></translation>
 <translation id="100323615638474026">Dispositivo USB (<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />)</translation>
 <translation id="1004218526896219317">Acesso a sites</translation>
@@ -321,6 +322,7 @@
 <translation id="1296911687402551044">Fixar o separador selecionado</translation>
 <translation id="1297175357211070620">Destino</translation>
 <translation id="129770436432446029">Enviar feedback sobre <ph name="EXPERIMENT_NAME" /></translation>
+<translation id="130097046531636712">Isto aumenta a duração da bateria ao limitar a atividade em segundo plano e os efeitos visuais, como o deslocamento suave</translation>
 <translation id="1301135395320604080"><ph name="ORIGIN" /> pode editar os seguintes ficheiros</translation>
 <translation id="1302227299132585524">Permitir JavaScript de eventos Apple</translation>
 <translation id="1303101771013849280">Ficheiro HTML de marcadores</translation>
@@ -379,6 +381,7 @@
 <translation id="1361655923249334273">Não utilizado</translation>
 <translation id="1362865166188278099">Ocorreu um problema mecânico. Verifique a impressora.</translation>
 <translation id="1363585519747660921">É necessário configurar a impressora USB</translation>
+<translation id="136378536198524553">A Poupança de energia está ativada</translation>
 <translation id="1368603372088757436">O Linux não é suportado no seu <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Saiba mais<ph name="LINK_END" /></translation>
 <translation id="1372841398847029212">Sincronizar com a sua conta</translation>
 <translation id="1373176046406139583">A visibilidade do dispositivo controla quem pode partilhar consigo enquanto o ecrã está desbloqueado <ph name="LINK_BEGIN" />Saiba mais<ph name="LINK_END" /></translation>
@@ -648,6 +651,7 @@
 <translation id="1610272688494140697">Definições da app</translation>
 <translation id="161042844686301425">Turquesa</translation>
 <translation id="1611432201750675208">O seu dispositivo está bloqueado</translation>
+<translation id="1611776894942218234">O dispositivo tem de estar no canal beta</translation>
 <translation id="1612019740169791082">O seu contentor não está configurado para suportar redimensionamentos de discos. Para ajustar a quantidade de espaço reservada para o Linux, faça uma cópia de segurança e, em seguida, restaure para um novo contentor.</translation>
 <translation id="1613019471223620622">Mostrar palavra-passe para <ph name="USERNAME" /> em <ph name="DOMAIN" /></translation>
 <translation id="1613149688105334014">As versões antigas das Apps do Chrome não vão abrir depois de dezembro de 2022. Pode verificar se está disponível uma nova versão.</translation>
@@ -1203,6 +1207,7 @@
 <translation id="2098805196501063469">Verificar palavras-passe restantes</translation>
 <translation id="2099686503067610784">Eliminar o certificado do servidor "<ph name="CERTIFICATE_NAME" />"?</translation>
 <translation id="2100273922101894616">Início de sessão automático</translation>
+<translation id="2100986609271491802">Atualmente, este dispositivo não suporta o Steam no Chromebook</translation>
 <translation id="2101225219012730419">Versão:</translation>
 <translation id="2102396546234652240">Não permitir que os sites utilizem o microfone</translation>
 <translation id="2102495993840063010">Apps Android</translation>
@@ -1498,6 +1503,9 @@
 <translation id="2350133097354918058">Atualizada.</translation>
 <translation id="2350182423316644347">A inicializar a aplicação...</translation>
 <translation id="235028206512346451">Quando se afasta do seu dispositivo, o ecrã é automaticamente bloqueado. Quando está à frente do dispositivo, o ecrã mantém-se ativado durante mais tempo. Se não estiver a usar um ecrã de bloqueio, o seu dispositivo fica suspenso em vez de bloqueado.</translation>
+<translation id="2350866610930767288"><ph name="BEGIN_PARAGRAPH1" />Se recebeu instruções para introduzir um código de ID da loja do retalhista durante a instalação do modo de demonstração, introduza-o no lado direito*.  Caso contrário, pode deixar este campo em branco e continuar.<ph name="END_PARAGRAPH1" />
+    <ph name="BEGIN_PARAGRAPH2" />Pode instalar o modo de demonstração mesmo sem um código, mas é importante que o introduza se for aplicável à sua loja.<ph name="END_PARAGRAPH2" />
+    <ph name="BEGIN_PARAGRAPH3" />* Nota: a Google usa estes códigos para identificar a versão do modo de demonstração que o dispositivo deve receber e medir a utilização do modo de demonstração.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="2352495879228166246">{NUM_ITEMS,plural, =1{1 item}other{{NUM_ITEMS} itens}}</translation>
 <translation id="2352662711729498748">&lt;1 MB</translation>
 <translation id="2352810082280059586">As notas do ecrã de bloqueio são automaticamente guardadas na aplicação <ph name="LOCK_SCREEN_APP_NAME" />. A nota mais recente permanece no ecrã de bloqueio.</translation>
@@ -1948,6 +1956,7 @@
 <translation id="2776560192867872731">Altere o nome do dispositivo para <ph name="DEVICE_NAME" /></translation>
 <translation id="2777251078198759550">Eliminar este contentor</translation>
 <translation id="2778471504622896352">Adicionar apps remotas ao Launcher do Chrome OS</translation>
+<translation id="2781120507965857989">Ative a sincronização para obter os seus marcadores, palavras-passe, histórico e muito mais neste dispositivo e em qualquer outro que esteja a sincronizar. A Google pode usar o seu histórico para personalizar a Pesquisa e outros serviços Google.</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2782104745158847185">Ocorreu um erro ao instalar a aplicação para Linux.</translation>
 <translation id="2783298271312924866">Transferido</translation>
@@ -1968,6 +1977,7 @@
 <translation id="2792697226874849938">Imagem de restrição</translation>
 <translation id="2794233252405721443">Site bloqueado</translation>
 <translation id="2794522004398861033">Estabeleça ligação ao Wi-Fi ou à Ethernet para configurar o eSIM</translation>
+<translation id="2795074478966352573">As contas geridas pelo Family Link ainda não são suportadas</translation>
 <translation id="2795716239552913152">Normalmente, os sites utilizam a sua localização para funcionalidades ou informações relevantes, como notícias locais ou lojas próximas.</translation>
 <translation id="2796424461616874739">A autenticação excedeu o tempo limite ao ligar a "<ph name="DEVICE_NAME" />".</translation>
 <translation id="2796740370559399562">Continuar a permitir cookies</translation>
@@ -2153,6 +2163,7 @@
 <translation id="2949289451367477459">Utilize a localização. Permita que as apps e os serviços com a autorização de acesso à localização utilizem a deste dispositivo. A Google pode recolher periodicamente dados de localização e utilizar estes dados anonimamente para melhorar a precisão da localização e os serviços baseados na localização. <ph name="BEGIN_LINK1" />Saiba mais<ph name="END_LINK1" />.</translation>
 <translation id="2950666755714083615">Inscrever-me</translation>
 <translation id="2953019166882260872">Ligue o telemóvel com um cabo</translation>
+<translation id="2953218713108551165">Não são permitidas notificações de <ph name="SITE" />. Vamos perguntar-lhe novamente na sua próxima visita.</translation>
 <translation id="2956070239128776395">Secção aninhada no grupo: <ph name="ERROR_LINE" />.</translation>
 <translation id="2958721676848865875">Aviso de extensão do pacote</translation>
 <translation id="2959127025785722291">Ocorreu um erro. Não foi possível concluir a procura. Tente novamente.</translation>
@@ -2385,6 +2396,7 @@
 <translation id="3188465121994729530">Média de movimentações</translation>
 <translation id="3189187154924005138">Cursor grande</translation>
 <translation id="3190558889382726167">Palavra-passe guardada</translation>
+<translation id="3192589799003798742">A configurar o Steam no Chromebook</translation>
 <translation id="3192947282887913208">Ficheiros de áudio</translation>
 <translation id="3193695589337931419">Utilitários dos sinais do sistema</translation>
 <translation id="3194786596445804250">Mostrar detalhes sobre como bloquear cookies de terceiros</translation>
@@ -2524,6 +2536,7 @@
 <translation id="3341699307020049241">PIN incorreto. Tem mais <ph name="RETRIES" /> tentativas.</translation>
 <translation id="3341703758641437857">Permitir acesso a URLs de ficheiro</translation>
 <translation id="3342361181740736773">A extensão "<ph name="TRIGGERING_EXTENSION_NAME" />" pretende remover esta extensão.</translation>
+<translation id="3343977377045378693">A executar a configuração</translation>
 <translation id="3345135638360864351">Não é possível enviar o seu pedido de acesso a este site a <ph name="NAME" />. Tente novamente.</translation>
 <translation id="3345634917232014253">A verificação de segurança foi efetuada há uns momentos.</translation>
 <translation id="3345886924813989455">Não encontrado um browser suportado</translation>
@@ -2535,6 +2548,7 @@
 <translation id="3354768182971982851">As versões antigas das Apps do Chrome não vão abrir nos dispositivos Mac depois de dezembro de 2022. Pode verificar se está disponível uma nova versão.</translation>
 <translation id="3354972872297836698">Não foi possível sincronizar com o dispositivo <ph name="DEVICE_NAME" />; selecione o dispositivo para tentar novamente</translation>
 <translation id="3355936511340229503">Erro de ligação</translation>
+<translation id="3356036636691722598">Desfrute de jogos no Chromebook</translation>
 <translation id="3356469410714175391">(Cartão virtual ativado)</translation>
 <translation id="3356580349448036450">Concluído</translation>
 <translation id="3359256513598016054">Restrições de políticas de certificados</translation>
@@ -2862,6 +2876,7 @@
 <translation id="3665919494326051362">A versão atual é <ph name="CURRENT_VERSION" /></translation>
 <translation id="3670113805793654926">Dispositivos de qualquer fornecedor</translation>
 <translation id="3670229581627177274">Ativar o Bluetooth</translation>
+<translation id="3672663996348587094">Clique para permitir "<ph name="EXTENSIONS_REQUESTING_ACCESS" />" em <ph name="ORIGIN" />:</translation>
 <translation id="3672681487849735243">Foi detetado um erro de fábrica</translation>
 <translation id="3673097791729989571">Início de sessão alojado por <ph name="SAML_DOMAIN" /></translation>
 <translation id="3673622964532248901">Não tem autorização para transmitir para este dispositivo.</translation>
@@ -3377,6 +3392,7 @@
 <translation id="4132183752438206707">Encontre apps na Google Play Store</translation>
 <translation id="4132364317545104286">Mudar o nome do perfil do eSIM</translation>
 <translation id="4133076602192971179">Abrir a app para alterar a sua palavra-passe</translation>
+<translation id="4134818201340504801">Não existe armazenamento disponível suficiente para concluir a configuração. Liberte armazenamento e tente novamente</translation>
 <translation id="4135746311382563554">Termos de Utilização adicionais do Google Chrome e do Chrome OS</translation>
 <translation id="4136203100490971508">A Luz noturna irá desativar-se automaticamente ao nascer do sol.</translation>
 <translation id="41365691917097717">Se continuar, vai ativar a depuração do adb para criar e testar aplicações para Android. Tenha em atenção que esta ação permite a instalação de aplicações para Android que não foram validadas pela Google. Além disso, se pretender desativar o adb, terá de efetuar uma reposição de fábrica.</translation>
@@ -3447,6 +3463,7 @@
 <translation id="4211904048067111541">Parar de utilizar com apps Android</translation>
 <translation id="42126664696688958">Exportar</translation>
 <translation id="42137655013211669">O acesso a este recurso foi proibido pelo servidor.</translation>
+<translation id="4214192212360095377">Desativar agora</translation>
 <translation id="4217558091331485702">Analise antes de abrir</translation>
 <translation id="4217571870635786043">Ditado</translation>
 <translation id="4218081191298393750">Clique no ícone de altifalante para desativar o som deste separador</translation>
@@ -3613,6 +3630,7 @@
 <translation id="4378556263712303865">Requisição do dispositivo</translation>
 <translation id="4379281552162875326">Pretende desinstalar a app "<ph name="APP_NAME" />"?</translation>
 <translation id="4380648069038809855">Entrou no modo de ecrã inteiro</translation>
+<translation id="4383048856908088702">Enquanto este separador estava inativo, a Poupança de memória libertou <ph name="MEMORY_VALUE" /> de memória para outras tarefas. Pode alterar esta definição em qualquer altura nas <ph name="SETTINGS_LINK" />.</translation>
 <translation id="4384312707950789900">Adicionar às preferidas</translation>
 <translation id="4384652540891215547">Ativar a extensão</translation>
 <translation id="4384886290276344300">Alterar definições do teclado</translation>
@@ -3690,6 +3708,7 @@
 <translation id="4451479197788154834">A sua palavra-passe foi guardada neste dispositivo e na sua Conta Google.</translation>
 <translation id="4451757071857432900">Bloqueado em sites que apresentam anúncios intrusivos ou enganadores (recomendado)</translation>
 <translation id="4453946976636652378">Procurar no <ph name="SEARCH_ENGINE_NAME" /> ou introduzir um URL</translation>
+<translation id="4458535500699390320">Enquanto este separador estava inativo, a Poupança de memória libertou memória para outras tarefas. Pode alterar esta definição em qualquer altura nas definições.</translation>
 <translation id="4459169140545916303">Ativo há <ph name="DEVICE_LAST_ACTIVATED_TIME" /> dias</translation>
 <translation id="4460014764210899310">Desagrupar</translation>
 <translation id="4462159676511157176">Servidores de nome personalizado</translation>
@@ -3861,6 +3880,7 @@
 <translation id="4613271546271159013">Uma extensão alterou a página que é apresentada quando abre um novo separador.</translation>
 <translation id="4615586811063744755">nenhum cookie selecionado</translation>
 <translation id="461661862154729886">Fonte de energia</translation>
+<translation id="461676224702246336">Ao clicar para este site</translation>
 <translation id="4617001782309103936">Muito curto</translation>
 <translation id="4617019240346358451">Atualize a página para usar "<ph name="EXTENSION_NAME" />"</translation>
 <translation id="4617270414136722281">Opções de extensão</translation>
@@ -3983,6 +4003,7 @@
 <translation id="4728558894243024398">Plataforma</translation>
 <translation id="4728570203948182358"><ph name="BEGIN_LINK" />O seu administrador<ph name="END_LINK" /> desativou a verificação da existência de software prejudicial.</translation>
 <translation id="4730492586225682674">Nota mais recente com a caneta stylus no ecrã de bloqueio</translation>
+<translation id="4730888769809690665">São permitidas notificações de <ph name="SITE" /></translation>
 <translation id="473140019006744096">Não existe espaço suficiente neste dispositivo para concluir a atualização. Limpe <ph name="NECESSARY_SPACE" /> no dispositivo e tente novamente.</translation>
 <translation id="4733161265940833579"><ph name="BATTERY_PERCENTAGE" />% (esquerdo)</translation>
 <translation id="4733793249294335256">Local</translation>
@@ -4285,6 +4306,7 @@
 <translation id="5032430150487044192">Não é possível criar o código QR</translation>
 <translation id="5033137252639132982">Sem autorização para utilizar sensores de movimentos</translation>
 <translation id="5033266061063942743">Formas geométricas</translation>
+<translation id="5034000993065629381">Contacte o seu administrador</translation>
 <translation id="5037676449506322593">Selecionar tudo</translation>
 <translation id="5038818366306248416">Optou anteriormente por não permitir nenhuma extensão em <ph name="ORIGIN" /></translation>
 <translation id="5039696241953571917">Veja e faça a gestão das palavras-passe guardadas na sua Conta Google</translation>
@@ -4342,6 +4364,7 @@
 <translation id="5089763948477033443">Indicador de redimensionamento do painel lateral</translation>
 <translation id="5090637338841444533">Sem autorização para monitorizar a posição da câmara</translation>
 <translation id="5093569275467863761">Subframe de Navegação anónima na cache para a frente/para trás: <ph name="BACK_FORWARD_CACHE_INCOGNITO_PAGE_URL" /></translation>
+<translation id="5094042205195563542">A iniciar a instalação</translation>
 <translation id="5094176498302660097">Pode abrir e editar ficheiros suportados com esta app a partir da app Files ou outras apps. Para controlar que ficheiros abrem esta app por predefinição, <ph name="BEGIN_LINK" />saiba como definir apps predefinidas no dispositivo<ph name="END_LINK" />.</translation>
 <translation id="5094721898978802975">Comunicar com aplicações nativas cooperantes</translation>
 <translation id="5097002363526479830">Falha ao ligar à rede "<ph name="NAME" />": <ph name="DETAILS" /></translation>
@@ -4415,6 +4438,7 @@
 <translation id="5161251470972801814">Dispositivos USB de <ph name="VENDOR_NAME" /></translation>
 <translation id="5162905305237671850">O <ph name="DEVICE_TYPE" /> foi bloqueado</translation>
 <translation id="5163910114647549394">Separador movido para o fim da faixa de separadores</translation>
+<translation id="5164530241085602114">Não são permitidas notificações de <ph name="SITE" /></translation>
 <translation id="516747639689914043">Protocolo de Transferência de Hipertexto (HTTP)</translation>
 <translation id="5170568018924773124">Mostrar numa pasta</translation>
 <translation id="5171045022955879922">Pesquise ou escreva URL</translation>
@@ -4517,6 +4541,7 @@
 <translation id="5269977353971873915">Falha de Impressão</translation>
 <translation id="5273806377963980154">Editar o URL do site</translation>
 <translation id="5275084684151588738">Dicionários do utilizador</translation>
+<translation id="5275100789567222478">Ativar apenas quando a minha bateria estiver a <ph name="PERCENT" />% ou menos</translation>
 <translation id="5275338516105640560">Botão do grupo de separadores guardado</translation>
 <translation id="5275352920323889391">Cão</translation>
 <translation id="527605719918376753">Desativar som do separador</translation>
@@ -4535,6 +4560,7 @@
 <translation id="5285635972691565180">Ecrã <ph name="DISPLAY_ID" /></translation>
 <translation id="5286194356314741248">A procurar</translation>
 <translation id="5287425679749926365">As suas contas</translation>
+<translation id="5288106344236929384">Mais ações, opções de chave de acesso para <ph name="USERNAME" /> em <ph name="DOMAIN" /></translation>
 <translation id="5288678174502918605">Voltar a Abrir o S&amp;eparador Fechado</translation>
 <translation id="52895863590846877">A página não está em <ph name="LANGUAGE" />.</translation>
 <translation id="52912272896845572">O ficheiro de chave privada é inválido.</translation>
@@ -4730,6 +4756,7 @@
 <translation id="5473099001878321374">Ao continuar, aceita que este dispositivo também pode transferir e instalar automaticamente atualizações e apps da Google, do operador da criança e do fabricante deste dispositivo, possivelmente através de dados móveis. Algumas destas apps podem oferecer compras na app.</translation>
 <translation id="5473156705047072749">{NUM_CHARACTERS,plural, =1{O PIN tem de ter, pelo menos, um caráter.}other{O PIN tem de ter, pelo menos, # carateres.}}</translation>
 <translation id="5474859849784484111">O domínio <ph name="MANAGER" /> requer que estabeleça ligação a uma rede Wi-Fi agora e transfira uma atualização. Em alternativa, transfira a partir de uma ligação com acesso limitado (podem aplicar-se custos).</translation>
+<translation id="5476016146231427848">Reinicie o dispositivo para usar o Steam no Chromebook</translation>
 <translation id="5481273127572794904">Sem autorização para transferir vários ficheiros automaticamente</translation>
 <translation id="5481941284378890518">Adicionar impressoras próximas</translation>
 <translation id="5483785310822538350">Revogar o acesso a ficheiros e a dispositivos</translation>
@@ -4950,6 +4977,7 @@
 <translation id="5683806393796685434">Introduza o seu código de ativação.</translation>
 <translation id="5684181005476681636">Detalhes de Wi-Fi</translation>
 <translation id="5684661240348539843">Identificador de recursos</translation>
+<translation id="5684969244627829799">Inicie sessão numa conta de utilizador e tente novamente</translation>
 <translation id="5687326903064479980">Fuso horário</translation>
 <translation id="5687935527303996204">Certifique-se de que o dispositivo está ligado à corrente e não o desligue. A instalação pode demorar até 20 minutos. O dispositivo será automaticamente encerrado quando a instalação for concluída.</translation>
 <translation id="5689516760719285838">Local</translation>
@@ -5076,6 +5104,7 @@
 <translation id="5805697420284793859">Gestor de janelas</translation>
 <translation id="5806447147478173900">Armazenamento total usado pelos sites apresentados: <ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">0° (predefinição)</translation>
+<translation id="5810603387504252966">Tem de ativar o #borealis-enabled em chrome://flags</translation>
 <translation id="5810809306422959727">Esta conta não é elegível para o controlo parental</translation>
 <translation id="5811614940486072060">Este ficheiro não é habitualmente transferido e pode ser perigoso</translation>
 <translation id="5812674658566766066">Expandir tudo</translation>
@@ -5155,6 +5184,7 @@
 <translation id="5882449899683447569">Algo correu mal e as suas palavras-passe não foram importadas</translation>
 <translation id="5882919346125742463">Redes conhecidas</translation>
 <translation id="5883356647197510494">Bloqueou automaticamente <ph name="PERMISSION_1" /> e <ph name="PERMISSION_2" /></translation>
+<translation id="5884447826201752041">Personalizar para cada extensão</translation>
 <translation id="5884474295213649357">Este separador está associado a um dispositivo USB.</translation>
 <translation id="5885314688092915589">A sua organização irá gerir este perfil</translation>
 <translation id="5886009770935151472">Dedo 1</translation>
@@ -5594,6 +5624,7 @@
 <translation id="6301300352769835063">Permita que a Google use os dados do seu hardware para ajudar a melhorar o <ph name="DEVICE_OS" />. Se recusar, estes dados ainda são enviados para a Google para determinar quais são as atualizações adequadas, mas não são armazenados nem usados em qualquer outro local. Saiba mais em g.co/flex/HWDataCollection.</translation>
 <translation id="630292539633944562">Sugestões de informações pessoais</translation>
 <translation id="6305607932814307878">Política Global:</translation>
+<translation id="6305909198255586420">Instale através do seu perfil principal</translation>
 <translation id="6307990684951724544">Sistema ocupado</translation>
 <translation id="6308493641021088955">Início de sessão fornecido por <ph name="EXTENSION_NAME" /></translation>
 <translation id="6308937455967653460">Guardar lin&amp;k como...</translation>
@@ -5915,6 +5946,7 @@
 <translation id="6608166463665411119">Repor eSIM</translation>
 <translation id="6609478180749378879">Os dados de início de sessão são armazenados neste dispositivo depois de sair do Modo de navegação anónima. Poderá iniciar sessão neste Website com o seu dispositivo novamente mais tarde.</translation>
 <translation id="6610002944194042868">Opções de tradução</translation>
+<translation id="6611907964265870728">Confirme que o seu dispositivo está ligado à Internet</translation>
 <translation id="6611972847767394631">Encontre os seus separadores aqui</translation>
 <translation id="6613668613087513143">Não existe espaço suficiente neste dispositivo para concluir a atualização. Limpe <ph name="NECESSARY_SPACE" /> no dispositivo e tente novamente a partir do navegador Chrome.</translation>
 <translation id="6615455863669487791">Mostrar</translation>
@@ -6303,6 +6335,7 @@
 <translation id="697508444536771064">Encerrar o Linux</translation>
 <translation id="6975361011348772931">Pediu para ler e alterar</translation>
 <translation id="6978121630131642226">Motores de pesquisa</translation>
+<translation id="6979041727349121225">Poupança de energia</translation>
 <translation id="6979044105893951891">Inicie e saia das sessões de convidado geridas</translation>
 <translation id="6979158407327259162">Google Drive</translation>
 <translation id="6979440798594660689">Desativar som (predefinição)</translation>
@@ -6355,6 +6388,8 @@
 <translation id="7014174261166285193">A instalação falhou.</translation>
 <translation id="7014480873681694324">Remover realce</translation>
 <translation id="7014741021609395734">Nível de zoom</translation>
+<translation id="7014961128696979283">Iniciar Steam</translation>
+<translation id="7015088858756332848">Não foi possível iniciar o Steam no Chromebook. Tente novamente</translation>
 <translation id="7017004637493394352">Diga "OK Google" novamente</translation>
 <translation id="7017219178341817193">Adicionar uma nova página</translation>
 <translation id="7017354871202642555">Não é possível definir o modo uma vez definida a janela.</translation>
@@ -6731,6 +6766,7 @@
 <translation id="7409854300652085600">Marcadores importados.</translation>
 <translation id="7410344089573941623">Perguntar se <ph name="HOST" /> pretende aceder à sua câmara e microfone</translation>
 <translation id="7410852728357935715">Transmitir para um dispositivo</translation>
+<translation id="7411614333737930931">Reinicie o dispositivo e tente novamente</translation>
 <translation id="741204030948306876">Sim, aceito</translation>
 <translation id="7412226954991670867">Memória GPU</translation>
 <translation id="7414464185801331860">18x</translation>
@@ -6746,6 +6782,7 @@
 <translation id="7423425410216218516">A visibilidade está ativada durante <ph name="MINUTES" /> minutos.</translation>
 <translation id="7423513079490750513">Remover <ph name="INPUT_METHOD_NAME" /></translation>
 <translation id="7423807071740419372">A app <ph name="APP_NAME" /> necessita de autorização para ser executada</translation>
+<translation id="7424153922653300265">Poupança de energia ativada</translation>
 <translation id="7424818322350938336">Rede adicionada</translation>
 <translation id="7427315069950454694">as suas memórias para hoje</translation>
 <translation id="7427348830195639090">Página de fundo: <ph name="BACKGROUND_PAGE_URL" /></translation>
@@ -6961,6 +6998,7 @@
 <translation id="7635048370253485243">Afixada pelo seu administrador.</translation>
 <translation id="7636919061354591437">Instalar neste dispositivo</translation>
 <translation id="7637253234491814483">Toque no sensor de impressões digitais no canto superior direito do teclado, junto ao botão ligar/desligar. Os seus dados de impressões digitais são armazenados em segurança e nunca saem do <ph name="DEVICE_TYPE" />.</translation>
+<translation id="7637272932128132922">Enquanto este separador estava inativo, a Poupança de memória libertou memória para outras tarefas. Pode alterar esta definição em qualquer altura nas <ph name="SETTINGS_LINK" />.</translation>
 <translation id="7637593984496473097">Não existe espaço suficiente no disco.</translation>
 <translation id="7639914187072011620">Falha ao obter o URL de redirecionamento SAML do servidor</translation>
 <translation id="764017888128728">O <ph name="PASSWORD_MANAGER_BRAND" /> inicia automaticamente sessão em sites elegíveis com as palavras-passe que guardou.</translation>
@@ -7077,6 +7115,7 @@
 <translation id="7728668285692163452">A alteração do canal será aplicada mais tarde</translation>
 <translation id="7730449930968088409">Capturar o conteúdo do ecrã</translation>
 <translation id="7730683939467795481">Esta página foi alterada pela extensão "<ph name="EXTENSION_NAME" />".</translation>
+<translation id="7735165285389721951">Está a ser executada outra configuração do Steam. Aguarde que seja concluída antes de tentar novamente</translation>
 <translation id="7737115349420013392">A sincronizar com o dispositivo "<ph name="DEVICE_NAME" />"…</translation>
 <translation id="7737846262459425222">Pode alterar esta opção em qualquer altura em Definições &gt; Assistente Google &gt; Contexto do ecrã.</translation>
 <translation id="7737948071472253612">Sem autorização para utilizar a sua câmara</translation>
@@ -7375,6 +7414,7 @@
 Ficheiro de chave: <ph name="KEY_FILE" />
 
 Mantenha o seu ficheiro de chave num local seguro, pois irá precisar dele para criar novas versões da sua extensão.</translation>
+<translation id="8001100670809322641">Aguarde alguns minutos e tente novamente</translation>
 <translation id="8002274832045662704">Configuração avançada da impressora</translation>
 <translation id="8002670234429879764"><ph name="PRINTER_NAME" /> já não está disponível.</translation>
 <translation id="8004092996156083991">Informamos se as suas palavras-passe estiverem comprometidas.</translation>
@@ -7384,6 +7424,7 @@
 <translation id="8008356846765065031">A Internet está desligada. Verifique a ligação à Internet.</translation>
 <translation id="8009225694047762179">Gerir palavras-passe</translation>
 <translation id="8011372169388649948">"<ph name="BOOKMARK_TITLE" />" movido.</translation>
+<translation id="8011875486979733097">Não é possível instalar o Steam</translation>
 <translation id="8012647001091218357">Não conseguimos falar com os seus pais de momento. Tente novamente.</translation>
 <translation id="8013993649590906847">Se uma imagem não tiver uma descrição útil, o Chrome tenta fornecer uma. Para criar as descrições, são enviadas imagens para a Google.</translation>
 <translation id="8014154204619229810">O atualizador está em execução atualmente. Atualize dentro de um minuto para verificar novamente.</translation>
@@ -7474,6 +7515,7 @@
 <translation id="808894953321890993">Alterar palavra-passe</translation>
 <translation id="8090234456044969073">Ler uma lista dos Sites visitados com mais frequência</translation>
 <translation id="8090513782447872344">Pode regressar em qualquer altura para consultar novamente</translation>
+<translation id="809312780580957751">Não foi possível instalar o Steam neste dispositivo</translation>
 <translation id="8093359998839330381">O plug-in <ph name="PLUGIN_NAME" /> não está a responder.</translation>
 <translation id="8095105960962832018"><ph name="BEGIN_PARAGRAPH1" />Faça uma cópia de segurança no Google Drive. Restaure os dados ou mude de dispositivo facilmente em qualquer altura. A cópia de segurança inclui dados de apps.<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />As cópias de segurança são carregadas para a Google e encriptadas com a palavra-passe da sua Conta Google.<ph name="END_PARAGRAPH2" />
@@ -7569,6 +7611,7 @@
 <translation id="8177318697334260664">{NUM_TABS,plural, =1{Mover separador para nova janela}other{Mover separadores para nova janela}}</translation>
 <translation id="8179188928355984576">Não utilizada com apps Android</translation>
 <translation id="8179976553408161302">Enter</translation>
+<translation id="8180785270975217276">Poupança de energia ativada</translation>
 <translation id="8180786512391440389">A extensão "<ph name="EXTENSION" />" consegue ler e eliminar imagens, ficheiros de vídeo e de som nas localizações marcadas.</translation>
 <translation id="8181215761849004992">Não é possível associar ao domínio. Verifique a sua conta para saber se tem privilégios suficientes para adicionar dispositivos.</translation>
 <translation id="8182105986296479640">A aplicação não está a responder</translation>
@@ -7691,6 +7734,7 @@
 <translation id="828642162569365647">Esta palavra-passe ou PIN protege os seus dados neste <ph name="DEVICE_TYPE" /> e em todas as informações a que aceda a partir do telemóvel. Tem de desbloquear o <ph name="DEVICE_TYPE" /> sempre que este sair do modo de suspensão.</translation>
 <translation id="8287902281644548111">Pesquisar por chamada da API/URL</translation>
 <translation id="8288032458496410887">Desinstalar a aplicação <ph name="APP" />…</translation>
+<translation id="8288539437195337464">Confirme que o seu dispositivo está atualizado e tente novamente</translation>
 <translation id="8289128870594824098">Tamanho do disco</translation>
 <translation id="8289509909262565712">Damos-lhe as boas-vindas ao <ph name="DEVICE_OS" /></translation>
 <translation id="8293206222192510085">Adicionar marcador</translation>
@@ -7980,11 +8024,13 @@
 <translation id="859246725979739260">Este site foi impedido de aceder à sua localização.</translation>
 <translation id="8593121833493516339">Envie dados de utilização e diagnósticos. Ajude a melhorar a experiência Android da criança ao enviar automaticamente dados de diagnóstico, de utilização de aplicações e do dispositivo para a Google. Estes dados não serão utilizados para identificar a criança e ajudarão a melhorar a estabilidade das aplicações e do sistema, entre outras melhorias. Alguns dados agregados também ajudarão as aplicações e os parceiros Google, como os programadores Android. Se a Atividade da Web e de apps adicional estiver ativada para a criança, estes dados podem ser guardados na respetiva Conta Google. <ph name="BEGIN_LINK1" />Saiba mais<ph name="END_LINK1" /></translation>
 <translation id="8596540852772265699">Ficheiros personalizados</translation>
+<translation id="8597404194697561297">Damos-lhe as boas-vindas ao Steam no Chromebook</translation>
 <translation id="8597845839771543242">Formato da propriedade:</translation>
 <translation id="8599681327221583254">Uma ou mais políticas não estão configuradas corretamente. Contacte o seu administrador</translation>
 <translation id="8599864823732014237">Ignorar a inscrição empresarial?</translation>
 <translation id="8601206103050338563">Autenticação de cliente TLS WWW</translation>
 <translation id="8601611099293226919">Pesquisar no ecrã com o Google Lens</translation>
+<translation id="8602674530529411098">Apps (beta)</translation>
 <translation id="8602851771975208551">Outro programa do computador adicionou uma aplicação que pode alterar o funcionamento do Chrome</translation>
 <translation id="8605428685123651449">Memória SQLite</translation>
 <translation id="8608618451198398104">Adicione uma permissão Kerberos</translation>
@@ -8669,6 +8715,7 @@
 <translation id="939598580284253335">Introduzir frase de acesso</translation>
 <translation id="939736085109172342">Nova pasta</translation>
 <translation id="942532530371314860"><ph name="APP_NAME" /> está a partilhar um separador do Chrome e o áudio.</translation>
+<translation id="944799160843436808">Ocorreu um problema ao configurar o Steam no Chromebook</translation>
 <translation id="945522503751344254">Enviar feedback</translation>
 <translation id="947329552760389097">&amp;Inspecionar elementos</translation>
 <translation id="947526284350604411">A sua resposta</translation>
@@ -8693,6 +8740,7 @@
 <translation id="968000525894980488">Ative os Serviços do Google Play.</translation>
 <translation id="968037381421390582">Co&amp;lar e pesquisar "<ph name="SEARCH_TERMS" />"</translation>
 <translation id="969096075394517431">Alterar idiomas</translation>
+<translation id="969574218206797926">A Poupança de memória liberta memória de separadores inativos para que possa ser usada por separadores ativos e outras apps</translation>
 <translation id="970047733946999531">{NUM_TABS,plural, =1{1 separador}other{# separadores}}</translation>
 <translation id="971510864672937292">Pretende limpar os dados e as autorizações do site <ph name="SITE_NAME" /> e de todos os sites associados ao mesmo?</translation>
 <translation id="971774202801778802">URL do marcador</translation>
diff --git a/chrome/app/resources/generated_resources_ru.xtb b/chrome/app/resources/generated_resources_ru.xtb
index 3ffb073..fee77ef 100644
--- a/chrome/app/resources/generated_resources_ru.xtb
+++ b/chrome/app/resources/generated_resources_ru.xtb
@@ -8255,6 +8255,7 @@
 <translation id="8838601485495657486">Непрозрачный</translation>
 <translation id="8838770651474809439">Гамбургер</translation>
 <translation id="8838778928843281408">Управление смартфонами</translation>
+<translation id="883924185304953854">Поиск по картинке</translation>
 <translation id="8841843049738266382">Читать и изменять список разрешенных пользователей</translation>
 <translation id="8842594465773264717">Удалить этот отпечаток пальца</translation>
 <translation id="8845001906332463065">Справка</translation>
diff --git a/chrome/app/resources/generated_resources_si.xtb b/chrome/app/resources/generated_resources_si.xtb
index 6b494ca1..fde4d96 100644
--- a/chrome/app/resources/generated_resources_si.xtb
+++ b/chrome/app/resources/generated_resources_si.xtb
@@ -8249,6 +8249,7 @@
 <translation id="8838601485495657486">පාරාන්ධ</translation>
 <translation id="8838770651474809439">හැම්බර්ගර්</translation>
 <translation id="8838778928843281408">දුරකථන කළමනාකරණය කරන්න</translation>
+<translation id="883924185304953854">රූපය අනුව සොයන්න</translation>
 <translation id="8841843049738266382">සුදු ලැයිස්තුගත පරිශීලකයන් කියවන්න සහ වෙනස් කරන්න</translation>
 <translation id="8842594465773264717">මෙම ඇඟිලි සලකුණ මකන්න</translation>
 <translation id="8845001906332463065">උදවු ලබා ගන්න</translation>
diff --git a/chrome/app/resources/generated_resources_sk.xtb b/chrome/app/resources/generated_resources_sk.xtb
index a9fac03..3c807a56 100644
--- a/chrome/app/resources/generated_resources_sk.xtb
+++ b/chrome/app/resources/generated_resources_sk.xtb
@@ -8293,6 +8293,7 @@
 <translation id="8838601485495657486">Nepriehľadné</translation>
 <translation id="8838770651474809439">Hamburger</translation>
 <translation id="8838778928843281408">Spravovať telefóny</translation>
+<translation id="883924185304953854">Vyhľadávanie podľa obrázka</translation>
 <translation id="8841843049738266382">Čítať a meniť používateľov na zozname povolených</translation>
 <translation id="8842594465773264717">Odstrániť tento odtlačok prsta</translation>
 <translation id="8845001906332463065">Získať pomoc</translation>
diff --git a/chrome/app/resources/generated_resources_sl.xtb b/chrome/app/resources/generated_resources_sl.xtb
index c5611168..8e4d2e94 100644
--- a/chrome/app/resources/generated_resources_sl.xtb
+++ b/chrome/app/resources/generated_resources_sl.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="sl">
 <translation id="1001033507375626788">To omrežje je deljeno z vami.</translation>
+<translation id="1002085272681738789">Zavihek je spet aktiven</translation>
 <translation id="1003088604756913841">Odpiranje povezave v novem oknu aplikacije <ph name="APP" /></translation>
 <translation id="100323615638474026">Naprava USB (<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />)</translation>
 <translation id="1004218526896219317">Dostop do spletnih mest</translation>
@@ -326,6 +327,7 @@
 <translation id="1296911687402551044">Pripni izbrani zavihek</translation>
 <translation id="1297175357211070620">Cilj</translation>
 <translation id="129770436432446029">Pošiljanje povratnih informacij za preizkus <ph name="EXPERIMENT_NAME" />.</translation>
+<translation id="130097046531636712">Ta funkcija podaljša čas delovanja baterije tako, da omeji dejavnost v ozadju in vizualne učinke, kot je tekoče drsenje.</translation>
 <translation id="1301135395320604080">Spletno mesto <ph name="ORIGIN" /> lahko ureja naslednje datoteke</translation>
 <translation id="1302227299132585524">Dovoli JavaScript v Applovih dogodkih</translation>
 <translation id="1303101771013849280">Datoteka HTML z zaznamki</translation>
@@ -384,6 +386,7 @@
 <translation id="1361655923249334273">Neuporabljeno</translation>
 <translation id="1362865166188278099">Mehanska težava. Preverite tiskalnik.</translation>
 <translation id="1363585519747660921">Tiskalnik USB je treba konfigurirati</translation>
+<translation id="136378536198524553">Varčevanje z energijo je vklopljeno</translation>
 <translation id="1368603372088757436">Linux v napravi <ph name="DEVICE_TYPE" /> ni podprt. <ph name="LINK_BEGIN" />Več o tem<ph name="LINK_END" /></translation>
 <translation id="1372841398847029212">Sinhroniziraj z računom</translation>
 <translation id="1373176046406139583">Z nastavitvijo vidnosti naprave določite, kdo lahko deli vsebino z vami, medtem ko je zaslon odklenjen. <ph name="LINK_BEGIN" />Več o tem<ph name="LINK_END" /></translation>
@@ -654,6 +657,7 @@
 <translation id="1610272688494140697">Nastavitve aplikacije</translation>
 <translation id="161042844686301425">Cianova</translation>
 <translation id="1611432201750675208">Naprava je zaklenjena</translation>
+<translation id="1611776894942218234">Naprava mora biti v preizkusni različici beta</translation>
 <translation id="1612019740169791082">Vsebnik ni konfiguriran za podporo spreminjanja velikosti diska. Če želite prilagoditi količino prostora, ki je rezerviran za Linux, ustvarite varnostno kopijo in jo nato obnovite v novem vsebniku.</translation>
 <translation id="1613019471223620622">Prikaz gesla za uporabniško ime <ph name="USERNAME" /> v domeni <ph name="DOMAIN" /></translation>
 <translation id="1613149688105334014">Stare različice aplikacij za Chrome se po decembru 2022 ne bodo odprle. Preverite lahko, ali je na voljo nova različica.</translation>
@@ -1133,6 +1137,7 @@
 <translation id="2034346955588403444">Dodaj drugo omrežje Wi-Fi</translation>
 <translation id="2035211704574173780">Sivine</translation>
 <translation id="203574396658008164">Omogoči ustvarjanje zapiskov na zaklenjenem zaslonu</translation>
+<translation id="2036514476578229158">Prosil(-a) si za dovoljenje za obisk tega spletnega mesta. Starši lahko odgovorijo v storitvi Family Link.</translation>
 <translation id="2037445849770872822">Za ta račun Google je nastavljen nadzor. Če želite nastaviti več starševskega nadzora, izberite »Naprej«.
 
 V nasprotnem primeru se odjavite, da bodo spremembe tega računa vidne v tej napravi.
@@ -1218,6 +1223,7 @@
 <translation id="2098805196501063469">Preveri preostala gesla</translation>
 <translation id="2099686503067610784">Ali želite izbrisati strežniško potrdilo »<ph name="CERTIFICATE_NAME" />«?</translation>
 <translation id="2100273922101894616">Samodejna prijava</translation>
+<translation id="2100986609271491802">Ta naprava trenutno ne podpira aplikacije Steam v Chromebooku.</translation>
 <translation id="2101225219012730419">Različica:</translation>
 <translation id="2102396546234652240">Spletnim mestom ni dovoljena uporaba mikrofona.</translation>
 <translation id="2102495993840063010">Aplikacije za Android</translation>
@@ -1253,6 +1259,7 @@
 <translation id="2135787500304447609">&amp;Nadaljuj</translation>
 <translation id="2136372518715274136">Vnesite novo geslo</translation>
 <translation id="2136476978468204130">Vnesli ste napačno geslo</translation>
+<translation id="2137891579555018930">Čakanje na dovoljenje …</translation>
 <translation id="2138398485845393913">Povezava z napravo »<ph name="DEVICE_NAME" />« še vedno poteka</translation>
 <translation id="2139919072249842737">Gumb za nastavitev</translation>
 <translation id="2140788884185208305">Stanje baterije</translation>
@@ -1516,6 +1523,9 @@
 <translation id="2350133097354918058">Znova naložena</translation>
 <translation id="2350182423316644347">Inicializiranje aplikacije ...</translation>
 <translation id="235028206512346451">Če se odmaknete od naprave, se bo zaslon samodejno zaklenil. Ko ste pred napravo, se zaslon dalj časa ne bo zaklenil. Če ne uporabljate zaklepanja zaslona, se naprava ne bo zaklenila, ampak bo preklopila v stanje pripravljenosti.</translation>
+<translation id="2350866610930767288"><ph name="BEGIN_PARAGRAPH1" />Če ste med nameščanjem predstavitvenega načina prejeli navodila za vnos kode ID trgovine prodajalca, jo vnesite na desni*.  V nasprotnem primeru lahko to polje pustite prazno in nadaljujete.<ph name="END_PARAGRAPH1" />
+    <ph name="BEGIN_PARAGRAPH2" />Predstavitveni način boste še vedno lahko namestili brez kode, vendar je pomembno, da kodo vnesete, če velja za vašo trgovino.<ph name="END_PARAGRAPH2" />
+    <ph name="BEGIN_PARAGRAPH3" />* Opomba: Google te kode uporabi za ugotavljanje, katero različico predstavitvenega načina bo prejela naprava, in merjenje uporabe predstavitvenega načina.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="2352495879228166246">{NUM_ITEMS,plural, =1{1 izdelek}one{{NUM_ITEMS} izdelek}two{{NUM_ITEMS} izdelka}few{{NUM_ITEMS} izdelki}other{{NUM_ITEMS} izdelkov}}</translation>
 <translation id="2352662711729498748">&lt; 1 MB</translation>
 <translation id="2352810082280059586">Zapiski na zaklenjenem zaslonu so samodejno shranjeni v aplikacijo <ph name="LOCK_SCREEN_APP_NAME" />. Zadnji zapisek ostane na zaklenjenem zaslonu.</translation>
@@ -1966,6 +1976,7 @@
 <translation id="2776560192867872731">Spremeni ime naprave za napravo <ph name="DEVICE_NAME" /></translation>
 <translation id="2777251078198759550">Izbriši ta vsebnik</translation>
 <translation id="2778471504622896352">Dodajanje oddaljenih aplikacij v zaganjalnik sistema ChromeOS</translation>
+<translation id="2781120507965857989">Vklopite sinhronizacijo, da boste imeli zaznamke, gesla, zgodovino in drugo na voljo v tej napravi in povsod drugod, kjer sinhronizirate. Google lahko vašo zgodovino uporabi za prilagajanje Iskanja Google in drugih Googlovih storitev.</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2782104745158847185">Napaka pri nameščanju aplikacije za Linux</translation>
 <translation id="2783298271312924866">Preneseno</translation>
@@ -1986,6 +1997,7 @@
 <translation id="2792697226874849938">Slika omejitve</translation>
 <translation id="2794233252405721443">Spletno mesto blokirano</translation>
 <translation id="2794522004398861033">Če želite nastaviti eSIM, se povežite z omrežjem Wi-Fi ali ethernetom.</translation>
+<translation id="2795074478966352573">Računi, ki jih upravljate s storitvijo Family Link, še niso podprti.</translation>
 <translation id="2795716239552913152">Spletna mesta običajno uporabljajo vašo lokacijo zaradi ustreznih funkcij ali informacij, kot so lokalne novice ali trgovine v bližini.</translation>
 <translation id="2796424461616874739">Med povezovanjem z napravo »<ph name="DEVICE_NAME" />« je potekla časovna omejitev preverjanja pristnosti.</translation>
 <translation id="2796740370559399562">Še naprej dovoli piškotke</translation>
@@ -2171,6 +2183,7 @@
 <translation id="2949289451367477459">Uporaba lokacije. Aplikacijam in storitvam z dovoljenjem za lokacijo dovolite uporabo lokacije te naprave. Google bo morda občasno zbiral podatke o lokacijah ter jih na anonimen način uporabil za izboljšanje natančnosti zaznavanja lokacije in izpopolnjevanje storitev, ki pri delovanju uporabljajo lokacijo. <ph name="BEGIN_LINK1" />Več o tem<ph name="END_LINK1" /></translation>
 <translation id="2950666755714083615">Prijavi me</translation>
 <translation id="2953019166882260872">Povezovanje telefona s kablom</translation>
+<translation id="2953218713108551165">Obvestila niso dovoljena za <ph name="SITE" />. Ob naslednjem obisku boste znova pozvani.</translation>
 <translation id="2956070239128776395">Razdelek je ugnezden v skupini: <ph name="ERROR_LINE" /></translation>
 <translation id="2958721676848865875">Opozorilo glede pakiranja razširitve</translation>
 <translation id="2959127025785722291">Prišlo je do napake. Pregledovanja ni bilo mogoče dokončati. Poskusite znova.</translation>
@@ -2402,6 +2415,7 @@
 <translation id="3188465121994729530">Drseče povprečje</translation>
 <translation id="3189187154924005138">Velik kazalec</translation>
 <translation id="3190558889382726167">Geslo je shranjeno</translation>
+<translation id="3192589799003798742">Nastavljanje aplikacije Steam v Chromebooku</translation>
 <translation id="3192947282887913208">Zvočne datoteke</translation>
 <translation id="3193695589337931419">Orodja za sistemske signale</translation>
 <translation id="3194786596445804250">Prikaži podrobnosti o blokiranju piškotkov drugih mest</translation>
@@ -2541,6 +2555,7 @@
 <translation id="3341699307020049241">Napačna koda PIN. Imate še toliko poskusov: <ph name="RETRIES" />.</translation>
 <translation id="3341703758641437857">Dovoli dostop do URL-jev datoteke</translation>
 <translation id="3342361181740736773">»<ph name="TRIGGERING_EXTENSION_NAME" />« želi odstraniti to razširitev.</translation>
+<translation id="3343977377045378693">Izvajanje nastavitve</translation>
 <translation id="3345135638360864351">Zahteve za dostop do tega spletnega mesta ni bilo mogoče poslati osebi <ph name="NAME" />. Poskusite znova.</translation>
 <translation id="3345634917232014253">Varnostno preverjanje je bilo pravkar izvedeno</translation>
 <translation id="3345886924813989455">Ni podprtih brskalnikov.</translation>
@@ -2552,6 +2567,7 @@
 <translation id="3354768182971982851">Stare različice aplikacij za Chrome se po decembru 2022 ne bodo odprle v napravah Mac. Preverite lahko, ali je na voljo nova različica.</translation>
 <translation id="3354972872297836698">Seznanitve z napravo <ph name="DEVICE_NAME" /> ni bilo mogoče opraviti; izberite napravo, če želite poskusiti znova</translation>
 <translation id="3355936511340229503">Napaka povezave</translation>
+<translation id="3356036636691722598">Veliko veselja pri igranju iger v Chromebooku</translation>
 <translation id="3356469410714175391">(Virtualna kartica je omogočena)</translation>
 <translation id="3356580349448036450">Dokončano</translation>
 <translation id="3359256513598016054">Omejitve pravilnika potrdila</translation>
@@ -2879,6 +2895,7 @@
 <translation id="3665919494326051362">Trenutna različica je <ph name="CURRENT_VERSION" />.</translation>
 <translation id="3670113805793654926">Naprave katerega koli ponudnika</translation>
 <translation id="3670229581627177274">Vklop vmesnika Bluetooth</translation>
+<translation id="3672663996348587094">Kliknite, če želite dovoliti »<ph name="EXTENSIONS_REQUESTING_ACCESS" />« v »<ph name="ORIGIN" />«:</translation>
 <translation id="3672681487849735243">Zaznana je tovarniška napaka</translation>
 <translation id="3673097791729989571">Prijavo gosti <ph name="SAML_DOMAIN" /></translation>
 <translation id="3673622964532248901">Predvajanje v tej napravi ni dovoljeno.</translation>
@@ -3394,6 +3411,7 @@
 <translation id="4132183752438206707">Poiščite aplikacije v Trgovini Google Play</translation>
 <translation id="4132364317545104286">Preimenovanje profila za eSIM</translation>
 <translation id="4133076602192971179">Odprite aplikacijo, če želite spremeniti geslo</translation>
+<translation id="4134818201340504801">Ni dovolj razpoložljive shrambe za dokončanje nastavitve. Sprostite prostor v shrambi in poskusite znova.</translation>
 <translation id="4135746311382563554">Dodatni pogoji storitve za Google Chrome in Chrome OS</translation>
 <translation id="4136203100490971508">Nočna svetloba se bo samodejno izklopila ob sončnem vzhodu.</translation>
 <translation id="41365691917097717">Če nadaljujete, bo omogočeno odpravljanje napak z mostom za odpravljanje težav s sistemom Android (ADB) za ustvarjanje in preizkušanje aplikacij za Android. Upoštevajte, da to dejanje omogoča namestitev aplikacij za Android, ki jih ni preveril Google, če želite orodje onemogočiti, pa je potrebna tovarniška ponastavitev.</translation>
@@ -3464,6 +3482,7 @@
 <translation id="4211904048067111541">Prenehaj uporabljati z aplikacijami za Android</translation>
 <translation id="42126664696688958">Izvozi</translation>
 <translation id="42137655013211669">Strežnik je onemogočil dostop do tega vira.</translation>
+<translation id="4214192212360095377">Izklopi</translation>
 <translation id="4217558091331485702">Preglejte pred odpiranjem</translation>
 <translation id="4217571870635786043">Narek</translation>
 <translation id="4218081191298393750">Če želite izklopiti zvok tega zavihka, kliknite ikono zvočnika</translation>
@@ -3630,6 +3649,7 @@
 <translation id="4378556263712303865">Zahteva za napravo</translation>
 <translation id="4379281552162875326">Ali želite odmestiti »<ph name="APP_NAME" />«?</translation>
 <translation id="4380648069038809855">Odprt celozaslonski način</translation>
+<translation id="4383048856908088702">Ko je bil ta zavihek neaktiven, je varčevanje s pomnilnikom sprostilo <ph name="MEMORY_VALUE" /> pomnilnika za druga opravila. To lahko kadar koli spremenite tu: <ph name="SETTINGS_LINK" />.</translation>
 <translation id="4384312707950789900">Dodaj seznamu prednostnih</translation>
 <translation id="4384652540891215547">Aktivirajte razširitev</translation>
 <translation id="4384886290276344300">Spreminjanje nastavitev tipkovnice</translation>
@@ -3707,6 +3727,7 @@
 <translation id="4451479197788154834">Geslo je shranjeno v tej napravi in računu Google</translation>
 <translation id="4451757071857432900">Blokirano na spletnih mestih, ki prikazujejo vsiljive ali zavajajoče oglase (priporočljivo)</translation>
 <translation id="4453946976636652378">Uporabite <ph name="SEARCH_ENGINE_NAME" /> za iskanje ali vnesite URL</translation>
+<translation id="4458535500699390320">Ko je bil ta zavihek neaktiven, je varčevanje s pomnilnikom sprostilo pomnilnik za druga opravila. To lahko kadar koli spremenite v nastavitvah.</translation>
 <translation id="4459169140545916303">Aktivno pred toliko dnevi: <ph name="DEVICE_LAST_ACTIVATED_TIME" /></translation>
 <translation id="4460014764210899310">Razdruži</translation>
 <translation id="4462159676511157176">Imenski strežniki po meri</translation>
@@ -3879,6 +3900,7 @@
 <translation id="4613271546271159013">Razširitev je spremenila stran, ki se prikaže, ko odprete nov zavihek.</translation>
 <translation id="4615586811063744755">ni izbranih piškotkov</translation>
 <translation id="461661862154729886">Vir energije</translation>
+<translation id="461676224702246336">Ob kliku za to spletno mesto</translation>
 <translation id="4617001782309103936">Prekratko</translation>
 <translation id="4617019240346358451">Znova naložite stran, če želite uporabljati razširitev »<ph name="EXTENSION_NAME" />«</translation>
 <translation id="4617270414136722281">Možnosti razširitev</translation>
@@ -4001,6 +4023,7 @@
 <translation id="4728558894243024398">Okolje</translation>
 <translation id="4728570203948182358"><ph name="BEGIN_LINK" />Skrbnik<ph name="END_LINK" /> je izklopil preverjanje, ali je prisotna škodljiva programska oprema.</translation>
 <translation id="4730492586225682674">Najnovejši zapisek s pisalom na zaklenjenem zaslonu</translation>
+<translation id="4730888769809690665">Obvestila so dovoljena za <ph name="SITE" /></translation>
 <translation id="473140019006744096">V napravi ni dovolj prostora za dokončanje te posodobitve. Počistite <ph name="NECESSARY_SPACE" /> v napravi in poskusite znova.</translation>
 <translation id="4733161265940833579"><ph name="BATTERY_PERCENTAGE" /> % (leva)</translation>
 <translation id="4733793249294335256">Lokacija</translation>
@@ -4131,6 +4154,7 @@
 <translation id="4858913220355269194">Fritz</translation>
 <translation id="4862642413395066333">Podpisovanje odgovorov OCSP</translation>
 <translation id="4863769717153320198">Videti je <ph name="WIDTH" /> x <ph name="HEIGHT" /> (privzeta)</translation>
+<translation id="486459320933704969">Starš ali skrbnik mora potrditi, da lahko obiščeš to spletno mesto.</translation>
 <translation id="4864805589453749318">Izberite starša, ki odobrava dovoljenje za dodajanje šolskega računa.</translation>
 <translation id="486635084936119914">Samodejno odpiranje nekaterih vrst datotek po prenosu</translation>
 <translation id="4868281708609571334">Naučite Pomočnika Google prepoznati glas otroka <ph name="SUPERVISED_USER_NAME" /></translation>
@@ -4303,6 +4327,7 @@
 <translation id="5032430150487044192">Kode QR ni mogoče ustvariti.</translation>
 <translation id="5033137252639132982">Ni dovoljena uporaba tipal gibanja</translation>
 <translation id="5033266061063942743">Geometrijske oblike</translation>
+<translation id="5034000993065629381">Obrnite se na skrbnika.</translation>
 <translation id="5037676449506322593">Izberi vse</translation>
 <translation id="5038818366306248416">Predhodno ste se odločili, da ne odobritie nobenih razširitev v <ph name="ORIGIN" />.</translation>
 <translation id="5039696241953571917">Shranjena gesla si lahko ogledate in jih upravljate v računu Google</translation>
@@ -4360,6 +4385,7 @@
 <translation id="5089763948477033443">Ročica za spreminjanje velikosti stranskega podokna</translation>
 <translation id="5090637338841444533">Ni dovoljeno spremljanje položaja kamere</translation>
 <translation id="5093569275467863761">Anonimni podokvir v predpomnilniku za hitro obnovitev strani: <ph name="BACK_FORWARD_CACHE_INCOGNITO_PAGE_URL" /></translation>
+<translation id="5094042205195563542">Začetek namestitve</translation>
 <translation id="5094176498302660097">Podprte datoteke lahko s to aplikacijo odpirate in urejate v aplikaciji Datoteke ali drugih aplikacijah. Če želite upravljati, katere datoteke to aplikacijo privzeto odprejo, <ph name="BEGIN_LINK" />preberite, kako nastavite privzete aplikacije v napravi<ph name="END_LINK" />.</translation>
 <translation id="5094721898978802975">Komuniciranje s sodelujočimi izvornimi aplikacijami</translation>
 <translation id="5097002363526479830">Povezava z omrežjem »<ph name="NAME" />« ni uspela: <ph name="DETAILS" /></translation>
@@ -4433,6 +4459,7 @@
 <translation id="5161251470972801814">Naprave USB ponudnika <ph name="VENDOR_NAME" /></translation>
 <translation id="5162905305237671850">Naprava <ph name="DEVICE_TYPE" /> je blokirana</translation>
 <translation id="5163910114647549394">Zavihek je premaknjen na konec traku z zavihki.</translation>
+<translation id="5164530241085602114">Obvestila niso dovoljena za <ph name="SITE" /></translation>
 <translation id="516747639689914043">Protokol HTTP</translation>
 <translation id="5170568018924773124">Prikaži v mapi</translation>
 <translation id="5171045022955879922">Poiščite ali vnesite URL</translation>
@@ -4535,6 +4562,7 @@
 <translation id="5269977353971873915">Tiskanje ni uspelo</translation>
 <translation id="5273806377963980154">Urejanje URL-ja spletnega mesta</translation>
 <translation id="5275084684151588738">Uporabniški slovarji</translation>
+<translation id="5275100789567222478">Vklopi samo, ko je raven napolnjenosti baterije <ph name="PERCENT" /> % ali manjša.</translation>
 <translation id="5275338516105640560">Gumb za shranjeno skupino zavihkov</translation>
 <translation id="5275352920323889391">Pes</translation>
 <translation id="527605719918376753">Izklop zvoka zavihka</translation>
@@ -4553,6 +4581,7 @@
 <translation id="5285635972691565180">Zaslon <ph name="DISPLAY_ID" /></translation>
 <translation id="5286194356314741248">Pregledovanje</translation>
 <translation id="5287425679749926365">Vaši računi</translation>
+<translation id="5288106344236929384">Več dejanj, možnosti gesla za <ph name="USERNAME" /> na <ph name="DOMAIN" /></translation>
 <translation id="5288678174502918605">&amp;Znova odpri zaprt zavihek</translation>
 <translation id="52895863590846877">Stran ni v jeziku <ph name="LANGUAGE" /></translation>
 <translation id="52912272896845572">Datoteka z zasebnim ključem je neveljavna.</translation>
@@ -4748,6 +4777,7 @@
 <translation id="5473099001878321374">Če nadaljujete, se strinjate, da lahko ta naprava tudi samodejno prenaša in namešča posodobitve in aplikacije Googla, operaterja in proizvajalca te otrokove naprave – morda s prenosom podatkov v mobilnih omrežjih. Nekatere od teh aplikacij morda ponujajo nakupe v aplikaciji.</translation>
 <translation id="5473156705047072749">{NUM_CHARACTERS,plural, =1{Koda PIN mora vsebovati najmanj en znak}one{Koda PIN mora vsebovati najmanj # znak}two{Koda PIN mora vsebovati najmanj # znaka}few{Koda PIN mora vsebovati najmanj # znake}other{Koda PIN mora vsebovati najmanj # znakov}}</translation>
 <translation id="5474859849784484111">Domena <ph name="MANAGER" /> zahteva, da se povežete z omrežjem Wi-Fi in prenesete posodobitev. Prenesete jo lahko tudi prek povezave z omejenim prenosom podatkov (prenos podatkov se morda zaračuna).</translation>
+<translation id="5476016146231427848">Znova zaženite napravo, če želite v Chromebooku uporabljati aplikacijo Steam.</translation>
 <translation id="5481273127572794904">Ni dovoljeno samodejno prenesti več datotek</translation>
 <translation id="5481941284378890518">Dodajanje tiskalnikov v bližini</translation>
 <translation id="5483785310822538350">Umakni dostop do datotek in naprav</translation>
@@ -4969,6 +4999,7 @@
 <translation id="5683806393796685434">Vnesite kodo za aktiviranje</translation>
 <translation id="5684181005476681636">Podrobnosti omrežja Wi-Fi</translation>
 <translation id="5684661240348539843">ID sredstva</translation>
+<translation id="5684969244627829799">Prijavite se v uporabniški račun in poskusite znova.</translation>
 <translation id="5687326903064479980">Časovni pas</translation>
 <translation id="5687935527303996204">Preverite, ali je naprava ustrezno priključena. Naprave ne izklopite. Namestitev lahko traja do 20 minut. Naprava se bo po namestitvi samodejno izklopila.</translation>
 <translation id="5689516760719285838">Lokacija</translation>
@@ -5095,6 +5126,7 @@
 <translation id="5805697420284793859">Upravitelj oken</translation>
 <translation id="5806447147478173900">Skupna shramba, ki jo uporabljajo prikazana spletna mesta: <ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">0° (privzeto)</translation>
+<translation id="5810603387504252966">#borealis-enable mora biti omogočeno v chrome://flags.</translation>
 <translation id="5810809306422959727">Ta račun ni primeren za starševski nadzor</translation>
 <translation id="5811614940486072060">Datoteka ni pogosto prenesena in je lahko nevarna.</translation>
 <translation id="5812674658566766066">Razširi vse</translation>
@@ -5174,6 +5206,7 @@
 <translation id="5882449899683447569">Prišlo je do napake in gesla niso bila uvožena.</translation>
 <translation id="5882919346125742463">Znana omrežja</translation>
 <translation id="5883356647197510494">Samodejno blokirano: <ph name="PERMISSION_1" />, <ph name="PERMISSION_2" /></translation>
+<translation id="5884447826201752041">Prilagodi za vsako razširitev</translation>
 <translation id="5884474295213649357">Ta zavihek je povezan z napravo USB.</translation>
 <translation id="5885314688092915589">Ta profil bo upravljala vaša organizacija</translation>
 <translation id="5886009770935151472">Prst 1</translation>
@@ -5613,6 +5646,7 @@
 <translation id="6301300352769835063">Dovolite Googlu, da uporablja podatke o strojni opremi za izboljšanje operacijskega sistema <ph name="DEVICE_OS" />. Če odklonite, bodo ti podatki vseeno poslani Googlu zaradi določanja ustreznih posodobitev, vendar se ne bodo shranjevali ali kako drugače uporabljali. Več o tem: g.co/flex/HWDataCollection.</translation>
 <translation id="630292539633944562">Predlogi osebnih podatkov</translation>
 <translation id="6305607932814307878">Globalni pravilnik:</translation>
+<translation id="6305909198255586420">Namestite z glavnim profilom.</translation>
 <translation id="6307990684951724544">Sistem je zaseden</translation>
 <translation id="6308493641021088955">Prijavo omogoča <ph name="EXTENSION_NAME" /></translation>
 <translation id="6308937455967653460">Shrani povezav&amp;o kot ...</translation>
@@ -5940,6 +5974,7 @@
 <translation id="6608166463665411119">Ponastavi kartico e-SIM</translation>
 <translation id="6609478180749378879">Podatki za prijavo se bodo shranili v tej napravi, ko zaprete anonimni način. Pozneje se boste lahko z napravo znova prijavili v to spletno mesto.</translation>
 <translation id="6610002944194042868">Možnosti prevajanja</translation>
+<translation id="6611907964265870728">Naprava mora biti povezana v internet.</translation>
 <translation id="6611972847767394631">Poiščite svoje zavihke tukaj</translation>
 <translation id="6613668613087513143">V napravi ni dovolj prostora za dokončanje te posodobitve. Počistite <ph name="NECESSARY_SPACE" /> v napravi in v brskalniku Chrome poskusite znova.</translation>
 <translation id="6615455863669487791">Pokaži mi</translation>
@@ -6328,6 +6363,7 @@
 <translation id="697508444536771064">Zaustavitev Linuxa</translation>
 <translation id="6975361011348772931">Zahtevano branje in spreminjanje</translation>
 <translation id="6978121630131642226">Iskalniki</translation>
+<translation id="6979041727349121225">Varčevanje z energijo</translation>
 <translation id="6979044105893951891">Zagon in zapiranje upravljanih sej gosta</translation>
 <translation id="6979158407327259162">Google Drive</translation>
 <translation id="6979440798594660689">Izklop zvoka (privzeto)</translation>
@@ -6380,6 +6416,8 @@
 <translation id="7014174261166285193">Namestitev ni uspela.</translation>
 <translation id="7014480873681694324">Odstrani označitev</translation>
 <translation id="7014741021609395734">Stopnja povečave</translation>
+<translation id="7014961128696979283">Zaženi Steam</translation>
+<translation id="7015088858756332848">V Chromebooku ni bilo mogoče zagnati aplikacije Steam. Poskusite znova.</translation>
 <translation id="7017004637493394352">Znova izgovorite »Ok Google«</translation>
 <translation id="7017219178341817193">Dodaj novo stran</translation>
 <translation id="7017354871202642555">Ko enkrat nastavite okno, ni mogoče nastaviti načina.</translation>
@@ -6756,6 +6794,7 @@
 <translation id="7409854300652085600">Zaznamki so uvoženi.</translation>
 <translation id="7410344089573941623">Vprašaj, če <ph name="HOST" /> zahteva dostop do kamere in mikrofona</translation>
 <translation id="7410852728357935715">Predvajanje v oddaljeni napravi</translation>
+<translation id="7411614333737930931">Znova zaženite napravo in poskusite znova.</translation>
 <translation id="741204030948306876">Da, sem za</translation>
 <translation id="7412226954991670867">Pomnilnik grafičnega procesorja</translation>
 <translation id="7414464185801331860">18 x</translation>
@@ -6771,6 +6810,7 @@
 <translation id="7423425410216218516">Vidnost bo vklopljena <ph name="MINUTES" /> min</translation>
 <translation id="7423513079490750513">Odstranitev tega: <ph name="INPUT_METHOD_NAME" /></translation>
 <translation id="7423807071740419372">Aplikacija <ph name="APP_NAME" /> zahteva dovoljenje za izvajanje</translation>
+<translation id="7424153922653300265">Varčevanje z energijo je vklopljeno</translation>
 <translation id="7424818322350938336">Omrežje je dodano</translation>
 <translation id="7427315069950454694">vaši spomini za danes</translation>
 <translation id="7427348830195639090">Stran v ozadju: <ph name="BACKGROUND_PAGE_URL" /></translation>
@@ -6986,6 +7026,7 @@
 <translation id="7635048370253485243">Pripel skrbnik</translation>
 <translation id="7636919061354591437">Namesti v to napravo</translation>
 <translation id="7637253234491814483">Dotaknite se tipala prstnih odtisov v zgornjem desnem kotu tipkovnice zraven gumba za vklop. Podatki o prstnih odtisih so varno shranjeni in nikoli ne zapustijo naprave <ph name="DEVICE_TYPE" />.</translation>
+<translation id="7637272932128132922">Ko je bil ta zavihek neaktiven, je varčevanje s pomnilnikom sprostilo pomnilnik za druga opravila. To lahko kadar koli spremenite tu: <ph name="SETTINGS_LINK" />.</translation>
 <translation id="7637593984496473097">Premalo prostora na disku.</translation>
 <translation id="7639914187072011620">URL-ja za preusmeritev za prijavo SAML ni bilo mogoče pridobiti iz strežnika.</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> vas z gesli, ki ste jih shranili, samodejno prijavi v ustrezna spletna mesta.</translation>
@@ -7102,6 +7143,7 @@
 <translation id="7728668285692163452">Sprememba kanala bo uveljavljena pozneje</translation>
 <translation id="7730449930968088409">Zajem vsebine zaslona</translation>
 <translation id="7730683939467795481">To stran je spremenila razširitev »<ph name="EXTENSION_NAME" />«</translation>
+<translation id="7735165285389721951">Poteka druga nastavitev aplikacije Steam. Počakajte, da se dokonča, preden poskusite znova.</translation>
 <translation id="7737115349420013392">Seznanjanje z napravo »<ph name="DEVICE_NAME" />« …</translation>
 <translation id="7737846262459425222">To lahko kadar koli spremenite v »Nastavitve« &gt; »Pomočnik Google« &gt; »Vsebina na zaslonu«.</translation>
 <translation id="7737948071472253612">Ni dovoljena uporaba kamere</translation>
@@ -7400,6 +7442,7 @@
 Datoteka s ključem: <ph name="KEY_FILE" />
 
 Datoteko s ključem shranite na varnem. Potrebovali jo boste za izdelavo novih različic razširitev.</translation>
+<translation id="8001100670809322641">Počakajte nekaj minut in poskusite znova.</translation>
 <translation id="8002274832045662704">Dodatna konfiguracija tiskalnika</translation>
 <translation id="8002670234429879764">Tiskalnik <ph name="PRINTER_NAME" /> ni več na voljo</translation>
 <translation id="8004092996156083991">Če bodo vaša gesla ogrožena, vas bomo o tem obvestili.</translation>
@@ -7409,6 +7452,7 @@
 <translation id="8008356846765065031">Internetna povezava je prekinjena. Preverite povezavo.</translation>
 <translation id="8009225694047762179">Upravljanje gesel</translation>
 <translation id="8011372169388649948">Premaknjeno: »<ph name="BOOKMARK_TITLE" />«.</translation>
+<translation id="8011875486979733097">Ni mogoče namestiti aplikacije Steam</translation>
 <translation id="8012647001091218357">Trenutno ni mogoče vzpostaviti stika s starši. Poskusi znova pozneje.</translation>
 <translation id="8013993649590906847">Če slika nima koristnega opisa, ga bo Chrome poskušal zagotoviti. Opisi se ustvarijo tako, da se slike pošljejo Googlu.</translation>
 <translation id="8014154204619229810">Orodje za posodabljanje se trenutno izvaja. Osvežite čez minuto in preverite znova.</translation>
@@ -7499,6 +7543,7 @@
 <translation id="808894953321890993">Sprememba gesla</translation>
 <translation id="8090234456044969073">Preberite seznam spletnih mest, ki jih najpogosteje obiskujete</translation>
 <translation id="8090513782447872344">Kadar koli se lahko vrnete in to znova preberete.</translation>
+<translation id="809312780580957751">Aplikacije Steam ni bilo mogoče namestiti v tej napravi</translation>
 <translation id="8093359998839330381">Vtičnik <ph name="PLUGIN_NAME" /> se ne odziva</translation>
 <translation id="8095105960962832018"><ph name="BEGIN_PARAGRAPH1" />Varnostno kopiranje v Google Drive. Po želji lahko preprosto obnovite podatke ali napravo zamenjate z drugo. Varnostne kopije vključujejo podatke aplikacij.<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />Varnostne kopije so naložene v Google in šifrirane z geslom za vaš račun Google.<ph name="END_PARAGRAPH2" />
@@ -7594,6 +7639,7 @@
 <translation id="8177318697334260664">{NUM_TABS,plural, =1{Premik zavihka v novo okno}one{Premik zavihka v novo okno}two{Premik zavihkov v novo okno}few{Premik zavihkov v novo okno}other{Premik zavihkov v novo okno}}</translation>
 <translation id="8179188928355984576">Se ne uporablja z aplikacijami za Android</translation>
 <translation id="8179976553408161302">Enter</translation>
+<translation id="8180785270975217276">Varčevanje z energijo je vklopljeno</translation>
 <translation id="8180786512391440389">Razširitev »<ph name="EXTENSION" />« lahko bere in izbriše slike, videodatoteke in zvočne datoteke na označenih lokacijah.</translation>
 <translation id="8181215761849004992">Domeni se ni mogoče pridružiti. Preverite, ali imate v računu zadostne pravice za dodajanje naprav.</translation>
 <translation id="8182105986296479640">Program se ne odziva.</translation>
@@ -7716,6 +7762,7 @@
 <translation id="828642162569365647">To geslo ali koda PIN ščiti vaše podatke v tej napravi <ph name="DEVICE_TYPE" /> in tudi vse podatke, do katerih dostopate iz telefona. Napravo <ph name="DEVICE_TYPE" /> boste morali odkleniti vsakič, ko preklopi iz stanja pripravljenosti.</translation>
 <translation id="8287902281644548111">Iskanje po klicu API-jul/URL-ju</translation>
 <translation id="8288032458496410887">Odmeščanje aplikacije <ph name="APP" /> …</translation>
+<translation id="8288539437195337464">Preverite, ali je naprava posodobljena, in poskusite znova.</translation>
 <translation id="8289128870594824098">Velikost diska</translation>
 <translation id="8289509909262565712">Pozdravljeni v sistemu <ph name="DEVICE_OS" /></translation>
 <translation id="8293206222192510085">Dodaj zaznamek</translation>
@@ -8005,11 +8052,13 @@
 <translation id="859246725979739260">Temu spletnemu mestu je preprečen dostop do vaše lokacije.</translation>
 <translation id="8593121833493516339">Pošiljanje podatkov o uporabi in diagnostičnih podatkov. Pomagajte izboljšati otrokovo izkušnjo z Androidom s samodejnim pošiljanjem diagnostičnih podatkov ter podatkov o uporabi naprave in aplikacij Googlu. Teh podatkov ne bomo uporabljali, da bi prepoznali vašega otroka, temveč za izboljšanje stabilnosti sistema in izvajanja aplikacij ter drugega. Nekateri združeni podatki bodo pomagali tudi Googlovim aplikacijam in partnerjem, na primer razvijalcem za Android. Če ste za otroka vklopili dodatno beleženje dejavnosti v spletu in aplikacijah, bodo ti podatki morda shranjeni v njegovem računu za Google. <ph name="BEGIN_LINK1" />Več o tem<ph name="END_LINK1" /></translation>
 <translation id="8596540852772265699">Datoteke po meri</translation>
+<translation id="8597404194697561297">Pozdravljeni v aplikaciji Steam v Chromebooku</translation>
 <translation id="8597845839771543242">Oblika zapisa lastnosti:</translation>
 <translation id="8599681327221583254">Eden ali več pravilnikov ni ustrezno konfiguriranih. Obrnite se na skrbnika.</translation>
 <translation id="8599864823732014237">Želite preskočiti včlanitev v podjetje?</translation>
 <translation id="8601206103050338563">Preverjanje pristnosti odjemalca TLS WWW</translation>
 <translation id="8601611099293226919">Išči po zaslonu z Googlom Lens</translation>
+<translation id="8602674530529411098">Aplikacije (beta)</translation>
 <translation id="8602851771975208551">Drug program v računalniku je dodal aplikacijo, ki lahko spremeni način delovanja Chroma.</translation>
 <translation id="8605428685123651449">Pomnilnik za SQLite</translation>
 <translation id="8608618451198398104">Dodajanje kartončka za Kerberos</translation>
@@ -8274,6 +8323,7 @@
 <translation id="8838601485495657486">Neprosojno</translation>
 <translation id="8838770651474809439">Hamburger</translation>
 <translation id="8838778928843281408">Upravljanje telefonov</translation>
+<translation id="883924185304953854">Slikovno iskanje</translation>
 <translation id="8841843049738266382">Branje in spreminjanje uporabnikov s seznama dovoljenih</translation>
 <translation id="8842594465773264717">Izbriši ta prstni odtis</translation>
 <translation id="8845001906332463065">Poiščite pomoč</translation>
@@ -8696,10 +8746,12 @@
 <translation id="939598580284253335">Vnesite geslo</translation>
 <translation id="939736085109172342">Nova mapa</translation>
 <translation id="942532530371314860">Aplikacija <ph name="APP_NAME" /> je v skupno rabo dala zavihek v Chromu in zvok.</translation>
+<translation id="944799160843436808">Pri nastavljanju aplikacije Steam v Chromebooku je prišlo do težave</translation>
 <translation id="945522503751344254">Pošiljanje povratnih informacij</translation>
 <translation id="947329552760389097">&amp;Pregled elementov</translation>
 <translation id="947526284350604411">Vaš odgovor</translation>
 <translation id="947667444780368238">Spletno mesto <ph name="ORIGIN" /> ne more odpreti datotek v tej mapi, ker so v njej sistemske datoteke.</translation>
+<translation id="949314938206378263">Prosil(-a) si za dovoljenje za obisk tega spletnega mesta. Starš lahko odgovori v storitvi Family Link.</translation>
 <translation id="950307215746360464">Vodnik za nastavitev</translation>
 <translation id="951991426597076286">Zavrni</translation>
 <translation id="952471655966876828">Naprava samodejno vzpostavi povezavo, ko je vklopljena in je v uporabi.</translation>
@@ -8720,6 +8772,7 @@
 <translation id="968000525894980488">Vklopite storitve Google Play</translation>
 <translation id="968037381421390582">&amp;Prilepi in poišči »<ph name="SEARCH_TERMS" />«</translation>
 <translation id="969096075394517431">Spreminjanje jezikov</translation>
+<translation id="969574218206797926">Varčevanje s pomnilnikom sprosti pomnilnik z neaktivnih zavihkov, da ga lahko uporabljajo aktivni zavihki in druge aplikacije.</translation>
 <translation id="970047733946999531">{NUM_TABS,plural, =1{1 zavihek}one{# zavihek}two{# zavihka}few{# zavihki}other{# zavihkov}}</translation>
 <translation id="971510864672937292">Želite izbrisati podatke spletnega mesta in dovoljenja za <ph name="SITE_NAME" /> in za vsa njegova podrejena spletna mesta?</translation>
 <translation id="971774202801778802">URL zaznamka</translation>
diff --git a/chrome/app/resources/generated_resources_sq.xtb b/chrome/app/resources/generated_resources_sq.xtb
index eb26c7e7..9aec7f4 100644
--- a/chrome/app/resources/generated_resources_sq.xtb
+++ b/chrome/app/resources/generated_resources_sq.xtb
@@ -8278,6 +8278,7 @@
 <translation id="8838601485495657486">E patejdukshme</translation>
 <translation id="8838770651474809439">Hamburger</translation>
 <translation id="8838778928843281408">Menaxho telefonat</translation>
+<translation id="883924185304953854">Kërko me imazh</translation>
 <translation id="8841843049738266382">Lexo dhe ndrysho përdoruesit në listën e lejimeve</translation>
 <translation id="8842594465773264717">Fshije këtë gjurmë gishti</translation>
 <translation id="8845001906332463065">Kërko ndihmë</translation>
diff --git a/chrome/app/resources/generated_resources_sr-Latn.xtb b/chrome/app/resources/generated_resources_sr-Latn.xtb
index 8a2be7d..cd91a6a 100644
--- a/chrome/app/resources/generated_resources_sr-Latn.xtb
+++ b/chrome/app/resources/generated_resources_sr-Latn.xtb
@@ -2396,6 +2396,7 @@
 <translation id="3188465121994729530">Pokretni prosek</translation>
 <translation id="3189187154924005138">Veliki kursor</translation>
 <translation id="3190558889382726167">Lozinka je sačuvana</translation>
+<translation id="3192589799003798742">Podešavanje Steam-a na Chromebook-u</translation>
 <translation id="3192947282887913208">Audio datoteke</translation>
 <translation id="3193695589337931419">Uslužne aplikacije za sistemske signale</translation>
 <translation id="3194786596445804250">Prikazuj detalje o blokiranju kolačića trećih strana</translation>
@@ -2535,6 +2536,7 @@
 <translation id="3341699307020049241">Netačan PIN. Imate još <ph name="RETRIES" /> pokušaja.</translation>
 <translation id="3341703758641437857">Dozvoli pristup URL adresama datoteka</translation>
 <translation id="3342361181740736773">„<ph name="TRIGGERING_EXTENSION_NAME" />“ želi da ukloni ovaj dodatak.</translation>
+<translation id="3343977377045378693">Podešavanje se obavlja</translation>
 <translation id="3345135638360864351">Slanje zahteva za pristup ovom sajtu korisniku <ph name="NAME" /> nije uspelo. Probajte ponovo.</translation>
 <translation id="3345634917232014253">Bezbednosna provera je upravo pokrenuta</translation>
 <translation id="3345886924813989455">Nije pronađen nijedan podržani pregledač</translation>
@@ -2546,6 +2548,7 @@
 <translation id="3354768182971982851">Stare verzije Chrome aplikacija neće se otvarati na Mac uređajima posle decembra 2022. Možete da proverite da li je dostupna nova verzija.</translation>
 <translation id="3354972872297836698">Uparivanje sa uređajem <ph name="DEVICE_NAME" /> nije uspelo; izaberite uređaj da biste probali ponovo</translation>
 <translation id="3355936511340229503">Greška pri povezivanju</translation>
+<translation id="3356036636691722598">Uživajte u igranju igara na Chromebook-u</translation>
 <translation id="3356469410714175391">(Virtuelna kartica je omogućena)</translation>
 <translation id="3356580349448036450">Završeno</translation>
 <translation id="3359256513598016054">Ograničenja smernica sertifikata</translation>
@@ -3460,6 +3463,7 @@
 <translation id="4211904048067111541">Prestani da koristiš sa Android aplikacijama</translation>
 <translation id="42126664696688958">Izvezi</translation>
 <translation id="42137655013211669">Server je zabranio pristup ovom resursu.</translation>
+<translation id="4214192212360095377">Isključi</translation>
 <translation id="4217558091331485702">Skenirajte pre otvaranja</translation>
 <translation id="4217571870635786043">Diktiranje</translation>
 <translation id="4218081191298393750">Kliknite na ikonu zvučnika da biste isključili zvuk za ovu karticu</translation>
@@ -4361,6 +4365,7 @@
 <translation id="5089763948477033443">Regulator za promenu veličine bočne table</translation>
 <translation id="5090637338841444533">Nije im dozvoljeno da prate položaj kamere</translation>
 <translation id="5093569275467863761">Ceo keširani podokvir bez arhiviranja: <ph name="BACK_FORWARD_CACHE_INCOGNITO_PAGE_URL" /></translation>
+<translation id="5094042205195563542">Instalacija se pokreće</translation>
 <translation id="5094176498302660097">Pomoću ove aplikacije možete da otvarate i menjate podržane fajlove iz aplikacije Fajlovi ili drugih aplikacija. Da biste kontrolisali koji fajlovi podrazumevano otvaraju ovu aplikaciju, <ph name="BEGIN_LINK" />saznajte kako da podesite podrazumevane aplikacije na uređaju<ph name="END_LINK" />.</translation>
 <translation id="5094721898978802975">Komunikacija sa osnovnim aplikacijama za saradnju</translation>
 <translation id="5097002363526479830">Povezivanje sa mrežom „<ph name="NAME" />“ nije uspelo: <ph name="DETAILS" /></translation>
@@ -6387,6 +6392,7 @@
 <translation id="7014174261166285193">Instalacija nije uspela.</translation>
 <translation id="7014480873681694324">Ukloni isticanje</translation>
 <translation id="7014741021609395734">Nivo zumiranja</translation>
+<translation id="7014961128696979283">Pokreni Steam</translation>
 <translation id="7015088858756332848">Pokretanje Steam-a na Chromebook-u nije uspelo. Probajte ponovo</translation>
 <translation id="7017004637493394352">Kažite ponovo „Hej Google“</translation>
 <translation id="7017219178341817193">Dodajte novu stranicu</translation>
@@ -6780,6 +6786,7 @@
 <translation id="7423425410216218516">Vidljivost je uključena <ph name="MINUTES" /> minut/a</translation>
 <translation id="7423513079490750513">Uklonite metod unosa <ph name="INPUT_METHOD_NAME" /></translation>
 <translation id="7423807071740419372">Za pokretanje aplikacije <ph name="APP_NAME" /> je potrebna dozvola</translation>
+<translation id="7424153922653300265">Ušteda energije je uključena</translation>
 <translation id="7424818322350938336">Mreža je dodata</translation>
 <translation id="7427315069950454694">vaše uspomene za danas</translation>
 <translation id="7427348830195639090">Stranica u pozadini: <ph name="BACKGROUND_PAGE_URL" /></translation>
@@ -8021,6 +8028,7 @@
 <translation id="859246725979739260">Ovom sajtu je zabranjeno da pristupa lokaciji.</translation>
 <translation id="8593121833493516339">Šaljite podatke o korišćenju i dijagnostičke podatke. Pomozite nam da poboljšamo Android doživljaj za dete tako što ćete automatski slati Google-u podatke o dijagnostici i korišćenju uređaja i aplikacija. Te informacije se neće koristiti za identifikaciju deteta i pomoći će u održavanju stabilnosti sistema i aplikacije i drugim podešavanjima. Neki objedinjeni podaci će takođe pomoći Google aplikacijama i partnerima, poput Android programera. Ako za dete uključite dodatne aktivnosti na vebu i u aplikacijama, ti podaci će se možda čuvati na Google nalogu deteta. <ph name="BEGIN_LINK1" />Saznajte više<ph name="END_LINK1" /></translation>
 <translation id="8596540852772265699">Prilagođene datoteke</translation>
+<translation id="8597404194697561297">Dobro došli u Steam na Chromebook-u</translation>
 <translation id="8597845839771543242">Format svojstva:</translation>
 <translation id="8599681327221583254">Jedna ili više smernica nisu pravilno konfigurisane. Obratite se administratoru</translation>
 <translation id="8599864823732014237">Želite da preskočite registraciju za preduzeća?</translation>
diff --git a/chrome/app/resources/generated_resources_sr.xtb b/chrome/app/resources/generated_resources_sr.xtb
index d10ef44..2214cd9 100644
--- a/chrome/app/resources/generated_resources_sr.xtb
+++ b/chrome/app/resources/generated_resources_sr.xtb
@@ -2396,6 +2396,7 @@
 <translation id="3188465121994729530">Покретни просек</translation>
 <translation id="3189187154924005138">Велики курсор</translation>
 <translation id="3190558889382726167">Лозинка је сачувана</translation>
+<translation id="3192589799003798742">Подешавање Steam-а на Chromebook-у</translation>
 <translation id="3192947282887913208">Аудио датотеке</translation>
 <translation id="3193695589337931419">Услужне апликације за системске сигнале</translation>
 <translation id="3194786596445804250">Приказуј детаље о блокирању колачића трећих страна</translation>
@@ -2535,6 +2536,7 @@
 <translation id="3341699307020049241">Нетачан PIN. Имате још <ph name="RETRIES" /> покушаја.</translation>
 <translation id="3341703758641437857">Дозволи приступ URL адресама датотека</translation>
 <translation id="3342361181740736773">„<ph name="TRIGGERING_EXTENSION_NAME" />“ жели да уклони овај додатак.</translation>
+<translation id="3343977377045378693">Подешавање се обавља</translation>
 <translation id="3345135638360864351">Слање захтева за приступ овом сајту кориснику <ph name="NAME" /> није успело. Пробајте поново.</translation>
 <translation id="3345634917232014253">Безбедносна провера је управо покренута</translation>
 <translation id="3345886924813989455">Није пронађен ниједан подржани прегледач</translation>
@@ -2546,6 +2548,7 @@
 <translation id="3354768182971982851">Старе верзије Chrome апликација неће се отварати на Mac уређајима после децембра 2022. Можете да проверите да ли је доступна нова верзија.</translation>
 <translation id="3354972872297836698">Упаривање са уређајем <ph name="DEVICE_NAME" /> није успело; изаберите уређај да бисте пробали поново</translation>
 <translation id="3355936511340229503">Грешка при повезивању</translation>
+<translation id="3356036636691722598">Уживајте у игрању игара на Chromebook-у</translation>
 <translation id="3356469410714175391">(Виртуелна картица је омогућена)</translation>
 <translation id="3356580349448036450">Завршено</translation>
 <translation id="3359256513598016054">Ограничења смерница сертификата</translation>
@@ -3460,6 +3463,7 @@
 <translation id="4211904048067111541">Престани да користиш са Android апликацијама</translation>
 <translation id="42126664696688958">Извези</translation>
 <translation id="42137655013211669">Сервер је забранио приступ овом ресурсу.</translation>
+<translation id="4214192212360095377">Искључи</translation>
 <translation id="4217558091331485702">Скенирајте пре отварања</translation>
 <translation id="4217571870635786043">Диктирање</translation>
 <translation id="4218081191298393750">Кликните на икону звучника да бисте искључили звук за ову картицу</translation>
@@ -4361,6 +4365,7 @@
 <translation id="5089763948477033443">Регулатор за промену величине бочне табле</translation>
 <translation id="5090637338841444533">Није им дозвољено да прате положај камере</translation>
 <translation id="5093569275467863761">Цео кеширани подоквир без архивирања: <ph name="BACK_FORWARD_CACHE_INCOGNITO_PAGE_URL" /></translation>
+<translation id="5094042205195563542">Инсталација се покреће</translation>
 <translation id="5094176498302660097">Помоћу ове апликације можете да отварате и мењате подржане фајлове из апликације Фајлови или других апликација. Да бисте контролисали који фајлови подразумевано отварају ову апликацију, <ph name="BEGIN_LINK" />сазнајте како да подесите подразумеване апликације на уређају<ph name="END_LINK" />.</translation>
 <translation id="5094721898978802975">Комуникација са основним апликацијама за сарадњу</translation>
 <translation id="5097002363526479830">Повезивање са мрежом „<ph name="NAME" />“ није успело: <ph name="DETAILS" /></translation>
@@ -6387,6 +6392,7 @@
 <translation id="7014174261166285193">Инсталација није успела.</translation>
 <translation id="7014480873681694324">Уклони истицање</translation>
 <translation id="7014741021609395734">Ниво зумирања</translation>
+<translation id="7014961128696979283">Покрени Steam</translation>
 <translation id="7015088858756332848">Покретање Steam-а на Chromebook-у није успело. Пробајте поново</translation>
 <translation id="7017004637493394352">Кажите поново „Хеј Google“</translation>
 <translation id="7017219178341817193">Додајте нову страницу</translation>
@@ -6780,6 +6786,7 @@
 <translation id="7423425410216218516">Видљивост је укључена <ph name="MINUTES" /> минут/а</translation>
 <translation id="7423513079490750513">Уклоните метод уноса <ph name="INPUT_METHOD_NAME" /></translation>
 <translation id="7423807071740419372">За покретање апликације <ph name="APP_NAME" /> је потребна дозвола</translation>
+<translation id="7424153922653300265">Уштеда енергије је укључена</translation>
 <translation id="7424818322350938336">Мрежа је додата</translation>
 <translation id="7427315069950454694">ваше успомене за данас</translation>
 <translation id="7427348830195639090">Страница у позадини: <ph name="BACKGROUND_PAGE_URL" /></translation>
@@ -8021,6 +8028,7 @@
 <translation id="859246725979739260">Овом сајту је забрањено да приступа локацији.</translation>
 <translation id="8593121833493516339">Шаљите податке о коришћењу и дијагностичке податке. Помозите нам да побољшамо Android доживљај за дете тако што ћете аутоматски слати Google-у податке о дијагностици и коришћењу уређаја и апликација. Те информације се неће користити за идентификацију детета и помоћи ће у одржавању стабилности система и апликације и другим подешавањима. Неки обједињени подаци ће такође помоћи Google апликацијама и партнерима, попут Android програмера. Ако за дете укључите додатне активности на вебу и у апликацијама, ти подаци ће се можда чувати на Google налогу детета. <ph name="BEGIN_LINK1" />Сазнајте више<ph name="END_LINK1" /></translation>
 <translation id="8596540852772265699">Прилагођене датотеке</translation>
+<translation id="8597404194697561297">Добро дошли у Steam на Chromebook-у</translation>
 <translation id="8597845839771543242">Формат својства:</translation>
 <translation id="8599681327221583254">Једна или више смерница нису правилно конфигурисане. Обратите се администратору</translation>
 <translation id="8599864823732014237">Желите да прескочите регистрацију за предузећа?</translation>
diff --git a/chrome/app/resources/generated_resources_sv.xtb b/chrome/app/resources/generated_resources_sv.xtb
index 51ccab3..e154e923a 100644
--- a/chrome/app/resources/generated_resources_sv.xtb
+++ b/chrome/app/resources/generated_resources_sv.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="sv">
 <translation id="1001033507375626788">Nätverket delas med dig</translation>
+<translation id="1002085272681738789">Fliken är aktiv igen</translation>
 <translation id="1003088604756913841">Öppna länken i ett nytt fönster i <ph name="APP" /></translation>
 <translation id="100323615638474026">USB-enhet (<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />)</translation>
 <translation id="1004218526896219317">Tillgång till webbplatsen</translation>
@@ -323,6 +324,7 @@
 <translation id="1296911687402551044">Fäst vald flik</translation>
 <translation id="1297175357211070620">Destination</translation>
 <translation id="129770436432446029">Skicka feedback om <ph name="EXPERIMENT_NAME" /></translation>
+<translation id="130097046531636712">Detta förlänger batteritiden genom att begränsa bakgrundsaktiviteter och visuella effekter, t.ex. jämn scrollning</translation>
 <translation id="1301135395320604080"><ph name="ORIGIN" /> har redigeringsbehörighet till följande filer</translation>
 <translation id="1302227299132585524">Tillåt JavaScript från Apple Events</translation>
 <translation id="1303101771013849280">HTML-fil med bokmärken</translation>
@@ -381,6 +383,7 @@
 <translation id="1361655923249334273">Oanvänd</translation>
 <translation id="1362865166188278099">Mekaniskt fel. Kontrollera skrivaren</translation>
 <translation id="1363585519747660921">USB-skrivaren behöver konfigureras</translation>
+<translation id="136378536198524553">Energisparläget är på</translation>
 <translation id="1368603372088757436">Linux stöds inte på din <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Läs mer<ph name="LINK_END" /></translation>
 <translation id="1372841398847029212">Synkronisera till ditt konto</translation>
 <translation id="1373176046406139583">Synlighetsinställningarna på enheten styr vem som kan dela filer med dig när skärmen är upplåst. <ph name="LINK_BEGIN" />Läs mer<ph name="LINK_END" /></translation>
@@ -651,6 +654,7 @@
 <translation id="1610272688494140697">Appinställningar</translation>
 <translation id="161042844686301425">Cyanblå</translation>
 <translation id="1611432201750675208">Enheten är låst</translation>
+<translation id="1611776894942218234">Enheten måste vara i betakanalen</translation>
 <translation id="1612019740169791082">Behållaren har inte konfigurerats för att ändra storlek på disken. Om du vill justera hur mycket utrymme som reserverats för Linux gör du en säkerhetskopia och återställer den i en ny behållare.</translation>
 <translation id="1613019471223620622">Visa lösenord för <ph name="USERNAME" /> på <ph name="DOMAIN" /></translation>
 <translation id="1613149688105334014">Gamla versioner av Chrome-appar öppnas inte efter december 2022. Du kan kolla om det finns en ny version tillgänglig.</translation>
@@ -1130,6 +1134,7 @@
 <translation id="2034346955588403444">Lägg till ett annat wifi-nätverk</translation>
 <translation id="2035211704574173780">Gråskala</translation>
 <translation id="203574396658008164">Aktivera anteckningar på låsskärmen</translation>
+<translation id="2036514476578229158">Du har bett att få besöka den här webbplatsen. Dina föräldrar kan svara via Family Link.</translation>
 <translation id="2037445849770872822">Kontroll har konfigurerats för det här Google-kontot. Välj Fortsätt om du vill konfigurera fler föräldrakontroller.
 
 Annars loggar du ut nu så att ändringarna i det här kontot reflekteras på enheten.
@@ -1215,6 +1220,7 @@
 <translation id="2098805196501063469">Kontrollera återstående lösenord</translation>
 <translation id="2099686503067610784">Vill du ta bort servercertifikatet <ph name="CERTIFICATE_NAME" />?</translation>
 <translation id="2100273922101894616">Automatisk inloggning</translation>
+<translation id="2100986609271491802">Den här enheten har för närvarande inte stöd för Steam på Chromebook</translation>
 <translation id="2101225219012730419">Version:</translation>
 <translation id="2102396546234652240">Tillåt inte att webbplatser använder mikrofonen</translation>
 <translation id="2102495993840063010">Android-appar</translation>
@@ -1250,6 +1256,7 @@
 <translation id="2135787500304447609">&amp;Återuppta</translation>
 <translation id="2136372518715274136">Skriv in det nya lösenordet</translation>
 <translation id="2136476978468204130">Den angivna lösenfrasen är felaktig</translation>
+<translation id="2137891579555018930">Väntar på behörighet …</translation>
 <translation id="2138398485845393913">Anslutning till <ph name="DEVICE_NAME" /> pågår</translation>
 <translation id="2139919072249842737">Konfigureringsknapp</translation>
 <translation id="2140788884185208305">Batterinivå</translation>
@@ -1513,6 +1520,9 @@
 <translation id="2350133097354918058">Inläst igen</translation>
 <translation id="2350182423316644347">Startar appen ...</translation>
 <translation id="235028206512346451">Om du går iväg från skärmen låses den automatiskt. Skärmen är upplåst längre om du befinner dig framför den. Om du inte har en låsskärm hamnar enheten i viloläge i stället för att låsas.</translation>
+<translation id="2350866610930767288"><ph name="BEGIN_PARAGRAPH1" />Om du har fått anvisningar om att ange en id-kod för återförsäljarbutiker under installationen av demoläget anger du den till höger*.  I annat fall kan du lämna fältet tomt och fortsätta.<ph name="END_PARAGRAPH1" />
+    <ph name="BEGIN_PARAGRAPH2" />Du kan installera demoläget utan kod, men det är viktigt att du anger koden om den krävs för butiken.<ph name="END_PARAGRAPH2" />
+    <ph name="BEGIN_PARAGRAPH3" />*Obs! Google använder dessa koder för att identifiera vilken version av demoläget som ska skickas till enheten och för att mäta användningen av demoläget.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="2352495879228166246">{NUM_ITEMS,plural, =1{1 vara}other{{NUM_ITEMS} varor}}</translation>
 <translation id="2352662711729498748">&lt; 1 MB</translation>
 <translation id="2352810082280059586">Anteckningar på låsskärmen sparas automatiskt i <ph name="LOCK_SCREEN_APP_NAME" />. Den senaste anteckningen visas på låsskärmen.</translation>
@@ -1963,6 +1973,7 @@
 <translation id="2776560192867872731">Ändra enhetsnamn på <ph name="DEVICE_NAME" /></translation>
 <translation id="2777251078198759550">Ta bort denna behållare</translation>
 <translation id="2778471504622896352">Lägg till fjärrappar i ChromeOS-startaren</translation>
+<translation id="2781120507965857989">Aktivera synkronisering om du vill få dina bokmärken, lösenord, din historik med mera på den här enheten samt på alla enheter du synkroniserar. Google kan anpassa Sök och andra Google-tjänster utifrån historiken.</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2782104745158847185">Ett fel uppstod när Linux-programmet skulle installeras</translation>
 <translation id="2783298271312924866">Nedladdad</translation>
@@ -1983,6 +1994,7 @@
 <translation id="2792697226874849938">Begränsning</translation>
 <translation id="2794233252405721443">Webbplatsen har blockerats</translation>
 <translation id="2794522004398861033">Anslut till wifi eller Ethernet om du vill konfigurera eSIM</translation>
+<translation id="2795074478966352573">Det finns inget stöd för konton som hanteras via Family Link än</translation>
 <translation id="2795716239552913152">Åtkomst till enhetens plats brukar kunna behövas för relevanta funktioner eller information som lokala nyheter eller affärer i närheten</translation>
 <translation id="2796424461616874739">Autentiseringen avbröts vid anslutning till <ph name="DEVICE_NAME" />.</translation>
 <translation id="2796740370559399562">Fortsätt att tillåta cookies</translation>
@@ -2168,6 +2180,7 @@
 <translation id="2949289451367477459">Använd plats. Tillåt att appar och tjänster med platsbehörighet använder enhetens plats. Google kan med jämna mellanrum samla in data som används anonymt i syfte att förbättra platsangivelsens exakthet och platsbaserade tjänster.<ph name="BEGIN_LINK1" />Läs mer<ph name="END_LINK1" /></translation>
 <translation id="2950666755714083615">Jag vill registrera mig</translation>
 <translation id="2953019166882260872">Anslut telefonen med en kabel</translation>
+<translation id="2953218713108551165">Aviseringar är inte tillåtna för <ph name="SITE" />. Du blir tillfrågad igen nästa gång du besöker webbplatsen.</translation>
 <translation id="2956070239128776395">Ett avsnitt har kapslats in i en grupp: <ph name="ERROR_LINE" /></translation>
 <translation id="2958721676848865875">Varning vid paketering av tillägg</translation>
 <translation id="2959127025785722291">Något gick fel. Det gick inte att slutföra genomsökningen. Försök igen.</translation>
@@ -2876,6 +2889,7 @@
 <translation id="3665919494326051362">Den aktuella versionen är <ph name="CURRENT_VERSION" /></translation>
 <translation id="3670113805793654926">Enheter från alla leverantörer</translation>
 <translation id="3670229581627177274">Aktivera Bluetooth</translation>
+<translation id="3672663996348587094">Klicka för att tillåta <ph name="EXTENSIONS_REQUESTING_ACCESS" /> på <ph name="ORIGIN" />:</translation>
 <translation id="3672681487849735243">Ett fabriksfel har upptäckts</translation>
 <translation id="3673097791729989571">Inloggningen tillhandahålls av <ph name="SAML_DOMAIN" /></translation>
 <translation id="3673622964532248901">Du får inte casta till den här enheten.</translation>
@@ -3391,6 +3405,7 @@
 <translation id="4132183752438206707">Hitta appar i Google Play Butik</translation>
 <translation id="4132364317545104286">Byt namn på eSIM-profilen</translation>
 <translation id="4133076602192971179">Öppna appen och ändra lösenordet</translation>
+<translation id="4134818201340504801">Det finns inte tillräckligt med lagringsutrymme för att slutföra konfigurationen. Frigör lagringsutrymme och försök igen</translation>
 <translation id="4135746311382563554">Ytterligare användarvillkor för Google Chrome och Chrome OS</translation>
 <translation id="4136203100490971508">Nattljuset släcks automatiskt vid soluppgången</translation>
 <translation id="41365691917097717">Om du fortsätter aktiveras felsökning med ADB för Android-appar som du skapar och testar. Observera att den här åtgärden tillåter att Android-appar som inte har verifierats av Google installeras. Du måste återställa enheten till standardinställningarna för att inaktivera detta.</translation>
@@ -3627,6 +3642,7 @@
 <translation id="4378556263712303865">Enhetsrekvirering</translation>
 <translation id="4379281552162875326">Vill du avinstallera <ph name="APP_NAME" />?</translation>
 <translation id="4380648069038809855">Helskärmsläget aktiverades</translation>
+<translation id="4383048856908088702">När den här fliken var inaktiv frigjorde minnessparläget <ph name="MEMORY_VALUE" /> minne för andra uppgifter. Du kan ändra det här när som helst i <ph name="SETTINGS_LINK" />.</translation>
 <translation id="4384312707950789900">Lägg till i prioriterade nätverk</translation>
 <translation id="4384652540891215547">Aktivera tillägget</translation>
 <translation id="4384886290276344300">Ändra inställningarna för tangentbordet</translation>
@@ -3704,6 +3720,7 @@
 <translation id="4451479197788154834">Ditt lösenord har sparats på den här enheten och i Google-kontot</translation>
 <translation id="4451757071857432900">Blockeras på webbplatser där påträngande eller vilseledande annonser visas (rekommenderas)</translation>
 <translation id="4453946976636652378">Sök på <ph name="SEARCH_ENGINE_NAME" /> eller skriv en webbadress</translation>
+<translation id="4458535500699390320">När den här fliken var inaktiv frigjorde minnessparläget minne för andra uppgifter. Du kan när som helst ändra detta i inställningarna.</translation>
 <translation id="4459169140545916303">Aktiv för <ph name="DEVICE_LAST_ACTIVATED_TIME" /> dagar sedan</translation>
 <translation id="4460014764210899310">Ta bort gruppering</translation>
 <translation id="4462159676511157176">Anpassade namnservrar</translation>
@@ -3876,6 +3893,7 @@
 <translation id="4613271546271159013">Vilken sida som visas när du öppnar en ny flik har ändrats av ett tillägg.</translation>
 <translation id="4615586811063744755">inga cookies har valts</translation>
 <translation id="461661862154729886">Energikälla</translation>
+<translation id="461676224702246336">Vid klick, för den här webbplatsen</translation>
 <translation id="4617001782309103936">För kort</translation>
 <translation id="4617019240346358451">Läs in sidan igen för att använda <ph name="EXTENSION_NAME" /></translation>
 <translation id="4617270414136722281">Tilläggsalternativ</translation>
@@ -3998,6 +4016,7 @@
 <translation id="4728558894243024398">Plattform</translation>
 <translation id="4728570203948182358"><ph name="BEGIN_LINK" />Administratören<ph name="END_LINK" /> har inaktiverat sökningar efter skadlig programvara</translation>
 <translation id="4730492586225682674">Senaste anteckningen med e-penna på låsskärmen</translation>
+<translation id="4730888769809690665">Aviseringar har tillåtits för <ph name="SITE" /></translation>
 <translation id="473140019006744096">Det gick inte att slutföra uppdateringen eftersom utrymmet inte räcker till. Frigör <ph name="NECESSARY_SPACE" /> på enheten och försök igen.</translation>
 <translation id="4733161265940833579"><ph name="BATTERY_PERCENTAGE" /> % (vänster)</translation>
 <translation id="4733793249294335256">Plats</translation>
@@ -4128,6 +4147,7 @@
 <translation id="4858913220355269194">Fotboll</translation>
 <translation id="4862642413395066333">Signera OCSP-svar</translation>
 <translation id="4863769717153320198">Ser ut som <ph name="WIDTH" /> × <ph name="HEIGHT" /> (standard)</translation>
+<translation id="486459320933704969">En förälder eller vårdnadshavare måste godkänna att du besöker webbplatsen</translation>
 <translation id="4864805589453749318">Välj den förälder som ger sitt tillstånd att lägga till ett skolkonto.</translation>
 <translation id="486635084936119914">Öppna vissa filtyper automatiskt efter att de har laddats ned</translation>
 <translation id="4868281708609571334">Lär Google Assistent att känna igen rösten för <ph name="SUPERVISED_USER_NAME" /></translation>
@@ -4300,6 +4320,7 @@
 <translation id="5032430150487044192">Det gick inte att skapa QR-koden</translation>
 <translation id="5033137252639132982">Får inte använda rörelsesensorer</translation>
 <translation id="5033266061063942743">Geometriska former</translation>
+<translation id="5034000993065629381">Kontakta administratören</translation>
 <translation id="5037676449506322593">Markera alla</translation>
 <translation id="5038818366306248416">Du har tidigare valt att inte ge något tillägg behörighet på <ph name="ORIGIN" /></translation>
 <translation id="5039696241953571917">Visa och hantera sparade lösenord i Google-kontot</translation>
@@ -4430,6 +4451,7 @@
 <translation id="5161251470972801814">USB-enheter från <ph name="VENDOR_NAME" /></translation>
 <translation id="5162905305237671850"><ph name="DEVICE_TYPE" /> har blockerats</translation>
 <translation id="5163910114647549394">Fliken flyttades till slutet av flikhuvudet</translation>
+<translation id="5164530241085602114">Aviseringar är inte tillåtna för <ph name="SITE" /></translation>
 <translation id="516747639689914043">HTTP (Hypertext Transfer Protocol)</translation>
 <translation id="5170568018924773124">Visa i mapp</translation>
 <translation id="5171045022955879922">Sök eller ange webbadress</translation>
@@ -4532,6 +4554,7 @@
 <translation id="5269977353971873915">Det gick inte att skriva ut dokumentet</translation>
 <translation id="5273806377963980154">Redigera webbadress</translation>
 <translation id="5275084684151588738">Egna ordlistor</translation>
+<translation id="5275100789567222478">Aktivera endast när batterinivån är på <ph name="PERCENT" /> % eller lägre</translation>
 <translation id="5275338516105640560">Knapp för sparad flikgrupp</translation>
 <translation id="5275352920323889391">Hund</translation>
 <translation id="527605719918376753">Stäng av ljud från flik</translation>
@@ -4550,6 +4573,7 @@
 <translation id="5285635972691565180">Skärm <ph name="DISPLAY_ID" /></translation>
 <translation id="5286194356314741248">Skannar</translation>
 <translation id="5287425679749926365">Dina konton</translation>
+<translation id="5288106344236929384">Fler åtgärder, nyckelalternativ för <ph name="USERNAME" /> på <ph name="DOMAIN" /></translation>
 <translation id="5288678174502918605">Ö&amp;ppna en stängd flik igen</translation>
 <translation id="52895863590846877">Sidan är inte på <ph name="LANGUAGE" /></translation>
 <translation id="52912272896845572">Den privata nyckelfilen är ogiltig.</translation>
@@ -4745,6 +4769,7 @@
 <translation id="5473099001878321374">Genom att fortsätta godkänner du att enheten kan ladda ned och installera uppdateringar och appar automatiskt från Google, ditt barns operatör och enhetstillverkaren, eventuellt genom att använda mobildata. Det kan hända att några av apparna erbjuder köp i appen.</translation>
 <translation id="5473156705047072749">{NUM_CHARACTERS,plural, =1{Pinkoden måste innehålla minst ett tecken}other{Pinkoden måste innehålla minst # tecken}}</translation>
 <translation id="5474859849784484111"><ph name="MANAGER" /> kräver att du ansluter till wifi och laddar ned en uppdatering nu. Du kan även ladda ned via en anslutning med datapriser (avgifter kan tillkomma).</translation>
+<translation id="5476016146231427848">Starta om enheten om du vill använda Steam på Chromebook</translation>
 <translation id="5481273127572794904">Får inte ladda ned flera filer automatiskt</translation>
 <translation id="5481941284378890518">Lägg till skrivare i närheten</translation>
 <translation id="5483785310822538350">Återkalla åtkomst till enheten och filer</translation>
@@ -4964,6 +4989,7 @@
 <translation id="5683806393796685434">Ange aktiveringskoden</translation>
 <translation id="5684181005476681636">Information om wifi</translation>
 <translation id="5684661240348539843">Tillgångsidentifierare</translation>
+<translation id="5684969244627829799">Logga in på ett användarkonto och försök igen</translation>
 <translation id="5687326903064479980">Tidszon</translation>
 <translation id="5687935527303996204">Kontrollera att enheten är ansluten och stäng inte av den. Installationen kan ta upp till 20 minuter. Enheten stängs av automatiskt när installationen är klar.</translation>
 <translation id="5689516760719285838">Plats</translation>
@@ -5090,6 +5116,7 @@
 <translation id="5805697420284793859">Fönsterhanterare</translation>
 <translation id="5806447147478173900">Totalt lagringsutrymme som används av visade webbplatser: <ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">0° (standard)</translation>
+<translation id="5810603387504252966">#borealis-enabled måste vara aktiverade i chrome://flags</translation>
 <translation id="5810809306422959727">Det här kontot uppfyller inte kraven för föräldrakontroller</translation>
 <translation id="5811614940486072060">Den här filen brukar inte laddas ned. Den kan vara skadlig</translation>
 <translation id="5812674658566766066">Utöka alla</translation>
@@ -5169,6 +5196,7 @@
 <translation id="5882449899683447569">Något gick fel. Dina lösenord importerades inte</translation>
 <translation id="5882919346125742463">Kända nätverk</translation>
 <translation id="5883356647197510494">Behörighet till <ph name="PERMISSION_1" /> och <ph name="PERMISSION_2" /> har blockerats automatiskt</translation>
+<translation id="5884447826201752041">Anpassa för varje tillägg</translation>
 <translation id="5884474295213649357">Den här fliken är ansluten till en USB-enhet.</translation>
 <translation id="5885314688092915589">Din organisation hanterar den här profilen</translation>
 <translation id="5886009770935151472">Finger 1</translation>
@@ -5608,6 +5636,7 @@
 <translation id="6301300352769835063">Låt Google använda data om din maskinvara för att förbättra <ph name="DEVICE_OS" />. Om du nekar skickas denna data ändå till Google i syfte att fastställa lämpliga uppdateringar, men den varken lagras eller används på andra sätt. Läs mer på g.co/flex/HWDataCollection.</translation>
 <translation id="630292539633944562">Personuppgiftsförslag</translation>
 <translation id="6305607932814307878">Global policy:</translation>
+<translation id="6305909198255586420">Installera med din primära profil</translation>
 <translation id="6307990684951724544">Systemet är upptaget</translation>
 <translation id="6308493641021088955">Inloggning tillhandahålls av <ph name="EXTENSION_NAME" /></translation>
 <translation id="6308937455967653460">Spara l&amp;änk som...</translation>
@@ -5929,6 +5958,7 @@
 <translation id="6608166463665411119">Återställ eSIM-kortet</translation>
 <translation id="6609478180749378879">Inloggningsuppgifterna sparas på enheten när du har avslutat inkognitoläget. Du kan logga in på den här webbplatsen med enheten igen senare.</translation>
 <translation id="6610002944194042868">Översättningsalternativ</translation>
+<translation id="6611907964265870728">Kontrollera att enheten är ansluten till internet</translation>
 <translation id="6611972847767394631">Här finns dina flikar</translation>
 <translation id="6613668613087513143">Det gick inte att slutföra uppdateringen eftersom utrymmet inte räcker till. Frigör <ph name="NECESSARY_SPACE" /> på enheten och försök igen i webbläsaren Chrome.</translation>
 <translation id="6615455863669487791">Visa mig</translation>
@@ -6317,6 +6347,7 @@
 <translation id="697508444536771064">Stäng av Linux</translation>
 <translation id="6975361011348772931">Har begärt att få läsa och ändra</translation>
 <translation id="6978121630131642226">Sökmotorer</translation>
+<translation id="6979041727349121225">Strömsparläge</translation>
 <translation id="6979044105893951891">Starta och avsluta hanterade gästsessioner</translation>
 <translation id="6979158407327259162">Google Drive</translation>
 <translation id="6979440798594660689">Ljud av (standard)</translation>
@@ -6369,6 +6400,7 @@
 <translation id="7014174261166285193">Installationen misslyckades.</translation>
 <translation id="7014480873681694324">Ta bort markering</translation>
 <translation id="7014741021609395734">Zoomnivå</translation>
+<translation id="7015088858756332848">Det gick inte att starta Steam på Chromebook. Försök igen</translation>
 <translation id="7017004637493394352">Säg ”Ok Google” igen</translation>
 <translation id="7017219178341817193">Lägg till ny sida</translation>
 <translation id="7017354871202642555">Det går inte att ange läge när fönstret har skapats.</translation>
@@ -6745,6 +6777,7 @@
 <translation id="7409854300652085600">Bokmärkena har importerats.</translation>
 <translation id="7410344089573941623">Fråga om <ph name="HOST" /> vill använda kameran och mikrofonen</translation>
 <translation id="7410852728357935715">Casta till en enhet</translation>
+<translation id="7411614333737930931">Starta om enheten och försök igen</translation>
 <translation id="741204030948306876">Ja</translation>
 <translation id="7412226954991670867">GPU-minne</translation>
 <translation id="7414464185801331860">18x</translation>
@@ -6975,6 +7008,7 @@
 <translation id="7635048370253485243">Fäst av administratören</translation>
 <translation id="7636919061354591437">Installera på den här enheten</translation>
 <translation id="7637253234491814483">Tryck på fingeravtryckssensorn högst upp till höger på tangentbordet bredvid av/på-knappen. Fingeravtrycksdata lagras på ett säkert sätt och lämnar aldrig din <ph name="DEVICE_TYPE" />.</translation>
+<translation id="7637272932128132922">När den här fliken var inaktiv frigjorde minnessparläget minne för andra uppgifter. Du kan ändra det här när som helst i <ph name="SETTINGS_LINK" />.</translation>
 <translation id="7637593984496473097">Det finns inte tillräckligt med utrymme på hårddisken</translation>
 <translation id="7639914187072011620">Det gick inte att hämta SAML-omdirigeringsadressen från servern</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> loggar automatiskt in på godkända webbplatser med de lösenord du sparat.</translation>
@@ -7091,6 +7125,7 @@
 <translation id="7728668285692163452">Kanalbytet tillämpas senare</translation>
 <translation id="7730449930968088409">Ta en bild av innehållet på skärmen</translation>
 <translation id="7730683939467795481">Den här sidan ändrades av tillägget <ph name="EXTENSION_NAME" /></translation>
+<translation id="7735165285389721951">En installationsprocess för Steam körs redan. Vänta tills den är klar innan du försöker igen</translation>
 <translation id="7737115349420013392">Parkopplas med <ph name="DEVICE_NAME" /> …</translation>
 <translation id="7737846262459425222">Du kan när som helst ändra detta i Inställningar &gt; Google Assistent &gt; Innehållet på skärmen.</translation>
 <translation id="7737948071472253612">Får inte använda kameran</translation>
@@ -7389,6 +7424,7 @@
 Nyckelfil: <ph name="KEY_FILE" />
 
 Spara nyckelfilen på ett säkert ställe. Den behövs om du ska skapa nya versioner av ditt tillägg.</translation>
+<translation id="8001100670809322641">Vänta några minuter och försök igen.</translation>
 <translation id="8002274832045662704">Avancerad skrivarkonfiguration</translation>
 <translation id="8002670234429879764"><ph name="PRINTER_NAME" /> är inte längre tillgänglig</translation>
 <translation id="8004092996156083991">Vi meddelar dig om dina lösenord är utsatta.</translation>
@@ -7398,6 +7434,7 @@
 <translation id="8008356846765065031">Internetanslutningen har avbrutits. Kontrollera internetanslutningen.</translation>
 <translation id="8009225694047762179">Hantera Lösenord</translation>
 <translation id="8011372169388649948"><ph name="BOOKMARK_TITLE" /> har flyttats.</translation>
+<translation id="8011875486979733097">Det går inte att installera Steam</translation>
 <translation id="8012647001091218357">Vi kunde inte nå dina föräldrar just nu. Försök igen.</translation>
 <translation id="8013993649590906847">Om en bild inte har någon användbar beskrivning görs ett försök att beskriva den åt dig i Chrome. Bilderna skickas till Google så att beskrivningen kan genereras.</translation>
 <translation id="8014154204619229810">Uppdateringsprogrammet körs. Uppdatera sidan om en minut och kolla igen.</translation>
@@ -7488,6 +7525,7 @@
 <translation id="808894953321890993">Ändra lösenord</translation>
 <translation id="8090234456044969073">Läsa en lista över de webbplatser du besöker oftast</translation>
 <translation id="8090513782447872344">Du kan när som helst komma tillbaka och ta en ny titt</translation>
+<translation id="809312780580957751">Det gick inte att installera Steam på enheten</translation>
 <translation id="8093359998839330381"><ph name="PLUGIN_NAME" /> svarar inte</translation>
 <translation id="8095105960962832018"><ph name="BEGIN_PARAGRAPH1" />Säkerhetskopiera till Google Drive. Återställ enkelt data eller byt enhet när som helst. Säkerhetskopian innehåller appdata.<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />Säkerhetskopiorna krypteras med hjälp av Google-kontots lösenord och laddas upp på Google.<ph name="END_PARAGRAPH2" />
@@ -7583,6 +7621,7 @@
 <translation id="8177318697334260664">{NUM_TABS,plural, =1{Flytta fliken till ett nytt fönster}other{Flytta flikarna till ett nytt fönster}}</translation>
 <translation id="8179188928355984576">Används inte i Android-appar</translation>
 <translation id="8179976553408161302">Enter</translation>
+<translation id="8180785270975217276">Energisparläget har aktiverats</translation>
 <translation id="8180786512391440389"><ph name="EXTENSION" /> kan läsa och ta bort bilder, video och ljudfiler på de markerade platserna.</translation>
 <translation id="8181215761849004992">Det gick inte att ansluta till domänen. Kontrollera att du använder ett konto med behörighet att lägga till enheter.</translation>
 <translation id="8182105986296479640">Appen svarar inte.</translation>
@@ -7705,6 +7744,7 @@
 <translation id="828642162569365647">Det här lösenordet eller den här pinkoden skyddar din data på denna <ph name="DEVICE_TYPE" /> och all information som du får åtkomst till från telefonen. Du måste låsa upp varje gång din <ph name="DEVICE_TYPE" /> väcks från viloläge.</translation>
 <translation id="8287902281644548111">Sök efter API-anrop/webbadress</translation>
 <translation id="8288032458496410887">Avinstallera <ph name="APP" /> …</translation>
+<translation id="8288539437195337464">Kontrollera att enheten är uppdaterad och försök igen</translation>
 <translation id="8289128870594824098">Diskstorlek</translation>
 <translation id="8289509909262565712">Välkommen till <ph name="DEVICE_OS" /></translation>
 <translation id="8293206222192510085">Lägg till bokmärke</translation>
@@ -7999,6 +8039,7 @@
 <translation id="8599864823732014237">Vill du hoppa över företagsregistrering?</translation>
 <translation id="8601206103050338563">TLS WWW-klientautentisering</translation>
 <translation id="8601611099293226919">Sök på skärmen med Google Lens</translation>
+<translation id="8602674530529411098">Appar (beta)</translation>
 <translation id="8602851771975208551">Ett annat program i datorn har lagt till en app som kan ändra hur Chrome fungerar.</translation>
 <translation id="8605428685123651449">SQLite-minne</translation>
 <translation id="8608618451198398104">Lägg till en Kerberos-biljett</translation>
@@ -8260,6 +8301,7 @@
 <translation id="8838601485495657486">Ogenomskinlig</translation>
 <translation id="8838770651474809439">Hamburgare</translation>
 <translation id="8838778928843281408">Hantera telefoner</translation>
+<translation id="883924185304953854">Bildsökning</translation>
 <translation id="8841843049738266382">Läs och ändra användarna på godkännandelistan</translation>
 <translation id="8842594465773264717">Radera fingeravtrycket</translation>
 <translation id="8845001906332463065">Få hjälp</translation>
@@ -8682,10 +8724,12 @@
 <translation id="939598580284253335">Ange lösenfras</translation>
 <translation id="939736085109172342">Ny mapp</translation>
 <translation id="942532530371314860"><ph name="APP_NAME" /> delar ljud och en flik från Chrome.</translation>
+<translation id="944799160843436808">Det gick inte att konfigurera Steam på Chromebook</translation>
 <translation id="945522503751344254">Skicka feedback</translation>
 <translation id="947329552760389097">&amp;Inspektera element</translation>
 <translation id="947526284350604411">Ditt svar</translation>
 <translation id="947667444780368238"><ph name="ORIGIN" /> kan inte öppna filer i den här mappen eftersom den innehåller systemfiler</translation>
+<translation id="949314938206378263">Du har bett att få besöka den här webbplatsen. Din förälder kan svara via Family Link.</translation>
 <translation id="950307215746360464">Konfigureringsguide</translation>
 <translation id="951991426597076286">Godkänn inte</translation>
 <translation id="952471655966876828">Enheten ansluts automatiskt när den är aktiverad eller används</translation>
@@ -8706,6 +8750,7 @@
 <translation id="968000525894980488">Aktivera Google Play-tjänster.</translation>
 <translation id="968037381421390582">Kli&amp;stra in och sök efter <ph name="SEARCH_TERMS" /></translation>
 <translation id="969096075394517431">Ändra språk</translation>
+<translation id="969574218206797926">Minnessparläget frigör minne från inaktiva flikar så att det kan användas av aktiva flikar och andra appar</translation>
 <translation id="970047733946999531">{NUM_TABS,plural, =1{1 flik}other{# flikar}}</translation>
 <translation id="971510864672937292">Vill du rensa webbplatsdata och behörigheter för <ph name="SITE_NAME" /> och alla underordnade webbplatser?</translation>
 <translation id="971774202801778802">Bokmärkets webbadress</translation>
diff --git a/chrome/app/resources/generated_resources_sw.xtb b/chrome/app/resources/generated_resources_sw.xtb
index 03316844..a56020d 100644
--- a/chrome/app/resources/generated_resources_sw.xtb
+++ b/chrome/app/resources/generated_resources_sw.xtb
@@ -1126,6 +1126,7 @@
 <translation id="2034346955588403444">Ongeza mtandao mwingine wa WiFi</translation>
 <translation id="2035211704574173780">Kichujio cha kijivu</translation>
 <translation id="203574396658008164">Washa kipengele cha kuandika vidokezo kutoka kwenye skrini iliyofungwa</translation>
+<translation id="2036514476578229158">Uliomba kutembelea tovuti hii. Mzazi wako anaweza kujibu kwenye Family Link.</translation>
 <translation id="2037445849770872822">Mipangilio ya usimamizi ya Akaunti hii ya Google imewekwa. Ili uweke vidhibiti zaidi vya wazazi, bofya 'Endelea'.
 
 Vinginevyo, ondoka katika akaunti sasa ili mabadiliko uliyofanya katika akauntii hii yaonekane kwenye kifaa hiki.
@@ -1246,6 +1247,7 @@
 <translation id="2135787500304447609">&amp;Endelea</translation>
 <translation id="2136372518715274136">Weka nenosiri jipya</translation>
 <translation id="2136476978468204130">Kauli ya siri uliyoweka si sahihi</translation>
+<translation id="2137891579555018930">Inasubiri ruhusa...</translation>
 <translation id="2138398485845393913">Muunganisho kwenye "<ph name="DEVICE_NAME" />" bado unaendelea</translation>
 <translation id="2139919072249842737">Kitufe cha kuweka mipangilio</translation>
 <translation id="2140788884185208305">Muda wa Kudumu wa Betri</translation>
@@ -4123,6 +4125,7 @@
 <translation id="4858913220355269194">Fritz</translation>
 <translation id="4862642413395066333">Kuweka Sahihi Majibu ya OCSP</translation>
 <translation id="4863769717153320198">Inaonekana kama <ph name="WIDTH" /> x <ph name="HEIGHT" /> (Chaguomsingi)</translation>
+<translation id="486459320933704969">Ni lazima mzazi au mlezi akuruhusu kutembelea tovuti hii</translation>
 <translation id="4864805589453749318">Chagua mzazi anayetoa ruhusa ya kuweka akaunti ya shuleni.</translation>
 <translation id="486635084936119914">Fungua baadhi ya aina za faili kiotomatiki baada ya kupakua</translation>
 <translation id="4868281708609571334">Ifundishe programu ya Mratibu wa Google kutambua sauti ya <ph name="SUPERVISED_USER_NAME" /></translation>
@@ -8683,6 +8686,7 @@
 <translation id="947329552760389097">&amp;Kagua Vipengee</translation>
 <translation id="947526284350604411">Jibu lako</translation>
 <translation id="947667444780368238"><ph name="ORIGIN" /> haiwezi kufungua faili kwenye folda hii kwa sababu ina faili za mfumo</translation>
+<translation id="949314938206378263">Uliomba kutembelea tovuti hii. Mzazi wako anaweza kujibu kwenye Family Link.</translation>
 <translation id="950307215746360464">Mwongozo wa mipangilio</translation>
 <translation id="951991426597076286">Kataa</translation>
 <translation id="952471655966876828">Kifaa kitaunganishwa kiotomatiki kinapokuwa kimewashwa na wakati kinatumiwa</translation>
diff --git a/chrome/app/resources/generated_resources_ta.xtb b/chrome/app/resources/generated_resources_ta.xtb
index 822066a..4afbd95 100644
--- a/chrome/app/resources/generated_resources_ta.xtb
+++ b/chrome/app/resources/generated_resources_ta.xtb
@@ -8261,6 +8261,7 @@
 <translation id="8838601485495657486">ஒளிபுகாத்தன்மை</translation>
 <translation id="8838770651474809439">ஹம்பர்கர்</translation>
 <translation id="8838778928843281408">ஃபோன்களை நிர்வகியுங்கள்</translation>
+<translation id="883924185304953854">படத்தின்படி தேடும்</translation>
 <translation id="8841843049738266382">ஏற்புப் பட்டியலில் உள்ள பயனர் கணக்குகளைப் படிக்கலாம் மாற்றலாம்</translation>
 <translation id="8842594465773264717">இந்தக் கைரேகையை நீக்கு</translation>
 <translation id="8845001906332463065">உதவி பெறுக</translation>
diff --git a/chrome/app/resources/generated_resources_te.xtb b/chrome/app/resources/generated_resources_te.xtb
index f119f45..05f6dea 100644
--- a/chrome/app/resources/generated_resources_te.xtb
+++ b/chrome/app/resources/generated_resources_te.xtb
@@ -1133,6 +1133,7 @@
 <translation id="2034346955588403444">మరో WiFi నెట్‌వర్క్‌ని జోడించండి</translation>
 <translation id="2035211704574173780">గ్రేస్కేల్</translation>
 <translation id="203574396658008164">లాక్ స్క్రీన్ నుండి గ‌మ‌నిక‌ సేకరణను ప్రారంభించండి</translation>
+<translation id="2036514476578229158">మీరు ఈ సైట్‌ను సందర్శించడానికి అనుమతి కోరారు. మీ తల్లిదండ్రులు Family Linkలో రిప్లయి ఇవ్వవచ్చు.</translation>
 <translation id="2037445849770872822">ఈ Google ఖాతాకు పర్యవేక్షణ సెటప్ చేయబడింది. మరిన్ని తల్లిదండ్రుల నియంత్రణలు సెటప్ చేయడానికి, 'కొనసాగించు'ను ఎంచుకోండి.
 
 లేదంటే, ఈ ఖాతాకు చేసిన మార్పులు ఈ పరికరంలో ప్రతిబింబించడానికి ఇప్పుడు సైన్ అవుట్ చేయండి.
@@ -1254,6 +1255,7 @@
 <translation id="2135787500304447609">&amp;మళ్ళీ ప్రారంభించు</translation>
 <translation id="2136372518715274136">కొత్త పాస్‌వర్డ్‌ను నమోదు చేయండి</translation>
 <translation id="2136476978468204130">మీరు నమోదు చేసిన రహస్య పదబంధం తప్పు</translation>
+<translation id="2137891579555018930">అనుమతి కోసం వేచి ఉంది...</translation>
 <translation id="2138398485845393913">"<ph name="DEVICE_NAME" />"కి కనెక్షన్ ఇప్పటికీ ప్రోగ్రెస్‌లో ఉంది</translation>
 <translation id="2139919072249842737">సెటప్ బటన్</translation>
 <translation id="2140788884185208305">బ్యాటరీ సామర్థ్యం</translation>
@@ -1820,7 +1822,7 @@
 <translation id="2643698698624765890">విండో మెనూలోని ఎక్స్‌టెన్షన్‌లను క్లిక్ చేయడం ద్వారా మీ ఎక్స్‌టెన్షన్‌లను నిర్వహించండి.</translation>
 <translation id="2645047101481282803">మీ పరికరం <ph name="PROFILE_NAME" /> ద్వారా మేనేజ్ చేయబడుతుంది</translation>
 <translation id="2645435784669275700">ChromeOS</translation>
-<translation id="2645515095874728277">ఈ ఖాతా కోసం ఈ పరికరంలో ఇప్పటికే మీ Google పాస్‌వర్డ్ మేనేజర్‌లో పాస్‌వర్డ్ స్టోర్ చేయబడింది</translation>
+<translation id="2645515095874728277">ఈ ఖాతా కోసం ఈ పరికరంలో ఇప్పటికే మీ Google Password Managerలో పాస్‌వర్డ్ స్టోర్ చేయబడింది</translation>
 <translation id="2649045351178520408">Base64-ఎన్‌కోడ్ చేసిన ASCII, సర్టిఫికెట్ చైన్</translation>
 <translation id="2652129567809778422">పాస్‌వర్డ్‌ను ఎంచుకోండి</translation>
 <translation id="2653033005692233957">శోధన విఫలమైంది</translation>
@@ -4127,7 +4129,7 @@
 <translation id="4842976633412754305">ప్రామాణీకరించని మూలాల నుండి స్క్రిప్ట్‌లను లోడ్ చేయడానికి, ఈ పేజీ ప్రయత్నిస్తోంది.</translation>
 <translation id="4844333629810439236">ఇతర కీబోర్డ్‌లు</translation>
 <translation id="484462545196658690">ఆటో</translation>
-<translation id="4844633725025837809">అదనపు భద్రత కోసం, పాస్‌వర్డ్‌లు Google పాస్‌వర్డ్ మేనేజర్‌లో సేవ్ కావడానికి ముందు, వాటిని మీ పరికరంలో ఎన్‌క్రిప్ట్ చేయండి</translation>
+<translation id="4844633725025837809">అదనపు భద్రత కోసం, పాస్‌వర్డ్‌లు Google Password Managerలో సేవ్ కావడానికి ముందు, వాటిని మీ పరికరంలో ఎన్‌క్రిప్ట్ చేయండి</translation>
 <translation id="4846628405149428620">ఈ సైట్ మార్పులను ఎక్కడ సేవ్ చేయాలో ఎంచుకోండి</translation>
 <translation id="4846680374085650406">మీరు ఈ సెట్టింగ్ కోసం నిర్వాహకుడి సిఫార్సును అనుసరిస్తున్నారు.</translation>
 <translation id="4848191975108266266">Google Assistant "Ok Google"</translation>
@@ -4144,6 +4146,7 @@
 <translation id="4858913220355269194">ఫ్రిట్జ్</translation>
 <translation id="4862642413395066333">OCSP ప్రతిస్పందనలను సైన్ చేస్తోంది</translation>
 <translation id="4863769717153320198"><ph name="WIDTH" /> x <ph name="HEIGHT" /> ఉన్నట్టుంది (డిఫాల్ట్)</translation>
+<translation id="486459320933704969">ఈ వెబ్‌సైట్‌ను సందర్శించడానికి, తల్లి/తండ్రి లేదా గార్డియన్ తప్పనిసరిగా మిమ్మల్ని అనుమతించాలి</translation>
 <translation id="4864805589453749318">పాఠశాల ఖాతాను జోడించడానికి అనుమతిని ఇస్తున్న తల్లి/తండ్రిని ఎంచుకోండి.</translation>
 <translation id="486635084936119914">డౌన్‌లోడ్ చేసిన తర్వాత ఆటోమేటిక్‌గా నిర్దిష్ట ఫైల్ రకాలను తెరువు</translation>
 <translation id="4868281708609571334"><ph name="SUPERVISED_USER_NAME" /> వాయిస్‌ను గుర్తించగలిగేలా Google Assistantకు శిక్షణ ఇవ్వండి</translation>
@@ -4460,7 +4463,7 @@
 <translation id="5177549709747445269">మీరు మొబైల్ డేటాను వినియోగిస్తున్నారు</translation>
 <translation id="5178667623289523808">మునుపటిని కనుగొను</translation>
 <translation id="5181140330217080051">డౌన్‌లోడ్ చేస్తోంది</translation>
-<translation id="5181172023548002891"><ph name="ACCOUNT" /> కోసం Google పాస్‌వర్డ్ మేనేజర్‌కు</translation>
+<translation id="5181172023548002891"><ph name="ACCOUNT" /> కోసం Google Password Managerకు</translation>
 <translation id="5184063094292164363">&amp;JavaScript కన్సోల్</translation>
 <translation id="5184209580557088469">ఈ వినియోగదారు పేరుతో ఇప్పటికే ఒక టిక్కెట్ ఉంది</translation>
 <translation id="5184662919967270437">మీ పరికరాన్ని అప్‌డేట్ చేస్తోంది</translation>
@@ -5851,7 +5854,7 @@
         <ph name="FILE_INFO" />
         <ph name="EVENT_NAME" /></translation>
 <translation id="6519689855001245063">అర్హతను చెక్ చేస్తోంది</translation>
-<translation id="6520087076882753524">మీరు Google పాస్‌వర్డ్ మేనేజర్‌లో సేవ్ చేసిన పాస్‌వర్డ్‌లను చూడవచ్చు, మేనేజ్ చేయవచ్చు</translation>
+<translation id="6520087076882753524">మీరు Google Password Managerలో సేవ్ చేసిన పాస్‌వర్డ్‌లను చూడవచ్చు, మేనేజ్ చేయవచ్చు</translation>
 <translation id="6520876759015997832"><ph name="LIST_SIZE" /> సెర్చ్ ఫలితం <ph name="LIST_POSITION" />: <ph name="SEARCH_RESULT_TEXT" />. విభాగానికి నావిగేట్ చేయడానికి ఎంటర్ నొక్కండి.</translation>
 <translation id="6521214596282732365">సైట్‌లు సాధారణంగా మీ ఫాంట్‌లను ఉపయోగించుకుంటాయి, తద్వారా ఆన్‌లైన్ డిజైన్, గ్రాఫిక్స్ టూల్స్‌తో మీరు అధిక క్వాలిటీ గల కంటెంట్‌ను క్రియేట్ చేయవచ్చు</translation>
 <translation id="6523303810310758032">మీరు బ్రౌజింగ్ హిస్టరీ — మొత్తాన్ని లేదా ఒక నిర్దిష్ట సైట్‌కు సంబంధించిన బ్రౌజింగ్ హిస్టరీని తొలగించినప్పుడు — అనుబంధించి ఉన్న అంచనా సమాచారాన్ని కూడా మీరు తొలగిస్తారు. <ph name="BEGIN_LINK" />మీ బ్రౌజింగ్ హిస్టరీని<ph name="END_LINK" /> చూడండి</translation>
@@ -6267,7 +6270,7 @@
 <translation id="6903907808598579934">సింక్‌ను ఆన్ చేయి</translation>
 <translation id="6904344821472985372">ఫైల్ యాక్సెస్‌ను ఉపసంహరించు</translation>
 <translation id="6904655473976120856">నిష్క్రమించడానికి యాప్ బటన్ నొక్కండి</translation>
-<translation id="6906095067383230422">{NUM_MINS,plural, =1{మీ పాస్‌వర్డ్‌లను సురక్షితంగా ఉంచడానికి, Google పాస్‌వర్డ్ మేనేజర్ 1 నిమిషం పాటు యాక్టివ్‌గా లేకపోయిన తర్వాత లాక్ చేయబడుతుంది}other{మీ పాస్‌వర్డ్‌లను సురక్షితంగా ఉంచడానికి, Google పాస్‌వర్డ్ మేనేజర్ {NUM_MINS} నిమిషాల పాటు యాక్టివ్‌గా లేకపోయిన తర్వాత లాక్ చేయబడుతుంది}}</translation>
+<translation id="6906095067383230422">{NUM_MINS,plural, =1{మీ పాస్‌వర్డ్‌లను సురక్షితంగా ఉంచడానికి, Google Password Manager 1 నిమిషం పాటు యాక్టివ్‌గా లేకపోయిన తర్వాత లాక్ చేయబడుతుంది}other{మీ పాస్‌వర్డ్‌లను సురక్షితంగా ఉంచడానికి, Google Password Manager {NUM_MINS} నిమిషాల పాటు యాక్టివ్‌గా లేకపోయిన తర్వాత లాక్ చేయబడుతుంది}}</translation>
 <translation id="6909422577741440844">ఈ పరికరం నుండి అందుకోవాలని అనుకుంటున్నారా?</translation>
 <translation id="6910211073230771657">తొలగించబడింది</translation>
 <translation id="691106080621596509">దీని వలన <ph name="SITE_GROUP_NAME" /> స్టోర్ చేసిన మొత్తం డేటా, కుక్కీలు, దీని పరిధిలో ఉన్న సైట్‌లు, ఇన్‌స్టాల్ చేయబడిన యాప్‌లు, మొత్తం అన్నీ తొలగిపోతాయి</translation>
@@ -7048,7 +7051,7 @@
 <translation id="766635563210446220">పాస్‌వర్డ్‌లను దిగుమతి చేయడం సాధ్యపడలేదు. <ph name="FILENAME" />ను చెక్ చేసి, అది సరిగ్గా ఫార్మాట్ అయి ఉందని నిర్ధారించుకోండి. <ph name="BEGIN_LINK" />మరింత తెలుసుకోండి<ph name="END_LINK" /></translation>
 <translation id="7666531788977935712">కొనసాగించండి బటన్ ఎనేబుల్ చేయబడింది</translation>
 <translation id="7668002322287525834">{NUM_WEEKS,plural, =1{<ph name="DEVICE_TYPE" />ని {NUM_WEEKS} వారంలోపు తిరిగివ్వండి}other{<ph name="DEVICE_TYPE" />ని {NUM_WEEKS} వారాలలోపు తిరిగివ్వండి}}</translation>
-<translation id="7668423670802040666"><ph name="ACCOUNT" /> కోసం Google పాస్‌వర్డ్ మేనేజర్‌లో</translation>
+<translation id="7668423670802040666"><ph name="ACCOUNT" /> కోసం Google Password Managerలో</translation>
 <translation id="7668648754769651616">యాక్సెసిబిలిటీ ఫీచర్‌లు మీ పరికరాన్ని సులభంగా ఉపయోగించేలా చేస్తాయి. క్విక్ సెట్టింగ్‌లను యాక్సెస్ చేయడానికి, మీ స్క్రీన్ దిగువున ఉన్న సమయాన్ని ఎంచుకోండి.</translation>
 <translation id="7669825497510425694">{NUM_ATTEMPTS,plural, =1{పిన్ తప్పు. మీకు 1 ప్రయత్నం మిగిలి ఉంది.}other{పిన్ తప్పు. మీకు # ప్రయత్నాలు మిగిలి ఉన్నాయి.}}</translation>
 <translation id="7670434942695515800">అత్యుత్తమ పనితీరు కోసం, తాజా వెర్షన్‌కు అప్‌గ్రేడ్ అవ్వండి. అప్‌గ్రేడ్ పూర్తి కాని సందర్భంలో, మీ ఫైల్స్‌ను బ్యాకప్ చేయడం అనేది సిఫార్సు చేయబడుతుంది. అప్‌గ్రేడ్ ప్రారంభమైయ్యాక, Linux షట్ డౌన్ అవుతుంది. కొనసాగించడానికి ముందు, తెరిచి ఉన్న ఫైల్స్‌ను సేవ్ చేయండి. <ph name="LINK_START" />మరింత తెలుసుకోండి<ph name="LINK_END" /></translation>
@@ -7459,7 +7462,7 @@
 <translation id="8041089156583427627">ప్రతిస్పందనను పంపండి</translation>
 <translation id="8041267120753677077">మీ ఫోన్ యాప్‌లను స్ట్రీమ్ చేయండి</translation>
 <translation id="8042142357103597104">వచన అపారదర్శకత</translation>
-<translation id="8042331986490021244">మీ పాస్‌వర్డ్‌లు Google పాస్‌వర్డ్ మేనేజర్‌లో సేవ్ కావడానికి ముందు, మీ పరికరంలో ఎన్‌క్రిప్ట్ చేయబడ్డాయి</translation>
+<translation id="8042331986490021244">మీ పాస్‌వర్డ్‌లు Google Password Managerలో సేవ్ కావడానికి ముందు, మీ పరికరంలో ఎన్‌క్రిప్ట్ చేయబడ్డాయి</translation>
 <translation id="8044262338717486897"><ph name="LINUX_APP_NAME" /> స్పందించడం లేదు.</translation>
 <translation id="8044899503464538266">నెమ్మదిగా</translation>
 <translation id="8045253504249021590">Google డ్యాష్‌బోర్డ్ ద్వారా సింక్‌ ఆపివేయబడింది.</translation>
@@ -8721,6 +8724,7 @@
 <translation id="947329552760389097">&amp;మూలకాలను పర్యవేక్షించు</translation>
 <translation id="947526284350604411">మీ సమాధానం</translation>
 <translation id="947667444780368238">సిస్టమ్ ఫైళ్లు ఉన్నందువలన <ph name="ORIGIN" />కు ఈ ఫోల్డర్‌లోని ఫైళ్లను తెరవడం సాధ్యపడలేదు</translation>
+<translation id="949314938206378263">మీరు ఈ సైట్‌ను సందర్శించడానికి అనుమతి కోరారు. మీ తల్లి/తండ్రి Family Linkలో రిప్లయి ఇవ్వవచ్చు.</translation>
 <translation id="950307215746360464">గైడ్‌ను సెటప్ చేయండి</translation>
 <translation id="951991426597076286">తిరస్కరించు</translation>
 <translation id="952471655966876828">పరికరం ఆన్ చేయబడినప్పుడు, ఉపయోగించబడుతున్నప్పుడు అది ఆటోమేటిక్‌గా కనెక్ట్ అవుతుంది</translation>
diff --git a/chrome/app/resources/generated_resources_th.xtb b/chrome/app/resources/generated_resources_th.xtb
index 67bdeac..d512ead 100644
--- a/chrome/app/resources/generated_resources_th.xtb
+++ b/chrome/app/resources/generated_resources_th.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="th">
 <translation id="1001033507375626788">เครือข่ายนี้แชร์กับคุณอยู่</translation>
+<translation id="1002085272681738789">แท็บกลับมาทำงานอีกครั้ง</translation>
 <translation id="1003088604756913841">เปิดลิงก์ในหน้าต่าง <ph name="APP" /> ใหม่</translation>
 <translation id="100323615638474026">อุปกรณ์ USB (<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />)</translation>
 <translation id="1004218526896219317">สิทธิ์เข้าถึงเว็บไซต์</translation>
@@ -321,6 +322,7 @@
 <translation id="1296911687402551044">ปักหมุดแท็บที่เลือก</translation>
 <translation id="1297175357211070620">ปลายทาง</translation>
 <translation id="129770436432446029">ส่งความคิดเห็นสำหรับ <ph name="EXPERIMENT_NAME" /></translation>
+<translation id="130097046531636712">โหมดนี้จะยืดอายุการใช้งานแบตเตอรี่โดยจํากัดกิจกรรมในเบื้องหลังและเอฟเฟกต์ภาพ เช่น การเลื่อนอย่างราบรื่น</translation>
 <translation id="1301135395320604080"><ph name="ORIGIN" /> แก้ไขไฟล์ต่อไปนี้ได้</translation>
 <translation id="1302227299132585524">อนุญาตให้เรียกใช้ JavaScript จากกิจกรรมใน Apple</translation>
 <translation id="1303101771013849280">ไฟล์ HTML บุ๊กมาร์ก</translation>
@@ -379,6 +381,7 @@
 <translation id="1361655923249334273">ไม่ได้ใช้</translation>
 <translation id="1362865166188278099">ปัญหาด้านกลไก ตรวจสอบเครื่องพิมพ์</translation>
 <translation id="1363585519747660921">เครื่องพิมพ์ USB ต้องการการกำหนดค่า</translation>
+<translation id="136378536198524553">โหมดประหยัดพลังงานเปิดอยู่</translation>
 <translation id="1368603372088757436">ไม่รองรับ Linux ใน <ph name="DEVICE_TYPE" /> <ph name="LINK_BEGIN" />ดูข้อมูลเพิ่มเติม<ph name="LINK_END" /></translation>
 <translation id="1372841398847029212">ซิงค์กับบัญชีของคุณ</translation>
 <translation id="1373176046406139583">ระดับการเข้าถึงของอุปกรณ์จะควบคุมผู้ที่แชร์กับคุณได้ขณะที่ปลดล็อกหน้าจออยู่ <ph name="LINK_BEGIN" />ดูข้อมูลเพิ่มเติม<ph name="LINK_END" /></translation>
@@ -648,6 +651,7 @@
 <translation id="1610272688494140697">การตั้งค่าแอป</translation>
 <translation id="161042844686301425">สีฟ้า</translation>
 <translation id="1611432201750675208">อุปกรณ์ล็อกอยู่</translation>
+<translation id="1611776894942218234">อุปกรณ์ต้องอยู่ในเวอร์ชันเบต้า</translation>
 <translation id="1612019740169791082">คอนเทนเนอร์ไม่ได้กำหนดค่าไว้ให้รองรับการปรับขนาดดิสก์ หากต้องการปรับพื้นที่ว่างที่สำรองไว้สำหรับ Linux ให้สำรองข้อมูลแล้วคืนค่าในคอนเทนเนอร์ใหม่</translation>
 <translation id="1613019471223620622">แสดงรหัสผ่านของ <ph name="USERNAME" /> ใน <ph name="DOMAIN" /></translation>
 <translation id="1613149688105334014">แอป Chrome เวอร์ชันเก่าจะเปิดใช้งานไม่ได้แล้วหลังจากเดือนธันวาคม 2022 คุณตรวจสอบได้ว่ามีเวอร์ชันใหม่พร้อมให้บริการหรือไม่ โดยทำดังนี้</translation>
@@ -1203,6 +1207,7 @@
 <translation id="2098805196501063469">ตรวจสอบรหัสผ่านที่เหลือ</translation>
 <translation id="2099686503067610784">ลบใบรับรองของเซิร์ฟเวอร์ "<ph name="CERTIFICATE_NAME" />" หรือไม่</translation>
 <translation id="2100273922101894616">ลงชื่อเข้าใช้อัตโนมัติ</translation>
+<translation id="2100986609271491802">อุปกรณ์นี้ยังไม่รองรับ Steam ใน Chromebook</translation>
 <translation id="2101225219012730419">รุ่น:</translation>
 <translation id="2102396546234652240">ไม่อนุญาตให้เว็บไซต์ใช้ไมโครโฟนของคุณ</translation>
 <translation id="2102495993840063010">แอป Android</translation>
@@ -1498,6 +1503,9 @@
 <translation id="2350133097354918058">โหลดซ้ำแล้ว</translation>
 <translation id="2350182423316644347">กำลังเริ่มต้นแอปพลิเคชัน...</translation>
 <translation id="235028206512346451">หากคุณไม่ได้อยู่ด้านหน้าอุปกรณ์ หน้าจอจะล็อกโดยอัตโนมัติ หน้าจอจะเปิดค้างไว้นานขึ้นเมื่อคุณอยู่ด้านหน้าอุปกรณ์ หากคุณไม่ได้ใช้หน้าจอล็อก อุปกรณ์จะเข้าสู่โหมดสลีปแทนการล็อก</translation>
+<translation id="2350866610930767288"><ph name="BEGIN_PARAGRAPH1" />หากระบบแสดงวิธีป้อนรหัสร้านค้าปลีกในระหว่างการติดตั้งโหมดสาธิต โปรดป้อนรหัสทางด้านขวา*  หากไม่ ให้ปล่อยช่องนี้ว่างไว้และดําเนินการต่อ<ph name="END_PARAGRAPH1" />
+    <ph name="BEGIN_PARAGRAPH2" />คุณจะยังติดตั้งโหมดสาธิตโดยไม่ใช้รหัสได้ แต่จำเป็นต้องป้อนรหัสดังกล่าวหากเกี่ยวข้องกับร้านค้า<ph name="END_PARAGRAPH2" />
+    <ph name="BEGIN_PARAGRAPH3" />*หมายเหตุ: Google ใช้รหัสเหล่านี้เพื่อระบุเวอร์ชันของโหมดสาธิตที่อุปกรณ์ควรได้รับและวัดการใช้งานโหมดสาธิต<ph name="END_PARAGRAPH3" /></translation>
 <translation id="2352495879228166246">{NUM_ITEMS,plural, =1{1 รายการ}other{{NUM_ITEMS} รายการ}}</translation>
 <translation id="2352662711729498748">&lt; 1 MB</translation>
 <translation id="2352810082280059586">บันทึกบนหน้าจอล็อกจะบันทึกไว้โดยอัตโนมัติไปยัง <ph name="LOCK_SCREEN_APP_NAME" /> บันทึกล่าสุดของคุณจะยังคงอยู่บนหน้าจอล็อก</translation>
@@ -1948,6 +1956,7 @@
 <translation id="2776560192867872731">เปลี่ยนชื่ออุปกรณ์สำหรับ <ph name="DEVICE_NAME" /></translation>
 <translation id="2777251078198759550">ลบคอนเทนเนอร์นี้</translation>
 <translation id="2778471504622896352">เพิ่มแอประยะไกลลงใน Launcher ของ Chrome OS</translation>
+<translation id="2781120507965857989">เปิดการซิงค์เพื่อดูบุ๊กมาร์ก รหัสผ่าน ประวัติการเข้าชม และอื่นๆ ในอุปกรณ์นี้รวมถึงทุกที่ที่ซิงค์อยู่ Google อาจใช้ประวัติการเข้าชมเพื่อปรับเปลี่ยน Search และบริการอื่นๆ ของ Google ให้เหมาะกับคุณ</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2782104745158847185">เกิดข้อผิดพลาดในการติดตั้งแอปพลิเคชัน Linux</translation>
 <translation id="2783298271312924866">ดาวน์โหลดแล้ว</translation>
@@ -1968,6 +1977,7 @@
 <translation id="2792697226874849938">รูปภาพการจำกัด</translation>
 <translation id="2794233252405721443">เว็บไซต์ที่ถูกบล็อก</translation>
 <translation id="2794522004398861033">เชื่อมต่อ Wi-Fi หรืออีเทอร์เน็ตเพื่อตั้งค่า eSIM</translation>
+<translation id="2795074478966352573">ยังไม่รองรับบัญชีที่จัดการโดย Family Link</translation>
 <translation id="2795716239552913152">โดยปกติแล้วเว็บไซต์จะใช้ตำแหน่งของคุณเพื่อดำเนินการตามฟีเจอร์หรือข้อมูลที่เกี่ยวข้อง เช่น ข่าวท้องถิ่นหรือร้านค้าในบริเวณใกล้เคียง</translation>
 <translation id="2796424461616874739">การตรวจสอบสิทธิ์หมดเวลาขณะเชื่อมต่อกับ "<ph name="DEVICE_NAME" />"</translation>
 <translation id="2796740370559399562">อนุญาตการใช้คุกกี้ต่อไป</translation>
@@ -2153,6 +2163,7 @@
 <translation id="2949289451367477459">ใช้ตำแหน่ง อนุญาตแอปและบริการที่มีสิทธิ์เข้าถึงตำแหน่งให้ใช้ตำแหน่งของอุปกรณ์นี้ Google อาจรวบรวมข้อมูลตำแหน่งเป็นระยะและใช้ข้อมูลนี้ในแบบไม่ระบุตัวตนเพื่อปรับปรุงความแม่นยำของตำแหน่งและบริการที่อ้างอิงตำแหน่ง <ph name="BEGIN_LINK1" />ดูข้อมูลเพิ่มเติม<ph name="END_LINK1" /></translation>
 <translation id="2950666755714083615">ให้ฉันลงชื่อสมัครใช้</translation>
 <translation id="2953019166882260872">เชื่อมต่อโทรศัพท์โดยใช้สาย</translation>
+<translation id="2953218713108551165">ไม่อนุญาตให้ <ph name="SITE" /> ส่งการแจ้งเตือน ระบบจะถามคุณอีกครั้งเมื่อเข้าชมครั้งถัดไป</translation>
 <translation id="2956070239128776395">ส่วนที่ฝังอยู่ในกลุ่ม: <ph name="ERROR_LINE" /></translation>
 <translation id="2958721676848865875">คำเตือนเกี่ยวกับการรวมแพ็กเกจส่วนขยาย</translation>
 <translation id="2959127025785722291">เกิดข้อผิดพลาด สแกนไม่สำเร็จ โปรดลองอีกครั้ง</translation>
@@ -2384,6 +2395,7 @@
 <translation id="3188465121994729530">ค่าเฉลี่ยเคลื่อนที่</translation>
 <translation id="3189187154924005138">เคอร์เซอร์ขนาดใหญ่</translation>
 <translation id="3190558889382726167">บันทึกรหัสผ่านแล้ว</translation>
+<translation id="3192589799003798742">กำลังตั้งค่า Steam บน Chromebook</translation>
 <translation id="3192947282887913208">ไฟล์เสียง</translation>
 <translation id="3193695589337931419">ยูทิลิตีสัญญาณระบบ</translation>
 <translation id="3194786596445804250">แสดงรายละเอียดเกี่ยวกับการบล็อกคุกกี้ของบุคคลที่สาม</translation>
@@ -2523,6 +2535,7 @@
 <translation id="3341699307020049241">PIN ไม่ถูกต้อง คุณป้อน PIN ได้อีก <ph name="RETRIES" /> ครั้ง</translation>
 <translation id="3341703758641437857">อนุญาตให้เข้าถึงไฟล์ URL</translation>
 <translation id="3342361181740736773">"<ph name="TRIGGERING_EXTENSION_NAME" />" ต้องการนำส่วนขยายนี้ออก</translation>
+<translation id="3343977377045378693">กำลังดำเนินการตั้งค่า</translation>
 <translation id="3345135638360864351">ไม่สามารถส่งคำขอเข้าถึงไซต์นี้ไปยัง <ph name="NAME" /> ได้ โปรดลองอีกครั้ง</translation>
 <translation id="3345634917232014253">การตรวจสอบความปลอดภัยเริ่มขึ้นเมื่อสักครู่แล้ว</translation>
 <translation id="3345886924813989455">ไม่พบเบราว์เซอร์ที่สนับสนุน</translation>
@@ -2534,6 +2547,7 @@
 <translation id="3354768182971982851">แอป Chrome เวอร์ชันเก่าจะเปิดใช้งานในอุปกรณ์ Mac ไม่ได้แล้วหลังเดือนธันวาคม 2022 คุณตรวจสอบได้ว่ามีเวอร์ชันใหม่พร้อมให้บริการหรือไม่</translation>
 <translation id="3354972872297836698">จับคู่กับอุปกรณ์ <ph name="DEVICE_NAME" /> ไม่ได้ เลือกอุปกรณ์เพื่อลองอีกครั้ง</translation>
 <translation id="3355936511340229503">ข้อผิดพลาดในการเชื่อมต่อ</translation>
+<translation id="3356036636691722598">ขอให้สนุกกับการเล่นเกมบน Chromebook</translation>
 <translation id="3356469410714175391">(บัตรเสมือนเปิดใช้งานอยู่)</translation>
 <translation id="3356580349448036450">เสร็จสมบูรณ์</translation>
 <translation id="3359256513598016054">ข้อจำกัดนโยบายใบรับรอง</translation>
@@ -2861,6 +2875,7 @@
 <translation id="3665919494326051362">เวอร์ชันปัจจุบันคือ <ph name="CURRENT_VERSION" /></translation>
 <translation id="3670113805793654926">อุปกรณ์จากผู้ให้บริการรายใดก็ได้</translation>
 <translation id="3670229581627177274">เปิดบลูทูธ</translation>
+<translation id="3672663996348587094">คลิกเพื่ออนุญาต "<ph name="EXTENSIONS_REQUESTING_ACCESS" />" ใน <ph name="ORIGIN" />:</translation>
 <translation id="3672681487849735243">ตรวจพบข้อผิดพลาดจากโรงงาน</translation>
 <translation id="3673097791729989571">การลงชื่อเข้าใช้ที่โฮสต์โดย <ph name="SAML_DOMAIN" /></translation>
 <translation id="3673622964532248901">คุณไม่ได้รับอนุญาตให้แคสต์ไปยังอุปกรณ์นี้</translation>
@@ -3376,6 +3391,7 @@
 <translation id="4132183752438206707">ค้นหาและดาวน์โหลดแอปบน Google Play Store</translation>
 <translation id="4132364317545104286">เปลี่ยนชื่อโปรไฟล์ eSIM</translation>
 <translation id="4133076602192971179">เปิดแอปเพื่อเปลี่ยนรหัสผ่าน</translation>
+<translation id="4134818201340504801">มีพื้นที่เก็บข้อมูลไม่เพียงพอที่จะตั้งค่าให้เสร็จสมบูรณ์ โปรดเพิ่มพื้นที่ว่างแล้วลองอีกครั้ง</translation>
 <translation id="4135746311382563554">ข้อกำหนดในการให้บริการเพิ่มเติมของ Google Chrome และ Chrome OS</translation>
 <translation id="4136203100490971508">แสงตอนกลางคืนจะปิดโดยอัตโนมัติเมื่อพระอาทิตย์ขึ้น</translation>
 <translation id="41365691917097717">การดำเนินการต่อจะเป็นการเปิดใช้การแก้ไขข้อบกพร่อง ADB ของการสร้างและทดสอบแอป Android โปรดทราบว่าการดำเนินการนี้จะอนุญาตให้ติดตั้งแอป Android ที่ยังไม่ได้รับการยืนยันจาก Google และต้องรีเซ็ตเป็นค่าเริ่มต้นเพื่อปิดใช้</translation>
@@ -3446,6 +3462,7 @@
 <translation id="4211904048067111541">หยุดใช้กับแอป Android</translation>
 <translation id="42126664696688958">ส่งออก</translation>
 <translation id="42137655013211669">เซิร์ฟเวอร์ได้ห้ามการเข้าถึงทรัพยากรนี้</translation>
+<translation id="4214192212360095377">ปิดเลย</translation>
 <translation id="4217558091331485702">สแกนก่อนเปิด</translation>
 <translation id="4217571870635786043">การพิมพ์ตามคำบอก</translation>
 <translation id="4218081191298393750">คลิกไอคอนลำโพงเพื่อปิดเสียงแท็บนี้</translation>
@@ -3612,6 +3629,7 @@
 <translation id="4378556263712303865">ข้อกำหนดของอุปกรณ์</translation>
 <translation id="4379281552162875326">ถอนการติดตั้ง "<ph name="APP_NAME" />" ใช่ไหม</translation>
 <translation id="4380648069038809855">เข้าสู่โหมดเต็มหน้าจอ</translation>
+<translation id="4383048856908088702">ขณะที่แท็บนี้ไม่มีการใช้งาน โหมดประหยัดหน่วยความจําจะช่วยประหยัดหน่วยความจํา <ph name="MEMORY_VALUE" /> สําหรับงานอื่นๆ คุณเปลี่ยนตัวเลือกนี้ได้ทุกเมื่อใน<ph name="SETTINGS_LINK" /></translation>
 <translation id="4384312707950789900">เพิ่มไปยังเครือข่ายที่ต้องการ</translation>
 <translation id="4384652540891215547">เปิดใช้งานส่วนขยาย</translation>
 <translation id="4384886290276344300">เปลี่ยนการตั้งค่าแป้นพิมพ์</translation>
@@ -3689,6 +3707,7 @@
 <translation id="4451479197788154834">บันทึกรหัสผ่านในอุปกรณ์นี้และในบัญชี Google ของคุณแล้ว</translation>
 <translation id="4451757071857432900">บล็อกในเว็บไซต์ที่แสดงโฆษณาที่แทรกหรือทำให้เข้าใจผิด (แนะนำ)</translation>
 <translation id="4453946976636652378">ค้นหาใน <ph name="SEARCH_ENGINE_NAME" /> หรือพิมพ์ URL</translation>
+<translation id="4458535500699390320">ขณะที่แท็บนี้ไม่มีการใช้งาน โหมดประหยัดหน่วยความจำจะช่วยประหยัดหน่วยความจําสำหรับงานอื่นๆ คุณเปลี่ยนการตั้งค่านี้ได้ทุกเมื่อในการตั้งค่า</translation>
 <translation id="4459169140545916303">ใช้งานเมื่อ <ph name="DEVICE_LAST_ACTIVATED_TIME" /> วันที่ผ่านมา</translation>
 <translation id="4460014764210899310">ยกเลิกการจัดกลุ่ม</translation>
 <translation id="4462159676511157176">เซิร์ฟเวอร์ชื่อที่กำหนดเอง</translation>
@@ -3860,6 +3879,7 @@
 <translation id="4613271546271159013">ส่วนขยายได้เปลี่ยนแปลงหน้าที่แสดงขึ้นเมื่อคุณเปิดแท็บใหม่</translation>
 <translation id="4615586811063744755">ไม่ได้เลือกคุกกี้</translation>
 <translation id="461661862154729886">แหล่งพลังงาน</translation>
+<translation id="461676224702246336">เมื่อคลิกสําหรับเว็บไซต์นี้</translation>
 <translation id="4617001782309103936">สั้นเกินไป</translation>
 <translation id="4617019240346358451">โหลดหน้าเว็บซ้ำเพื่อใช้ "<ph name="EXTENSION_NAME" />"</translation>
 <translation id="4617270414136722281">ตัวเลือกส่วนขยาย</translation>
@@ -3982,6 +4002,7 @@
 <translation id="4728558894243024398">แพลตฟอร์ม</translation>
 <translation id="4728570203948182358"><ph name="BEGIN_LINK" />ผู้ดูแลระบบของคุณ<ph name="END_LINK" />ปิดฟีเจอร์การตรวจสอบซอฟต์แวร์ที่เป็นอันตราย</translation>
 <translation id="4730492586225682674">บันทึกชิ้นล่าสุดที่ใช้สไตลัสในหน้าจอล็อก</translation>
+<translation id="4730888769809690665">อนุญาตให้ <ph name="SITE" /> แสดงการแจ้งเตือน</translation>
 <translation id="473140019006744096">อุปกรณ์นี้มีพื้นที่ว่างไม่เพียงพอที่จะทำการอัปเดตนี้ให้เสร็จสมบูรณ์ ล้างข้อมูล <ph name="NECESSARY_SPACE" /> ในอุปกรณ์แล้วลองอีกครั้ง</translation>
 <translation id="4733161265940833579"><ph name="BATTERY_PERCENTAGE" />% (ซ้าย)</translation>
 <translation id="4733793249294335256">ตำแหน่ง</translation>
@@ -4284,6 +4305,7 @@
 <translation id="5032430150487044192">สร้างคิวอาร์โค้ดไม่ได้</translation>
 <translation id="5033137252639132982">ไม่ได้รับอนุญาตให้ใช้เซ็นเซอร์ตรวจจับการเคลื่อนไหว</translation>
 <translation id="5033266061063942743">รูปทรงเรขาคณิต</translation>
+<translation id="5034000993065629381">โปรดติดต่อผู้ดูแลระบบ</translation>
 <translation id="5037676449506322593">เลือก&amp;ทั้งหมด</translation>
 <translation id="5038818366306248416">คุณเคยเลือกที่จะไม่อนุญาตให้ใช้งานส่วนขยายใดๆ บน <ph name="ORIGIN" /></translation>
 <translation id="5039696241953571917">ดูและจัดการรหัสผ่านที่บันทึกไว้ในบัญชี Google</translation>
@@ -4341,6 +4363,7 @@
 <translation id="5089763948477033443">แฮนเดิลปรับขนาดแผงด้านข้าง</translation>
 <translation id="5090637338841444533">ไม่ได้รับอนุญาตให้ติดตามตำแหน่งของกล้อง</translation>
 <translation id="5093569275467863761">ซับเฟรมแคชย้อนหลังในโหมดไม่ระบุตัวตน: <ph name="BACK_FORWARD_CACHE_INCOGNITO_PAGE_URL" /></translation>
+<translation id="5094042205195563542">กำลังเริ่มการติดตั้ง</translation>
 <translation id="5094176498302660097">คุณสามารถเปิดและแก้ไขไฟล์ที่ระบบรองรับด้วยแอปนี้ได้จากแอป Files หรือจากแอปอื่นๆ หากต้องการควบคุมว่ามีไฟล์ใดบ้างที่เปิดในแอปนี้ได้โดยค่าเริ่มต้น ให้<ph name="BEGIN_LINK" />ดูวิธีตั้งค่าแอปเริ่มต้นในอุปกรณ์<ph name="END_LINK" /></translation>
 <translation id="5094721898978802975">สื่อสารกับแอปพลิเคชันการประสานงานที่มาพร้อมเครื่อง</translation>
 <translation id="5097002363526479830">ไม่สามารถเชื่อมต่อเครือข่าย "<ph name="NAME" />": <ph name="DETAILS" /></translation>
@@ -4414,6 +4437,7 @@
 <translation id="5161251470972801814">อุปกรณ์ USB จาก <ph name="VENDOR_NAME" /></translation>
 <translation id="5162905305237671850"><ph name="DEVICE_TYPE" /> ถูกบล็อก</translation>
 <translation id="5163910114647549394">แท็บย้ายไปอยู่ท้ายสุดของแถบแท็บ</translation>
+<translation id="5164530241085602114">ไม่อนุญาตให้ <ph name="SITE" /> ส่งการแจ้งเตือน</translation>
 <translation id="516747639689914043">Hypertext Transport Protocol (HTTP)</translation>
 <translation id="5170568018924773124">แสดงในโฟลเดอร์</translation>
 <translation id="5171045022955879922">ค้นหาหรือพิมพ์ URL</translation>
@@ -4516,6 +4540,7 @@
 <translation id="5269977353971873915">การพิมพ์ล้มเหลว</translation>
 <translation id="5273806377963980154">แก้ไข URL ของเว็บไซต์</translation>
 <translation id="5275084684151588738">พจนานุกรมผู้ใช้</translation>
+<translation id="5275100789567222478">เปิดเฉพาะเมื่อแบตเตอรี่เหลือไม่ถึง <ph name="PERCENT" />%</translation>
 <translation id="5275338516105640560">ปุ่มกลุ่มแท็บที่บันทึกไว้</translation>
 <translation id="5275352920323889391">สุนัข</translation>
 <translation id="527605719918376753">ปิดเสียงแท็บ</translation>
@@ -4534,6 +4559,7 @@
 <translation id="5285635972691565180">จอแสดงผล <ph name="DISPLAY_ID" /></translation>
 <translation id="5286194356314741248">กำลังสแกน</translation>
 <translation id="5287425679749926365">บัญชีของคุณ</translation>
+<translation id="5288106344236929384">การดําเนินการเพิ่มเติม ตัวเลือกพาสคีย์สําหรับ <ph name="USERNAME" /> ใน <ph name="DOMAIN" /></translation>
 <translation id="5288678174502918605">เ&amp;ปิดแท็บที่ถูกปิดขึ้นใหม่</translation>
 <translation id="52895863590846877">หน้านี้ไม่ใช่ภาษา<ph name="LANGUAGE" /></translation>
 <translation id="52912272896845572">ไฟล์กุญแจส่วนตัวไม่ถูกต้อง</translation>
@@ -4729,6 +4755,7 @@
 <translation id="5473099001878321374">การดำเนินการต่อเป็นการยอมรับว่าอุปกรณ์นี้อาจใช้อินเทอร์เน็ตมือถือดาวน์โหลดและติดตั้งการอัปเดตและแอปจาก Google, ผู้ให้บริการของบุตรหลาน และผู้ผลิตอุปกรณ์โดยอัตโนมัติด้วย บางแอปเหล่านี้อาจมีการซื้อในแอป</translation>
 <translation id="5473156705047072749">{NUM_CHARACTERS,plural, =1{PIN ต้องมีอักขระอย่างน้อย 1 ตัว}other{PIN ต้องมีอักขระอย่างน้อย # ตัว}}</translation>
 <translation id="5474859849784484111"><ph name="MANAGER" /> ต้องการให้คุณเชื่อมต่อ Wi-Fi ตอนนี้และดาวน์โหลดอัปเดต หรือดาวน์โหลดจากการเชื่อมต่อที่มีการวัดปริมาณอินเทอร์เน็ต (อาจมีค่าบริการ)</translation>
+<translation id="5476016146231427848">โปรดรีสตาร์ทอุปกรณ์เพื่อใช้ Steam ใน Chromebook</translation>
 <translation id="5481273127572794904">ไม่ได้รับอนุญาตให้ดาวน์โหลดไฟล์หลายไฟล์โดยอัตโนมัติ</translation>
 <translation id="5481941284378890518">เพิ่มเครื่องพิมพ์ที่อยู่ใกล้เคียง</translation>
 <translation id="5483785310822538350">เพิกถอนสิทธิ์การเข้าถึงไฟล์และอุปกรณ์</translation>
@@ -4946,6 +4973,7 @@
 <translation id="5683806393796685434">โปรดป้อนรหัสเปิดใช้งาน</translation>
 <translation id="5684181005476681636">รายละเอียด Wi-Fi</translation>
 <translation id="5684661240348539843">รหัสสินทรัพย์</translation>
+<translation id="5684969244627829799">โปรดลงชื่อเข้าใช้บัญชีผู้ใช้แล้วลองอีกครั้ง</translation>
 <translation id="5687326903064479980">เขตเวลา</translation>
 <translation id="5687935527303996204">ตรวจสอบว่าอุปกรณ์เสียบปลั๊กอยู่ และอย่าปิดเครื่อง การติดตั้งอาจใช้เวลานานถึง 20 นาที อุปกรณ์จะปิดโดยอัตโนมัติเมื่อติดตั้งเสร็จสิ้นแล้ว</translation>
 <translation id="5689516760719285838">ตำแหน่ง</translation>
@@ -5072,6 +5100,7 @@
 <translation id="5805697420284793859">ตัวจัดการหน้าต่าง</translation>
 <translation id="5806447147478173900">พื้นที่เก็บข้อมูลทั้งหมดที่เว็บไซต์ต่างๆ ที่แสดงอยู่ใช้: <ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">0° (ค่าเริ่มต้น)</translation>
+<translation id="5810603387504252966">ต้องเปิดใช้ #borealis-enabled ใน chrome://flags</translation>
 <translation id="5810809306422959727">บัญชีนี้ไม่มีสิทธิ์ใช้การควบคุมโดยผู้ปกครอง</translation>
 <translation id="5811614940486072060">ไฟล์นี้ไม่ได้มีการดาวน์โหลดกันอย่างแพร่หลายและอาจเป็นอันตราย</translation>
 <translation id="5812674658566766066">ขยายทั้งหมด</translation>
@@ -5151,6 +5180,7 @@
 <translation id="5882449899683447569">มีบางอย่างผิดพลาด ระบบจึงนำเข้ารหัสผ่านไม่ได้</translation>
 <translation id="5882919346125742463">เครือข่ายที่รู้จัก</translation>
 <translation id="5883356647197510494">บล็อก<ph name="PERMISSION_1" />และ<ph name="PERMISSION_2" />โดยอัตโนมัติ</translation>
+<translation id="5884447826201752041">ปรับแต่งส่วนขยายแต่ละรายการ</translation>
 <translation id="5884474295213649357">แท็บนี้เชื่อมต่อกับอุปกรณ์ USB อยู่</translation>
 <translation id="5885314688092915589">องค์กรของคุณจะจัดการโปรไฟล์นี้</translation>
 <translation id="5886009770935151472">นิ้วที่ 1</translation>
@@ -5589,6 +5619,7 @@
 <translation id="6301300352769835063">ให้ Google ใช้ข้อมูลฮาร์ดแวร์เพื่อช่วยปรับปรุง <ph name="DEVICE_OS" /> หากคุณปฏิเสธ ข้อมูลนี้จะยังส่งไปยัง Google เพื่อพิจารณาอัปเดตที่เหมาะสม แต่จะไม่เก็บข้อมูลไว้หรือใช้ในลักษณะอื่น ดูข้อมูลเพิ่มเติมที่ g.co/flex/HWDataCollection</translation>
 <translation id="630292539633944562">การแนะนำข้อมูลส่วนบุคคล</translation>
 <translation id="6305607932814307878">นโยบายทั่วโลก:</translation>
+<translation id="6305909198255586420">โปรดติดตั้งโดยใช้โปรไฟล์หลัก</translation>
 <translation id="6307990684951724544">ระบบกำลังทำงานอื่นอยู่</translation>
 <translation id="6308493641021088955">การลงชื่อเข้าใช้ให้บริการโดย <ph name="EXTENSION_NAME" /></translation>
 <translation id="6308937455967653460">บันทึก&amp;ลิงก์เป็น...</translation>
@@ -5910,6 +5941,7 @@
 <translation id="6608166463665411119">รีเซ็ต eSIM</translation>
 <translation id="6609478180749378879">ข้อมูลการลงชื่อเข้าใช้จะจัดเก็บอยู่ในอุปกรณ์นี้หลังจากออกจากโหมดไม่ระบุตัวตน โดยจะลงชื่อเข้าใช้เว็บไซต์นี้ด้วยอุปกรณ์ของคุณอีกครั้งในภายหลังได้</translation>
 <translation id="6610002944194042868">ตัวเลือกการแปลภาษา</translation>
+<translation id="6611907964265870728">โปรดตรวจสอบว่าอุปกรณ์เชื่อมต่ออินเทอร์เน็ตแล้ว</translation>
 <translation id="6611972847767394631">ค้นหาแท็บของคุณที่นี่</translation>
 <translation id="6613668613087513143">อุปกรณ์นี้มีพื้นที่ว่างไม่เพียงพอที่จะทำการอัปเดตนี้ให้เสร็จสมบูรณ์ ล้างข้อมูล <ph name="NECESSARY_SPACE" /> ในอุปกรณ์แล้วลองอีกครั้งจากเบราว์เซอร์ Chrome</translation>
 <translation id="6615455863669487791">แสดงให้ฉันเห็น</translation>
@@ -6298,6 +6330,7 @@
 <translation id="697508444536771064">ปิด Linux</translation>
 <translation id="6975361011348772931">ได้ขออ่านและเปลี่ยนแปลง</translation>
 <translation id="6978121630131642226">เครื่องมือค้นหา</translation>
+<translation id="6979041727349121225">โหมดประหยัดพลังงาน</translation>
 <translation id="6979044105893951891">เปิดและออกจากเซสชันผู้เยี่ยมชมที่มีการจัดการ</translation>
 <translation id="6979158407327259162">Google ไดรฟ์</translation>
 <translation id="6979440798594660689">ปิดเสียง (ค่าเริ่มต้น)</translation>
@@ -6350,6 +6383,8 @@
 <translation id="7014174261166285193">การติดตั้งล้มเหลว</translation>
 <translation id="7014480873681694324">นำไฮไลต์ออก</translation>
 <translation id="7014741021609395734">ระดับการซูม</translation>
+<translation id="7014961128696979283">เปิด Steam</translation>
+<translation id="7015088858756332848">เปิด Steam ใน Chromebook ไม่ได้ โปรดลองอีกครั้ง</translation>
 <translation id="7017004637493394352">พูดว่า "Ok Google" อีกครั้ง</translation>
 <translation id="7017219178341817193">เพิ่มหน้าใหม่</translation>
 <translation id="7017354871202642555">ไม่สามารถกำหนดโหมดได้หลังจากกำหนดหน้าต่างแล้ว</translation>
@@ -6726,6 +6761,7 @@
 <translation id="7409854300652085600">นำเข้าบุ๊กมาร์กแล้ว</translation>
 <translation id="7410344089573941623">ถามว่า <ph name="HOST" /> ต้องการเข้าถึงกล้องและไมโครโฟนของคุณหรือไม่</translation>
 <translation id="7410852728357935715">แคสต์ไปยังอุปกรณ์</translation>
+<translation id="7411614333737930931">โปรดรีสตาร์ทอุปกรณ์แล้วลองอีกครั้ง</translation>
 <translation id="741204030948306876">ได้สิ ตกลง</translation>
 <translation id="7412226954991670867">หน่วยความจำ GPU</translation>
 <translation id="7414464185801331860">18x</translation>
@@ -6741,6 +6777,7 @@
 <translation id="7423425410216218516">ระดับการเข้าถึงจะเปิดเป็นเวลา <ph name="MINUTES" /> นาที</translation>
 <translation id="7423513079490750513">นำ <ph name="INPUT_METHOD_NAME" /> ออก</translation>
 <translation id="7423807071740419372"><ph name="APP_NAME" /> ต้องได้รับสิทธิ์เพื่อทำงาน</translation>
+<translation id="7424153922653300265">เปิดโหมดประหยัดพลังงานแล้ว</translation>
 <translation id="7424818322350938336">เพิ่มเครือข่ายแล้ว</translation>
 <translation id="7427315069950454694">ความทรงจำของคุณสำหรับวันนี้</translation>
 <translation id="7427348830195639090">หน้าเว็บพื้นหลัง: <ph name="BACKGROUND_PAGE_URL" /></translation>
@@ -6956,6 +6993,7 @@
 <translation id="7635048370253485243">ผู้ดูแลระบบปักหมุดไว้</translation>
 <translation id="7636919061354591437">ติดตั้งในอุปกรณ์นี้</translation>
 <translation id="7637253234491814483">แตะเซ็นเซอร์ลายนิ้วมือที่มุมขวาบนของแป้นพิมพ์ ข้างปุ่มเปิด/ปิด ข้อมูลลายนิ้วมือจะจัดเก็บไว้อย่างปลอดภัยและอยู่ใน <ph name="DEVICE_TYPE" /> ของคุณเสมอ</translation>
+<translation id="7637272932128132922">ขณะที่แท็บนี้ไม่มีการใช้งาน โหมดประหยัดหน่วยความจำจะช่วยประหยัดหน่วยความจําสำหรับงานอื่นๆ คุณเปลี่ยนตัวเลือกนี้ได้ทุกเมื่อใน<ph name="SETTINGS_LINK" /></translation>
 <translation id="7637593984496473097">มีพื้นที่ในดิสก์ไม่เพียงพอ</translation>
 <translation id="7639914187072011620">ดึงข้อมูล URL เปลี่ยนเส้นทาง SAML จากเซิร์ฟเวอร์ไม่สำเร็จ</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> ลงชื่อเข้าใช้ให้คุณในเว็บไซต์ที่มีสิทธิ์โดยอัตโนมัติด้วยรหัสผ่านที่คุณบันทึกไว้</translation>
@@ -7072,6 +7110,7 @@
 <translation id="7728668285692163452">ระบบจะนำการเปลี่ยนช่องไปใช้ในภายหลัง</translation>
 <translation id="7730449930968088409">จับภาพเนื้อหาบนหน้าจอ</translation>
 <translation id="7730683939467795481">หน้านี้มีการเปลี่ยนแปลงจากส่วนขยาย "<ph name="EXTENSION_NAME" />"</translation>
+<translation id="7735165285389721951">กำลังตั้งค่า Steam อีกรายการ โปรดรอให้ตั้งค่าเสร็จก่อนแล้วลองอีกครั้ง</translation>
 <translation id="7737115349420013392">กำลังจับคู่กับ "<ph name="DEVICE_NAME" />" ...</translation>
 <translation id="7737846262459425222">คุณเปลี่ยนได้ทุกเมื่อในการตั้งค่า &gt; Google Assistant &gt; บริบทบนหน้าจอ</translation>
 <translation id="7737948071472253612">ไม่ได้รับอนุญาตให้ใช้กล้อง</translation>
@@ -7370,6 +7409,7 @@
 ไฟล์กุญแจ: <ph name="KEY_FILE" />
 
 รักษาไฟล์กุญแจของคุณไว้ในที่ปลอดภัย คุณจะต้องใช้ไฟล์นี้ในการสร้างส่วนขยายรุ่นใหม่</translation>
+<translation id="8001100670809322641">โปรดรอสักครู่แล้วลองอีกครั้ง</translation>
 <translation id="8002274832045662704">การกำหนดค่าขั้นสูงของเครื่องพิมพ์</translation>
 <translation id="8002670234429879764"><ph name="PRINTER_NAME" /> ไม่มีให้ใช้งานแล้ว</translation>
 <translation id="8004092996156083991">หากรหัสผ่านถูกละเมิด เราจะแจ้งให้คุณทราบ</translation>
@@ -7379,6 +7419,7 @@
 <translation id="8008356846765065031">อินเทอร์เน็ตถูกตัด โปรดตรวจสอบการเชื่อมต่ออินเทอร์เน็ต</translation>
 <translation id="8009225694047762179">จัดการรหัสผ่าน</translation>
 <translation id="8011372169388649948">ย้าย '<ph name="BOOKMARK_TITLE" />' แล้ว</translation>
+<translation id="8011875486979733097">ติดตั้ง Steam ไม่ได้</translation>
 <translation id="8012647001091218357">เราไม่สามารถติดต่อผู้ปกครองของคุณได้ในขณะนี้ โปรดลองอีกครั้ง</translation>
 <translation id="8013993649590906847">หากรูปภาพไม่มีคำอธิบายที่เป็นประโยชน์ Chrome จะพยายามใส่คำอธิบายให้คุณ รูปภาพจะส่งมายัง Google เพื่อสร้างคำอธิบาย</translation>
 <translation id="8014154204619229810">โปรแกรมอัปเดตกำลังทำงาน โปรดรีเฟรชในอีก 1 นาทีเพื่อตรวจสอบอีกครั้ง</translation>
@@ -7469,6 +7510,7 @@
 <translation id="808894953321890993">เปลี่ยนรหัสผ่าน</translation>
 <translation id="8090234456044969073">อ่านรายชื่อของเว็บไซต์ที่คุณเข้าชมบ่อยที่สุด</translation>
 <translation id="8090513782447872344">คุณกลับมาดูอีกครั้งได้ทุกเมื่อ</translation>
+<translation id="809312780580957751">ติดตั้ง Steam ในอุปกรณ์เครื่องนี้ไม่ได้</translation>
 <translation id="8093359998839330381"><ph name="PLUGIN_NAME" /> ไม่ตอบสนอง</translation>
 <translation id="8095105960962832018"><ph name="BEGIN_PARAGRAPH1" />สำรองข้อมูลไปยัง Google ไดรฟ์ กู้ข้อมูลคืนหรือเปลี่ยนอุปกรณ์ได้ง่ายๆ ทุกเมื่อ ข้อมูลสำรองจะรวมถึงข้อมูลแอป<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />ระบบจะอัปโหลดข้อมูลสำรองไปยัง Google และเข้ารหัสโดยใช้รหัสผ่านบัญชี Google ของคุณ<ph name="END_PARAGRAPH2" />
@@ -7564,6 +7606,7 @@
 <translation id="8177318697334260664">{NUM_TABS,plural, =1{ย้ายแท็บไปที่หน้าต่างใหม่}other{ย้ายแท็บไปที่หน้าต่างใหม่}}</translation>
 <translation id="8179188928355984576">ไม่ได้ใช้กับแอป Android</translation>
 <translation id="8179976553408161302">Enter</translation>
+<translation id="8180785270975217276">เปิดโหมดประหยัดพลังงานแล้ว</translation>
 <translation id="8180786512391440389">"<ph name="EXTENSION" />" สามารถอ่านและลบรูปภาพ วิดีโอ และไฟล์เสียงในตำแหน่งที่เลือก</translation>
 <translation id="8181215761849004992">เข้าร่วมโดเมนไม่ได้ ตรวจสอบบัญชีว่าคุณมีสิทธิ์เพียงพอที่จะเพิ่มอุปกรณ์ไหม</translation>
 <translation id="8182105986296479640">แอปพลิเคชันไม่ตอบสนอง</translation>
@@ -7686,6 +7729,7 @@
 <translation id="828642162569365647">รหัสผ่านหรือ PIN นี้ช่วยปกป้องข้อมูลใน <ph name="DEVICE_TYPE" /> เครื่องนี้และข้อมูลที่คุณเข้าถึงจากโทรศัพท์ คุณจะต้องปลดล็อกทุกครั้งที่ <ph name="DEVICE_TYPE" /> ออกจากโหมดสลีป</translation>
 <translation id="8287902281644548111">ค้นหาตามการเรียก API/URL</translation>
 <translation id="8288032458496410887">ถอนการติดตั้ง <ph name="APP" />...</translation>
+<translation id="8288539437195337464">โปรดตรวจสอบว่าอุปกรณ์เป็นเวอร์ชันล่าสุด แล้วลองอีกครั้ง</translation>
 <translation id="8289128870594824098">ขนาดดิสก์</translation>
 <translation id="8289509909262565712">ยินดีต้อนรับสู่ <ph name="DEVICE_OS" /></translation>
 <translation id="8293206222192510085">เพิ่มบุ๊กมาร์ก</translation>
@@ -7975,11 +8019,13 @@
 <translation id="859246725979739260">เว็บไซต์นี้ถูกบล็อกไม่ให้เข้าถึงตำแหน่งของคุณ</translation>
 <translation id="8593121833493516339">ส่งข้อมูลการใช้งานและการวินิจฉัย ช่วยปรับปรุงประสบการณ์การใช้งาน Android ของบุตรหลานให้ดีขึ้นด้วยการส่งข้อมูลการวินิจฉัย อุปกรณ์ และการใช้งานแอปไปยัง Google โดยอัตโนมัติ โดยจะไม่มีการใช้ข้อมูลนี้ในการระบุชื่อบุตรหลานของคุณ และจะช่วยให้แอปและระบบมีความเสถียร พร้อมทั้งปรับปรุงด้านอื่นๆ ข้อมูลที่รวบรวมมาบางส่วนจะมีประโยชน์ต่อแอปและพาร์ทเนอร์ของ Google ด้วย เช่น นักพัฒนาแอป Android หากเปิดการตั้งค่ากิจกรรมเพิ่มเติมบนเว็บและแอปสำหรับบุตรหลาน ระบบอาจบันทึกข้อมูลนี้ไว้ในบัญชี Google ของบุตรหลาน <ph name="BEGIN_LINK1" />ดูข้อมูลเพิ่มเติม<ph name="END_LINK1" /></translation>
 <translation id="8596540852772265699">ไฟล์ที่กำหนดเอง</translation>
+<translation id="8597404194697561297">ยินดีต้อนรับสู่ Steam บน Chromebook</translation>
 <translation id="8597845839771543242">รูปแบบของคุณสมบัติ:</translation>
 <translation id="8599681327221583254">กำหนดค่านโยบายอย่างน้อย 1 รายการไม่ถูกต้อง โปรดติดต่อผู้ดูแลระบบ</translation>
 <translation id="8599864823732014237">ข้ามการลงทะเบียนองค์กรใช่ไหม</translation>
 <translation id="8601206103050338563">การตรวจสอบสิทธิ์ไคลเอ็นต์ TLS WWW </translation>
 <translation id="8601611099293226919">ค้นหาบนหน้าจอของคุณด้วย Google Lens</translation>
+<translation id="8602674530529411098">แอป (เบต้า)</translation>
 <translation id="8602851771975208551">โปรแกรมอื่นในคอมพิวเตอร์ของคุณเพิ่มแอปพลิเคชันที่อาจเปลี่ยนวิธีการทำงานของ Chrome</translation>
 <translation id="8605428685123651449">หน่วยความจำ SQLite</translation>
 <translation id="8608618451198398104">เพิ่มตั๋ว Kerberos</translation>
@@ -8241,6 +8287,7 @@
 <translation id="8838601485495657486">ทึบ</translation>
 <translation id="8838770651474809439">แฮมเบอร์เกอร์</translation>
 <translation id="8838778928843281408">จัดการโทรศัพท์</translation>
+<translation id="883924185304953854">ค้นหาจากภาพ</translation>
 <translation id="8841843049738266382">อ่านและเปลี่ยนผู้ใช้ในรายการที่อนุญาต</translation>
 <translation id="8842594465773264717">ลบลายนิ้วมือนี้</translation>
 <translation id="8845001906332463065">ขอความช่วยเหลือ</translation>
@@ -8663,6 +8710,7 @@
 <translation id="939598580284253335">ป้อนข้อความรหัสผ่าน</translation>
 <translation id="939736085109172342">โฟลเดอร์ใหม่</translation>
 <translation id="942532530371314860"><ph name="APP_NAME" /> กำลังแชร์แท็บและเสียงใน Chrome</translation>
+<translation id="944799160843436808">เกิดปัญหาในการตั้งค่า Steam ใน Chromebook</translation>
 <translation id="945522503751344254">ส่งความคิดเห็น</translation>
 <translation id="947329552760389097">&amp;ตรวจสอบองค์ประกอบ</translation>
 <translation id="947526284350604411">คำตอบของคุณ</translation>
@@ -8687,6 +8735,7 @@
 <translation id="968000525894980488">เปิดบริการ Google Play</translation>
 <translation id="968037381421390582">ว&amp;างและค้นหา “<ph name="SEARCH_TERMS" />”</translation>
 <translation id="969096075394517431">เปลี่ยนภาษา</translation>
+<translation id="969574218206797926">โหมดประหยัดหน่วยความจําจะช่วยประหยัดหน่วยความจําจากแท็บที่ไม่ได้ใช้งาน เพื่อให้แท็บที่ใช้งานอยู่และแอปอื่นๆ ใช้หน่วยความจําดังกล่าวได้</translation>
 <translation id="970047733946999531">{NUM_TABS,plural, =1{1 แท็บ}other{# แท็บ}}</translation>
 <translation id="971510864672937292">ล้างข้อมูลเว็บไซต์และสิทธิ์ของ <ph name="SITE_NAME" /> รวมถึงเว็บไซต์ทั้งหมดภายใต้เว็บไซต์นี้ใช่ไหม</translation>
 <translation id="971774202801778802">URL ของบุ๊กมาร์ก</translation>
diff --git a/chrome/app/resources/generated_resources_tr.xtb b/chrome/app/resources/generated_resources_tr.xtb
index f3e0945..894173a 100644
--- a/chrome/app/resources/generated_resources_tr.xtb
+++ b/chrome/app/resources/generated_resources_tr.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="tr">
 <translation id="1001033507375626788">Bu ağ sizinle paylaşıldı</translation>
+<translation id="1002085272681738789">Sekme yeniden etkin</translation>
 <translation id="1003088604756913841">Bağlantıyı yeni <ph name="APP" /> Penceresinde aç</translation>
 <translation id="100323615638474026">USB cihaz (<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />)</translation>
 <translation id="1004218526896219317">Site erişimi</translation>
@@ -321,6 +322,7 @@
 <translation id="1296911687402551044">Seçili Sekmeyi Sabitle</translation>
 <translation id="1297175357211070620">Hedef</translation>
 <translation id="129770436432446029"><ph name="EXPERIMENT_NAME" /> için geri bildirim gönderin</translation>
+<translation id="130097046531636712">Bu ayar, arka plan etkinliğini ve yumuşak kaydırma gibi görsel efektleri sınırlandırarak pil gücünü artırır</translation>
 <translation id="1301135395320604080"><ph name="ORIGIN" /> sitesi şu dosyaları düzenleyebilir:</translation>
 <translation id="1302227299132585524">Apple Events'ten JavaScript'e izin ver</translation>
 <translation id="1303101771013849280">Yer İşaretleri HTML Dosyası</translation>
@@ -379,6 +381,7 @@
 <translation id="1361655923249334273">Kullanılmıyor</translation>
 <translation id="1362865166188278099">Mekanik sorun. Yazıcıyı kontrol edin</translation>
 <translation id="1363585519747660921">USB yazıcının yapılandırılması gerekiyor</translation>
+<translation id="136378536198524553">Enerji Tasarrufu açık</translation>
 <translation id="1368603372088757436">Linux, <ph name="DEVICE_TYPE" /> cihazınızda desteklenmiyor. <ph name="LINK_BEGIN" />Daha fazla bilgi<ph name="LINK_END" /></translation>
 <translation id="1372841398847029212">Hesabınızla senkronize edin</translation>
 <translation id="1373176046406139583">Görünürlük ayarınız, ekranınızın kilidi açıkken kimlerin sizinle içerik paylaşabileceğini denetlemenizi sağlar. <ph name="LINK_BEGIN" />Daha fazla bilgi<ph name="LINK_END" /></translation>
@@ -648,6 +651,7 @@
 <translation id="1610272688494140697">Uygulama Ayarları</translation>
 <translation id="161042844686301425">Camgöbeği</translation>
 <translation id="1611432201750675208">Cihazınız kilitlendi</translation>
+<translation id="1611776894942218234">Cihaz, Beta kanalında olmalıdır</translation>
 <translation id="1612019740169791082">Kapsayıcınız, disk yeniden boyutlandırmalarını desteklemek üzere yapılandırılmamış. Linux için ayrılan yer miktarını düzenlemek üzere uygulamayı yedekleyip yeni bir kapsayıcıya geri yükleyin.</translation>
 <translation id="1613019471223620622"><ph name="USERNAME" /> adlı kullanıcı için <ph name="DOMAIN" /> alanındaki şifreyi göster</translation>
 <translation id="1613149688105334014">Chrome uygulamalarının eski sürümleri Aralık 2022'den sonra açılmayacaktır. Yeni bir sürümün olup olmadığını kontrol edebilirsiniz.</translation>
@@ -1118,6 +1122,7 @@
 <translation id="2034346955588403444">Başka kablosuz ağ ekle</translation>
 <translation id="2035211704574173780">Gri Tonlamalı</translation>
 <translation id="203574396658008164">Kilit ekranından not almayı etkinleştir</translation>
+<translation id="2036514476578229158">Bu siteyi ziyaret etme isteğinde bulundunuz. Anne veya babanız bu isteğe Family Link'te yanıt verebilir.</translation>
 <translation id="2037445849770872822">Bu Google Hesabı için denetim kuruldu. Diğer ebeveyn denetimlerini kurmak için Devam'ı seçin.
 
 Aksi takdirde, bu hesaptaki değişikliklerin bu cihazda geçerli olması için şimdi oturumu kapatın.
@@ -1202,6 +1207,7 @@
 <translation id="2098805196501063469">Kalan şifreleri kontrol et</translation>
 <translation id="2099686503067610784">"<ph name="CERTIFICATE_NAME" />" sunucusu sertifikası silinsin mi?</translation>
 <translation id="2100273922101894616">Otomatik Oturum Aç</translation>
+<translation id="2100986609271491802">Bu cihaz şu anda Chromebook'ta Steam'i desteklemiyor</translation>
 <translation id="2101225219012730419">Sürüm:</translation>
 <translation id="2102396546234652240">Sitelerin mikrofonumu kullanmasına izin verme</translation>
 <translation id="2102495993840063010">Android uygulamaları</translation>
@@ -1237,6 +1243,7 @@
 <translation id="2135787500304447609">&amp;Devam Ettir</translation>
 <translation id="2136372518715274136">Yeni şifreyi girin</translation>
 <translation id="2136476978468204130">Girdiğiniz parola yanlış</translation>
+<translation id="2137891579555018930">İzin bekleniyor...</translation>
 <translation id="2138398485845393913">"<ph name="DEVICE_NAME" />" bağlantısı hâlâ devam ediyor</translation>
 <translation id="2139919072249842737">Kurulum düğmesi</translation>
 <translation id="2140788884185208305">Pil Sağlığı</translation>
@@ -1496,6 +1503,9 @@
 <translation id="2350133097354918058">Yeniden yüklendi</translation>
 <translation id="2350182423316644347">Uygulama başlatılıyor...</translation>
 <translation id="235028206512346451">Cihazınızdan uzaklaşırsanız ekranınız otomatik olarak kilitlenir. Cihazınızın önünde olduğunuz sürece ekranınız uyanık kalır. Kilit ekranı kullanmıyorsanız cihazınız kilitlenmek yerine uyku moduna geçer.</translation>
+<translation id="2350866610930767288"><ph name="BEGIN_PARAGRAPH1" />Demo modu kurulumu sırasında perakendeci mağaza kimliği kodu girme talimatları aldıysanız lütfen bu kodu sağ tarafa girin*.  Aksi takdirde, bu alanı boş bırakıp devam edebilirsiniz.<ph name="END_PARAGRAPH1" />
+    <ph name="BEGIN_PARAGRAPH2" />Demo modunu kod olmadan da yükleyebilirsiniz, ancak mağazanız için geçerliyse bu kodu girmeniz önemlidir.<ph name="END_PARAGRAPH2" />
+    <ph name="BEGIN_PARAGRAPH3" />*Not: Google, bu kodları kullanarak cihazın, demo modunun hangi sürümünü alması gerektiğini belirler ve demo modunun kullanımını ölçer.<ph name="END_PARAGRAPH3" /></translation>
 <translation id="2352495879228166246">{NUM_ITEMS,plural, =1{1 öğe}other{{NUM_ITEMS} öğe}}</translation>
 <translation id="2352662711729498748">&lt; 1 MB</translation>
 <translation id="2352810082280059586">Kilit ekranı notları otomatik olarak <ph name="LOCK_SCREEN_APP_NAME" /> uygulamasına kaydedilir. En yeni notunuz kilit ekranında kalır.</translation>
@@ -1946,6 +1956,7 @@
 <translation id="2776560192867872731"><ph name="DEVICE_NAME" /> cihazının cihaz adını değiştir</translation>
 <translation id="2777251078198759550">Bu kapsayıcıyı sil</translation>
 <translation id="2778471504622896352">ChromeOS başlatıcıya uzaktan uygulama ekleme</translation>
+<translation id="2781120507965857989">Yer işaretleri, şifreler, geçmiş ve diğer öğelerinizi bu cihazda ve senkronize ettiğiniz cihazlarda görmek için senkronizasyonu açın. Google; Arama ve diğer Google hizmetlerini kişiselleştirmek için geçmişinizi kullanabilir.</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2782104745158847185">Linux uygulaması yüklenirken hata oluştu</translation>
 <translation id="2783298271312924866">İndirildi</translation>
@@ -1966,6 +1977,7 @@
 <translation id="2792697226874849938">Kısıtlama resmi</translation>
 <translation id="2794233252405721443">Site engellenmiş</translation>
 <translation id="2794522004398861033">eSIM'i kurmak için kablosuz ağa veya Ethernet'e bağlanın</translation>
+<translation id="2795074478966352573">Family Link tarafından yönetilen hesaplar henüz desteklenmiyor</translation>
 <translation id="2795716239552913152">Yerel haberler veya yakındaki mağazalar gibi alakalı özellikleri ya da bilgileri sunmak için siteler genellikle konumunuzu kullanır</translation>
 <translation id="2796424461616874739">"<ph name="DEVICE_NAME" />" cihazına bağlanırken kimlik doğrulaması zaman aşımı oluştu.</translation>
 <translation id="2796740370559399562">Çerezlere izin vermeye devam et</translation>
@@ -2151,6 +2163,7 @@
 <translation id="2949289451367477459">Konum bilgilerini kullan. Konum izinleri olan uygulama ve hizmetlerin bu cihazın konumunu kullanmasına izin verin. Google, konum verilerini düzenli olarak toplayabilir ve konum doğruluğu ile konuma dayalı hizmetleri iyileştirmek için bu verileri anonim bir şekilde kullanabilir. <ph name="BEGIN_LINK1" />Daha Fazla Bilgi<ph name="END_LINK1" /></translation>
 <translation id="2950666755714083615">Kaydolmak istiyorum</translation>
 <translation id="2953019166882260872">Telefonunuzu kablo ile bağlayın</translation>
+<translation id="2953218713108551165"><ph name="SITE" /> için bildirimlere izin verilmiyor. Bir sonraki ziyaretinizde size tekrar sorulacak.</translation>
 <translation id="2956070239128776395">Grupta iç içe yerleşmiş bölüm: <ph name="ERROR_LINE" /></translation>
 <translation id="2958721676848865875">Uzantı paketleme uyarısı</translation>
 <translation id="2959127025785722291">Bir sorun oluştu. Tarama tamamlanamadı. Lütfen tekrar deneyin.</translation>
@@ -2859,6 +2872,7 @@
 <translation id="3665919494326051362">Mevcut sürüm <ph name="CURRENT_VERSION" /></translation>
 <translation id="3670113805793654926">Herhangi bir tedarikçinin cihazları</translation>
 <translation id="3670229581627177274">Bluetooth'u aç</translation>
+<translation id="3672663996348587094"><ph name="ORIGIN" /> sitesinde "<ph name="EXTENSIONS_REQUESTING_ACCESS" />" adlı uzantıya izin vermek için tıklayın:</translation>
 <translation id="3672681487849735243">Bir fabrika hatası saptandı</translation>
 <translation id="3673097791729989571">Oturum açma işlemini <ph name="SAML_DOMAIN" /> barındırıyor</translation>
 <translation id="3673622964532248901">Bu cihaza içerik yayınlama izniniz yok.</translation>
@@ -3374,6 +3388,7 @@
 <translation id="4132183752438206707">Aradığınız uygulamalar Google Play Store'da</translation>
 <translation id="4132364317545104286">eSIM profilini yeniden adlandır</translation>
 <translation id="4133076602192971179">Şifrenizi değiştirmek için uygulamayı açın</translation>
+<translation id="4134818201340504801">Kurulumu tamamlayacak kadar yeterli depolama alanı yok. Lütfen depolama alanında yer açıp tekrar deneyin</translation>
 <translation id="4135746311382563554">Google Chrome ve Chrome OS ek hizmet şartları</translation>
 <translation id="4136203100490971508">Gece Işığı güneş doğduğunda otomatik olarak kapatılır</translation>
 <translation id="41365691917097717">Devam edilirse ADB hata ayıklama işlevi, Android uygulaması oluşturmak ve test etmek için etkinleştirilir. Bu işlemin Google tarafından doğrulanmamış Android uygulamalarının yüklenmesine izin verdiğini, fabrika ayarlarına sıfırlama işlemi yapılmadan devre dışı bırakılamayacağını unutmayın.</translation>
@@ -3610,6 +3625,7 @@
 <translation id="4378556263712303865">Cihaz talebi</translation>
 <translation id="4379281552162875326">"<ph name="APP_NAME" />" kaldırılsın mı?</translation>
 <translation id="4380648069038809855">Tam ekrana girildi</translation>
+<translation id="4383048856908088702">Bellek Tasarrufu, bu sekme etkin değilken bellekte diğer görevler için <ph name="MEMORY_VALUE" /> yer açtı. Bunu istediğiniz zaman <ph name="SETTINGS_LINK" /> bölümünde değiştirebilirsiniz.</translation>
 <translation id="4384312707950789900">Tercih edilenlere ekle</translation>
 <translation id="4384652540891215547">Uzantıyı etkinleştir</translation>
 <translation id="4384886290276344300">Klavye ayarlarını değiştir</translation>
@@ -3687,6 +3703,7 @@
 <translation id="4451479197788154834">Şifreniz bu cihazda ve Google Hesabınızda kayıtlı</translation>
 <translation id="4451757071857432900">Araya giren veya yanıltıcı reklamlar gösteren sitelerde engellenir (önerilir)</translation>
 <translation id="4453946976636652378"><ph name="SEARCH_ENGINE_NAME" /> üzerinde arayın veya bir URL yazın</translation>
+<translation id="4458535500699390320">Bellek Tasarrufu, bu sekme etkin değilken bellekte diğer görevler için yer açtı. İstediğiniz zaman bunu Ayarlar'dan değiştirebilirsiniz.</translation>
 <translation id="4459169140545916303"><ph name="DEVICE_LAST_ACTIVATED_TIME" /> gün önce etkindi</translation>
 <translation id="4460014764210899310">Grubu Çöz</translation>
 <translation id="4462159676511157176">Özel ad sunucuları</translation>
@@ -3858,6 +3875,7 @@
 <translation id="4613271546271159013">Bir uzantı, yeni sekme açtığınızda hangi sayfanın görüntüleneceğini değiştirdi.</translation>
 <translation id="4615586811063744755">çerez seçilmedi</translation>
 <translation id="461661862154729886">Enerji kaynağı</translation>
+<translation id="461676224702246336">Bu site için tıklandığında</translation>
 <translation id="4617001782309103936">Çok kısa</translation>
 <translation id="4617019240346358451">"<ph name="EXTENSION_NAME" />" uzantısını kullanmak için sayfayı yenileyin</translation>
 <translation id="4617270414136722281">Uzantı seçenekleri</translation>
@@ -3980,6 +3998,7 @@
 <translation id="4728558894243024398">Platform</translation>
 <translation id="4728570203948182358"><ph name="BEGIN_LINK" />Yöneticiniz<ph name="END_LINK" /> zararlı yazılım kontrolünü devre dışı bıraktı</translation>
 <translation id="4730492586225682674">Kilit ekranında ekran kalemiyle alınan en son not</translation>
+<translation id="4730888769809690665"><ph name="SITE" /> için bildirimlere izin veriliyor</translation>
 <translation id="473140019006744096">Bu cihazda bu güncellemeyi tamamlayacak kadar alan yok. Cihazınızda <ph name="NECESSARY_SPACE" /> yer açıp tekrar deneyin.</translation>
 <translation id="4733161265940833579">%<ph name="BATTERY_PERCENTAGE" /> (Sol)</translation>
 <translation id="4733793249294335256">Konum</translation>
@@ -4110,6 +4129,7 @@
 <translation id="4858913220355269194">Futbolcu</translation>
 <translation id="4862642413395066333">İmza OCSP Yanıtları</translation>
 <translation id="4863769717153320198"><ph name="WIDTH" /> x <ph name="HEIGHT" /> şeklinde görünür (Varsayılan)</translation>
+<translation id="486459320933704969">Bir anne veya babanın ya da velinin, bu web sitesini ziyaret etmenizin uygun olduğunu belirtmesi gerekir</translation>
 <translation id="4864805589453749318">Okul hesabı eklenmesine izin veren ebeveyni seçin.</translation>
 <translation id="486635084936119914">Belirli türdeki dosyaları indirildikten sonra otomatik olarak aç</translation>
 <translation id="4868281708609571334">Google Asistan'a <ph name="SUPERVISED_USER_NAME" /> adlı kişinin sesini tanımayı öğretin</translation>
@@ -4282,6 +4302,7 @@
 <translation id="5032430150487044192">QR Kodu oluşturulamıyor</translation>
 <translation id="5033137252639132982">Hareket sensörlerini kullanmasına izin verilmeyen siteler</translation>
 <translation id="5033266061063942743">Geometrik şekiller</translation>
+<translation id="5034000993065629381">Lütfen yöneticinizle iletişime geçin</translation>
 <translation id="5037676449506322593">Tümünü Seç</translation>
 <translation id="5038818366306248416">Daha önce <ph name="ORIGIN" /> adresinde uzantılara izin vermemeyi seçtiniz</translation>
 <translation id="5039696241953571917">Google Hesabınızdaki kayıtlı şifrelerinizi görüntüleyip yönetin</translation>
@@ -4412,6 +4433,7 @@
 <translation id="5161251470972801814"><ph name="VENDOR_NAME" /> tarafından sağlanan USB cihazlar</translation>
 <translation id="5162905305237671850"><ph name="DEVICE_TYPE" /> engellendi</translation>
 <translation id="5163910114647549394">Sekme, sekme şeridinin sonuna taşındı</translation>
+<translation id="5164530241085602114"><ph name="SITE" /> için bildirimlere izin verilmiyor</translation>
 <translation id="516747639689914043">HyperText Aktarım Protokolü (HTTP)</translation>
 <translation id="5170568018924773124">Klasörde göster</translation>
 <translation id="5171045022955879922">Arayın veya URL'yi yazın</translation>
@@ -4514,6 +4536,7 @@
 <translation id="5269977353971873915">Yazdırma Başarısız</translation>
 <translation id="5273806377963980154">Site URL'sini düzenle</translation>
 <translation id="5275084684151588738">Kullanıcı Sözlükleri</translation>
+<translation id="5275100789567222478">Yalnızca şarjım %<ph name="PERCENT" /> veya daha azken etkinleştir</translation>
 <translation id="5275338516105640560">Kayıtlı sekme grubu düğmesi</translation>
 <translation id="5275352920323889391">Köpek</translation>
 <translation id="527605719918376753">Sekmenin sesini kapat</translation>
@@ -4532,6 +4555,7 @@
 <translation id="5285635972691565180">Ekran <ph name="DISPLAY_ID" /></translation>
 <translation id="5286194356314741248">Taranıyor</translation>
 <translation id="5287425679749926365">Hesaplarınız</translation>
+<translation id="5288106344236929384"><ph name="DOMAIN" /> adresindeki <ph name="USERNAME" /> için diğer işlemler ve şifre anahtarı seçenekleri</translation>
 <translation id="5288678174502918605">Kapatılan Sekmeyi T&amp;ekrar Aç</translation>
 <translation id="52895863590846877">Sayfa <ph name="LANGUAGE" /> değil</translation>
 <translation id="52912272896845572">Özel anahtar dosyası geçersiz.</translation>
@@ -4727,6 +4751,7 @@
 <translation id="5473099001878321374">Devam ederek bu cihazın Google'dan, çocuğunuzun operatöründen ve bu cihazın üreticisinden güncellemeleri ve uygulamaları, muhtemelen hücresel veri üzerinden otomatik olarak indirip yükleyebileceğini kabul etmiş olursunuz. Bu uygulamalardan bazıları uygulama içi satın alma seçenekleri sunabilir.</translation>
 <translation id="5473156705047072749">{NUM_CHARACTERS,plural, =1{PIN en az bir karakter olmalıdır}other{PIN en az # karakter olmalıdır}}</translation>
 <translation id="5474859849784484111"><ph name="MANAGER" />, şimdi kablosuz ağa bağlanarak bir güncelleme indirmenizi gerektiriyor. İsterseniz sayaçlı bir bağlantı üzerinden indirebilirsiniz (bunun için ödeme alınabilir).</translation>
+<translation id="5476016146231427848">Chromebook'ta Steam'i kullanmak için lütfen cihazınızı yeniden başlatın</translation>
 <translation id="5481273127572794904">Birden fazla dosyayı otomatik olarak indirmesine izin verilmeyen siteler</translation>
 <translation id="5481941284378890518">Yakınlardaki Yazıcıları Ekle</translation>
 <translation id="5483785310822538350">Dosya ve cihaz erişimini iptal et</translation>
@@ -4947,6 +4972,7 @@
 <translation id="5683806393796685434">Lütfen etkinleştirme kodunuzu girin</translation>
 <translation id="5684181005476681636">Kablosuz bağlantı ayrıntıları</translation>
 <translation id="5684661240348539843">Öğe Tanımlayıcı</translation>
+<translation id="5684969244627829799">Lütfen kullanıcı hesabında oturum açıp tekrar deneyin</translation>
 <translation id="5687326903064479980">Saat dilimi</translation>
 <translation id="5687935527303996204">Cihazınızın fişe takılı olduğundan emin olun ve cihazı kapatmayın. Yükleme işlemi 20 dakika kadar sürebilir. Yükleme tamamlandığında cihazınız otomatik olarak kapanır.</translation>
 <translation id="5689516760719285838">Konum</translation>
@@ -5073,6 +5099,7 @@
 <translation id="5805697420284793859">Pencere yöneticisi</translation>
 <translation id="5806447147478173900">Görüntülenen siteler tarafından kullanılan toplam depolama alanı: <ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">0° (Varsayılan)</translation>
+<translation id="5810603387504252966">chrome://flags'de, #borealis-enabled etkinleştirilmelidir</translation>
 <translation id="5810809306422959727">Bu hesap, ebeveyn denetimleri için uygun değil</translation>
 <translation id="5811614940486072060">Bu dosya çok indirilen bir dosya değil ve tehlikeli olabilir.</translation>
 <translation id="5812674658566766066">Tümünü genişlet</translation>
@@ -5152,6 +5179,7 @@
 <translation id="5882449899683447569">Bir hata oluştuğundan verileriniz içe aktarılamadı</translation>
 <translation id="5882919346125742463">Bilinen Ağlar</translation>
 <translation id="5883356647197510494">Otomatik olarak engellendi: <ph name="PERMISSION_1" />, <ph name="PERMISSION_2" /></translation>
+<translation id="5884447826201752041">Her uzantı için özelleştirin</translation>
 <translation id="5884474295213649357">Bu sekme bir USB cihazına bağlı.</translation>
 <translation id="5885314688092915589">Bu profil kuruluşunuz tarafından yönetilecektir.</translation>
 <translation id="5886009770935151472">1. parmak</translation>
@@ -5591,6 +5619,7 @@
 <translation id="6301300352769835063"><ph name="DEVICE_OS" /> işletim sistemini iyileştirmemize yardımcı olmak için Google'ın donanım verilerinizi kullanmasına izin verin. Reddetmeniz durumunda bu veriler uygun güncellemeleri belirlemek için Google'a gönderilmeye devam eder ancak başka şekilde depolanmaz veya kullanılmaz. Daha fazla bilgiyi g.co/flex/HWDataCollection sayfasında bulabilirsiniz.</translation>
 <translation id="630292539633944562">Kişisel bilgi önerileri</translation>
 <translation id="6305607932814307878">Genel Politika:</translation>
+<translation id="6305909198255586420">Lütfen birincil profilinizi kullanarak yükleyin</translation>
 <translation id="6307990684951724544">Sistem meşgul</translation>
 <translation id="6308493641021088955">Oturum açma işlemi <ph name="EXTENSION_NAME" /> tarafından sağlanmıştır</translation>
 <translation id="6308937455967653460">Bağlantıyı far&amp;klı kaydet...</translation>
@@ -5912,6 +5941,7 @@
 <translation id="6608166463665411119">eSIM'i sıfırla</translation>
 <translation id="6609478180749378879">Gizli moddan çıktıktan sonra oturum açma verileriniz bu cihazda saklanır. Daha sonra cihazınızla bu web sitesinde tekrar oturum açabilirsiniz.</translation>
 <translation id="6610002944194042868">Çeviri Seçenekleri</translation>
+<translation id="6611907964265870728">Lütfen cihazınızın internete bağlı olduğundan emin olun</translation>
 <translation id="6611972847767394631">Sekmelerinizi burada bulabilirsiniz</translation>
 <translation id="6613668613087513143">Bu cihazda bu güncellemeyi tamamlayacak kadar alan yok. Cihazınızda <ph name="NECESSARY_SPACE" /> yer açıp Chrome tarayıcınızdan tekrar deneyin.</translation>
 <translation id="6615455863669487791">Göster</translation>
@@ -6300,6 +6330,7 @@
 <translation id="697508444536771064">Linux'u kapat</translation>
 <translation id="6975361011348772931">Okuyup değiştirme izni istedi</translation>
 <translation id="6978121630131642226">Arama Motorları</translation>
+<translation id="6979041727349121225">Enerji Tasarrufu</translation>
 <translation id="6979044105893951891">Yönetilen misafir oturumunlarını başlatma ve oturumlardan çıkma</translation>
 <translation id="6979158407327259162">Google Drive</translation>
 <translation id="6979440798594660689">Sesi kapat (varsayılan)</translation>
@@ -6352,6 +6383,7 @@
 <translation id="7014174261166285193">Yükleme işlemi başarısız oldu.</translation>
 <translation id="7014480873681694324">Vurgulamayı Kaldır</translation>
 <translation id="7014741021609395734">Yakınlaştırma düzeyi</translation>
+<translation id="7015088858756332848">Chromebook'ta Steam başlatılamadı. Lütfen tekrar deneyin</translation>
 <translation id="7017004637493394352">Tekrar "Ok Google" deyin</translation>
 <translation id="7017219178341817193">Yeni sayfa ekle</translation>
 <translation id="7017354871202642555">Pencere ayarlandıktan sonra mod ayarlanamaz.</translation>
@@ -6728,6 +6760,7 @@
 <translation id="7409854300652085600">Yer işaretleri içe aktarıldı.</translation>
 <translation id="7410344089573941623"><ph name="HOST" /> sitesi kamerama ve mikrofonuma erişmek isterse sor</translation>
 <translation id="7410852728357935715">Bir cihaza yayınla</translation>
+<translation id="7411614333737930931">Lütfen cihazınızı yeniden başlatın ve tekrar deneyin</translation>
 <translation id="741204030948306876">Evet, istiyorum</translation>
 <translation id="7412226954991670867">GPU Belleği</translation>
 <translation id="7414464185801331860">18x</translation>
@@ -6958,6 +6991,7 @@
 <translation id="7635048370253485243">Yöneticiniz tarafından sabitlendi</translation>
 <translation id="7636919061354591437">Bu cihaza yükle</translation>
 <translation id="7637253234491814483">Klavyenizin sağ üst köşesindeki güç düğmesinin yanında bulunan parmak izi sensörüne dokunun. Parmak izi verileriniz güvenli şekilde depolanır ve her zaman <ph name="DEVICE_TYPE" /> cihazınızda tutulur.</translation>
+<translation id="7637272932128132922">Bellek Tasarrufu, bu sekme etkin değilken bellekte diğer görevler için yer açtı. Bunu istediğiniz zaman <ph name="SETTINGS_LINK" /> bölümünde değiştirebilirsiniz.</translation>
 <translation id="7637593984496473097">Yeterli disk alanı yok</translation>
 <translation id="7639914187072011620">Sunucudan SAML yönlendirme URL'si alınamadı</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" />, kaydettiğiniz şifrelerle uygun sitelerde otomatik olarak oturum açmanızı sağlar.</translation>
@@ -7074,6 +7108,7 @@
 <translation id="7728668285692163452">Kanal değişikliği daha sonra uygulanacak</translation>
 <translation id="7730449930968088409">Ekranınızın içeriğini yakalama</translation>
 <translation id="7730683939467795481">Bu sayfa "<ph name="EXTENSION_NAME" />" uzantısı tarafından değiştirildi.</translation>
+<translation id="7735165285389721951">Başka bir Steam kurulumu çalışıyor. Tekrar denemeden önce lütfen diğerinin tamamlanmasını bekleyin.</translation>
 <translation id="7737115349420013392">"<ph name="DEVICE_NAME" />" ile eşleniyor...</translation>
 <translation id="7737846262459425222">Bu tercihinizi istediğiniz zaman Ayarlar &gt; Google Asistan &gt; Ekran bağlamı'ndan değiştirebilirsiniz.</translation>
 <translation id="7737948071472253612">Kameranızı kullanmasına izin verilmeyen siteler</translation>
@@ -7372,6 +7407,7 @@
 Anahtar Dosyası: <ph name="KEY_FILE" />
 
 Anahtar dosyanızı güvenli bir yerde saklayın. Uzantınızın yeni sürümlerini oluşturmak için bu dosyaya ihtiyacınız olacak.</translation>
+<translation id="8001100670809322641">Lütfen birkaç dakika bekleyip tekrar deneyin</translation>
 <translation id="8002274832045662704">Gelişmiş yazıcı yapılandırması</translation>
 <translation id="8002670234429879764"><ph name="PRINTER_NAME" /> artık kullanılamıyor</translation>
 <translation id="8004092996156083991">Şifrelerinizin güvenliği ihlal edilirse size haber veririz.</translation>
@@ -7381,6 +7417,7 @@
 <translation id="8008356846765065031">İnternet bağlantısı kesildi. Lütfen İnternet bağlantınızı kontrol edin.</translation>
 <translation id="8009225694047762179">Şifreleri Yönet</translation>
 <translation id="8011372169388649948">'<ph name="BOOKMARK_TITLE" />' taşındı.</translation>
+<translation id="8011875486979733097">Steam yüklenemiyor</translation>
 <translation id="8012647001091218357">Şu anda ebeveynlerinize erişemedik. Lütfen tekrar deneyin.</translation>
 <translation id="8013993649590906847">Bir resmin işe yarar bir açıklaması yoksa, Chrome sizin için bir açıklama sağlamaya çalışır. Açıklama oluşturmak için resimler Google'a gönderilir.</translation>
 <translation id="8014154204619229810">Güncelleyici şu anda çalışıyor. Tekrar kontrol etmek için bir dakika içinde yenileyin.</translation>
@@ -7471,6 +7508,7 @@
 <translation id="808894953321890993">Şifreyi değiştir</translation>
 <translation id="8090234456044969073">En sık ziyaret ettiğiniz web sitelerinin listesini okuma</translation>
 <translation id="8090513782447872344">İstediğiniz zaman geri gelerek tekrar göz atabilirsiniz</translation>
+<translation id="809312780580957751">Steam bu cihaza yüklenemedi</translation>
 <translation id="8093359998839330381"><ph name="PLUGIN_NAME" /> yanıt vermiyor</translation>
 <translation id="8095105960962832018"><ph name="BEGIN_PARAGRAPH1" />Google Drive'a yedekleyin. Verilerinizi istediğiniz zaman kolayca geri yükleyin veya cihazlar arasında geçiş yapın. Yedekleme işleminiz uygulama verilerini içerir.<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />Yedek verileriniz Google'a yüklenir ve Google Hesabınızın şifresi kullanılarak şifrelenir.<ph name="END_PARAGRAPH2" />
@@ -7566,6 +7604,7 @@
 <translation id="8177318697334260664">{NUM_TABS,plural, =1{Sekmeyi yeni pencereye taşı}other{Sekmeleri yeni pencereye taşı}}</translation>
 <translation id="8179188928355984576">Android uygulamalarıyla kullanılmaz</translation>
 <translation id="8179976553408161302">Enter</translation>
+<translation id="8180785270975217276">Enerji Tasarrufu açık</translation>
 <translation id="8180786512391440389">"<ph name="EXTENSION" />", işaretli konumlardaki resimleri, videoları ve ses dosyalarını okuyabilir ve silebilir.</translation>
 <translation id="8181215761849004992">Alan adına katılınamıyor. Hesabınızı kontrol ederek, cihazları eklemek için yeterli ayrıcalıklara sahip olduğunuzdan emin olun.</translation>
 <translation id="8182105986296479640">Uygulama yanıt vermiyor.</translation>
@@ -7688,6 +7727,7 @@
 <translation id="828642162569365647">Bu şifre veya PIN, <ph name="DEVICE_TYPE" /> cihazındaki verilerinizi ve telefonunuzdan eriştiğiniz bilgileri korur. <ph name="DEVICE_TYPE" /> cihazınız uyku modundan her uyandığında kilidi açmanız gerekir.</translation>
 <translation id="8287902281644548111">API çağrısına/URL'ye göre arayın</translation>
 <translation id="8288032458496410887"><ph name="APP" /> Uygulamasının Yüklemesini Kaldır...</translation>
+<translation id="8288539437195337464">Cihazınızın güncel olduğundan emin olup tekrar deneyin</translation>
 <translation id="8289128870594824098">Disk boyutu</translation>
 <translation id="8289509909262565712"><ph name="DEVICE_OS" /> yüklemesine hoş geldiniz</translation>
 <translation id="8293206222192510085">Yer İşareti Ekle</translation>
@@ -7982,6 +8022,7 @@
 <translation id="8599864823732014237">Kurumsal kayıt atlansın mı?</translation>
 <translation id="8601206103050338563">TLS WWW İstemci Kimlik Doğrulaması</translation>
 <translation id="8601611099293226919">Google Lens ile ekranınızda arama yapın</translation>
+<translation id="8602674530529411098">Uygulamalar (Beta)</translation>
 <translation id="8602851771975208551">Bilgisayarınızdaki başka bir program, Chrome'un çalışma şeklini değiştirebilecek bir uygulama ekledi.</translation>
 <translation id="8605428685123651449">SQLite Belleği</translation>
 <translation id="8608618451198398104">Kerberos bileti ekle</translation>
@@ -8243,6 +8284,7 @@
 <translation id="8838601485495657486">Opak</translation>
 <translation id="8838770651474809439">Hamburger</translation>
 <translation id="8838778928843281408">Telefonları yönetme</translation>
+<translation id="883924185304953854">Görselle Arama</translation>
 <translation id="8841843049738266382">İzin verilenler listesindeki kullanıcıları okuyup değiştirme</translation>
 <translation id="8842594465773264717">Bu parmak izini sil</translation>
 <translation id="8845001906332463065">Yardım alın</translation>
@@ -8665,10 +8707,12 @@
 <translation id="939598580284253335">Parolayı girin</translation>
 <translation id="939736085109172342">Yeni klasör</translation>
 <translation id="942532530371314860"><ph name="APP_NAME" />, bir Chrome sekmesini ve sesi paylaşıyor.</translation>
+<translation id="944799160843436808">Chromebook'ta Steam kurulurken bir sorun oluştu</translation>
 <translation id="945522503751344254">Geri bildirim gönder</translation>
 <translation id="947329552760389097">Öğeleri &amp;İncele</translation>
 <translation id="947526284350604411">Yanıtınız</translation>
 <translation id="947667444780368238">Sistem dosyaları içerdiği için <ph name="ORIGIN" /> bu klasördeki dosyaları açamaz</translation>
+<translation id="949314938206378263">Bu siteyi ziyaret etme isteğinde bulundunuz. Anne veya babanız bu isteğe Family Link'te yanıt verebilir.</translation>
 <translation id="950307215746360464">Kurulum kılavuzu</translation>
 <translation id="951991426597076286">Reddet</translation>
 <translation id="952471655966876828">Cihaz açık olduğunda ve kullanıldığında otomatik olarak bağlanır</translation>
@@ -8689,6 +8733,7 @@
 <translation id="968000525894980488">Google Play hizmetlerini açın.</translation>
 <translation id="968037381421390582">Ya&amp;pıştır ve “<ph name="SEARCH_TERMS" />” Sorgusunu Ara</translation>
 <translation id="969096075394517431">Dilleri değiştir</translation>
+<translation id="969574218206797926">Bellek Tasarrufu, etkin olmayan sekmelerdeki bellekte yer açarak bu belleği, etkin sekmelerin ve diğer uygulamaların kullanmasını sağlar</translation>
 <translation id="970047733946999531">{NUM_TABS,plural, =1{1 Sekme}other{# Sekme}}</translation>
 <translation id="971510864672937292"><ph name="SITE_NAME" /> sitesi ve buna bağlı tüm sitelerdeki site verileri ile izinler temizlensin mi?</translation>
 <translation id="971774202801778802">Yer işareti URL'si</translation>
diff --git a/chrome/app/resources/generated_resources_uk.xtb b/chrome/app/resources/generated_resources_uk.xtb
index 7f67e66..b500037 100644
--- a/chrome/app/resources/generated_resources_uk.xtb
+++ b/chrome/app/resources/generated_resources_uk.xtb
@@ -1133,6 +1133,7 @@
 <translation id="2034346955588403444">Додати іншу мережу Wi-Fi</translation>
 <translation id="2035211704574173780">Відтінки сірого</translation>
 <translation id="203574396658008164">Увімкнути створення нотаток на заблокованому екрані</translation>
+<translation id="2036514476578229158">Запит на дозвіл для перегляду сайту надіслано. Твої батьки можуть відповісти на нього у Family Link.</translation>
 <translation id="2037445849770872822">Для цього облікового запису Google налаштовано Батьківський контроль. Щоб налаштувати більше його параметрів, виберіть опцію "Продовжити".
 
 Або вийдіть з облікового запису на цьому пристрої, щоб застосувати зміни.
@@ -1253,6 +1254,7 @@
 <translation id="2135787500304447609">&amp;Відновити</translation>
 <translation id="2136372518715274136">Введіть новий пароль</translation>
 <translation id="2136476978468204130">Введена парольна фраза неправильна</translation>
+<translation id="2137891579555018930">Очікування дозволу…</translation>
 <translation id="2138398485845393913">Під’єднання до пристрою <ph name="DEVICE_NAME" /> досі триває</translation>
 <translation id="2139919072249842737">Кнопка налаштування</translation>
 <translation id="2140788884185208305">Стан акумулятора</translation>
@@ -4131,6 +4133,7 @@
 <translation id="4858913220355269194">Футбол</translation>
 <translation id="4862642413395066333">Підписування відповідей OCSP</translation>
 <translation id="4863769717153320198"><ph name="WIDTH" />x<ph name="HEIGHT" /> (за умовчанням)</translation>
+<translation id="486459320933704969">Батько, мати чи опікун мають дозволити тобі відвідати цей веб-сайт</translation>
 <translation id="4864805589453749318">Вибери, хто з батьків дозволяє додати обліковий запис навчального закладу.</translation>
 <translation id="486635084936119914">Автоматично відкривати певні типи файлів після завантаження</translation>
 <translation id="4868281708609571334"><ph name="SUPERVISED_USER_NAME" /> може навчити Google Асистента розпізнавати свій голос</translation>
@@ -8269,6 +8272,7 @@
 <translation id="8838601485495657486">Непрозоро</translation>
 <translation id="8838770651474809439">Гамбургер</translation>
 <translation id="8838778928843281408">Керувати телефонами</translation>
+<translation id="883924185304953854">Пошук за зображенням</translation>
 <translation id="8841843049738266382">Переглядати та змінювати користувачів із білого списку</translation>
 <translation id="8842594465773264717">Видалити цей відбиток</translation>
 <translation id="8845001906332463065">Отримати довідку</translation>
@@ -8695,6 +8699,7 @@
 <translation id="947329552760389097">&amp;Перевірити елементи</translation>
 <translation id="947526284350604411">Ваша відповідь</translation>
 <translation id="947667444780368238"><ph name="ORIGIN" /> не може відкрити файли в цій папці, оскільки вона містить системні файли</translation>
+<translation id="949314938206378263">Запит на дозвіл для перегляду сайту надіслано. Твої батько чи мати можуть відповісти на нього у Family Link.</translation>
 <translation id="950307215746360464">Посібник із налаштування</translation>
 <translation id="951991426597076286">Відхилити</translation>
 <translation id="952471655966876828">Пристрій підключиться автоматично, якщо його ввімкнути й використовувати</translation>
diff --git a/chrome/app/resources/generated_resources_ur.xtb b/chrome/app/resources/generated_resources_ur.xtb
index bfb458b..95346d0 100644
--- a/chrome/app/resources/generated_resources_ur.xtb
+++ b/chrome/app/resources/generated_resources_ur.xtb
@@ -1118,6 +1118,7 @@
 <translation id="2034346955588403444">‏دوسرا WiFi نیٹ ورک شامل کریں</translation>
 <translation id="2035211704574173780">سرمئی اسکیل</translation>
 <translation id="203574396658008164">مقفل اسکرین سے نوٹ لینا فعال کریں</translation>
+<translation id="2036514476578229158">‏آپ نے یہ سائٹ ملاحظہ کرنے کی اجازت مانگی ہے۔ آپ کے والدین Family Link میں جواب دے سکتے ہیں۔</translation>
 <translation id="2037445849770872822">‏اس Google اکاؤنٹ کیلئے نگرانی ترتیب دے دی گئی ہے۔ مزید پیرنٹل کنٹرولز ترتیب دینے کیلئے، 'جاری رکھیں' منتخب کریں۔
 
 بصورت دیگر، ابھی سائن آؤٹ کریں تاکہ اس اکاؤنٹ میں کی گئی تبدیلیاں اس آلے پر دکھائی دیں۔
@@ -1239,6 +1240,7 @@
 <translation id="2135787500304447609">&amp;دوبارہ شروع کریں</translation>
 <translation id="2136372518715274136">نیا پاس ورڈ درج کریں</translation>
 <translation id="2136476978468204130">آپ کا درج کردہ پاس فریز غلط ہے</translation>
+<translation id="2137891579555018930">اجازت کا انتظار ہے...</translation>
 <translation id="2138398485845393913">"<ph name="DEVICE_NAME" />" کا کنکشن ابھی بھی پیشرفت میں ہے</translation>
 <translation id="2139919072249842737">بٹن سیٹ اپ کریں</translation>
 <translation id="2140788884185208305">بیٹری کی صحت</translation>
@@ -4114,6 +4116,7 @@
 <translation id="4858913220355269194">Fritz</translation>
 <translation id="4862642413395066333">‏سائننگ OCSP جوابات</translation>
 <translation id="4863769717153320198">‏<ph name="WIDTH" /> x <ph name="HEIGHT" /> جیسا نظر آتا ہے (ڈیفالٹ)</translation>
+<translation id="486459320933704969">یہ سائٹ ملاحظہ کرنے کے لئے آپ کے والد/والدہ یا سرپرست کو کہنا ہوگا کہ یہ آپ کے لئے ٹھیک ہے</translation>
 <translation id="4864805589453749318">والدین کو منتخب کریں جو اسکول اکاؤنٹ شامل کرنے کی اجازت دے رہے ہیں۔</translation>
 <translation id="486635084936119914">ڈاؤن لوڈ کرنے کے بعد مخصوص فائل کی قسموں کو کھولیں</translation>
 <translation id="4868281708609571334">‏Google اسسٹنٹ کو <ph name="SUPERVISED_USER_NAME" /> کی آواز کی شناخت کرنا سکھائیں</translation>
@@ -8671,6 +8674,7 @@
 <translation id="947329552760389097">&amp;عناصر کا معائنہ کریں</translation>
 <translation id="947526284350604411">آپ کا جواب</translation>
 <translation id="947667444780368238"><ph name="ORIGIN" /> اس فولڈر میں فائلیں نہیں کھول سکتا کیونکہ اس میں سسٹم کی فائلیں ہیں</translation>
+<translation id="949314938206378263">‏آپ نے یہ سائٹ ملاحظہ کرنے کی اجازت مانگی ہے۔ آپ کے والد/والدہ Family Link میں جواب دے سکتے ہیں۔</translation>
 <translation id="950307215746360464">سیٹ اپ کی گائیڈ</translation>
 <translation id="951991426597076286">مسترد کریں</translation>
 <translation id="952471655966876828">آلہ کے آن ہونے اور استعمال ہونے پر یہ خودکار طور پر منسلک ہو جائے گا</translation>
diff --git a/chrome/app/resources/generated_resources_uz.xtb b/chrome/app/resources/generated_resources_uz.xtb
index b537a05..331f06f8 100644
--- a/chrome/app/resources/generated_resources_uz.xtb
+++ b/chrome/app/resources/generated_resources_uz.xtb
@@ -71,6 +71,7 @@
 <translation id="1067048845568873861">Yaratilgan sanasi</translation>
 <translation id="1067661089446014701">Xavfsizlik maqsadlarida parollarni Google hisobiga saqlashdan avval qurilmada shifrlash mumkin</translation>
 <translation id="1067922213147265141">Boshqa Google xizmatlari</translation>
+<translation id="1069104208554708737">Bu kod faqatgina shu qurilmada saqlanadi</translation>
 <translation id="1069355737714877171"><ph name="PROFILE_NAME" /> nomli eSIM profilini olib tashlash</translation>
 <translation id="1069814191880976658">Boshqa oynani tanlang</translation>
 <translation id="1070377999570795893">Kompyuteringizdagi boshqa dastur bitta kengaytma o‘rnatdi. U Chrome brauzerinig ishlash usulini o‘zgartirishi mumkin.
@@ -347,6 +348,7 @@
 <translation id="1324106254079708331">Shaxsiy Google hisoblarini barcha maqsadli hujumlardan himoya qiladi</translation>
 <translation id="1327272175893960498">Kerberos chiptalari</translation>
 <translation id="1327495825214193325">ADB tuzatish vositalarini yoqish uchun <ph name="DEVICE_TYPE" /> qurilmasini oʻchirib yoqish zarur. ADB vositasini oʻchirish uchun qurilmani zavod sozlamalariga qaytarish kerak.</translation>
+<translation id="1327527584824210101">Kod ishlatish</translation>
 <translation id="1327794256477341646">Joylashuvga ruxsat talab qiladigan funksiyalar ishlamaydi</translation>
 <translation id="1331977651797684645">Bu men</translation>
 <translation id="1333489022424033687">Qurilmangizda boshqa saytlar tomonidan saqlangan maʼlumotlar tozalanmaguncha ayrim <ph name="ORIGIN" /> funksiyalari yaxshi ishlamasligi mumkin</translation>
@@ -407,6 +409,7 @@
 <translation id="139013308650923562">Qurilmangizga oʻrnatilgan shriftlardan foydalanishga ruxsat beradi</translation>
 <translation id="1390548061267426325">Oddiy ichki oynada ochish</translation>
 <translation id="1390907927270446471"><ph name="PROFILE_USERNAME" /> foydalanuvchisiga <ph name="PRINTER_NAME" /> printerida chop etishga ruxsat berilmagan. Administratorga murojaat qiling.</translation>
+<translation id="1392047138650695757">Foydalanuvchi lugʻatlari</translation>
 <translation id="1393283411312835250">Quyosh va bulutlar</translation>
 <translation id="1395730723686586365">Yangilash vositasi ishga tushdi</translation>
 <translation id="1395832189806039783">Elementni klaviatura fokusi orqali ajratib belgilash</translation>
@@ -1519,6 +1522,7 @@
 <translation id="2356070529366658676">So‘ralsin</translation>
 <translation id="2357330829548294574">Olib tashlash: <ph name="USER_NAME" /></translation>
 <translation id="2358561147588818967">Saytlar JavasSript ishlatishi mumkin</translation>
+<translation id="2358703245148663432">Boshqa qurilma</translation>
 <translation id="2358777858338503863"><ph name="ORIGIN" /> saytida ruxsat berish uchun bosing:</translation>
 <translation id="2359071692152028734">Linux ilovalari ishlamay qolishi mumkin.</translation>
 <translation id="2359345697448000899">Kengaytmalarni “Asbob va vositalar” menyusidagi “Kengaytmalar” bo‘limidan boshqarish mumkin.</translation>
@@ -1878,6 +1882,7 @@
 <translation id="271033894570825754">Yangi</translation>
 <translation id="2711073837061989559">Sinovlar</translation>
 <translation id="2712173769900027643">Ruxsat so‘rash</translation>
+<translation id="2712207122921938368">Boshqa qurilma uchun kod yaratish</translation>
 <translation id="2713106313042589954">Kamerani faolsizlantirish</translation>
 <translation id="2713444072780614174">Oq</translation>
 <translation id="2714393097308983682">Google Play Market</translation>
@@ -2391,6 +2396,7 @@
 <translation id="3182749001423093222">Imlo tekshiruvi</translation>
 <translation id="3183139917765991655">Profillar importi</translation>
 <translation id="3183143381919926261">Mobil internet tarmoqlari</translation>
+<translation id="3183613134231754987">Bu kod faqat Windows Helloda saqlanadi. Barcha inkognito oynalari yopilganidan keyin kod shu qurilmada qoladi.</translation>
 <translation id="3183944777708523606">Monitor joylashuv tartibi</translation>
 <translation id="3184536091884214176">CUPS printerlarni sozlash va boshqarish. <ph name="LINK_BEGIN" />Batafsil<ph name="LINK_END" /></translation>
 <translation id="3185014249447200271">{NUM_APPS,plural, =1{Bu ilova bloklandi}other{Ayrim ilovalar bloklandi}}</translation>
@@ -2399,6 +2405,7 @@
 <translation id="3188465121994729530">O‘zgaruvchan o‘rtacha qiymat</translation>
 <translation id="3189187154924005138">Katta kursor</translation>
 <translation id="3190558889382726167">Parol saqlandi</translation>
+<translation id="3192589799003798742">Chromebook uchun Steam sozlanmoqda</translation>
 <translation id="3192947282887913208">Audio fayllar</translation>
 <translation id="3193695589337931419">Tizim signallari vositalari</translation>
 <translation id="3194786596445804250">Tashqi cookie fayllar bloklanishi tafsilotini chiqarish</translation>
@@ -2538,6 +2545,7 @@
 <translation id="3341699307020049241">PIN kod xato. Yana <ph name="RETRIES" /> marta urinishingiz mumkin.</translation>
 <translation id="3341703758641437857">URL manzillardagi fayllarni o‘chishga ruxsat berish</translation>
 <translation id="3342361181740736773">“<ph name="TRIGGERING_EXTENSION_NAME" />” bu kengaytmani o‘chirib yubormoqchi.</translation>
+<translation id="3343977377045378693">Sozlanmoqda</translation>
 <translation id="3345135638360864351">Bu saytga kirish so‘rovingizni <ph name="NAME" />’ga yuborib bo‘lmadi. Qayta urinib ko‘ring.</translation>
 <translation id="3345634917232014253">Xavfsizlik tekshiruvi yaqinda bajarilgandi</translation>
 <translation id="3345886924813989455">Qo‘llab-quvvatlanadigan brauzerlar topilmadi</translation>
@@ -2549,6 +2557,7 @@
 <translation id="3354768182971982851">Chrome brauzerining eski versiyalari 2022-yil dekabr oyidan Mac qurilmalarida ochilmaydi. Yangilanishlar borligini quyidagicha tekshirish mumkin.</translation>
 <translation id="3354972872297836698"><ph name="DEVICE_NAME" /> qurilmasiga ulanmadi; qayta urinish uchun qurilmani tanlang</translation>
 <translation id="3355936511340229503">Ulanish xatoligi</translation>
+<translation id="3356036636691722598">Chromebookda oʻyinlardan bahra oling</translation>
 <translation id="3356469410714175391">(Virtual karta yoqildi)</translation>
 <translation id="3356580349448036450">Tayyor</translation>
 <translation id="3359256513598016054">Sertifikatlar siyosati cheklovlari</translation>
@@ -2869,6 +2878,7 @@
 <translation id="3654045516529121250">Maxsus imkoniyatlar sozlamalarini o‘qish</translation>
 <translation id="3655712721956801464">{NUM_FILES,plural, =1{1 ta faylga doimiy ruxsati bor.}other{# ta faylga doimiy ruxsati bor.}}</translation>
 <translation id="3658871634334445293">TrackPoint tezlatkichi</translation>
+<translation id="3659550105763988702"><ph name="APP_NAME" /> kodini ishlating</translation>
 <translation id="3659929705630080526">Koʻp marta ruxsat kodini xato kiritdingiz. Keyinroq qaytadan urining</translation>
 <translation id="3660234220361471169">Ishonchsiz</translation>
 <translation id="3664511988987167893">Kengaytma ikonkasi</translation>
@@ -3138,6 +3148,7 @@
 <translation id="3898327728850887246"><ph name="SITE_NAME" /> quyidagi ruxsatlarni olmoqchi: <ph name="FIRST_PERMISSION" /> va <ph name="SECOND_PERMISSION" /></translation>
 <translation id="389901847090970821">Klaviaturani tanlang</translation>
 <translation id="3900966090527141178">Parollarni eksport qilish</translation>
+<translation id="3902789559055749153"><ph name="APP_NAME" /> kodi qanday yaratilishini tanlang</translation>
 <translation id="3903187154317825986">Ichki klaviatura</translation>
 <translation id="3904326018476041253">Joylashuvni aniqlash xizmatlari</translation>
 <translation id="3904849010307028014">Doim hisobga kirish kabi saytdagi harakatlaringiz asosida sayt brauzerga ishonch tokenini taqdim qilishi mumkin. Keyinroq siz ochadigan boshqa saytlar ishonch tokeni yaroqliligini tekshirish orqali sizning bot emas shaxs ekanligingizni aniqlay oladi.</translation>
@@ -3463,11 +3474,13 @@
 <translation id="4211904048067111541">Android ilovlaridan foydalanishni toʻxatish</translation>
 <translation id="42126664696688958">Eksport</translation>
 <translation id="42137655013211669">Server bu manbaga kirishga ruxsat bermagan.</translation>
+<translation id="4214192212360095377">Hozircha faolsizlantirish</translation>
 <translation id="4217558091331485702">Ochishdan oldin tekshirilsin</translation>
 <translation id="4217571870635786043">Ovoz bilan yozish</translation>
 <translation id="4218081191298393750">Bu varaqni ovozsiz qilish uchun karnay belgisini bosing</translation>
 <translation id="4219558185499589032">Box</translation>
 <translation id="4220648711404560261">Sozlashda xatolik yuz berdi.</translation>
+<translation id="4223845867739585293">Kod yaratish</translation>
 <translation id="4225397296022057997">Barcha saytlarda</translation>
 <translation id="4228209296591583948">{NUM_EXTENSIONS,plural, =1{Bu kengaytmaga ruxsat berilmagan}other{Ayrim kengaytmalarga ruxsat berilmagan}}</translation>
 <translation id="4231095370974836764"><ph name="DEVICE_TYPE" /> qurilmasida Google Play Marketdan ilova va oʻyinlarni yuklab oling <ph name="LINK_BEGIN" />Batafsil<ph name="LINK_END" /></translation>
@@ -4112,6 +4125,7 @@
 <translation id="4838907349371614303">Parol yangilandi</translation>
 <translation id="4838958829619609362">Tanlov <ph name="LANGUAGE" /> tilida emas</translation>
 <translation id="4839303808932127586">Videoni saq&amp;lab olish...</translation>
+<translation id="4839910546484524995">Qurilmangizni tekshiring</translation>
 <translation id="4840096453115567876">Inkognito rejimidan baribir chiqilsinmi?</translation>
 <translation id="4841741146571978176">Talab qilingan virtual mashina mavjud emas. Davom etish uchun <ph name="VM_TYPE" /> turini sozlang</translation>
 <translation id="4842976633412754305">Sahifa tekshirilmagan manbalardan skriptlar yuklashga urinmoqda.</translation>
@@ -4365,6 +4379,7 @@
 <translation id="5089763948477033443">Yon panel oʻlcham dastagi</translation>
 <translation id="5090637338841444533">Kamerangiz joylashuvini kuzatish taqiqlangan</translation>
 <translation id="5093569275467863761">Inkognito rejimida orqaga qaytarilgan kesh subfreymi: <ph name="BACK_FORWARD_CACHE_INCOGNITO_PAGE_URL" /></translation>
+<translation id="5094042205195563542">Oʻrnatilishi boshlandi</translation>
 <translation id="5094176498302660097">Mos keladigan fayllarni bu ilova bilan Fayllar yoki boshqa ilovalar orqali ochishingiz va tahrirlashingiz mumkin. Bu ilova bilan standart holatda qaysi ilovalar ochilishini boshqarish uchun <ph name="BEGIN_LINK" />qurilmangizda standart ilovalarni sozlash haqida batafsil axborot oling<ph name="END_LINK" />.</translation>
 <translation id="5094721898978802975">Ichki o‘rnatilgan va bir biriga bog‘langan ilovalar bilan aloqa o‘rnatish</translation>
 <translation id="5097002363526479830">“<ph name="NAME" />” tarmog‘iga ulanmadi: <ph name="DETAILS" /></translation>
@@ -5022,6 +5037,7 @@
 <translation id="5729712731028706266">&amp;Ko‘rish</translation>
 <translation id="5731247495086897348">&amp;Joylash va o‘tish</translation>
 <translation id="5732392974455271431">Blokdan chiqarish uchun ota-onangizga murojaat qiling</translation>
+<translation id="5733109311583381874">Konversiya nomzodlarini moslash uchun foydalanuvchi lugʻatlariga oʻz soʻzlaringizni kiriting.</translation>
 <translation id="5733866499231170760">ID yaroqsiz. Yaroqsiz formatda kiritdingiz. Yoʻqnomani tekshiring va ID kodini namunada berilgan formatda kiriting. Muammoni hal qila olmasangiz, qatorni boʻsh tashlab keting va oʻrnatishni davom ettiring.</translation>
 <translation id="5734362860645681824">Uskunalar</translation>
 <translation id="5734697361979786483">Fayllarni ulashish sozlamasini kiritish</translation>
@@ -5130,6 +5146,7 @@
 <translation id="583431638776747">Sayt ishlamayotgan edi</translation>
 <translation id="5834581999798853053">Taxminan <ph name="TIME" /> daqiqa qoldi</translation>
 <translation id="5835486486592033703"><ph name="WINDOW_TITLE" /> – kamera yoki mikrofon yozib olmoqda</translation>
+<translation id="5835625581856809102">Bu QR kodni <ph name="APP_NAME" /> kodi yaratiladigan qurilma orqali skanerlang</translation>
 <translation id="583673505367439042">Saytlar qurilmangizdagi fayl yoki jildlarni tahrirlash uchun ruxsat soʻray oladi</translation>
 <translation id="5836999627049108525">Tarjima qilinishi kerak til</translation>
 <translation id="583756221537636748">Garnitura jild ichida</translation>
@@ -5372,6 +5389,7 @@
 <translation id="6059276912018042191">Chromedagi oxirgi varaqlar</translation>
 <translation id="6059652578941944813">Sertifikatlar iyerarxiyasi</translation>
 <translation id="6059925163896151826">USB qurilmalar</translation>
+<translation id="6061408389284235459"><ph name="DEVICE_NAME" /> qurilmasiga bildirishnoma yuborildi</translation>
 <translation id="6063284707309177505">QR kod yaratish</translation>
 <translation id="6063847492705284550"><ph name="BEGIN_BOLD" />Eslatma:<ph name="END_BOLD" /> Oʻxshash yoki yozib olingan ovozlar ham <ph name="SUPERVISED_USER_NAME" />ning shaxsiy natijalarini olishi mumkin. Batareyani tejash uchun <ph name="SUPERVISED_USER_NAME" />ning Assistent sozlamalari orqali “Ok Google” faqat qurilma quvvat manbasiga ulanganda ishlashini tanlash mumkin.</translation>
 <translation id="6064217302520318294">Ekran qulfi</translation>
@@ -5498,6 +5516,7 @@
 <translation id="6178664161104547336">Sertifikatni tanlang</translation>
 <translation id="6178682841350631965">Kirish maʼlumotlaringiz yangilandi</translation>
 <translation id="6180510783007738939">Chiziq vositasi</translation>
+<translation id="6180550893222597997"><ph name="APP_NAME" /> ilovasida qaysi kod ishlatilsin?</translation>
 <translation id="6181431612547969857">Yuklash olish taqiqlangan</translation>
 <translation id="6184099524311454384">Varaqlar ichidan qidirish</translation>
 <translation id="6185132558746749656">Qurilma joylashuvi</translation>
@@ -5934,6 +5953,7 @@
 <translation id="6596816719288285829">IP manzil</translation>
 <translation id="6597017209724497268">Namunalar</translation>
 <translation id="6597331566371766302">Quyidagi kengaytmalar administrator tomonidan bloklandi:</translation>
+<translation id="6601262427770154296">Foydalanuvchi lugʻatlarini boshqarish</translation>
 <translation id="6601612474695404578">Ayrim saytlar sahifalarini yuklashda tashqi cookie fayllarni ishlatadi. Agar sayt ishlamay qolsa, cookie fayllar yuklanishiga ruxsat berib koʻring.</translation>
 <translation id="6602937173026466876">Printerlarga ruxsat</translation>
 <translation id="6602956230557165253">Kezish uchun chapga va o‘ngga tugmalarini ishlating.</translation>
@@ -6295,6 +6315,7 @@
 <translation id="6943060957016121200">Tezkor modem rejimini yoqish</translation>
 <translation id="6943176775188458830">Chop etishni bekor qilish</translation>
 <translation id="6943939122536910181"><ph name="DEVICE" /> qurilmasidan uzildi</translation>
+<translation id="6944708469742828051">Bu kod faqatgina Windows Helloga saqlanadi</translation>
 <translation id="6945221475159498467">Tanlash</translation>
 <translation id="694592694773692225">Bu sahifada yo‘naltirish bloklandi.</translation>
 <translation id="6947015141909171112">Retseptlar oxirgi qidiruv tarixi asosida chiqyapti.
@@ -6387,6 +6408,7 @@
 <translation id="7014174261166285193">O‘rnatish amali bajarilmadi.</translation>
 <translation id="7014480873681694324">Belgilovni olib tashlash</translation>
 <translation id="7014741021609395734">Masshtab</translation>
+<translation id="7014961128696979283">Steamni ishga tushirish</translation>
 <translation id="7015088858756332848">Chromebook uchun Steam ishga tushmadi. Iltimos, qayta urining</translation>
 <translation id="7017004637493394352">Yana bir marta “Ok Google” deng</translation>
 <translation id="7017219178341817193">Sahifa qo‘shish</translation>
@@ -6546,6 +6568,7 @@
 <translation id="7193051357671784796">Bu ilova tashkilotingiz tomonidan kiritildi. Ilova oʻrnatilishini yakunlash uchun uni oʻchirib yoqing.</translation>
 <translation id="7193374945610105795"><ph name="ORIGIN" /> uchun birorta ham parol saqlanmagan</translation>
 <translation id="7194873994243265344">Bu fayl shifrlangani uchun tashkilotingiz uni bloklagan. Egasidan uning shifrini yechishini soʻrang.</translation>
+<translation id="7196272782924897510">Boshqa qurilma kodi ishlatilsinmi?</translation>
 <translation id="7196913789568937443">Google Drive xizmatiga zaxiralash. Axborotlaringizni osongina tiklashingiz yoki qurilmangizni xohlagan vaqtda almashtirishingiz mumkin. Zaxira ichida ilova ma’lumotlari ham bor. Zaxiralar Google serverlariga yuklanadi va Google hisobingiz paroli bilan shifrlanadi. <ph name="BEGIN_LINK1" />Batafsil axborot<ph name="END_LINK1" /></translation>
 <translation id="7197190419934240522">Qidiruv va boshqa Google xizmatlariga oʻzingizni yaxshiroq tanishtiring</translation>
 <translation id="719791532916917144">Tezkor tugma</translation>
@@ -6780,6 +6803,7 @@
 <translation id="7423425410216218516">Ochiqlik <ph name="MINUTES" /> daqiqaga yoqildi</translation>
 <translation id="7423513079490750513">Olib tashlash: <ph name="INPUT_METHOD_NAME" /></translation>
 <translation id="7423807071740419372"><ph name="APP_NAME" /> ishga tushishi uchun ruxsat berish kerak</translation>
+<translation id="7424153922653300265">Energiya tejalishi yoniq</translation>
 <translation id="7424818322350938336">Tarmoq kiritildi</translation>
 <translation id="7427315069950454694">bugun uchun xotiralaringiz</translation>
 <translation id="7427348830195639090">Orqa fon sahifasi: <ph name="BACKGROUND_PAGE_URL" /></translation>
@@ -7046,6 +7070,7 @@
 <translation id="7670483791111801022">Taglavhalar</translation>
 <translation id="7671130400130574146">Tizim sarlavhalar paneli va ramkalaridan foydalanish</translation>
 <translation id="767127784612208024">Asliga qaytarishni teginib tasdiqlang</translation>
+<translation id="7672504401554182757"><ph name="APP_NAME" /> kodi qaysi qurilmada saqlanishini tanlang</translation>
 <translation id="7672520070349703697"><ph name="HUNG_IFRAME_URL" />, <ph name="PAGE_TITLE" /> sahifasida.</translation>
 <translation id="7674416868315480713">Linuxdagi barcha yoʻnaltirilgan portlarni yopish</translation>
 <translation id="7674537509496907005"><ph name="APP_COUNT" /> ta ilova</translation>
@@ -7155,6 +7180,7 @@
 <translation id="7766807826975222231">Ko‘proq o‘rganish</translation>
 <translation id="7766838926148951335">Ruxsatlarni qabul qilish</translation>
 <translation id="7767554953520855281">Ekran namoyishida tafsilotlar berkitiladi</translation>
+<translation id="7767972280546034736"><ph name="APP_NAME" /> uchun kod yarating</translation>
 <translation id="7768507955883790804">Saytlarga tashrif vaqtida bu sozlama avtomatik tatbiq qilinadi</translation>
 <translation id="7768526219335215384"><ph name="ORIGIN" /> sayti <ph name="FOLDERNAME" /> jildidagi fayllarni ocha oladi</translation>
 <translation id="7768770796815395237">Oʻzgartirish</translation>
@@ -7638,6 +7664,7 @@
 <translation id="820568752112382238">Eng koʻp ochilgan saytlar</translation>
 <translation id="8206745257863499010">Blyuz</translation>
 <translation id="8206859287963243715">Uyali</translation>
+<translation id="8207404892907560325">Kodni tanlash</translation>
 <translation id="8208216423136871611">Saqlanmasin</translation>
 <translation id="8210398899759134986">{MUTED_NOTIFICATIONS_COUNT,plural, =1{Yangi bildirishnoma}other{# ta yangi bildirishnoma}}</translation>
 <translation id="821119981794423735">Parollarni <ph name="USER_EMAIL" /> uchun Google Parollar menejeriga import qilish uchun CSV faylni tanlang</translation>
@@ -7811,6 +7838,7 @@
 <translation id="8376137163494131156">Google Cast bilan bogʻliq fikr-mulohazalaringizni ulashing.</translation>
 <translation id="8376384591331888629">Bu saytdagi tashqi cookie fayllariga ham</translation>
 <translation id="8376451933628734023">Agar bu veb ilova shubhali ishlasa, uni oʻchirib tashlang.</translation>
+<translation id="8377625247046155446">Bu kod faqat shu qurilmada saqlanadi Barcha inkognito oynalari yopilganidan keyin kod shu qurilmada qoladi.</translation>
 <translation id="8378714024927312812">Tashkilotingiz tomonidan boshqariladi</translation>
 <translation id="8379156816349755485">Kirish vaqtida autentifikatsiya tokeni saqlanib qoladi va keyingi yuklab olishlar uchun ishlatiladi.</translation>
 <translation id="8379878387931047019">Bu qurilmada sayt so‘ragan kalit turi mavjud emas</translation>
@@ -8019,6 +8047,7 @@
 <translation id="859246725979739260">Bu sayt uchun joylashuvingiz axborotidan foydalanish taqiqlandi</translation>
 <translation id="8593121833493516339">Foydalanish va diagnostika axborotini yuborish. Diagnostika hamda qurilma va ilovadan foydalanish statistikasini Google kompaniyasiga avtomatik yuborish orqali Androidni yaxshilashga yordam bering. Ushbu axborotdan farzandingiz shaxsini aniqlash uchun foydalanilmaydi. Ular tizim va ilovalar barqarorligi kabilarni yaxshilash uchun ishlatiladi. Ayrim toʻplangan maʼlumotlar Android dasturchilar kabi hamkorlarimizga ham oʻz ilovalari va mahsulotlarini yanada yaxshilashga yordam beradi. Agar farzandingiz uchun Kengaytirilgan veb-qidiruv va ilovalar tarixi yoqilgan boʻlsa, bu maʼlumotlar uning Google hisobiga saqlanadi. <ph name="BEGIN_LINK1" />Batafsil<ph name="END_LINK1" /></translation>
 <translation id="8596540852772265699">Foydalanuvchi fayllari</translation>
+<translation id="8597404194697561297">Chromebook uchun Steamga xush kelibsiz</translation>
 <translation id="8597845839771543242">Xususiyatlar formati:</translation>
 <translation id="8599681327221583254">Bir yoki undan ortiq qoida xato sozlangan. Administratorga murojaat qiling</translation>
 <translation id="8599864823732014237">Korporativ qayd qilish qoldirilsinmi?</translation>
@@ -8633,6 +8662,7 @@
       <ph name="LIST_ITEM" />Chrome tarmoqlar diagnostikasini ishga tushiring
     <ph name="END_LIST" /></translation>
 <translation id="916607977885256133">Tasvir ustida tasvir</translation>
+<translation id="9166253503936244008">Bu QR kodni <ph name="APP_NAME" /> kodi bor qurilma orqali skanerlang</translation>
 <translation id="9167063903968449027">Saqlangan sahifalarni chiqarish</translation>
 <translation id="9167450455589251456">Profil ishlamaydi</translation>
 <translation id="9168436347345867845">Keyinroq</translation>
diff --git a/chrome/app/resources/generated_resources_zh-HK.xtb b/chrome/app/resources/generated_resources_zh-HK.xtb
index 5d5fb75..d9352c91 100644
--- a/chrome/app/resources/generated_resources_zh-HK.xtb
+++ b/chrome/app/resources/generated_resources_zh-HK.xtb
@@ -1134,6 +1134,7 @@
 <translation id="2034346955588403444">新增其他 Wi-Fi 網絡</translation>
 <translation id="2035211704574173780">灰階</translation>
 <translation id="203574396658008164">從上鎖畫面啟用筆記功能</translation>
+<translation id="2036514476578229158">你已要求造訪這個網站,家長可以透過 Family Link 回覆要求。</translation>
 <translation id="2037445849770872822">您已設定此 Google 帳戶的監控功能。如要設定更多家長監控設定,請選取 [繼續]。
 
 如果不想繼續設定,請立即登出。您對此帳戶作出的變更會在此裝置上反映。
@@ -1255,6 +1256,7 @@
 <translation id="2135787500304447609">繼續(&amp;R)</translation>
 <translation id="2136372518715274136">輸入新密碼</translation>
 <translation id="2136476978468204130">您輸入的密碼短語不正確</translation>
+<translation id="2137891579555018930">正在等待許可...</translation>
 <translation id="2138398485845393913">仍在連線至「<ph name="DEVICE_NAME" />」</translation>
 <translation id="2139919072249842737">設定按鈕</translation>
 <translation id="2140788884185208305">電池壽命</translation>
@@ -4145,6 +4147,7 @@
 <translation id="4858913220355269194">飛球</translation>
 <translation id="4862642413395066333">簽署 OCSP 回應</translation>
 <translation id="4863769717153320198">解像度:<ph name="WIDTH" /> x <ph name="HEIGHT" /> (預設)</translation>
+<translation id="486459320933704969">你必須獲得家長或監護人許可,才能造訪這個網站</translation>
 <translation id="4864805589453749318">請選取要授予新增學校帳戶權限的家長。</translation>
 <translation id="486635084936119914">下載特定類型的檔案後自動開啟</translation>
 <translation id="4868281708609571334">訓練「Google 助理」識別<ph name="SUPERVISED_USER_NAME" />的聲音</translation>
@@ -8724,6 +8727,7 @@
 <translation id="947329552760389097">檢查元素 (&amp;I)</translation>
 <translation id="947526284350604411">您的答案</translation>
 <translation id="947667444780368238">由於資料夾中包含系統檔案,<ph name="ORIGIN" /> 無法開啟此資料夾中的檔案</translation>
+<translation id="949314938206378263">你已要求造訪這個網站,家長可以透過 Family Link 回覆要求。</translation>
 <translation id="950307215746360464">設定指南</translation>
 <translation id="951991426597076286">拒絕</translation>
 <translation id="952471655966876828">當裝置開啟,而且正在使用時,裝置將會自動連線</translation>
diff --git a/chrome/app/resources/generated_resources_zh-TW.xtb b/chrome/app/resources/generated_resources_zh-TW.xtb
index 6538f543..4e655302 100644
--- a/chrome/app/resources/generated_resources_zh-TW.xtb
+++ b/chrome/app/resources/generated_resources_zh-TW.xtb
@@ -2,6 +2,7 @@
 <!DOCTYPE translationbundle>
 <translationbundle lang="zh-TW">
 <translation id="1001033507375626788">已與你共用這個網路</translation>
+<translation id="1002085272681738789">讓分頁恢復「使用中」狀態</translation>
 <translation id="1003088604756913841">在新的「<ph name="APP" />」視窗中開啟連結</translation>
 <translation id="100323615638474026">USB 裝置 (<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />)</translation>
 <translation id="1004218526896219317">網站存取權</translation>
@@ -321,6 +322,7 @@
 <translation id="1296911687402551044">固定所選分頁</translation>
 <translation id="1297175357211070620">目的地</translation>
 <translation id="129770436432446029">提供你對「<ph name="EXPERIMENT_NAME" />」的意見</translation>
+<translation id="130097046531636712">在這個模式下,系統會限制背景活動和順暢捲動等視覺效果,以延長電池續航力</translation>
 <translation id="1301135395320604080"><ph name="ORIGIN" /> 可以編輯下列檔案</translation>
 <translation id="1302227299132585524">允許 Apple 事件的 JavaScript</translation>
 <translation id="1303101771013849280">HTML 格式的書籤檔案</translation>
@@ -379,6 +381,7 @@
 <translation id="1361655923249334273">未使用</translation>
 <translation id="1362865166188278099">發生機械故障。請檢查印表機</translation>
 <translation id="1363585519747660921">請設定 USB 印表機</translation>
+<translation id="136378536198524553">節能模式已開啟</translation>
 <translation id="1368603372088757436">「<ph name="DEVICE_TYPE" />」不支援 Linux。<ph name="LINK_BEGIN" />瞭解詳情<ph name="LINK_END" /></translation>
 <translation id="1372841398847029212">同步到你的帳戶</translation>
 <translation id="1373176046406139583">裝置分享設定可以控制當螢幕處於解鎖狀態時,哪些人能夠與你分享內容。<ph name="LINK_BEGIN" />瞭解詳情<ph name="LINK_END" /></translation>
@@ -648,6 +651,7 @@
 <translation id="1610272688494140697">應用程式設定</translation>
 <translation id="161042844686301425">青色</translation>
 <translation id="1611432201750675208">你的裝置已遭到鎖定</translation>
+<translation id="1611776894942218234">裝置必須搭載 Beta 版</translation>
 <translation id="1612019740169791082">你目前的容器設定不允許調整磁碟大小。如要調整 Linux 的預留空間大小,請先備份容器,然後再還原至新容器。</translation>
 <translation id="1613019471223620622">在 <ph name="DOMAIN" /> 上顯示 <ph name="USERNAME" /> 的密碼</translation>
 <translation id="1613149688105334014">2022 年 12 月之後,舊版 Chrome 應用程式將無法開啟。你也可以自行檢查是否有可用的新版本。</translation>
@@ -1118,6 +1122,7 @@
 <translation id="2034346955588403444">新增其他 WiFi 網路</translation>
 <translation id="2035211704574173780">灰階</translation>
 <translation id="203574396658008164">允許在螢幕鎖定狀態下建立記事</translation>
+<translation id="2036514476578229158">你已要求造訪這個網站,家長可以透過 Family Link 回覆要求。</translation>
 <translation id="2037445849770872822">你已設定這個 Google 帳戶的監督功能。如要設定更多家長監護功能,請選取 [繼續]。
 
 如果不想繼續設定,請立即登出,你對這個帳戶所做的變更即會反映到此裝置上。
@@ -1203,6 +1208,7 @@
 <translation id="2098805196501063469">檢查其餘密碼</translation>
 <translation id="2099686503067610784">要刪除伺服器憑證「<ph name="CERTIFICATE_NAME" />」嗎?</translation>
 <translation id="2100273922101894616">自動登入</translation>
+<translation id="2100986609271491802">這部裝置目前不支援 Steam Chromebook 版</translation>
 <translation id="2101225219012730419">版本:</translation>
 <translation id="2102396546234652240">禁止網站使用麥克風</translation>
 <translation id="2102495993840063010">Android 應用程式</translation>
@@ -1238,6 +1244,7 @@
 <translation id="2135787500304447609">繼續(&amp;R)</translation>
 <translation id="2136372518715274136">輸入新密碼</translation>
 <translation id="2136476978468204130">你輸入的通關密語不正確</translation>
+<translation id="2137891579555018930">正在等待許可...</translation>
 <translation id="2138398485845393913">仍在連線至「<ph name="DEVICE_NAME" />」</translation>
 <translation id="2139919072249842737">「設定」按鈕</translation>
 <translation id="2140788884185208305">電池壽命</translation>
@@ -1498,6 +1505,9 @@
 <translation id="2350133097354918058">已重新載入</translation>
 <translation id="2350182423316644347">正在初始化應用程式...</translation>
 <translation id="235028206512346451">如果你不在裝置前方,系統會自動鎖定螢幕;當你回到裝置前方時,系統就會解除鎖定螢幕。假如未設定螢幕鎖定,則裝置會進入休眠狀態,而不是鎖定螢幕。</translation>
+<translation id="2350866610930767288"><ph name="BEGIN_PARAGRAPH1" />如果你在安裝展示模式時收到輸入零售商店 ID 的操作說明,請在右側輸入 ID*。你也可以將這個欄位留空並繼續操作。<ph name="END_PARAGRAPH1" />
+    <ph name="BEGIN_PARAGRAPH2" />雖然不需要 ID 也能安裝展示模式,但如果你的商店需要這個 ID,請務必填寫這個欄位。<ph name="END_PARAGRAPH2" />
+    <ph name="BEGIN_PARAGRAPH3" />*注意:Google 會使用這類 ID 確認裝置應接收的展示模式版本,並評估展示模式的使用方式。<ph name="END_PARAGRAPH3" /></translation>
 <translation id="2352495879228166246">{NUM_ITEMS,plural, =1{1 個項目}other{{NUM_ITEMS} 個項目}}</translation>
 <translation id="2352662711729498748">&lt; 1 MB</translation>
 <translation id="2352810082280059586">螢幕鎖定記事內容會自動儲存到「<ph name="LOCK_SCREEN_APP_NAME" />」。你最近的記事仍會保留在鎖定畫面上。</translation>
@@ -1948,6 +1958,7 @@
 <translation id="2776560192867872731">為「<ph name="DEVICE_NAME" />」變更裝置名稱</translation>
 <translation id="2777251078198759550">刪除這個容器</translation>
 <translation id="2778471504622896352">將遠端應用程式新增至 Chrome OS 啟動器</translation>
+<translation id="2781120507965857989">開啟同步功能後,你就可以在這部裝置及任何其他保持同步的位置上取得你的書籤、密碼、歷史記錄等等。Google 可能會使用你的歷史記錄,為你提供個人化的搜尋服務和其他各項 Google 服務。</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2782104745158847185">安裝 Linux 應用程式時發生錯誤</translation>
 <translation id="2783298271312924866">已下載</translation>
@@ -1968,6 +1979,7 @@
 <translation id="2792697226874849938">限制圖片</translation>
 <translation id="2794233252405721443">網站遭到封鎖</translation>
 <translation id="2794522004398861033">如要設定 eSIM 卡,請連上 Wi-Fi 或乙太網路</translation>
+<translation id="2795074478966352573">目前並不支援透過 Family Link 管理的帳戶</translation>
 <translation id="2795716239552913152">網站通常會使用你的位置資訊,以提供地方新聞或附近商家等相關功能或資訊</translation>
 <translation id="2796424461616874739">驗證在連線至「<ph name="DEVICE_NAME" />」時逾時。</translation>
 <translation id="2796740370559399562">繼續允許 Cookie</translation>
@@ -2153,6 +2165,7 @@
 <translation id="2949289451367477459">使用定位服務。允許具有位置存取權的應用程式和服務使用這個裝置的位置資訊。Google 可能會定期收集位置資料,並以匿名方式使用這類資料,藉此提高定位精確度及改善適地性服務。<ph name="BEGIN_LINK1" />瞭解詳情<ph name="END_LINK1" /></translation>
 <translation id="2950666755714083615">我要訂閱</translation>
 <translation id="2953019166882260872">使用傳輸線連接手機</translation>
+<translation id="2953218713108551165">你並未允許 <ph name="SITE" /> 傳送通知,系統會在你下次造訪時再次詢問。</translation>
 <translation id="2956070239128776395">群組中有巢狀區段:<ph name="ERROR_LINE" /></translation>
 <translation id="2958721676848865875">封裝擴充功能警告</translation>
 <translation id="2959127025785722291">發生錯誤,無法完成掃描作業。請再試一次。</translation>
@@ -2861,6 +2874,7 @@
 <translation id="3665919494326051362">目前的版本是 <ph name="CURRENT_VERSION" /></translation>
 <translation id="3670113805793654926">來自任何供應商的裝置</translation>
 <translation id="3670229581627177274">開啟藍牙功能</translation>
+<translation id="3672663996348587094">按一下即可允許「<ph name="EXTENSIONS_REQUESTING_ACCESS" />」存取 <ph name="ORIGIN" />:</translation>
 <translation id="3672681487849735243">系統偵測到原廠錯誤</translation>
 <translation id="3673097791729989571">登入作業由 <ph name="SAML_DOMAIN" /> 代管</translation>
 <translation id="3673622964532248901">你的權限不足,無法投放到這部裝置。</translation>
@@ -3375,6 +3389,7 @@
 <translation id="4132183752438206707">在 Google Play 商店中尋找應用程式</translation>
 <translation id="4132364317545104286">重新命名 eSIM 卡設定檔</translation>
 <translation id="4133076602192971179">開啟應用程式以變更密碼</translation>
+<translation id="4134818201340504801">可用儲存空間不足,因此無法完成設定。請釋出儲存空間,然後再試一次</translation>
 <translation id="4135746311382563554">《Google Chrome 和 ChromeOS 附加服務條款》</translation>
 <translation id="4136203100490971508">夜燈功能將於日出時自動關閉</translation>
 <translation id="41365691917097717">如果繼續,系統將啟用 ADB 偵錯功能建立及測試 Android 應用程式。請注意,這項操作會允許你安裝未經 Google 驗證的 Android 應用程式,而且必須將裝置恢復原廠設定才能停用。</translation>
@@ -3611,6 +3626,7 @@
 <translation id="4378556263712303865">裝置申請</translation>
 <translation id="4379281552162875326">要解除安裝「<ph name="APP_NAME" />」嗎?</translation>
 <translation id="4380648069038809855">已開啟全螢幕模式</translation>
+<translation id="4383048856908088702">當這個分頁處於閒置狀態時,記憶體節省模式會釋出 <ph name="MEMORY_VALUE" /> 的記憶體給其他工作。你隨時可以前往「<ph name="SETTINGS_LINK" />」變更這項設定。</translation>
 <translation id="4384312707950789900">加入慣用網路</translation>
 <translation id="4384652540891215547">啟用擴充功能</translation>
 <translation id="4384886290276344300">變更鍵盤設定</translation>
@@ -3688,6 +3704,7 @@
 <translation id="4451479197788154834">你已將密碼儲存在這部裝置上和 Google 帳戶中</translation>
 <translation id="4451757071857432900">已封鎖干擾性或誤導性的網站廣告 (建議)</translation>
 <translation id="4453946976636652378">執行 <ph name="SEARCH_ENGINE_NAME" /> 搜尋或輸入網址</translation>
+<translation id="4458535500699390320">當這個分頁處於閒置狀態時,記憶體節省模式會釋出記憶體給其他工作。你隨時可以前往設定進行變更。</translation>
 <translation id="4459169140545916303">上次使用時間:<ph name="DEVICE_LAST_ACTIVATED_TIME" /> 天前</translation>
 <translation id="4460014764210899310">取消分組</translation>
 <translation id="4462159676511157176">自訂名稱伺服器</translation>
@@ -3859,6 +3876,7 @@
 <translation id="4613271546271159013">擴充功能已變更開啟新分頁時所顯示的頁面。</translation>
 <translation id="4615586811063744755">未選取任何 Cookie</translation>
 <translation id="461661862154729886">電源</translation>
+<translation id="461676224702246336">點選這個網站時</translation>
 <translation id="4617001782309103936">太短</translation>
 <translation id="4617019240346358451">重新載入網頁以使用「<ph name="EXTENSION_NAME" />」</translation>
 <translation id="4617270414136722281">擴充功能選項</translation>
@@ -3981,6 +3999,7 @@
 <translation id="4728558894243024398">平台</translation>
 <translation id="4728570203948182358"><ph name="BEGIN_LINK" />系統管理員<ph name="END_LINK" />已停用有害軟體的檢查功能</translation>
 <translation id="4730492586225682674">在螢幕鎖定狀態下顯示以觸控筆記錄的最新筆記</translation>
+<translation id="4730888769809690665">你已允許 <ph name="SITE" /> 傳送通知</translation>
 <translation id="473140019006744096">裝置空間不足,無法完成這項更新作業。請在裝置上釋出 <ph name="NECESSARY_SPACE" /> 的空間,然後再試一次。</translation>
 <translation id="4733161265940833579"><ph name="BATTERY_PERCENTAGE" />% (左側)</translation>
 <translation id="4733793249294335256">位置</translation>
@@ -4111,6 +4130,7 @@
 <translation id="4858913220355269194">飛球</translation>
 <translation id="4862642413395066333">簽署 OCSP 回應</translation>
 <translation id="4863769717153320198">螢幕解析度:<ph name="WIDTH" /> x <ph name="HEIGHT" /> (預設)</translation>
+<translation id="486459320933704969">你必須獲得家長或監護人許可,才能造訪這個網站</translation>
 <translation id="4864805589453749318">請選取要授予新增學校帳戶權限的家長。</translation>
 <translation id="486635084936119914">下載特定類型的檔案後自動開啟</translation>
 <translation id="4868281708609571334">訓練 Google 助理辨識<ph name="SUPERVISED_USER_NAME" />的聲音</translation>
@@ -4283,6 +4303,7 @@
 <translation id="5032430150487044192">無法建立 QR 圖碼</translation>
 <translation id="5033137252639132982">不得使用動作感應器</translation>
 <translation id="5033266061063942743">幾何形狀</translation>
+<translation id="5034000993065629381">請與管理員聯絡</translation>
 <translation id="5037676449506322593">全選</translation>
 <translation id="5038818366306248416">你先前已選擇不允許 <ph name="ORIGIN" /> 上的任何擴充功能</translation>
 <translation id="5039696241953571917">查看及管理 Google 帳戶中儲存的密碼</translation>
@@ -4413,6 +4434,7 @@
 <translation id="5161251470972801814">來自 <ph name="VENDOR_NAME" /> 的 USB 裝置</translation>
 <translation id="5162905305237671850">「<ph name="DEVICE_TYPE" />」已遭到封鎖</translation>
 <translation id="5163910114647549394">分頁已移至分頁列尾端</translation>
+<translation id="5164530241085602114">你不允許 <ph name="SITE" /> 傳送通知</translation>
 <translation id="516747639689914043">超文字傳輸通訊協定 (HTTP)</translation>
 <translation id="5170568018924773124">在資料夾中顯示</translation>
 <translation id="5171045022955879922">搜尋或輸入網址</translation>
@@ -4515,6 +4537,7 @@
 <translation id="5269977353971873915">列印失敗</translation>
 <translation id="5273806377963980154">編輯網站網址</translation>
 <translation id="5275084684151588738">使用者字典</translation>
+<translation id="5275100789567222478">只在電池電量為 <ph name="PERCENT" />% 以下時開啟</translation>
 <translation id="5275338516105640560">「已儲存至分頁群組」按鈕</translation>
 <translation id="5275352920323889391">狗</translation>
 <translation id="527605719918376753">關閉分頁音訊</translation>
@@ -4533,6 +4556,7 @@
 <translation id="5285635972691565180">螢幕 <ph name="DISPLAY_ID" /></translation>
 <translation id="5286194356314741248">掃描中</translation>
 <translation id="5287425679749926365">你的帳戶</translation>
+<translation id="5288106344236929384">其他操作,<ph name="USERNAME" /> 在 <ph name="DOMAIN" /> 的密碼金鑰選項</translation>
 <translation id="5288678174502918605">重新開啟先前關閉的分頁(&amp;E)</translation>
 <translation id="52895863590846877">網頁原文不是<ph name="LANGUAGE" /></translation>
 <translation id="52912272896845572">秘密金鑰檔案無效。</translation>
@@ -4728,6 +4752,7 @@
 <translation id="5473099001878321374">如果選擇繼續,即表示您允許這部裝置自動下載及安裝來自 Google、貴子女的電信業者和裝置製造商的更新內容和應用程式,上述程序可能會使用行動數據。這類應用程式中,有些可能會提供應用程式內購。</translation>
 <translation id="5473156705047072749">{NUM_CHARACTERS,plural, =1{PIN 碼必須包含至少一個字元}other{PIN 碼必須包含至少 # 個字元}}</translation>
 <translation id="5474859849784484111"><ph name="MANAGER" /> 要求你立即連線到 Wi-Fi 下載更新,或使用計量付費連線下載更新 (可能要支付流量費用)。</translation>
+<translation id="5476016146231427848">如要使用 Steam Chrome 版,請重新啟動裝置</translation>
 <translation id="5481273127572794904">不得自動下載多個檔案</translation>
 <translation id="5481941284378890518">新增附近的印表機</translation>
 <translation id="5483785310822538350">撤銷檔案和裝置存取權</translation>
@@ -4945,6 +4970,7 @@
 <translation id="5683806393796685434">請輸入啟用代碼</translation>
 <translation id="5684181005476681636">Wi-Fi 詳細資料</translation>
 <translation id="5684661240348539843">資產 ID</translation>
+<translation id="5684969244627829799">請登入使用者帳戶,然後再試一次</translation>
 <translation id="5687326903064479980">時區</translation>
 <translation id="5687935527303996204">確保你的裝置已接上電源並保持啟動狀態。安裝程序最多可能需要 20 分鐘才能完成。安裝完成後,該裝置會自動關機。</translation>
 <translation id="5689516760719285838">位置</translation>
@@ -5071,6 +5097,7 @@
 <translation id="5805697420284793859">視窗管理員</translation>
 <translation id="5806447147478173900">所顯示網站使用的總儲存空間:<ph name="TOTAL_USAGE" /></translation>
 <translation id="5806773519584576205">0° (預設)</translation>
+<translation id="5810603387504252966">必須前往 chrome://flags 啟用 #borealis-enabled</translation>
 <translation id="5810809306422959727">這個帳戶無法使用家長監護功能</translation>
 <translation id="5811614940486072060">這個檔案不是常見的下載項目,內容可能不安全</translation>
 <translation id="5812674658566766066">全部展開</translation>
@@ -5150,6 +5177,7 @@
 <translation id="5882449899683447569">發生錯誤,系統並未匯入密碼</translation>
 <translation id="5882919346125742463">已知網路</translation>
 <translation id="5883356647197510494">已自動封鎖:<ph name="PERMISSION_1" />、<ph name="PERMISSION_2" /></translation>
+<translation id="5884447826201752041">自訂各個擴充功能</translation>
 <translation id="5884474295213649357">這個分頁已連上 USB 裝置。</translation>
 <translation id="5885314688092915589">貴機構將管理這個設定檔</translation>
 <translation id="5886009770935151472">手指 1</translation>
@@ -5588,6 +5616,7 @@
 <translation id="6301300352769835063">允許 Google 使用硬體資料來協助改善 <ph name="DEVICE_OS" />。如果拒絕,這項資料仍會傳送給 Google 以判斷適當的更新內容,但不會儲存或用於其他用途。如要瞭解詳情,請前往 g.co/flex/HWDataCollection。</translation>
 <translation id="630292539633944562">個人資訊建議</translation>
 <translation id="6305607932814307878">全域政策:</translation>
+<translation id="6305909198255586420">請使用主要設定檔安裝</translation>
 <translation id="6307990684951724544">系統忙碌中</translation>
 <translation id="6308493641021088955">登入資訊提供者:<ph name="EXTENSION_NAME" /></translation>
 <translation id="6308937455967653460">另存連結為(&amp;K)...</translation>
@@ -5909,6 +5938,7 @@
 <translation id="6608166463665411119">重設 eSIM 卡</translation>
 <translation id="6609478180749378879">系統會在無痕模式結束後將登入資料儲存在這部裝置上。你可以再次透過這部裝置登入這個網站。</translation>
 <translation id="6610002944194042868">翻譯選項</translation>
+<translation id="6611907964265870728">請確認裝置已連上網際網路</translation>
 <translation id="6611972847767394631">你可以在這裡找到已開啟的分頁</translation>
 <translation id="6613668613087513143">裝置空間不足,無法完成這項更新作業。請在裝置上釋出 <ph name="NECESSARY_SPACE" /> 的空間,然後在 Chrome 瀏覽器中再試一次。</translation>
 <translation id="6615455863669487791">顯示</translation>
@@ -6297,6 +6327,7 @@
 <translation id="697508444536771064">關閉 Linux</translation>
 <translation id="6975361011348772931">已要求讀取及變更</translation>
 <translation id="6978121630131642226">搜尋引擎</translation>
+<translation id="6979041727349121225">節能模式</translation>
 <translation id="6979044105893951891">啟動及結束受管理的訪客工作階段</translation>
 <translation id="6979158407327259162">Google 雲端硬碟</translation>
 <translation id="6979440798594660689">靜音 (預設)</translation>
@@ -6349,6 +6380,7 @@
 <translation id="7014174261166285193">安裝失敗。</translation>
 <translation id="7014480873681694324">移除醒目顯示</translation>
 <translation id="7014741021609395734">縮放比例</translation>
+<translation id="7015088858756332848">無法啟動 Steam Chromebook 版,請再試一次</translation>
 <translation id="7017004637493394352">再說一次「Ok Google」</translation>
 <translation id="7017219178341817193">新增網頁</translation>
 <translation id="7017354871202642555">無法在視窗建立之後再設定模式。</translation>
@@ -6725,6 +6757,7 @@
 <translation id="7409854300652085600">已匯入書籤。</translation>
 <translation id="7410344089573941623">當 <ph name="HOST" /> 要求存取攝影機和麥克風時詢問我。</translation>
 <translation id="7410852728357935715">投放到裝置</translation>
+<translation id="7411614333737930931">請重新啟動裝置,然後再試一次</translation>
 <translation id="741204030948306876">是,我要啟用</translation>
 <translation id="7412226954991670867">GPU 記憶體</translation>
 <translation id="7414464185801331860">18 倍</translation>
@@ -6955,6 +6988,7 @@
 <translation id="7635048370253485243">已由系統管理員固定</translation>
 <translation id="7636919061354591437">安裝到這部裝置</translation>
 <translation id="7637253234491814483">請輕觸鍵盤右上角 (即電源按鈕旁) 的指紋感應器,你的指紋資料會安全地儲存在 <ph name="DEVICE_TYPE" /> 上,絕不會外洩。</translation>
+<translation id="7637272932128132922">當這個分頁處於閒置狀態時,記憶體節省模式會釋出記憶體給其他工作。你隨時可以前往「<ph name="SETTINGS_LINK" />」變更這項設定。</translation>
 <translation id="7637593984496473097">磁碟空間不足</translation>
 <translation id="7639914187072011620">無法從伺服器擷取 SAML 重新導向網址</translation>
 <translation id="764017888128728"><ph name="PASSWORD_MANAGER_BRAND" /> 會使用您儲存的密碼,讓您自動登入符合資格的網站。</translation>
@@ -7071,6 +7105,7 @@
 <translation id="7728668285692163452">系統會在稍後套用版本變更</translation>
 <translation id="7730449930968088409">擷取你的畫面內容</translation>
 <translation id="7730683939467795481">「<ph name="EXTENSION_NAME" />」擴充功能已變更這個頁面</translation>
+<translation id="7735165285389721951">正在執行另一項 Steam 設定,請等到該設定完成後再試</translation>
 <translation id="7737115349420013392">正在與「<ph name="DEVICE_NAME" />」配對…</translation>
 <translation id="7737846262459425222">你隨時可以前往 [設定] &gt; [Google 助理] &gt; [畫面內容] 變更這項設定。</translation>
 <translation id="7737948071472253612">不得使用攝影機</translation>
@@ -7369,6 +7404,7 @@
 金鑰檔案:<ph name="KEY_FILE" />
 
 請妥善保管你的金鑰檔案;建立新版本的擴充功能時將需要使用該金鑰檔案。</translation>
+<translation id="8001100670809322641">請稍候片刻,然後再試一次</translation>
 <translation id="8002274832045662704">進階印表機設定</translation>
 <translation id="8002670234429879764">「<ph name="PRINTER_NAME" />」已無法使用</translation>
 <translation id="8004092996156083991">如果密碼外洩,我們會通知你。</translation>
@@ -7378,6 +7414,7 @@
 <translation id="8008356846765065031">網路連線中斷,請檢查你的網際網路連線。</translation>
 <translation id="8009225694047762179">管理密碼</translation>
 <translation id="8011372169388649948">已移動「<ph name="BOOKMARK_TITLE" />」。</translation>
+<translation id="8011875486979733097">無法安裝 Steam</translation>
 <translation id="8012647001091218357">我們暫時無法與您的家長聯絡,請再試一次。</translation>
 <translation id="8013993649590906847">如果圖片缺少有用的說明,Chrome 會嘗試為你提供說明。系統會將圖片傳送給 Google,以便產生說明。</translation>
 <translation id="8014154204619229810">正在執行更新程式。請稍後片刻,重新整理之後再試一次。</translation>
@@ -7468,6 +7505,7 @@
 <translation id="808894953321890993">變更密碼</translation>
 <translation id="8090234456044969073">讀取最常造訪的網站清單</translation>
 <translation id="8090513782447872344">你可以日後隨時返回查看</translation>
+<translation id="809312780580957751">無法在這部裝置上安裝 Steam</translation>
 <translation id="8093359998839330381">「<ph name="PLUGIN_NAME" />」無回應</translation>
 <translation id="8095105960962832018"><ph name="BEGIN_PARAGRAPH1" />備份到 Google 雲端硬碟。你隨時可以輕鬆還原資料或改用其他裝置。備份內容包含應用程式資料。<ph name="END_PARAGRAPH1" />
     <ph name="BEGIN_PARAGRAPH2" />備份內容會上傳到 Google 並以你的 Google 帳戶密碼加密。<ph name="END_PARAGRAPH2" />
@@ -7563,6 +7601,7 @@
 <translation id="8177318697334260664">{NUM_TABS,plural, =1{將分頁移到新視窗}other{將分頁移到新視窗}}</translation>
 <translation id="8179188928355984576">無法存取 Android 應用程式</translation>
 <translation id="8179976553408161302">Enter</translation>
+<translation id="8180785270975217276">節能模式已開啟</translation>
 <translation id="8180786512391440389">「<ph name="EXTENSION" />」可以讀取及刪除勾選位置中的圖片、影片和音訊檔案。</translation>
 <translation id="8181215761849004992">無法加入網域。請檢查你的帳戶是否有新增裝置的必要權限。</translation>
 <translation id="8182105986296479640">應用程式無回應。</translation>
@@ -7685,6 +7724,7 @@
 <translation id="828642162569365647">這個密碼或 PIN 碼會保護你在這部 <ph name="DEVICE_TYPE" /> 上的資料,還有你從手機存取的任何資訊。每次要喚醒 <ph name="DEVICE_TYPE" /> 時,你都必須解鎖裝置。</translation>
 <translation id="8287902281644548111">依 API 呼叫/網址搜尋</translation>
 <translation id="8288032458496410887">解除安裝「<ph name="APP" />」...</translation>
+<translation id="8288539437195337464">請確認裝置是最新版本,然後再試一次</translation>
 <translation id="8289128870594824098">磁碟大小</translation>
 <translation id="8289509909262565712">歡迎使用 <ph name="DEVICE_OS" /></translation>
 <translation id="8293206222192510085">新增書籤</translation>
@@ -7979,6 +8019,7 @@
 <translation id="8599864823732014237">要略過企業註冊嗎?</translation>
 <translation id="8601206103050338563">TLS WWW 用戶端驗證</translation>
 <translation id="8601611099293226919">使用 Google 智慧鏡頭搜尋你的螢幕畫面</translation>
+<translation id="8602674530529411098">應用程式 (Beta 版)</translation>
 <translation id="8602851771975208551">電腦中其他程式所新增的應用程式可能會變更 Chrome 的運作方式。</translation>
 <translation id="8605428685123651449">SQLite 記憶體使用量</translation>
 <translation id="8608618451198398104">新增 Kerberos 票證</translation>
@@ -8663,10 +8704,12 @@
 <translation id="939598580284253335">請輸入通關密語</translation>
 <translation id="939736085109172342">新增資料夾</translation>
 <translation id="942532530371314860"><ph name="APP_NAME" /> 正在共用 Chrome 分頁和音訊。</translation>
+<translation id="944799160843436808">設定 Steam Chromebook 版時發生問題</translation>
 <translation id="945522503751344254">提供意見</translation>
 <translation id="947329552760389097">檢查元素 (&amp;I)</translation>
 <translation id="947526284350604411">你的答覆</translation>
 <translation id="947667444780368238"><ph name="ORIGIN" /> 無法開啟此資料夾的檔案,因為資料夾中包含系統檔案</translation>
+<translation id="949314938206378263">你已要求造訪這個網站,家長可以透過 Family Link 回覆要求。</translation>
 <translation id="950307215746360464">設定指南</translation>
 <translation id="951991426597076286">拒絕</translation>
 <translation id="952471655966876828">裝置開啟或處於使用狀態時,會自動連線</translation>
@@ -8687,6 +8730,7 @@
 <translation id="968000525894980488">開啟 Google Play 服務。</translation>
 <translation id="968037381421390582">貼上「<ph name="SEARCH_TERMS" />」並執行搜尋</translation>
 <translation id="969096075394517431">變更語言</translation>
+<translation id="969574218206797926">Chromium 會將閒置分頁占用的記憶體釋出給使用中的分頁和其他應用程式</translation>
 <translation id="970047733946999531">{NUM_TABS,plural, =1{1 個分頁}other{# 個分頁}}</translation>
 <translation id="971510864672937292">要對 <ph name="SITE_NAME" /> 和其底下的所有網站清除相關網站資料和權限嗎?</translation>
 <translation id="971774202801778802">書籤網址</translation>
diff --git a/chrome/app/resources/google_chrome_strings_af.xtb b/chrome/app/resources/google_chrome_strings_af.xtb
index 18c5880..94c2d65 100644
--- a/chrome/app/resources/google_chrome_strings_af.xtb
+++ b/chrome/app/resources/google_chrome_strings_af.xtb
@@ -133,6 +133,7 @@
 <translation id="3360895254066713204">Chrome-helper</translation>
 <translation id="3379938682270551431">{0,plural, =0{Chrome sal nou herbegin}=1{Chrome sal oor 1 sekonde herbegin}other{Chrome sal oor # sekondes herbegin}}</translation>
 <translation id="3396977131400919238">'n Bedryfstelselfout het met installering voorgekom. Laai Google Chrome asseblief weer af.</translation>
+<translation id="3426646014273736870">Geheuebespaarder het Chrome vinniger gemaak</translation>
 <translation id="3428747202529429621">Hou jou veilig op Chrome en kan gebruik word om jou sekuriteit in ander Google-programme te verbeter wanneer jy aangemeld is</translation>
 <translation id="3434246496373299699">Chrome kan jou wagwoorde nagaan as jy met jou Google-rekening aanmeld</translation>
 <translation id="3451115285585441894">Voeg tans by Chrome …</translation>
@@ -234,6 +235,7 @@
 
 Google Chrome kan nie jou instellings terugstel nie.</translation>
 <translation id="5524761631371622910">Wanneer proeflopies aan is en Chrome jou lukraak vir ’n aktiewe proeflopie gekies het, sal jou blaaigeskiedenis die advertensies wat jy sien, beïnvloed asook die belangstellings soos hieronder geskat. Chrome vee elke maand jou belangstellings op ’n rollende basis uit om jou privaatheid te beskerm.</translation>
+<translation id="5530733413481476019">Maak Chrome vinniger</translation>
 <translation id="556024056938947818">Google Chrome probeer tans om wagwoorde te wys.</translation>
 <translation id="5566025111015594046">Google Chrome (mDNS-In)</translation>
 <translation id="565744775970812598"><ph name="FILE_NAME" /> kan gevaarlik wees en daarom het Chrome dit geblokkeer.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_az.xtb b/chrome/app/resources/google_chrome_strings_az.xtb
index 4a653063..7dd0dd1d 100644
--- a/chrome/app/resources/google_chrome_strings_az.xtb
+++ b/chrome/app/resources/google_chrome_strings_az.xtb
@@ -130,6 +130,7 @@
 <translation id="3360895254066713204">Chrome Yardımçısı</translation>
 <translation id="3379938682270551431">{0,plural, =0{Chrome indi yenidən başlayacaq}=1{Chrome 1 saniyəyə yenidən başlayacaq}other{Chrome # saniyəyə yenidən başlayacaq}}</translation>
 <translation id="3396977131400919238">Quraşdırma zamanı əməliyyat xətası baş verdi. Lütfən, Google Chrome'u endirin.</translation>
+<translation id="3426646014273736870">Yaddaşa Qənaət Chrome'u daha sürətli etdi</translation>
 <translation id="3428747202529429621">Daxil olduğunuzda Chrome'da sizi qoruyur və digər Google tətbiqlərində təhlükəsizliyinizi artırmaq üçün istifadə edilə bilər</translation>
 <translation id="3434246496373299699">Google Hesabınız ilə daxil olduqda Chrome parollarınızı yoxlaya bilər</translation>
 <translation id="3451115285585441894">Chrome'a əlavə olunur...</translation>
@@ -229,6 +230,7 @@
 <translation id="5412485296464121825">Saytlar maraqlarınız haqqında Chrome ilə məlumat saxlaya bilər. Məsələn, marafona ayaqqabı almaq üçün sayta daxil olsanız, sayt marağınızı qaçış marafonu kimi müəyyən edə bilər. Sonra yarışa yazılmaq üçün başqa sayta daxil olsanız, həmin sayt maraqlarınız əsasında sizə qaçış ayaqqabısı reklamı göstərə bilər.</translation>
 <translation id="5430073640787465221">Tərcih faylınız zədələnib və ya yanlışdır.  Google Chrome ayarlarınızı bərpa edə bilmir.</translation>
 <translation id="5524761631371622910">Sınaqlar aktiv olduqda və Chrome təsadüfi olaraq sizi aktiv sınağa təyin edibsə, baxış tarixçəniz gördüyünüz reklamlara və aşağıda təxmin edilən maraqlara təsir edir. Məxfiliyinizi qorumaq üçün Chrome hər ay maraqlarınızı növbəlilik əsasında silir.</translation>
+<translation id="5530733413481476019">Chrome'u sürətli edin</translation>
 <translation id="556024056938947818">Google Chrome parolları göstərməyə cəhd edir.</translation>
 <translation id="5566025111015594046">Google Chrome (mDNS-In)</translation>
 <translation id="565744775970812598"><ph name="FILE_NAME" /> təlükəli ola bilər, bu səbəbdən Chrome onu blok etdi.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_bg.xtb b/chrome/app/resources/google_chrome_strings_bg.xtb
index 85259eb9..329c383 100644
--- a/chrome/app/resources/google_chrome_strings_bg.xtb
+++ b/chrome/app/resources/google_chrome_strings_bg.xtb
@@ -254,6 +254,7 @@
 <translation id="608006075545470555">Добавяне на служебен потребителски профил към този браузър</translation>
 <translation id="6113794647360055231">Chrome се подобри</translation>
 <translation id="6145313976051292476">Отваряне на PDF файловете в Chrome</translation>
+<translation id="6155960517327665396">Режимът за икономия на памет ускори работата на Chrome</translation>
 <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation>
 <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> – Google Chrome бета</translation>
 <translation id="6235018212288296708">Правило за Google Chrome за допускане на входящия трафик за mDNS.</translation>
@@ -354,6 +355,7 @@
 <translation id="8286862437124483331">Google Chrome опитва да покаже паролите. За да разрешите това, въведете паролата си за Windows.</translation>
 <translation id="828798499196665338">Някой от родителите ви е изключил разрешенията за сайтове, приложения и разширения за Chrome. Активирането на <ph name="EXTENSION_TYPE_PARAMETER" /> не е разрешено.</translation>
 <translation id="8290100596633877290">О, не! Google Chrome претърпя срив. Да се стартира ли отново сега?</translation>
+<translation id="8341646175450781745">Когато функцията е включена, Chrome освобождава памет от неактивните раздели. Така активните раздели и другите приложения разполагат с повече компютърни ресурси и Chrome не се забавя. Неактивните ви раздели автоматично се активират отново, когато се върнете към тях. <ph name="BEGIN_LINK" />Научете повече<ph name="END_LINK" /> или <ph name="BEGIN_LINK_2" />изпратете отзиви<ph name="END_LINK_2" /></translation>
 <translation id="8342675569599923794">Chrome блокира този файл, тъй като е опасен.</translation>
 <translation id="8349795646647783032"><ph name="BEGIN_BOLD" />Как използваме тези данни<ph name="END_BOLD" />: Сайтовете могат да съхраняват в Chrome информация за интересите ви. Ако например посетите даден сайт, за да купите обувки за маратон, той може да определи, че се интересувате от маратони. В случай че по-късно посетите друг сайт, за да се регистрирате за състезание, той може да ви покаже реклама на обувки за бягане въз основа на интересите ви.</translation>
 <translation id="8370517070665726704">Авторски права <ph name="YEAR" /> г. Google LLC. Всички права запазени.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_bs.xtb b/chrome/app/resources/google_chrome_strings_bs.xtb
index 7932b0d..4e92a1e 100644
--- a/chrome/app/resources/google_chrome_strings_bs.xtb
+++ b/chrome/app/resources/google_chrome_strings_bs.xtb
@@ -133,6 +133,7 @@
 <translation id="3360895254066713204">Pomoćnik za Chrome</translation>
 <translation id="3379938682270551431">{0,plural, =0{Chrome će se sada ponovo pokrenuti}=1{Chrome će se ponovo pokrenuti za 1 sekundu}one{Chrome će se ponovo pokrenuti za # sekundu}few{Chrome će se ponovo pokrenuti za # sekunde}other{Chrome će se ponovo pokrenuti za # sekundi}}</translation>
 <translation id="3396977131400919238">Došlo je do greške operativnog sistema prilikom instalacije. Ponovo preuzmite Google Chrome.</translation>
+<translation id="3426646014273736870">Ušteda memorije ubrzava rada Chromea</translation>
 <translation id="3428747202529429621">Štiti vas na Chromeu i može se koristiti da poboljša vašu sigurnost u drugim Google aplikacijama kada ste prijavljeni</translation>
 <translation id="3434246496373299699">Chrome može provjeravati vaše lozinke kada se prijavite pomoću Google računa</translation>
 <translation id="3451115285585441894">Dodavanje u Chrome...</translation>
@@ -232,6 +233,7 @@
 <translation id="5412485296464121825">Web lokacije mogu pohranjivati informacije o vašim interesovanjima u Chromeu. Naprimjer, ako posjetite web lokaciju da kupite obuću za maraton, ta web lokacija može definirati vaše interesovanje za trčanje maratona. Kasnije, kada posjetite drugu web lokaciju da se registrirate za utrku, ta web lokacija vam može prikazati oglas koji prikazuje obuću za trčanje, na osnovu vaših interesovanja.</translation>
 <translation id="5430073640787465221">Datoteka vaših postavki oštećena je ili nevažeća. Google Chrome nema mogućnost oporavka vaših postavki.</translation>
 <translation id="5524761631371622910">Tokom probnog perioda i ako vas je Chrome nasumično ubacio u aktivni probni period, vaša historija pregledanja utiče na oglase koje vidite i interesovanja, kao što je procijenjeno u nastavku. Da zaštiti vašu privatnost, Chrome automatski briše interesovanja na mjesečnoj osnovi.</translation>
+<translation id="5530733413481476019">Ubrzajte Chrome</translation>
 <translation id="556024056938947818">Google Chrome pokušava prikazati lozinke.</translation>
 <translation id="5566025111015594046">Google Chrome (mDNS-In)</translation>
 <translation id="565744775970812598">Fajl <ph name="FILE_NAME" /> može biti opasan, pa ga je Chrome blokirao.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ca.xtb b/chrome/app/resources/google_chrome_strings_ca.xtb
index d11a3de..b026ee1 100644
--- a/chrome/app/resources/google_chrome_strings_ca.xtb
+++ b/chrome/app/resources/google_chrome_strings_ca.xtb
@@ -252,6 +252,7 @@
 <translation id="608006075545470555">Afegeix un perfil de treball a aquest navegador</translation>
 <translation id="6113794647360055231">Chrome és millor que mai</translation>
 <translation id="6145313976051292476">Obre els fitxers PDF a Chrome</translation>
+<translation id="6155960517327665396">L'estalvi de memòria ha fet que Chrome sigui més ràpid</translation>
 <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation>
 <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> - Google Chrome Beta</translation>
 <translation id="6235018212288296708">Regla d'entrada de Google Chrome per permetre el trànsit de mDNS.</translation>
@@ -352,6 +353,7 @@
 <translation id="8286862437124483331">Google Chrome està provant de mostrar contrasenyes. Escriviu la vostra contrasenya de Windows per permetre-ho.</translation>
 <translation id="828798499196665338">Els teus pares han desactivat Permisos per a llocs web, aplicacions i extensions en relació amb Chrome. No es permet activar aquesta <ph name="EXTENSION_TYPE_PARAMETER" />.</translation>
 <translation id="8290100596633877290">Google Chrome s'ha bloquejat. Voleu tornar-lo a iniciar?</translation>
+<translation id="8341646175450781745">Quan aquesta opció està activada, Chrome allibera memòria de les pestanyes inactives. Així, les pestanyes actives i altres aplicacions disposen de més recursos de l'ordinador i es manté l'agilitat de Chrome. Les pestanyes inactives s'activen de nou automàticament quan hi tornes. <ph name="BEGIN_LINK" />Obtén més informació<ph name="END_LINK" /> o <ph name="BEGIN_LINK_2" />envia suggeriments<ph name="END_LINK_2" />.</translation>
 <translation id="8342675569599923794">Chrome ha bloquejat aquest fitxer perquè és perillós.</translation>
 <translation id="8349795646647783032"><ph name="BEGIN_BOLD" />Com utilitzem aquestes dades<ph name="END_BOLD" />: els llocs web poden emmagatzemar informació a Chrome sobre els teus interessos. Per exemple, si visites un lloc web per comprar sabatilles per a una marató, és possible que el lloc web defineixi que t'interessa córrer maratons. Més endavant, si visites un altre lloc web per inscriure't a una cursa, aquest altre lloc web et pot mostrar un anunci de sabatilles de curses basant-se en els teus interessos.</translation>
 <translation id="8370517070665726704">Copyright <ph name="YEAR" /> Google LLC. Tots els drets reservats.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_cy.xtb b/chrome/app/resources/google_chrome_strings_cy.xtb
index 32e2bf6..9e6cb791 100644
--- a/chrome/app/resources/google_chrome_strings_cy.xtb
+++ b/chrome/app/resources/google_chrome_strings_cy.xtb
@@ -260,6 +260,7 @@
 <translation id="608006075545470555">Ychwanegu Proffil Gwaith i'r porwr hwn</translation>
 <translation id="6113794647360055231">Gwnaeth Chrome wella</translation>
 <translation id="6145313976051292476">Agor ffeiliau PDF yn Chrome</translation>
+<translation id="6155960517327665396">Mae Arbedwr Cof wedi gwneud Chrome yn gyflymach</translation>
 <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation>
 <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> - Google Chrome Beta</translation>
 <translation id="6235018212288296708">Rheol dod i mewn ar gyfer Google Chrome i ganiatáu traffig mDNS.</translation>
@@ -360,6 +361,7 @@
 <translation id="8286862437124483331">Mae Google Chrome yn ceisio dangos cyfrineiriau. Teipiwch eich cyfrinair Windows i ganiatáu hyn.</translation>
 <translation id="828798499196665338">Mae dy riant wedi diffodd "Caniatadau ar gyfer gwefannau, apiau ac estyniadau" ar gyfer Chrome. Ni chaniateir galluogi'r <ph name="EXTENSION_TYPE_PARAMETER" /> hwn.</translation>
 <translation id="8290100596633877290">Whoa! Mae Google Chrome wedi torri. Ail-lansio nawr?</translation>
+<translation id="8341646175450781745">Pan fydd ymlaen, mae Chrome yn rhyddhau cof o dabiau anweithredol. Mae hyn yn rhoi mwy o adnoddau cyfrifiadurol i dabiau gweithredol ac apiau eraill ac yn cadw Chrome yn gyflym. Mae eich tabiau anweithredol yn dod yn weithredol eto yn awtomatig pan fyddwch yn dychwelyd atynt. <ph name="BEGIN_LINK" />Dysgu rhagor<ph name="END_LINK" /> neu <ph name="BEGIN_LINK_2" />anfon adborth<ph name="END_LINK_2" /></translation>
 <translation id="8342675569599923794">Mae'r ffeil hon yn beryglus, felly mae Chrome wedi ei rhwystro.</translation>
 <translation id="8349795646647783032"><ph name="BEGIN_BOLD" />Sut rydym yn defnyddio'r data hyn:<ph name="END_BOLD" /> Gall gwefannau storio gwybodaeth am eich diddordebau gyda Chrome. Er enghraifft, os ydych yn ymweld â gwefan i brynu esgidiau ar gyfer marathon, mae'n bosib y bydd y wefan yn diffinio'ch diddordeb fel rhedeg marathon. Yn ddiweddarach, os byddwch yn ymweld â gwefan wahanol i gofrestru ar gyfer ras, gall y wefan honno ddangos hysbyseb i chi ar gyfer esgidiau rhedeg yn seiliedig ar eich diddordebau.</translation>
 <translation id="8370517070665726704">Hawlfraint <ph name="YEAR" /> Google LLC. Cedwir pob hawl.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_da.xtb b/chrome/app/resources/google_chrome_strings_da.xtb
index 5bd4a087..3bdad7a4 100644
--- a/chrome/app/resources/google_chrome_strings_da.xtb
+++ b/chrome/app/resources/google_chrome_strings_da.xtb
@@ -252,6 +252,7 @@
 <translation id="608006075545470555">Føj arbejdsprofilen til denne browser</translation>
 <translation id="6113794647360055231">Chrome er blevet bedre</translation>
 <translation id="6145313976051292476">Åbn PDF-filer i Chrome</translation>
+<translation id="6155960517327665396">Hukommelsessparefunktion har gjort Chrome hurtigere</translation>
 <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> – Google Chrome</translation>
 <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> – Google Chrome beta</translation>
 <translation id="6235018212288296708">Indgående regel for Google Chrome om at tillade mDNS-trafik.</translation>
@@ -352,6 +353,7 @@
 <translation id="8286862437124483331">Google Chrome forsøger at vise adgangskoder. Angiv din Windows-adgangskode for at tillade dette.</translation>
 <translation id="828798499196665338">Din forælder har deaktiveret "Tilladelser til websites, apps og udvidelser" for Chrome. Det er ikke tilladt at aktivere denne <ph name="EXTENSION_TYPE_PARAMETER" />.</translation>
 <translation id="8290100596633877290">Hovsa! Google Chrome er gået ned. Vil du genstarte nu?</translation>
+<translation id="8341646175450781745">Når indstillingen er aktiveret, frigør Chrome hukommelse fra inaktive faner. Dette tildeler aktive faner og andre apps flere computerressourcer og gør Chrome hurtig. Dine inaktive faner bliver automatisk aktive igen, når du vender tilbage til dem. <ph name="BEGIN_LINK" />Få flere oplysninger<ph name="END_LINK" />, eller <ph name="BEGIN_LINK_2" />send feedback<ph name="END_LINK_2" /></translation>
 <translation id="8342675569599923794">Denne fil er farlig, så Chrome har blokeret den.</translation>
 <translation id="8349795646647783032"><ph name="BEGIN_BOLD" />Sådan bruger vi disse data:<ph name="END_BOLD" /> Websites kan gemme oplysninger med Chrome om dine interesser. Hvis du f.eks. besøger et website for at købe sko til et maraton, kan websitet muligvis definere, at din interesse er at løbe maraton. Hvis du derefter besøger et andet website for at tilmelde dig et løb, kan det website vise dig en annonce for løbesko baseret på dine interesser.</translation>
 <translation id="8370517070665726704">Copyright <ph name="YEAR" /> Google LLC. Alle rettigheder forbeholdes.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_el.xtb b/chrome/app/resources/google_chrome_strings_el.xtb
index 7ff63a7..86cf6091 100644
--- a/chrome/app/resources/google_chrome_strings_el.xtb
+++ b/chrome/app/resources/google_chrome_strings_el.xtb
@@ -256,6 +256,7 @@
 <translation id="608006075545470555">Προσθήκη προφίλ εργασίας σε αυτό το πρόγραμμα περιήγησης</translation>
 <translation id="6113794647360055231">Το Chrome έγινε ακόμα καλύτερο</translation>
 <translation id="6145313976051292476">Άνοιγμα αρχείων PDF στο Chrome</translation>
+<translation id="6155960517327665396">Η Εξοικονόμηση μνήμης έκανε το Chrome πιο γρήγορο</translation>
 <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation>
 <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> - Google Chrome Beta</translation>
 <translation id="6235018212288296708">Εισερχόμενος κανόνας για το Google Chrome για να επιτρέπεται η κυκλοφορία του mDNS.</translation>
@@ -356,6 +357,7 @@
 <translation id="8286862437124483331">Το Google Chrome προσπαθεί να εμφανίσει τους κωδικούς πρόσβασης. Πληκτρολογήστε τον κωδικό πρόσβασής σας Windows για να το επιτρέψετε αυτό.</translation>
 <translation id="828798499196665338">Ο γονέας σου απενεργοποίησε την επιλογή "Άδειες για ιστοτόπους, εφαρμογές και επεκτάσεις" για το Chrome. Η ενεργοποίηση του στοιχείου <ph name="EXTENSION_TYPE_PARAMETER" /> δεν επιτρέπεται.</translation>
 <translation id="8290100596633877290">Πω πω! Το Google Chrome παρουσίασε σφάλμα. Επανεκκίνηση τώρα;</translation>
+<translation id="8341646175450781745">Όταν η ρύθμιση είναι ενεργή, το Chrome αποδεσμεύει μνήμη από τις ανενεργές καρτέλες. Αυτό προσφέρει στις ενεργές καρτέλες και σε άλλες εφαρμογές περισσότερους πόρους υπολογιστή και διατηρεί το Chrome γρήγορο. Οι ανενεργές καρτέλες σας ενεργοποιούνται ξανά αυτόματα, όταν επιστρέψετε σε αυτές. <ph name="BEGIN_LINK" />Μάθετε περισσότερα<ph name="END_LINK" /> ή <ph name="BEGIN_LINK_2" />στείλτε σχόλια<ph name="END_LINK_2" /></translation>
 <translation id="8342675569599923794">Αυτό το αρχείο είναι επικίνδυνο και έχει αποκλειστεί από το Chrome.</translation>
 <translation id="8349795646647783032"><ph name="BEGIN_BOLD" />Πώς χρησιμοποιούμε αυτά τα δεδομένα:<ph name="END_BOLD" /> Οι ιστότοποι μπορούν να αποθηκεύουν πληροφορίες σχετικά με τα ενδιαφέροντά σας στο Chrome. Για παράδειγμα, εάν επισκεφτείτε έναν ιστότοπο για να αγοράσετε παπούτσια για έναν μαραθώνιο, ο ιστότοπος μπορεί να ορίσει τους μαραθώνιους τρεξίματος ως ενδιαφέρον σας. Αργότερα, εάν επισκεφτείτε έναν διαφορετικό ιστότοπο για να εγγραφείτε σε έναν αγώνα, αυτός ο ιστότοπος μπορεί να σας εμφανίσει μια διαφήμιση για παπούτσια τρεξίματος με βάση τα ενδιαφέροντά σας.</translation>
 <translation id="8370517070665726704">Πνευματικά δικαιώματα <ph name="YEAR" /> Google LLC. Με την επιφύλαξη παντός δικαιώματος.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_es.xtb b/chrome/app/resources/google_chrome_strings_es.xtb
index ed3bc8c..7cdc078 100644
--- a/chrome/app/resources/google_chrome_strings_es.xtb
+++ b/chrome/app/resources/google_chrome_strings_es.xtb
@@ -32,7 +32,7 @@
 <translation id="1587223624401073077">Google Chrome está utilizando la cámara.</translation>
 <translation id="1587325591171447154"><ph name="FILE_NAME" /> es peligroso, por lo que Chrome lo ha bloqueado.</translation>
 <translation id="1597911401261118146">Para comprobar si tus contraseñas han sufrido quiebras de seguridad de datos u otros problemas de seguridad, <ph name="BEGIN_LINK" />inicia sesión en Chrome<ph name="END_LINK" />.</translation>
-<translation id="1599904803480101533">Chrome ha bloqueado este archivo porque puede ocultar software malicioso</translation>
+<translation id="1599904803480101533">Chrome ha bloqueado este archivo porque puede ocultar malware</translation>
 <translation id="1619887657840448962">Para aumentar la seguridad de Chrome, hemos inhabilitado la siguiente extensión que no figura en <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> y que puede haberse añadido sin tu conocimiento.</translation>
 <translation id="1627304841979541023"><ph name="BEGIN_BOLD" />Cómo puedes gestionar tus datos:<ph name="END_BOLD" /> para proteger tu privacidad, eliminamos automáticamente tus intereses si tienen una antigüedad superior a 4 semanas. A medida que sigas navegando, es posible que un interés vuelva a aparecer en la lista. También puedes eliminar los intereses que no quieras que Chrome tenga en cuenta.</translation>
 <translation id="1628000112320670027">Obtener ayuda de Chrome</translation>
@@ -42,7 +42,7 @@
 <translation id="1682634494516646069">Google Chrome no puede leer el directorio de datos ni escribir en él:
 
 <ph name="USER_DATA_DIRECTORY" /></translation>
-<translation id="1698376642261615901">Google Chrome es un navegador web que ejecuta aplicaciones y páginas web a gran velocidad. Es rápido, estable y fácil de utilizar. Navega por la Web de forma más segura gracias a la protección integrada contra suplantación de identidad y software malicioso.</translation>
+<translation id="1698376642261615901">Google Chrome es un navegador web que ejecuta aplicaciones y páginas web a gran velocidad. Es rápido, estable y fácil de utilizar. Navega por la Web de forma más segura gracias a la protección integrada contra suplantación de identidad y malware.</translation>
 <translation id="1713301662689114961">{0,plural, =1{Chrome se reiniciará dentro de 1 hora}other{Chrome se reiniciará dentro de # horas}}</translation>
 <translation id="1734234790201236882">Chrome guardará esta contraseña en tu cuenta de Google para que no tengas que recordarla.</translation>
 <translation id="1759842336958782510">Chrome</translation>
@@ -74,7 +74,7 @@
 <translation id="2290014774651636340">Faltan las claves de la API de Google. Se inhabilitarán algunas funciones de Google Chrome.</translation>
 <translation id="2290095356545025170">¿Seguro que quieres desinstalar Google Chrome?</translation>
 <translation id="2309047409763057870">Esta instalación de Google Chrome es secundaria, por lo que no se puede establecer como navegador predeterminado.</translation>
-<translation id="2345992953227471816">Chrome ha detectado que estas extensiones contienen software malicioso:</translation>
+<translation id="2345992953227471816">Chrome ha detectado que estas extensiones contienen malware:</translation>
 <translation id="2348335408836342058">Chrome necesita permiso para acceder a la cámara y al micrófono en este sitio web</translation>
 <translation id="234869673307233423">Chrome no puede comprobar tus contraseñas. Vuelve a intentarlo más tarde.</translation>
 <translation id="235650106824528204">El administrador del perfil de trabajo puede quitar cualquier dato de Chrome generado durante el uso de este perfil, como los marcadores, el historial, las contraseñas y otros ajustes. <ph name="LEARN_MORE" /></translation>
@@ -146,7 +146,7 @@
 <translation id="3582972582564653026">Sincroniza y personaliza Chrome en todos tus dispositivos</translation>
 <translation id="3596080736082218006">{COUNT,plural, =0{Tu administrador pide que reinicies Chrome para aplicar una actualización}=1{Tu administrador pide que reinicies Chrome para aplicar una actualización. La ventana de Incógnito no se volverá a abrir.}other{Tu administrador pide que reinicies Chrome para aplicar una actualización. Las # ventanas de Incógnito no se volverán a abrir.}}</translation>
 <translation id="3622797965165704966">Ahora es más fácil utilizar Chrome con tu cuenta de Google y en ordenadores compartidos.</translation>
-<translation id="3673813398384385993">Chrome ha detectado que "<ph name="EXTENSION_NAME" />" contiene software malicioso</translation>
+<translation id="3673813398384385993">Chrome ha detectado que "<ph name="EXTENSION_NAME" />" contiene malware</translation>
 <translation id="3703994572283698466">ChromeOS se ha creado gracias a <ph name="BEGIN_LINK_CROS_OSS" />software libre<ph name="END_LINK_CROS_OSS" /> adicional, como el <ph name="BEGIN_LINK_LINUX_OSS" />entorno de desarrollo de Linux<ph name="END_LINK_LINUX_OSS" />.</translation>
 <translation id="3716540481907974026">Versión de ChromeOS Flex</translation>
 <translation id="3718181793972440140">Se eliminará un elemento de este dispositivo. Para recuperar tus datos en otro momento, inicia sesión en Chrome como <ph name="USER_EMAIL" />.</translation>
@@ -184,7 +184,7 @@
 <translation id="4335235004908507846">Chrome puede protegerte frente a quiebras de seguridad de datos, extensiones dañinas y mucho más</translation>
 <translation id="4343195214584226067"><ph name="EXTENSION_NAME" /> se ha añadido a Chrome</translation>
 <translation id="4384570495110188418">Chrome no puede comprobar tus contraseñas porque no has iniciado sesión</translation>
-<translation id="4427306783828095590">La protección mejorada es más eficaz para bloquear ataques de suplantación de identidad y software malicioso.</translation>
+<translation id="4427306783828095590">La protección mejorada es más eficaz para bloquear ataques de suplantación de identidad y malware.</translation>
 <translation id="4450664632294415862">Chrome, inicio de sesión en la red, <ph name="PAGE_TITLE" /></translation>
 <translation id="4458462641685292929">Hay otra operación en curso en Google Chrome. Vuelve a intentarlo más tarde.</translation>
 <translation id="4459234553906210702">La medición de anuncios permite a los sitios que visitas pedir a Chrome información que les ayude a medir el rendimiento de sus anuncios. La medición de anuncios restringe el seguimiento entre sitios al transferir la menor cantidad de información posible entre ellos.</translation>
@@ -371,7 +371,7 @@
 <translation id="8433638294851456451">Para enviar un número desde aquí a tu teléfono Android, inicia sesión en Chrome con ambos dispositivos.</translation>
 <translation id="8451192282033883849"><ph name="MANAGER_NAME" /> gestiona tu cuenta. Tu administrador puede ver y editar este perfil del navegador Chrome y sus datos, como los marcadores, el historial o las contraseñas.</translation>
 <translation id="8498858610309223613">Se acaba de instalar una actualización de seguridad especial para Google Chrome. Reinicia ahora y restauraremos las pestañas.</translation>
-<translation id="8504220326736535258">Chrome ha bloqueado este archivo porque contiene software malicioso.</translation>
+<translation id="8504220326736535258">Chrome ha bloqueado este archivo porque contiene malware.</translation>
 <translation id="8516431725144212809">Tus intereses estimados por Chrome</translation>
 <translation id="8521348052903287641">Regla entrante para que Google Chrome Dev permita tráfico mDNS.</translation>
 <translation id="8540666473246803645">Google Chrome</translation>
diff --git a/chrome/app/resources/google_chrome_strings_fi.xtb b/chrome/app/resources/google_chrome_strings_fi.xtb
index e046ac2c..0ef19de 100644
--- a/chrome/app/resources/google_chrome_strings_fi.xtb
+++ b/chrome/app/resources/google_chrome_strings_fi.xtb
@@ -252,6 +252,7 @@
 <translation id="608006075545470555">Lisää työprofiili tähän selaimeen</translation>
 <translation id="6113794647360055231">Chrome on nyt entistä parempi</translation>
 <translation id="6145313976051292476">Avaa PDF-tiedostot Chromessa</translation>
+<translation id="6155960517327665396">Muistinsäästö nopeuttaa Chromea</translation>
 <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation>
 <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> – Google Chrome Beta</translation>
 <translation id="6235018212288296708">Google Chromen saapuvien yhteyksien sääntö, joka sallii mDNS-liikenteen.</translation>
@@ -352,6 +353,7 @@
 <translation id="8286862437124483331">Google Chrome yrittää näyttää salasanoja. Salli tämä kirjoittamalla Windows-salasanasi.</translation>
 <translation id="828798499196665338">Vanhempasi ovat laittaneet Chromen sivustojen, sovellusten ja laajennusten käyttöluvat pois päältä. Käyttöönottoa (<ph name="EXTENSION_TYPE_PARAMETER" />) ei sallita.</translation>
 <translation id="8290100596633877290">Hups! Google Chrome kaatui. Käynnistetäänkö uudelleen?</translation>
+<translation id="8341646175450781745">Kun tämä on päällä, Chrome vapauttaa muistia ei-aktiivisilta välilehdiltä. Näin aktiiviset välilehdet ja muut sovellukset voivat käyttää enemmän tietokoneen resursseja ja Chrome pysyy nopeana. Ei-aktiiviset välilehdet aktivoituvat automaattisesti, kun palaat niihin. <ph name="BEGIN_LINK" />Lue lisää<ph name="END_LINK" /> tai <ph name="BEGIN_LINK_2" />lähetä palautetta<ph name="END_LINK_2" /></translation>
 <translation id="8342675569599923794">Tämä tiedosto on vaarallinen, joten Chrome on estänyt sen.</translation>
 <translation id="8349795646647783032"><ph name="BEGIN_BOLD" />Miten käytämme tätä dataa:<ph name="END_BOLD" /> Sivustot voivat tallentaa Chromeen tietoja kiinnostuksen kohteistasi. Jos esimerkiksi käyt sivustolla, koska haluat ostaa kengät maratonia varten, sivusto voi määritellä maratonjuoksun sinua kiinnostavaksi aiheeksi. Jos myöhemmin käyt toisella sivustolla, jolla ilmoittaudut juoksukilpailuun, kyseinen sivusto voi näyttää sinulle mainoksen juoksukengistä kiinnostuksen kohteidesi perusteella.</translation>
 <translation id="8370517070665726704">Copyright <ph name="YEAR" /> Google LLC. Kaikki oikeudet pidätetään.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_fil.xtb b/chrome/app/resources/google_chrome_strings_fil.xtb
index d189e1f1..a35e016e 100644
--- a/chrome/app/resources/google_chrome_strings_fil.xtb
+++ b/chrome/app/resources/google_chrome_strings_fil.xtb
@@ -260,6 +260,7 @@
 <translation id="608006075545470555">Magdagdag ng Profile sa Trabaho sa browser na ito</translation>
 <translation id="6113794647360055231">Mas mahusay na ang Chrome</translation>
 <translation id="6145313976051292476">Magbukas ng mga PDF sa Chrome</translation>
+<translation id="6155960517327665396">Pinabilis ng Memory Saver ang Chrome</translation>
 <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation>
 <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> - Google Chrome Beta</translation>
 <translation id="6235018212288296708">Inbound na panuntunan para sa Google Chrome upang payagan ang trapiko ng mDNS.</translation>
@@ -360,6 +361,7 @@
 <translation id="8286862437124483331">Sinusubukan ng Google Chrome na ipakita ang mga password. I-type ang iyong password sa Windows upang payagan ito.</translation>
 <translation id="828798499196665338">Na-off ng iyong magulang ang "Mga pahintulot para sa mga site, app, at extension" para sa Chrome. Hindi pinapayagan ang pag-enable sa <ph name="EXTENSION_TYPE_PARAMETER" /> na ito.</translation>
 <translation id="8290100596633877290">Whoa! Nag-crash ang Google Chrome. Ilunsad muli ngayon?</translation>
+<translation id="8341646175450781745">Kapag naka-on ito, nagbabakante ng memory ang Chrome mula sa mga hindi aktibong tab. Binibigyan nito ang mga aktibong tab at iba pang app ng higit pang resource ng computer at pinapanatili nitong mabilis ang Chrome. Awtomatikong nagiging aktibo ulit ang mga hindi aktibong tab kapag bumalik ka sa mga ito. <ph name="BEGIN_LINK" />Matuto pa<ph name="END_LINK" /> o <ph name="BEGIN_LINK_2" />magpadala ng feedback<ph name="END_LINK_2" /></translation>
 <translation id="8342675569599923794">Mapanganib ang file na ito, kaya na-block ito ng Chrome.</translation>
 <translation id="8349795646647783032"><ph name="BEGIN_BOLD" />Paano namin ginagamit ang data na ito:<ph name="END_BOLD" /> Puwedeng mag-store ang mga site sa Chrome tungkol sa iyong mga interes. Halimbawa, kung bibisita ka sa isang site para bumili ng mga sapatos para sa isang marathon, posibleng tukuyin ng site ang iyong interes bilang pagtakbo sa mga marathon. Sa ibang pagkakataon, kung bibisita ka sa ibang site para magparehistro para sa isang karera, puwedeng magpakita sa iyo ang site na iyon ng ad para sa running shoes batay sa mga interes mo.</translation>
 <translation id="8370517070665726704">Copyright <ph name="YEAR" /> Google LLC. Nakalaan ang lahat ng karapatan.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_gu.xtb b/chrome/app/resources/google_chrome_strings_gu.xtb
index e1d1eea1..6f5f3b1 100644
--- a/chrome/app/resources/google_chrome_strings_gu.xtb
+++ b/chrome/app/resources/google_chrome_strings_gu.xtb
@@ -260,6 +260,7 @@
 <translation id="608006075545470555">આ બ્રાઉઝરમાં ઑફિસની પ્રોફાઇલ ઉમેરો</translation>
 <translation id="6113794647360055231">Chrome હવે પહેલાંથી બહેતર બન્યું છે</translation>
 <translation id="6145313976051292476">Chromeમાં PDFs ખોલો</translation>
+<translation id="6155960517327665396">મેમરી સેવર Chromeને વધુ ઝડપી બનાવે છે</translation>
 <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation>
 <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> - Google Chrome બીટા</translation>
 <translation id="6235018212288296708">mDNS ટ્રાફિકને મંજૂરી આપવા માટે Google Chrome માટે ઇનબાઉન્ડ નિયમ.</translation>
@@ -360,6 +361,7 @@
 <translation id="8286862437124483331">Google Chrome પાસવર્ડ્સ બતાવવાનો પ્રયાસ કરી રહ્યું છે. આની મંજૂરી આપવા માટે તમારો Windows પાસવર્ડ લખો.</translation>
 <translation id="828798499196665338">તમારા માતાપિતાએ Chrome માટે "સાઇટ, ઍપ અને એક્સ્ટેન્શન માટેની પરવાનગીઓ" બંધ કરી છે. આ <ph name="EXTENSION_TYPE_PARAMETER" /> ચાલુ કરવાની મંજૂરી નથી.</translation>
 <translation id="8290100596633877290">ઓહ! Google Chrome ક્રેશ થઈ ગયું. હમણાં ફરીથી લોંચ કરીએ?</translation>
+<translation id="8341646175450781745">જ્યારે ચાલુ હોય, ત્યારે Chrome નિષ્ક્રિય ટૅબમાંથી મેમરી ખાલી કરે છે. આ સક્રિય ટૅબ અને અન્ય ઍપને વધુ કમ્પ્યુટર સંસાધનો આપે છે અને Chromeને વધુ ઝડપી રાખે છે. તમે તમારા નિષ્ક્રિય ટૅબ પર પાછા જાઓ ત્યારે તે ઑટોમૅટિક રીતે ફરી સક્રિય થાય છે. <ph name="BEGIN_LINK" />વધુ જાણો<ph name="END_LINK" /> અથવા <ph name="BEGIN_LINK_2" />પ્રતિસાદ મોકલો<ph name="END_LINK_2" /></translation>
 <translation id="8342675569599923794">આ ફાઇલ જોખમી છે, તેથી Chrome એ તેને અવરોધિત કરેલ છે.</translation>
 <translation id="8349795646647783032"><ph name="BEGIN_BOLD" />અમે આ ડેટાનો ઉપયોગ કેવી રીતે કરીએ છીએ:<ph name="END_BOLD" /> સાઇટ, Chrome પર તમારી રુચિના વિષયો વિશેની માહિતી સ્ટોર કરી શકે છે. ઉદાહરણ તરીકે જો તમે મૅરેથનમાં દોડવા માટે શૂઝ ખરીદવા કોઈ સાઇટની મુલાકાત લો, તો એ સાઇટ મૅરેથન દોડને તમારી રુચિના વિષય તરીકે સાચવી શકે છે. પછી, જો તમે દોડ માટે રજિસ્ટ્રેશન કરાવવા કોઈ અન્ય સાઇટની મુલાકાત લેશો, તો તે સાઇટ તમારી રુચિના વિષયના આધારે તમને દોડવા માટેના શૂઝની જાહેરાત બતાવી શકે છે.</translation>
 <translation id="8370517070665726704">કૉપિરાઇટ <ph name="YEAR" /> Google LLC. સર્વાધિકાર સુરક્ષિત.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_hi.xtb b/chrome/app/resources/google_chrome_strings_hi.xtb
index d2296df1..b2f34d9 100644
--- a/chrome/app/resources/google_chrome_strings_hi.xtb
+++ b/chrome/app/resources/google_chrome_strings_hi.xtb
@@ -263,7 +263,7 @@
 <translation id="6273793429163604305">तैयार हो जाएं...</translation>
 <translation id="6291089322031436445">Chrome डेवलपर ऐप्लिकेशन</translation>
 <translation id="6291549208091401781">Google Chrome आपके कंप्यूटर पर मौजूद सभी उपयोगकर्ताओं के लिए पहले से इंंस्टॉल है.</translation>
-<translation id="6326175484149238433">Chrome से नि‍कालें</translation>
+<translation id="6326175484149238433">Chrome से हटाएं</translation>
 <translation id="6327105987658262776">कोई अपडेट उपलब्ध नहीं है.</translation>
 <translation id="6412673304250309937">Chrome में पहले से सेव असुरक्षित साइटों के साथ यूआरएल की जांच करता है. अगर कोई साइट आपका पासवर्ड चुराने की कोशिश करती है या आप कोई नुकसान पहुंचाने वाली फ़ाइल डाउनलोड करते हैं, तो Chrome सुरक्षित ब्राउज़िंग की सेवा को उनका यूआरएल भेजता है. यूआरएल के साथ इनमें उन पेज की कुछ सामग्री भी शामिल होती है.</translation>
 <translation id="6418662306461808273">क्या आप मौजूदा Chrome प्रोफ़ाइल में स्विच करना चाहते हैं?</translation>
diff --git a/chrome/app/resources/google_chrome_strings_hr.xtb b/chrome/app/resources/google_chrome_strings_hr.xtb
index 8999bea..b00405fd 100644
--- a/chrome/app/resources/google_chrome_strings_hr.xtb
+++ b/chrome/app/resources/google_chrome_strings_hr.xtb
@@ -129,6 +129,7 @@
 <translation id="3360895254066713204">Chrome Helper</translation>
 <translation id="3379938682270551431">{0,plural, =0{Chrome će se sada ponovo pokrenuti}=1{Chrome će se ponovo pokrenuti za jednu sekundu}one{Chrome će se ponovo pokrenuti za # s}few{Chrome će se ponovo pokrenuti za # s}other{Chrome će se ponovo pokrenuti za # s}}</translation>
 <translation id="3396977131400919238">Došlo je do pogreške operacijskog sustava tijekom instalacije. Ponovno preuzmite program Google Chrome.</translation>
+<translation id="3426646014273736870">Štednja memorije učinila je Chrome bržim</translation>
 <translation id="3428747202529429621">Štiti vas na Chromeu i može se upotrebljavati za poboljšanje vaše sigurnosti u drugim Googleovim aplikacijama kada ste prijavljeni</translation>
 <translation id="3434246496373299699">Chrome može provjeriti vaše zaporke kad se prijavite Google računom</translation>
 <translation id="3451115285585441894">Dodavanje u Chrome...</translation>
@@ -226,6 +227,7 @@
 <translation id="5412485296464121825">Web-lokacije mogu pohraniti informacije o vašim interesima u Chrome. Na primjer, ako posjetite neku web-lokaciju da biste kupili tenisice za maraton, ta web-lokacija može definirati vaš interes kao trčanje maratona. Ako poslije posjetite neku drugu web-lokaciju da biste se registrirali za utrku, ta vam web-lokacija može prikazati oglas za tenisice za trčanje na temelju vaših interesa.</translation>
 <translation id="5430073640787465221">Datoteka vaših postavki oštećena je ili nevažeća. Google Chrome nema mogućnost oporavka vaših postavki.</translation>
 <translation id="5524761631371622910">Tijekom eksperimenata i ako vas je Chrome nasumično rasporedio u aktivni eksperiment, vaša povijest pregledavanja utječe na oglase koji vam se prikazuju i interese procijenjene u nastavku. Da bi zaštitio vašu privatnost, Chrome kontinuirano briše vaše interese svakog mjeseca.</translation>
+<translation id="5530733413481476019">Ubrzavanje Chromea</translation>
 <translation id="556024056938947818">Google Chrome pokušava prikazati zaporke.</translation>
 <translation id="5566025111015594046">Google Chrome (mDNS-In)</translation>
 <translation id="565744775970812598">Datoteka <ph name="FILE_NAME" /> mogla bi biti opasna, pa ju je Chrome blokirao.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_hu.xtb b/chrome/app/resources/google_chrome_strings_hu.xtb
index e7feff17..bfaf058 100644
--- a/chrome/app/resources/google_chrome_strings_hu.xtb
+++ b/chrome/app/resources/google_chrome_strings_hu.xtb
@@ -252,6 +252,7 @@
 <translation id="608006075545470555">Munkaprofil hozzáadása a böngészőhöz</translation>
 <translation id="6113794647360055231">A Chrome még jobb lett</translation>
 <translation id="6145313976051292476">PDF-fájlok megnyitása a Chrome-ban</translation>
+<translation id="6155960517327665396">A memóriatakarékos mód felgyorsította a Chrome-ot</translation>
 <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation>
 <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> – Google Chrome Béta</translation>
 <translation id="6235018212288296708">Bejövő szabály a Google Chrome-hoz az mDNS forgalom engedélyezése céljából.</translation>
@@ -352,6 +353,7 @@
 <translation id="8286862437124483331">A Google Chrome megkísérli megjeleníteni a jelszavakat. Ennek engedélyezéséhez írja be Windows-jelszavát.</translation>
 <translation id="828798499196665338">Szülőd kikapcsolta a Chrome „Engedélyek webhelyek, alkalmazások és bővítmények számára” beállítását. A(z) <ph name="EXTENSION_TYPE_PARAMETER" /> nem engedélyezhető.</translation>
 <translation id="8290100596633877290">Hmm. A Google Chrome összeomlott. Újraindítja most?</translation>
+<translation id="8341646175450781745">Ha be van kapcsolva, a Chrome memóriát szabadít fel az inaktív lapokból. Így az aktív lapok és más alkalmazások több számítógépes erőforrást kapnak, a Chrome pedig gyors marad. Az inaktív lapok automatikusan ismét aktívak lesznek, amikor visszalép rájuk. <ph name="BEGIN_LINK" />További információ<ph name="END_LINK" /> vagy <ph name="BEGIN_LINK_2" />visszajelzés küldése<ph name="END_LINK_2" />.</translation>
 <translation id="8342675569599923794">Ez a fájl veszélyes, ezért a Chrome letiltotta.</translation>
 <translation id="8349795646647783032"><ph name="BEGIN_BOLD" />Az adatok felhasználási módja:<ph name="END_BOLD" /> A webhelyek tárolhatnak az Ön érdeklődési köreivel kapcsolatos információkat a Chrome-ban. Ha például felkeres egy webhelyet, ahol maratonfutáshoz való cipőt vásárol, akkor a webhely meghatározhatja a maratonfutást az Ön egyik érdeklődési köreként. Ha később felkeres egy másik webhelyet, hogy jelentkezzen egy versenyre, ezen a webhelyen megjelenhet egy futócipőket reklámozó hirdetés az Ön érdeklődési köre alapján.</translation>
 <translation id="8370517070665726704">Copyright <ph name="YEAR" /> Google LLC. Minden jog fenntartva.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_id.xtb b/chrome/app/resources/google_chrome_strings_id.xtb
index f3cffdd..3fd57cc 100644
--- a/chrome/app/resources/google_chrome_strings_id.xtb
+++ b/chrome/app/resources/google_chrome_strings_id.xtb
@@ -252,6 +252,7 @@
 <translation id="608006075545470555">Tambahkan Profil Kerja ke browser ini</translation>
 <translation id="6113794647360055231">Chrome menjadi lebih baik</translation>
 <translation id="6145313976051292476">Buka PDF di Chrome</translation>
+<translation id="6155960517327665396">Penghemat Memori membuat Chrome lebih cepat</translation>
 <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation>
 <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> - Google Chrome Beta</translation>
 <translation id="6235018212288296708">Inbound rule untuk Google Chrome guna mengizinkan lalu lintas mDNS.</translation>
@@ -352,6 +353,7 @@
 <translation id="8286862437124483331">Google Chrome mencoba menampilkan sandi. Ketik sandi Windows Anda untuk mengizinkannya.</translation>
 <translation id="828798499196665338">Orang tuamu telah menonaktifkan "Izin untuk situs, aplikasi, dan ekstensi" untuk Chrome. Tindakan mengaktifkan <ph name="EXTENSION_TYPE_PARAMETER" /> ini tidak diizinkan.</translation>
 <translation id="8290100596633877290">Aduh! Google Chrome ngadat. Luncurkan ulang sekarang?</translation>
+<translation id="8341646175450781745">Jika diaktifkan, Chrome akan membebaskan memori dari tab yang tidak aktif. Tindakan ini akan memberikan lebih banyak resource komputer untuk tab aktif dan aplikasi lainnya, serta menjaga Chrome tetap cepat. Tab yang tidak aktif akan otomatis menjadi aktif lagi saat Anda kembali ke tab tersebut. <ph name="BEGIN_LINK" />Pelajari lebih lanjut<ph name="END_LINK" /> atau <ph name="BEGIN_LINK_2" />kirim masukan<ph name="END_LINK_2" /></translation>
 <translation id="8342675569599923794">File ini berbahaya, jadi Chrome telah memblokirnya.</translation>
 <translation id="8349795646647783032"><ph name="BEGIN_BOLD" />Cara kami menggunakan data ini:<ph name="END_BOLD" /> Situs dapat menyimpan informasi tentang minat Anda ke Chrome. Misalnya, jika Anda mengunjungi suatu situs untuk membeli sepatu maraton, situs tersebut dapat menetapkan minat Anda sebagai lari maraton. Kemudian, jika Anda mengunjungi situs lain untuk mendaftar lomba lari, situs tersebut dapat menampilkan iklan sepatu lari berdasarkan minat Anda.</translation>
 <translation id="8370517070665726704">Hak cipta <ph name="YEAR" /> Google LLC. Semua hak dilindungi undang-undang.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ka.xtb b/chrome/app/resources/google_chrome_strings_ka.xtb
index 3e0d827..3aa881f4 100644
--- a/chrome/app/resources/google_chrome_strings_ka.xtb
+++ b/chrome/app/resources/google_chrome_strings_ka.xtb
@@ -132,6 +132,7 @@
 <translation id="3360895254066713204">Chrome-ის დამხმარე</translation>
 <translation id="3379938682270551431">{0,plural, =0{Chrome ახლა ხელახლა გაეშვება}=1{Chrome ხელახლა გაეშვება 1 წამში}other{Chrome ხელახლა გაეშვება # წამში}}</translation>
 <translation id="3396977131400919238">ინსტალაციის დროს წარმოიქმნა ოპერატიული სისტემის შეცდომა. ხელახლა ჩამოტვირთეთ Google Chrome.</translation>
+<translation id="3426646014273736870">მეხსიერების დამზოგმა ააჩქარა Chrome</translation>
 <translation id="3428747202529429621">უზრუნველყოფს თქვენს უსაფრთხოებას Chrome-ში და Google-ის სხვა აპებში, როცა სისტემაში შესული ხართ</translation>
 <translation id="3434246496373299699">პაროლების Chrome-ის მეშვეობით შესამოწმებლად შედით სისტემაში თქვენი Google ანგარიშით</translation>
 <translation id="3451115285585441894">Chrome-ში დამატება…</translation>
@@ -233,6 +234,7 @@
 
 Google Chrome ვერ შეძლებს თქვენი პარამეტრების აღდგენას.</translation>
 <translation id="5524761631371622910">როცა ცდები ჩართულია და თუ Chrome შემთხვევითობის პრინციპით მიგაღებინებთ მონაწილეობას მიმდინარე ცდაში, თქვენ მიერ ვების დათვალიერების ისტორია აისახება თქვენთვის ხილულ რეკლამასა და თქვენს ინტერესებზე, ქვემოთ პროგნოზირებულის შესაბამისად. თქვენი კონფიდენციალურობის დაცვის მიზნით, Chrome წაშლის თქვენს ინტერესებს ყოველთვიურად რიგითობის მიხედვით.</translation>
+<translation id="5530733413481476019">ააჩქარეთ Chrome-ის მუშაობა</translation>
 <translation id="556024056938947818">Google Chrome ცდილობს პაროლების ჩვენებას.</translation>
 <translation id="5566025111015594046">Google Chrome (mDNS-In)</translation>
 <translation id="565744775970812598">Chrome-მა დაბლოკა <ph name="FILE_NAME" />, რადგან ის შეიძლება სახიფათო იყოს.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_kn.xtb b/chrome/app/resources/google_chrome_strings_kn.xtb
index 7b540204..7f2c134 100644
--- a/chrome/app/resources/google_chrome_strings_kn.xtb
+++ b/chrome/app/resources/google_chrome_strings_kn.xtb
@@ -253,6 +253,7 @@
 <translation id="608006075545470555">ಈ ಬ್ರೌಸರ್‌ಗೆ ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್‌ ಸೇರಿಸಿ</translation>
 <translation id="6113794647360055231">Chrome ಇದೀಗ ಉತ್ತಮಗೊಂಡಿದೆ</translation>
 <translation id="6145313976051292476">Chrome ನಲ್ಲಿ PDF ಗಳನ್ನು ತೆರೆಯಿರಿ</translation>
+<translation id="6155960517327665396">ಮೆಮೊರಿ ಸೇವರ್‌ನಿಂದಾಗಿ Chrome ನ ವೇಗ ಇನ್ನೂ ಹೆಚ್ಚಾಗಿದೆ</translation>
 <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation>
 <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> - Google Chrome Beta</translation>
 <translation id="6235018212288296708">mDNS ಟ್ರಾಫಿಕ್‌ಗೆ ಅನುಮತಿಸುವ ನಿಟ್ಟಿನಲ್ಲಿ Google Chrome ಗೆ ಒಳಬರುವ ನಿಯಮ.</translation>
@@ -353,6 +354,7 @@
 <translation id="8286862437124483331">Google Chrome ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಪ್ರದರ್ಶಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತಿದೆ. ಇದಕ್ಕೆ ಅನುಮತಿಸಲು ನಿಮ್ಮ Windows ಪಾಸ್‌ವರ್ಡ್‌ ಟೈಪ್ ಮಾಡಿ.</translation>
 <translation id="828798499196665338">ನಿಮ್ಮ ಪೋಷಕರು Chrome ನಲ್ಲಿ "ಸೈಟ್‌ಗಳು, ಆ್ಯಪ್‌ಗಳು ಮತ್ತು ವಿಸ್ತರಣೆಗಳಿಗಾಗಿ ಅನುಮತಿಗಳನ್ನು" ಆಫ್ ಮಾಡಿದ್ದಾರೆ. ಈ <ph name="EXTENSION_TYPE_PARAMETER" /> ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು ಅನುಮತಿಯಿಲ್ಲ.</translation>
 <translation id="8290100596633877290">ಓಹ್! Google Chrome ಕ್ರ‍್ಯಾಶ್‌ ಆಗಿದೆ.ಇದೀಗ ಮರುಪ್ರಾರಂಭಿಸುವುದೆ?</translation>
+<translation id="8341646175450781745">ಇದು ಆನ್ ಆಗಿದ್ದಾಗ, ನಿಷ್ಕ್ರಿಯ ಟ್ಯಾಬ್‌ಗಳಿಂದ Chrome ಮೆಮೊರಿಯನ್ನು ಮುಕ್ತಗೊಳಿಸುತ್ತದೆ. ಸಕ್ರಿಯ ಟ್ಯಾಬ್‌ಗಳು ಹಾಗೂ ಇತರ ಆ್ಯಪ್‌ಗಳಿಗೆ ಇದು ಹೆಚ್ಚು ಕಂಪ್ಯೂಟರ್ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ ಮತ್ತು Chrome ಅನ್ನು ವೇಗವಾಗಿಡುತ್ತದೆ. ನಿಮ್ಮ ನಿಷ್ಕ್ರಿಯ ಟ್ಯಾಬ್‌ಗಳಿಗೆ ನೀವು ಮರಳಿದಾಗ, ಅವು ಮತ್ತೆ ಸಕ್ರಿಯವಾಗುತ್ತವೆ. <ph name="BEGIN_LINK" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="END_LINK" /> ಅಥವಾ <ph name="BEGIN_LINK_2" />ಪ್ರತಿಕ್ರಿಯೆ ಕಳುಹಿಸಿ<ph name="END_LINK_2" /></translation>
 <translation id="8342675569599923794">ಈ ಫೈಲ್ ಅಪಾಯಕಾರಿಯಾಗಿದೆ, ಹೀಗಾಗಿ Chrome ಇದನ್ನು ನಿರ್ಬಂಧಿಸಿದೆ.</translation>
 <translation id="8349795646647783032"><ph name="BEGIN_BOLD" />ನಾವು ಈ ಡೇಟಾವನ್ನು ಹೇಗೆ ಬಳಸುತ್ತೇವೆ:<ph name="END_BOLD" /> ಸೈಟ್‌ಗಳು ನಿಮ್ಮ ಆಸಕ್ತಿಗಳ ಕುರಿತಾದ ಮಾಹಿತಿಯನ್ನು Chrome ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಿಡಬಲ್ಲವು. ಉದಾಹರಣೆಗೆ, ನೀವು ಮ್ಯಾರಥಾನ್‌ಗಾಗಿ ಶೂ ಖರೀದಿಸಲು ಸೈಟ್ ಒಂದಕ್ಕೆ ಭೇಟಿ ನೀಡಿದರೆ, ಮ್ಯಾರಥಾನ್‌ಗಳಲ್ಲಿ ಓಡುವುದನ್ನು ನಿಮ್ಮ ಆಸಕ್ತಿಯೆಂದು ಆ ಸೈಟ್ ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ. ತದನಂತರ, ನೀವು ರೇಸ್ ಒಂದಕ್ಕೆ ನೋಂದಾಯಿಸಲು ಬೇರೊಂದು ವೆಬ್‌ಸೈಟ್‌ಗೆ ಭೇಟಿ ನೀಡಿದರೆ, ಆ ಸೈಟ್ ನಿಮ್ಮ ಆಸಕ್ತಿಗಳನ್ನು ಆಧರಿಸಿ ನಿಮಗೆ ರನ್ನಿಂಗ್ ಶೂಗಳ ಜಾಹೀರಾತನ್ನು ತೋರಿಸಬಹುದು.</translation>
 <translation id="8370517070665726704">ಕೃತಿಸ್ವಾಮ್ಯ <ph name="YEAR" /> Google LLC. ಎಲ್ಲ ಹಕ್ಕುಗಳನ್ನು ಕಾಯ್ದಿರಿಸಲಾಗಿದೆ.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ky.xtb b/chrome/app/resources/google_chrome_strings_ky.xtb
index ffa68eb..831d6e6 100644
--- a/chrome/app/resources/google_chrome_strings_ky.xtb
+++ b/chrome/app/resources/google_chrome_strings_ky.xtb
@@ -133,6 +133,7 @@
 <translation id="3360895254066713204">Chrome Жардамчысы</translation>
 <translation id="3379938682270551431">{0,plural, =0{Chrome азыр кайра иштетилет}=1{Chrome 1 секунддан кийин кайра иштетилет}other{Chrome # секунддан кийин кайра иштетилет}}</translation>
 <translation id="3396977131400919238">Орнотулуп жатканда иш тутумунда ката кетти. Google Chrome'ду кайра жүктөп алыңыз.</translation>
+<translation id="3426646014273736870">Эстутумду үнөмдөгүч аркылуу Chrome тезирээк иштеп калды</translation>
 <translation id="3428747202529429621">Аккаунтуңузга киргенде Chrome'до жана башка Google колдонмолорунда коопсуздугуңузду коргоп турат</translation>
 <translation id="3434246496373299699">Google аккаунтуңуз менен киргенде Chrome сырсөздөрүңүздү текшерет</translation>
 <translation id="3451115285585441894">Chrome'го кошулууда…</translation>
@@ -234,6 +235,7 @@
 
 Google Chrome жөндөөлөрүңүздү калыбына келтире албайт.</translation>
 <translation id="5524761631371622910">Сыноолор күйүк болгондо жана Chrome сизди башаламан иретте активдүү сыноого кошуп койгон болсо, Жарнамалар көрүлгөн вебсайттарга жана төмөндө болжолдонгон кызыккан нерселериңизге жараша көрсөтүлөт. Купуялыгыңызды коргоо максатында Chrome кызыккан нерселериңизди ай сайын өчүрүп турат.</translation>
+<translation id="5530733413481476019">Chrome'ду ылдамдатуу</translation>
 <translation id="556024056938947818">Google Chrome сырсөздөрдү көрсөткөнгө аракет кылып жатат.</translation>
 <translation id="5566025111015594046">Google Chrome (mDNS-In)</translation>
 <translation id="565744775970812598"><ph name="FILE_NAME" /> файлы кооптуу болушу мүмкүн, ошондуктан Chrome аны бөгөттөп койду.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_lo.xtb b/chrome/app/resources/google_chrome_strings_lo.xtb
index 4e0fda2..f87e46369 100644
--- a/chrome/app/resources/google_chrome_strings_lo.xtb
+++ b/chrome/app/resources/google_chrome_strings_lo.xtb
@@ -260,6 +260,7 @@
 <translation id="608006075545470555">ເພີ່ມໂປຣໄຟລ໌ບ່ອນເຮັດວຽກໃສ່ໂປຣແກຣມທ່ອງເວັບນີ້</translation>
 <translation id="6113794647360055231">Chrome ​ດີກ​ວ່າແລ້ວ</translation>
 <translation id="6145313976051292476">ເປີດ PDF ໃນ Chrome</translation>
+<translation id="6155960517327665396">ຕົວປະຢັດໜ່ວຍຄວາມຈຳເຮັດໃຫ້ Chrome ໄວຂຶ້ນ</translation>
 <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation>
 <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> - Google Chrome Beta</translation>
 <translation id="6235018212288296708">ກົດລະບຽບຂາເຂົ້າສໍາລັບ Google Chrome ເພື່ອອະນຸຍາດໃຫ້ການຈາລະຈອນ mDNS.</translation>
@@ -360,6 +361,7 @@
 <translation id="8286862437124483331">Google Chrome ກໍາລັງພະຍາຍາມສະແດງລະຫັດຜ່ານ. ພິມລະຫັດຜ່ານ Windows ຂອງທ່ານ ເພື່ອອະນຸຍາດອັນນີ້.</translation>
 <translation id="828798499196665338">ພໍ່ແມ່ຂອງທ່ານໄດ້ປິດ "ການອະນຸຍາດສຳລັບເວັບໄຊ, ແອັບ ແລະ ສ່ວນຂະຫຍາຍ" ສຳລັບ Chrome ແລ້ວ. ການເປີດການນຳໃຊ້ <ph name="EXTENSION_TYPE_PARAMETER" /> ນີ້ບໍ່ໄດ້ຮັບອະນຸຍາດ.</translation>
 <translation id="8290100596633877290">ໂຮ້! Google Chrome ​ເກີດ​ຂັດຂ້ອງ. ເປີດໃຊ້ໃໝ່ດຽວນີ້ບໍ?</translation>
+<translation id="8341646175450781745">ເມື່ອເປີດໃຊ້, Chrome ຈະສ້າງພື້ນທີ່ຫວ່າງຈາກແຖບທີ່ບໍ່ເຮັດວຽກ. ນີ້ຈະເຮັດໃຫ້ແຖບທີ່ເຮັດວຽກ ແລະ ແອັບອື່ນໆມີຊັບພະຍາກອນຄອມພິວເຕີຫຼາຍຂຶ້ນ ແລະ ເຮັດໃຫ້ Chrome ຮັກສາຄວາມໄວໄດ້. ແຖບທີ່ບໍ່ເຮັດວຽກຂອງທ່ານຈະກັບມາເຮັດວຽກອັດຕະໂນມັດເມື່ອທ່ານກັບໄປຫາພວກມັນ. <ph name="BEGIN_LINK" />ສຶກສາເພີ່ມເຕີມ<ph name="END_LINK" /> ຫຼື <ph name="BEGIN_LINK_2" />ສົ່ງຄຳຕິຊົມ<ph name="END_LINK_2" /></translation>
 <translation id="8342675569599923794">ໄຟລ໌ນີ້ເປັນອັນຕະລາຍ, ສະນັ້ນ Chrome ໄດ້ບລັອກມັນໄວ້ແລ້ວ.</translation>
 <translation id="8349795646647783032"><ph name="BEGIN_BOLD" />ພວກເຮົາໃຊ້ຂໍ້ມູນນີ້ແນວໃດ:<ph name="END_BOLD" /> ເວັບໄຊສາມາດບັນທຶກຂໍ້ມູນກັບ Chrome ກ່ຽວກັບຄວາມສົນໃຈຂອງທ່ານໄດ້. ຕົວຢ່າງ: ຫາກທ່ານເຂົ້າເວັບໄຊໃດໜຶ່ງເພື່ອຊື້ເກີບສຳລັບແລ່ນມາຣາທອນ, ເວັບໄຊດັ່ງກ່າວອາດນິຍາມຄວາມສົນໃຈຂອງທ່ານວ່າເປັນການແລ່ນມາຣາທອນ. ໃນພາຍຫຼັງ, ຫາກທ່ານເຂົ້າເວັບໄຊອື່ນເພື່ອລົງທະບຽນການແຂ່ງຂັນ, ເວັບໄຊນັ້ນອາດສະແດງໂຄສະນາເກີບແລ່ນໃຫ້ທ່ານໂດຍອ້າງອີງໃສ່ຄວາມສົນໃຈຂອງທ່ານ.</translation>
 <translation id="8370517070665726704">ລິຂະສິດ <ph name="YEAR" /> Google LLC. ສະຫງວນສິດທັງໝົດ.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_mk.xtb b/chrome/app/resources/google_chrome_strings_mk.xtb
index fca25b7..bd1296e 100644
--- a/chrome/app/resources/google_chrome_strings_mk.xtb
+++ b/chrome/app/resources/google_chrome_strings_mk.xtb
@@ -133,6 +133,7 @@
 <translation id="3360895254066713204">Помошник на Chrome</translation>
 <translation id="3379938682270551431">{0,plural, =0{Chrome ќе се рестартира сега}=1{Chrome ќе се рестартира по 1 секунда}one{Chrome ќе се рестартира по # секунда}other{Chrome ќе се рестартира по # секунди}}</translation>
 <translation id="3396977131400919238">Се појави грешка во оперативниот систем додека се инсталираше. Преземете го Google Chrome повторно.</translation>
+<translation id="3426646014273736870">„Штедачот на меморија“ го направи Chrome побрз</translation>
 <translation id="3428747202529429621">Ја чува вашата безбедност на Chrome и може да се користи за да ја подобри безбедноста на други апликации на Google кога сте најавени</translation>
 <translation id="3434246496373299699">Chrome може да ги проверува вашите лозинки кога ќе се најавите со вашата сметка на Google</translation>
 <translation id="3451115285585441894">Се додава на Chrome...</translation>
@@ -234,6 +235,7 @@
 
 Google Chrome не може да ги обнови вашите поставки.</translation>
 <translation id="5524761631371622910">Кога пробните периоди се вклучени и ако Chrome по случаен избор ве ставил во активен пробен период, вашата историја на прелистувањето влијае на рекламите што ги гледате и интересите како што е проценето долу. За да ја заштити приватноста, Chrome ги брише вашите интереси секој месец.</translation>
+<translation id="5530733413481476019">Имајте побрз Chrome</translation>
 <translation id="556024056938947818">Google Chrome се обидува да прикаже лозинки.</translation>
 <translation id="5566025111015594046">Google Chrome (mDNS-In)</translation>
 <translation id="565744775970812598">Датотеката <ph name="FILE_NAME" /> може да биде опасна, па затоа Chrome ја блокираше.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_mr.xtb b/chrome/app/resources/google_chrome_strings_mr.xtb
index baa2d3a..e999277 100644
--- a/chrome/app/resources/google_chrome_strings_mr.xtb
+++ b/chrome/app/resources/google_chrome_strings_mr.xtb
@@ -258,6 +258,7 @@
 <translation id="608006075545470555">या ब्राउझरवर कार्य प्रोफाइल जोडा</translation>
 <translation id="6113794647360055231">Chrome आता उत्कृष्ट झाले आहे</translation>
 <translation id="6145313976051292476">Chrome मध्ये PDF उघडा</translation>
+<translation id="6155960517327665396">मेमरी सेव्हरने Chrome ला आणखी जलद केले आहे</translation>
 <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> – Google Chrome</translation>
 <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> - Google Chrome बीटा</translation>
 <translation id="6235018212288296708">mDNS रहदारीस अनुमती देण्यासाठी Google Chrome साठी अंतर्गामी नियम.</translation>
@@ -358,6 +359,7 @@
 <translation id="8286862437124483331">Google Chrome पासवर्ड दर्शविण्‍याचा प्रयत्‍न करत आहे. यास अनुमती देण्‍यासाठी तुमचा Windows पासवर्ड टाइप करा.</translation>
 <translation id="828798499196665338">तुमच्या पालकांनी Chrome साठी "साइट, अ‍ॅप्स आणि एक्स्टेंशनकरिता परवानग्या" सुरू केल्या आहेत. हे <ph name="EXTENSION_TYPE_PARAMETER" /> सुरू करण्यास अनुमती नाही.</translation>
 <translation id="8290100596633877290">अरेरे! Google Chrome क्रॅश झाला. त्वरित पुन्हा लाँच करायचा?</translation>
+<translation id="8341646175450781745">सुरू असेल, तेव्हा Chrome हे निष्क्रिय टॅबमधील मेमरी मोकळी करते. हे अ‍ॅक्टिव्ह टॅब आणि इतर अ‍ॅप्सना आणखी कॉंप्युटर स्रोत देते आणि Chrome ला जलद ठेवते. तुम्ही तुमच्या निष्क्रिय टॅबवर परत गेल्यावर ते पुन्हा आपोआप अ‍ॅक्टिव्ह होतात. <ph name="BEGIN_LINK" />अधिक जाणून घ्या<ph name="END_LINK" /> किंवा <ph name="BEGIN_LINK_2" />फीडबॅक पाठवा<ph name="END_LINK_2" /></translation>
 <translation id="8342675569599923794">ही फाइल धोकादायक आहे, त्यामुळे Chrome ने ती ब्लॉक केली आहे.</translation>
 <translation id="8349795646647783032"><ph name="BEGIN_BOLD" />आम्ही हा डेटा कसा वापरतो:<ph name="END_BOLD" /> साइट तुमच्या स्वारस्यांबद्दलची माहिती Chrome वापरून स्टोअर करू शकतात. उदाहरणार्थ, तुम्ही मॅरेथॉनसाठी शूज खरेदी करण्यासाठी एखाद्या साइटला भेट दिल्यास, ती साइट तुमचे स्वारस्य मॅरेथॉनमध्ये धावणे म्हणून परिभाषित करू शकते. त्यानंतर, तुम्ही एखाद्या शर्यतीसाठी नोंदणी करण्याकरिता वेगळ्या साइटला भेट दिल्यास, ती साइट तुम्हाला तुमच्या स्वारस्यांनुसार धावण्यासाठीच्या शूजची जाहिरात दाखवू शकते.</translation>
 <translation id="8370517070665726704">कॉपीराइट <ph name="YEAR" /> Google LLC. सर्व हक्क राखीव.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ms.xtb b/chrome/app/resources/google_chrome_strings_ms.xtb
index 094ae42..a97f8ae 100644
--- a/chrome/app/resources/google_chrome_strings_ms.xtb
+++ b/chrome/app/resources/google_chrome_strings_ms.xtb
@@ -252,6 +252,7 @@
 <translation id="608006075545470555">Tambahkan Profil Kerja pada penyemak imbas ini</translation>
 <translation id="6113794647360055231">Chrome kini lebih baik</translation>
 <translation id="6145313976051292476">Buka PDF dalam Chrome</translation>
+<translation id="6155960517327665396">Penjimat Memori menjadikan Chrome lebih pantas</translation>
 <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation>
 <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> - Google Chrome Beta</translation>
 <translation id="6235018212288296708">Peraturan masuk bagi Google Chrome untuk membenarkan trafik mDNS.</translation>
@@ -352,6 +353,7 @@
 <translation id="8286862437124483331">Google Chrome cuba menunjukkan kata laluan. Taip kata laluan Windows anda untuk membenarkannya.</translation>
 <translation id="828798499196665338">Ibu/bapa anda telah mematikan "Kebenaran untuk laman web, apl dan sambungan" untuk Chrome. Tindakan mendayakan <ph name="EXTENSION_TYPE_PARAMETER" /> ini tidak dibenarkan.</translation>
 <translation id="8290100596633877290">Alamak! Google Chrome mengalami ranap sistem. Lancarkan semula sekarang?</translation>
+<translation id="8341646175450781745">Apabila dihidupkan, Chrome mengosongkan memori daripada tab yang tidak aktif. Ini memberikan tab aktif dan apl lain lebih banyak sumber komputer dan memastikan Chrome pantas. Tab anda yang tidak aktif menjadi aktif semula secara automatik apabila anda kembali kepada tab tersebut. <ph name="BEGIN_LINK" />Ketahui lebih lanjut<ph name="END_LINK" /> atau <ph name="BEGIN_LINK_2" />hantar maklum balas<ph name="END_LINK_2" /></translation>
 <translation id="8342675569599923794">Fail ini berbahaya, maka Chrome telah menyekatnya.</translation>
 <translation id="8349795646647783032"><ph name="BEGIN_BOLD" />Cara kami menggunakan data ini:<ph name="END_BOLD" /> Laman boleh menyimpan maklumat tentang minat anda menggunakan Chrome. Contohnya, jika anda melawat laman untuk membeli kasut untuk maraton, laman tersebut mungkin mentakrifkan minat anda sebagai larian maraton. Kemudian, jika anda melawati laman lain untuk mendaftar perlumbaan, laman tersebut boleh memaparkan kepada anda iklan kasut untuk berlari berdasarkan minat anda.</translation>
 <translation id="8370517070665726704">Hak Cipta <ph name="YEAR" /> Google LLC. Hak cipta terpelihara.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_my.xtb b/chrome/app/resources/google_chrome_strings_my.xtb
index eee372b..29c291a3 100644
--- a/chrome/app/resources/google_chrome_strings_my.xtb
+++ b/chrome/app/resources/google_chrome_strings_my.xtb
@@ -260,6 +260,7 @@
 <translation id="608006075545470555">ဤဘရောင်ဇာတွင် အလုပ်ပရိုဖိုင်ထည့်ခြင်း</translation>
 <translation id="6113794647360055231">Chrome သည် ပိုလို့ကို ကောင်းလာပါပြီ</translation>
 <translation id="6145313976051292476">Chrome တွင် PDF များ ဖွင့်ရန်</translation>
+<translation id="6155960517327665396">‘မှတ်ဉာဏ်ချွေတာစနစ်’ က Chrome ကို ပိုမြန်စေသည်</translation>
 <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation>
 <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> - Google Chrome Beta</translation>
 <translation id="6235018212288296708">Google Chrome အတွက် mDNS သွားလာမှု ခွင့်ပြုရေး အဝင် စည်းကမ်းချက်</translation>
@@ -360,6 +361,7 @@
 <translation id="8286862437124483331">Google Chrome သည် စကားဝှက်ကို ပြပေးရန် ကြိုးစာနေသည်။ ၎င်းကို ခွင့်ပြုရန် သင်၏ Windows စကားဝှက်ကို ရိုက်ထည့်ပါ။</translation>
 <translation id="828798499196665338">Chrome အတွက် "ဝဘ်ဆိုက်၊ အက်ပ်နှင့် နောက်ဆက်တွဲ ခွင့်ပြုချက်များ" ကို သင့်မိဘက ပိတ်လိုက်သည်။ ဤ <ph name="EXTENSION_TYPE_PARAMETER" /> ဖွင့်ခြင်းကို ခွင့်မပြုပါ။</translation>
 <translation id="8290100596633877290">ဝါး! Google Chrome ပျက်သွားပြီ။ ယခုပြန်စတင်မလား?</translation>
+<translation id="8341646175450781745">ဖွင့်ထားပါက Chrome သည် အသုံးမပြုသည့်တဘ်များရှိ မှတ်ဉာဏ်ကို နေရာလွတ်ပြုလုပ်သည်။ ၎င်းက အသုံးပြုနေသည့်တဘ်နှင့် အခြားအက်ပ်များအား ကွန်ပျူတာရင်းမြစ် ပိုပေးပြီး Chrome ကို မြန်ဆန်စေသည်။ အသုံးမပြုသည့်တဘ်များသို့ ပြန်သွားသောအခါ ၎င်းတို့က အလိုအလျောက် ပြန်လည်လုပ်ဆောင်လာမည်။ <ph name="BEGIN_LINK" />ပိုမိုလေ့လာရန်<ph name="END_LINK" /> (သို့) <ph name="BEGIN_LINK_2" />အကြံပြုချက် ပို့ရန်<ph name="END_LINK_2" /></translation>
 <translation id="8342675569599923794">ဤဖိုင်သည် အန္တရာယ်ရှိပါသည်။ ထို့ကြောင့် Chrome သည် ၎င်းကို ပိတ်ဆို့ထားပါသည်။</translation>
 <translation id="8349795646647783032"><ph name="BEGIN_BOLD" />ဤဒေတာကို အသုံးပြုပုံ-<ph name="END_BOLD" /> ဝဘ်ဆိုက်များသည် သင်၏စိတ်ဝင်စားမှုများကို Chrome တွင် သိမ်းနိုင်သည်။ ဥပမာ မာရသွန်အတွက် ရှူးဖိနပ်ဝယ်ရန် ဝဘ်ဆိုက်တွင်ဝင်ကြည့်ပါက ဝဘ်ဆိုက်သည် သင်၏စိတ်ဝင်စားမှုကို မာရသွန်ပြေးခြင်းအဖြစ် သတ်မှတ်နိုင်သည်။ နောင်တွင် ပြိုင်ပွဲအတွက်စာရင်းသွင်းရန် အခြားဝဘ်ဆိုက်သို့ ဝင်ကြည့်သောအခါ ထိုဝဘ်ဆိုက်က သင်၏စိတ်ဝင်စားမှုများပေါ် အခြေခံပြီး အပြေးဖိနပ်ကြော်ငြာကို ပြနိုင်သည်။</translation>
 <translation id="8370517070665726704">မူပိုင် <ph name="YEAR" /> Google LLC. မူပိုင်ခွင့်အားလုံး ယူထားသည်။</translation>
diff --git a/chrome/app/resources/google_chrome_strings_nl.xtb b/chrome/app/resources/google_chrome_strings_nl.xtb
index d779c623..32645c7 100644
--- a/chrome/app/resources/google_chrome_strings_nl.xtb
+++ b/chrome/app/resources/google_chrome_strings_nl.xtb
@@ -132,6 +132,7 @@
 <translation id="3360895254066713204">Chrome Helper</translation>
 <translation id="3379938682270551431">{0,plural, =0{Chrome wordt nu opnieuw gestart}=1{Chrome wordt over één seconde opnieuw gestart}other{Chrome wordt over # seconden opnieuw gestart}}</translation>
 <translation id="3396977131400919238">Er is tijdens de installatie een probleem opgetreden met het besturingssysteem. Download Google Chrome opnieuw.</translation>
+<translation id="3426646014273736870">Geheugenbesparing maakt Chrome sneller</translation>
 <translation id="3428747202529429621">Beschermt je op Chrome en kan worden gebruikt om de beveiliging in andere Google-apps te verbeteren als je bent ingelogd</translation>
 <translation id="3434246496373299699">Chrome kan je wachtwoorden checken als je inlogt met je Google-account</translation>
 <translation id="3451115285585441894">Toevoegen aan Chrome...</translation>
@@ -231,6 +232,7 @@
 <translation id="5412485296464121825">Sites kunnen informatie over je interesses in Chrome opslaan. Als je bijvoorbeeld een site bezoekt om schoenen voor een marathon te kopen, kan de site je interesse definiëren als 'deelname aan marathons'. Als je later een andere site bezoekt om je aan te melden voor een race, kan die site je een advertentie voor hardloopschoenen laten zien op basis van je interesses.</translation>
 <translation id="5430073640787465221">Je bestand met voorkeuren is beschadigd of ongeldig. Google Chrome kan je instellingen niet herstellen.</translation>
 <translation id="5524761631371622910">Tijdens actieve proeven en als Chrome je willekeurig in een actieve proef heeft geplaatst, heeft je browsegeschiedenis invloed op de advertenties die je te zien krijgt en de interesses zoals hieronder geschat. Ter bescherming van je privacy verwijdert Chrome je interesses elke maand op voortschrijdende basis.</translation>
+<translation id="5530733413481476019">Maak Chrome sneller</translation>
 <translation id="556024056938947818">Google Chrome probeert wachtwoorden te bekijken.</translation>
 <translation id="5566025111015594046">Google Chrome (mDNS-In)</translation>
 <translation id="565744775970812598"><ph name="FILE_NAME" /> kan gevaarlijk zijn en is daarom door Chrome geblokkeerd.</translation>
@@ -257,6 +259,7 @@
 <translation id="608006075545470555">Werkprofiel toevoegen aan deze browser</translation>
 <translation id="6113794647360055231">Chrome is nu nog beter</translation>
 <translation id="6145313976051292476">Pdf's openen in Chrome</translation>
+<translation id="6155960517327665396">Geheugenbesparing maakte Chrome sneller</translation>
 <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation>
 <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> - Google Chrome Bèta</translation>
 <translation id="6235018212288296708">Inkomende regel zodat Google Chrome mDNS-verkeer toestaat.</translation>
@@ -357,6 +360,7 @@
 <translation id="8286862437124483331">Google Chrome probeert wachtwoorden te bekijken. Geef je Windows-wachtwoord op om dit toe te staan.</translation>
 <translation id="828798499196665338">Je ouder heeft 'Rechten voor sites, apps en extensies' uitgezet voor Chrome. Je mag deze <ph name="EXTENSION_TYPE_PARAMETER" /> niet aanzetten.</translation>
 <translation id="8290100596633877290">Oeps! Google Chrome is vastgelopen. Nu opnieuw starten?</translation>
+<translation id="8341646175450781745">Als deze functie aanstaat, maakt Chrome geheugen van inactieve tabbladen vrij. Zo krijgen actieve tabbladen en andere apps meer resources en blijft Chrome snel. Je inactieve tabbladen worden automatisch weer actief als je ernaar terugkeert. <ph name="BEGIN_LINK" />Meer informatie<ph name="END_LINK" /> of <ph name="BEGIN_LINK_2" />feedback sturen<ph name="END_LINK_2" /></translation>
 <translation id="8342675569599923794">Dit bestand is gevaarlijk en is daarom door Chrome geblokkeerd.</translation>
 <translation id="8349795646647783032"><ph name="BEGIN_BOLD" />Hoe we deze gegevens gebruiken:<ph name="END_BOLD" /> Sites kunnen informatie over je interesses in Chrome opslaan. Als je bijvoorbeeld een site bezoekt om schoenen voor een marathon te kopen, kan de site je interesse definiëren als 'deelname aan marathons'. Als je later een andere site bezoekt om je aan te melden voor een race, kan die site je een advertentie voor hardloopschoenen laten zien op basis van je interesses.</translation>
 <translation id="8370517070665726704">Copyright <ph name="YEAR" /> Google LLC. Alle rechten voorbehouden.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_no.xtb b/chrome/app/resources/google_chrome_strings_no.xtb
index 13213d9..aca9c02 100644
--- a/chrome/app/resources/google_chrome_strings_no.xtb
+++ b/chrome/app/resources/google_chrome_strings_no.xtb
@@ -128,6 +128,7 @@
 <translation id="3360895254066713204">Chrome-hjelper</translation>
 <translation id="3379938682270551431">{0,plural, =0{Chrome startes på nytt nå}=1{Chrome startes på nytt om 1 sekund}other{Chrome startes på nytt om # sekunder}}</translation>
 <translation id="3396977131400919238">Det oppstod en feil i operativsystemet under installeringen. Last ned Google Chrome på nytt.</translation>
+<translation id="3426646014273736870">Minnesparing har gjort Chrome raskere</translation>
 <translation id="3428747202529429621">Holder deg trygg i Chrome og kan brukes til å øke sikkerheten din i andre Google-apper når du er pålogget</translation>
 <translation id="3434246496373299699">Chrome kan sjekke passordene dine når du logger på med Google-kontoen din</translation>
 <translation id="3451115285585441894">Legger til i Chrome …</translation>
@@ -225,6 +226,7 @@
 <translation id="5412485296464121825">Nettsteder kan lagre informasjon om interessene dine i Chrome. Hvis du for eksempel besøker et nettsted for å kjøpe maratonsko, kan det hende nettstedet definerer interessen din som maratonløp. Hvis du senere besøker et annet nettsted for å melde deg på et løp, kan dette nettstedet vise deg en annonse for løpesko basert på interessene dine.</translation>
 <translation id="5430073640787465221">Innstillingsfilen er skadet eller ugyldig. Google Chrome kan ikke gjenopprette innstillingene dine.</translation>
 <translation id="5524761631371622910">Når prøveprosjekter er påslått, og hvis Chrome har plassert deg tilfeldig i et aktivt prøveprosjekt, påvirker nettleserloggen din annonsene du ser, og interessene som er anslått nedenfor. For å beskytte personvernet ditt sletter Chrome interessene dine på rullerende basis hver måned.</translation>
+<translation id="5530733413481476019">Gjør Chrome raskere</translation>
 <translation id="556024056938947818">Google Chrome prøver å vise passord.</translation>
 <translation id="5566025111015594046">Google Chrome (mDNS-Inn)</translation>
 <translation id="565744775970812598"><ph name="FILE_NAME" /> kan være farlig, så Chrome har blokkert den.</translation>
@@ -251,6 +253,7 @@
 <translation id="608006075545470555">Legg til en jobbprofil i denne nettleseren</translation>
 <translation id="6113794647360055231">Nå er Chrome blitt enda bedre</translation>
 <translation id="6145313976051292476">Åpne PDF-filer i Chrome</translation>
+<translation id="6155960517327665396">Minnesparing har gjort Chrome raskere</translation>
 <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation>
 <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> – betaversjon av Google Chrome</translation>
 <translation id="6235018212288296708">Regel om innkommende trafikk for Google Chrome for å tillate mDNS-trafikk.</translation>
@@ -351,6 +354,7 @@
 <translation id="8286862437124483331">Google Chrome forsøker å vise passord. Skriv inn Windows-passordet ditt for å tillate dette.</translation>
 <translation id="828798499196665338">Forelderen din har slått av «Tillatelser for nettsteder, apper og utvidelser» for Chrome. Du har ikke tillatelse til å slå på denne <ph name="EXTENSION_TYPE_PARAMETER" />.</translation>
 <translation id="8290100596633877290">Google Chrome har fått et programstopp. Vil du starte på nytt nå?</translation>
+<translation id="8341646175450781745">Når dette er på, frigjør Chrome minne fra inaktive faner. Dette gir aktive faner og andre apper flere datamaskinressurser og holder Chrome rask. De inaktive fanene dine blir automatisk aktive igjen når du går tilbake til dem. <ph name="BEGIN_LINK" />Finn ut mer<ph name="END_LINK" />, eller <ph name="BEGIN_LINK_2" />send en tilbakemelding<ph name="END_LINK_2" /></translation>
 <translation id="8342675569599923794">Denne filen er farlig, så Chrome har blokkert den.</translation>
 <translation id="8349795646647783032"><ph name="BEGIN_BOLD" />Slik bruker vi disse dataene:<ph name="END_BOLD" /> Nettsteder kan lagre informasjon om interessene dine i Chrome. Hvis du for eksempel besøker et nettsted for å kjøpe maratonsko, kan det hende nettstedet definerer interessen din som maratonløp. Hvis du senere besøker et annet nettsted for å melde deg på et løp, kan dette nettstedet vise deg en annonse for løpesko basert på interessene dine.</translation>
 <translation id="8370517070665726704">Copyright <ph name="YEAR" /> Google LLC. Med enerett.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_or.xtb b/chrome/app/resources/google_chrome_strings_or.xtb
index afaa1181..14de363 100644
--- a/chrome/app/resources/google_chrome_strings_or.xtb
+++ b/chrome/app/resources/google_chrome_strings_or.xtb
@@ -133,6 +133,7 @@
 <translation id="3360895254066713204">Chrome ସହାୟକ</translation>
 <translation id="3379938682270551431">{0,plural, =0{ବର୍ତ୍ତମାନ Chrome ପୁଣି ଲଞ୍ଚ ହେବ}=1{1 ସେକେଣ୍ଡରେ Chrome ପୁଣି ଲଞ୍ଚ ହେବ}other{# ସେକେଣ୍ଡରେ Chrome ପୁଣି ଲଞ୍ଚ ହେବ}}</translation>
 <translation id="3396977131400919238">ସଂସ୍ଥାପନ ସମୟରେ ଏକ ସଞ୍ଚାଳନ ସିଷ୍ଟମ୍ ତ୍ରୁଟି ସଂଘଠିତ ହୋଇଛି । ଦୟାକରି Google Chrome ପୁନଃ ଡାଉନଲୋଡ୍ କରନ୍ତୁ ।</translation>
+<translation id="3426646014273736870">ମେମୋରୀ ସେଭର Chromeକୁ ଆହୁରି ଦ୍ରୁତ କରିଛି</translation>
 <translation id="3428747202529429621">ଯେତେବେଳେ ଆପଣ ସାଇନ୍ ଇନ୍ କରନ୍ତି ଏହା ଆପଣଙ୍କୁ Chromeରେ ସୁରକ୍ଷିତ ରଖେ ଏବଂ ଅନ୍ୟ Google ଆପଗୁଡ଼ିକରେ ଆପଣଙ୍କ ସୁରକ୍ଷାକୁ ଉନ୍ନତ କରିବା ପାଇଁ ବ୍ୟବହାର କରାଯାଇପାରେ</translation>
 <translation id="3434246496373299699">ଆପଣ ଆପଣଙ୍କର Google ଆକାଉଣ୍ଟ ମାଧ୍ୟମରେ ସାଇନ୍ ଇନ୍ କଲେ, Chrome ଆପଣଙ୍କର ପାସୱାର୍ଡଗୁଡ଼ିକୁ ଯାଞ୍ଚ କରିପାରିବ</translation>
 <translation id="3451115285585441894">Chromeକୁ ଯୋଗ କରାଯାଉଛି...</translation>
@@ -234,6 +235,7 @@
 
 ଆପଣଙ୍କର ସେଟିଂସ୍‌ ପୁନରୁଦ୍ଧାର କରିବାକୁ Google Chrome ଅକ୍ଷମ ଅଟେ।</translation>
 <translation id="5524761631371622910">ଟ୍ରାଏଲଗୁଡ଼ିକ ଚାଲୁ ଥିବା ସମୟରେ ଯଦି Chrome ଆପଣଙ୍କୁ ରେଣ୍ଡମ ଭାବେ ଏକ ସକ୍ରିୟ ଟ୍ରାଏଲରେ ରଖିଥାଏ, ତେବେ ଆପଣଙ୍କ ବ୍ରାଉଜିଂ ଇତିହାସ ଆପଣ ଦେଖୁଥିବା ବିଜ୍ଞାପନ ଏବଂ ରୁଚିଗୁଡ଼ିକୁ ନିମ୍ନରେ ଆକଳନ କରାଯାଇଥିବା ଅନୁସାରେ ପ୍ରଭାବିତ କରେ। ଆପଣଙ୍କ ଗୋପନୀୟତାକୁ ସୁରକ୍ଷିତ ରଖିବା ପାଇଁ, Chrome ପ୍ରତି ମାସରେ ଆପଣଙ୍କ ରୁଚିଗୁଡ଼ିକୁ ପର୍ଯ୍ୟାୟ କ୍ରମେ ଡିଲିଟ କରେ।</translation>
+<translation id="5530733413481476019">Chromeକୁ ଆହୁରି ଦ୍ରୁତ କରନ୍ତୁ</translation>
 <translation id="556024056938947818">Google Chrome ପାସ୍‌ୱାର୍ଡ ଦେଖାଇବାକୁ ଚାହୁଁଛି।</translation>
 <translation id="5566025111015594046">Google Chrome (mDNS-In)</translation>
 <translation id="565744775970812598"><ph name="FILE_NAME" /> ବିପଜ୍ଜନକ ହୋଇପାରେ, ତେଣୁ Chrome ଏହାକୁ ବ୍ଲକ୍ କରିଦେଇଛି।</translation>
diff --git a/chrome/app/resources/google_chrome_strings_pa.xtb b/chrome/app/resources/google_chrome_strings_pa.xtb
index dfd5bdc..c29f2d53 100644
--- a/chrome/app/resources/google_chrome_strings_pa.xtb
+++ b/chrome/app/resources/google_chrome_strings_pa.xtb
@@ -133,6 +133,7 @@
 <translation id="3360895254066713204">Chrome ਸਹਾਇਕ</translation>
 <translation id="3379938682270551431">{0,plural, =0{Chrome ਹੁਣੇ ਮੁੜ-ਲਾਂਚ ਹੋਵੇਗਾ}=1{Chrome 1 ਸਕਿੰਟ ਵਿੱਚ ਮੁੜ-ਲਾਂਚ ਹੋਵੇਗਾ}other{Chrome # ਸਕਿੰਟਾਂ ਵਿੱਚ ਮੁੜ-ਲਾਂਚ ਹੋਵੇਗਾ}}</translation>
 <translation id="3396977131400919238">ਸਥਾਪਤ ਕਰਨ ਦੌਰਾਨ ਇੱਕ ਓਪਰੇਟਿੰਗ ਸਿਸਟਮ ਵਿੱਚ ਗੜਬੜ ਹੋਈ। ਕਿਰਪਾ ਕਰਕੇ Google Chrome ਨੂੰ ਦੁਬਾਰਾ ਡਾਊਨਲੋਡ ਕਰੋ।</translation>
+<translation id="3426646014273736870">ਮੈਮੋਰੀ ਸੇਵਰ Chrome ਨੂੰ ਜ਼ਿਆਦਾ ਤੇਜ਼ ਬਣਾਉਂਦਾ ਹੈ</translation>
 <translation id="3428747202529429621">ਤੁਹਾਡੇ ਸਾਈਨ-ਇਨ ਹੋਣ 'ਤੇ, ਤੁਹਾਨੂੰ Chrome ਵਿੱਚ ਸੁਰੱਖਿਅਤ ਰੱਖਿਆ ਜਾਂਦਾ ਹੈ ਅਤੇ ਸ਼ਾਇਦ ਹੋਰ Google ਐਪਾਂ ਵਿੱਚ ਤੁਹਾਡੀ ਸੁਰੱਖਿਆ ਨੂੰ ਸੁਧਾਰਨ ਲਈ ਵਰਤਿਆ ਜਾ ਸਕੇ</translation>
 <translation id="3434246496373299699">ਤੁਹਾਡੇ ਵੱਲੋਂ ਆਪਣੇ Google ਖਾਤੇ ਵਿੱਚ ਸਾਈਨ-ਇਨ ਕਰਨ 'ਤੇ Chrome ਤੁਹਾਡੇ ਪਾਸਵਰਡਾਂ ਦੀ ਜਾਂਚ ਕਰ ਸਕਦਾ ਹੈ</translation>
 <translation id="3451115285585441894">Chrome ਵਿੱਚ ਸ਼ਾਮਲ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ...</translation>
@@ -234,6 +235,7 @@
 
 Google Chrome ਤੁਹਾਡੀਆਂ ਸੈਟਿੰਗਾਂ ਮੁੜ-ਹਾਸਲ ਨਹੀਂ ਕਰ ਸਕਿਆ।</translation>
 <translation id="5524761631371622910">ਜਦੋਂ ਪਰਖਾਂ ਚਾਲੂ ਹੁੰਦੀਆਂ ਹਨ ਅਤੇ ਜੇ Chrome ਨੇ ਤੁਹਾਨੂੰ ਬੇਤਰਤੀਬੀ ਨਾਲ ਕਿਰਿਆਸ਼ੀਲ ਪਰਖ ਵਿੱਚ ਰੱਖਿਆ ਹੈ, ਤਾਂ ਤੁਹਾਡਾ ਬ੍ਰਾਊਜ਼ਿੰਗ ਇਤਿਹਾਸ ਤੁਹਾਨੂੰ ਦਿਸਣ ਵਾਲੇ ਵਿਗਿਆਪਨਾਂ ਅਤੇ ਹੇਠਾਂ ਦਿੱਤੀਆਂ ਅੰਦਾਜ਼ਨ ਦਿਲਚਸਪੀਆਂ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰਦਾ ਹੈ। ਤੁਹਾਡੀ ਪਰਦੇਦਾਰੀ ਦੀ ਸੁਰੱਖਿਆ ਲਈ, Chrome ਹਰ ਮਹੀਨੇ ਰੋਲਿੰਗ ਦੇ ਆਧਾਰ 'ਤੇ ਤੁਹਾਡੀਆਂ ਦਿਲਚਸਪੀਆਂ ਨੂੰ ਮਿਟਾਉਂਦਾ ਹੈ।</translation>
+<translation id="5530733413481476019">Chrome ਨੂੰ ਜ਼ਿਆਦਾ ਤੇਜ਼ ਬਣਾਓ</translation>
 <translation id="556024056938947818">Google Chrome ਪਾਸਵਰਡ ਦਿਖਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਿਹਾ ਹੈ।</translation>
 <translation id="5566025111015594046">Google Chrome (mDNS-In)</translation>
 <translation id="565744775970812598"><ph name="FILE_NAME" /> ਖਤਰਨਾਕ ਹੋ ਸਕਦੀ ਹੈ, ਇਸ ਲਈ Chrome ਨੇ ਇਸਨੂੰ ਬਲਾਕ ਕਰ ਦਿੱਤਾ ਹੈ।</translation>
diff --git a/chrome/app/resources/google_chrome_strings_pl.xtb b/chrome/app/resources/google_chrome_strings_pl.xtb
index 88b0199..bac9ae0 100644
--- a/chrome/app/resources/google_chrome_strings_pl.xtb
+++ b/chrome/app/resources/google_chrome_strings_pl.xtb
@@ -128,6 +128,7 @@
 <translation id="3360895254066713204">Pomoc Chrome</translation>
 <translation id="3379938682270551431">{0,plural, =0{Chrome uruchomi się ponownie teraz}=1{Chrome uruchomi się ponownie za 1 sekundę}few{Chrome uruchomi się ponownie za # sekundy}many{Chrome uruchomi się ponownie za # sekund}other{Chrome uruchomi się ponownie za # sekundy}}</translation>
 <translation id="3396977131400919238">Podczas instalacji wystąpił błąd systemu operacyjnego. Pobierz Google Chrome ponownie.</translation>
+<translation id="3426646014273736870">Oszczędzanie pamięci przyspieszyło działanie Chrome</translation>
 <translation id="3428747202529429621">Dba o Twoje bezpieczeństwo w Chrome i może poprawiać Twoje bezpieczeństwo w innych aplikacjach Google, gdy się w nich zalogujesz</translation>
 <translation id="3434246496373299699">Chrome może sprawdzić Twoje hasła, gdy zalogujesz się na swoje konto Google.</translation>
 <translation id="3451115285585441894">Dodaję do Chrome...</translation>
@@ -225,6 +226,7 @@
 <translation id="5412485296464121825">W Chrome witryny mogą przechowywać informacje o Twoich zainteresowaniach. Na przykład jeśli odwiedzasz stronę internetową, żeby kupić buty na maraton, strona może zidentyfikować bieganie w maratonach jako Twoje zainteresowanie. Jeśli później odwiedzisz inną witrynę, żeby zapisać się na jakiś bieg, witryna ta może wyświetlić reklamę butów do biegania na podstawie Twoich zainteresowań.</translation>
 <translation id="5430073640787465221">Plik ustawień jest uszkodzony lub nieprawidłowy. Google Chrome nie może odzyskać ustawień.</translation>
 <translation id="5524761631371622910">Gdy testy są włączone i w wyniku losowego wyboru Chrome obejmuje Cię aktywny test, Twoja historia przeglądania wpływa na wyświetlane reklamy i oszacowane zainteresowania (patrz poniżej). Żeby chronić Twoją prywatność, Chrome co miesiąc automatycznie usuwa Twoje zainteresowania.</translation>
+<translation id="5530733413481476019">Przyspiesz działanie Chrome</translation>
 <translation id="556024056938947818">Google Chrome próbuje pokazać hasła.</translation>
 <translation id="5566025111015594046">Google Chrome (mDNS-In)</translation>
 <translation id="565744775970812598">Plik <ph name="FILE_NAME" /> może być niebezpieczny, dlatego został zablokowany przez Chrome.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_pt-PT.xtb b/chrome/app/resources/google_chrome_strings_pt-PT.xtb
index 680f6bb..bf66b16f 100644
--- a/chrome/app/resources/google_chrome_strings_pt-PT.xtb
+++ b/chrome/app/resources/google_chrome_strings_pt-PT.xtb
@@ -129,6 +129,7 @@
 <translation id="3360895254066713204">Ajudante do Chrome</translation>
 <translation id="3379938682270551431">{0,plural, =0{O Chrome será reiniciado agora}=1{O Chrome será reiniciado dentro de 1 segundo}other{O Chrome será reiniciado dentro de # segundos}}</translation>
 <translation id="3396977131400919238">Ocorreu um erro no sistema operativo durante a instalação. Descarregue de novo o Google Chrome.</translation>
+<translation id="3426646014273736870">A Poupança de memória tornou o Chrome mais rápido</translation>
 <translation id="3428747202529429621">Mantém a sua segurança no Chrome e pode ser utilizado para melhorar a sua segurança noutras apps Google quando tem sessão iniciada.</translation>
 <translation id="3434246496373299699">O Chrome pode verificar as suas palavras-passe quando inicia sessão com a sua Conta Google.</translation>
 <translation id="3451115285585441894">A adicionar ao Chrome...</translation>
@@ -226,6 +227,7 @@
 <translation id="5412485296464121825">Os sites podem armazenar informações no Chrome sobre os seus interesses. Por exemplo, se visitar um site para comprar ténis para uma maratona, o site pode definir "correr maratonas" como o seu interesse. Posteriormente, se visitar um site diferente para se inscrever numa corrida, esse site pode mostrar-lhe um anúncio de ténis de corrida com base nos seus interesses.</translation>
 <translation id="5430073640787465221">O ficheiro de preferências está danificado ou não é válido. O Google Chrome não consegue recuperar as suas definições.</translation>
 <translation id="5524761631371622910">Quando as avaliações estão ativadas, e se o Chrome tiver colocado o utilizador aleatoriamente numa avaliação ativa, o histórico de navegação afeta os anúncios que vê e os interesses, conforme estimados abaixo. Para proteger a sua privacidade, o Chrome elimina os seus interesses todos os meses.</translation>
+<translation id="5530733413481476019">Torne o Chrome mais rápido</translation>
 <translation id="556024056938947818">O Google Chrome está a tentar mostrar palavras-passe.</translation>
 <translation id="5566025111015594046">Google Chrome (mDNS-In)</translation>
 <translation id="565744775970812598"><ph name="FILE_NAME" /> pode ser perigoso, por isso o Chrome bloqueou-o.</translation>
@@ -252,6 +254,7 @@
 <translation id="608006075545470555">Adicione um perfil de trabalho a este navegador</translation>
 <translation id="6113794647360055231">O Chrome está ainda melhor</translation>
 <translation id="6145313976051292476">Abrir PDFs no Chrome</translation>
+<translation id="6155960517327665396">A Poupança de memória tornou o Chrome mais rápido</translation>
 <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation>
 <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> – Google Chrome Beta</translation>
 <translation id="6235018212288296708">Regra de importação para o Google Chrome permitir o tráfego mDNS.</translation>
@@ -352,6 +355,7 @@
 <translation id="8286862437124483331">O Google Chrome está a tentar mostrar palavras-passe. Escreva a sua palavra-passe do Windows para permitir esta ação.</translation>
 <translation id="828798499196665338">O teu pai/mãe desativou as "Autorizações para sites, apps e extensões" para o Chrome. Não é permitido ativar esta <ph name="EXTENSION_TYPE_PARAMETER" />.</translation>
 <translation id="8290100596633877290">Ups! O Google Chrome falhou. Reiniciar agora?</translation>
+<translation id="8341646175450781745">Quando está ativado, o Chrome liberta memória dos separadores inativos. Isto permite que os separadores ativos e outras apps tenham mais recursos do computador e mantém o Chrome rápido. Os seus separadores inativos ficam novamente ativos de forma automática quando regressa aos mesmos. <ph name="BEGIN_LINK" />Saiba mais<ph name="END_LINK" /> ou <ph name="BEGIN_LINK_2" />envie feedback<ph name="END_LINK_2" /></translation>
 <translation id="8342675569599923794">Este ficheiro é perigoso. Como tal, o Chrome bloqueou-o.</translation>
 <translation id="8349795646647783032"><ph name="BEGIN_BOLD" />Como usamos estes dados:<ph name="END_BOLD" /> os sites podem armazenar informações no Chrome sobre os seus interesses. Por exemplo, se visitar um site para comprar ténis para uma maratona, o site pode definir "correr maratonas" como o seu interesse. Posteriormente, se visitar um site diferente para se inscrever numa corrida, esse site pode mostrar-lhe um anúncio de ténis de corrida com base nos seus interesses.</translation>
 <translation id="8370517070665726704">Copyright <ph name="YEAR" /> Google LLC. Todos os direitos reservados.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sl.xtb b/chrome/app/resources/google_chrome_strings_sl.xtb
index 44e471f..3edf1fe 100644
--- a/chrome/app/resources/google_chrome_strings_sl.xtb
+++ b/chrome/app/resources/google_chrome_strings_sl.xtb
@@ -133,6 +133,7 @@
 <translation id="3360895254066713204">Pomočnik za Chrome</translation>
 <translation id="3379938682270551431">{0,plural, =0{Chrome se bo zdaj znova zagnal}=1{Chrome se bo znova zagnal čez eno sekundo}one{Chrome se bo znova zagnal čez # sekundo}two{Chrome se bo znova zagnal čez # sekundi}few{Chrome se bo znova zagnal čez # sekunde}other{Chrome se bo znova zagnal čez # sekund}}</translation>
 <translation id="3396977131400919238">Med namestitvijo je prišlo do napake v operacijskem sistemu. Ponovno prenesite program Google Chrome.</translation>
+<translation id="3426646014273736870">Varčevanje s pomnilnikom je pospešilo Chrome</translation>
 <translation id="3428747202529429621">Skrbi za vašo varnost v Chromu in ga je mogoče uporabiti za okrepitev varnosti v drugih Googlovih aplikacijah, ko ste prijavljeni.</translation>
 <translation id="3434246496373299699">Chrome lahko preveri vaša gesla, ko se prijavite z računom Google</translation>
 <translation id="3451115285585441894">Dodajanje v Chrome ...</translation>
@@ -234,6 +235,7 @@
 
 Google Chrome ne more obnoviti vaših nastavitev.</translation>
 <translation id="5524761631371622910">Če so preizkusi vklopljeni in vas je Chrome naključno prijavil za aktivni preizkus, zgodovina brskanja vpliva na oglase, ki so prikazani, in zanimanja, kot je ocenjeno spodaj. Chrome zaradi varovanja vaše zasebnosti vsak mesec sproti izbriše vaša zanimanja.</translation>
+<translation id="5530733413481476019">Pospešite Chrome</translation>
 <translation id="556024056938947818">Google Chrome poskuša prikazati gesla.</translation>
 <translation id="5566025111015594046">Google Chrome (mDNS-In)</translation>
 <translation id="565744775970812598">Datoteka <ph name="FILE_NAME" /> je morda nevarna, zato jo je Chrome blokiral.</translation>
@@ -260,6 +262,7 @@
 <translation id="608006075545470555">Dodajanje delovnega profila v ta brskalnik</translation>
 <translation id="6113794647360055231">Chrome je pravkar postal še boljši</translation>
 <translation id="6145313976051292476">Odpiranje datotek PDF v Chromu</translation>
+<translation id="6155960517327665396">Varčevanje s pomnilnikom je pospešilo Chrome</translation>
 <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> – Google Chrome</translation>
 <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> različica beta Google Chroma</translation>
 <translation id="6235018212288296708">Pravilo za dohodni promet za Google Chrome, ki omogoča promet mDNS.</translation>
@@ -360,6 +363,7 @@
 <translation id="8286862437124483331">Google Chrome poskuša prikazati gesla. Če želite omogočiti to, vnesite geslo za Windows.</translation>
 <translation id="828798499196665338">Tvoj starš je izklopil »Dovoljenja za spletna mesta, aplikacije in razširitve« za Chrome. Omogočanje tega ni dovoljeno: <ph name="EXTENSION_TYPE_PARAMETER" />.</translation>
 <translation id="8290100596633877290">Opa! Google Chrome se je zrušil. Ga želite znova zagnati?</translation>
+<translation id="8341646175450781745">Če je vklopljeno, Chrome sprosti pomnilnik z neaktivnih zavihkov. Tako imajo aktivni zavihki in druge aplikacije več računalniških sredstev, Chrome pa je še naprej hiter. Neaktivni zavihki znova postanejo aktivni, ko se vrnete nanje. <ph name="BEGIN_LINK" />Preberite več<ph name="END_LINK" /> ali <ph name="BEGIN_LINK_2" />pošljite povratne informacije<ph name="END_LINK_2" />.</translation>
 <translation id="8342675569599923794">Ta datoteka je nevarna, zato jo je Chrome blokiral.</translation>
 <translation id="8349795646647783032"><ph name="BEGIN_BOLD" />Kako uporabljamo te podatke:<ph name="END_BOLD" /> Spletna mesta lahko v Chromu shranjujejo podatke o vaših zanimanjih. Če na primer obiščete spletno mesto zaradi nakupa športnih copatov za maraton, bo spletno mesto morda določilo vaše zanimanje kot udeleževanje maratonov. Če pozneje obiščete drugo spletno mesto za registriranje za tek, vam lahko to spletno mesto glede na vaša zanimanja prikaže oglas za tekaško obutev.</translation>
 <translation id="8370517070665726704">Copyright <ph name="YEAR" /> Google LLC. Vse pravice pridržane.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sr-Latn.xtb b/chrome/app/resources/google_chrome_strings_sr-Latn.xtb
index 4a4db57f..aa4af71 100644
--- a/chrome/app/resources/google_chrome_strings_sr-Latn.xtb
+++ b/chrome/app/resources/google_chrome_strings_sr-Latn.xtb
@@ -133,6 +133,7 @@
 <translation id="3360895254066713204">Chrome pomoćnik</translation>
 <translation id="3379938682270551431">{0,plural, =0{Ponovo ćemo pokrenuti Chrome}=1{Ponovo ćemo pokrenuti Chrome za 1 sekundu}one{Ponovo ćemo pokrenuti Chrome za # sekundu}few{Ponovo ćemo pokrenuti Chrome za # sekunde}other{Ponovo ćemo pokrenuti Chrome za # sekundi}}</translation>
 <translation id="3396977131400919238">Tokom instalacije je došlo do greške u operativnom sistemu. Preuzmite Google Chrome ponovo.</translation>
+<translation id="3426646014273736870">Ušteda memorije je ubrzala Chrome</translation>
 <translation id="3428747202529429621">Štiti vas u Chrome-u i može da se koristi za poboljšanje bezbednosti u drugim Google aplikacijama kada ste prijavljeni</translation>
 <translation id="3434246496373299699">Chrome može da vam proverava lozinke kada se prijavite pomoću Google naloga</translation>
 <translation id="3451115285585441894">Dodavanje u Chrome...</translation>
@@ -234,6 +235,7 @@
 
 Google Chrome ne može da vrati podešavanja.</translation>
 <translation id="5524761631371622910">Dok probni periodi traju i ako vas je Chrome nasumično postavio u aktivni probni period, istorija pregledanja utiče na oglase koje vidite i interesovanja procenjena u nastavku. Radi zaštite privatnosti Chrome briše interesovanja svakog meseca čim postanu dostupna.</translation>
+<translation id="5530733413481476019">Ubrzajte Chrome</translation>
 <translation id="556024056938947818">Google Chrome pokušava da prikaže lozinke.</translation>
 <translation id="5566025111015594046">Google Chrome (mDNS-In)</translation>
 <translation id="565744775970812598">Datoteka <ph name="FILE_NAME" /> je možda opasna, pa ju je Chrome blokirao.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sr.xtb b/chrome/app/resources/google_chrome_strings_sr.xtb
index c5b4a7c..eaa1f476 100644
--- a/chrome/app/resources/google_chrome_strings_sr.xtb
+++ b/chrome/app/resources/google_chrome_strings_sr.xtb
@@ -133,6 +133,7 @@
 <translation id="3360895254066713204">Chrome помоћник</translation>
 <translation id="3379938682270551431">{0,plural, =0{Поново ћемо покренути Chrome}=1{Поново ћемо покренути Chrome за 1 секунду}one{Поново ћемо покренути Chrome за # секунду}few{Поново ћемо покренути Chrome за # секунде}other{Поново ћемо покренути Chrome за # секунди}}</translation>
 <translation id="3396977131400919238">Током инсталације је дошло до грешке у оперативном систему. Преузмите Google Chrome поново.</translation>
+<translation id="3426646014273736870">Уштеда меморије је убрзала Chrome</translation>
 <translation id="3428747202529429621">Штити вас у Chrome-у и може да се користи за побољшање безбедности у другим Google апликацијама када сте пријављени</translation>
 <translation id="3434246496373299699">Chrome може да вам проверава лозинке када се пријавите помоћу Google налога</translation>
 <translation id="3451115285585441894">Додавање у Chrome...</translation>
@@ -234,6 +235,7 @@
 
 Google Chrome не може да врати подешавања.</translation>
 <translation id="5524761631371622910">Док пробни периоди трају и ако вас је Chrome насумично поставио у активни пробни период, историја прегледања утиче на огласе које видите и интересовања процењена у наставку. Ради заштите приватности Chrome брише интересовања сваког месеца чим постану доступна.</translation>
+<translation id="5530733413481476019">Убрзајте Chrome</translation>
 <translation id="556024056938947818">Google Chrome покушава да прикаже лозинке.</translation>
 <translation id="5566025111015594046">Google Chrome (mDNS-In)</translation>
 <translation id="565744775970812598">Датотека <ph name="FILE_NAME" /> је можда опасна, па ју је Chrome блокирао.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sv.xtb b/chrome/app/resources/google_chrome_strings_sv.xtb
index 88976e58..8171eaa 100644
--- a/chrome/app/resources/google_chrome_strings_sv.xtb
+++ b/chrome/app/resources/google_chrome_strings_sv.xtb
@@ -260,6 +260,7 @@
 <translation id="608006075545470555">Lägg till en jobbprofil i den här webbläsaren</translation>
 <translation id="6113794647360055231">Vi har gjort Chrome ännu bättre</translation>
 <translation id="6145313976051292476">Öppna PDF-filer i Chrome</translation>
+<translation id="6155960517327665396">Minnessparläget har gjort Chrome snabbare</translation>
 <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation>
 <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> – Google Chrome Beta</translation>
 <translation id="6235018212288296708">Regel som tillåter inkommande mDNS-trafik för Google Chrome.</translation>
@@ -360,6 +361,7 @@
 <translation id="8286862437124483331">Skriv ditt Windows-lösenord om du vill tillåta att lösenord visas i Google Chrome.</translation>
 <translation id="828798499196665338">Din förälder har inaktiverat Behörigheter för webbplatser, appar och tillägg för Chrome. Det är inte tillåtet att aktivera denna <ph name="EXTENSION_TYPE_PARAMETER" />.</translation>
 <translation id="8290100596633877290">Hoppsan! Google Chrome har kraschat. Vill du starta om nu?</translation>
+<translation id="8341646175450781745">När det här alternativet är aktiverat frigörs minne från inaktiva flikar i Chrome. Detta förser aktiva flikar och andra appar med mer av datorns resurser, vilket gör att Chrome fortsätter att fungera snabbt. De inaktiva flikarna aktiveras automatiskt när du återvänder till dem. <ph name="BEGIN_LINK" />Läs mer<ph name="END_LINK" /> eller <ph name="BEGIN_LINK_2" />skicka feedback<ph name="END_LINK_2" /></translation>
 <translation id="8342675569599923794">Filen är farlig och har blockerats av Chrome.</translation>
 <translation id="8349795646647783032"><ph name="BEGIN_BOLD" />Så här använder vi denna data:<ph name="END_BOLD" /> Webbplatser kan lagra information om dina intressen med Chrome. Om du till exempel besöker en webbplats för att köpa skor till ett maraton kanske webbplatsen anger att du är intresserad av att springa maraton. Om du sedan besöker en annan webbplats för att registrera dig för ett lopp kan webbplatsen visa en annons för löparskor utifrån dina intressen.</translation>
 <translation id="8370517070665726704">Copyright <ph name="YEAR" /> Google LLC. Med ensamrätt.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_te.xtb b/chrome/app/resources/google_chrome_strings_te.xtb
index fc78a6a..a0747ab7d 100644
--- a/chrome/app/resources/google_chrome_strings_te.xtb
+++ b/chrome/app/resources/google_chrome_strings_te.xtb
@@ -266,7 +266,7 @@
 <translation id="6418662306461808273">ప్రస్తుతం ఉన్న Chrome ప్రొఫైల్‌కు స్విచ్ చేయాలా?</translation>
 <translation id="6506909944137591434">మీ పరిసరాల 3D మ్యాప్‌ను క్రియేట్ చేయడానికి Chromeకు కెమెరా అనుమతి అవసరం</translation>
 <translation id="6515495397637126556"><ph name="PAGE_TITLE" /> - Google Chrome Dev</translation>
-<translation id="659498884637196217">ఈ పరికరంలో Google పాస్‌వర్డ్ మేనేజర్‌లో</translation>
+<translation id="659498884637196217">ఈ పరికరంలో Google Password Managerలో</translation>
 <translation id="6632473616050862500">ChromeOS Flex అదనపు <ph name="BEGIN_LINK_CROS_OSS" />ఓపెన్ సోర్స్ సాఫ్ట్‌వేర్<ph name="END_LINK_CROS_OSS" /> ద్వారా సాధ్యమైంది.</translation>
 <translation id="6676384891291319759">ఇంటర్నెట్‌ను యాక్సెస్ చేయండి</translation>
 <translation id="6679975945624592337">Google Chromeను బ్యాక్‌గ్రౌండ్‌లో అమలు అయ్యేందుకు అనుమతించండి</translation>
@@ -340,7 +340,7 @@
 <translation id="7930071585467473040">పాస్‌వర్డ్‌లను కాపీ చేయడానికి Google Chrome ప్రయత్నిస్తోంది.</translation>
 <translation id="7951272445806340501">అప్‌డేట్‌ను వర్తింపచేయడానికి ChromeOS Flexను రీస్టార్ట్ చేయాలి.</translation>
 <translation id="7962410387636238736">Windows XP మరియు Windows Vistaలకు ఇప్పుడు మద్దతు లేనందున ఈ కంప్యూటర్ ఇకపై Google Chrome అప్‌డేట్‌లను స్వీకరించదు</translation>
-<translation id="8005666035647241369">ఈ పరికరంలో Google పాస్‌వర్డ్ మేనేజర్‌కు</translation>
+<translation id="8005666035647241369">ఈ పరికరంలో Google Password Managerకు</translation>
 <translation id="8008534537613507642">Chromeను మళ్లీ ఇన్‌స్టాల్ చేయి</translation>
 <translation id="8013993649590906847">చిత్రంలో ఉపయోగకరమైన వివరణ లేకుంటే, మీ కోసం ఒక వివరణను అందించడానికి Chrome ప్రయత్నిస్తుంది. వివరణలను క్రియేట్ చేయడానికి, చిత్రాలు Googleకు పంపబడతాయి.</translation>
 <translation id="80471789339884597">ఇన్‌స్టాల్ చేసినందుకు ధన్యవాదాలు. <ph name="BUNDLE_NAME" />‌ను ఉపయోగించే ముందు మీరు తప్పకుండా మీ అన్ని బ్రౌజర్‌లను రీస్టార్ట్ చేయాలి.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_th.xtb b/chrome/app/resources/google_chrome_strings_th.xtb
index 534e565..b828c61 100644
--- a/chrome/app/resources/google_chrome_strings_th.xtb
+++ b/chrome/app/resources/google_chrome_strings_th.xtb
@@ -128,6 +128,7 @@
 <translation id="3360895254066713204">ตัวช่วยเหลือของ Chrome</translation>
 <translation id="3379938682270551431">{0,plural, =0{Chrome จะเปิดขึ้นมาใหม่ตอนนี้}=1{Chrome จะเปิดขึ้นมาใหม่ใน 1 วินาที}other{Chrome จะเปิดขึ้นมาใหม่ใน # วินาที}}</translation>
 <translation id="3396977131400919238">มีข้อผิดพลาดของระบบปฏิบัติการเกิดขึ้นในระหว่างการติดตั้ง โปรดดาวน์โหลด Google Chrome อีกครั้ง</translation>
+<translation id="3426646014273736870">โหมดประหยัดหน่วยความจำช่วยให้ Chrome ทำงานได้เร็วขึ้น</translation>
 <translation id="3428747202529429621">รักษาความปลอดภัยของคุณใน Chrome และอาจใช้เพื่อปรับปรุงความปลอดภัยในแอปอื่นๆ ของ Google เมื่อลงชื่อเข้าใช้</translation>
 <translation id="3434246496373299699">Chrome จะตรวจสอบรหัสผ่านได้เมื่อคุณลงชื่อเข้าใช้ด้วยบัญชี Google</translation>
 <translation id="3451115285585441894">กำลังเพิ่มลงใน Chrome...</translation>
@@ -225,6 +226,7 @@
 <translation id="5412485296464121825">เว็บไซต์สามารถจัดเก็บข้อมูลเกี่ยวกับความสนใจไว้กับ Chrome ตัวอย่างเช่น หากคุณเข้าชมเว็บไซต์เพื่อซื้อรองเท้าวิ่งมาราธอน เว็บไซต์นี้อาจระบุว่าคุณสนใจการวิ่งมาราธอน ภายหลัง เมื่อคุณเข้าชมเว็บไซต์อื่นเพื่อลงทะเบียนแข่งมาราธอน เว็บไซต์นี้ก็อาจแสดงโฆษณารองเท้าวิ่งโดยอิงจากความสนใจดังกล่าว</translation>
 <translation id="5430073640787465221">ไฟล์ค่ากำหนดของคุณขัดข้องหรือไม่ถูกต้อง Google Chrome ไม่สามารถกู้คืนการตั้งค่าของคุณได้</translation>
 <translation id="5524761631371622910">เมื่อเริ่มการทดสอบและหาก Chrome สุ่มคุณไปไว้ในการทดสอบที่ดำเนินอยู่ ประวัติการท่องเว็บจะส่งผลต่อโฆษณาที่คุณเห็นและความสนใจที่ระบบคาดคะเนไว้ดังที่แสดงอยู่ด้านล่างนี้ Chrome ลบความสนใจเป็นประจำทุกเดือนเพื่อปกป้องความเป็นส่วนตัวของคุณ</translation>
+<translation id="5530733413481476019">ทำให้ Chrome เร็วขึ้น</translation>
 <translation id="556024056938947818">Google Chrome กำลังพยายามแสดงรหัสผ่าน</translation>
 <translation id="5566025111015594046">Google Chrome (mDNS-In)</translation>
 <translation id="565744775970812598"><ph name="FILE_NAME" /> อาจเป็นอันตราย Chrome จึงบล็อกไว้</translation>
@@ -251,6 +253,7 @@
 <translation id="608006075545470555">เพิ่มโปรไฟล์งานลงในเบราว์เซอร์นี้</translation>
 <translation id="6113794647360055231">Chrome ดีขึ้นกว่าเดิม</translation>
 <translation id="6145313976051292476">เปิด PDF ใน Chrome</translation>
+<translation id="6155960517327665396">โหมดประหยัดหน่วยความจําช่วยให้ Chrome ทํางานได้เร็วขึ้น</translation>
 <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation>
 <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> - Google Chrome เบต้า</translation>
 <translation id="6235018212288296708">กฎขาเข้าสำหรับ Google Chrome เพื่ออนุญาตการเข้าชมแบบ mDNS</translation>
@@ -351,6 +354,7 @@
 <translation id="8286862437124483331">Google Chrome กำลังพยายามแสดงรหัสผ่าน พิมพ์รหัสผ่าน Windows ของคุณเพื่อแสดงรหัสผ่าน</translation>
 <translation id="828798499196665338">ผู้ปกครองได้ปิด "สิทธิ์สำหรับเว็บไซต์ แอป และส่วนขยาย" ใน Chrome ไม่อนุญาตให้เปิดใช้<ph name="EXTENSION_TYPE_PARAMETER" />นี้</translation>
 <translation id="8290100596633877290">อ๊ะ! Google Chrome ขัดข้อง เปิดใหม่ตอนนี้หรือไม่</translation>
+<translation id="8341646175450781745">เมื่อเปิดใช้โหมดนี้ Chrome จะเพิ่มหน่วยความจําจากแท็บที่ไม่ได้ใช้งาน ซึ่งทําให้แท็บที่ใช้งานอยู่และแอปอื่นๆ มีทรัพยากรสําหรับคอมพิวเตอร์เพิ่มขึ้นและช่วยให้ Chrome ทํางานได้เร็ว แท็บที่ไม่มีการใช้งานจะกลับมาทํางานโดยอัตโนมัติเมื่อคุณไปที่แท็บเหล่านั้น <ph name="BEGIN_LINK" />ดูข้อมูลเพิ่มเติม<ph name="END_LINK" />หรือ<ph name="BEGIN_LINK_2" />ส่งความคิดเห็น<ph name="END_LINK_2" /></translation>
 <translation id="8342675569599923794">ไฟล์นี้อันตราย Chrome จึงบล็อกไว้</translation>
 <translation id="8349795646647783032"><ph name="BEGIN_BOLD" />วิธีที่เราใช้ข้อมูลนี้:<ph name="END_BOLD" /> เว็บไซต์สามารถจัดเก็บข้อมูลเกี่ยวกับความสนใจไว้กับ Chrome ตัวอย่างเช่น หากคุณเข้าชมเว็บไซต์เพื่อซื้อรองเท้าวิ่งมาราธอน เว็บไซต์นี้อาจระบุว่าคุณสนใจการวิ่งมาราธอน ภายหลัง เมื่อคุณเข้าชมเว็บไซต์อื่นเพื่อลงทะเบียนแข่งมาราธอน เว็บไซต์นี้ก็อาจแสดงโฆษณารองเท้าวิ่งโดยอิงจากความสนใจดังกล่าว</translation>
 <translation id="8370517070665726704">ลิขสิทธิ์ <ph name="YEAR" /> Google LLC สงวนลิขสิทธิ์</translation>
diff --git a/chrome/app/resources/google_chrome_strings_tr.xtb b/chrome/app/resources/google_chrome_strings_tr.xtb
index 82f69809..a17ba0d 100644
--- a/chrome/app/resources/google_chrome_strings_tr.xtb
+++ b/chrome/app/resources/google_chrome_strings_tr.xtb
@@ -253,6 +253,7 @@
 <translation id="608006075545470555">Bu tarayıcıya İş Profili ekle</translation>
 <translation id="6113794647360055231">Chrome daha da iyi bir hale geldi</translation>
 <translation id="6145313976051292476">PDF'leri Chrome'da aç</translation>
+<translation id="6155960517327665396">Bellek Tasarrufu sayesinde Chrome artık daha hızlı</translation>
 <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation>
 <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> - Google Chrome Beta</translation>
 <translation id="6235018212288296708">Google Chrome'un mDNS trafiğine izin vermeyi sağlayan gelen trafik kuralı.</translation>
@@ -353,6 +354,7 @@
 <translation id="8286862437124483331">Google Chrome şifreleri göstermeye çalışıyor. Buna izin vermek için Windows şifrenizi yazın.</translation>
 <translation id="828798499196665338">Ebeveyniniz, Chrome'a yönelik "Siteler, uygulamalar ve uzantılar için izinler"i kapattı. Bu <ph name="EXTENSION_TYPE_PARAMETER" /> uzantısının etkinleştirilmesine izin verilmiyor.</translation>
 <translation id="8290100596633877290">Of! Google Chrome kilitlendi. Şimdi yeniden başlatılsın mı?</translation>
+<translation id="8341646175450781745">Bu ayar açık olduğunda Chrome, etkin olmayan sekmelerdeki belleği boşaltır. Böylece, etkin sekmeler ile diğer uygulamalar daha fazla bilgisayar kaynağına sahip olur ve Chrome hızlı çalışmaya devam eder. Geri döndüğünüz etkin olmayan sekmeler otomatik olarak tekrar etkin hale gelir. <ph name="BEGIN_LINK" />Daha fazla bilgi edinin<ph name="END_LINK" /> veya <ph name="BEGIN_LINK_2" />geri bildirim gönderin<ph name="END_LINK_2" /></translation>
 <translation id="8342675569599923794">Bu dosya tehlikeli olduğu için Chrome tarafından engellendi.</translation>
 <translation id="8349795646647783032"><ph name="BEGIN_BOLD" />Bu verileri kullanma şeklimiz:<ph name="END_BOLD" /> Siteler, ilgi alanlarınız hakkındaki bilgileri Chrome'da saklayabilir. Örneğin, maraton ayakkabısı satın almak için ziyaret ettiğiniz bir site, maraton koşmayı ilgi alanınız olarak tanımlayabilir. Daha sonra bir yarışa kaydolmak için farklı bir siteyi ziyaret ettiğinizde o site ilgi alanlarınıza dayalı olarak size koşu ayakkabısı reklamı gösterebilir.</translation>
 <translation id="8370517070665726704">Telif hakkı <ph name="YEAR" /> Google LLC. Tüm hakları saklıdır.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_uz.xtb b/chrome/app/resources/google_chrome_strings_uz.xtb
index 03b755f5..73ae7cc2 100644
--- a/chrome/app/resources/google_chrome_strings_uz.xtb
+++ b/chrome/app/resources/google_chrome_strings_uz.xtb
@@ -130,6 +130,7 @@
 <translation id="3360895254066713204">Chrome Helper</translation>
 <translation id="3379938682270551431">{0,plural, =0{Chrome hozir qayta ishga tushadi}=1{Chrome 1 soniyadan keyin qayta ishga tushadi}other{Chrome # soniyadan keyin qayta ishga tushadi}}</translation>
 <translation id="3396977131400919238">O‘rnatish mobaynida operatsion tizim xatoligi yuz berdi. Google Chrome’ni qaytadan yuklab oling.</translation>
+<translation id="3426646014273736870">Xotirani tejash funksiyasi Chromeni tezlashtirdi</translation>
 <translation id="3428747202529429621">Hisobingizga kirganingizda Chrome va boshqa Google ilovalaridan xavfsiz foydalanishingizni taʼminlaydi</translation>
 <translation id="3434246496373299699">Google hisobingizga kirsangiz, Chrome parollaringizni tekshira oladi</translation>
 <translation id="3451115285585441894">O‘rnatilmoqda...</translation>
@@ -231,6 +232,7 @@
 
 Google Chrome sozlamalaringizni qaytadan tiklay olmadi.</translation>
 <translation id="5524761631371622910">Sinov muddatlari yoqilganida Chrome sizni tasodifiy faol sinovga joylaganida, siz ochgan sahifalar tarixi chiqadigan reklama va quyidagi qiziqishlaringizga taʼsir qiladi. Maxfiylikni himoya qilish maqsadida Chrome har oyda qiziqishlaringizni avtomatik oʻchiradi.</translation>
+<translation id="5530733413481476019">Chromeni tezlashtirish</translation>
 <translation id="556024056938947818">Kirtilgan parollar Google Chrome‘da ko‘rsatiladi.</translation>
 <translation id="5566025111015594046">Google Chrome (mDNS-In)</translation>
 <translation id="565744775970812598"><ph name="FILE_NAME" /> zararli bo‘lishi mumkin, shuning uchun u Chrome tomonidan bloklandi.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_zh-TW.xtb b/chrome/app/resources/google_chrome_strings_zh-TW.xtb
index fb17256..66a0886 100644
--- a/chrome/app/resources/google_chrome_strings_zh-TW.xtb
+++ b/chrome/app/resources/google_chrome_strings_zh-TW.xtb
@@ -254,6 +254,7 @@
 <translation id="608006075545470555">在這個瀏覽器中新增工作資料夾</translation>
 <translation id="6113794647360055231">Chrome 變得更好用了</translation>
 <translation id="6145313976051292476">在 Chrome 中開啟 PDF</translation>
+<translation id="6155960517327665396">記憶體節省模式可以提升 Chrome 運作速度</translation>
 <translation id="6169866489629082767"><ph name="PAGE_TITLE" /> - Google Chrome</translation>
 <translation id="6173637689840186878"><ph name="PAGE_TITLE" /> - Google Chrome 測試版</translation>
 <translation id="6235018212288296708">允許 mDNS 流量的 Google Chrome 輸入規則。</translation>
@@ -354,6 +355,7 @@
 <translation id="8286862437124483331">Google Chrome 現在會嘗試顯示密碼。如果你同意的話,請輸入你的 Windows 密碼。</translation>
 <translation id="828798499196665338">你的家長已停用 Chrome 的「網站、應用程式和擴充功能的權限」設定,因此你無法啟用這個<ph name="EXTENSION_TYPE_PARAMETER" />。</translation>
 <translation id="8290100596633877290">真糟糕!Google Chrome 當掉了,要立即重新啟動嗎?</translation>
+<translation id="8341646175450781745">這項設定開啟時,Chrome 會釋出閒置分頁占用的記憶體,為使用中的分頁和其他應用程式提供更多電腦資源,同時保持 Chrome 快速運作。當你切換回閒置分頁時,這些分頁會自動恢復為「使用中」狀態。<ph name="BEGIN_LINK" />瞭解詳情<ph name="END_LINK" />或<ph name="BEGIN_LINK_2" />提供意見<ph name="END_LINK_2" /></translation>
 <translation id="8342675569599923794">這個檔案並不安全,因此遭到 Chrome 封鎖。</translation>
 <translation id="8349795646647783032"><ph name="BEGIN_BOLD" />Google 如何使用這些資料:<ph name="END_BOLD" />網站可以將你的興趣喜好相關資訊儲存在 Chrome 中。舉例來說,如果你造訪某個網站想購買適合馬拉松活動的慢跑鞋,網站可能會判斷你的興趣是跑馬拉松。在此之後,如果你造訪另一個網站報名參加比賽,該網站就可以根據你的興趣喜好向你顯示慢跑鞋的廣告。</translation>
 <translation id="8370517070665726704">Copyright <ph name="YEAR" /> Google LLC. 保留所有權利。</translation>
diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp
index 1b8059b..fbc1aba8 100644
--- a/chrome/app/settings_strings.grdp
+++ b/chrome/app/settings_strings.grdp
@@ -1998,8 +1998,8 @@
   <message name="IDS_SETTINGS_SAFETY_CHECK_REVIEW_NOTIFICATION_PERMISSIONS_PRIMARY_LABEL" translateable="false" desc="'Review Notification Permissions' shows the websites that send a lot of notifications. This label is the header of the module in site settings notification page.">
     Review websites that sent a lot of notifications
   </message>
-  <message name="IDS_SETTINGS_SAFETY_CHECK_REVIEW_NOTIFICATION_PERMISSIONS_SECONDARY_LABEL" translateable="false" desc="'Review Notification Permissions' shows the websites that send a lot of notifications. This label is the description of the module in site settings notification page.">
-    These sites sent a lot of notifications in the last 2 months. You can stop them from sending future notifications.
+  <message name="IDS_SETTINGS_SAFETY_CHECK_REVIEW_NOTIFICATION_PERMISSIONS_SECONDARY_LABEL" desc="'Review Notification Permissions' shows the websites that send a lot of notifications. This label is the description of the module in site settings notification page.">
+    These sites sent a lot of notifications recently. You can stop them from sending future notifications.
   </message>
   <message name="IDS_SETTINGS_SAFETY_CHECK_NOTIFICATION_PERMISSION_REVIEW_IGNORED_TOAST_LABEL" desc="'Review Notification Permissions' shows the websites that send a lot of notifications. This label is to indicate for which site the user has explicitly allowed permissions.">
     Notifications allowed for <ph name="SITE">$1<ex>www.example.com</ex></ph>
@@ -2010,18 +2010,18 @@
   <message name="IDS_SETTINGS_SAFETY_CHECK_NOTIFICATION_PERMISSION_REVIEW_RESET_TOAST_LABEL" desc="'Review Notification Permissions' shows the websites that send a lot of notifications. This label is to indicate for which site the user has reset the notification permissions.">
     Notifications not allowed for <ph name="SITE">$1<ex>www.example.com</ex></ph>. You’ll be asked again on your next visit.
   </message>
-  <message name="IDS_SETTINGS_SAFETY_CHECK_REVIEW_NOTIFICATION_PERMISSIONS_COUNT_LABEL" translateable="false" desc="'Review Notification Permissions' shows the websites that send a lot of notifications. This label holds the details of the item and shows how many notifications are sent.">
+  <message name="IDS_SETTINGS_SAFETY_CHECK_REVIEW_NOTIFICATION_PERMISSIONS_COUNT_LABEL" desc="'Review Notification Permissions' shows the websites that send a lot of notifications. This label holds the details of the item and shows how many notifications are sent.">
     {NUM_NOTIFICATION, plural,
      =1 {About 1 notification a day}
      other {About {NUM_NOTIFICATION} notifications a day}}
   </message>
-  <message name="IDS_SETTINGS_SAFETY_CHECK_REVIEW_NOTIFICATION_PERMISSIONS_DONT_ALLOW_LABEL" translateable="false" desc="'Review Notification Permissions' shows the websites that send a lot of notifications. This label is for 'don't allow' action for a website in the module.">
+  <message name="IDS_SETTINGS_SAFETY_CHECK_REVIEW_NOTIFICATION_PERMISSIONS_DONT_ALLOW_LABEL" desc="'Review Notification Permissions' shows the websites that send a lot of notifications. This label is for 'don't allow' action for a website in the module.">
     Don't allow
   </message>
-  <message name="IDS_SETTINGS_SAFETY_CHECK_REVIEW_NOTIFICATION_PERMISSIONS_IGNORE_LABEL" translateable="false" desc="'Review Notification Permissions' shows the websites that send a lot of notifications. This label is to manually set users to allow the website so that the permissions will be never revoked later.">
+  <message name="IDS_SETTINGS_SAFETY_CHECK_REVIEW_NOTIFICATION_PERMISSIONS_IGNORE_LABEL" desc="'Review Notification Permissions' shows the websites that send a lot of notifications. This label is to manually set users to allow the website so that the permissions will be never revoked later.">
     Always allow notifications from this site
   </message>
-  <message name="IDS_SETTINGS_SAFETY_CHECK_REVIEW_NOTIFICATION_PERMISSIONS_RESET_LABEL" translateable="false" desc="'Review Notification Permissions' shows the websites that send a lot of notifications. This label is for resetings the permission to the 'ask' state.">
+  <message name="IDS_SETTINGS_SAFETY_CHECK_REVIEW_NOTIFICATION_PERMISSIONS_RESET_LABEL" desc="'Review Notification Permissions' shows the websites that send a lot of notifications. This label is for resetings the permission to the 'ask' state.">
     Don’t allow but ask later
   </message>
   <message name="IDS_SETTINGS_SAFETY_CHECK_NOTIFICATION_PERMISSION_REVIEW_UNDO" desc="'Review Notification Permissions' shows the websites that send a lot of notifications. This label is for undoing the current action after blocking permission for a site.">
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_SAFETY_CHECK_REVIEW_NOTIFICATION_PERMISSIONS_COUNT_LABEL.png.sha1 b/chrome/app/settings_strings_grdp/IDS_SETTINGS_SAFETY_CHECK_REVIEW_NOTIFICATION_PERMISSIONS_COUNT_LABEL.png.sha1
new file mode 100644
index 0000000..38998e1
--- /dev/null
+++ b/chrome/app/settings_strings_grdp/IDS_SETTINGS_SAFETY_CHECK_REVIEW_NOTIFICATION_PERMISSIONS_COUNT_LABEL.png.sha1
@@ -0,0 +1 @@
+eedc01cc2cfda5dae482d7a4047a04e21f9b4e97
\ No newline at end of file
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_SAFETY_CHECK_REVIEW_NOTIFICATION_PERMISSIONS_DONT_ALLOW_LABEL.png.sha1 b/chrome/app/settings_strings_grdp/IDS_SETTINGS_SAFETY_CHECK_REVIEW_NOTIFICATION_PERMISSIONS_DONT_ALLOW_LABEL.png.sha1
new file mode 100644
index 0000000..d4b12331
--- /dev/null
+++ b/chrome/app/settings_strings_grdp/IDS_SETTINGS_SAFETY_CHECK_REVIEW_NOTIFICATION_PERMISSIONS_DONT_ALLOW_LABEL.png.sha1
@@ -0,0 +1 @@
+b596d8363a4aeea9e49c376165dcdb691cab37d0
\ No newline at end of file
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_SAFETY_CHECK_REVIEW_NOTIFICATION_PERMISSIONS_IGNORE_LABEL.png.sha1 b/chrome/app/settings_strings_grdp/IDS_SETTINGS_SAFETY_CHECK_REVIEW_NOTIFICATION_PERMISSIONS_IGNORE_LABEL.png.sha1
new file mode 100644
index 0000000..a311d8a
--- /dev/null
+++ b/chrome/app/settings_strings_grdp/IDS_SETTINGS_SAFETY_CHECK_REVIEW_NOTIFICATION_PERMISSIONS_IGNORE_LABEL.png.sha1
@@ -0,0 +1 @@
+faec153a925f3b8e62915b86d11af270273df8ec
\ No newline at end of file
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_SAFETY_CHECK_REVIEW_NOTIFICATION_PERMISSIONS_RESET_LABEL.png.sha1 b/chrome/app/settings_strings_grdp/IDS_SETTINGS_SAFETY_CHECK_REVIEW_NOTIFICATION_PERMISSIONS_RESET_LABEL.png.sha1
new file mode 100644
index 0000000..6634234
--- /dev/null
+++ b/chrome/app/settings_strings_grdp/IDS_SETTINGS_SAFETY_CHECK_REVIEW_NOTIFICATION_PERMISSIONS_RESET_LABEL.png.sha1
@@ -0,0 +1 @@
+537a9a170aad44ebd38a9b94ea267fb1f34066de
\ No newline at end of file
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_SAFETY_CHECK_REVIEW_NOTIFICATION_PERMISSIONS_SECONDARY_LABEL.png.sha1 b/chrome/app/settings_strings_grdp/IDS_SETTINGS_SAFETY_CHECK_REVIEW_NOTIFICATION_PERMISSIONS_SECONDARY_LABEL.png.sha1
new file mode 100644
index 0000000..cc8a5ce
--- /dev/null
+++ b/chrome/app/settings_strings_grdp/IDS_SETTINGS_SAFETY_CHECK_REVIEW_NOTIFICATION_PERMISSIONS_SECONDARY_LABEL.png.sha1
@@ -0,0 +1 @@
+0bcca247ab3656ade7ed536b7a41c7fa2a986be3
\ No newline at end of file
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index 80ab073e..f85421fb 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -8322,6 +8322,8 @@
     sources += [
       "apps/app_service/webapk/webapk_test_server.cc",
       "apps/app_service/webapk/webapk_test_server.h",
+      "ash/accessibility/service/fake_accessibility_service.cc",
+      "ash/accessibility/service/fake_accessibility_service.h",
       "ash/app_mode/fake_cws.cc",
       "ash/app_mode/fake_cws.h",
       "ash/arc/extensions/fake_arc_support.cc",
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index 52db3a1d..8632d8a 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -3282,19 +3282,40 @@
 #endif  // BUILDFLAG(IS_ANDROID)
 
 #if BUILDFLAG(IS_ANDROID)
-const FeatureEntry::FeatureParam kUpmAndroidShadowSyncingUsers[] = {
+constexpr FeatureEntry::FeatureParam kUpmAndroidShadowSyncingUsers[] = {
     {password_manager::features::kUpmExperimentVariationParam.name,
      password_manager::features::kUpmExperimentVariationOption[1].name}};
-const FeatureEntry::FeatureParam kUpmAndroidEnableWithLegacyUi[] = {
+constexpr FeatureEntry::FeatureParam kUpmAndroidEnableWithLegacyUi[] = {
     {password_manager::features::kUpmExperimentVariationParam.name,
      password_manager::features::kUpmExperimentVariationOption[2].name}};
-const FeatureEntry::FeatureParam kUpmAndroidEnableForAllUsers[] = {
+constexpr FeatureEntry::FeatureParam kUpmAndroidEnableForAllUsers[] = {
     {password_manager::features::kUpmExperimentVariationParam.name,
      password_manager::features::kUpmExperimentVariationOption[3].name}};
 
-const FeatureEntry::FeatureVariation
+constexpr FeatureEntry::FeatureParam kUpmAndroidEnabledWithErrorHandling[] = {
+    {password_manager::features::kUpmExperimentVariationParam.name,
+     password_manager::features::kUpmExperimentVariationOption[0].name},
+    // Handle auth errors with the corresponding UI if available.
+    // AUTH_ERROR_RESOLVABLE = 11005, AUTH_ERROR_UNRESOLVABLE = 11006.
+    {password_manager::features::kIgnoredGmsApiErrors.name, "11005,11006"},
+    // Following errors are considered transitory
+    // NETWORK_ERROR = 7, API_NOT_CONNECTED = 17,
+    // CONNECTION_SUSPENDED_DURING_CALL = 20, RECONNECTION_TIMED_OUT = 22
+    // will be retried for GetAllLogins and GetAutofillableLogins.
+    {password_manager::features::kRetriableGmsApiErrors.name, "7,17,20,22"},
+    {password_manager::features::kFallbackOnModifyingOperations.name, "true"},
+    {password_manager::features::kFallbackOnUserAffectingReadOperations.name,
+     "true"},
+    {password_manager::features::kFallbackOnNonUserAffectingReadOperations.name,
+     "false"},
+    {password_manager::features::kFallbackOnRemoveOperations.name, "false"},
+};
+
+constexpr FeatureEntry::FeatureVariation
     kUnifiedPasswordManagerAndroidVariations[] = {
         // Skip kEnableForSyncingUsers which is the default Enabled param.
+        {"With default error lists", kUpmAndroidEnabledWithErrorHandling,
+         std::size(kUpmAndroidEnabledWithErrorHandling), nullptr},
         {"Shadow Traffic only", kUpmAndroidShadowSyncingUsers,
          std::size(kUpmAndroidShadowSyncingUsers), nullptr},
         {"With Legacy UI", kUpmAndroidEnableWithLegacyUi,
@@ -3858,9 +3879,6 @@
     {"bluetooth-quality-report", flag_descriptions::kBluetoothQualityReportName,
      flag_descriptions::kBluetoothQualityReportDescription, kOsCrOS,
      FEATURE_VALUE_TYPE(chromeos::features::kBluetoothQualityReport)},
-    {"bluetooth-revamp", flag_descriptions::kBluetoothRevampName,
-     flag_descriptions::kBluetoothRevampDescription, kOsCrOS,
-     FEATURE_VALUE_TYPE(chromeos::features::kBluetoothRevamp)},
     {"bluetooth-wbs-dogfood", flag_descriptions::kBluetoothWbsDogfoodName,
      flag_descriptions::kBluetoothWbsDogfoodDescription, kOsCrOS,
      FEATURE_VALUE_TYPE(chromeos::features::kBluetoothWbsDogfood)},
@@ -5828,6 +5846,12 @@
      FEATURE_VALUE_TYPE(chromeos::features::kHandwritingLibraryDlc)},
 #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
 
+#if BUILDFLAG(IS_CHROMEOS_ASH)
+    {"hats-use-new-histograms", flag_descriptions::kHatsUseNewHistogramsName,
+     flag_descriptions::kHatsUseNewHistogramsDescription, kOsCrOS,
+     FEATURE_VALUE_TYPE(ash::features::kHatsUseNewHistograms)},
+#endif  // BUILDFLAG(IS_CHROMEOS_ASH)
+
     {"block-insecure-private-network-requests",
      flag_descriptions::kBlockInsecurePrivateNetworkRequestsName,
      flag_descriptions::kBlockInsecurePrivateNetworkRequestsDescription, kOsAll,
@@ -7749,6 +7773,9 @@
     {"shelf-drag-to-pin", flag_descriptions::kShelfDragToPinName,
      flag_descriptions::kShelfDragToPinDescription, kOsCrOS,
      FEATURE_VALUE_TYPE(ash::features::kDragUnpinnedAppToPin)},
+    {"shelf-focus-order-v1", flag_descriptions::kShelfFocusOrderV1Name,
+     flag_descriptions::kShelfFocusOrderV1Description, kOsCrOS,
+     FEATURE_VALUE_TYPE(ash::features::kShelfFocusOrderV1)},
     {"shelf-gestures-with-vk",
      flag_descriptions::kShelfGesturesWithVirtualKeyboardName,
      flag_descriptions::kShelfGesturesWithVirtualKeyboardDescription, kOsCrOS,
@@ -9665,6 +9692,21 @@
      FEATURE_VALUE_TYPE(
          autofill::features::kAutofillEnableCvcForVcnYellowPath)},
 
+#if BUILDFLAG(IS_CHROMEOS_ASH)
+    {"enable-holding-space-predictability",
+     flag_descriptions::kHoldingSpacePredictabilityName,
+     flag_descriptions::kHoldingSpacePredictabilityDescription, kOsCrOS,
+     FEATURE_VALUE_TYPE(ash::features::kHoldingSpacePredictability)},
+    {"enable-holding-space-refresh",
+     flag_descriptions::kHoldingSpaceRefreshName,
+     flag_descriptions::kHoldingSpaceRefreshDescription, kOsCrOS,
+     FEATURE_VALUE_TYPE(ash::features::kHoldingSpaceRefresh)},
+    {"enable-holding-space-suggestions",
+     flag_descriptions::kHoldingSpaceSuggestionsName,
+     flag_descriptions::kHoldingSpaceSuggestionsDescription, kOsCrOS,
+     FEATURE_VALUE_TYPE(ash::features::kHoldingSpaceSuggestions)},
+#endif
+
     // NOTE: Adding a new flag requires adding a corresponding entry to enum
     // "LoginCustomFlags" in tools/metrics/histograms/enums.xml. See "Flag
     // Histograms" in tools/metrics/histograms/README.md (run the
diff --git a/chrome/browser/accessibility/service/accessibility_service_router.cc b/chrome/browser/accessibility/service/accessibility_service_router.cc
index 6d8b541..f44f729 100644
--- a/chrome/browser/accessibility/service/accessibility_service_router.cc
+++ b/chrome/browser/accessibility/service/accessibility_service_router.cc
@@ -24,12 +24,13 @@
 
 void AccessibilityServiceRouter::BindAssistiveTechnologyController(
     mojo::PendingReceiver<mojom::AssistiveTechnologyController>
-        at_controller_receiver) {
+        at_controller_receiver,
+    const std::vector<mojom::AssistiveTechnologyType>& enabled_features) {
   LaunchIfNotRunning();
 
   if (accessibility_service_.is_bound()) {
     accessibility_service_->BindAssistiveTechnologyController(
-        std::move(at_controller_receiver));
+        std::move(at_controller_receiver), enabled_features);
   }
 }
 
diff --git a/chrome/browser/accessibility/service/accessibility_service_router.h b/chrome/browser/accessibility/service/accessibility_service_router.h
index 725989a..1ca4fd34 100644
--- a/chrome/browser/accessibility/service/accessibility_service_router.h
+++ b/chrome/browser/accessibility/service/accessibility_service_router.h
@@ -21,13 +21,14 @@
       delete;
   ~AccessibilityServiceRouter() override;
 
-  void BindAutomationWithClient(
+  virtual void BindAutomationWithClient(
       mojo::PendingRemote<mojom::AutomationClient> automation_client_remote,
       mojo::PendingReceiver<mojom::Automation> automation_receiver);
 
-  void BindAssistiveTechnologyController(
+  virtual void BindAssistiveTechnologyController(
       mojo::PendingReceiver<mojom::AssistiveTechnologyController>
-          at_controller_receiver);
+          at_controller_receiver,
+      const std::vector<mojom::AssistiveTechnologyType>& enabled_features);
 
  private:
   void LaunchIfNotRunning();
diff --git a/chrome/browser/accessibility/service/accessibility_service_router_factory.cc b/chrome/browser/accessibility/service/accessibility_service_router_factory.cc
index 544e544a..0e1e4214 100644
--- a/chrome/browser/accessibility/service/accessibility_service_router_factory.cc
+++ b/chrome/browser/accessibility/service/accessibility_service_router_factory.cc
@@ -33,7 +33,7 @@
     default;
 
 KeyedService* AccessibilityServiceRouterFactory::BuildServiceInstanceFor(
-    content::BrowserContext* /*context*/) const {
+    content::BrowserContext* context) const {
   return new AccessibilityServiceRouter();
 }
 
diff --git a/chrome/browser/accessibility/service/accessibility_service_router_factory.h b/chrome/browser/accessibility/service/accessibility_service_router_factory.h
index b5e4d86c..87baf3e 100644
--- a/chrome/browser/accessibility/service/accessibility_service_router_factory.h
+++ b/chrome/browser/accessibility/service/accessibility_service_router_factory.h
@@ -24,6 +24,10 @@
   static AccessibilityServiceRouter* GetForBrowserContext(
       content::BrowserContext* context);
 
+  static AccessibilityServiceRouterFactory* GetInstanceForTest() {
+    return GetInstance();
+  }
+
  private:
   friend class base::NoDestructor<AccessibilityServiceRouterFactory>;
   static AccessibilityServiceRouterFactory* GetInstance();
diff --git a/chrome/browser/android/omnibox/autocomplete_controller_android.cc b/chrome/browser/android/omnibox/autocomplete_controller_android.cc
index 49385a8..9da8ac4 100644
--- a/chrome/browser/android/omnibox/autocomplete_controller_android.cc
+++ b/chrome/browser/android/omnibox/autocomplete_controller_android.cc
@@ -169,13 +169,34 @@
   autocomplete_controller_->Start(input_);
 }
 
-void AutocompleteControllerAndroid::StartPrefetch(JNIEnv* env) {
-  AutocompleteInput ntp_prefetch_input(
-      u"", metrics::OmniboxEventProto::NTP_ZPS_PREFETCH,
-      ChromeAutocompleteSchemeClassifier(profile_));
-  ntp_prefetch_input.set_focus_type(
-      metrics::OmniboxFocusType::INTERACTION_FOCUS);
-  autocomplete_controller_->StartPrefetch(ntp_prefetch_input);
+void AutocompleteControllerAndroid::StartPrefetch(
+    JNIEnv* env,
+    const JavaRef<jstring>& j_current_url,
+    jint j_page_classification) {
+  auto page_classification =
+      OmniboxEventProto::PageClassification(j_page_classification);
+  if (!OmniboxFieldTrial::IsZeroSuggestPrefetchingEnabledInContext(
+          page_classification)) {
+    return;
+  }
+
+  const bool interaction_clobber_focus_type =
+      base::FeatureList::IsEnabled(
+          omnibox::kOmniboxOnClobberFocusTypeOnContent) &&
+      !BaseSearchProvider::IsNTPPage(page_classification);
+
+  GURL current_url;
+  if (!j_current_url.is_null()) {
+    current_url = GURL(ConvertJavaStringToUTF16(env, j_current_url));
+  }
+
+  AutocompleteInput input(u"", page_classification,
+                          ChromeAutocompleteSchemeClassifier(profile_));
+  input.set_current_url(current_url);
+  input.set_focus_type(interaction_clobber_focus_type
+                           ? metrics::OmniboxFocusType::INTERACTION_CLOBBER
+                           : metrics::OmniboxFocusType::INTERACTION_FOCUS);
+  autocomplete_controller_->StartPrefetch(input);
 }
 
 ScopedJavaLocalRef<jobject> AutocompleteControllerAndroid::Classify(
@@ -222,7 +243,7 @@
 
   auto page_class =
       OmniboxEventProto::PageClassification(j_page_classification);
-  bool interaction_clobber_focus_type =
+  const bool interaction_clobber_focus_type =
       base::FeatureList::IsEnabled(
           omnibox::kOmniboxOnClobberFocusTypeOnContent) &&
       !BaseSearchProvider::IsNTPPage(page_class);
diff --git a/chrome/browser/android/omnibox/autocomplete_controller_android.h b/chrome/browser/android/omnibox/autocomplete_controller_android.h
index a0a40c0..8676bc58 100644
--- a/chrome/browser/android/omnibox/autocomplete_controller_android.h
+++ b/chrome/browser/android/omnibox/autocomplete_controller_android.h
@@ -48,7 +48,9 @@
              bool prefer_keyword,
              bool allow_exact_keyword_match,
              bool want_asynchronous_matches);
-  void StartPrefetch(JNIEnv* env);
+  void StartPrefetch(JNIEnv* env,
+                     const base::android::JavaRef<jstring>& j_current_url,
+                     jint j_page_classification);
   base::android::ScopedJavaLocalRef<jobject> Classify(
       JNIEnv* env,
       const base::android::JavaParamRef<jstring>& j_text,
diff --git a/chrome/browser/ash/BUILD.gn b/chrome/browser/ash/BUILD.gn
index 9ecbb170..7cfd1c68 100644
--- a/chrome/browser/ash/BUILD.gn
+++ b/chrome/browser/ash/BUILD.gn
@@ -49,6 +49,10 @@
     "accessibility/pumpkin_installer.h",
     "accessibility/select_to_speak_event_handler_delegate_impl.cc",
     "accessibility/select_to_speak_event_handler_delegate_impl.h",
+    "accessibility/service/accessibility_service_client.cc",
+    "accessibility/service/accessibility_service_client.h",
+    "accessibility/service/automation_client_impl.cc",
+    "accessibility/service/automation_client_impl.h",
     "account_manager/account_apps_availability.cc",
     "account_manager/account_apps_availability.h",
     "account_manager/account_apps_availability_factory.cc",
@@ -1903,8 +1907,8 @@
     "net/network_health/network_health.cc",
     "net/network_health/network_health.h",
     "net/network_health/network_health_constants.h",
-    "net/network_health/network_health_service.cc",
-    "net/network_health/network_health_service.h",
+    "net/network_health/network_health_manager.cc",
+    "net/network_health/network_health_manager.h",
     "net/network_health/signal_strength_tracker.cc",
     "net/network_health/signal_strength_tracker.h",
     "net/network_portal_detector_impl.cc",
@@ -3304,6 +3308,8 @@
     "//remoting/host/chromeos:enterprise_support",
     "//remoting/host/chromeos:host_event_reporter_impl",
     "//remoting/host/mojom",
+    "//services/accessibility:buildflags",
+    "//services/accessibility/public/mojom",
     "//services/data_decoder/public/cpp",
     "//services/device/public/mojom",
     "//services/device/public/mojom:usb",
diff --git a/chrome/browser/ash/accessibility/DEPS b/chrome/browser/ash/accessibility/DEPS
index b05e756..c1a71ee 100644
--- a/chrome/browser/ash/accessibility/DEPS
+++ b/chrome/browser/ash/accessibility/DEPS
@@ -6,4 +6,7 @@
   "speech_monitor\.(cc|h)": [
     "+content/public/browser/tts_controller.h",
   ],
+  "accessibility_manager.cc": [
+    "+services/accessibility/buildflags.h",
+  ],
 }
diff --git a/chrome/browser/ash/accessibility/accessibility_manager.cc b/chrome/browser/ash/accessibility/accessibility_manager.cc
index fff518ca..cb40395 100644
--- a/chrome/browser/ash/accessibility/accessibility_manager.cc
+++ b/chrome/browser/ash/accessibility/accessibility_manager.cc
@@ -48,6 +48,7 @@
 #include "chrome/browser/ash/accessibility/magnification_manager.h"
 #include "chrome/browser/ash/accessibility/pumpkin_installer.h"
 #include "chrome/browser/ash/accessibility/select_to_speak_event_handler_delegate_impl.h"
+#include "chrome/browser/ash/accessibility/service/accessibility_service_client.h"
 #include "chrome/browser/ash/app_mode/kiosk_app_manager.h"
 #include "chrome/browser/ash/crosapi/browser_manager.h"
 #include "chrome/browser/ash/policy/enrollment/enrollment_requisition_manager.h"
@@ -92,6 +93,7 @@
 #include "extensions/common/extension.h"
 #include "extensions/common/extension_messages.h"
 #include "extensions/common/extension_resource.h"
+#include "services/accessibility/buildflags.h"
 #include "services/audio/public/cpp/sounds/sounds_manager.h"
 #include "ui/accessibility/accessibility_features.h"
 #include "ui/accessibility/ax_enum_util.h"
@@ -438,6 +440,19 @@
     manager->Initialize(static_cast<int>(Sound::kVolumeAdjust),
                         bundle.GetRawDataResource(IDR_SOUND_VOLUME_ADJUST_WAV));
   }
+  if (::features::IsAccessibilityServiceEnabled()) {
+    // We create an AccessibilityServiceClient even if the build flag is not
+    // set, because this allows tests with the AccessibilityServiceClient to
+    // run.
+    accessibility_service_client_ =
+        std::make_unique<AccessibilityServiceClient>();
+#if !BUILDFLAG(ENABLE_ACCESSIBILITY_SERVICE)
+    LOG(WARNING) << "Constructing an AccessibilityServiceClient for "
+                    "AccessibilityManager, but Chrome was not built with the "
+                    "Accessibility Service. Did you mean to add "
+                    "`enable_accessibility_service=true` to your gn args?";
+#endif  // !BUILDFLAG(ENABLE_ACCESSIBILITY_SERVICE)
+  }
 
   base::FilePath resources_path;
   if (!base::PathService::Get(chrome::DIR_RESOURCES, &resources_path))
@@ -627,16 +642,26 @@
         kUserSpokenFeedbackEnabled, enabled);
   }
 
+  // TODO(crbug.com/1355633): Refactor a helper class that uses either
+  // AccessibilityExtensionLoader or AccessibilityServiceClient when
+  // setting profile or turning on/off extensions depending on the state
+  // of the flag. That class will own both the loaders and the
+  // AccessibilityServiceClient.
   if (enabled) {
     chromevox_loader_->SetProfile(
         profile_,
         base::BindRepeating(&AccessibilityManager::PostSwitchChromeVoxProfile,
                             weak_ptr_factory_.GetWeakPtr()));
+    if (accessibility_service_client_)
+      accessibility_service_client_->SetProfile(profile_);
   }
 
   if (spoken_feedback_enabled_ == enabled)
     return;
 
+  if (accessibility_service_client_)
+    accessibility_service_client_->SetChromeVoxEnabled(enabled);
+
   spoken_feedback_enabled_ = enabled;
 
   AccessibilityStatusEventDetails details(
@@ -805,12 +830,23 @@
   if (enabled) {
     accessibility_common_extension_loader_->SetProfile(
         profile_, base::OnceClosure() /* done_callback */);
+    if (accessibility_service_client_)
+      accessibility_service_client_->SetProfile(profile_);
   }
 
   size_t pref_count = accessibility_common_enabled_features_.count(pref_name);
   if ((pref_count != 0 && enabled) || (pref_count == 0 && !enabled))
     return;
 
+  if (accessibility_service_client_) {
+    if (pref_name == prefs::kDockedMagnifierEnabled ||
+        pref_name == prefs::kAccessibilityScreenMagnifierEnabled) {
+      accessibility_service_client_->SetMagnifierEnabled(enabled);
+    } else if (pref_name == prefs::kAccessibilityAutoclickEnabled) {
+      accessibility_service_client_->SetAutoclickEnabled(enabled);
+    }
+  }
+
   if (enabled) {
     accessibility_common_enabled_features_.insert(pref_name);
     if (!accessibility_common_extension_loader_->loaded()) {
@@ -1027,6 +1063,9 @@
         pref_service, g_browser_process->local_state());
   }
 
+  if (accessibility_service_client_)
+    accessibility_service_client_->SetDictationEnabled(enabled);
+
   if (!enabled)
     return;
 
@@ -1180,12 +1219,18 @@
 
   const bool enabled = profile_->GetPrefs()->GetBoolean(
       prefs::kAccessibilitySelectToSpeakEnabled);
-  if (enabled)
+  if (enabled) {
     select_to_speak_loader_->SetProfile(profile_, base::OnceClosure());
+    if (accessibility_service_client_)
+      accessibility_service_client_->SetProfile(profile_);
+  }
 
   if (select_to_speak_enabled_ == enabled)
     return;
 
+  if (accessibility_service_client_)
+    accessibility_service_client_->SetSelectToSpeakEnabled(enabled);
+
   select_to_speak_enabled_ = enabled;
 
   AccessibilityStatusEventDetails details(
@@ -1238,6 +1283,9 @@
 
     switch_access_loader_->SetProfile(profile_, base::OnceClosure());
 
+    if (accessibility_service_client_)
+      accessibility_service_client_->SetProfile(profile_);
+
     // Make sure we always update the VK state, on every profile transition.
     ChromeKeyboardControllerClient::Get()->SetEnableFlag(
         keyboard::KeyboardEnableFlag::kExtensionEnabled);
@@ -1245,6 +1293,10 @@
 
   if (switch_access_enabled_ == enabled)
     return;
+
+  if (accessibility_service_client_)
+    accessibility_service_client_->SetSwitchAccessEnabled(enabled);
+
   switch_access_enabled_ = enabled;
 
   AccessibilityStatusEventDetails details(
@@ -1466,6 +1518,9 @@
             &AccessibilityManager::UpdateChromeOSAccessibilityHistograms,
             base::Unretained(this)));
 
+    if (accessibility_service_client_)
+      accessibility_service_client_->SetProfile(profile);
+
     extensions::ExtensionRegistry* registry =
         extensions::ExtensionRegistry::Get(profile);
     if (!extension_registry_observations_.IsObservingSource(registry))
diff --git a/chrome/browser/ash/accessibility/accessibility_manager.h b/chrome/browser/ash/accessibility/accessibility_manager.h
index f398cd87..080d0a3 100644
--- a/chrome/browser/ash/accessibility/accessibility_manager.h
+++ b/chrome/browser/ash/accessibility/accessibility_manager.h
@@ -18,6 +18,7 @@
 #include "base/scoped_observation.h"
 #include "base/time/time.h"
 #include "chrome/browser/ash/accessibility/chromevox_panel.h"
+#include "chrome/browser/ash/accessibility/service/accessibility_service_client.h"
 #include "chrome/browser/extensions/api/braille_display_private/braille_controller.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/profiles/profile_observer.h"
@@ -54,6 +55,7 @@
 enum class SelectToSpeakPanelAction;
 enum class Sound;
 struct AccessibilityFocusRingInfo;
+class AccessibilityServiceClient;
 
 enum class AccessibilityNotificationType {
   kManagerShutdown,
@@ -554,6 +556,8 @@
 
   AccessibilityStatusCallbackList callback_list_;
 
+  std::unique_ptr<AccessibilityServiceClient> accessibility_service_client_;
+
   bool braille_display_connected_ = false;
   base::ScopedObservation<
       extensions::api::braille_display_private::BrailleController,
diff --git a/chrome/browser/ash/accessibility/accessibility_manager_browsertest.cc b/chrome/browser/ash/accessibility/accessibility_manager_browsertest.cc
index 3bd21308..30ff143c 100644
--- a/chrome/browser/ash/accessibility/accessibility_manager_browsertest.cc
+++ b/chrome/browser/ash/accessibility/accessibility_manager_browsertest.cc
@@ -11,6 +11,7 @@
 #include "base/callback_helpers.h"
 #include "base/command_line.h"
 #include "chrome/browser/ash/accessibility/accessibility_test_utils.h"
+#include "chrome/browser/ash/accessibility/magnification_manager.h"
 #include "chrome/browser/ash/login/session/user_session_manager.h"
 #include "chrome/browser/ash/login/test/guest_session_mixin.h"
 #include "chrome/browser/ash/login/test/logged_in_user_mixin.h"
@@ -196,6 +197,14 @@
   return AccessibilityManager::Get()->IsSelectToSpeakEnabled();
 }
 
+void SetSwitchAccessEnabled(bool enabled) {
+  AccessibilityManager::Get()->SetSwitchAccessEnabled(enabled);
+}
+
+void SetMagnifierEnabled(bool enabled) {
+  MagnificationManager::Get()->SetMagnifierEnabled(enabled);
+}
+
 void SetDictationEnabled(bool enabled) {
   AccessibilityManager::Get()->SetDictationEnabled(enabled);
 }
@@ -1512,4 +1521,41 @@
   EXPECT_TRUE(IsBrailleImeEnabled());
 }
 
+class AccessibilityManagerWithAccessibilityServiceTest
+    : public AccessibilityManagerTest {
+ public:
+  AccessibilityManagerWithAccessibilityServiceTest() = default;
+  AccessibilityManagerWithAccessibilityServiceTest(
+      const AccessibilityManagerWithAccessibilityServiceTest&) = delete;
+  AccessibilityManagerWithAccessibilityServiceTest& operator=(
+      const AccessibilityManagerWithAccessibilityServiceTest&) = delete;
+  ~AccessibilityManagerWithAccessibilityServiceTest() override = default;
+
+  void SetUpCommandLine(base::CommandLine* command_line) override {
+    scoped_feature_list_.InitAndEnableFeature(
+        ::features::kAccessibilityService);
+    MixinBasedInProcessBrowserTest::SetUpCommandLine(command_line);
+  }
+};
+
+IN_PROC_BROWSER_TEST_F(AccessibilityManagerWithAccessibilityServiceTest,
+                       Constructs) {
+  // The service will be constructed and start receiving accessibility events
+  // when a subset of features are enabled. This simple test ensures that there
+  // are no crashes when setting up the service and toggling features.
+  SetSpokenFeedbackEnabled(true);
+  SetSelectToSpeakEnabled(true);
+  SetSwitchAccessEnabled(true);
+  SetAutoclickEnabled(true);
+  SetDictationEnabled(true);
+  SetMagnifierEnabled(true);
+
+  SetSpokenFeedbackEnabled(false);
+  SetSelectToSpeakEnabled(false);
+  SetSwitchAccessEnabled(false);
+  SetAutoclickEnabled(false);
+  SetDictationEnabled(false);
+  SetMagnifierEnabled(false);
+}
+
 }  // namespace ash
diff --git a/chrome/browser/ash/accessibility/service/DEPS b/chrome/browser/ash/accessibility/service/DEPS
new file mode 100644
index 0000000..f1346ac
--- /dev/null
+++ b/chrome/browser/ash/accessibility/service/DEPS
@@ -0,0 +1,3 @@
+include_rules = [
+  "+services/accessibility/public/mojom",
+]
diff --git a/chrome/browser/ash/accessibility/service/accessibility_service_client.cc b/chrome/browser/ash/accessibility/service/accessibility_service_client.cc
new file mode 100644
index 0000000..4153fcd
--- /dev/null
+++ b/chrome/browser/ash/accessibility/service/accessibility_service_client.cc
@@ -0,0 +1,115 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/ash/accessibility/service/accessibility_service_client.h"
+#include <memory>
+#include "base/callback_helpers.h"
+#include "chrome/browser/accessibility/service/accessibility_service_router.h"
+#include "chrome/browser/accessibility/service/accessibility_service_router_factory.h"
+#include "chrome/browser/ash/accessibility/service/automation_client_impl.h"
+#include "chrome/browser/ui/aura/accessibility/automation_manager_aura.h"
+#include "content/public/browser/browser_context.h"
+#include "content/public/browser/browser_thread.h"
+#include "services/accessibility/public/mojom/accessibility_service.mojom-shared.h"
+
+namespace ash {
+
+AccessibilityServiceClient::AccessibilityServiceClient() = default;
+
+AccessibilityServiceClient::~AccessibilityServiceClient() {
+  Reset();
+}
+
+void AccessibilityServiceClient::SetProfile(content::BrowserContext* profile) {
+  // If the profile has changed we will need to disconnect from the previous
+  // service, get the service keyed to this profile, and if any features were
+  // enabled, re-establish the service connection with those features. Note that
+  // this matches behavior in AccessibilityExtensionLoader::SetProfile, which
+  // does the parallel logic with the extension system.
+  if (profile_ == profile)
+    return;
+
+  Reset();
+  profile_ = profile;
+  if (profile_ && enabled_features_.size())
+    LaunchAccessibilityServiceAndBind();
+}
+
+void AccessibilityServiceClient::SetChromeVoxEnabled(bool enabled) {
+  EnableAssistiveTechnology(ax::mojom::AssistiveTechnologyType::kChromeVox,
+                            enabled);
+}
+
+void AccessibilityServiceClient::SetSelectToSpeakEnabled(bool enabled) {
+  EnableAssistiveTechnology(ax::mojom::AssistiveTechnologyType::kSelectToSpeak,
+                            enabled);
+}
+
+void AccessibilityServiceClient::SetSwitchAccessEnabled(bool enabled) {
+  EnableAssistiveTechnology(ax::mojom::AssistiveTechnologyType::kSwitchAccess,
+                            enabled);
+}
+
+void AccessibilityServiceClient::SetAutoclickEnabled(bool enabled) {
+  EnableAssistiveTechnology(ax::mojom::AssistiveTechnologyType::kAutoClick,
+                            enabled);
+}
+
+void AccessibilityServiceClient::SetMagnifierEnabled(bool enabled) {
+  EnableAssistiveTechnology(ax::mojom::AssistiveTechnologyType::kMagnifier,
+                            enabled);
+}
+
+void AccessibilityServiceClient::SetDictationEnabled(bool enabled) {
+  EnableAssistiveTechnology(ax::mojom::AssistiveTechnologyType::kDictation,
+                            enabled);
+}
+
+void AccessibilityServiceClient::Reset() {
+  at_controller_.reset();
+  automation_client_.reset();
+}
+
+void AccessibilityServiceClient::EnableAssistiveTechnology(
+    ax::mojom::AssistiveTechnologyType type,
+    bool enabled) {
+  // Update the list of enabled features.
+  auto iter =
+      std::find(enabled_features_.begin(), enabled_features_.end(), type);
+  if (enabled && iter == enabled_features_.end()) {
+    enabled_features_.push_back(type);
+  } else if (!enabled && iter != enabled_features_.end()) {
+    enabled_features_.erase(iter);
+  }
+
+  if (!enabled && !at_controller_.is_bound()) {
+    // No need to launch the service, nothing is enabled.
+    return;
+  }
+
+  if (at_controller_.is_bound()) {
+    // TODO(crbug.com/1355633): Enable assistive technology with mojom.
+    // at_controller_->EnableAssistiveTechnology(type, enabled);
+    return;
+  }
+
+  // A new feature is enabled but the service isn't running yet.
+  LaunchAccessibilityServiceAndBind();
+}
+
+void AccessibilityServiceClient::LaunchAccessibilityServiceAndBind() {
+  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+  if (!profile_)
+    return;
+
+  ax::AccessibilityServiceRouter* router =
+      ax::AccessibilityServiceRouterFactory::GetForBrowserContext(
+          static_cast<content::BrowserContext*>(profile_));
+  automation_client_ = std::make_unique<AutomationClientImpl>();
+  automation_client_->Bind(router);
+  router->BindAssistiveTechnologyController(
+      at_controller_.BindNewPipeAndPassReceiver(), enabled_features_);
+}
+
+}  // namespace ash
diff --git a/chrome/browser/ash/accessibility/service/accessibility_service_client.h b/chrome/browser/ash/accessibility/service/accessibility_service_client.h
new file mode 100644
index 0000000..bc48c5b8
--- /dev/null
+++ b/chrome/browser/ash/accessibility/service/accessibility_service_client.h
@@ -0,0 +1,66 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_ASH_ACCESSIBILITY_SERVICE_ACCESSIBILITY_SERVICE_CLIENT_H_
+#define CHROME_BROWSER_ASH_ACCESSIBILITY_SERVICE_ACCESSIBILITY_SERVICE_CLIENT_H_
+
+#include <vector>
+
+#include "base/callback_helpers.h"
+#include "mojo/public/cpp/bindings/remote.h"
+#include "services/accessibility/public/mojom/accessibility_service.mojom.h"
+
+namespace content {
+class BrowserContext;
+}
+
+namespace ash {
+class AutomationClientImpl;
+
+// The AccessibilityServiceClient in the Browser process interacts with the
+// AccessibilityService process over mojom. It is responsible for communicating
+// to the service which features are running and binding helper classes for the
+// service.
+class AccessibilityServiceClient {
+ public:
+  AccessibilityServiceClient();
+  AccessibilityServiceClient(const AccessibilityServiceClient&) = delete;
+  AccessibilityServiceClient& operator=(const AccessibilityServiceClient&) =
+      delete;
+  ~AccessibilityServiceClient();
+  void SetProfile(content::BrowserContext* profile);
+
+  // Enables or disables accessibility features in the service.
+  void SetChromeVoxEnabled(bool enabled);
+  void SetSelectToSpeakEnabled(bool enabled);
+  void SetSwitchAccessEnabled(bool enabled);
+  void SetAutoclickEnabled(bool enabled);
+  void SetMagnifierEnabled(bool enabled);
+  void SetDictationEnabled(bool enabled);
+
+ private:
+  // Called when the profile changes or on destruction. Disconnects all mojom
+  // endpoints.
+  void Reset();
+
+  void EnableAssistiveTechnology(ax::mojom::AssistiveTechnologyType type,
+                                 bool enabled);
+
+  void LaunchAccessibilityServiceAndBind();
+
+  std::unique_ptr<AutomationClientImpl> automation_client_;
+
+  // Track the currently enabled features in case we disconnect from the service
+  // and need to reconnect, for example when the profile changes.
+  std::vector<ax::mojom::AssistiveTechnologyType> enabled_features_;
+
+  content::BrowserContext* profile_ = nullptr;
+
+  // Here is the remote to the AT Controller, used to toggle features.
+  mojo::Remote<ax::mojom::AssistiveTechnologyController> at_controller_;
+};
+
+}  // namespace ash
+
+#endif  // CHROME_BROWSER_ASH_ACCESSIBILITY_SERVICE_ACCESSIBILITY_SERVICE_CLIENT_H_
diff --git a/chrome/browser/ash/accessibility/service/accessibility_service_client_browsertest.cc b/chrome/browser/ash/accessibility/service/accessibility_service_client_browsertest.cc
new file mode 100644
index 0000000..a9cacfb
--- /dev/null
+++ b/chrome/browser/ash/accessibility/service/accessibility_service_client_browsertest.cc
@@ -0,0 +1,197 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/command_line.h"
+#include "chrome/browser/accessibility/service/accessibility_service_router_factory.h"
+#include "chrome/browser/ash/accessibility/service/accessibility_service_client.h"
+#include "chrome/browser/ash/accessibility/service/fake_accessibility_service.h"
+#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/ui/browser.h"
+#include "chrome/test/base/in_process_browser_test.h"
+#include "components/keyed_service/core/keyed_service.h"
+#include "content/public/test/browser_test.h"
+#include "services/accessibility/public/mojom/accessibility_service.mojom-shared.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "ui/accessibility/accessibility_features.h"
+
+using ax::mojom::AssistiveTechnologyType;
+
+namespace ash {
+
+// Tests for the AccessibilityServiceClientTest using a fake service
+// implemented in FakeAccessibilityService.
+class AccessibilityServiceClientTest : public InProcessBrowserTest {
+ public:
+  AccessibilityServiceClientTest() = default;
+  AccessibilityServiceClientTest(const AccessibilityServiceClientTest&) =
+      delete;
+  AccessibilityServiceClientTest& operator=(
+      const AccessibilityServiceClientTest&) = delete;
+  ~AccessibilityServiceClientTest() override = default;
+
+  void SetUpCommandLine(base::CommandLine* command_line) override {
+    scoped_feature_list_.InitAndEnableFeature(features::kAccessibilityService);
+  }
+
+  void SetUpOnMainThread() override {
+    InProcessBrowserTest::SetUpOnMainThread();
+    // Replaces normal AccessibilityService with a fake one.
+    ax::AccessibilityServiceRouterFactory::GetInstanceForTest()
+        ->SetTestingFactoryAndUse(
+            browser()->profile(),
+            base::BindRepeating(
+                &AccessibilityServiceClientTest::CreateTestAccessibilityService,
+                base::Unretained(this)));
+  }
+
+  void TearDownOnMainThread() override {
+    InProcessBrowserTest::TearDownOnMainThread();
+  }
+
+ protected:
+  bool ServiceHasATEnabled(AssistiveTechnologyType type) {
+    std::set<AssistiveTechnologyType> enabled_ATs =
+        fake_service_->GetEnabledATs();
+    return enabled_ATs.find(type) != enabled_ATs.end();
+  }
+
+  bool ServiceIsBound() { return fake_service_->IsBound(); }
+
+  // Unowned.
+  FakeAccessibilityService* fake_service_ = nullptr;
+
+ private:
+  std::unique_ptr<KeyedService> CreateTestAccessibilityService(
+      content::BrowserContext* context) {
+    std::unique_ptr<FakeAccessibilityService> fake_service =
+        std::make_unique<FakeAccessibilityService>();
+    fake_service_ = fake_service.get();
+    return std::move(fake_service);
+  }
+
+  base::test::ScopedFeatureList scoped_feature_list_;
+};
+
+// Test that nothing crashes if the profile isn't set yet.
+// Note that this should never happen as enabling/disabling
+// features from AccessibilityManager will only happen when
+// there is a profile.
+IN_PROC_BROWSER_TEST_F(AccessibilityServiceClientTest,
+                       DoesNotCrashWithNoProfile) {
+  AccessibilityServiceClient client;
+  client.SetChromeVoxEnabled(true);
+
+  client.SetProfile(nullptr);
+  client.SetSelectToSpeakEnabled(true);
+
+  EXPECT_FALSE(ServiceIsBound());
+}
+
+// AccessibilityServiceClient shouldn't try to use the service
+// when features are all disabled.
+IN_PROC_BROWSER_TEST_F(AccessibilityServiceClientTest,
+                       DoesNotCreateServiceForDisabledFeatures) {
+  AccessibilityServiceClient client;
+  EXPECT_FALSE(ServiceIsBound());
+
+  client.SetProfile(browser()->profile());
+  EXPECT_FALSE(ServiceIsBound());
+
+  client.SetChromeVoxEnabled(false);
+  EXPECT_FALSE(ServiceIsBound());
+
+  client.SetDictationEnabled(false);
+  EXPECT_FALSE(ServiceIsBound());
+}
+
+// Test that any previously enabled features are copied when
+// the profile changes.
+IN_PROC_BROWSER_TEST_F(AccessibilityServiceClientTest,
+                       CopiesFeaturesWhenProfileChanges) {
+  AccessibilityServiceClient client;
+  client.SetChromeVoxEnabled(true);
+  client.SetSwitchAccessEnabled(true);
+  client.SetAutoclickEnabled(true);
+  client.SetAutoclickEnabled(false);
+
+  // Service isn't constructed yet.
+  EXPECT_FALSE(ServiceIsBound());
+
+  client.SetProfile(browser()->profile());
+
+  ASSERT_TRUE(ServiceIsBound());
+  EXPECT_TRUE(ServiceHasATEnabled(AssistiveTechnologyType::kChromeVox));
+  EXPECT_TRUE(ServiceHasATEnabled(AssistiveTechnologyType::kSwitchAccess));
+  EXPECT_FALSE(ServiceHasATEnabled(AssistiveTechnologyType::kAutoClick));
+}
+
+// Test that the AccessibilityServiceClient can toggle features in the service
+// using the mojom interface.
+IN_PROC_BROWSER_TEST_F(AccessibilityServiceClientTest,
+                       TogglesAccessibilityFeatures) {
+  AccessibilityServiceClient client;
+  client.SetProfile(browser()->profile());
+  EXPECT_FALSE(ServiceHasATEnabled(AssistiveTechnologyType::kChromeVox));
+  EXPECT_FALSE(ServiceHasATEnabled(AssistiveTechnologyType::kSelectToSpeak));
+  EXPECT_FALSE(ServiceHasATEnabled(AssistiveTechnologyType::kSwitchAccess));
+  EXPECT_FALSE(ServiceHasATEnabled(AssistiveTechnologyType::kAutoClick));
+  EXPECT_FALSE(ServiceHasATEnabled(AssistiveTechnologyType::kDictation));
+  EXPECT_FALSE(ServiceHasATEnabled(AssistiveTechnologyType::kMagnifier));
+
+  // The first time we enable/disable an AT, the AT controller should be bound
+  // with the enabled AT type.
+  client.SetChromeVoxEnabled(true);
+  EXPECT_TRUE(ServiceHasATEnabled(AssistiveTechnologyType::kChromeVox));
+
+  // TODO(crbug.com/1355633): Enable this part of the test once the mojom for AT
+  // controller lands.
+  // client.SetSelectToSpeakEnabled(true);
+  // fake_service_->WaitForATChanged();
+  // EXPECT_TRUE(ServiceHasATEnabled(AssistiveTechnologyType::kSelectToSpeak));
+  // client.SetSwitchAccessEnabled(true);
+  // fake_service_->WaitForATChanged();
+  // EXPECT_TRUE(ServiceHasATEnabled(AssistiveTechnologyType::kSwitchAccess));
+  // client.SetAutoclickEnabled(true);
+  // fake_service_->WaitForATChanged();
+  // EXPECT_TRUE(ServiceHasATEnabled(AssistiveTechnologyType::kAutoClick));
+  // client.SetDictationEnabled(true);
+  // fake_service_->WaitForATChanged();
+  // EXPECT_TRUE(ServiceHasATEnabled(AssistiveTechnologyType::kDictation));
+  // client.SetMagnifierEnabled(true);
+  // fake_service_->WaitForATChanged();
+  // EXPECT_TRUE(ServiceHasATEnabled(AssistiveTechnologyType::kMagnifier));
+  // client.SetChromeVoxEnabled(false);
+  // fake_service_->WaitForATChanged();
+  // EXPECT_FALSE(ServiceHasATEnabled(AssistiveTechnologyType::kChromeVox));
+  // client.SetSelectToSpeakEnabled(false);
+  // fake_service_->WaitForATChanged();
+  // EXPECT_FALSE(ServiceHasATEnabled(AssistiveTechnologyType::kSelectToSpeak));
+  // client.SetSwitchAccessEnabled(false);
+  // fake_service_->WaitForATChanged();
+  // EXPECT_FALSE(ServiceHasATEnabled(AssistiveTechnologyType::kSwitchAccess));
+  // client.SetAutoclickEnabled(false);
+  // fake_service_->WaitForATChanged();
+  // EXPECT_FALSE(ServiceHasATEnabled(AssistiveTechnologyType::kAutoClick));
+  // client.SetDictationEnabled(false);
+  // fake_service_->WaitForATChanged();
+  // EXPECT_FALSE(ServiceHasATEnabled(AssistiveTechnologyType::kDictation));
+  // client.SetMagnifierEnabled(false);
+  // fake_service_->WaitForATChanged();
+  // EXPECT_FALSE(ServiceHasATEnabled(AssistiveTechnologyType::kMagnifier));
+}
+
+IN_PROC_BROWSER_TEST_F(AccessibilityServiceClientTest, EnablesAutomation) {
+  AccessibilityServiceClient client;
+  client.SetProfile(browser()->profile());
+  // Enable an assistive technology. The service will not be started until
+  // some AT needs it.
+  client.SetChromeVoxEnabled(true);
+
+  // TODO(crbug.com/1355633): Enable this part of the test once the mojom for AT
+  // controller lands.
+  // fake_service_->EnableAutomationClient(true);
+  // // Expect an a11y event to have come through.
+  // fake_service_->WaitForAutomationEvents();
+}
+}  // namespace ash
diff --git a/chrome/browser/ash/accessibility/service/automation_client_impl.cc b/chrome/browser/ash/accessibility/service/automation_client_impl.cc
new file mode 100644
index 0000000..d484db1
--- /dev/null
+++ b/chrome/browser/ash/accessibility/service/automation_client_impl.cc
@@ -0,0 +1,111 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/ash/accessibility/service/automation_client_impl.h"
+#include "chrome/browser/accessibility/service/accessibility_service_router.h"
+#include "chrome/browser/ui/aura/accessibility/automation_manager_aura.h"
+#include "extensions/browser/api/automation_internal/automation_event_router.h"
+#include "extensions/browser/api/automation_internal/automation_internal_api.h"
+
+namespace ash {
+
+AutomationClientImpl::AutomationClientImpl() = default;
+
+AutomationClientImpl::~AutomationClientImpl() {
+  if (!bound_)
+    return;
+
+  extensions::AutomationEventRouter::GetInstance()->RegisterRemoteRouter(
+      nullptr);
+}
+
+void AutomationClientImpl::Bind(ax::AccessibilityServiceRouter* router) {
+  // Launches the service if it wasn't running yet.
+  // Development note (crbug.com/1355633): Using the remote router means
+  // extensions don't get a11y events when AutomationClientImpl is bound, so
+  // accessibility features built as component extensions are broken when the
+  // service is running.
+  DCHECK(!bound_);
+  bound_ = true;
+  extensions::AutomationEventRouter::GetInstance()->RegisterRemoteRouter(this);
+  router->BindAutomationWithClient(
+      automation_client_receiver_.BindNewPipeAndPassRemote(),
+      automation_.BindNewPipeAndPassReceiver());
+}
+
+void AutomationClientImpl::DispatchAccessibilityEvents(
+    const ui::AXTreeID& tree_id,
+    std::vector<ui::AXTreeUpdate> updates,
+    const gfx::Point& mouse_location,
+    std::vector<ui::AXEvent> events) {
+  DCHECK(tree_id != ui::AXTreeIDUnknown());
+  if (tree_id == ui::AXTreeIDUnknown() || !automation_.is_bound())
+    return;
+  // TODO(crbug.com/1355633): Send to AccessibilityService.
+  // automation_->DispatchAccessibilityEvents(*tree_id.token(), updates,
+  //                                         mouse_location, events);
+}
+
+void AutomationClientImpl::DispatchAccessibilityLocationChange(
+    const ExtensionMsg_AccessibilityLocationChangeParams& params) {
+  ui::AXTreeID tree_id = params.tree_id;
+  if (!tree_id.token() || !automation_.is_bound())
+    return;
+  // TODO(crbug.com/1355633): Send to AccessibilityService.
+  // automation_->DispatchAccessibilityLocationChange(*tree_id.token(),
+  // params.id,
+  //                                                  params.new_location);
+}
+void AutomationClientImpl::DispatchTreeDestroyedEvent(
+    ui::AXTreeID tree_id,
+    content::BrowserContext* browser_context) {
+  if (!tree_id.token() || !automation_.is_bound())
+    return;
+  // TODO(crbug.com/1355633): Send to AccessibilityService.
+  // automation_->DispatchTreeDestroyedEvent(*(tree_id.token()));
+}
+
+void AutomationClientImpl::DispatchActionResult(
+    const ui::AXActionData& data,
+    bool result,
+    content::BrowserContext* browser_context) {
+  if (!automation_.is_bound())
+    return;
+  // TODO(crbug.com/1355633): Send to AccessibilityService.
+  // automation_->DispatchActionResult(data, result);
+}
+
+void AutomationClientImpl::DispatchGetTextLocationDataResult(
+    const ui::AXActionData& data,
+    const absl::optional<gfx::Rect>& rect) {
+  // TODO(crbug.com/1355633): Send to AccessibilityService.
+  // automation_->DispatchGetTextLocationDataResult(data, rect);
+}
+
+void AutomationClientImpl::Enable() {
+  // Enable automation for all of Desktop.
+  AutomationManagerAura::GetInstance()->Enable();
+}
+
+void AutomationClientImpl::Disable() {
+  // Disable automation.
+  AutomationManagerAura::GetInstance()->Disable();
+}
+
+void AutomationClientImpl::EnableTree(const base::UnguessableToken& tree_id) {
+  ui::AXTreeID ax_tree_id = ui::AXTreeID::FromToken(tree_id);
+  // TODO(crbug.com/1355633): Refactor logic from extensions namespace to a
+  // common location.
+  extensions::AutomationInternalEnableTreeFunction::EnableTree(
+      ax_tree_id, /*extension_id=*/"");
+}
+
+void AutomationClientImpl::PerformAction(const ui::AXActionData& data) {
+  // TODO(crbug.com/1355633): Refactor logic from extensions namespace to a
+  // common location.
+  extensions::AutomationInternalPerformActionFunction::PerformAction(
+      data, /*extension=*/nullptr, /*automation_info=*/nullptr);
+}
+
+}  // namespace ash
diff --git a/chrome/browser/ash/accessibility/service/automation_client_impl.h b/chrome/browser/ash/accessibility/service/automation_client_impl.h
new file mode 100644
index 0000000..73eea85
--- /dev/null
+++ b/chrome/browser/ash/accessibility/service/automation_client_impl.h
@@ -0,0 +1,69 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_ASH_ACCESSIBILITY_SERVICE_AUTOMATION_CLIENT_IMPL_H_
+#define CHROME_BROWSER_ASH_ACCESSIBILITY_SERVICE_AUTOMATION_CLIENT_IMPL_H_
+
+#include "extensions/browser/api/automation_internal/automation_event_router_interface.h"
+#include "mojo/public/cpp/bindings/receiver.h"
+#include "mojo/public/cpp/bindings/remote.h"
+#include "services/accessibility/public/mojom/accessibility_service.mojom.h"
+
+namespace ax {
+class AccessibilityServiceRouter;
+}  // namespace ax
+
+namespace ash {
+
+// The AutomationClientImpl forwards accessibility events between the service
+// and the browser process AutomationEventRouter.
+class AutomationClientImpl : public ax::mojom::AutomationClient,
+                             public extensions::AutomationEventRouterInterface {
+ public:
+  AutomationClientImpl();
+  AutomationClientImpl(const AutomationClientImpl&) = delete;
+  AutomationClientImpl& operator=(const AutomationClientImpl&) = delete;
+  ~AutomationClientImpl() override;
+
+  void Bind(ax::AccessibilityServiceRouter* router);
+
+ private:
+  // The following are called by the Accessibility service, passing information
+  // back to the OS.
+  // TODO(crbug.com/1355633): Override from ax::mojom::AutomationClient:
+  void Enable();
+  void Disable();
+  void EnableTree(const base::UnguessableToken& tree_id);
+  void PerformAction(const ui::AXActionData& data);
+
+  // Receive accessibility information from AutomationEventRouter in ash and
+  // forward it along to the service.
+  // extensions::AutomationEventRouterInterface:
+  void DispatchAccessibilityEvents(const ui::AXTreeID& tree_id,
+                                   std::vector<ui::AXTreeUpdate> updates,
+                                   const gfx::Point& mouse_location,
+                                   std::vector<ui::AXEvent> events) override;
+  void DispatchAccessibilityLocationChange(
+      const ExtensionMsg_AccessibilityLocationChangeParams& params) override;
+  void DispatchTreeDestroyedEvent(
+      ui::AXTreeID tree_id,
+      content::BrowserContext* browser_context) override;
+  void DispatchActionResult(const ui::AXActionData& data,
+                            bool result,
+                            content::BrowserContext* browser_context) override;
+  void DispatchGetTextLocationDataResult(
+      const ui::AXActionData& data,
+      const absl::optional<gfx::Rect>& rect) override;
+
+  // Here is the remote to Automation in the service.
+  mojo::Remote<ax::mojom::Automation> automation_;
+
+  // This class is the AutomationClient, receiving AutomationClient calls
+  // from the AccessibilityService, therefore it is the Receiver.
+  mojo::Receiver<ax::mojom::AutomationClient> automation_client_receiver_{this};
+
+  bool bound_ = false;
+};
+}  // namespace ash
+#endif  // CHROME_BROWSER_ACCESSIBILITY_ACCESSIBILITY_CLIENT_IMPL_H_
diff --git a/chrome/browser/ash/accessibility/service/fake_accessibility_service.cc b/chrome/browser/ash/accessibility/service/fake_accessibility_service.cc
new file mode 100644
index 0000000..d93d67a
--- /dev/null
+++ b/chrome/browser/ash/accessibility/service/fake_accessibility_service.cc
@@ -0,0 +1,103 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/ash/accessibility/service/fake_accessibility_service.h"
+
+#include <tuple>
+
+#include "base/run_loop.h"
+#include "services/accessibility/public/mojom/accessibility_service.mojom.h"
+
+namespace ash {
+
+FakeAccessibilityService::FakeAccessibilityService() = default;
+FakeAccessibilityService::~FakeAccessibilityService() = default;
+
+void FakeAccessibilityService::BindAutomationWithClient(
+    mojo::PendingRemote<ax::mojom::AutomationClient>
+        accessibility_client_remote,
+    mojo::PendingReceiver<ax::mojom::Automation> automation_receiver) {
+  automation_client_remotes_.Add(std::move(accessibility_client_remote));
+  automation_receivers_.Add(this, std::move(automation_receiver));
+}
+
+void FakeAccessibilityService::BindAssistiveTechnologyController(
+    mojo::PendingReceiver<ax::mojom::AssistiveTechnologyController>
+        at_controller_receiver,
+    const std::vector<ax::mojom::AssistiveTechnologyType>& enabled_features) {
+  at_controller_receivers_.Add(this, std::move(at_controller_receiver));
+  for (auto feature : enabled_features) {
+    EnableAssistiveTechnology(feature, /*enabled=*/true);
+  }
+}
+
+void FakeAccessibilityService::DispatchTreeDestroyedEvent(
+    const base::UnguessableToken& tree_id) {
+  tree_destroyed_events_.emplace_back(tree_id);
+  if (automation_events_closure_)
+    std::move(automation_events_closure_).Run();
+}
+
+void FakeAccessibilityService::DispatchActionResult(
+    const ui::AXActionData& data,
+    bool result) {
+  action_results_.emplace_back(std::make_tuple(data, result));
+  if (automation_events_closure_)
+    std::move(automation_events_closure_).Run();
+}
+
+void FakeAccessibilityService::DispatchAccessibilityEvents(
+    const base::UnguessableToken& tree_id,
+    const std::vector<ui::AXTreeUpdate>& updates,
+    const gfx::Point& mouse_location,
+    const std::vector<ui::AXEvent>& events) {
+  if (automation_events_closure_)
+    std::move(automation_events_closure_).Run();
+}
+
+void FakeAccessibilityService::DispatchAccessibilityLocationChange(
+    const base::UnguessableToken& tree_id,
+    int node_id,
+    const ui::AXRelativeBounds& bounds) {
+  if (automation_events_closure_)
+    std::move(automation_events_closure_).Run();
+}
+
+void FakeAccessibilityService::EnableAssistiveTechnology(
+    ax::mojom::AssistiveTechnologyType type,
+    bool enabled) {
+  if (enabled)
+    enabled_ATs_.insert(type);
+  else
+    enabled_ATs_.erase(type);
+
+  if (change_ATs_closure_)
+    std::move(change_ATs_closure_).Run();
+}
+
+void FakeAccessibilityService::WaitForATChanged() {
+  base::RunLoop runner;
+  change_ATs_closure_ = runner.QuitClosure();
+  runner.Run();
+}
+
+bool FakeAccessibilityService::IsBound() {
+  return automation_client_remotes_.size() > 0 &&
+         automation_client_remotes_.begin()->is_bound();
+}
+
+void FakeAccessibilityService::EnableAutomationClient(bool enabled) {
+  // TODO(crbug.com/1355633): Add once AutomationClient mojom is added.
+  // for (auto& automation_client : automation_client_remotes_) {
+  //   enabled ? automation_client->Enable() : automation_client->Disable();
+  // }
+}
+
+void FakeAccessibilityService::WaitForAutomationEvents() {
+  base::RunLoop runner;
+  automation_events_closure_ = runner.QuitClosure();
+  runner.Run();
+}
+
+}  // namespace ash
diff --git a/chrome/browser/ash/accessibility/service/fake_accessibility_service.h b/chrome/browser/ash/accessibility/service/fake_accessibility_service.h
new file mode 100644
index 0000000..ec5c238
--- /dev/null
+++ b/chrome/browser/ash/accessibility/service/fake_accessibility_service.h
@@ -0,0 +1,91 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_ASH_ACCESSIBILITY_SERVICE_FAKE_ACCESSIBILITY_SERVICE_H_
+#define CHROME_BROWSER_ASH_ACCESSIBILITY_SERVICE_FAKE_ACCESSIBILITY_SERVICE_H_
+
+#include "base/unguessable_token.h"
+#include "chrome/browser/accessibility/service/accessibility_service_router.h"
+#include "components/keyed_service/core/keyed_service.h"
+#include "mojo/public/cpp/bindings/receiver_set.h"
+#include "mojo/public/cpp/bindings/remote_set.h"
+#include "services/accessibility/public/mojom/accessibility_service.mojom.h"
+#include "ui/accessibility/ax_action_data.h"
+#include "ui/accessibility/ax_event.h"
+#include "ui/accessibility/ax_tree_update.h"
+
+namespace ash {
+
+// A fake Chrome OS Accessibility service to use for Chrome testing.
+// This class acts as an AccessibilityServiceRouter in the browser process
+// and then implements service mojom to act as a mock service.
+class FakeAccessibilityService
+    : public ax::AccessibilityServiceRouter,
+      public ax::mojom::Automation,
+      public ax::mojom::AssistiveTechnologyController {
+ public:
+  FakeAccessibilityService();
+  FakeAccessibilityService(const FakeAccessibilityService&) = delete;
+  FakeAccessibilityService& operator=(const FakeAccessibilityService&) = delete;
+  ~FakeAccessibilityService() override;
+
+  // AccessibilityServiceRouter:
+  void BindAutomationWithClient(
+      mojo::PendingRemote<ax::mojom::AutomationClient> automation_client_remote,
+      mojo::PendingReceiver<ax::mojom::Automation> automation_receiver)
+      override;
+  void BindAssistiveTechnologyController(
+      mojo::PendingReceiver<ax::mojom::AssistiveTechnologyController>
+          at_controller_receiver,
+      const std::vector<ax::mojom::AssistiveTechnologyType>& enabled_features)
+      override;
+
+  // TODO(crbug.com/1355633): Override from ax::mojom::Automation:
+  void DispatchTreeDestroyedEvent(const base::UnguessableToken& tree_id);
+  void DispatchActionResult(const ui::AXActionData& data, bool result);
+  void DispatchAccessibilityEvents(const base::UnguessableToken& tree_id,
+                                   const std::vector<ui::AXTreeUpdate>& updates,
+                                   const gfx::Point& mouse_location,
+                                   const std::vector<ui::AXEvent>& events);
+  void DispatchAccessibilityLocationChange(
+      const base::UnguessableToken& tree_id,
+      int node_id,
+      const ui::AXRelativeBounds& bounds);
+
+  // TODO(crbug.com/1355633): Override from
+  // ax::mojom::AssistiveTechnologyController:
+  void EnableAssistiveTechnology(ax::mojom::AssistiveTechnologyType type,
+                                 bool enabled);
+
+  //
+  // Methods for testing.
+  //
+
+  bool IsBound();
+
+  void WaitForATChanged();
+
+  const std::set<ax::mojom::AssistiveTechnologyType>& GetEnabledATs() {
+    return enabled_ATs_;
+  }
+
+  void EnableAutomationClient(bool enabled);
+
+  void WaitForAutomationEvents();
+
+ private:
+  base::OnceClosure change_ATs_closure_;
+  std::set<ax::mojom::AssistiveTechnologyType> enabled_ATs_;
+  base::OnceClosure automation_events_closure_;
+  std::vector<base::UnguessableToken> tree_destroyed_events_;
+  std::vector<std::tuple<ui::AXActionData, bool>> action_results_;
+  mojo::ReceiverSet<ax::mojom::Automation> automation_receivers_;
+  mojo::RemoteSet<ax::mojom::AutomationClient> automation_client_remotes_;
+  mojo::ReceiverSet<ax::mojom::AssistiveTechnologyController>
+      at_controller_receivers_;
+};
+
+}  // namespace ash
+
+#endif  // CHROME_BROWSER_ASH_ACCESSIBILITY_SERVICE_FAKE_ACCESSIBILITY_SERVICE_H_
diff --git a/chrome/browser/ash/app_restore/arc_ghost_window_view_unittest.cc b/chrome/browser/ash/app_restore/arc_ghost_window_view_unittest.cc
index f8ad42c..aa9f4cf 100644
--- a/chrome/browser/ash/app_restore/arc_ghost_window_view_unittest.cc
+++ b/chrome/browser/ash/app_restore/arc_ghost_window_view_unittest.cc
@@ -12,7 +12,6 @@
 #include "chrome/browser/ash/arc/window_predictor/window_predictor_utils.h"
 #include "chrome/browser/ash/login/users/chrome_user_manager.h"
 #include "chrome/browser/ash/login/users/fake_chrome_user_manager.h"
-#include "chrome/browser/ash/profiles/profile_helper.h"
 #include "chrome/browser/signin/identity_test_environment_profile_adaptor.h"
 #include "chrome/test/base/testing_browser_process.h"
 #include "chrome/test/base/testing_profile.h"
@@ -75,8 +74,6 @@
         /*avatar_id=*/0,
         IdentityTestEnvironmentProfileAdaptor::
             GetIdentityTestEnvironmentFactories());
-    ash::ProfileHelper::Get()->SetUserToProfileMappingForTesting(user,
-                                                                 profile_);
   }
 
   void InstallApp(const std::string& app_id) {
diff --git a/chrome/browser/ash/arc/net/cert_manager_impl_unittest.cc b/chrome/browser/ash/arc/net/cert_manager_impl_unittest.cc
index 598a4ee..335f961 100644
--- a/chrome/browser/ash/arc/net/cert_manager_impl_unittest.cc
+++ b/chrome/browser/ash/arc/net/cert_manager_impl_unittest.cc
@@ -8,6 +8,7 @@
 
 #include "base/callback.h"
 #include "base/run_loop.h"
+#include "base/strings/string_number_conversions.h"
 #include "base/task/bind_post_task.h"
 #include "base/test/test_future.h"
 #include "chrome/test/base/testing_profile.h"
diff --git a/chrome/browser/ash/attestation/tpm_challenge_key_subtle_unittest.cc b/chrome/browser/ash/attestation/tpm_challenge_key_subtle_unittest.cc
index 98b0438..c59410b7 100644
--- a/chrome/browser/ash/attestation/tpm_challenge_key_subtle_unittest.cc
+++ b/chrome/browser/ash/attestation/tpm_challenge_key_subtle_unittest.cc
@@ -15,7 +15,6 @@
 #include "chrome/browser/ash/platform_keys/key_permissions/key_permissions_manager_impl.h"
 #include "chrome/browser/ash/platform_keys/key_permissions/mock_key_permissions_manager.h"
 #include "chrome/browser/ash/platform_keys/key_permissions/user_private_token_kpm_service_factory.h"
-#include "chrome/browser/ash/profiles/profile_helper.h"
 #include "chrome/browser/platform_keys/platform_keys.h"
 #include "chrome/common/chrome_constants.h"
 #include "chrome/common/pref_names.h"
@@ -299,9 +298,6 @@
       AccountId::FromUserEmailGaiaId(kTestUserEmail, kTestUserGaiaId);
   fake_user_manager_.AddUserWithAffiliation(test_account, is_affiliated);
 
-  ProfileHelper::Get()->SetUserToProfileMappingForTesting(
-      fake_user_manager_.GetPrimaryUser(), testing_profile);
-
   return testing_profile;
 }
 
diff --git a/chrome/browser/ash/cert_provisioning/cert_provisioning_test_helpers.cc b/chrome/browser/ash/cert_provisioning/cert_provisioning_test_helpers.cc
index dca9524..1ea6b1c3 100644
--- a/chrome/browser/ash/cert_provisioning/cert_provisioning_test_helpers.cc
+++ b/chrome/browser/ash/cert_provisioning/cert_provisioning_test_helpers.cc
@@ -6,7 +6,6 @@
 
 #include "base/test/gmock_callback_support.h"
 #include "base/time/time.h"
-#include "chrome/browser/ash/profiles/profile_helper.h"
 #include "chrome/test/base/testing_browser_process.h"
 #include "net/test/cert_builder.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -144,9 +143,6 @@
       AccountId::FromUserEmailGaiaId(kTestUserEmail, kTestUserGaiaId);
   user_ = fake_user_manager_.AddUserWithAffiliation(test_account,
                                                     user_is_affiliated);
-
-  ProfileHelper::Get()->SetUserToProfileMappingForTesting(
-      fake_user_manager_.GetPrimaryUser(), testing_profile_);
 }
 
 Profile* ProfileHelperForTesting::GetProfile() const {
diff --git a/chrome/browser/ash/chrome_browser_main_parts_ash.cc b/chrome/browser/ash/chrome_browser_main_parts_ash.cc
index add33c6b..44c8c9a 100644
--- a/chrome/browser/ash/chrome_browser_main_parts_ash.cc
+++ b/chrome/browser/ash/chrome_browser_main_parts_ash.cc
@@ -109,7 +109,7 @@
 #include "chrome/browser/ash/login/wizard_controller.h"
 #include "chrome/browser/ash/mojo_service_manager/connection_helper.h"
 #include "chrome/browser/ash/net/bluetooth_pref_state_observer.h"
-#include "chrome/browser/ash/net/network_health/network_health_service.h"
+#include "chrome/browser/ash/net/network_health/network_health_manager.h"
 #include "chrome/browser/ash/net/network_portal_detector_impl.h"
 #include "chrome/browser/ash/net/network_pref_state_observer.h"
 #include "chrome/browser/ash/net/network_throttling_observer.h"
@@ -1144,15 +1144,13 @@
     // Initialize an observer to update NetworkHandler's pref based services.
     network_pref_state_observer_ = std::make_unique<NetworkPrefStateObserver>();
 
-    if (features::IsBluetoothRevampEnabled()) {
-      // Initialize an observer to update CrosBluetoothConfig's pref based
-      // services.
-      bluetooth_pref_state_observer_ =
-          std::make_unique<BluetoothPrefStateObserver>();
-    }
+    // Initialize an observer to update CrosBluetoothConfig's pref based
+    // services.
+    bluetooth_pref_state_observer_ =
+        std::make_unique<BluetoothPrefStateObserver>();
 
     // Initialize the NetworkHealth aggregator.
-    network_health::NetworkHealthService::GetInstance();
+    network_health::NetworkHealthManager::GetInstance();
 
     // Create cros_healthd data collector.
     cros_healthd_data_collector_ =
@@ -1164,7 +1162,7 @@
     // Pass a callback to the CrosHealthd service connection that binds a
     // pending remote to service.
     cros_healthd->SetBindNetworkHealthServiceCallback(base::BindRepeating([] {
-      return network_health::NetworkHealthService::GetInstance()
+      return network_health::NetworkHealthManager::GetInstance()
           ->GetHealthRemoteAndBindReceiver();
     }));
 
@@ -1172,7 +1170,7 @@
     // pending remote to the interface.
     cros_healthd->SetBindNetworkDiagnosticsRoutinesCallback(
         base::BindRepeating([] {
-          return network_health::NetworkHealthService::GetInstance()
+          return network_health::NetworkHealthManager::GetInstance()
               ->GetDiagnosticsRemoteAndBindReceiver();
         }));
 
@@ -1478,9 +1476,7 @@
   shortcut_mapping_pref_service_.reset();
   if (features::IsTrafficCountersEnabled())
     traffic_counters_handler_.reset();
-
-  if (features::IsBluetoothRevampEnabled())
-    bluetooth_pref_state_observer_.reset();
+  bluetooth_pref_state_observer_.reset();
 
   // Detach D-Bus clients before DBusThreadManager is shut down.
   idle_action_warning_observer_.reset();
diff --git a/chrome/browser/ash/crosapi/print_job_info_idl_conversions.cc b/chrome/browser/ash/crosapi/print_job_info_idl_conversions.cc
index 5ef895d..dbddbf5a 100644
--- a/chrome/browser/ash/crosapi/print_job_info_idl_conversions.cc
+++ b/chrome/browser/ash/crosapi/print_job_info_idl_conversions.cc
@@ -158,7 +158,6 @@
   print_job_info.title = print_job_info_proto.title();
   print_job_info.source =
       PrintJobSourceProtoToIdl(print_job_info_proto.source());
-  print_job_info.source_id = nullptr;
   print_job_info.status =
       PrintJobStatusProtoToIdl(print_job_info_proto.status());
   print_job_info.creation_time =
diff --git a/chrome/browser/ash/crosapi/print_job_info_idl_conversions_unittest.cc b/chrome/browser/ash/crosapi/print_job_info_idl_conversions_unittest.cc
index 1b699b7..44c9c4f 100644
--- a/chrome/browser/ash/crosapi/print_job_info_idl_conversions_unittest.cc
+++ b/chrome/browser/ash/crosapi/print_job_info_idl_conversions_unittest.cc
@@ -72,7 +72,7 @@
   EXPECT_EQ(kId, print_job_info.id);
   EXPECT_EQ(kTitle, print_job_info.title);
   EXPECT_EQ(idl::PRINT_JOB_SOURCE_PRINT_PREVIEW, print_job_info.source);
-  EXPECT_EQ(nullptr, print_job_info.source_id);
+  EXPECT_EQ(absl::nullopt, print_job_info.source_id);
   EXPECT_EQ(idl::PRINT_JOB_STATUS_FAILED, print_job_info.status);
   EXPECT_DOUBLE_EQ(static_cast<double>(kJobCreationTime),
                    print_job_info.creation_time);
diff --git a/chrome/browser/ash/crosapi/structured_metrics_service_ash.cc b/chrome/browser/ash/crosapi/structured_metrics_service_ash.cc
index fde22602..44b5f8a 100644
--- a/chrome/browser/ash/crosapi/structured_metrics_service_ash.cc
+++ b/chrome/browser/ash/crosapi/structured_metrics_service_ash.cc
@@ -6,8 +6,6 @@
 
 #include "chromeos/crosapi/mojom/structured_metrics_service.mojom.h"
 #include "components/metrics/structured/event.h"
-#include "components/metrics/structured/event_base.h"
-#include "components/metrics/structured/histogram_util.h"
 #include "components/metrics/structured/recorder.h"
 #include "mojo/public/cpp/bindings/pending_receiver.h"
 #include "mojo/public/cpp/bindings/receiver_set.h"
@@ -25,16 +23,7 @@
 void StructuredMetricsServiceAsh::Record(
     const std::vector<::metrics::structured::Event>& events) {
   for (const auto& event : events) {
-    auto event_base = metrics::structured::EventBase::FromEvent(event);
-
-    // Only record the event if it is valid.
-    if (event_base.has_value()) {
-      metrics::structured::Recorder::GetInstance()->Record(
-          std::move(event_base.value()));
-    } else {
-      metrics::structured::LogInternalError(
-          metrics::structured::StructuredMetricsError::kInvalidEventParsed);
-    }
+    metrics::structured::Recorder::GetInstance()->RecordEvent(event.Clone());
   }
 }
 
diff --git a/chrome/browser/ash/crosapi/test_mojo_connection_manager_unittest.cc b/chrome/browser/ash/crosapi/test_mojo_connection_manager_unittest.cc
index 863cc85d..3d5f884 100644
--- a/chrome/browser/ash/crosapi/test_mojo_connection_manager_unittest.cc
+++ b/chrome/browser/ash/crosapi/test_mojo_connection_manager_unittest.cc
@@ -32,7 +32,6 @@
 #include "chrome/browser/ash/crosapi/environment_provider.h"
 #include "chrome/browser/ash/crosapi/idle_service_ash.h"
 #include "chrome/browser/ash/crosapi/test_crosapi_dependency_registry.h"
-#include "chrome/browser/ash/profiles/profile_helper.h"
 #include "chrome/test/base/scoped_testing_local_state.h"
 #include "chrome/test/base/testing_browser_process.h"
 #include "chrome/test/base/testing_profile_manager.h"
@@ -213,7 +212,6 @@
   TestingProfile* profile =
       testing_profile_manager.CreateTestingProfile(account.GetUserEmail());
   profile->set_profile_name(account.GetUserEmail());
-  ash::ProfileHelper::Get()->SetUserToProfileMappingForTesting(user, profile);
 
   auto crosapi_manager = CreateCrosapiManagerWithTestRegistry();
 
diff --git a/chrome/browser/ash/hats/hats_config.cc b/chrome/browser/ash/hats/hats_config.cc
index 7e2d8545..ef6ab11 100644
--- a/chrome/browser/ash/hats/hats_config.cc
+++ b/chrome/browser/ash/hats/hats_config.cc
@@ -14,12 +14,10 @@
 }  // namespace
 
 HatsConfig::HatsConfig(const base::Feature& feature,
-                       const char* const histogram_name,
                        const base::TimeDelta& new_device_threshold,
                        const char* const is_selected_pref_name,
                        const char* const cycle_end_timestamp_pref_name)
     : feature(feature),
-      histogram_name(histogram_name),
       new_device_threshold(new_device_threshold),
       is_selected_pref_name(is_selected_pref_name),
       cycle_end_timestamp_pref_name(cycle_end_timestamp_pref_name) {
@@ -28,17 +26,15 @@
 
 // General Survey -- shown after login
 const HatsConfig kHatsGeneralSurvey = {
-    ::features::kHappinessTrackingSystem,         // feature
-    "Browser.ChromeOS.HatsSatisfaction.General",  // histogram_name
-    base::Days(7),                                // new_device_threshold
-    prefs::kHatsDeviceIsSelected,                 // is_selected_pref_name
-    prefs::kHatsSurveyCycleEndTimestamp,  // cycle_end_timestamp_pref_name
+    ::features::kHappinessTrackingSystem,  // feature
+    base::Days(7),                         // new_device_threshold
+    prefs::kHatsDeviceIsSelected,          // is_selected_pref_name
+    prefs::kHatsSurveyCycleEndTimestamp,   // cycle_end_timestamp_pref_name
 };
 
 // ENT Survey -- shown after login, along with the General Survey
 const HatsConfig kHatsEntSurvey = {
     ::features::kHappinessTrackingSystemEnt,  // feature
-    "Browser.ChromeOS.HatsSatisfaction.Ent",  // histogram_name
     base::Days(7),                            // new_device_threshold
     prefs::kHatsEntDeviceIsSelected,          // is_selected_pref_name
     prefs::kHatsEntSurveyCycleEndTs,          // cycle_end_timestamp_pref_name
@@ -47,7 +43,6 @@
 // Stability Survey -- shown after login, along with the General Survey
 const HatsConfig kHatsStabilitySurvey = {
     ::features::kHappinessTrackingSystemStability,  // feature
-    "Browser.ChromeOS.HatsSatisfaction.Stability",  // histogram_name
     base::Days(7),                                  // new_device_threshold
     prefs::kHatsStabilityDeviceIsSelected,          // is_selected_pref_name
     prefs::kHatsStabilitySurveyCycleEndTs,  // cycle_end_timestamp_pref_name
@@ -56,7 +51,6 @@
 // Performance Survey -- shown after login, along with the General Survey
 const HatsConfig kHatsPerformanceSurvey = {
     ::features::kHappinessTrackingSystemPerformance,  // feature
-    "Browser.ChromeOS.HatsSatisfaction.Performance",  // histogram_name
     base::Days(7),                                    // new_device_threshold
     prefs::kHatsPerformanceDeviceIsSelected,          // is_selected_pref_name
     prefs::kHatsPerformanceSurveyCycleEndTs,  // cycle_end_timestamp_pref_name
@@ -64,10 +58,9 @@
 
 // Onboarding Experience Survey -- shown after completing the Onboarding Dialog
 const HatsConfig kHatsOnboardingSurvey = {
-    ::features::kHappinessTrackingSystemOnboarding,            // feature
-    "Browser.ChromeOS.HatsSatisfaction.OnboardingExperience",  // histogram_name
-    base::Minutes(30),                       // new_device_threshold
-    prefs::kHatsOnboardingDeviceIsSelected,  // is_selected_pref_name
+    ::features::kHappinessTrackingSystemOnboarding,  // feature
+    base::Minutes(30),                               // new_device_threshold
+    prefs::kHatsOnboardingDeviceIsSelected,          // is_selected_pref_name
     prefs::kHatsOnboardingSurveyCycleEndTs,  // cycle_end_timestamp_pref_name
 };
 
@@ -75,7 +68,6 @@
 // Lock
 const HatsConfig kHatsSmartLockSurvey = {
     ::features::kHappinessTrackingSystemSmartLock,  // feature
-    "Browser.ChromeOS.HatsSatisfaction.SmartLock",  // histogram_name
     base::Days(7),                                  // hatsNewDeviceThreshold
     prefs::kHatsSmartLockDeviceIsSelected,          // hatsIsSelectedPrefName
     prefs::kHatsSmartLockSurveyCycleEndTs,  // hatsCycleEndTimestampPrefName
@@ -85,7 +77,6 @@
 // method execpt Smart Lock
 const HatsConfig kHatsUnlockSurvey = {
     ::features::kHappinessTrackingSystemUnlock,  // feature
-    "Browser.ChromeOS.HatsSatisfaction.Unlock",  // histogram_name
     base::Days(7),                               // hatsNewDeviceThreshold
     prefs::kHatsUnlockDeviceIsSelected,          // hatsIsSelectedPrefName
     prefs::kHatsUnlockSurveyCycleEndTs,  // hatsCycleEndTimestampPrefName
@@ -94,7 +85,6 @@
 // ARC++ Games Survey -- shown after a user played a top XX ARC++ game
 const HatsConfig kHatsArcGamesSurvey = {
     ::features::kHappinessTrackingSystemArcGames,  // feature
-    "Browser.ChromeOS.HatsSatisfaction.ArcGames",  // histogram_name
     base::Days(7),                                 // new_device_threshold
     prefs::kHatsArcGamesDeviceIsSelected,          // is_selected_pref_name
     prefs::kHatsArcGamesSurveyCycleEndTs,  // cycle_end_timestamp_pref_name
@@ -104,7 +94,6 @@
 // than 3 minutes
 const HatsConfig kHatsAudioSurvey = {
     ::features::kHappinessTrackingSystemAudio,  // feature
-    "Browser.ChromeOS.HatsSatisfaction.Audio",  // histogram_name
     base::Days(90),                             // new_device_threshold
     prefs::kHatsAudioDeviceIsSelected,          // is_selected_pref_name
     prefs::kHatsAudioSurveyCycleEndTs,          // cycle_end_timestamp_pref_name
@@ -114,8 +103,7 @@
 // Avatar selection page of either OS Settings or Personalization Hub, depending
 // on whether PersonalizationHub feature is enabled.
 const HatsConfig kHatsPersonalizationAvatarSurvey = {
-    ::features::kHappinessTrackingPersonalizationAvatar,        // feature
-    "Browser.ChromeOS.HatsSatisfaction.PersonalizationAvatar",  // histogram_name
+    ::features::kHappinessTrackingPersonalizationAvatar,  // feature
     base::Days(1),                                      // new_device_threshold
     prefs::kHatsPersonalizationAvatarSurveyIsSelected,  // is_selected_pref_name
     prefs::
@@ -126,8 +114,7 @@
 // the Screensaver settings page of either OS Settings or Personalization Hub,
 // depending on whether PersonalizationHub feature is enabled.
 const HatsConfig kHatsPersonalizationScreensaverSurvey = {
-    ::features::kHappinessTrackingPersonalizationScreensaver,        // feature
-    "Browser.ChromeOS.HatsSatisfaction.PersonalizationScreensaver",  // histogram_name
+    ::features::kHappinessTrackingPersonalizationScreensaver,  // feature
     base::Days(1),  // new_device_threshold
     prefs::
         kHatsPersonalizationScreensaverSurveyIsSelected,  // is_selected_pref_name
@@ -138,8 +125,7 @@
 // Personalization Wallpaper Survey -- shown 60 seconds after a user closes the
 // Wallpaper subpage of the Personalization App.
 const HatsConfig kHatsPersonalizationWallpaperSurvey = {
-    ::features::kHappinessTrackingPersonalizationWallpaper,        // feature
-    "Browser.ChromeOS.HatsSatisfaction.PersonalizationWallpaper",  // histogram_name
+    ::features::kHappinessTrackingPersonalizationWallpaper,  // feature
     base::Days(1),  // new_device_threshold
     prefs::
         kHatsPersonalizationWallpaperSurveyIsSelected,  // is_selected_pref_name
@@ -150,18 +136,16 @@
 // MediaApp PDF Editing experience survey -- shown after a user clicks `Save`
 // after editing a PDF in the MediaApp (Gallery), and the save is complete.
 const HatsConfig kHatsMediaAppPdfSurvey = {
-    ::features::kHappinessTrackingMediaAppPdf,        // feature
-    "Browser.ChromeOS.HatsSatisfaction.MediaAppPdf",  // histogram_name
-    base::Days(7),                                    // new_device_threshold
-    prefs::kHatsMediaAppPdfIsSelected,                // hatsIsSelectedPrefName
-    prefs::kHatsMediaAppPdfCycleEndTs,  // hatsCycleEndTimestampPrefName
+    ::features::kHappinessTrackingMediaAppPdf,  // feature
+    base::Days(7),                              // new_device_threshold
+    prefs::kHatsMediaAppPdfIsSelected,          // hatsIsSelectedPrefName
+    prefs::kHatsMediaAppPdfCycleEndTs,          // hatsCycleEndTimestampPrefName
 };
 
 // Camera App Survey -- shown after an user captured a photo/video or left the
 // app with session > 15 seconds.
 const HatsConfig kHatsCameraAppSurvey = {
     ::features::kHappinessTrackingSystemCameraApp,  // feature
-    "Browser.ChromeOS.HatsSatisfaction.CameraApp",  // histogram_name
     base::Days(90),                                 // new_device_threshold
     prefs::kHatsCameraAppDeviceIsSelected,          // is_selected_pref_name
     prefs::kHatsCameraAppSurveyCycleEndTs,  // cycle_end_timestamp_pref_name
@@ -170,20 +154,18 @@
 // Chromebook Video/Image Editing/Viewing experience survey -- shown after a
 // user opens and then subsequently closes the Google Photos Android App.
 const HatsConfig kHatsPhotosExperienceSurvey = {
-    ::features::kHappinessTrackingPhotosExperience,        // feature
-    "Browser.ChromeOS.HatsSatisfaction.PhotosExperience",  // histogram_name
-    base::Days(7),                           // new_device_threshold
-    prefs::kHatsPhotosExperienceIsSelected,  // hatsIsSelectedPrefName
+    ::features::kHappinessTrackingPhotosExperience,  // feature
+    base::Days(7),                                   // new_device_threshold
+    prefs::kHatsPhotosExperienceIsSelected,          // hatsIsSelectedPrefName
     prefs::kHatsPhotosExperienceCycleEndTs,  // hatsCycleEndTimestampPrefName
 };
 
 // General Camera Survey -- shown after camera is closed after being open for
 // at least 3 minutes by using any app (e.g. Chrome or Android app).
 const HatsConfig kHatsGeneralCameraSurvey = {
-    ::features::kHappinessTrackingGeneralCamera,        // feature
-    "Browser.ChromeOS.HatsSatisfaction.GeneralCamera",  // histogram_name
-    base::Days(90),                                     // new_device_threshold
-    prefs::kHatsGeneralCameraIsSelected,                // is_selected_pref_name
+    ::features::kHappinessTrackingGeneralCamera,  // feature
+    base::Days(90),                               // new_device_threshold
+    prefs::kHatsGeneralCameraIsSelected,          // is_selected_pref_name
     prefs::kHatsGeneralCameraSurveyCycleEndTs,  // cycle_end_timestamp_pref_name
 };
 
diff --git a/chrome/browser/ash/hats/hats_config.h b/chrome/browser/ash/hats/hats_config.h
index e01d4e5f..e625847 100644
--- a/chrome/browser/ash/hats/hats_config.h
+++ b/chrome/browser/ash/hats/hats_config.h
@@ -12,7 +12,6 @@
 
 struct HatsConfig {
   HatsConfig(const base::Feature& feature,
-             const char* const histogram_name,
              const base::TimeDelta& new_device_threshold,
              const char* const is_selected_pref_name,
              const char* const cycle_end_timestamp_pref_name);
@@ -23,11 +22,6 @@
   // survey is enabled or not, and its parameters.
   const base::Feature& feature;
 
-  // Histogram name. New entries should be added to
-  // tools/metrics/histograms/metadata/browser/histograms.xml, as a variant of
-  // Browser.ChromeOS.HatsSatisfaction.
-  const char* const histogram_name;
-
   // Minimum amount of time after initial login or oobe after which we can show
   // the HaTS notification.
   const base::TimeDelta new_device_threshold;
diff --git a/chrome/browser/ash/hats/hats_dialog.cc b/chrome/browser/ash/hats/hats_dialog.cc
index 46c7ebd..f9348579b 100644
--- a/chrome/browser/ash/hats/hats_dialog.cc
+++ b/chrome/browser/ash/hats/hats_dialog.cc
@@ -40,16 +40,11 @@
 const int kDefaultWidth = 384;
 const int kDefaultHeight = 428;
 
-// There are 5 possible choices, from very_dissatisfied to very_satisfied.
-const int kMaxFeedbackScore = 5;
-
 // Possible requested actions from the HTML+JS client.
 // Client is ready to close the page.
 const char kClientActionClose[] = "close";
 // There was an unhandled error and we need to log and close the page.
 const char kClientActionUnhandledError[] = "survey-loading-error";
-// A smiley was selected, so we'd like to track that.
-const char kClientSmileySelected[] = "smiley-selected-";
 
 constexpr char kCrOSHaTSURL[] =
     "https://storage.googleapis.com/chromeos-hats-web-stable/index.html";
@@ -57,41 +52,27 @@
 }  // namespace
 
 // static
-bool HatsDialog::HandleClientTriggeredAction(
-    const std::string& action,
-    const std::string& histogram_name) {
+bool HatsDialog::HandleClientTriggeredAction(const std::string& action) {
   DVLOG(1) << "HandleClientTriggeredAction: Received " << action;
 
   // Page asks to be closed.
   if (action == kClientActionClose) {
     return true;
   }
+
   // An unhandled error in our client, log and close.
   if (base::StartsWith(action, kClientActionUnhandledError)) {
     LOG(ERROR) << "Error while loading a HaTS Survey " << action;
     return true;
   }
-  // A Smiley (score) was selected.
-  if (base::StartsWith(action, kClientSmileySelected)) {
-    int score;
-    if (!base::StringToInt(action.substr(strlen(kClientSmileySelected)),
-                           &score)) {
-      LOG(ERROR) << "Can't parse Survey score";
-      return false;  // It's a client error, but don't close the page.
-    }
-    DVLOG(1) << "Setting UMA Metric for smiley " << score;
-    base::UmaHistogramExactLinear(histogram_name, score, kMaxFeedbackScore + 1);
-    return false;  // Don't close the page.
-  }
 
   // Future proof - ignore unimplemented commands.
   return false;
 }
 
 HatsDialog::HatsDialog(const std::string& trigger_id,
-                       const std::string& histogram_name,
                        const std::string& site_context)
-    : trigger_id_(trigger_id), histogram_name_(histogram_name) {
+    : trigger_id_(trigger_id) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
   url_ = std::string(kCrOSHaTSURL) + "?" + site_context +
          "&trigger=" + trigger_id_;
@@ -99,12 +80,10 @@
 }
 
 void HatsDialog::Show(const std::string& trigger_id,
-                      const std::string& histogram_name,
                       const std::string& site_context) {
   // HatsDialog is self-deleting via OnDialogClosed().
-  chrome::ShowWebDialog(
-      nullptr, ProfileManager::GetActiveUserProfile(),
-      new HatsDialog(trigger_id, histogram_name, site_context));
+  chrome::ShowWebDialog(nullptr, ProfileManager::GetActiveUserProfile(),
+                        new HatsDialog(trigger_id, site_context));
 }
 
 ui::ModalType HatsDialog::GetDialogModalType() const {
@@ -141,7 +120,7 @@
 void HatsDialog::OnLoadingStateChanged(WebContents* source) {
   const std::string ref = source->GetURL().ref();
 
-  if (HandleClientTriggeredAction(ref, histogram_name_)) {
+  if (HandleClientTriggeredAction(ref)) {
     source->ClosePage();
   }
 }
diff --git a/chrome/browser/ash/hats/hats_dialog.h b/chrome/browser/ash/hats/hats_dialog.h
index b0449b6f..3ba7a28 100644
--- a/chrome/browser/ash/hats/hats_dialog.h
+++ b/chrome/browser/ash/hats/hats_dialog.h
@@ -22,7 +22,6 @@
   HatsDialog& operator=(const HatsDialog&) = delete;
 
   static void Show(const std::string& trigger_id,
-                   const std::string& histogram_name,
                    const std::string& site_context);
 
  private:
@@ -32,15 +31,11 @@
   // This class must be allocated on the heap, and general care should be taken
   // regarding its lifetime, due to its self-managing use of delete in the
   // `OnDialogClosed` method.
-  HatsDialog(const std::string& trigger_id,
-             const std::string& histogram_name,
-             const std::string& site_context);
+  HatsDialog(const std::string& trigger_id, const std::string& site_context);
 
   // Based on the supplied |action|, returns true if the client should be
-  // closed. Handling the action could imply logging or incrementing a survey
-  // specific UMA metric (using |histogram_name|).
-  static bool HandleClientTriggeredAction(const std::string& action,
-                                          const std::string& histogram_name);
+  // closed.
+  static bool HandleClientTriggeredAction(const std::string& action);
 
   // ui::WebDialogDelegate implementation.
   ui::ModalType GetDialogModalType() const override;
@@ -62,7 +57,6 @@
 
   const std::string trigger_id_;
   std::string url_;
-  const std::string histogram_name_;
 };
 
 }  // namespace ash
diff --git a/chrome/browser/ash/hats/hats_dialog_unittest.cc b/chrome/browser/ash/hats/hats_dialog_unittest.cc
index 250fe770..a0f69eb4 100644
--- a/chrome/browser/ash/hats/hats_dialog_unittest.cc
+++ b/chrome/browser/ash/hats/hats_dialog_unittest.cc
@@ -6,7 +6,6 @@
 
 #include <string>
 
-#include "base/test/metrics/histogram_tester.h"
 #include "hats_dialog.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -14,26 +13,15 @@
 
 TEST(HatsDialogTest, HandleClientTriggeredAction) {
   // Client asks to close the window
-  EXPECT_TRUE(HatsDialog::HandleClientTriggeredAction("close", "hist-name"));
+  EXPECT_TRUE(HatsDialog::HandleClientTriggeredAction("close"));
   // There was an unhandled error, close the window
-  EXPECT_TRUE(HatsDialog::HandleClientTriggeredAction(
-      "survey-loading-error-12345", "a-suffix"));
+  EXPECT_TRUE(
+      HatsDialog::HandleClientTriggeredAction("survey-loading-error-12345"));
   // Client sent an invalid action, ignore it
-  EXPECT_FALSE(HatsDialog::HandleClientTriggeredAction("Invalid", "hist-name"));
+  EXPECT_FALSE(HatsDialog::HandleClientTriggeredAction("Invalid"));
 
-  // Set up the histogram tester
-  base::HistogramTester histogram_tester;
-  std::string histogram("Browser.ChromeOS.HatsSatisfaction.General");
-  histogram_tester.ExpectTotalCount(histogram, 0);
-
-  EXPECT_FALSE(HatsDialog::HandleClientTriggeredAction("smiley-selected-4",
-                                                       "full-histogram-name"));
-
-  // Ensure we logged the right metric
-  // For the example above, it means adding 1 entry in the bucket for score=4
-  std::vector<base::Bucket> expected_buckets{{4, 1}};
-  EXPECT_EQ(histogram_tester.GetAllSamples("full-histogram-name"),
-            expected_buckets);
+  // Client sent a valid action
+  EXPECT_FALSE(HatsDialog::HandleClientTriggeredAction("smiley-selected-4"));
 }
 
 }  // namespace ash
diff --git a/chrome/browser/ash/hats/hats_notification_controller.cc b/chrome/browser/ash/hats/hats_notification_controller.cc
index 8fa5372..33984d5 100644
--- a/chrome/browser/ash/hats/hats_notification_controller.cc
+++ b/chrome/browser/ash/hats/hats_notification_controller.cc
@@ -274,8 +274,7 @@
     return;
   }
 
-  HatsDialog::Show(HatsFinchHelper::GetTriggerID(hats_config_),
-                   hats_config_.histogram_name, site_context);
+  HatsDialog::Show(HatsFinchHelper::GetTriggerID(hats_config_), site_context);
 }
 
 // message_center::NotificationDelegate override:
diff --git a/chrome/browser/ash/login/demo_mode/demo_session.cc b/chrome/browser/ash/login/demo_mode/demo_session.cc
index 6adab769..1bba3fdf 100644
--- a/chrome/browser/ash/login/demo_mode/demo_session.cc
+++ b/chrome/browser/ash/login/demo_mode/demo_session.cc
@@ -541,6 +541,27 @@
   extensions_external_loader_->LoadApp(id);
 }
 
+void DemoSession::SetKeyboardBrightnessToOneHundredPercentFromCurrentLevel(
+    absl::optional<double> keyboard_brightness_percentage) {
+  // Map of current keyboard brightness percentage to times needed to call
+  // IncreaseKeyboardBrightness to reach max brightness level.
+  const base::flat_map<int, int> kTimesToIncreaseKeyboardBrightnessToMax = {
+      {0, 5}, {10, 4}, {20, 3}, {40, 2}, {60, 1}, {100, 0}};
+
+  if (keyboard_brightness_percentage.has_value()) {
+    const auto timesToIncreaseKeyboardBrightness =
+        kTimesToIncreaseKeyboardBrightnessToMax.find(
+            keyboard_brightness_percentage.value());
+
+    if (kTimesToIncreaseKeyboardBrightnessToMax.end() !=
+        timesToIncreaseKeyboardBrightness) {
+      for (int i = 0; i < timesToIncreaseKeyboardBrightness->second; i++) {
+        chromeos::PowerManagerClient::Get()->IncreaseKeyboardBrightness();
+      }
+    }
+  }
+}
+
 void DemoSession::OnSessionStateChanged() {
   switch (session_manager::SessionManager::Get()->session_state()) {
     case session_manager::SessionState::LOGIN_PRIMARY:
@@ -573,6 +594,14 @@
                     ->GetAccountId());
       }
 
+      if (chromeos::PowerManagerClient::Get()) {
+        chromeos::PowerManagerClient::Get()->GetKeyboardBrightnessPercent(
+            base::BindOnce(
+                &DemoSession::
+                    SetKeyboardBrightnessToOneHundredPercentFromCurrentLevel,
+                weak_ptr_factory_.GetWeakPtr()));
+      }
+
       if (!ash::features::IsDemoModeSWAEnabled() ||
           extension_misc::IsDemoModeChromeApp(GetHighlightsAppId())) {
         // Do app installation when one of the following condition holds:
diff --git a/chrome/browser/ash/login/demo_mode/demo_session.h b/chrome/browser/ash/login/demo_mode/demo_session.h
index 3fda025bd..beba01c 100644
--- a/chrome/browser/ash/login/demo_mode/demo_session.h
+++ b/chrome/browser/ash/login/demo_mode/demo_session.h
@@ -17,6 +17,7 @@
 #include "base/values.h"
 #include "chrome/browser/ash/login/demo_mode/demo_extensions_external_loader.h"
 #include "chrome/browser/component_updater/cros_component_manager.h"
+#include "chromeos/dbus/power/power_manager_client.h"
 #include "components/services/app_service/public/cpp/app_registry_cache.h"
 #include "components/session_manager/core/session_manager.h"
 #include "components/session_manager/core/session_manager_observer.h"
@@ -43,7 +44,8 @@
 class DemoSession : public session_manager::SessionManagerObserver,
                     public user_manager::UserManager::UserSessionStateObserver,
                     public extensions::AppWindowRegistry::Observer,
-                    public apps::AppRegistryCache::Observer {
+                    public apps::AppRegistryCache::Observer,
+                    public chromeos::PowerManagerClient::Observer {
  public:
   // Type of demo mode configuration.
   // Warning: DemoModeConfig is stored in local state. Existing entries should
@@ -225,6 +227,11 @@
   void OnAppRegistryCacheWillBeDestroyed(
       apps::AppRegistryCache* cache) override;
 
+  // Once received the keyboard brightness percentage, increase the keyboard
+  // brightness to the max level.
+  void SetKeyboardBrightnessToOneHundredPercentFromCurrentLevel(
+      absl::optional<double> keyboard_brightness_percentage);
+
   // Whether demo session has been started.
   bool started_ = false;
 
diff --git a/chrome/browser/ash/login/demo_mode/demo_session_browsertest.cc b/chrome/browser/ash/login/demo_mode/demo_session_browsertest.cc
index 6c9fe39..540876f0 100644
--- a/chrome/browser/ash/login/demo_mode/demo_session_browsertest.cc
+++ b/chrome/browser/ash/login/demo_mode/demo_session_browsertest.cc
@@ -23,6 +23,7 @@
 #include "chrome/browser/ui/browser_list_observer.h"
 #include "chrome/common/pref_names.h"
 #include "chrome/test/base/browser_process_platform_part_test_api_chromeos.h"
+#include "chromeos/dbus/power/fake_power_manager_client.h"
 #include "components/prefs/pref_service.h"
 #include "components/user_manager/user_manager.h"
 #include "content/public/test/browser_test.h"
@@ -234,7 +235,8 @@
 class DemoSessionLoginTest : public LoginManagerTest,
                              public LocalStateMixin::Delegate,
                              public BrowserListObserver,
-                             public user_manager::UserManager::Observer {
+                             public user_manager::UserManager::Observer,
+                             public chromeos::FakePowerManagerClient::Observer {
  public:
   DemoSessionLoginTest() {
     login_manager_mixin_.set_should_launch_browser(true);
@@ -277,6 +279,10 @@
             kAccountIdEmail);
     device_local_account_policy_update.reset();
 
+    // chromeos::PowerManagerClient::InitializeFake();
+    chromeos::FakePowerManagerClient::Get()->set_keyboard_brightness_percent(
+        kInitialBrightness);
+
     LoginManagerTest::SetUpOnMainThread();
   }
 
@@ -305,6 +311,8 @@
   LocalStateMixin local_state_mixin_{&mixin_host_, this};
   base::test::ScopedFeatureList scoped_feature_list_;
   base::OnceClosure on_browser_added_callback_;
+  static constexpr double kInitialBrightness = 20.0;
+  base::WeakPtrFactory<DemoSessionLoginTest> weak_ptr_factory_{this};
 };
 
 IN_PROC_BROWSER_TEST_F(DemoSessionLoginTest, SessionStartup) {
@@ -326,5 +334,16 @@
   ASSERT_TRUE(demo_app_browser);
 }
 
+IN_PROC_BROWSER_TEST_F(
+    DemoSessionLoginTest,
+    DemoSessionKeyboardBrightnessIncreaseThreeTimesToOneHundredPercents) {
+  base::ScopedAllowBlockingForTesting scoped_allow_blocking;
+  login_manager_mixin_.WaitForActiveSession();
+  base::RunLoop().RunUntilIdle();
+  EXPECT_EQ(chromeos::FakePowerManagerClient::Get()
+                ->num_increase_keyboard_brightness_calls(),
+            3);
+}
+
 }  // namespace
 }  // namespace ash
diff --git a/chrome/browser/ash/login/demo_mode/demo_session_unittest.cc b/chrome/browser/ash/login/demo_mode/demo_session_unittest.cc
index c5f8b033..fc46a2d3 100644
--- a/chrome/browser/ash/login/demo_mode/demo_session_unittest.cc
+++ b/chrome/browser/ash/login/demo_mode/demo_session_unittest.cc
@@ -17,7 +17,6 @@
 #include "base/timer/mock_timer.h"
 #include "chrome/browser/ash/login/demo_mode/demo_resources.h"
 #include "chrome/browser/ash/login/users/fake_chrome_user_manager.h"
-#include "chrome/browser/ash/profiles/profile_helper.h"
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/browser_process_platform_part.h"
 #include "chrome/browser/component_updater/fake_cros_component_manager.h"
@@ -120,16 +119,14 @@
         AccountId::FromUserEmailGaiaId("demo@test.com", "demo_user"));
     FakeChromeUserManager* user_manager =
         static_cast<FakeChromeUserManager*>(user_manager::UserManager::Get());
-    const user_manager::User* user =
-        user_manager->AddPublicAccountUser(account_id);
+    user_manager->AddPublicAccountUser(account_id);
 
     auto prefs =
         std::make_unique<sync_preferences::TestingPrefServiceSyncable>();
     RegisterUserProfilePrefs(prefs->registry());
     TestingProfile* profile = profile_manager_->CreateTestingProfile(
-        "test-profile", std::move(prefs), u"Test profile", 1 /* avatar_id */,
-        TestingProfile::TestingFactories());
-    ProfileHelper::Get()->SetUserToProfileMappingForTesting(user, profile);
+        account_id.GetUserEmail(), std::move(prefs), u"Test profile",
+        /*avatar_id=*/1, TestingProfile::TestingFactories());
 
     user_manager->LoginUser(account_id);
     return profile;
diff --git a/chrome/browser/ash/login/existing_user_controller.cc b/chrome/browser/ash/login/existing_user_controller.cc
index 57800db..83dfeb09 100644
--- a/chrome/browser/ash/login/existing_user_controller.cc
+++ b/chrome/browser/ash/login/existing_user_controller.cc
@@ -559,10 +559,6 @@
   return network_state_helper_->GetCurrentNetworkName();
 }
 
-bool ExistingUserController::IsSigninInProgress() const {
-  return is_login_in_progress_;
-}
-
 void ExistingUserController::Login(const UserContext& user_context,
                                    const SigninSpecifics& specifics) {
   if (is_login_in_progress_) {
@@ -715,6 +711,14 @@
                                            &wildcard_match, user_type);
 }
 
+bool ExistingUserController::IsSigninInProgress() const {
+  return is_login_in_progress_;
+}
+
+bool ExistingUserController::IsUserSigninCompleted() const {
+  return is_signin_completed_;
+}
+
 void ExistingUserController::LocalStateChanged(
     user_manager::UserManager* user_manager) {
   DeviceSettingsChanged();
@@ -837,7 +841,7 @@
 
 void ExistingUserController::OnAuthSuccess(const UserContext& user_context) {
   is_login_in_progress_ = false;
-  GetLoginDisplay()->set_signin_completed(true);
+  is_signin_completed_ = true;
 
   // Login performer will be gone so cache this value to use
   // once profile is loaded.
@@ -1157,8 +1161,7 @@
 void ExistingUserController::DeviceSettingsChanged() {
   // If login was already completed, we should avoid any signin screen
   // transitions, see http://crbug.com/461604 for example.
-  if (!profile_prepared_ && GetLoginDisplay() &&
-      !GetLoginDisplay()->is_signin_completed()) {
+  if (!profile_prepared_ && !is_signin_completed_) {
     // Signed settings or user list changed. Notify views and update them.
     const user_manager::UserList& users =
         UserAddingScreen::Get()->IsRunning()
diff --git a/chrome/browser/ash/login/existing_user_controller.h b/chrome/browser/ash/login/existing_user_controller.h
index 5d22c9c5..f0bb7ae 100644
--- a/chrome/browser/ash/login/existing_user_controller.h
+++ b/chrome/browser/ash/login/existing_user_controller.h
@@ -10,7 +10,6 @@
 #include <memory>
 #include <string>
 
-#include "base/callback_forward.h"
 #include "base/gtest_prod_util.h"
 #include "base/memory/weak_ptr.h"
 #include "base/observer_list.h"
@@ -21,7 +20,6 @@
 #include "chrome/browser/ash/login/screens/encryption_migration_mode.h"
 #include "chrome/browser/ash/login/session/user_session_manager.h"
 #include "chrome/browser/ash/login/ui/login_display.h"
-#include "chrome/browser/ash/settings/device_settings_service.h"
 #include "chromeos/ash/components/login/auth/login_performer.h"
 #include "chromeos/ash/components/login/auth/public/auth_failure.h"
 #include "chromeos/ash/components/login/auth/public/user_context.h"
@@ -33,7 +31,6 @@
 #include "content/public/browser/notification_registrar.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
 #include "third_party/cros_system_api/dbus/cryptohome/dbus-constants.h"
-#include "ui/gfx/geometry/rect.h"
 #include "url/gurl.h"
 
 namespace base {
@@ -99,7 +96,6 @@
   std::u16string GetConnectedNetworkName() const;
 
   // LoginDisplay::Delegate: implementation
-  bool IsSigninInProgress() const override;
   void Login(const UserContext& user_context,
              const SigninSpecifics& specifics) override;
   void OnStartKioskEnableScreen() override;
@@ -114,6 +110,10 @@
       const AccountId& account_id,
       const absl::optional<user_manager::UserType>& user_type);
 
+  // This is virtual to be mocked in unit tests.
+  virtual bool IsSigninInProgress() const;
+  bool IsUserSigninCompleted() const;
+
   // user_manager::UserManager::Observer:
   void LocalStateChanged(user_manager::UserManager* user_manager) override;
 
@@ -355,6 +355,9 @@
   // Whether login attempt is running.
   bool is_login_in_progress_ = false;
 
+  // Whether user signin is completed.
+  bool is_signin_completed_ = false;
+
   // True if password has been changed for user who is completing sign in.
   // Set in OnLoginSuccess. Before that use LoginPerformer::password_changed().
   bool password_changed_ = false;
diff --git a/chrome/browser/ash/login/screens/hid_detection_screen_browsertest.cc b/chrome/browser/ash/login/screens/hid_detection_screen_browsertest.cc
index d1247ac..69ad82a 100644
--- a/chrome/browser/ash/login/screens/hid_detection_screen_browsertest.cc
+++ b/chrome/browser/ash/login/screens/hid_detection_screen_browsertest.cc
@@ -9,6 +9,7 @@
 #include "base/metrics/histogram_functions.h"
 #include "base/run_loop.h"
 #include "base/strings/strcat.h"
+#include "base/test/gmock_move_support.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/scoped_chromeos_version_info.h"
 #include "base/test/scoped_feature_list.h"
@@ -258,12 +259,8 @@
         std::make_unique<testing::NiceMock<device::MockBluetoothDevice>>(
             /*adapter=*/nullptr, kTestBluetoothClass, kTestBluetoothName,
             address, /*paired=*/false, /*connected=*/false);
-    ON_CALL(*mock_device, Connect_(testing::_, testing::_))
-        .WillByDefault(testing::Invoke(
-            [this](device::BluetoothDevice::PairingDelegate* pairing_delegate,
-                   device::BluetoothDevice::ConnectCallback& callback) {
-              connect_callback_ = std::move(callback);
-            }));
+    ON_CALL(*mock_device, Connect(testing::_, testing::_))
+        .WillByDefault(MoveArg<1>(&connect_callback_));
     ON_CALL(*mock_device, GetDeviceType())
         .WillByDefault(testing::Return(device_type));
 
diff --git a/chrome/browser/ash/login/screens/user_selection_screen.cc b/chrome/browser/ash/login/screens/user_selection_screen.cc
index 65cb4da..93ee096be 100644
--- a/chrome/browser/ash/login/screens/user_selection_screen.cc
+++ b/chrome/browser/ash/login/screens/user_selection_screen.cc
@@ -521,16 +521,18 @@
         resource_id, rb.GetMaxResourceScaleFactor());
     avatar.bytes.assign(avatar_data.begin(), avatar_data.end());
   };
+
   // After the default avatar images are moved to cloud, the user
-  // will have image bytes when using default images. Therefore, after
-  // the migration, remove the second if case.
+  // should have image bytes when using default images.
+  CHECK(!ash::features::IsAvatarsCloudMigrationEnabled() ||
+        !user.HasDefaultImage() || user.has_image_bytes());
+
+  // After the avatar cloud migration, remove the second if case.
   if (user.has_image_bytes()) {
     avatar.bytes.assign(
         user.image_bytes()->front(),
         user.image_bytes()->front() + user.image_bytes()->size());
   } else if (user.HasDefaultImage()) {
-    if (ash::features::IsAvatarsCloudMigrationEnabled())
-      LOG(ERROR) << "No image bytes found for default user image";
     int resource_id =
         default_user_image::GetDefaultImageResourceId(user.image_index());
     load_image_from_resource(resource_id);
diff --git a/chrome/browser/ash/login/session/user_session_manager_test.cc b/chrome/browser/ash/login/session/user_session_manager_test.cc
index a47c27cd..2801e1af 100644
--- a/chrome/browser/ash/login/session/user_session_manager_test.cc
+++ b/chrome/browser/ash/login/session/user_session_manager_test.cc
@@ -8,7 +8,6 @@
 #include "base/strings/utf_string_conversions.h"
 #include "chrome/browser/ash/login/demo_mode/demo_session.h"
 #include "chrome/browser/ash/login/users/fake_chrome_user_manager.h"
-#include "chrome/browser/ash/profiles/profile_helper.h"
 #include "chrome/browser/prefs/browser_prefs.h"
 #include "chrome/test/base/testing_browser_process.h"
 #include "chrome/test/base/testing_profile.h"
@@ -93,10 +92,8 @@
         std::make_unique<sync_preferences::TestingPrefServiceSyncable>();
     RegisterUserProfilePrefs(prefs->registry());
     TestingProfile* profile = profile_manager_->CreateTestingProfile(
-        "test-profile", std::move(prefs), u"Test profile", 1 /* avatar_id */,
-        TestingProfile::TestingFactories());
-    ProfileHelper::Get()->SetUserToProfileMappingForTesting(test_user_,
-                                                            profile);
+        account_id.GetUserEmail(), std::move(prefs), u"Test profile",
+        /*avatar_id=*/1, TestingProfile::TestingFactories());
 
     user_manager->LoginUser(account_id);
     return profile;
diff --git a/chrome/browser/ash/login/ui/login_display.h b/chrome/browser/ash/login/ui/login_display.h
index fa236968..9815383 100644
--- a/chrome/browser/ash/login/ui/login_display.h
+++ b/chrome/browser/ash/login/ui/login_display.h
@@ -5,14 +5,8 @@
 #ifndef CHROME_BROWSER_ASH_LOGIN_UI_LOGIN_DISPLAY_H_
 #define CHROME_BROWSER_ASH_LOGIN_UI_LOGIN_DISPLAY_H_
 
-#include "base/callback.h"
-#include "chrome/browser/ash/login/help_app_launcher.h"
 #include "chrome/browser/ash/login/signin_specifics.h"
 #include "components/user_manager/user.h"
-#include "components/user_manager/user_manager.h"
-#include "ui/gfx/geometry/rect.h"
-#include "ui/gfx/image/image.h"
-#include "ui/gfx/native_widget_types.h"
 
 namespace ash {
 
@@ -29,9 +23,6 @@
     virtual void Login(const UserContext& user_context,
                        const SigninSpecifics& specifics) = 0;
 
-    // Returns true if sign in is in progress.
-    virtual bool IsSigninInProgress() const = 0;
-
     // Called when the user requests kiosk enable screen.
     virtual void OnStartKioskEnableScreen() = 0;
 
@@ -59,18 +50,9 @@
   Delegate* delegate() { return delegate_; }
   void set_delegate(Delegate* delegate) { delegate_ = delegate; }
 
-  bool is_signin_completed() const { return is_signin_completed_; }
-  void set_signin_completed(bool value) { is_signin_completed_ = value; }
-
  protected:
   // Login UI delegate (controller).
   Delegate* delegate_ = nullptr;
-
-  // True if signin for user has completed.
-  // TODO(nkostylev): Find a better place to store this state
-  // in redesigned login stack.
-  // Login stack (and this object) will be recreated for next user sign in.
-  bool is_signin_completed_ = false;
 };
 
 }  // namespace ash
diff --git a/chrome/browser/ash/login/ui/login_display_host_common.cc b/chrome/browser/ash/login/ui/login_display_host_common.cc
index 28b03da..57302a8a 100644
--- a/chrome/browser/ash/login/ui/login_display_host_common.cc
+++ b/chrome/browser/ash/login/ui/login_display_host_common.cc
@@ -632,7 +632,7 @@
     const AccountId& prefilled_account) {
   if (prefilled_account.is_valid()) {
     LoadWallpaper(prefilled_account);
-    if (GetLoginDisplay()->delegate()->IsSigninInProgress()) {
+    if (GetExistingUserController()->IsSigninInProgress()) {
       return;
     }
   } else {
diff --git a/chrome/browser/ash/login/ui/login_display_host_mojo.cc b/chrome/browser/ash/login/ui/login_display_host_mojo.cc
index 4b79583..e549daa 100644
--- a/chrome/browser/ash/login/ui/login_display_host_mojo.cc
+++ b/chrome/browser/ash/login/ui/login_display_host_mojo.cc
@@ -168,7 +168,6 @@
   GetLoginScreenCertProviderService()
       ->pin_dialog_manager()
       ->RemovePinDialogHost(&security_token_pin_dialog_host_login_impl_);
-  dialog_->GetOobeUI()->signin_screen_handler()->SetDelegate(nullptr);
   StopObservingOobeUI();
   dialog_->Close();
 }
@@ -415,8 +414,9 @@
   // on camera timeout during SAML login.
   // TODO(crbug.com/1283052): simplify the logic here.
 
-  const bool no_users =
-      !login_display_->IsSigninInProgress() && !has_user_pods_;
+  const bool no_users = GetExistingUserController() &&
+                        !GetExistingUserController()->IsSigninInProgress() &&
+                        !has_user_pods_;
   if (no_users && !saml_page_closed) {
     return;
   }
@@ -693,8 +693,6 @@
     return;
 
   dialog_ = new OobeUIDialogDelegate(weak_factory_.GetWeakPtr());
-  dialog_->GetOobeUI()->signin_screen_handler()->SetDelegate(
-      login_display_.get());
 
   views::View* web_dialog_view = dialog_->GetWebDialogView();
   scoped_observation_.Observe(web_dialog_view);
diff --git a/chrome/browser/ash/login/ui/login_display_host_webui.cc b/chrome/browser/ash/login/ui/login_display_host_webui.cc
index 64bab4f..13e0f5c 100644
--- a/chrome/browser/ash/login/ui/login_display_host_webui.cc
+++ b/chrome/browser/ash/login/ui/login_display_host_webui.cc
@@ -69,7 +69,7 @@
 #include "chrome/browser/ui/webui/chromeos/login/lacros_data_backward_migration_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/lacros_data_migration_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h"
-#include "chrome/browser/ui/webui/chromeos/login/user_creation_screen_handler.h"
+#include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/welcome_screen_handler.h"
 #include "chrome/common/chrome_constants.h"
 #include "chrome/common/chrome_switches.h"
@@ -439,9 +439,6 @@
       metrics::structured::NeutrinoDevicesLocation::
           kLoginDisplayHostWebUIDestructor);
 
-  if (GetOobeUI())
-    GetOobeUI()->signin_screen_handler()->SetDelegate(nullptr);
-
   SessionManagerClient::Get()->RemoveObserver(this);
   CrasAudioHandler::Get()->RemoveAudioObserver(this);
 
@@ -594,7 +591,6 @@
   CHECK(login_display_);
 
   // Legacy calls, will go away soon.
-  GetOobeUI()->signin_screen_handler()->SetDelegate(login_display_.get());
   GetOobeUI()->signin_screen_handler()->Show();
 
   ShowGaiaDialogCommon(EmptyAccountId());
@@ -916,7 +912,6 @@
 
   OobeUI* oobe_ui = login_view_->GetOobeUI();
   if (oobe_ui) {
-    oobe_ui->signin_screen_handler()->SetDelegate(nullptr);
     oobe_ui->RemoveObserver(this);
   }
 
diff --git a/chrome/browser/ash/login/ui/login_display_mojo.cc b/chrome/browser/ash/login/ui/login_display_mojo.cc
index 523e5ed..6d28cef 100644
--- a/chrome/browser/ash/login/ui/login_display_mojo.cc
+++ b/chrome/browser/ash/login/ui/login_display_mojo.cc
@@ -8,13 +8,11 @@
 #include "ash/public/cpp/login_screen_model.h"
 #include "ash/public/cpp/login_types.h"
 #include "base/bind.h"
-#include "chrome/browser/ash/accessibility/accessibility_manager.h"
 #include "chrome/browser/ash/app_mode/kiosk_app_manager.h"
 #include "chrome/browser/ash/login/challenge_response_auth_keys_loader.h"
 #include "chrome/browser/ash/login/existing_user_controller.h"
 #include "chrome/browser/ash/login/quick_unlock/pin_backend.h"
 #include "chrome/browser/ash/login/quick_unlock/quick_unlock_utils.h"
-#include "chrome/browser/ash/login/screens/chrome_user_selection_screen.h"
 #include "chrome/browser/ash/login/screens/user_selection_screen.h"
 #include "chrome/browser/ash/login/ui/login_display_host_mojo.h"
 #include "chrome/browser/browser_process.h"
@@ -24,13 +22,8 @@
 #include "chrome/browser/ui/webui/chromeos/login/kiosk_autolaunch_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/reset_screen_handler.h"
 #include "chrome/common/pref_names.h"
-#include "chrome/grit/generated_resources.h"
 #include "chromeos/ash/components/dbus/session_manager/session_manager_client.h"
-#include "components/strings/grit/components_strings.h"
-#include "components/user_manager/known_user.h"
-#include "ui/base/ime/ash/ime_keyboard.h"
-#include "ui/base/ime/ash/input_method_manager.h"
-#include "ui/base/l10n/l10n_util.h"
+#include "components/session_manager/core/session_manager.h"
 
 namespace ash {
 
@@ -139,16 +132,6 @@
   }
 }
 
-bool LoginDisplayMojo::IsSigninInProgress() const {
-  if (delegate_)
-    return delegate_->IsSigninInProgress();
-  return false;
-}
-
-bool LoginDisplayMojo::IsUserSigninCompleted() const {
-  return is_signin_completed();
-}
-
 void LoginDisplayMojo::OnUserImageChanged(const user_manager::User& user) {
   LoginScreen::Get()->GetModel()->SetAvatarForUser(
       user.GetAccountId(),
diff --git a/chrome/browser/ash/login/ui/login_display_mojo.h b/chrome/browser/ash/login/ui/login_display_mojo.h
index 9fcd1ba..8818f3c 100644
--- a/chrome/browser/ash/login/ui/login_display_mojo.h
+++ b/chrome/browser/ash/login/ui/login_display_mojo.h
@@ -7,7 +7,6 @@
 
 #include "base/memory/weak_ptr.h"
 #include "chrome/browser/ash/login/ui/login_display.h"
-#include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h"
 #include "components/user_manager/user_manager.h"
 
 namespace ash {
@@ -17,7 +16,6 @@
 // screen.
 // TODO(estade): rename to LoginDisplayAsh.
 class LoginDisplayMojo : public LoginDisplay,
-                         public SigninScreenHandlerDelegate,
                          public user_manager::UserManager::Observer {
  public:
   explicit LoginDisplayMojo(LoginDisplayHostMojo* host);
@@ -36,9 +34,6 @@
             bool show_guest) override;
   void SetUIEnabled(bool is_enabled) override;
 
-  bool IsSigninInProgress() const override;
-  bool IsUserSigninCompleted() const override;
-
   // user_manager::UserManager::Observer:
   void OnUserImageChanged(const user_manager::User& user) override;
 
diff --git a/chrome/browser/ash/login/ui/login_display_webui.cc b/chrome/browser/ash/login/ui/login_display_webui.cc
index 12b8a68..d51c730 100644
--- a/chrome/browser/ash/login/ui/login_display_webui.cc
+++ b/chrome/browser/ash/login/ui/login_display_webui.cc
@@ -4,28 +4,9 @@
 
 #include "chrome/browser/ash/login/ui/login_display_webui.h"
 
-#include "chrome/browser/ash/accessibility/accessibility_manager.h"
-#include "chrome/browser/ash/login/lock/screen_locker.h"
-#include "chrome/browser/ash/login/startup_utils.h"
 #include "chrome/browser/ash/login/ui/login_display_host.h"
-#include "chrome/browser/ash/login/ui/user_adding_screen.h"
 #include "chrome/browser/ash/login/ui/webui_login_view.h"
-#include "chrome/browser/profiles/profile_manager.h"
-#include "chrome/browser/ui/browser_window.h"
-#include "chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.h"
-#include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h"
-#include "chrome/browser/ui/webui/chromeos/login/update_required_screen_handler.h"
-#include "chrome/browser/ui/webui/chromeos/login/wrong_hwid_screen_handler.h"
-#include "chrome/grit/generated_resources.h"
-#include "components/account_id/account_id.h"
-#include "components/strings/grit/components_strings.h"
-#include "components/user_manager/user_manager.h"
-#include "components/user_manager/user_names.h"
-#include "ui/base/ime/ash/ime_keyboard.h"
-#include "ui/base/ime/ash/input_method_manager.h"
-#include "ui/base/l10n/l10n_util.h"
 #include "ui/base/user_activity/user_activity_detector.h"
-#include "ui/views/widget/widget.h"
 
 namespace ash {
 
@@ -60,14 +41,6 @@
     host->GetWebUILoginView()->SetUIEnabled(is_enabled);
 }
 
-bool LoginDisplayWebUI::IsSigninInProgress() const {
-  return delegate_->IsSigninInProgress();
-}
-
-bool LoginDisplayWebUI::IsUserSigninCompleted() const {
-  return is_signin_completed();
-}
-
 void LoginDisplayWebUI::OnUserActivity(const ui::Event* event) {
   if (delegate_)
     delegate_->ResetAutoLoginTimer();
diff --git a/chrome/browser/ash/login/ui/login_display_webui.h b/chrome/browser/ash/login/ui/login_display_webui.h
index 747d048..adda4dd 100644
--- a/chrome/browser/ash/login/ui/login_display_webui.h
+++ b/chrome/browser/ash/login/ui/login_display_webui.h
@@ -5,18 +5,14 @@
 #ifndef CHROME_BROWSER_ASH_LOGIN_UI_LOGIN_DISPLAY_WEBUI_H_
 #define CHROME_BROWSER_ASH_LOGIN_UI_LOGIN_DISPLAY_WEBUI_H_
 
-#include "chrome/browser/ash/login/signin_specifics.h"
-#include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h"
+#include "chrome/browser/ash/login/ui/login_display.h"
 #include "components/user_manager/user.h"
 #include "ui/base/user_activity/user_activity_observer.h"
-#include "ui/views/widget/widget.h"
 
 namespace ash {
 
 // WebUI-based login UI implementation.
-class LoginDisplayWebUI : public LoginDisplay,
-                          public SigninScreenHandlerDelegate,
-                          public ui::UserActivityObserver {
+class LoginDisplayWebUI : public LoginDisplay, public ui::UserActivityObserver {
  public:
   LoginDisplayWebUI();
 
@@ -29,9 +25,6 @@
   void Init(const user_manager::UserList& users, bool show_guest) override;
   void SetUIEnabled(bool is_enabled) override;
 
-  bool IsSigninInProgress() const override;
-  bool IsUserSigninCompleted() const override;
-
   // ui::UserActivityDetector implementation:
   void OnUserActivity(const ui::Event* event) override;
 };
diff --git a/chrome/browser/ash/login/users/multi_profile_user_controller_unittest.cc b/chrome/browser/ash/login/users/multi_profile_user_controller_unittest.cc
index 5e13c83..0cabd8f 100644
--- a/chrome/browser/ash/login/users/multi_profile_user_controller_unittest.cc
+++ b/chrome/browser/ash/login/users/multi_profile_user_controller_unittest.cc
@@ -140,19 +140,14 @@
     controller_ = std::make_unique<MultiProfileUserController>(
         this, TestingBrowserProcess::GetGlobal()->local_state());
 
-    for (size_t i = 0; i < test_users_.size(); ++i) {
-      const AccountId account_id(test_users_[i]);
-      const user_manager::User* user =
-          fake_user_manager_->AddUser(test_users_[i]);
+    for (const auto& account_id : test_users_) {
+      fake_user_manager_->AddUser(account_id);
 
       // Note that user profiles are created after user login in reality.
       TestingProfile* user_profile =
           profile_manager_->CreateTestingProfile(account_id.GetUserEmail());
       user_profile->set_profile_name(account_id.GetUserEmail());
       user_profiles_.push_back(user_profile);
-
-      ProfileHelper::Get()->SetUserToProfileMappingForTesting(user,
-                                                              user_profile);
     }
   }
 
diff --git a/chrome/browser/ash/net/bluetooth_pref_state_observer.cc b/chrome/browser/ash/net/bluetooth_pref_state_observer.cc
index 5a8b2a3..0d60d1e 100644
--- a/chrome/browser/ash/net/bluetooth_pref_state_observer.cc
+++ b/chrome/browser/ash/net/bluetooth_pref_state_observer.cc
@@ -4,7 +4,6 @@
 
 #include "chrome/browser/ash/net/bluetooth_pref_state_observer.h"
 
-#include "ash/constants/ash_features.h"
 #include "chrome/browser/ash/profiles/profile_helper.h"
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/profiles/profile.h"
@@ -14,8 +13,6 @@
 namespace ash {
 
 BluetoothPrefStateObserver::BluetoothPrefStateObserver() {
-  CHECK(features::IsBluetoothRevampEnabled());
-
   // Set CrosBluetoothConfig with device prefs only.
   SetPrefs(/*profile=*/nullptr);
   session_observation_.Observe(session_manager::SessionManager::Get());
diff --git a/chrome/browser/ash/net/network_health/network_health_service.cc b/chrome/browser/ash/net/network_health/network_health_manager.cc
similarity index 77%
rename from chrome/browser/ash/net/network_health/network_health_service.cc
rename to chrome/browser/ash/net/network_health/network_health_manager.cc
index ae02247..16085843 100644
--- a/chrome/browser/ash/net/network_health/network_health_service.cc
+++ b/chrome/browser/ash/net/network_health/network_health_manager.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/browser/ash/net/network_health/network_health_service.h"
+#include "chrome/browser/ash/net/network_health/network_health_manager.h"
 
 #include "base/no_destructor.h"
 #include "chrome/browser/ash/net/network_diagnostics/network_diagnostics.h"
@@ -15,7 +15,7 @@
 // TODO(https://crbug.com/1164001): remove when migrated to namespace ash.
 namespace mojom = ::chromeos::network_health::mojom;
 
-NetworkHealthService::NetworkHealthService() {
+NetworkHealthManager::NetworkHealthManager() {
   network_health_ = std::make_unique<NetworkHealth>();
   network_diagnostics_ =
       std::make_unique<network_diagnostics::NetworkDiagnostics>(
@@ -23,7 +23,7 @@
 }
 
 mojo::PendingRemote<mojom::NetworkHealthService>
-NetworkHealthService::GetHealthRemoteAndBindReceiver() {
+NetworkHealthManager::GetHealthRemoteAndBindReceiver() {
   mojo::PendingRemote<mojom::NetworkHealthService> remote;
   BindHealthReceiver(remote.InitWithNewPipeAndPassReceiver());
   return remote;
@@ -31,7 +31,7 @@
 
 mojo::PendingRemote<
     chromeos::network_diagnostics::mojom::NetworkDiagnosticsRoutines>
-NetworkHealthService::GetDiagnosticsRemoteAndBindReceiver() {
+NetworkHealthManager::GetDiagnosticsRemoteAndBindReceiver() {
   mojo::PendingRemote<
       chromeos::network_diagnostics::mojom::NetworkDiagnosticsRoutines>
       remote;
@@ -39,25 +39,25 @@
   return remote;
 }
 
-void NetworkHealthService::BindHealthReceiver(
+void NetworkHealthManager::BindHealthReceiver(
     mojo::PendingReceiver<mojom::NetworkHealthService> receiver) {
   network_health_->BindReceiver(std::move(receiver));
 }
 
-void NetworkHealthService::BindDiagnosticsReceiver(
+void NetworkHealthManager::BindDiagnosticsReceiver(
     mojo::PendingReceiver<
         chromeos::network_diagnostics::mojom::NetworkDiagnosticsRoutines>
         receiver) {
   network_diagnostics_->BindReceiver(std::move(receiver));
 }
 
-void NetworkHealthService::AddObserver(
+void NetworkHealthManager::AddObserver(
     mojo::PendingRemote<mojom::NetworkEventsObserver> observer) {
   network_health_->AddObserver(std::move(observer));
 }
 
-NetworkHealthService* NetworkHealthService::GetInstance() {
-  static base::NoDestructor<NetworkHealthService> instance;
+NetworkHealthManager* NetworkHealthManager::GetInstance() {
+  static base::NoDestructor<NetworkHealthManager> instance;
   return instance.get();
 }
 
diff --git a/chrome/browser/ash/net/network_health/network_health_service.h b/chrome/browser/ash/net/network_health/network_health_manager.h
similarity index 74%
rename from chrome/browser/ash/net/network_health/network_health_service.h
rename to chrome/browser/ash/net/network_health/network_health_manager.h
index 3ac42081..8cf856a 100644
--- a/chrome/browser/ash/net/network_health/network_health_service.h
+++ b/chrome/browser/ash/net/network_health/network_health_manager.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_BROWSER_ASH_NET_NETWORK_HEALTH_NETWORK_HEALTH_SERVICE_H_
-#define CHROME_BROWSER_ASH_NET_NETWORK_HEALTH_NETWORK_HEALTH_SERVICE_H_
+#ifndef CHROME_BROWSER_ASH_NET_NETWORK_HEALTH_NETWORK_HEALTH_MANAGER_H_
+#define CHROME_BROWSER_ASH_NET_NETWORK_HEALTH_NETWORK_HEALTH_MANAGER_H_
 
 #include "chromeos/services/network_health/public/mojom/network_diagnostics.mojom.h"
 #include "chromeos/services/network_health/public/mojom/network_health.mojom.h"
@@ -19,12 +19,12 @@
 
 class NetworkHealth;
 
-class NetworkHealthService {
+class NetworkHealthManager {
  public:
-  static NetworkHealthService* GetInstance();
+  static NetworkHealthManager* GetInstance();
 
-  NetworkHealthService();
-  ~NetworkHealthService() = delete;
+  NetworkHealthManager();
+  ~NetworkHealthManager() = delete;
 
   mojo::PendingRemote<chromeos::network_health::mojom::NetworkHealthService>
   GetHealthRemoteAndBindReceiver();
@@ -52,11 +52,4 @@
 }  // namespace network_health
 }  // namespace ash
 
-// TODO(https://crbug.com/1164001): remove after the migration is finished.
-namespace chromeos {
-namespace network_health {
-using ::ash::network_health::NetworkHealthService;
-}
-}  // namespace chromeos
-
-#endif  // CHROME_BROWSER_ASH_NET_NETWORK_HEALTH_NETWORK_HEALTH_SERVICE_H_
+#endif  // CHROME_BROWSER_ASH_NET_NETWORK_HEALTH_NETWORK_HEALTH_MANAGER_H_
diff --git a/chrome/browser/ash/note_taking_helper_unittest.cc b/chrome/browser/ash/note_taking_helper_unittest.cc
index b3b034e..bb472ce 100644
--- a/chrome/browser/ash/note_taking_helper_unittest.cc
+++ b/chrome/browser/ash/note_taking_helper_unittest.cc
@@ -412,11 +412,10 @@
     ash::FakeChromeUserManager* fake_user_manager =
         static_cast<ash::FakeChromeUserManager*>(
             user_manager::UserManager::Get());
-    auto* user = fake_user_manager->AddUser(account_id);
+    fake_user_manager->AddUser(account_id);
     TestingProfile* profile = profile_manager()->CreateTestingProfile(
         kSecondProfileName, std::move(prefs), u"second-profile-username",
-        1 /*avatar_id*/, TestingProfile::TestingFactories());
-    ProfileHelper::Get()->SetUserToProfileMappingForTesting(user, profile);
+        /*avatar_id=*/1, TestingProfile::TestingFactories());
 
     InitExtensionService(profile);
     InitWebAppProvider(profile);
diff --git a/chrome/browser/ash/os_feedback/chrome_os_feedback_delegate.cc b/chrome/browser/ash/os_feedback/chrome_os_feedback_delegate.cc
index 8f636ee9..add318d 100644
--- a/chrome/browser/ash/os_feedback/chrome_os_feedback_delegate.cc
+++ b/chrome/browser/ash/os_feedback/chrome_os_feedback_delegate.cc
@@ -202,6 +202,10 @@
                           feedback_context->extra_diagnostics.value());
   }
   feedback_data->set_trace_id(report->feedback_context->trace_id);
+  feedback_data->set_from_assistant(feedback_context->from_assistant);
+  feedback_data->set_assistant_debug_info_allowed(
+      feedback_context->assistant_debug_info_allowed);
+
   if (feedback_context->category_tag.has_value()) {
     feedback_data->set_category_tag(feedback_context->category_tag.value());
   }
diff --git a/chrome/browser/ash/os_feedback/chrome_os_feedback_delegate_browsertest.cc b/chrome/browser/ash/os_feedback/chrome_os_feedback_delegate_browsertest.cc
index 2a2f887..b8d690a7 100644
--- a/chrome/browser/ash/os_feedback/chrome_os_feedback_delegate_browsertest.cc
+++ b/chrome/browser/ash/os_feedback/chrome_os_feedback_delegate_browsertest.cc
@@ -345,6 +345,8 @@
 // - category_tag is set to "BluetoothReportWithLogs".
 // - User is logged in with internal google account.
 // - Performance trace id is present.
+// - from_assistant flag is set true.
+// - Assistant debug info is allowed.
 IN_PROC_BROWSER_TEST_F(ChromeOsFeedbackDelegateTest,
                        FeedbackDataPopulatedIncludeSysLogsAndScreenshot) {
   ReportPtr report = Report::New();
@@ -358,6 +360,8 @@
   report->include_system_logs_and_histograms = true;
   report->feedback_context->is_internal_account = true;
   report->feedback_context->trace_id = kPerformanceTraceId;
+  report->feedback_context->from_assistant = true;
+  report->feedback_context->assistant_debug_info_allowed = true;
   const FeedbackParams expected_params{/*is_internal_email=*/true,
                                        /*load_system_info=*/true,
                                        /*send_tab_titles=*/false,
@@ -385,6 +389,8 @@
   // Verify category_tag is marked as BluetoothReportWithLogs in the report.
   EXPECT_EQ(kFeedbackCategoryTag, feedback_data->category_tag());
   EXPECT_EQ(kPerformanceTraceId, feedback_data->trace_id());
+  EXPECT_TRUE(feedback_data->from_assistant());
+  EXPECT_TRUE(feedback_data->assistant_debug_info_allowed());
 }
 
 // Test that feedback params and data are populated with correct data before
@@ -397,6 +403,8 @@
 // - category_tag is set to a fake value.
 // - User is logged in with internal google account.
 // - Performance trace id is present.
+// - from_assistant flag is set true.
+// - Assistant debug info is allowed.
 IN_PROC_BROWSER_TEST_F(
     ChromeOsFeedbackDelegateTest,
     FeedbackDataPopulatedIncludeSysLogsAndScreenshotAndFakeCategoryTag) {
@@ -411,6 +419,8 @@
   report->include_system_logs_and_histograms = true;
   report->feedback_context->is_internal_account = true;
   report->feedback_context->trace_id = kPerformanceTraceId;
+  report->feedback_context->from_assistant = true;
+  report->feedback_context->assistant_debug_info_allowed = true;
   const FeedbackParams expected_params{/*is_internal_email=*/true,
                                        /*load_system_info=*/true,
                                        /*send_tab_titles=*/false,
@@ -438,6 +448,8 @@
   // Verify category_tag is marked as a fake category tag in the report.
   EXPECT_EQ(kFakeCategoryTag, feedback_data->category_tag());
   EXPECT_EQ(kPerformanceTraceId, feedback_data->trace_id());
+  EXPECT_TRUE(feedback_data->from_assistant());
+  EXPECT_TRUE(feedback_data->assistant_debug_info_allowed());
 }
 
 // Test that feedback params and data are populated with correct data before
@@ -450,6 +462,8 @@
 // - Empty string Extra Diagnostics provided.
 // - User is not logged in with an internal google account.
 // - Performance trace id is absent (set to zero).
+// - from_assistant flag is set false.
+// - Assistant debug info is not allowed.
 IN_PROC_BROWSER_TEST_F(ChromeOsFeedbackDelegateTest,
                        FeedbackDataPopulatedNotIncludeSysLogsOrScreenshot) {
   ReportPtr report = Report::New();
@@ -464,6 +478,8 @@
   report->feedback_context->is_internal_account = false;
   report->include_system_logs_and_histograms = false;
   report->feedback_context->trace_id = 0;
+  report->feedback_context->from_assistant = false;
+  report->feedback_context->assistant_debug_info_allowed = false;
   const FeedbackParams expected_params{/*is_internal_email=*/false,
                                        /*load_system_info=*/false,
                                        /*send_tab_titles=*/false,
@@ -490,6 +506,8 @@
   // Verify category_tag is not marked as BluetoothReportWithLogs.
   EXPECT_NE(kFeedbackCategoryTag, feedback_data->category_tag());
   EXPECT_EQ(0, feedback_data->trace_id());
+  EXPECT_FALSE(feedback_data->from_assistant());
+  EXPECT_FALSE(feedback_data->assistant_debug_info_allowed());
 }
 
 // Test GetScreenshot returns correct data when there is a screenshot.
diff --git a/chrome/browser/ash/policy/reporting/metrics_reporting/network/https_latency_sampler.cc b/chrome/browser/ash/policy/reporting/metrics_reporting/network/https_latency_sampler.cc
index 0da61e8b..0890663 100644
--- a/chrome/browser/ash/policy/reporting/metrics_reporting/network/https_latency_sampler.cc
+++ b/chrome/browser/ash/policy/reporting/metrics_reporting/network/https_latency_sampler.cc
@@ -7,7 +7,7 @@
 #include <utility>
 
 #include "base/task/bind_post_task.h"
-#include "chrome/browser/ash/net/network_health/network_health_service.h"
+#include "chrome/browser/ash/net/network_health/network_health_manager.h"
 #include "chromeos/ash/components/network/network_state.h"
 #include "chromeos/ash/components/network/network_state_handler.h"
 #include "chromeos/ash/components/network/network_type_pattern.h"
@@ -90,7 +90,7 @@
     mojo::PendingReceiver<
         ::chromeos::network_diagnostics::mojom::NetworkDiagnosticsRoutines>
         receiver) {
-  chromeos::network_health::NetworkHealthService::GetInstance()
+  ash::network_health::NetworkHealthManager::GetInstance()
       ->BindDiagnosticsReceiver(std::move(receiver));
 }
 
diff --git a/chrome/browser/ash/profiles/profile_helper.h b/chrome/browser/ash/profiles/profile_helper.h
index 07232e18..acf5d79 100644
--- a/chrome/browser/ash/profiles/profile_helper.h
+++ b/chrome/browser/ash/profiles/profile_helper.h
@@ -148,14 +148,20 @@
   // Flushes all files of |profile|.
   virtual void FlushProfile(Profile* profile) = 0;
 
+  // DEPRECATED: please set up UserManager.
   // Associates |user| with profile with the same user_id,
   // for GetUserByProfile() testing.
   virtual void SetProfileToUserMappingForTesting(user_manager::User* user) = 0;
 
+  // DEPRECATED: please set up UserManager and create a Profile tied to a user
+  // by its path. You may be interested in to create a testing profile by
+  // TestingProfileManager.
   // Associates |profile| with |user|, for GetProfileByUser() testing.
   virtual void SetUserToProfileMappingForTesting(const user_manager::User* user,
                                                  Profile* profile) = 0;
 
+  // DEPRECATED: avoiding SetProfileToUserMappingForTesting will help
+  // to remove this function's invocations.
   // Removes |account_id| user from |user_to_profile_for_testing_| for testing.
   virtual void RemoveUserFromListForTesting(const AccountId& account_id) = 0;
 
diff --git a/chrome/browser/ash/system_logs/network_health_source.cc b/chrome/browser/ash/system_logs/network_health_source.cc
index dc9c8d2d..537e76e 100644
--- a/chrome/browser/ash/system_logs/network_health_source.cc
+++ b/chrome/browser/ash/system_logs/network_health_source.cc
@@ -10,7 +10,7 @@
 #include "base/bind.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_util.h"
-#include "chrome/browser/ash/net/network_health/network_health_service.h"
+#include "chrome/browser/ash/net/network_health/network_health_manager.h"
 #include "chromeos/ash/components/network/network_event_log.h"
 #include "content/public/browser/browser_thread.h"
 
@@ -174,9 +174,9 @@
 
 NetworkHealthSource::NetworkHealthSource(bool scrub)
     : SystemLogsSource("NetworkHealth"), scrub_(scrub) {
-  ash::network_health::NetworkHealthService::GetInstance()->BindHealthReceiver(
+  ash::network_health::NetworkHealthManager::GetInstance()->BindHealthReceiver(
       network_health_service_.BindNewPipeAndPassReceiver());
-  ash::network_health::NetworkHealthService::GetInstance()
+  ash::network_health::NetworkHealthManager::GetInstance()
       ->BindDiagnosticsReceiver(
           network_diagnostics_service_.BindNewPipeAndPassReceiver());
 }
diff --git a/chrome/browser/ash/system_logs/traffic_counters_log_source.cc b/chrome/browser/ash/system_logs/traffic_counters_log_source.cc
index a144fb4c..0fddd16 100644
--- a/chrome/browser/ash/system_logs/traffic_counters_log_source.cc
+++ b/chrome/browser/ash/system_logs/traffic_counters_log_source.cc
@@ -13,7 +13,7 @@
 #include "base/json/json_writer.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_util.h"
-#include "chrome/browser/ash/net/network_health/network_health_service.h"
+#include "chrome/browser/ash/net/network_health/network_health_manager.h"
 #include "chromeos/ash/components/network/network_event_log.h"
 #include "content/public/browser/browser_thread.h"
 
@@ -60,7 +60,7 @@
     : SystemLogsSource("TrafficCountersLog") {
   ash::GetNetworkConfigService(
       remote_cros_network_config_.BindNewPipeAndPassReceiver());
-  ash::network_health::NetworkHealthService::GetInstance()->BindHealthReceiver(
+  ash::network_health::NetworkHealthManager::GetInstance()->BindHealthReceiver(
       network_health_service_.BindNewPipeAndPassReceiver());
 }
 
diff --git a/chrome/browser/banners/app_banner_manager_browsertest.cc b/chrome/browser/banners/app_banner_manager_browsertest.cc
index 345abbc..790404b 100644
--- a/chrome/browser/banners/app_banner_manager_browsertest.cc
+++ b/chrome/browser/banners/app_banner_manager_browsertest.cc
@@ -31,6 +31,7 @@
 #include "components/webapps/browser/banners/app_banner_metrics.h"
 #include "components/webapps/browser/banners/app_banner_settings_helper.h"
 #include "components/webapps/browser/features.h"
+#include "components/webapps/browser/installable/installable_data.h"
 #include "components/webapps/browser/installable/installable_logging.h"
 #include "components/webapps/browser/installable/installable_manager.h"
 #include "components/webapps/browser/installable/installable_metrics.h"
@@ -921,7 +922,7 @@
   service->ResetBaseScoreForURL(test_url, 10);
 
   blink::mojom::Manifest manifest;
-  std::vector<SkBitmap> screenshots;
+  std::vector<Screenshot> screenshots;
   installable_manager_->FailNext(base::WrapUnique(
       new InstallableData({MANIFEST_URL_CHANGED}, GURL::EmptyGURL(), manifest,
                           GURL::EmptyGURL(), nullptr, false, GURL::EmptyGURL(),
diff --git a/chrome/browser/browser_process_platform_part_chromeos_browsertest.cc b/chrome/browser/browser_process_platform_part_chromeos_browsertest.cc
index a5df194..9da6f54 100644
--- a/chrome/browser/browser_process_platform_part_chromeos_browsertest.cc
+++ b/chrome/browser/browser_process_platform_part_chromeos_browsertest.cc
@@ -370,9 +370,9 @@
     // trigger a restore or open another window with startup URLs.
     chrome::NewEmptyWindow(profile_urls);
     ASSERT_EQ(2u, chrome::GetBrowserCount(profile_urls));
-    auto* new_browser = chrome::FindLastActiveWithProfile(profile_urls);
-    EXPECT_NO_FATAL_FAILURE(WaitForLoadStopForBrowser(new_browser));
-    tab_strip_model = new_browser->tab_strip_model();
+    auto* last_active_browser = chrome::FindLastActiveWithProfile(profile_urls);
+    EXPECT_NO_FATAL_FAILURE(WaitForLoadStopForBrowser(last_active_browser));
+    tab_strip_model = last_active_browser->tab_strip_model();
     EXPECT_EQ(1, tab_strip_model->GetTabCount());
     EXPECT_EQ(GURL(chrome::kChromeUINewTabURL),
               tab_strip_model->GetWebContentsAt(0)->GetVisibleURL());
@@ -422,10 +422,10 @@
     // trigger a restore or open another window with last URLs.
     chrome::NewEmptyWindow(profile_last_and_urls);
     ASSERT_EQ(3u, chrome::GetBrowserCount(profile_last_and_urls));
-    auto* new_browser =
+    auto* last_active_browser =
         chrome::FindLastActiveWithProfile(profile_last_and_urls);
-    EXPECT_NO_FATAL_FAILURE(WaitForLoadStopForBrowser(new_browser));
-    tab_strip_model = new_browser->tab_strip_model();
+    EXPECT_NO_FATAL_FAILURE(WaitForLoadStopForBrowser(last_active_browser));
+    tab_strip_model = last_active_browser->tab_strip_model();
     EXPECT_EQ(1, tab_strip_model->GetTabCount());
     EXPECT_EQ(GURL(chrome::kChromeUINewTabURL),
               tab_strip_model->GetWebContentsAt(0)->GetVisibleURL());
diff --git a/chrome/browser/chrome_browser_interface_binders.cc b/chrome/browser/chrome_browser_interface_binders.cc
index 6f469fa1..f456683 100644
--- a/chrome/browser/chrome_browser_interface_binders.cc
+++ b/chrome/browser/chrome_browser_interface_binders.cc
@@ -1230,12 +1230,10 @@
       launcher_internals::mojom::PageHandlerFactory,
       chromeos::LauncherInternalsUI>(map);
 
-  if (ash::features::IsBluetoothRevampEnabled()) {
-    RegisterWebUIControllerInterfaceBinder<
-        ash::bluetooth_config::mojom::CrosBluetoothConfig,
-        chromeos::BluetoothPairingDialogUI, chromeos::settings::OSSettingsUI>(
-        map);
-  }
+  RegisterWebUIControllerInterfaceBinder<
+      ash::bluetooth_config::mojom::CrosBluetoothConfig,
+      chromeos::BluetoothPairingDialogUI, chromeos::settings::OSSettingsUI>(
+      map);
 
   if (ash::features::IsAudioSettingsPageEnabled()) {
     RegisterWebUIControllerInterfaceBinder<
diff --git a/chrome/browser/chromeos/extensions/login_screen/login/login_api_ash_unittest.cc b/chrome/browser/chromeos/extensions/login_screen/login/login_api_ash_unittest.cc
index 7743e83..fc7d058 100644
--- a/chrome/browser/chromeos/extensions/login_screen/login/login_api_ash_unittest.cc
+++ b/chrome/browser/chromeos/extensions/login_screen/login/login_api_ash_unittest.cc
@@ -188,11 +188,9 @@
 
   std::unique_ptr<ScopedTestingProfile> AddPublicAccountUser(
       const std::string& email) {
-    AccountId account_id = AccountId::FromUserEmail(email);
-    user_manager::User* user =
-        fake_chrome_user_manager_->AddPublicAccountUser(account_id);
+    fake_chrome_user_manager_->AddPublicAccountUser(
+        AccountId::FromUserEmail(email));
     TestingProfile* profile = profile_manager()->CreateTestingProfile(email);
-    ash::ProfileHelper::Get()->SetUserToProfileMappingForTesting(user, profile);
 
     return std::make_unique<ScopedTestingProfile>(profile, profile_manager());
   }
@@ -566,12 +564,10 @@
  protected:
   std::unique_ptr<ScopedTestingProfile> AddRegularUser(
       const std::string& email) {
-    AccountId account_id = AccountId::FromUserEmailGaiaId(email, kGaiaId);
-    user_manager::User* user =
-        fake_chrome_user_manager_->AddUserWithAffiliation(
-            account_id, /* is_affiliated= */ true);
+    fake_chrome_user_manager_->AddUserWithAffiliation(
+        AccountId::FromUserEmailGaiaId(email, kGaiaId),
+        /* is_affiliated= */ true);
     TestingProfile* profile = profile_manager()->CreateTestingProfile(email);
-    ash::ProfileHelper::Get()->SetUserToProfileMappingForTesting(user, profile);
 
     return std::make_unique<ScopedTestingProfile>(profile, profile_manager());
   }
diff --git a/chrome/browser/download/download_query_unittest.cc b/chrome/browser/download/download_query_unittest.cc
index 635ae3d..c005192 100644
--- a/chrome/browser/download/download_query_unittest.cc
+++ b/chrome/browser/download/download_query_unittest.cc
@@ -10,6 +10,7 @@
 #include <limits>
 #include <memory>
 #include <string>
+#include <utility>
 
 #include "base/bind.h"
 #include "base/check.h"
@@ -22,24 +23,23 @@
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
+using base::Time;
+using download::DownloadItem;
+using ::testing::_;
 using ::testing::Return;
 using ::testing::ReturnRef;
-using ::testing::_;
-using base::Time;
-using base::Value;
-using download::DownloadItem;
-typedef DownloadQuery::DownloadVector DownloadVector;
+using DownloadVector = DownloadQuery::DownloadVector;
 
 namespace {
 
-static const int kSomeKnownTime = 1355864160;
-static const char kSomeKnownTime8601[] = "2012-12-18T20:56:0";
-static const char k8601Suffix[] = ".000Z";
+constexpr int kSomeKnownTime = 1355864160;
+constexpr char kSomeKnownTime8601[] = "2012-12-18T20:56:0";
+constexpr char k8601Suffix[] = ".000Z";
 
-static const int64_t kEightGB = 1LL << 33;
-static const int64_t kSixteenGB = 1LL << 34;
-static const double kEightGBDouble = 8.0 * (1LL << 30);
-static const double kNineGBDouble = 9.0 * (1LL << 30);
+constexpr int64_t kEightGB = 1LL << 33;
+constexpr int64_t kSixteenGB = 1LL << 34;
+constexpr double kEightGBDouble = 8.0 * (1LL << 30);
+constexpr double kNineGBDouble = 9.0 * (1LL << 30);
 
 bool IdNotEqual(uint32_t not_id, const DownloadItem& item) {
   return item.GetId() != not_id;
@@ -49,7 +49,7 @@
   return result;
 }
 
-}  // anonymous namespace
+}  // namespace
 
 class DownloadQueryTest : public testing::Test {
  public:
@@ -116,15 +116,13 @@
 
 template<> void DownloadQueryTest::AddFilter(
     DownloadQuery::FilterType name, bool cpp_value) {
-  std::unique_ptr<base::Value> value(new base::Value(cpp_value));
-  CHECK(query_.AddFilter(name, *value.get()));
+  CHECK(query_.AddFilter(name, base::Value(cpp_value)));
 }
 
 template <>
 void DownloadQueryTest::AddFilter(DownloadQuery::FilterType name,
                                   double cpp_value) {
-  std::unique_ptr<base::Value> value(new base::Value(cpp_value));
-  CHECK(query_.AddFilter(name, *value.get()));
+  CHECK(query_.AddFilter(name, base::Value(cpp_value)));
 }
 
 template<> void DownloadQueryTest::AddFilter(
@@ -146,22 +144,18 @@
 template <>
 void DownloadQueryTest::AddFilter(DownloadQuery::FilterType name,
                                   std::vector<std::u16string> cpp_value) {
-  std::unique_ptr<base::ListValue> list(new base::ListValue());
-  for (std::vector<std::u16string>::const_iterator it = cpp_value.begin();
-       it != cpp_value.end(); ++it) {
-    list->Append(*it);
-  }
-  CHECK(query_.AddFilter(name, *list.get()));
+  base::Value::List list;
+  for (const auto& value : cpp_value)
+    list.Append(value);
+  CHECK(query_.AddFilter(name, base::Value(std::move(list))));
 }
 
 template<> void DownloadQueryTest::AddFilter(
     DownloadQuery::FilterType name, std::vector<std::string> cpp_value) {
-  std::unique_ptr<base::ListValue> list(new base::ListValue());
-  for (std::vector<std::string>::const_iterator it = cpp_value.begin();
-       it != cpp_value.end(); ++it) {
-    list->Append(*it);
-  }
-  CHECK(query_.AddFilter(name, *list.get()));
+  base::Value::List list;
+  for (const auto& value : cpp_value)
+    list.Append(std::move(value));
+  CHECK(query_.AddFilter(name, base::Value(std::move(list))));
 }
 
 TEST_F(DownloadQueryTest, DownloadQueryTest_ZeroItems) {
@@ -170,10 +164,10 @@
 }
 
 TEST_F(DownloadQueryTest, DownloadQueryTest_InvalidFilter) {
-  std::unique_ptr<base::Value> value(new base::Value(0));
+  base::Value value(0);
   EXPECT_FALSE(query()->AddFilter(static_cast<DownloadQuery::FilterType>(
                                       std::numeric_limits<int32_t>::max()),
-                                  *value.get()));
+                                  value));
 }
 
 TEST_F(DownloadQueryTest, DownloadQueryTest_EmptyQuery) {
diff --git a/chrome/browser/download/internal/android/java/src/org/chromium/chrome/browser/download/interstitial/DownloadInterstitialMediator.java b/chrome/browser/download/internal/android/java/src/org/chromium/chrome/browser/download/interstitial/DownloadInterstitialMediator.java
index 153913d..4220613f8 100644
--- a/chrome/browser/download/internal/android/java/src/org/chromium/chrome/browser/download/interstitial/DownloadInterstitialMediator.java
+++ b/chrome/browser/download/internal/android/java/src/org/chromium/chrome/browser/download/interstitial/DownloadInterstitialMediator.java
@@ -20,10 +20,13 @@
 import android.content.Intent;
 import android.text.TextUtils;
 
+import androidx.annotation.IntDef;
+import androidx.annotation.VisibleForTesting;
 import androidx.core.util.Pair;
 
 import org.chromium.base.CollectionUtil;
 import org.chromium.base.Log;
+import org.chromium.base.metrics.RecordHistogram;
 import org.chromium.base.supplier.Supplier;
 import org.chromium.chrome.browser.download.home.list.ListProperties;
 import org.chromium.chrome.browser.download.home.list.ShareUtils;
@@ -32,6 +35,7 @@
 import org.chromium.chrome.browser.download.interstitial.DownloadInterstitialProperties.State;
 import org.chromium.chrome.browser.ui.messages.snackbar.Snackbar;
 import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
+import org.chromium.components.browser_ui.share.ShareHelper;
 import org.chromium.components.offline_items_collection.ContentId;
 import org.chromium.components.offline_items_collection.LaunchLocation;
 import org.chromium.components.offline_items_collection.OfflineContentProvider;
@@ -46,6 +50,8 @@
 import org.chromium.ui.modaldialog.SimpleModalDialogController;
 import org.chromium.ui.modelutil.PropertyModel;
 
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
@@ -101,6 +107,7 @@
 
         mObserver = getOfflineContentProviderObserver();
         mProvider.addObserver(mObserver);
+        UmaHelper.logUIAction(UmaHelper.Action.INITIATED);
     }
 
     void setModalDialogManager(ModalDialogManager modalDialogManager) {
@@ -139,6 +146,7 @@
                         SECONDARY_BUTTON_TEXT, mContextSupplier.get().getString(R.string.delete));
                 mModel.set(SECONDARY_BUTTON_CALLBACK, mModel.get(ListProperties.CALLBACK_REMOVE));
                 mModel.set(SECONDARY_BUTTON_IS_VISIBLE, true);
+                UmaHelper.logUIAction(UmaHelper.Action.COMPLETED);
                 break;
             case State.CANCELLED:
                 mModel.set(TITLE_TEXT, mContextSupplier.get().getString(R.string.menu_download));
@@ -166,25 +174,30 @@
     private void onOpenItem(OfflineItem item) {
         OpenParams openParams = new OpenParams(LaunchLocation.DOWNLOAD_INTERSTITIAL);
         mProvider.openItem(openParams, mModel.get(DOWNLOAD_ITEM).id);
+        UmaHelper.logUIAction(UmaHelper.Action.OPENED);
     }
 
     private void onPauseItem(OfflineItem item) {
         mProvider.pauseDownload(mModel.get(DOWNLOAD_ITEM).id);
+        UmaHelper.logUIAction(UmaHelper.Action.PAUSED);
     }
 
     private void onResumeItem(OfflineItem item) {
         if (mModel.get(STATE) == State.PAUSED) {
             mProvider.resumeDownload(mModel.get(DOWNLOAD_ITEM).id, true /* hasUserGesture */);
+            UmaHelper.logUIAction(UmaHelper.Action.RESUMED);
         } else {
             mModel.set(STATE, State.PENDING);
             mModel.get(DownloadInterstitialProperties.RELOAD_TAB).run();
             mModel.set(DOWNLOAD_ITEM, null);
+            UmaHelper.logUIAction(UmaHelper.Action.REINITIATED);
         }
     }
 
     private void onCancelItem(OfflineItem item) {
         setState(State.CANCELLED);
         mProvider.cancelDownload(mModel.get(DOWNLOAD_ITEM).id);
+        UmaHelper.logUIAction(UmaHelper.Action.CANCELLED);
     }
 
     private void onDeleteItem(OfflineItem item) {
@@ -194,6 +207,7 @@
                         showDeletedSnackbar();
                         setState(State.CANCELLED);
                         mProvider.removeItem(mModel.get(DOWNLOAD_ITEM).id);
+                        UmaHelper.logUIAction(UmaHelper.Action.DELETED);
                     }
                 });
         PropertyModel properties =
@@ -231,6 +245,9 @@
     }
 
     private void shareItemsInternal(Collection<OfflineItem> items) {
+        ShareHelper.recordShareSource(ShareHelper.ShareSourceAndroid.ANDROID_SHARE_SHEET);
+        UmaHelper.logUIAction(UmaHelper.Action.SHARED);
+
         final Collection<Pair<OfflineItem, OfflineItemShareInfo>> shareInfo = new ArrayList<>();
         for (OfflineItem item : items) {
             mProvider.getShareInfoForItem(item.id, (id, info) -> {
@@ -260,6 +277,7 @@
         RenameDialogManager mRenameDialogManager =
                 new RenameDialogManager(mContextSupplier.get(), mModalDialogManager);
         mRenameDialogManager.startRename(name, callback);
+        UmaHelper.logUIAction(UmaHelper.Action.RENAMED);
     }
 
     private OfflineContentProvider.Observer getOfflineContentProviderObserver() {
@@ -302,4 +320,38 @@
             }
         };
     }
+
+    @VisibleForTesting
+    static class UmaHelper {
+        /**
+         * Used for logging UMA metrics about what actions the user is taking within the
+         * download interstitial.
+         *
+         * Must stay up to date with DownloadInterstitialUIAction in
+         * tools/metrics/histograms/enums.xml
+         */
+        // TODO(crbug.com/1300585) Remove NUM_ENTRIES from the IntDef.
+        @IntDef({Action.INITIATED, Action.COMPLETED, Action.CANCELLED, Action.PAUSED,
+                Action.RESUMED, Action.OPENED, Action.DELETED, Action.REINITIATED, Action.SHARED,
+                Action.RENAMED, Action.NUM_ENTRIES})
+        @Retention(RetentionPolicy.SOURCE)
+        @interface Action {
+            int INITIATED = 0; // Logged when the download interstitial is opened.
+            int COMPLETED = 1; // Logged when the download completes successfully.
+            int CANCELLED = 2; // Logged when the download is cancelled.
+            int PAUSED = 3; // Logged when the download is paused.
+            int RESUMED = 4; // Logged when the download is resumed after being paused.
+            int OPENED = 5; // Logged when the download is opened.
+            int DELETED = 6; // Logged when the download is deleted.
+            int REINITIATED = 7; // Logged when the download is re-downloaded after cancel/delete.
+            int SHARED = 8; // Logged when the download is shared.
+            int RENAMED = 9; // Logged when the download is renamed.
+            int NUM_ENTRIES = 10;
+        }
+
+        public static void logUIAction(@Action int action) {
+            RecordHistogram.recordEnumeratedHistogram(
+                    "Download.Interstitial.UIAction", action, Action.NUM_ENTRIES);
+        }
+    }
 }
diff --git a/chrome/browser/download/internal/android/java/src/org/chromium/chrome/browser/download/interstitial/DownloadInterstitialMediatorTest.java b/chrome/browser/download/internal/android/java/src/org/chromium/chrome/browser/download/interstitial/DownloadInterstitialMediatorTest.java
index ff31627..9b08f77 100644
--- a/chrome/browser/download/internal/android/java/src/org/chromium/chrome/browser/download/interstitial/DownloadInterstitialMediatorTest.java
+++ b/chrome/browser/download/internal/android/java/src/org/chromium/chrome/browser/download/interstitial/DownloadInterstitialMediatorTest.java
@@ -11,6 +11,16 @@
 import static org.mockito.ArgumentMatchers.isA;
 import static org.mockito.Mockito.doAnswer;
 
+import static org.chromium.chrome.browser.download.interstitial.DownloadInterstitialMediator.UmaHelper.Action.CANCELLED;
+import static org.chromium.chrome.browser.download.interstitial.DownloadInterstitialMediator.UmaHelper.Action.COMPLETED;
+import static org.chromium.chrome.browser.download.interstitial.DownloadInterstitialMediator.UmaHelper.Action.DELETED;
+import static org.chromium.chrome.browser.download.interstitial.DownloadInterstitialMediator.UmaHelper.Action.INITIATED;
+import static org.chromium.chrome.browser.download.interstitial.DownloadInterstitialMediator.UmaHelper.Action.OPENED;
+import static org.chromium.chrome.browser.download.interstitial.DownloadInterstitialMediator.UmaHelper.Action.PAUSED;
+import static org.chromium.chrome.browser.download.interstitial.DownloadInterstitialMediator.UmaHelper.Action.REINITIATED;
+import static org.chromium.chrome.browser.download.interstitial.DownloadInterstitialMediator.UmaHelper.Action.RENAMED;
+import static org.chromium.chrome.browser.download.interstitial.DownloadInterstitialMediator.UmaHelper.Action.RESUMED;
+import static org.chromium.chrome.browser.download.interstitial.DownloadInterstitialMediator.UmaHelper.Action.SHARED;
 import static org.chromium.chrome.browser.download.interstitial.DownloadInterstitialProperties.DOWNLOAD_ITEM;
 import static org.chromium.chrome.browser.download.interstitial.DownloadInterstitialProperties.STATE;
 
@@ -25,6 +35,7 @@
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
+import org.chromium.base.metrics.RecordHistogram;
 import org.chromium.base.test.util.Feature;
 import org.chromium.chrome.browser.download.home.StubbedOfflineContentProvider;
 import org.chromium.chrome.browser.download.home.list.ListProperties;
@@ -40,6 +51,9 @@
 import org.chromium.ui.test.util.modaldialog.FakeModalDialogManager;
 import org.chromium.url.JUnitTestGURLs;
 
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * Unit tests for the {@link DownloadInterstitialMediator}. Modifies the page state through the
  * {@link PropertyModel} and observes changes to the mediator/model.
@@ -58,6 +72,7 @@
     private final TestOfflineContentProvider mProvider = new TestOfflineContentProvider();
     private FakeModalDialogManager mModalDialogManager;
     private DownloadInterstitialMediator mMediator;
+    private UmaTestingHelper mUmaTestingHelper = new UmaTestingHelper();
     private PropertyModel mModel;
     private OfflineItem mItem0;
 
@@ -71,6 +86,7 @@
                 .when(mSnackbarManager)
                 .showSnackbar(isA(Snackbar.class));
         mModalDialogManager = new FakeModalDialogManager(ModalDialogType.APP);
+        mUmaTestingHelper.initialise();
         mItem0 = createOfflineItem("item0");
         mModel = new PropertyModel.Builder(DownloadInterstitialProperties.ALL_KEYS).build();
         // Set the initial button texts. This is usually done in DownloadInterstitialView.
@@ -90,6 +106,7 @@
     @Feature({"NewDownloadTab"})
     public void testItemIsAttached() {
         assertEquals(mItem0, mModel.get(DOWNLOAD_ITEM));
+        mUmaTestingHelper.assertActionWasLogged(INITIATED, 1);
     }
 
     @Test
@@ -101,6 +118,7 @@
         mProvider.addItem(item1);
         mProvider.incrementProgress(item1.id);
         assertEquals(mItem0, mModel.get(DOWNLOAD_ITEM));
+        mUmaTestingHelper.assertActionWasLogged(INITIATED, 1);
     }
 
     @Test
@@ -118,6 +136,7 @@
         mProvider.addItem(item1);
         mProvider.incrementProgress(item1.id);
         assertEquals(item1.id.id, mModel.get(DOWNLOAD_ITEM).id.id);
+        mUmaTestingHelper.assertActionWasLogged(INITIATED, 2);
     }
 
     @Test
@@ -129,6 +148,7 @@
 
         assertEquals(DownloadInterstitialProperties.State.CANCELLED, mModel.get(STATE));
         assertNotEquals(OfflineItemState.IN_PROGRESS, mModel.get(DOWNLOAD_ITEM).state);
+        mUmaTestingHelper.assertActionWasLogged(CANCELLED, 1);
     }
 
     @Test
@@ -145,6 +165,8 @@
 
         assertEquals(DownloadInterstitialProperties.State.IN_PROGRESS, mModel.get(STATE));
         assertEquals(OfflineItemState.IN_PROGRESS, mModel.get(DOWNLOAD_ITEM).state);
+        mUmaTestingHelper.assertActionWasLogged(CANCELLED, 1);
+        mUmaTestingHelper.assertActionWasLogged(REINITIATED, 1);
     }
 
     @Test
@@ -156,6 +178,7 @@
 
         assertEquals(DownloadInterstitialProperties.State.PAUSED, mModel.get(STATE));
         assertEquals(OfflineItemState.PAUSED, mModel.get(DOWNLOAD_ITEM).state);
+        mUmaTestingHelper.assertActionWasLogged(PAUSED, 1);
     }
 
     @Test
@@ -163,11 +186,13 @@
     @Feature({"NewDownloadTab"})
     public void testInProgressResumeDownload() {
         assertEquals(OfflineItemState.IN_PROGRESS, mModel.get(DOWNLOAD_ITEM).state);
-        mModel.get(ListProperties.CALLBACK_PAUSE).bind(mModel.get(DOWNLOAD_ITEM));
+        mModel.get(ListProperties.CALLBACK_PAUSE).onResult(mModel.get(DOWNLOAD_ITEM));
         clickButtonWithText(RESUME_BUTTON_TEXT);
 
         assertEquals(DownloadInterstitialProperties.State.IN_PROGRESS, mModel.get(STATE));
         assertEquals(OfflineItemState.IN_PROGRESS, mModel.get(DOWNLOAD_ITEM).state);
+        mUmaTestingHelper.assertActionWasLogged(PAUSED, 1);
+        mUmaTestingHelper.assertActionWasLogged(RESUMED, 1);
     }
 
     @Test
@@ -178,6 +203,8 @@
         clickButtonWithText(CANCEL_BUTTON_TEXT);
 
         assertFalse(mProvider.getItems().contains(mModel.get(DOWNLOAD_ITEM)));
+        mUmaTestingHelper.assertActionWasLogged(CANCELLED, 1);
+        mUmaTestingHelper.assertActionWasLogged(DELETED, 0);
     }
 
     @Test
@@ -189,6 +216,7 @@
         clickButtonWithText(OPEN_BUTTON_TEXT);
 
         assertEquals(mModel.get(DOWNLOAD_ITEM).id, mProvider.mLastOpenedDownload);
+        mUmaTestingHelper.assertActionWasLogged(OPENED, 1);
     }
 
     @Test
@@ -202,6 +230,8 @@
 
         assertTrue(mSnackbarShown);
         assertEquals(DownloadInterstitialProperties.State.CANCELLED, mModel.get(STATE));
+        mUmaTestingHelper.assertActionWasLogged(COMPLETED, 1);
+        mUmaTestingHelper.assertActionWasLogged(DELETED, 1);
     }
 
     @Test
@@ -214,6 +244,8 @@
         mModalDialogManager.clickNegativeButton();
 
         assertEquals(DownloadInterstitialProperties.State.SUCCESSFUL, mModel.get(STATE));
+        mUmaTestingHelper.assertActionWasLogged(COMPLETED, 1);
+        mUmaTestingHelper.assertActionWasLogged(DELETED, 0);
     }
 
     @Test
@@ -233,6 +265,9 @@
 
         assertEquals(1, mProvider.getItems().size());
         assertTrue(mProvider.getItems().contains(mModel.get(DOWNLOAD_ITEM)));
+        mUmaTestingHelper.assertActionWasLogged(COMPLETED, 1);
+        mUmaTestingHelper.assertActionWasLogged(DELETED, 1);
+        mUmaTestingHelper.assertActionWasLogged(REINITIATED, 1);
     }
 
     @Test
@@ -247,6 +282,15 @@
         assertFalse(mProvider.getItems().contains(mModel.get(DOWNLOAD_ITEM)));
     }
 
+    @Test
+    @SmallTest
+    @Feature({"NewDownloadTab"})
+    public void testSharingLogsMetrics() {
+        mProvider.completeDownload(mModel.get(DOWNLOAD_ITEM).id);
+        mModel.get(ListProperties.CALLBACK_SHARE).onResult(mModel.get(DOWNLOAD_ITEM));
+        mUmaTestingHelper.assertActionWasLogged(SHARED, 1);
+    }
+
     private void clickButtonWithText(String text) {
         if (mModel.get(DownloadInterstitialProperties.PRIMARY_BUTTON_TEXT).equals(text)) {
             mModel.get(DownloadInterstitialProperties.PRIMARY_BUTTON_CALLBACK)
@@ -275,6 +319,61 @@
     }
 
     /**
+     * Helper class which provides utility methods for retrieving the number of logged UMA metrics
+     * for different UI actions. The live number of logs can be compared with the initial number of
+     * logs to test how many metrics of each type were logged during the test.
+     */
+    private static class UmaTestingHelper {
+        private Map<Integer, Integer> mValues;
+
+        UmaTestingHelper() {
+            mValues = new HashMap<Integer, Integer>();
+        }
+
+        /**
+         * Captures the number of each metric logged at a given moment.
+         * Should be called during test setup.
+         */
+        void initialise() {
+            mValues.put(INITIATED, getValueCount(INITIATED));
+            mValues.put(COMPLETED, getValueCount(COMPLETED));
+            mValues.put(CANCELLED, getValueCount(CANCELLED));
+            mValues.put(PAUSED, getValueCount(PAUSED));
+            mValues.put(RESUMED, getValueCount(RESUMED));
+            mValues.put(OPENED, getValueCount(OPENED));
+            mValues.put(DELETED, getValueCount(DELETED));
+            mValues.put(REINITIATED, getValueCount(REINITIATED));
+            mValues.put(SHARED, getValueCount(SHARED));
+            mValues.put(RENAMED, getValueCount(RENAMED));
+        }
+
+        /**
+         * Asserts that an action was logged a certain number of times.
+         * @param action The action that is being queried.
+         * @param numberOfTimes The expected number of times the action has been logged.
+         */
+        void assertActionWasLogged(
+                @DownloadInterstitialMediator.UmaHelper.Action int action, int numberOfTimes) {
+            assertEquals(numberOfTimes, getValueCount(action) - getInitialValueCount(action));
+        }
+
+        /**
+         * Returns the log count as of when {@link UmaTestingHelper#initialise()} was called for a
+         * given action.
+         */
+        private int getInitialValueCount(
+                @DownloadInterstitialMediator.UmaHelper.Action int action) {
+            return mValues.get(action);
+        }
+
+        /** Returns the live log count for a given action */
+        private int getValueCount(@DownloadInterstitialMediator.UmaHelper.Action int action) {
+            return RecordHistogram.getHistogramValueCountForTesting(
+                    "Download.Interstitial.UIAction", action);
+        }
+    }
+
+    /**
      * Extends {@link StubbedOfflineContentProvider} to add some logic to some of the no-op methods
      * for testing.
      */
diff --git a/chrome/browser/enterprise/connectors/analysis/content_analysis_delegate.cc b/chrome/browser/enterprise/connectors/analysis/content_analysis_delegate.cc
index 45aba490..41a2e97 100644
--- a/chrome/browser/enterprise/connectors/analysis/content_analysis_delegate.cc
+++ b/chrome/browser/enterprise/connectors/analysis/content_analysis_delegate.cc
@@ -18,6 +18,7 @@
 #include "base/memory/weak_ptr.h"
 #include "base/metrics/histogram_functions.h"
 #include "base/no_destructor.h"
+#include "base/rand_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/time/time.h"
@@ -354,6 +355,9 @@
   profile_ = Profile::FromBrowserContext(web_contents->GetBrowserContext());
   url_ = web_contents->GetLastCommittedURL();
   title_ = base::UTF16ToUTF8(web_contents->GetTitle());
+  std::string user_action_token = base::RandBytesAsString(128);
+  user_action_id_ =
+      base::HexEncode(user_action_token.data(), user_action_token.size());
   result_.text_results.resize(data_.text.size(), false);
   result_.paths_results.resize(data_.paths.size(), false);
   result_.page_result = false;
@@ -493,7 +497,7 @@
     // MultiFileRequestHandler is owned by this class.
     files_request_handler_ = FilesRequestHandler::Create(
         GetBinaryUploadService(), profile_, data_.settings, url_, "", "",
-        access_point_, data_.paths,
+        user_action_id_, access_point_, data_.paths,
         base::BindOnce(&ContentAnalysisDelegate::FilesRequestCallback,
                        GetWeakPtr()));
     files_request_complete_ = !files_request_handler_->UploadData();
@@ -558,6 +562,9 @@
   }
 }
 
+// This method only prepares requests for print and paste events. File events
+// are handled by
+// chrome/browser/enterprise/connectors/analysis/files_request_handler.h
 void ContentAnalysisDelegate::PrepareRequest(
     enterprise_connectors::AnalysisConnector connector,
     BinaryUploadService::Request* request) {
@@ -566,9 +573,15 @@
         data_.settings.cloud_or_local_settings.dm_token());
   }
 
-  // Include tab page title in local content analysis requests.
+  // Include tab page title, user action id, and count of requests per user
+  // action in local content analysis requests.
   if (data_.settings.cloud_or_local_settings.is_local_analysis()) {
     request->set_tab_title(title_);
+    request->set_user_action_id(user_action_id_);
+    // Set request count to 1 for print/paste event. Request count for file
+    // events are set in
+    // chrome/browser/enterprise/connectors/analysis/request_handler_base.cc
+    request->set_user_action_requests_count(1);
   }
 
   request->set_analysis_connector(connector);
diff --git a/chrome/browser/enterprise/connectors/analysis/content_analysis_delegate.h b/chrome/browser/enterprise/connectors/analysis/content_analysis_delegate.h
index b169c790..6839ed7b 100644
--- a/chrome/browser/enterprise/connectors/analysis/content_analysis_delegate.h
+++ b/chrome/browser/enterprise/connectors/analysis/content_analysis_delegate.h
@@ -293,6 +293,9 @@
   // The title corresponding to the WebContents triggering the scan.
   std::string title_;
 
+  // The unique ID for keeping track of each user action.
+  std::string user_action_id_;
+
   // Description of the data being scanned and the results of the scan.
   Data data_;
   Result result_;
diff --git a/chrome/browser/enterprise/connectors/analysis/fake_files_request_handler.cc b/chrome/browser/enterprise/connectors/analysis/fake_files_request_handler.cc
index 91cf225..455818f5 100644
--- a/chrome/browser/enterprise/connectors/analysis/fake_files_request_handler.cc
+++ b/chrome/browser/enterprise/connectors/analysis/fake_files_request_handler.cc
@@ -16,6 +16,7 @@
     GURL url,
     const std::string& source,
     const std::string& destination,
+    const std::string& user_action_id,
     safe_browsing::DeepScanAccessPoint access_point,
     const std::vector<base::FilePath>& paths,
     CompletionCallback callback)
@@ -25,6 +26,7 @@
                                                  url,
                                                  source,
                                                  destination,
+                                                 user_action_id,
                                                  access_point,
                                                  paths,
                                                  std::move(callback)),
@@ -42,12 +44,14 @@
     GURL url,
     const std::string& source,
     const std::string& destination,
+    const std::string& user_action_id,
     safe_browsing::DeepScanAccessPoint access_point,
     const std::vector<base::FilePath>& paths,
     enterprise_connectors::FilesRequestHandler::CompletionCallback callback) {
   return std::make_unique<FakeFilesRequestHandler>(
       fake_file_upload_callback, upload_service, profile, analysis_settings,
-      url, source, destination, access_point, paths, std::move(callback));
+      url, source, destination, user_action_id, access_point, paths,
+      std::move(callback));
 }
 
 void FakeFilesRequestHandler::UploadFileForDeepScanning(
diff --git a/chrome/browser/enterprise/connectors/analysis/fake_files_request_handler.h b/chrome/browser/enterprise/connectors/analysis/fake_files_request_handler.h
index 06b90eb..b219230 100644
--- a/chrome/browser/enterprise/connectors/analysis/fake_files_request_handler.h
+++ b/chrome/browser/enterprise/connectors/analysis/fake_files_request_handler.h
@@ -32,6 +32,7 @@
       GURL url,
       const std::string& source,
       const std::string& destination,
+      const std::string& user_action_id,
       safe_browsing::DeepScanAccessPoint access_point,
       const std::vector<base::FilePath>& paths,
       CompletionCallback callback);
@@ -46,6 +47,7 @@
       GURL url,
       const std::string& source,
       const std::string& destination,
+      const std::string& user_action_id,
       safe_browsing::DeepScanAccessPoint access_point,
       const std::vector<base::FilePath>& paths,
       enterprise_connectors::FilesRequestHandler::CompletionCallback callback);
diff --git a/chrome/browser/enterprise/connectors/analysis/file_transfer_analysis_delegate.cc b/chrome/browser/enterprise/connectors/analysis/file_transfer_analysis_delegate.cc
index 9691ed7c..810e2e5 100644
--- a/chrome/browser/enterprise/connectors/analysis/file_transfer_analysis_delegate.cc
+++ b/chrome/browser/enterprise/connectors/analysis/file_transfer_analysis_delegate.cc
@@ -342,7 +342,9 @@
           profile_, source_url_.path()),
       SourceDestinationMatcherAsh::GetVolumeDescriptionFromPath(
           profile_, destination_url_.path()),
-      access_point_, std::move(paths),
+      // User action id is only needed for local content analysis, leave it
+      // empty here.
+      /*user_action_id=*/std::string(), access_point_, std::move(paths),
       base::BindOnce(&FileTransferAnalysisDelegate::ContentAnalysisCompleted,
                      weak_ptr_factory_.GetWeakPtr()));
   request_handler_->UploadData();
diff --git a/chrome/browser/enterprise/connectors/analysis/files_request_handler.cc b/chrome/browser/enterprise/connectors/analysis/files_request_handler.cc
index 8ea6a19..631f185 100644
--- a/chrome/browser/enterprise/connectors/analysis/files_request_handler.cc
+++ b/chrome/browser/enterprise/connectors/analysis/files_request_handler.cc
@@ -76,6 +76,7 @@
     GURL url,
     const std::string& source,
     const std::string& destination,
+    const std::string& user_action_id,
     safe_browsing::DeepScanAccessPoint access_point,
     const std::vector<base::FilePath>& paths,
     CompletionCallback callback)
@@ -85,6 +86,8 @@
                          url,
                          source,
                          destination,
+                         user_action_id,
+                         paths.size(),
                          access_point),
       paths_(paths),
       callback_(std::move(callback)) {
@@ -100,18 +103,19 @@
     GURL url,
     const std::string& source,
     const std::string& destination,
+    const std::string& user_action_id,
     safe_browsing::DeepScanAccessPoint access_point,
     const std::vector<base::FilePath>& paths,
     CompletionCallback callback) {
   if (GetFactoryStorage()->is_null()) {
     return base::WrapUnique(new FilesRequestHandler(
         upload_service, profile, analysis_settings, url, source, destination,
-        access_point, paths, std::move(callback)));
+        user_action_id, access_point, paths, std::move(callback)));
   } else {
     // Use the factory to create a fake FilesRequestHandler.
     return GetFactoryStorage()->Run(upload_service, profile, analysis_settings,
-                                    url, source, destination, access_point,
-                                    paths, std::move(callback));
+                                    url, source, destination, user_action_id,
+                                    access_point, paths, std::move(callback));
   }
 }
 
diff --git a/chrome/browser/enterprise/connectors/analysis/files_request_handler.h b/chrome/browser/enterprise/connectors/analysis/files_request_handler.h
index 81af9be..d7565846 100644
--- a/chrome/browser/enterprise/connectors/analysis/files_request_handler.h
+++ b/chrome/browser/enterprise/connectors/analysis/files_request_handler.h
@@ -58,6 +58,7 @@
       GURL url,
       const std::string& source,
       const std::string& destination,
+      const std::string& user_action_id,
       safe_browsing::DeepScanAccessPoint access_point,
       const std::vector<base::FilePath>& paths,
       CompletionCallback callback)>;
@@ -74,6 +75,7 @@
       GURL url,
       const std::string& source,
       const std::string& destination,
+      const std::string& user_action_id,
       safe_browsing::DeepScanAccessPoint access_point,
       const std::vector<base::FilePath>& paths,
       CompletionCallback callback);
@@ -95,6 +97,7 @@
       GURL url,
       const std::string& source,
       const std::string& destination,
+      const std::string& user_action_id,
       safe_browsing::DeepScanAccessPoint access_point,
       const std::vector<base::FilePath>& paths,
       CompletionCallback callback);
diff --git a/chrome/browser/enterprise/connectors/analysis/files_request_handler_unittest.cc b/chrome/browser/enterprise/connectors/analysis/files_request_handler_unittest.cc
index f25f03c..b636f72 100644
--- a/chrome/browser/enterprise/connectors/analysis/files_request_handler_unittest.cc
+++ b/chrome/browser/enterprise/connectors/analysis/files_request_handler_unittest.cc
@@ -51,6 +51,7 @@
 namespace {
 
 constexpr char kDmToken[] = "dm_token";
+constexpr char kUserActionId[] = "123";
 constexpr char kTestUrl[] = "http://example.com/";
 base::TimeDelta kResponseDelay = base::Seconds(0);
 
@@ -220,7 +221,7 @@
             weak_ptr_factory_.GetWeakPtr(),
             settings.cloud_or_local_settings.is_cloud_analysis()),
         /*upload_service=*/nullptr, profile_, settings, GURL(kTestUrl), "", "",
-        safe_browsing::DeepScanAccessPoint::UPLOAD, paths,
+        kUserActionId, safe_browsing::DeepScanAccessPoint::UPLOAD, paths,
         base::BindOnce(
             [](base::RepeatingClosure runloop_closure,
                FilesRequestHandler::CompletionCallback callback,
@@ -262,6 +263,10 @@
     dlp_response_ = std::move(response);
   }
 
+  void SetExpectedUserActionRequestsCount(uint64_t requests_count) {
+    expected_user_action_requests_count_ = requests_count;
+  }
+
   void PathFailsDeepScan(base::FilePath path,
                          ContentAnalysisResponse response) {
     failures_.insert({std::move(path), std::move(response)});
@@ -306,8 +311,13 @@
       std::unique_ptr<safe_browsing::BinaryUploadService::Request> request,
       FakeFilesRequestHandler::FakeFileRequestCallback callback) {
     EXPECT_FALSE(path.empty());
-    if (is_cloud_analysis)
+    if (is_cloud_analysis) {
       EXPECT_EQ(request->device_token(), kDmToken);
+    } else {
+      EXPECT_EQ(request->user_action_requests_count(),
+                expected_user_action_requests_count_);
+      EXPECT_EQ(request->user_action_id(), kUserActionId);
+    }
 
     // Simulate a response.
     base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
@@ -355,6 +365,10 @@
   // DLP response to ovewrite in the callback if present.
   absl::optional<ContentAnalysisResponse> dlp_response_ = absl::nullopt;
 
+  // To verify user action requests count in local content analysis request is
+  // set correctly.
+  uint64_t expected_user_action_requests_count_ = 0;
+
   base::WeakPtrFactory<FilesRequestHandlerTest> weak_ptr_factory_{this};
 };
 
@@ -508,6 +522,7 @@
                  .AppendASCII("download_protection")
                  .AppendASCII("encrypted.zip");
   paths.emplace_back(test_zip);
+  SetExpectedUserActionRequestsCount(1);
 
   bool called = false;
   ScanUpload(paths,
@@ -585,6 +600,7 @@
       safe_browsing::BinaryUploadService::kMaxUploadSizeBytes + 1, 'a');
   base::WriteFile(file_path, contents.data(), contents.size());
   paths.emplace_back(file_path);
+  SetExpectedUserActionRequestsCount(1);
 
   bool called = false;
   ScanUpload(paths,
@@ -602,6 +618,38 @@
   EXPECT_TRUE(called);
 }
 
+// With a local service provider, multiple file uploads should result in
+// multiple analysis requests.
+TEST_F(FilesRequestHandlerTest, MultipleFilesUpload_LocalAnalysis) {
+  content::InProcessUtilityThreadHelper in_process_utility_thread_helper;
+
+  safe_browsing::SetAnalysisConnector(profile_->GetPrefs(),
+                                      AnalysisConnector::FILE_ATTACHED,
+                                      kLocalServiceProvider);
+  GURL url(kTestUrl);
+  std::vector<base::FilePath> paths = CreateFilesForTest(
+      {FILE_PATH_LITERAL("good.doc"), FILE_PATH_LITERAL("good2.doc")});
+  SetExpectedUserActionRequestsCount(2);
+
+  bool called = false;
+  ScanUpload(
+      paths,
+      base::BindOnce(
+          [](bool* called, std::vector<RequestHandlerResult> results) {
+            EXPECT_EQ(2u, results.size());
+            EXPECT_THAT(results[0],
+                        MatchesRequestHandlerResult(
+                            true, FinalContentAnalysisResult::SUCCESS, ""));
+            EXPECT_THAT(results[1],
+                        MatchesRequestHandlerResult(
+                            true, FinalContentAnalysisResult::SUCCESS, ""));
+            *called = true;
+          },
+          &called));
+
+  EXPECT_TRUE(called);
+}
+
 TEST_F(FilesRequestHandlerTest, FileDataNegativeMalwareVerdict) {
   SetScanPolicies(/*dlp=*/false, /*malware=*/true);
   GURL url(kTestUrl);
diff --git a/chrome/browser/enterprise/connectors/analysis/request_handler_base.cc b/chrome/browser/enterprise/connectors/analysis/request_handler_base.cc
index 413372c..3419f34 100644
--- a/chrome/browser/enterprise/connectors/analysis/request_handler_base.cc
+++ b/chrome/browser/enterprise/connectors/analysis/request_handler_base.cc
@@ -14,6 +14,8 @@
     GURL url,
     const std::string& source,
     const std::string& destination,
+    const std::string& user_action_id,
+    uint64_t user_action_requests_count,
     safe_browsing::DeepScanAccessPoint access_point)
     : upload_service_(upload_service),
       profile_(profile),
@@ -21,6 +23,8 @@
       url_(url),
       source_(source),
       destination_(destination),
+      user_action_id_(user_action_id),
+      user_action_requests_count_(user_action_requests_count),
       access_point_(access_point) {}
 
 RequestHandlerBase::~RequestHandlerBase() = default;
@@ -45,6 +49,11 @@
     request->set_device_token(
         analysis_settings_.cloud_or_local_settings.dm_token());
   }
+  if (analysis_settings_.cloud_or_local_settings.is_local_analysis()) {
+    request->set_user_action_id(user_action_id_);
+    request->set_user_action_requests_count(user_action_requests_count_);
+  }
+
   request->set_analysis_connector(connector);
   request->set_email(safe_browsing::GetProfileEmail(profile_));
   request->set_url(url_.spec());
diff --git a/chrome/browser/enterprise/connectors/analysis/request_handler_base.h b/chrome/browser/enterprise/connectors/analysis/request_handler_base.h
index de25c41..76424eb 100644
--- a/chrome/browser/enterprise/connectors/analysis/request_handler_base.h
+++ b/chrome/browser/enterprise/connectors/analysis/request_handler_base.h
@@ -35,6 +35,8 @@
       GURL url,
       const std::string& source,
       const std::string& destination,
+      const std::string& user_action_id,
+      uint64_t user_action_requests_count,
       safe_browsing::DeepScanAccessPoint access_point);
 
   virtual ~RequestHandlerBase();
@@ -81,6 +83,8 @@
   GURL url_;
   std::string source_;
   std::string destination_;
+  std::string user_action_id_;
+  uint64_t user_action_requests_count_;
   safe_browsing::DeepScanAccessPoint access_point_;
 
   // The request tokens of all the requests that make up the user action
diff --git a/chrome/browser/enterprise/connectors/device_trust/device_trust_browsertest.cc b/chrome/browser/enterprise/connectors/device_trust/device_trust_browsertest.cc
index 2d0f37b0..1b6778b7 100644
--- a/chrome/browser/enterprise/connectors/device_trust/device_trust_browsertest.cc
+++ b/chrome/browser/enterprise/connectors/device_trust/device_trust_browsertest.cc
@@ -10,6 +10,7 @@
 #include "base/run_loop.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/scoped_feature_list.h"
+#include "base/test/test_future.h"
 #include "base/values.h"
 #include "build/branding_buildflags.h"
 #include "chrome/browser/ash/attestation/tpm_challenge_key_result.h"
@@ -18,18 +19,21 @@
 #include "chrome/browser/enterprise/connectors/connectors_service.h"
 #include "chrome/browser/enterprise/connectors/device_trust/common/metrics_utils.h"
 #include "chrome/browser/enterprise/connectors/device_trust/device_trust_features.h"
+#include "chrome/browser/enterprise/connectors/device_trust/device_trust_service.h"
+#include "chrome/browser/enterprise/connectors/device_trust/device_trust_service_factory.h"
 #include "chrome/browser/enterprise/connectors/device_trust/navigation_throttle.h"
 #include "chrome/browser/enterprise/connectors/device_trust/prefs.h"
-#include "chrome/browser/enterprise/signals/device_info_fetcher.h"
 #include "chrome/browser/policy/chrome_browser_policy_connector.h"
 #include "chrome/browser/policy/dm_token_utils.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/test/base/in_process_browser_test.h"
 #include "chrome/test/base/ui_test_utils.h"
+#include "components/device_signals/test/signals_contract.h"
 #include "components/enterprise/browser/controller/fake_browser_dm_token_storage.h"
 #include "components/enterprise/browser/enterprise_switches.h"
 #include "components/policy/core/common/cloud/machine_level_user_cloud_policy_manager.h"
+#include "components/policy/core/common/cloud/user_cloud_policy_manager.h"
 #include "components/policy/core/common/management/management_service.h"
 #include "components/policy/core/common/mock_configuration_policy_provider.h"
 #include "components/policy/policy_constants.h"
@@ -48,11 +52,13 @@
 #if BUILDFLAG(IS_CHROMEOS_ASH)
 #include "chrome/browser/ash/attestation/mock_tpm_challenge_key.h"
 #include "chrome/browser/ash/attestation/tpm_challenge_key.h"
+#include "chrome/browser/ash/policy/core/browser_policy_connector_ash.h"
 #include "chrome/browser/ash/policy/core/user_cloud_policy_manager_ash.h"
-#include "chrome/browser/enterprise/connectors/device_trust/device_trust_service.h"
+#include "chrome/browser/browser_process_platform_part_ash.h"
 #else
 #include "chrome/browser/enterprise/connectors/device_trust/key_management/browser/commands/scoped_key_rotation_command_factory.h"
 #include "chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/scoped_key_persistence_delegate_factory.h"
+#include "chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_test_utils.h"
 #endif
 
 using content::NavigationHandle;
@@ -95,6 +101,9 @@
     "}"
     "}";
 
+constexpr char kDeviceAffiliationId[] = "device_aid";
+constexpr char kProfileAffiliationId[] = "profile_aid";
+
 constexpr char kFakeCustomerId[] = "fake-customer-id";
 #if !BUILDFLAG(IS_CHROMEOS_ASH)
 constexpr char kFakeBrowserDMToken[] = "fake-browser-dm-token";
@@ -263,15 +272,12 @@
       challenge_response_request_;
 
  protected:
-  void SetObfuscatedCustomerIDPolicy(
-      policy::CloudPolicyManager* cloud_policy_manager) {
-    auto browser_policy_data =
-        std::make_unique<enterprise_management::PolicyData>();
-
+  void SetPolicyValues(enterprise_management::PolicyData* browser_policy_data,
+                       enterprise_management::PolicyData* user_policy_data) {
     browser_policy_data->set_obfuscated_customer_id(kFakeCustomerId);
+    browser_policy_data->add_device_affiliation_ids(kDeviceAffiliationId);
 
-    cloud_policy_manager->core()->store()->set_policy_data_for_testing(
-        std::move(browser_policy_data));
+    user_policy_data->add_user_affiliation_ids(kProfileAffiliationId);
   }
 };
 
@@ -294,13 +300,32 @@
     }
     ash::attestation::TpmChallengeKeyFactory::SetForTesting(
         std::move(mock_challenge_key));
+
+    policy::SetDMTokenForTesting(
+        policy::DMToken::CreateValidTokenForTesting("dm_token"));
   }
 
   void SetUpOnMainThread() override {
     DeviceTrustBrowserTestBase::SetUpOnMainThread();
 
-    SetObfuscatedCustomerIDPolicy(
-        browser()->profile()->GetUserCloudPolicyManagerAsh());
+    auto* device_policy_manager = g_browser_process->platform_part()
+                                      ->browser_policy_connector_ash()
+                                      ->GetDeviceCloudPolicyManager();
+    auto* profile_policy_manager =
+        browser()->profile()->GetUserCloudPolicyManagerAsh();
+    profile_policy_manager->core()->client()->SetupRegistration(
+        "dm_token", "client_id", {});
+
+    auto device_policy_data =
+        std::make_unique<enterprise_management::PolicyData>();
+    auto user_policy_data =
+        std::make_unique<enterprise_management::PolicyData>();
+    SetPolicyValues(device_policy_data.get(), user_policy_data.get());
+
+    device_policy_manager->core()->store()->set_policy_data_for_testing(
+        std::move(device_policy_data));
+    profile_policy_manager->core()->store()->set_policy_data_for_testing(
+        std::move(user_policy_data));
   }
 
   void TearDownOnMainThread() override {
@@ -329,11 +354,25 @@
 
     scoped_persistence_delegate_factory_.emplace();
     scoped_rotation_command_factory_.emplace();
-    enterprise_signals::DeviceInfoFetcher::SetForceStubForTesting(true);
 
-    SetObfuscatedCustomerIDPolicy(
+    safe_browsing::SetProfileDMToken(browser()->profile(), "dm_token");
+
+    auto browser_policy_data =
+        std::make_unique<enterprise_management::PolicyData>();
+    auto user_policy_data =
+        std::make_unique<enterprise_management::PolicyData>();
+    SetPolicyValues(browser_policy_data.get(), user_policy_data.get());
+
+    auto* browser_policy_manager =
         g_browser_process->browser_policy_connector()
-            ->machine_level_user_cloud_policy_manager());
+            ->machine_level_user_cloud_policy_manager();
+    browser_policy_manager->core()->store()->set_policy_data_for_testing(
+        std::move(browser_policy_data));
+
+    auto* profile_policy_manager =
+        browser()->profile()->GetUserCloudPolicyManager();
+    profile_policy_manager->core()->store()->set_policy_data_for_testing(
+        std::move(user_policy_data));
   }
 
 #if !BUILDFLAG(GOOGLE_CHROME_BRANDING)
@@ -534,6 +573,38 @@
 }
 #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
 
+// Tests that signal values respect the expected format and is filled-out as
+// expect per platform.
+IN_PROC_BROWSER_TEST_P(DeviceTrustBrowserTest, SignalsContract) {
+  if (!is_enabled()) {
+    // Cannot create a DeviceTrustService if the feature flag is disabled.
+    return;
+  }
+
+  auto* device_trust_service =
+      DeviceTrustServiceFactory::GetForProfile(browser()->profile());
+  ASSERT_TRUE(device_trust_service);
+
+  base::test::TestFuture<base::Value::Dict> future;
+  device_trust_service->GetSignals(future.GetCallback());
+
+  // This error most likely indicates that one of the signals decorators did
+  // not invoke its done_closure in time.
+  ASSERT_TRUE(future.Wait()) << "Timed out while collecting signals.";
+
+  const base::Value::Dict& signals_dict = future.Get();
+
+  const auto signals_contract_map = device_signals::test::GetSignalsContract();
+  ASSERT_FALSE(signals_contract_map.empty());
+  for (const auto& signals_contract_entry : signals_contract_map) {
+    // First is the signal name.
+    // Second is the contract evaluation predicate.
+    EXPECT_TRUE(signals_contract_entry.second.Run(signals_dict))
+        << "Signals contract validation failed for: "
+        << signals_contract_entry.first;
+  }
+}
+
 INSTANTIATE_TEST_SUITE_P(All,
                          DeviceTrustBrowserTest,
                          testing::Combine(testing::Bool(), testing::Bool()));
diff --git a/chrome/browser/enterprise/connectors/device_trust/device_trust_service.h b/chrome/browser/enterprise/connectors/device_trust/device_trust_service.h
index 9a0ad0a..0918988 100644
--- a/chrome/browser/enterprise/connectors/device_trust/device_trust_service.h
+++ b/chrome/browser/enterprise/connectors/device_trust/device_trust_service.h
@@ -55,7 +55,7 @@
   virtual bool Watches(const GURL& url) const;
 
   // Collects device trust signals and returns them via `callback`.
-  void GetSignals(base::OnceCallback<void(const base::Value::Dict)> callback);
+  void GetSignals(base::OnceCallback<void(base::Value::Dict)> callback);
 
   // Parses the `challenge` response and returns it via a `callback`.
   void ParseJsonChallenge(const std::string& challenge,
diff --git a/chrome/browser/enterprise/connectors/device_trust/key_management/browser/device_trust_key_manager_impl.cc b/chrome/browser/enterprise/connectors/device_trust/key_management/browser/device_trust_key_manager_impl.cc
index e52ea35..4c042f6e 100644
--- a/chrome/browser/enterprise/connectors/device_trust/key_management/browser/device_trust_key_manager_impl.cc
+++ b/chrome/browser/enterprise/connectors/device_trust/key_management/browser/device_trust_key_manager_impl.cc
@@ -129,8 +129,10 @@
     return absl::nullopt;
   }
 
-  return DeviceTrustKeyManagerImpl::KeyMetadata{key_pair_->trust_level(),
-                                                key_pair_->key()->Algorithm()};
+  const auto& spki_bytes = key_pair_->key()->GetSubjectPublicKeyInfo();
+  return DeviceTrustKeyManagerImpl::KeyMetadata{
+      key_pair_->trust_level(), key_pair_->key()->Algorithm(),
+      std::string(spki_bytes.begin(), spki_bytes.end())};
 }
 
 void DeviceTrustKeyManagerImpl::AddPendingRequest(
diff --git a/chrome/browser/enterprise/connectors/device_trust/key_management/browser/key_rotation_launcher_impl.cc b/chrome/browser/enterprise/connectors/device_trust/key_management/browser/key_rotation_launcher_impl.cc
index fc1f0cda..9c7098c 100644
--- a/chrome/browser/enterprise/connectors/device_trust/key_management/browser/key_rotation_launcher_impl.cc
+++ b/chrome/browser/enterprise/connectors/device_trust/key_management/browser/key_rotation_launcher_impl.cc
@@ -8,7 +8,6 @@
 #include <utility>
 
 #include "base/check.h"
-#include "chrome/browser/enterprise/connectors/device_trust/key_management/browser/commands/key_rotation_command.h"
 #include "chrome/browser/enterprise/connectors/device_trust/key_management/browser/commands/key_rotation_command_factory.h"
 #include "components/enterprise/browser/controller/browser_dm_token_storage.h"
 #include "components/policy/core/common/cloud/device_management_service.h"
@@ -65,16 +64,16 @@
   std::string dm_server_url = config.GetResourceRequest(false, 0)->url.spec();
 
   KeyRotationCommand::Params params{dm_token.value(), dm_server_url, nonce};
-  auto command = KeyRotationCommandFactory::GetInstance()->CreateCommand(
+  command_ = KeyRotationCommandFactory::GetInstance()->CreateCommand(
       url_loader_factory_, local_prefs_);
-  if (!command) {
+  if (!command_) {
     // Command can be nullptr if trying to create a key on a unsupported
     // platform.
     std::move(callback).Run(KeyRotationCommand::Status::FAILED);
     return;
   }
 
-  command->Trigger(params, std::move(callback));
+  command_->Trigger(params, std::move(callback));
 }
 
 }  // namespace enterprise_connectors
diff --git a/chrome/browser/enterprise/connectors/device_trust/key_management/browser/key_rotation_launcher_impl.h b/chrome/browser/enterprise/connectors/device_trust/key_management/browser/key_rotation_launcher_impl.h
index 89354b0..84ba662 100644
--- a/chrome/browser/enterprise/connectors/device_trust/key_management/browser/key_rotation_launcher_impl.h
+++ b/chrome/browser/enterprise/connectors/device_trust/key_management/browser/key_rotation_launcher_impl.h
@@ -10,6 +10,7 @@
 
 #include "base/memory/raw_ptr.h"
 #include "base/memory/scoped_refptr.h"
+#include "chrome/browser/enterprise/connectors/device_trust/key_management/browser/commands/key_rotation_command.h"
 #include "chrome/browser/enterprise/connectors/device_trust/key_management/browser/key_rotation_launcher.h"
 
 class PrefService;
@@ -43,6 +44,7 @@
   raw_ptr<policy::DeviceManagementService> device_management_service_;
   scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory_;
   base::raw_ptr<PrefService> local_prefs_;
+  std::unique_ptr<KeyRotationCommand> command_;
 };
 
 }  // namespace enterprise_connectors
diff --git a/chrome/browser/enterprise/connectors/device_trust/signals/decorators/ash/ash_signals_decorator.cc b/chrome/browser/enterprise/connectors/device_trust/signals/decorators/ash/ash_signals_decorator.cc
index ad3a75d..4319be5e 100644
--- a/chrome/browser/enterprise/connectors/device_trust/signals/decorators/ash/ash_signals_decorator.cc
+++ b/chrome/browser/enterprise/connectors/device_trust/signals/decorators/ash/ash_signals_decorator.cc
@@ -122,6 +122,7 @@
     base::TimeTicks start_time,
     base::OnceClosure done_closure,
     crosapi::mojom::GetNetworkDetailsResultPtr result) {
+  std::vector<std::string> mac_addresses;
   using Result = crosapi::mojom::GetNetworkDetailsResult;
   switch (result->which()) {
     case Result::Tag::kErrorMessage:
@@ -129,15 +130,19 @@
     case Result::Tag::kNetworkDetails:
       absl::optional<std::string> mac_address =
           result->get_network_details()->mac_address;
-      if (mac_address.has_value()) {
-        // `get_network_details()->mac_address` returns a std::string. On other
-        // platforms (Windows, Linux and Mac) there can be multiple mac
-        // addresses.
-        signals.Set(device_signals::names::kMacAddresses,
-                    ToListValue({mac_address.value()}));
+
+      // `get_network_details()->mac_address` returns a std::string. On other
+      // platforms (Windows, Linux and Mac) there can be multiple mac
+      // addresses.
+      if (mac_address) {
+        mac_addresses.push_back(mac_address.value());
       }
   }
 
+  // The mac addresses signal must always have a value, which can be an empty
+  // array.
+  signals.Set(device_signals::names::kMacAddresses, ToListValue(mac_addresses));
+
   LogSignalsCollectionLatency(kLatencyHistogramVariant, start_time);
 
   std::move(done_closure).Run();
diff --git a/chrome/browser/enterprise/connectors/device_trust/signals/decorators/common/context_signals_decorator.cc b/chrome/browser/enterprise/connectors/device_trust/signals/decorators/common/context_signals_decorator.cc
index a75ed0e..8846e5b 100644
--- a/chrome/browser/enterprise/connectors/device_trust/signals/decorators/common/context_signals_decorator.cc
+++ b/chrome/browser/enterprise/connectors/device_trust/signals/decorators/common/context_signals_decorator.cc
@@ -94,9 +94,8 @@
               ToListValue(context_info.system_dns_servers));
 
   if (context_info.chrome_cleanup_enabled) {
-    signals.Set(
-        device_signals::names::kChromeCleanupEnabled,
-        static_cast<int32_t>(context_info.chrome_cleanup_enabled.value()));
+    signals.Set(device_signals::names::kChromeCleanupEnabled,
+                context_info.chrome_cleanup_enabled.value());
   }
 
   if (context_info.third_party_blocking_enabled) {
diff --git a/chrome/browser/enterprise/connectors/device_trust/signals/signals_service.h b/chrome/browser/enterprise/connectors/device_trust/signals/signals_service.h
index 9bbd5d7..8d8815d 100644
--- a/chrome/browser/enterprise/connectors/device_trust/signals/signals_service.h
+++ b/chrome/browser/enterprise/connectors/device_trust/signals/signals_service.h
@@ -5,8 +5,6 @@
 #ifndef CHROME_BROWSER_ENTERPRISE_CONNECTORS_DEVICE_TRUST_SIGNALS_SIGNALS_SERVICE_H_
 #define CHROME_BROWSER_ENTERPRISE_CONNECTORS_DEVICE_TRUST_SIGNALS_SIGNALS_SERVICE_H_
 
-#include <memory>
-
 #include "base/callback.h"
 #include "base/values.h"
 
@@ -15,8 +13,7 @@
 // Service in charge of retrieving context-aware signals for its consumers.
 class SignalsService {
  public:
-  using CollectSignalsCallback =
-      base::OnceCallback<void(const base::Value::Dict)>;
+  using CollectSignalsCallback = base::OnceCallback<void(base::Value::Dict)>;
 
   virtual ~SignalsService() = default;
 
diff --git a/chrome/browser/extensions/api/bluetooth_low_energy/bluetooth_low_energy_apitest.cc b/chrome/browser/extensions/api/bluetooth_low_energy/bluetooth_low_energy_apitest.cc
index e5f9deba7..a8104f7d 100644
--- a/chrome/browser/extensions/api/bluetooth_low_energy/bluetooth_low_energy_apitest.cc
+++ b/chrome/browser/extensions/api/bluetooth_low_energy/bluetooth_low_energy_apitest.cc
@@ -8,6 +8,7 @@
 #include <tuple>
 #include <utility>
 
+#include "base/test/gmock_callback_support.h"
 #include "base/test/gmock_move_support.h"
 #include "chrome/browser/extensions/extension_apitest.h"
 #include "content/public/test/browser_test.h"
@@ -25,6 +26,7 @@
 #include "extensions/test/result_catcher.h"
 #include "testing/gmock/include/gmock/gmock.h"
 
+using base::test::RunOnceCallback;
 using device::BluetoothAdapter;
 using device::BluetoothDevice;
 using device::BluetoothGattConnection;
@@ -243,13 +245,12 @@
   std::move(std::get<k>(args)).Run(std::unique_ptr<T>(p0), p1);
 }
 
-BluetoothGattConnection* CreateGattConnection(
+std::unique_ptr<BluetoothGattConnection> CreateGattConnection(
     scoped_refptr<device::BluetoothAdapter> adapter,
     const std::string& device_address,
     bool expect_disconnect) {
-  testing::NiceMock<MockBluetoothGattConnection>* conn =
-      new testing::NiceMock<MockBluetoothGattConnection>(adapter,
-                                                         device_address);
+  auto conn = std::make_unique<testing::NiceMock<MockBluetoothGattConnection>>(
+      adapter, device_address);
   EXPECT_CALL(*conn, Disconnect()).Times(expect_disconnect ? 1 : 0);
   return conn;
 }
@@ -1163,35 +1164,35 @@
   static_assert(
       BluetoothDevice::NUM_CONNECT_ERROR_CODES == 8,
       "Update required if the number of BluetoothDevice enums changes.");
-  EXPECT_CALL(*device0_, CreateGattConnection_(_))
+  EXPECT_CALL(*device0_, CreateGattConnection(_, _))
       .Times(9)
-      .WillOnce(InvokeCallbackArgument<0>(/*connection=*/nullptr,
-                                          BluetoothDevice::ERROR_FAILED))
-      .WillOnce(InvokeCallbackArgument<0>(/*connection=*/nullptr,
-                                          BluetoothDevice::ERROR_INPROGRESS))
-      .WillOnce(InvokeCallbackArgument<0>(/*connection=*/nullptr,
-                                          BluetoothDevice::ERROR_AUTH_FAILED))
-      .WillOnce(InvokeCallbackArgument<0>(/*connection=*/nullptr,
-                                          BluetoothDevice::ERROR_AUTH_REJECTED))
-      .WillOnce(InvokeCallbackArgument<0>(/*connection=*/nullptr,
-                                          BluetoothDevice::ERROR_AUTH_CANCELED))
-      .WillOnce(InvokeCallbackArgument<0>(/*connection=*/nullptr,
-                                          BluetoothDevice::ERROR_AUTH_TIMEOUT))
-      .WillOnce(InvokeCallbackArgument<0>(
+      .WillOnce(RunOnceCallback<0>(/*connection=*/nullptr,
+                                   BluetoothDevice::ERROR_FAILED))
+      .WillOnce(RunOnceCallback<0>(/*connection=*/nullptr,
+                                   BluetoothDevice::ERROR_INPROGRESS))
+      .WillOnce(RunOnceCallback<0>(/*connection=*/nullptr,
+                                   BluetoothDevice::ERROR_AUTH_FAILED))
+      .WillOnce(RunOnceCallback<0>(/*connection=*/nullptr,
+                                   BluetoothDevice::ERROR_AUTH_REJECTED))
+      .WillOnce(RunOnceCallback<0>(/*connection=*/nullptr,
+                                   BluetoothDevice::ERROR_AUTH_CANCELED))
+      .WillOnce(RunOnceCallback<0>(/*connection=*/nullptr,
+                                   BluetoothDevice::ERROR_AUTH_TIMEOUT))
+      .WillOnce(RunOnceCallback<0>(
           /*connection=*/nullptr, BluetoothDevice::ERROR_UNSUPPORTED_DEVICE))
-      .WillOnce(InvokeCallbackWithScopedPtrArg<0, BluetoothGattConnection>(
+      .WillOnce(RunOnceCallback<0>(
           CreateGattConnection(mock_adapter_, kTestLeDeviceAddress0,
-                               true /* expect_disconnect */),
+                               /*expect_disconnect=*/true),
           /*error_code=*/absl::nullopt))
-      .WillOnce(InvokeCallbackWithScopedPtrArg<0, BluetoothGattConnection>(
+      .WillOnce(RunOnceCallback<0>(
           CreateGattConnection(mock_adapter_, kTestLeDeviceAddress0,
-                               false /* expect_disconnect */),
+                               /*expect_disconnect=*/false),
           /*error_code=*/absl::nullopt));
-  EXPECT_CALL(*device1_, CreateGattConnection_(_))
+  EXPECT_CALL(*device1_, CreateGattConnection(_, _))
       .Times(1)
-      .WillOnce(InvokeCallbackWithScopedPtrArg<0, BluetoothGattConnection>(
+      .WillOnce(RunOnceCallback<0>(
           CreateGattConnection(mock_adapter_, kTestLeDeviceAddress1,
-                               true /* expect_disconnect */),
+                               /*expect_disconnect=*/true),
           /*error_code=*/absl::nullopt));
 
   ASSERT_TRUE(LoadExtension(
@@ -1206,21 +1207,22 @@
   EXPECT_CALL(*mock_adapter_, GetDevice(kTestLeDeviceAddress0))
       .WillRepeatedly(Return(device0_.get()));
 
-  MockBluetoothGattConnection* first_conn =
-      static_cast<MockBluetoothGattConnection*>(CreateGattConnection(
-          mock_adapter_, kTestLeDeviceAddress0, false /* expect_disconnect */));
-  EXPECT_CALL(*first_conn, IsConnected())
+  auto first_conn = CreateGattConnection(mock_adapter_, kTestLeDeviceAddress0,
+                                         /*expect_disconnect=*/false);
+  MockBluetoothGattConnection* first_conn_ptr =
+      static_cast<MockBluetoothGattConnection*>(first_conn.get());
+  EXPECT_CALL(*first_conn_ptr, IsConnected())
       .Times(2)
       .WillOnce(Return(true))
       .WillOnce(Return(false));
 
-  EXPECT_CALL(*device0_, CreateGattConnection_(_))
+  EXPECT_CALL(*device0_, CreateGattConnection(_, _))
       .Times(2)
-      .WillOnce(InvokeCallbackWithScopedPtrArg<0, BluetoothGattConnection>(
-          first_conn, /*error_code=*/absl::nullopt))
-      .WillOnce(InvokeCallbackWithScopedPtrArg<0, BluetoothGattConnection>(
+      .WillOnce(RunOnceCallback<0>(std::move(first_conn),
+                                   /*error_code=*/absl::nullopt))
+      .WillOnce(RunOnceCallback<0>(
           CreateGattConnection(mock_adapter_, kTestLeDeviceAddress0,
-                               false /* expect_disconnect */),
+                               /*expect_disconnect=*/false),
           /*error_code=*/absl::nullopt));
 
   ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII(
@@ -1243,7 +1245,7 @@
   std::unique_ptr<BluetoothGattConnection> conn_ptr(conn);
   EXPECT_CALL(*conn, Disconnect()).Times(1);
 
-  EXPECT_CALL(*device0_, CreateGattConnection_(_))
+  EXPECT_CALL(*device0_, CreateGattConnection(_, _))
       .Times(1)
       .WillOnce(MoveArg<0>(&connect_callback));
 
diff --git a/chrome/browser/extensions/api/enterprise_reporting_private/enterprise_reporting_private_api.cc b/chrome/browser/extensions/api/enterprise_reporting_private/enterprise_reporting_private_api.cc
index 4674a4b..e282e5943 100644
--- a/chrome/browser/extensions/api/enterprise_reporting_private/enterprise_reporting_private_api.cc
+++ b/chrome/browser/extensions/api/enterprise_reporting_private/enterprise_reporting_private_api.cc
@@ -672,16 +672,22 @@
   aggregation_request.file_system_signal_parameters =
       ConvertFileSystemInfoOptions(params->request.options);
 
+  const size_t number_of_items =
+      aggregation_request.file_system_signal_parameters.size();
+  LogSignalCollectionRequestedWithItems(signal_name(), number_of_items);
+
   StartSignalCollection(
       aggregation_request, browser_context(),
       base::BindOnce(&EnterpriseReportingPrivateGetFileSystemInfoFunction::
                          OnSignalRetrieved,
-                     this));
+                     this, base::TimeTicks::Now(), number_of_items));
 
   return RespondLater();
 }
 
 void EnterpriseReportingPrivateGetFileSystemInfoFunction::OnSignalRetrieved(
+    base::TimeTicks start_time,
+    size_t request_items_count,
     device_signals::SignalsAggregationResponse response) {
   if (!CanReturnResponse(browser_context())) {
     // The browser is no longer accepting responses, so just bail.
@@ -693,13 +699,14 @@
   auto parsed_error = ConvertFileSystemInfoResponse(response, &arg_list);
 
   if (parsed_error) {
-    LogSignalCollectionFailed(signal_name(), parsed_error->error,
+    LogSignalCollectionFailed(signal_name(), start_time, parsed_error->error,
                               parsed_error->is_top_level_error);
     Respond(Error(device_signals::ErrorToString(parsed_error->error)));
     return;
   }
 
-  LogSignalCollectionSucceeded(signal_name(), arg_list.size());
+  LogSignalCollectionSucceeded(signal_name(), start_time, arg_list.size(),
+                               request_items_count);
   Respond(ArgumentList(
       api::enterprise_reporting_private::GetFileSystemInfo::Results::Create(
           arg_list)));
@@ -744,16 +751,22 @@
   aggregation_request.settings_signal_parameters =
       ConvertSettingsOptions(params->request.options);
 
+  const size_t number_of_items =
+      aggregation_request.settings_signal_parameters.size();
+  LogSignalCollectionRequestedWithItems(signal_name(), number_of_items);
+
   StartSignalCollection(
       aggregation_request, browser_context(),
       base::BindOnce(
           &EnterpriseReportingPrivateGetSettingsFunction::OnSignalRetrieved,
-          this));
+          this, base::TimeTicks::Now(), number_of_items));
 
   return RespondLater();
 }
 
 void EnterpriseReportingPrivateGetSettingsFunction::OnSignalRetrieved(
+    base::TimeTicks start_time,
+    size_t request_items_count,
     device_signals::SignalsAggregationResponse response) {
   if (!CanReturnResponse(browser_context())) {
     // The browser is no longer accepting responses, so just bail.
@@ -764,13 +777,14 @@
   auto parsed_error = ConvertSettingsResponse(response, &arg_list);
 
   if (parsed_error) {
-    LogSignalCollectionFailed(signal_name(), parsed_error->error,
+    LogSignalCollectionFailed(signal_name(), start_time, parsed_error->error,
                               parsed_error->is_top_level_error);
     Respond(Error(device_signals::ErrorToString(parsed_error->error)));
     return;
   }
 
-  LogSignalCollectionSucceeded(signal_name(), arg_list.size());
+  LogSignalCollectionSucceeded(signal_name(), start_time, arg_list.size(),
+                               request_items_count);
   Respond(ArgumentList(
       api::enterprise_reporting_private::GetSettings::Results::Create(
           arg_list)));
@@ -803,13 +817,14 @@
       CreateAggregationRequest(params->user_context.user_id, signal_name()),
       browser_context(),
       base::BindOnce(
-          &EnterpriseReportingPrivateGetAvInfoFunction::OnSignalRetrieved,
-          this));
+          &EnterpriseReportingPrivateGetAvInfoFunction::OnSignalRetrieved, this,
+          base::TimeTicks::Now()));
 
   return RespondLater();
 }
 
 void EnterpriseReportingPrivateGetAvInfoFunction::OnSignalRetrieved(
+    base::TimeTicks start_time,
     device_signals::SignalsAggregationResponse response) {
   if (!CanReturnResponse(browser_context())) {
     // The browser is no longer accepting responses, so just bail.
@@ -820,13 +835,13 @@
   auto parsed_error = ConvertAvProductsResponse(response, &arg_list);
 
   if (parsed_error) {
-    LogSignalCollectionFailed(signal_name(), parsed_error->error,
+    LogSignalCollectionFailed(signal_name(), start_time, parsed_error->error,
                               parsed_error->is_top_level_error);
     Respond(Error(device_signals::ErrorToString(parsed_error->error)));
     return;
   }
 
-  LogSignalCollectionSucceeded(signal_name(), arg_list.size());
+  LogSignalCollectionSucceeded(signal_name(), start_time, arg_list.size());
   Respond(ArgumentList(
       api::enterprise_reporting_private::GetAvInfo::Results::Create(arg_list)));
 }
@@ -856,12 +871,13 @@
       browser_context(),
       base::BindOnce(
           &EnterpriseReportingPrivateGetHotfixesFunction::OnSignalRetrieved,
-          this));
+          this, base::TimeTicks::Now()));
 
   return RespondLater();
 }
 
 void EnterpriseReportingPrivateGetHotfixesFunction::OnSignalRetrieved(
+    base::TimeTicks start_time,
     device_signals::SignalsAggregationResponse response) {
   if (!CanReturnResponse(browser_context())) {
     // The browser is no longer accepting responses, so just bail.
@@ -872,13 +888,13 @@
   auto parsed_error = ConvertHotfixesResponse(response, &arg_list);
 
   if (parsed_error) {
-    LogSignalCollectionFailed(signal_name(), parsed_error->error,
+    LogSignalCollectionFailed(signal_name(), start_time, parsed_error->error,
                               parsed_error->is_top_level_error);
     Respond(Error(device_signals::ErrorToString(parsed_error->error)));
     return;
   }
 
-  LogSignalCollectionSucceeded(signal_name(), arg_list.size());
+  LogSignalCollectionSucceeded(signal_name(), start_time, arg_list.size());
   Respond(ArgumentList(
       api::enterprise_reporting_private::GetHotfixes::Results::Create(
           arg_list)));
diff --git a/chrome/browser/extensions/api/enterprise_reporting_private/enterprise_reporting_private_api.h b/chrome/browser/extensions/api/enterprise_reporting_private/enterprise_reporting_private_api.h
index c4283869..0fa45211 100644
--- a/chrome/browser/extensions/api/enterprise_reporting_private/enterprise_reporting_private_api.h
+++ b/chrome/browser/extensions/api/enterprise_reporting_private/enterprise_reporting_private_api.h
@@ -20,6 +20,7 @@
 #include "components/reporting/proto/synced/record_constants.pb.h"
 #include "components/reporting/util/statusor.h"
 #elif BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
+#include "base/time/time.h"
 #include "components/device_signals/core/browser/signals_types.h"
 #endif  // BUILDFLAG(IS_CHROMEOS)
 
@@ -284,7 +285,9 @@
   // ExtensionFunction
   ExtensionFunction::ResponseAction Run() override;
 
-  void OnSignalRetrieved(device_signals::SignalsAggregationResponse response);
+  void OnSignalRetrieved(base::TimeTicks start_time,
+                         size_t request_items_count,
+                         device_signals::SignalsAggregationResponse response);
 
   device_signals::SignalName signal_name() {
     return device_signals::SignalName::kFileSystemInfo;
@@ -311,7 +314,9 @@
   // ExtensionFunction
   ExtensionFunction::ResponseAction Run() override;
 
-  void OnSignalRetrieved(device_signals::SignalsAggregationResponse response);
+  void OnSignalRetrieved(base::TimeTicks start_time,
+                         size_t request_items_count,
+                         device_signals::SignalsAggregationResponse response);
 
   device_signals::SignalName signal_name() {
     return device_signals::SignalName::kSystemSettings;
@@ -339,7 +344,8 @@
   // ExtensionFunction
   ExtensionFunction::ResponseAction Run() override;
 
-  void OnSignalRetrieved(device_signals::SignalsAggregationResponse response);
+  void OnSignalRetrieved(base::TimeTicks start_time,
+                         device_signals::SignalsAggregationResponse response);
 
   device_signals::SignalName signal_name() {
     return device_signals::SignalName::kAntiVirus;
@@ -363,7 +369,8 @@
   // ExtensionFunction
   ExtensionFunction::ResponseAction Run() override;
 
-  void OnSignalRetrieved(device_signals::SignalsAggregationResponse response);
+  void OnSignalRetrieved(base::TimeTicks start_time,
+                         device_signals::SignalsAggregationResponse response);
 
   device_signals::SignalName signal_name() {
     return device_signals::SignalName::kHotfixes;
diff --git a/chrome/browser/extensions/api/enterprise_reporting_private/enterprise_reporting_private_unittest.cc b/chrome/browser/extensions/api/enterprise_reporting_private/enterprise_reporting_private_unittest.cc
index eb972629..11d4e72 100644
--- a/chrome/browser/extensions/api/enterprise_reporting_private/enterprise_reporting_private_unittest.cc
+++ b/chrome/browser/extensions/api/enterprise_reporting_private/enterprise_reporting_private_unittest.cc
@@ -1414,13 +1414,22 @@
   EXPECT_EQ(*parsed_file_system_signal->sha256_hash, "c29tZSBoYXNoZWQgdmFsdWU");
 
   histogram_tester_.ExpectUniqueSample(
+      "Enterprise.DeviceSignals.Collection.Request.FileSystemInfo.Items", 1, 1);
+  histogram_tester_.ExpectUniqueSample(
+      "Enterprise.DeviceSignals.Collection.FileSystemInfo.Delta", 0, 1);
+  histogram_tester_.ExpectUniqueSample(
       "Enterprise.DeviceSignals.Collection.Success", signal_name(), 1);
   histogram_tester_.ExpectUniqueSample(
       "Enterprise.DeviceSignals.Collection.Success.FileSystemInfo.Items",
       /*number_of_items=*/1,
       /*number_of_occurrences=*/1);
   histogram_tester_.ExpectTotalCount(
+      "Enterprise.DeviceSignals.Collection.Success.FileSystemInfo.Latency", 1);
+
+  histogram_tester_.ExpectTotalCount(
       "Enterprise.DeviceSignals.Collection.Failure", 0);
+  histogram_tester_.ExpectTotalCount(
+      "Enterprise.DeviceSignals.Collection.Failure.FileSystemInfo.Latency", 0);
 }
 
 TEST_F(EnterpriseReportingPrivateGetFileSystemInfoTest, TopLevelError) {
@@ -1438,6 +1447,8 @@
   EXPECT_EQ(error, device_signals::ErrorToString(expected_error));
 
   histogram_tester_.ExpectUniqueSample(
+      "Enterprise.DeviceSignals.Collection.Request.FileSystemInfo.Items", 1, 1);
+  histogram_tester_.ExpectUniqueSample(
       "Enterprise.DeviceSignals.Collection.Failure", signal_name(), 1);
   histogram_tester_.ExpectUniqueSample(
       "Enterprise.DeviceSignals.Collection.Failure.FileSystemInfo."
@@ -1445,7 +1456,14 @@
       /*error=*/expected_error,
       /*number_of_occurrences=*/1);
   histogram_tester_.ExpectTotalCount(
+      "Enterprise.DeviceSignals.Collection.Failure.FileSystemInfo.Latency", 1);
+
+  histogram_tester_.ExpectTotalCount(
       "Enterprise.DeviceSignals.Collection.Success", 0);
+  histogram_tester_.ExpectTotalCount(
+      "Enterprise.DeviceSignals.Collection.Success.FileSystemInfo.Latency", 0);
+  histogram_tester_.ExpectTotalCount(
+      "Enterprise.DeviceSignals.Collection.FileSystemInfo.Delta", 0);
 }
 
 TEST_F(EnterpriseReportingPrivateGetFileSystemInfoTest, CollectionError) {
@@ -1466,6 +1484,8 @@
   EXPECT_EQ(error, device_signals::ErrorToString(expected_error));
 
   histogram_tester_.ExpectUniqueSample(
+      "Enterprise.DeviceSignals.Collection.Request.FileSystemInfo.Items", 1, 1);
+  histogram_tester_.ExpectUniqueSample(
       "Enterprise.DeviceSignals.Collection.Failure", signal_name(), 1);
   histogram_tester_.ExpectUniqueSample(
       "Enterprise.DeviceSignals.Collection.Failure.FileSystemInfo."
@@ -1473,7 +1493,14 @@
       /*error=*/expected_error,
       /*number_of_occurrences=*/1);
   histogram_tester_.ExpectTotalCount(
+      "Enterprise.DeviceSignals.Collection.Failure.FileSystemInfo.Latency", 1);
+
+  histogram_tester_.ExpectTotalCount(
       "Enterprise.DeviceSignals.Collection.Success", 0);
+  histogram_tester_.ExpectTotalCount(
+      "Enterprise.DeviceSignals.Collection.Success.FileSystemInfo.Latency", 0);
+  histogram_tester_.ExpectTotalCount(
+      "Enterprise.DeviceSignals.Collection.FileSystemInfo.Delta", 0);
 }
 
 class EnterpriseReportingPrivateGetFileSystemInfoDisabledTest
@@ -1590,13 +1617,22 @@
             enterprise_reporting_private::REGISTRY_HIVE_HKEY_CURRENT_USER);
 
   histogram_tester_.ExpectUniqueSample(
+      "Enterprise.DeviceSignals.Collection.Request.SystemSettings.Items", 1, 1);
+  histogram_tester_.ExpectUniqueSample(
+      "Enterprise.DeviceSignals.Collection.SystemSettings.Delta", 0, 1);
+  histogram_tester_.ExpectUniqueSample(
       "Enterprise.DeviceSignals.Collection.Success", signal_name(), 1);
   histogram_tester_.ExpectUniqueSample(
       "Enterprise.DeviceSignals.Collection.Success.SystemSettings.Items",
       /*number_of_items=*/1,
       /*number_of_occurrences=*/1);
   histogram_tester_.ExpectTotalCount(
+      "Enterprise.DeviceSignals.Collection.Success.SystemSettings.Latency", 1);
+
+  histogram_tester_.ExpectTotalCount(
       "Enterprise.DeviceSignals.Collection.Failure", 0);
+  histogram_tester_.ExpectTotalCount(
+      "Enterprise.DeviceSignals.Collection.Failure.SystemSettings.Latency", 0);
 }
 
 TEST_F(EnterpriseReportingPrivateGetSettingsTest, TopLevelError) {
@@ -1614,6 +1650,8 @@
   EXPECT_EQ(error, device_signals::ErrorToString(expected_error));
 
   histogram_tester_.ExpectUniqueSample(
+      "Enterprise.DeviceSignals.Collection.Request.SystemSettings.Items", 1, 1);
+  histogram_tester_.ExpectUniqueSample(
       "Enterprise.DeviceSignals.Collection.Failure", signal_name(), 1);
   histogram_tester_.ExpectUniqueSample(
       "Enterprise.DeviceSignals.Collection.Failure.SystemSettings."
@@ -1621,7 +1659,14 @@
       /*error=*/expected_error,
       /*number_of_occurrences=*/1);
   histogram_tester_.ExpectTotalCount(
+      "Enterprise.DeviceSignals.Collection.Failure.SystemSettings.Latency", 1);
+
+  histogram_tester_.ExpectTotalCount(
       "Enterprise.DeviceSignals.Collection.Success", 0);
+  histogram_tester_.ExpectTotalCount(
+      "Enterprise.DeviceSignals.Collection.Success.SystemSettings.Latency", 0);
+  histogram_tester_.ExpectTotalCount(
+      "Enterprise.DeviceSignals.Collection.SystemSettings.Delta", 0);
 }
 
 TEST_F(EnterpriseReportingPrivateGetSettingsTest, CollectionError) {
@@ -1642,6 +1687,8 @@
   EXPECT_EQ(error, device_signals::ErrorToString(expected_error));
 
   histogram_tester_.ExpectUniqueSample(
+      "Enterprise.DeviceSignals.Collection.Request.SystemSettings.Items", 1, 1);
+  histogram_tester_.ExpectUniqueSample(
       "Enterprise.DeviceSignals.Collection.Failure", signal_name(), 1);
   histogram_tester_.ExpectUniqueSample(
       "Enterprise.DeviceSignals.Collection.Failure.SystemSettings."
@@ -1649,7 +1696,14 @@
       /*error=*/expected_error,
       /*number_of_occurrences=*/1);
   histogram_tester_.ExpectTotalCount(
+      "Enterprise.DeviceSignals.Collection.Failure.SystemSettings.Latency", 1);
+
+  histogram_tester_.ExpectTotalCount(
       "Enterprise.DeviceSignals.Collection.Success", 0);
+  histogram_tester_.ExpectTotalCount(
+      "Enterprise.DeviceSignals.Collection.Success.SystemSettings.Latency", 0);
+  histogram_tester_.ExpectTotalCount(
+      "Enterprise.DeviceSignals.Collection.SystemSettings.Delta", 0);
 }
 
 class EnterpriseReportingPrivateGetSettingsDisabledTest
@@ -1745,7 +1799,12 @@
       /*number_of_items=*/1,
       /*number_of_occurrences=*/1);
   histogram_tester_.ExpectTotalCount(
+      "Enterprise.DeviceSignals.Collection.Success.AntiVirus.Latency", 1);
+
+  histogram_tester_.ExpectTotalCount(
       "Enterprise.DeviceSignals.Collection.Failure", 0);
+  histogram_tester_.ExpectTotalCount(
+      "Enterprise.DeviceSignals.Collection.Failure.AntiVirus.Latency", 0);
 }
 
 TEST_F(EnterpriseReportingPrivateGetAvInfoTest, TopLevelError) {
@@ -1769,7 +1828,12 @@
       /*error=*/expected_error,
       /*number_of_occurrences=*/1);
   histogram_tester_.ExpectTotalCount(
+      "Enterprise.DeviceSignals.Collection.Failure.AntiVirus.Latency", 1);
+
+  histogram_tester_.ExpectTotalCount(
       "Enterprise.DeviceSignals.Collection.Success", 0);
+  histogram_tester_.ExpectTotalCount(
+      "Enterprise.DeviceSignals.Collection.Success.AntiVirus.Latency", 0);
 }
 
 TEST_F(EnterpriseReportingPrivateGetAvInfoTest, CollectionError) {
@@ -1797,7 +1861,12 @@
       /*error=*/expected_error,
       /*number_of_occurrences=*/1);
   histogram_tester_.ExpectTotalCount(
+      "Enterprise.DeviceSignals.Collection.Failure.AntiVirus.Latency", 1);
+
+  histogram_tester_.ExpectTotalCount(
       "Enterprise.DeviceSignals.Collection.Success", 0);
+  histogram_tester_.ExpectTotalCount(
+      "Enterprise.DeviceSignals.Collection.Success.AntiVirus.Latency", 0);
 }
 
 class EnterpriseReportingPrivateGetAvInfoDisabledTest
@@ -1873,7 +1942,12 @@
       /*number_of_items=*/1,
       /*number_of_occurrences=*/1);
   histogram_tester_.ExpectTotalCount(
+      "Enterprise.DeviceSignals.Collection.Success.Hotfixes.Latency", 1);
+
+  histogram_tester_.ExpectTotalCount(
       "Enterprise.DeviceSignals.Collection.Failure", 0);
+  histogram_tester_.ExpectTotalCount(
+      "Enterprise.DeviceSignals.Collection.Failure.Hotfixes.Latency", 0);
 }
 
 TEST_F(EnterpriseReportingPrivateGetHotfixesTest, TopLevelError) {
@@ -1897,7 +1971,12 @@
       /*error=*/expected_error,
       /*number_of_occurrences=*/1);
   histogram_tester_.ExpectTotalCount(
+      "Enterprise.DeviceSignals.Collection.Failure.Hotfixes.Latency", 1);
+
+  histogram_tester_.ExpectTotalCount(
       "Enterprise.DeviceSignals.Collection.Success", 0);
+  histogram_tester_.ExpectTotalCount(
+      "Enterprise.DeviceSignals.Collection.Success.Hotfixes.Latency", 0);
 }
 
 TEST_F(EnterpriseReportingPrivateGetHotfixesTest, CollectionError) {
@@ -1925,7 +2004,12 @@
       /*error=*/expected_error,
       /*number_of_occurrences=*/1);
   histogram_tester_.ExpectTotalCount(
+      "Enterprise.DeviceSignals.Collection.Failure.Hotfixes.Latency", 1);
+
+  histogram_tester_.ExpectTotalCount(
       "Enterprise.DeviceSignals.Collection.Success", 0);
+  histogram_tester_.ExpectTotalCount(
+      "Enterprise.DeviceSignals.Collection.Success.Hotfixes.Latency", 0);
 }
 
 class EnterpriseReportingPrivateGetHotfixesInfoDisabledTest
diff --git a/chrome/browser/extensions/system_display/display_info_provider_mac.cc b/chrome/browser/extensions/system_display/display_info_provider_mac.cc
index afdd893c..6bd4baf4 100644
--- a/chrome/browser/extensions/system_display/display_info_provider_mac.cc
+++ b/chrome/browser/extensions/system_display/display_info_provider_mac.cc
@@ -12,8 +12,8 @@
 DisplayInfoProviderMac::DisplayInfoProviderMac() = default;
 
 void DisplayInfoProviderMac::UpdateDisplayUnitInfoForPlatform(
-    const display::Display& display,
-    extensions::api::system_display::DisplayUnitInfo* unit) const {
+    const std::vector<display::Display>& display,
+    DisplayUnitInfoList& units) const {
   NOTIMPLEMENTED_LOG_ONCE();
 }
 
diff --git a/chrome/browser/extensions/system_display/display_info_provider_mac.h b/chrome/browser/extensions/system_display/display_info_provider_mac.h
index e87f2a98..ecbe0991 100644
--- a/chrome/browser/extensions/system_display/display_info_provider_mac.h
+++ b/chrome/browser/extensions/system_display/display_info_provider_mac.h
@@ -18,8 +18,8 @@
 
   // DisplayInfoProvider implementation.
   void UpdateDisplayUnitInfoForPlatform(
-      const display::Display& display,
-      api::system_display::DisplayUnitInfo* unit) const override;
+      const std::vector<display::Display>& display,
+      DisplayUnitInfoList& unit) const override;
 };
 
 }  // namespace extensions
diff --git a/chrome/browser/extensions/system_display/display_info_provider_win.cc b/chrome/browser/extensions/system_display/display_info_provider_win.cc
index 6c95c42a..96fb98f8 100644
--- a/chrome/browser/extensions/system_display/display_info_provider_win.cc
+++ b/chrome/browser/extensions/system_display/display_info_provider_win.cc
@@ -18,6 +18,7 @@
 #include "extensions/common/api/system_display.h"
 #include "ui/display/display.h"
 #include "ui/display/win/dpi.h"
+#include "ui/display/win/screen_win.h"
 #include "ui/gfx/geometry/size.h"
 
 namespace extensions {
@@ -30,9 +31,9 @@
                                   HDC hdc,
                                   LPRECT rect,
                                   LPARAM data) {
-  DisplayInfoProvider::DisplayUnitInfoList* all_displays =
-      reinterpret_cast<DisplayInfoProvider::DisplayUnitInfoList*>(data);
-  DCHECK(all_displays);
+  base::flat_map<std::string, std::string>* device_id_to_name =
+      reinterpret_cast<base::flat_map<std::string, std::string>*>(data);
+  DCHECK(device_id_to_name);
 
   DisplayUnitInfo unit;
 
@@ -45,11 +46,9 @@
   if (!EnumDisplayDevices(monitor_info.szDevice, 0, &device, 0))
     return FALSE;
 
-  unit.id = base::NumberToString(
-      base::PersistentHash(base::WideToUTF8(monitor_info.szDevice)));
-  unit.name = base::WideToUTF8(device.DeviceString);
-  all_displays->push_back(std::move(unit));
-
+  std::string id = base::NumberToString(
+      display::win::ScreenWin::DeviceIdFromDeviceName(monitor_info.szDevice));
+  (*device_id_to_name)[id] = base::WideToUTF8(device.DeviceString);
   return TRUE;
 }
 
@@ -58,19 +57,22 @@
 DisplayInfoProviderWin::DisplayInfoProviderWin() = default;
 
 void DisplayInfoProviderWin::UpdateDisplayUnitInfoForPlatform(
-    const display::Display& display,
-    extensions::api::system_display::DisplayUnitInfo* unit) const {
-  DisplayUnitInfoList all_displays;
+    const std::vector<display::Display>& displays,
+    DisplayUnitInfoList& units) const {
+  base::flat_map<std::string, std::string> device_id_to_name;
   EnumDisplayMonitors(nullptr, nullptr, EnumMonitorCallback,
-                      reinterpret_cast<LPARAM>(&all_displays));
-  for (size_t i = 0; i < all_displays.size(); ++i) {
-    if (unit->id == all_displays[i].id) {
-      unit->name = all_displays[i].name;
-      float device_scale_factor = display.device_scale_factor();
+                      reinterpret_cast<LPARAM>(&device_id_to_name));
+  // `displays` and `units` are in the same order. Each unit has an id
+  // which is the string representation of the corresponding display's id.
+  for (size_t display_index = 0; display_index < displays.size();
+       display_index++) {
+    auto it = device_id_to_name.find(units[display_index].id);
+    if (it != device_id_to_name.end()) {
+      units[display_index].name = it->second;
+      float device_scale_factor = displays[display_index].device_scale_factor();
       int dpi = display::win::GetDPIFromScalingFactor(device_scale_factor);
-      unit->dpi_x = dpi;
-      unit->dpi_y = dpi;
-      break;
+      units[display_index].dpi_x = dpi;
+      units[display_index].dpi_y = dpi;
     }
   }
 }
diff --git a/chrome/browser/extensions/system_display/display_info_provider_win.h b/chrome/browser/extensions/system_display/display_info_provider_win.h
index e5b6c4e..7beb55d 100644
--- a/chrome/browser/extensions/system_display/display_info_provider_win.h
+++ b/chrome/browser/extensions/system_display/display_info_provider_win.h
@@ -18,8 +18,8 @@
 
   // DisplayInfoProvider implementation.
   void UpdateDisplayUnitInfoForPlatform(
-      const display::Display& display,
-      api::system_display::DisplayUnitInfo* unit) const override;
+      const std::vector<display::Display>& displays,
+      DisplayUnitInfoList& units) const override;
 };
 
 }  // namespace extensions
diff --git a/chrome/browser/first_party_sets/first_party_sets_policy_service.cc b/chrome/browser/first_party_sets/first_party_sets_policy_service.cc
index 1814887..826ca2d4 100644
--- a/chrome/browser/first_party_sets/first_party_sets_policy_service.cc
+++ b/chrome/browser/first_party_sets/first_party_sets_policy_service.cc
@@ -93,11 +93,16 @@
     return;
   }
 
+  Profile* profile = Profile::FromBrowserContext(browser_context_);
+  if (!profile->IsRegularProfile() || profile->IsGuestSession()) {
+    // TODO(https://crbug.com/1348572): regular profiles and guest sessions
+    // aren't mutually exclusive on ChromeOS.
+    OnReadyToNotifyDelegates(std::move(config));
+    return;
+  }
+
   // Representation of the current profile to be persisted on disk.
-  const std::string browser_context_id =
-      Profile::FromBrowserContext(browser_context_)
-          ->GetBaseName()
-          .AsUTF8Unsafe();
+  const std::string browser_context_id = profile->GetBaseName().AsUTF8Unsafe();
 
   base::RepeatingCallback<content::BrowserContext*()> browser_context_getter =
       base::BindRepeating(
diff --git a/chrome/browser/first_party_sets/first_party_sets_policy_service_unittest.cc b/chrome/browser/first_party_sets/first_party_sets_policy_service_unittest.cc
index d7a533c..d0943e5b 100644
--- a/chrome/browser/first_party_sets/first_party_sets_policy_service_unittest.cc
+++ b/chrome/browser/first_party_sets/first_party_sets_policy_service_unittest.cc
@@ -11,6 +11,7 @@
 #include "chrome/test/base/testing_profile.h"
 #include "chrome/test/base/testing_profile_manager.h"
 #include "components/privacy_sandbox/privacy_sandbox_prefs.h"
+#include "content/public/browser/first_party_sets_handler.h"
 #include "content/public/common/content_features.h"
 #include "content/public/test/browser_task_environment.h"
 #include "net/base/schemeful_site.h"
@@ -48,6 +49,7 @@
   }
 
   void SetUp() override {
+    content::FirstPartySetsHandler::GetInstance()->ResetForTesting();
     mock_delegate_receiver_.Bind(
         mock_delegate_remote_.BindNewPipeAndPassReceiver());
 
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
index b78abd1e..e2fda0b 100644
--- a/chrome/browser/flag-metadata.json
+++ b/chrome/browser/flag-metadata.json
@@ -729,11 +729,6 @@
     "expiry_milestone": 111
   },
   {
-    "name": "bluetooth-revamp",
-    "owners": [ "khorimoto", "cros-connectivity@google.com" ],
-    "expiry_milestone": 108
-  },
-  {
     "name": "bluetooth-sessionized-metrics",
     "owners": [ "yudiliu", "chromeos-bt-champs@google.com" ],
     "expiry_milestone": 100
@@ -2457,6 +2452,21 @@
     "expiry_milestone": 90
   },
   {
+    "name": "enable-holding-space-predictability",
+    "owners": [ "//ash/public/cpp/holding_space/OWNERS" ],
+    "expiry_milestone": 110
+  },
+  {
+    "name": "enable-holding-space-refresh",
+    "owners": [ "//ash/public/cpp/holding_space/OWNERS" ],
+    "expiry_milestone": 110
+  },
+  {
+    "name": "enable-holding-space-suggestions",
+    "owners": [ "//ash/public/cpp/holding_space/OWNERS" ],
+    "expiry_milestone": 110
+  },
+  {
     "name": "enable-hostname-setting",
     "owners": [ "khorimoto", "cros-connectivity@google.com" ],
     "expiry_milestone": 115
@@ -3922,6 +3932,11 @@
     "expiry_milestone": 113
   },
   {
+    "name": "hats-use-new-histograms",
+    "owners": [ "jackshira", "cros-telemetry@google.com" ],
+    "expiry_milestone": 110
+  },
+  {
     "name": "hdrnet-override",
     "owners": [ "jcliang", "chromeos-camera-eng@google.com" ],
     "expiry_milestone": 110
@@ -6078,6 +6093,11 @@
     "expiry_milestone": 110
   },
   {
+    "name": "shelf-focus-order-v1",
+    "owners": [ "etuck", "//ash/shelf/OWNERS" ],
+    "expiry_milestone": 111
+  },
+  {
     "name": "shelf-gestures-with-vk",
     "owners": ["tbarzic", "//ash/shelf/OWNERS"],
     "expiry_milestone": 105
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
index 2203c5d..15df0a8 100644
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -1637,6 +1637,10 @@
     "Enables using media keys to control the active media session. This "
     "requires MediaSessionService to be enabled too";
 
+const char kHatsUseNewHistogramsName[] = "New ChromeOS HaTS Histograms";
+const char kHatsUseNewHistogramsDescription[] =
+    "Enables the ability for surveys to emit new, more inclusive histograms";
+
 const char kHeavyAdPrivacyMitigationsName[] = "Heavy ad privacy mitigations";
 const char kHeavyAdPrivacyMitigationsDescription[] =
     "Enables privacy mitigations for the heavy ad intervention. Disabling "
@@ -4905,11 +4909,6 @@
     "which will send the Bluetooth link quality statistics such as the "
     "signal strength, the lost packet count, etc. to the host.";
 
-const char kBluetoothRevampName[] = "Bluetooth Revamp";
-const char kBluetoothRevampDescription[] =
-    "Enables the ChromeOS Bluetooth Revamp, which updates Bluetooth system UI "
-    "and related infrastructure.";
-
 const char kBluetoothWbsDogfoodName[] = "Bluetooth WBS dogfood";
 const char kBluetoothWbsDogfoodDescription[] =
     "Enables Bluetooth wideband speech mic as default audio option. "
@@ -5643,6 +5642,22 @@
     "Enable diacritics and other varient character selection on physical "
     "keyboard longpress.";
 
+const char kHoldingSpacePredictabilityName[] =
+    "Enable holding space predictability";
+const char kHoldingSpacePredictabilityDescription[] =
+    "Increases predictability of holding space by being ever present in the "
+    "shelf and always reserving space for downloads and screen captures.";
+
+const char kHoldingSpaceRefreshName[] = "Enable holding space refresh";
+const char kHoldingSpaceRefreshDescription[] =
+    "Enables a refresh of holding space which better conveys the relationship "
+    "with the Files app.";
+
+const char kHoldingSpaceSuggestionsName[] = "Enable holding space suggestions";
+const char kHoldingSpaceSuggestionsDescription[] =
+    "Enables pinned file suggestions in holding space to help the user "
+    "understand and discover the ability to pin.";
+
 const char kImeAssistAutocorrectName[] = "Enable assistive autocorrect";
 const char kImeAssistAutocorrectDescription[] =
     "Enable assistive auto-correct features for native IME";
@@ -5996,6 +6011,23 @@
     "Allows for the shelf's auto-hide preference to be specified separately "
     "for clamshell and tablet mode.";
 
+const char kShelfFocusOrderV1Name[] =
+    "Enable \"V1\" focus ordering of shelf items.";
+const char kShelfFocusOrderV1Description[] =
+    "Enables the \"V1\" focus ordering of shelf items. Once the drag handle "
+    "has accessibility focus the focus ordering is as follows: (1) If the drag "
+    "handle is pressed: the hotseat gets focus before and after the drag "
+    "handle, but once the hotseat has focus that focus cannot naturally return "
+    "to the drag handle (i.e. the hotseat's previous focus becomes the shelf "
+    "navigation area and its next focus becomes the status area); (2) If the "
+    "drag handle is not pressed: the shelf navigation area gets the previous "
+    "focus, and the status area gets the next focus. Note that, in all cases, "
+    "the drag handle is never included in the natural focus order, i.e. the "
+    "navigation area's next focus and the status area's previous focus is "
+    "always the hotseat (even if the hotseat is currently hidden). In other "
+    "words, this change simply allows the focus to more easily move to other "
+    "parts of the shelf when the drag handle is forcibly focused.";
+
 const char kShimlessRMAFlowName[] = "Enable shimless RMA flow";
 const char kShimlessRMAFlowDescription[] = "Enable shimless RMA flow";
 
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
index 8249bc0..5fe7320 100644
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -912,6 +912,9 @@
 extern const char kHardwareMediaKeyHandling[];
 extern const char kHardwareMediaKeyHandlingDescription[];
 
+extern const char kHatsUseNewHistogramsName[];
+extern const char kHatsUseNewHistogramsDescription[];
+
 extern const char kHeavyAdPrivacyMitigationsName[];
 extern const char kHeavyAdPrivacyMitigationsDescription[];
 
@@ -2803,9 +2806,6 @@
 extern const char kBluetoothQualityReportName[];
 extern const char kBluetoothQualityReportDescription[];
 
-extern const char kBluetoothRevampName[];
-extern const char kBluetoothRevampDescription[];
-
 extern const char kBluetoothWbsDogfoodName[];
 extern const char kBluetoothWbsDogfoodDescription[];
 
@@ -3223,6 +3223,15 @@
 extern const char kDiacriticsOnPhysicalKeyboardLongpressName[];
 extern const char kDiacriticsOnPhysicalKeyboardLongpressDescription[];
 
+extern const char kHoldingSpacePredictabilityName[];
+extern const char kHoldingSpacePredictabilityDescription[];
+
+extern const char kHoldingSpaceRefreshName[];
+extern const char kHoldingSpaceRefreshDescription[];
+
+extern const char kHoldingSpaceSuggestionsName[];
+extern const char kHoldingSpaceSuggestionsDescription[];
+
 extern const char kImeAssistAutocorrectName[];
 extern const char kImeAssistAutocorrectDescription[];
 
@@ -3426,6 +3435,9 @@
 extern const char kShelfAutoHideSeparationName[];
 extern const char kShelfAutoHideSeparationDescription[];
 
+extern const char kShelfFocusOrderV1Name[];
+extern const char kShelfFocusOrderV1Description[];
+
 extern const char kShimlessRMAFlowName[];
 extern const char kShimlessRMAFlowDescription[];
 
diff --git a/chrome/browser/flags/android/chrome_session_state.cc b/chrome/browser/flags/android/chrome_session_state.cc
index 00be38b..32a8c48 100644
--- a/chrome/browser/flags/android/chrome_session_state.cc
+++ b/chrome/browser/flags/android/chrome_session_state.cc
@@ -14,11 +14,14 @@
 
 using chrome::android::ActivityType;
 using chrome::android::DarkModeState;
+using chrome::android::MultipleUserProfilesState;
 
 namespace {
 ActivityType activity_type = ActivityType::kUndeclared;
 bool is_in_multi_window_mode = false;
 DarkModeState dark_mode_state = DarkModeState::kUnknown;
+MultipleUserProfilesState multiple_user_profiles_state =
+    MultipleUserProfilesState::kUnknown;
 
 // Name of local state pref to persist the last |chrome::android::ActivityType|.
 const char kLastActivityTypePref[] =
@@ -122,6 +125,16 @@
   local_state->SetInteger(kLastActivityTypePref, static_cast<int>(value));
 }
 
+MultipleUserProfilesState GetMultipleUserProfilesState() {
+  if (multiple_user_profiles_state != MultipleUserProfilesState::kUnknown) {
+    return multiple_user_profiles_state;
+  }
+  multiple_user_profiles_state = static_cast<MultipleUserProfilesState>(
+      Java_ChromeSessionState_getMultipleUserProfilesState(
+          base::android::AttachCurrentThread()));
+  return multiple_user_profiles_state;
+}
+
 }  // namespace android
 }  // namespace chrome
 
diff --git a/chrome/browser/flags/android/chrome_session_state.h b/chrome/browser/flags/android/chrome_session_state.h
index 19008d29..ab2ab44 100644
--- a/chrome/browser/flags/android/chrome_session_state.h
+++ b/chrome/browser/flags/android/chrome_session_state.h
@@ -50,6 +50,17 @@
   kMaxValue = kLightModeApp,
 };
 
+// These values are persisted to logs. Entries should not be renumbered and
+// numeric values should never be reused. See MultipleUserProfilesState in
+// enums.xml.
+// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.chrome.browser.flags
+enum class MultipleUserProfilesState {
+  kUnknown = 0,
+  kSingleProfile = 1,
+  kMultipleProfiles = 2,
+  kMaxValue = kMultipleProfiles,
+};
+
 // Returns the CustomTabs.Visible histogram value that corresponde to |type|.
 CustomTabsVisibilityHistogram GetCustomTabsVisibleValue(ActivityType type);
 
@@ -82,6 +93,9 @@
 void SaveActivityTypeToLocalState(PrefService* local_state,
                                   chrome::android::ActivityType value);
 
+// Returns whether there are multiple user profiles.
+MultipleUserProfilesState GetMultipleUserProfilesState();
+
 }  // namespace android
 }  // namespace chrome
 
diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeSessionState.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeSessionState.java
index dd9b761..2b2e48d 100644
--- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeSessionState.java
+++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeSessionState.java
@@ -4,8 +4,16 @@
 
 package org.chromium.chrome.browser.flags;
 
+import android.content.Context;
+import android.os.UserHandle;
+import android.os.UserManager;
+
+import org.chromium.base.ContextUtils;
+import org.chromium.base.annotations.CalledByNative;
 import org.chromium.base.annotations.NativeMethods;
 
+import java.util.List;
+
 /**
  * Stores high-level state about a session for metrics logging.
  */
@@ -52,6 +60,20 @@
         ChromeSessionStateJni.get().setDarkModeState(darkModeState);
     }
 
+    /**
+     * Returns whether Android has multiple user profiles.
+     */
+    @CalledByNative
+    public static @MultipleUserProfilesState int getMultipleUserProfilesState() {
+        UserManager userManager =
+                (UserManager) ContextUtils.getApplicationContext().getSystemService(
+                        Context.USER_SERVICE);
+        List<UserHandle> userHandles = userManager.getUserProfiles();
+        assert !userHandles.isEmpty();
+        return userHandles.size() > 1 ? MultipleUserProfilesState.MULTIPLE_PROFILES
+                                      : MultipleUserProfilesState.SINGLE_PROFILE;
+    }
+
     @NativeMethods
     interface Natives {
         void setActivityType(@ActivityType int type);
diff --git a/chrome/browser/google/google_brand_code_map_chromeos.cc b/chrome/browser/google/google_brand_code_map_chromeos.cc
index 2c01267..f1d97bb 100644
--- a/chrome/browser/google/google_brand_code_map_chromeos.cc
+++ b/chrome/browser/google/google_brand_code_map_chromeos.cc
@@ -218,6 +218,8 @@
                      {"HYZI", {"YBVF", "EUST", "WJVV"}},
                      {"IGRW", {"FORO", "KHEK", "BREP"}},
                      {"IHZG", {"MLLN", "EZTK", "GJEJ"}},
+                     {"IKNJ", {"HLBB", "ESWD", "GHLX"}},
+                     {"INHJ", {"PAYC", "LWHI", "HOZT"}},
                      {"INUT", {"BRSN", "OJOO", "DWSP"}},
                      {"ISVS", {"JJDG", "QKGL", "OWDE"}},
                      {"IULQ", {"ICMQ", "ZABS", "XMOU"}},
@@ -235,6 +237,7 @@
                      {"JPZQ", {"CCBQ", "ABTW", "KFNE"}},
                      {"JQAO", {"OJYT", "ZDWK", "RQXZ"}},
                      {"JQUD", {"CUTW", "DLJE", "DOON"}},
+                     {"JRJH", {"CPDL", "VCTT", "NBID"}},
                      {"JRVR", {"WGPS", "YETD", "KBWB"}},
                      {"JTFE", {"DNJK", "FJMW", "QBLT"}},
                      {"JVAN", {"FQPY", "WNTW", "XWXD"}},
@@ -466,12 +469,14 @@
                      {"TPHN", {"DGRC", "EDPM", "FLCE"}},
                      {"TQAU", {"PUVO", "MASK", "LJBB"}},
                      {"TSNX", {"NLLF", "DJAG", "FBBO"}},
+                     {"TVCI", {"KZZQ", "XTHC", "WSBP"}},
                      {"TVRZ", {"XWBR", "VSOG", "WGJH"}},
                      {"TXMN", {"WTVY", "GJTZ", "KMRI"}},
                      {"TYOO", {"EGWA", "BJJJ", "GOKE"}},
                      {"TZIV", {"XWTU", "JFLV", "JLEU"}},
                      {"TZNR", {"MHIP", "YJBK", "VDZV"}},
                      {"UBKE", {"CPTX", "EGAC", "MRXT"}},
+                     {"UERT", {"XSDZ", "GOMR", "THXS"}},
                      {"UEUD", {"GNRQ", "ZTCJ", "NPTM"}},
                      {"UGAY", {"YDHM", "HVCY", "ILHO"}},
                      {"UMAU", {"FKAK", "JCTZ", "GDUU"}},
diff --git a/chrome/browser/installable/installable_manager_browsertest.cc b/chrome/browser/installable/installable_manager_browsertest.cc
index 329dbf5..170ac34 100644
--- a/chrome/browser/installable/installable_manager_browsertest.cc
+++ b/chrome/browser/installable/installable_manager_browsertest.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include "components/webapps/browser/features.h"
+#include "components/webapps/browser/installable/installable_data.h"
 #include "components/webapps/browser/installable/installable_manager.h"
 
 #include <memory>
@@ -175,7 +176,7 @@
   const GURL& splash_icon_url() const { return splash_icon_url_; }
   bool has_maskable_splash_icon() const { return has_maskable_splash_icon_; }
   const SkBitmap* splash_icon() const { return splash_icon_.get(); }
-  const std::vector<SkBitmap>& screenshots() const { return screenshots_; }
+  const std::vector<Screenshot>& screenshots() const { return screenshots_; }
   bool valid_manifest() const { return valid_manifest_; }
   bool worker_check_passed() const { return worker_check_passed_; }
 
@@ -189,7 +190,7 @@
   bool has_maskable_primary_icon_;
   GURL splash_icon_url_;
   std::unique_ptr<SkBitmap> splash_icon_;
-  std::vector<SkBitmap> screenshots_;
+  std::vector<Screenshot> screenshots_;
   bool has_maskable_splash_icon_;
   bool valid_manifest_;
   bool worker_check_passed_;
@@ -1957,11 +1958,11 @@
   // Corresponding form_factor should filter out the screenshot with mismatched
   // form_factor.
 #if BUILDFLAG(IS_ANDROID)
-  EXPECT_LT(tester->screenshots()[0].width(),
-            tester->screenshots()[0].height());
+  EXPECT_LT(tester->screenshots()[0].image.width(),
+            tester->screenshots()[0].image.height());
 #else
-  EXPECT_GT(tester->screenshots()[0].width(),
-            tester->screenshots()[0].height());
+  EXPECT_GT(tester->screenshots()[0].image.width(),
+            tester->screenshots()[0].image.height());
 #endif
   EXPECT_EQ(std::vector<InstallableStatusCode>{}, tester->errors());
 }
@@ -2042,8 +2043,8 @@
 
   EXPECT_FALSE(tester->valid_manifest());
   EXPECT_EQ(1u, tester->screenshots().size());
-  EXPECT_EQ(551, tester->screenshots()[0].width());
-  EXPECT_EQ(541, tester->screenshots()[0].height());
+  EXPECT_EQ(551, tester->screenshots()[0].image.width());
+  EXPECT_EQ(541, tester->screenshots()[0].image.height());
   EXPECT_EQ(std::vector<InstallableStatusCode>{}, tester->errors());
 }
 
diff --git a/chrome/browser/lacros/lacros_extension_apps_controller_browsertest.cc b/chrome/browser/lacros/lacros_extension_apps_controller_browsertest.cc
index 1f5c5d5..96d614e 100644
--- a/chrome/browser/lacros/lacros_extension_apps_controller_browsertest.cc
+++ b/chrome/browser/lacros/lacros_extension_apps_controller_browsertest.cc
@@ -62,9 +62,9 @@
 
   // Check that the app is installed.
   {
-    const extensions::Extension* extension =
+    const extensions::Extension* installed_extension =
         lacros_extensions_util::MaybeGetExtension(profile(), extension_id);
-    EXPECT_TRUE(extension && extension->is_platform_app());
+    EXPECT_TRUE(installed_extension && installed_extension->is_platform_app());
   }
 
   // Uninstall the extension.
diff --git a/chrome/browser/media/media_engagement_score_unittest.cc b/chrome/browser/media/media_engagement_score_unittest.cc
index 89ed7b4..3884212e 100644
--- a/chrome/browser/media/media_engagement_score_unittest.cc
+++ b/chrome/browser/media/media_engagement_score_unittest.cc
@@ -52,36 +52,34 @@
   void SetUp() override {
     ChromeRenderViewHostTestHarness::SetUp();
     test_clock.SetNow(GetReferenceTime());
-    score_ = new MediaEngagementScore(&test_clock, url::Origin(), nullptr);
+    score_ = std::make_unique<MediaEngagementScore>(&test_clock, url::Origin(),
+                                                    nullptr);
   }
 
-  void TearDown() override {
-    delete score_;
-    ChromeRenderViewHostTestHarness::TearDown();
-  }
+  void TearDown() override { ChromeRenderViewHostTestHarness::TearDown(); }
 
   base::SimpleTestClock test_clock;
 
  protected:
-  raw_ptr<MediaEngagementScore> score_;
+  std::unique_ptr<MediaEngagementScore> score_;
 
-  void VerifyScore(MediaEngagementScore* score,
+  void VerifyScore(const MediaEngagementScore& score,
                    int expected_visits,
                    int expected_media_playbacks,
                    base::Time expected_last_media_playback_time,
                    bool has_high_score) {
-    EXPECT_EQ(expected_visits, score->visits());
-    EXPECT_EQ(expected_media_playbacks, score->media_playbacks());
+    EXPECT_EQ(expected_visits, score.visits());
+    EXPECT_EQ(expected_media_playbacks, score.media_playbacks());
     EXPECT_EQ(expected_last_media_playback_time,
-              score->last_media_playback_time());
-    EXPECT_EQ(has_high_score, score->high_score());
+              score.last_media_playback_time());
+    EXPECT_EQ(has_high_score, score.high_score());
   }
 
-  void UpdateScore(MediaEngagementScore* score) {
+  void UpdateScore(MediaEngagementScore& score) {
     test_clock.SetNow(test_clock.Now() + base::Hours(1));
 
-    score->IncrementVisits();
-    score->IncrementMediaPlaybacks();
+    score.IncrementVisits();
+    score.IncrementMediaPlaybacks();
   }
 
   void TestScoreInitializesAndUpdates(
@@ -91,42 +89,41 @@
       base::Time expected_last_media_playback_time,
       bool has_high_score,
       bool update_score_expectation) {
-    MediaEngagementScore* initial_score =
-        new MediaEngagementScore(&test_clock, url::Origin(),
-                                 std::move(score_dict), nullptr /* settings */);
+    MediaEngagementScore initial_score(&test_clock, url::Origin(),
+                                       std::move(score_dict),
+                                       nullptr /* settings */);
     VerifyScore(initial_score, expected_visits, expected_media_playbacks,
                 expected_last_media_playback_time, has_high_score);
 
     // Updating the score dict should return false, as the score shouldn't
     // have changed at this point.
-    EXPECT_FALSE(initial_score->UpdateScoreDict());
+    EXPECT_FALSE(initial_score.UpdateScoreDict());
 
     // Increment the scores and check that the values were stored correctly.
     UpdateScore(initial_score);
-    EXPECT_EQ(update_score_expectation, initial_score->UpdateScoreDict());
-    delete initial_score;
+    EXPECT_EQ(update_score_expectation, initial_score.UpdateScoreDict());
   }
 
-  static void SetScore(MediaEngagementScore* score,
+  static void SetScore(MediaEngagementScore& score,
                        int visits,
                        int media_playbacks) {
-    score->SetVisits(visits);
-    score->SetMediaPlaybacks(media_playbacks);
+    score.SetVisits(visits);
+    score.SetMediaPlaybacks(media_playbacks);
   }
 
   void SetScore(int visits, int media_playbacks) {
-    SetScore(score_, visits, media_playbacks);
+    SetScore(*score_, visits, media_playbacks);
   }
 
-  void VerifyGetScoreDetails(MediaEngagementScore* score) {
+  void VerifyGetScoreDetails(const MediaEngagementScore& score) {
     media::mojom::MediaEngagementScoreDetailsPtr details =
-        score->GetScoreDetails();
-    EXPECT_EQ(details->origin, score->origin_);
-    EXPECT_EQ(details->total_score, score->actual_score());
-    EXPECT_EQ(details->visits, score->visits());
-    EXPECT_EQ(details->media_playbacks, score->media_playbacks());
+        score.GetScoreDetails();
+    EXPECT_EQ(details->origin, score.origin_);
+    EXPECT_EQ(details->total_score, score.actual_score());
+    EXPECT_EQ(details->visits, score.visits());
+    EXPECT_EQ(details->media_playbacks, score.media_playbacks());
     EXPECT_EQ(details->last_media_playback_time,
-              score->last_media_playback_time().ToJsTime());
+              score.last_media_playback_time().ToJsTime());
   }
 };
 
@@ -174,9 +171,9 @@
 
 // Test Mojo serialization.
 TEST_F(MediaEngagementScoreTest, MojoSerialization) {
-  VerifyGetScoreDetails(score_);
-  UpdateScore(score_);
-  VerifyGetScoreDetails(score_);
+  VerifyGetScoreDetails(*score_);
+  UpdateScore(*score_);
+  VerifyGetScoreDetails(*score_);
 }
 
 // Test that scores are read / written correctly from / to empty score
@@ -219,35 +216,28 @@
   // Replace |score_| with one with an actual URL, and with a settings map.
   HostContentSettingsMap* settings_map =
       HostContentSettingsMapFactory::GetForProfile(profile());
-  MediaEngagementScore* score =
-      new MediaEngagementScore(&test_clock, origin, settings_map);
+  MediaEngagementScore score(&test_clock, origin, settings_map);
 
   // Verify the score is originally zero, try incrementing and storing
   // the score.
   VerifyScore(score, 0, 0, base::Time(), false);
-  score->IncrementVisits();
+  score.IncrementVisits();
   UpdateScore(score);
-  score->Commit();
+  score.Commit();
 
   // Now confirm the correct score is present on the same origin,
   // but zero for a different origin.
   url::Origin same_origin = url::Origin::Create(GURL("https://www.google.com"));
   url::Origin different_origin =
       url::Origin::Create(GURL("https://www.google.co.uk"));
-  MediaEngagementScore* new_score =
-      new MediaEngagementScore(&test_clock, origin, settings_map);
-  MediaEngagementScore* same_origin_score =
-      new MediaEngagementScore(&test_clock, same_origin, settings_map);
-  MediaEngagementScore* different_origin_score =
-      new MediaEngagementScore(&test_clock, different_origin, settings_map);
+  MediaEngagementScore new_score(&test_clock, origin, settings_map);
+  MediaEngagementScore same_origin_score(&test_clock, same_origin,
+                                         settings_map);
+  MediaEngagementScore different_origin_score(&test_clock, different_origin,
+                                              settings_map);
   VerifyScore(new_score, 2, 1, test_clock.Now(), false);
   VerifyScore(same_origin_score, 2, 1, test_clock.Now(), false);
   VerifyScore(different_origin_score, 0, 0, base::Time(), false);
-
-  delete score;
-  delete new_score;
-  delete same_origin_score;
-  delete different_origin_score;
 }
 
 // Tests content settings read/write.
@@ -272,17 +262,16 @@
       base::Value::FromUniquePtrValue(std::move(score_dict)));
 
   // Make sure we read that data back correctly.
-  MediaEngagementScore* score =
-      new MediaEngagementScore(&test_clock, origin, settings_map);
-  EXPECT_EQ(score->visits(), example_num_visits);
-  EXPECT_EQ(score->media_playbacks(), example_media_playbacks);
-  EXPECT_EQ(score->last_media_playback_time(), test_clock.Now());
-  EXPECT_FALSE(score->high_score());
+  MediaEngagementScore score(&test_clock, origin, settings_map);
+  EXPECT_EQ(score.visits(), example_num_visits);
+  EXPECT_EQ(score.media_playbacks(), example_media_playbacks);
+  EXPECT_EQ(score.last_media_playback_time(), test_clock.Now());
+  EXPECT_FALSE(score.high_score());
 
   UpdateScore(score);
-  score->IncrementMediaPlaybacks();
-  EXPECT_TRUE(score->high_score());
-  score->Commit();
+  score.IncrementMediaPlaybacks();
+  EXPECT_TRUE(score.high_score());
+  score.Commit();
 
   // Now read back content settings and make sure we have the right values.
   base::Value values = settings_map->GetWebsiteSetting(
@@ -302,14 +291,12 @@
   EXPECT_EQ(*stored_media_playbacks, example_media_playbacks + 2);
   EXPECT_EQ(*stored_last_media_playback_time,
             test_clock.Now().ToInternalValue());
-
-  delete score;
 }
 
 // Test that the engagement score is calculated correctly.
 TEST_F(MediaEngagementScoreTest, EngagementScoreCalculation) {
   EXPECT_EQ(0, score_->actual_score());
-  UpdateScore(score_);
+  UpdateScore(*score_);
 
   // Check that the score increases when there is one visit.
   EXPECT_EQ(0.05, score_->actual_score());
@@ -317,7 +304,7 @@
   SetScore(20, 8);
   EXPECT_EQ(0.4, score_->actual_score());
 
-  UpdateScore(score_);
+  UpdateScore(*score_);
   EXPECT_EQ(9.0 / 21.0, score_->actual_score());
 }
 
@@ -338,9 +325,8 @@
   }
 
   {
-    std::unique_ptr<MediaEngagementScore> score(
-        new MediaEngagementScore(&test_clock, origin, settings_map));
-    VerifyScore(score.get(), 20, 6, base::Time(), true);
+    MediaEngagementScore score(&test_clock, origin, settings_map);
+    VerifyScore(score, 20, 6, base::Time(), true);
   }
 }
 
@@ -361,9 +347,8 @@
   }
 
   {
-    std::unique_ptr<MediaEngagementScore> score(
-        new MediaEngagementScore(&test_clock, origin, settings_map));
-    VerifyScore(score.get(), 20, 4, base::Time(), false);
+    MediaEngagementScore score(&test_clock, origin, settings_map);
+    VerifyScore(score, 20, 4, base::Time(), false);
   }
 }
 
@@ -389,9 +374,8 @@
   }
 
   {
-    std::unique_ptr<MediaEngagementScore> score(
-        new MediaEngagementScore(&test_clock, origin, settings_map));
-    EXPECT_FALSE(score->high_score());
+    MediaEngagementScore score(&test_clock, origin, settings_map);
+    EXPECT_FALSE(score.high_score());
     base::RunLoop().RunUntilIdle();
   }
 
@@ -518,10 +502,9 @@
       base::Value::FromUniquePtrValue(std::move(score_dict)));
 
   // Run the data through media engagement score.
-  auto score =
-      std::make_unique<MediaEngagementScore>(&test_clock, origin, settings_map);
-  UpdateScore(score.get());
-  score->Commit();
+  MediaEngagementScore score(&test_clock, origin, settings_map);
+  UpdateScore(score);
+  score.Commit();
 
   // Check the deprecated fields have been dropped.
   base::Value values = settings_map->GetWebsiteSetting(
diff --git a/chrome/browser/media/media_foundation_service_monitor.cc b/chrome/browser/media/media_foundation_service_monitor.cc
index c45572673..b657cb64 100644
--- a/chrome/browser/media/media_foundation_service_monitor.cc
+++ b/chrome/browser/media/media_foundation_service_monitor.cc
@@ -44,10 +44,6 @@
 // for now but may need them in the future when we refine the algorithm.
 constexpr int kMaxNumberOfDisabledTimesInPref = 3;
 
-// Number of days to keep disabling hardware secure decryption after it's
-// disabled previously because of errors.
-constexpr int kDaysDisablingExtended = 7;
-
 // Gets the list of disabled times from "Local State".
 std::vector<base::Time> GetDisabledTimesPref() {
   PrefService* service = g_browser_process->local_state();
@@ -96,18 +92,73 @@
 }
 
 // static
-// TODO(crbug.com/1296219): Refine this disabling algorithm.
+base::Time MediaFoundationServiceMonitor::GetEarliestEnableTime(
+    std::vector<base::Time> disabled_times) {
+  // No disabled time. No need to disable the feature.
+  if (disabled_times.empty())
+    return base::Time::Min();
+
+  // The disabled times should be sorted already. But since they are from the
+  // local state, sort it again just in case.
+  std::sort(disabled_times.begin(), disabled_times.end(), std::greater<>());
+
+  base::Time last_disabled_time = disabled_times[0];
+
+  // Get and normalize `min_disabling_duration` and `max_disabling_duration`.
+  auto min_disabling_duration = base::Days(
+      media::kHardwareSecureDecryptionFallbackMinDisablingDays.Get());
+  auto max_disabling_duration = base::Days(
+      media::kHardwareSecureDecryptionFallbackMaxDisablingDays.Get());
+  min_disabling_duration = std::max(min_disabling_duration, base::Days(1));
+  max_disabling_duration =
+      std::max(max_disabling_duration, min_disabling_duration);
+
+  // One disabled time will disable the feature for `kDaysDisablingExtended`.
+  base::TimeDelta disabling_duration = min_disabling_duration;
+
+  // A previous disabled time will cause longer disabling time since the
+  // probability of failure is much higher.
+  if (disabled_times.size() > 1) {
+    base::Time prev_disabled_time = disabled_times[1];
+
+    // Normally the gap should always be greater than kMinDisablingDuration,
+    // but there could be exceptions, e.g. when a user manipulates local state
+    // directly, or enabling/disabling the fallback manually.
+    // Take a max to normalize it and also avoid divided by zero issue.
+    auto gap = std::max(last_disabled_time - prev_disabled_time,
+                        min_disabling_duration);
+
+    // This is a heuristic algorithm to determine how long we should keep
+    // disabling the feature after the `last_disabled_time`, given it was
+    // disabled previously at `prev_disabled_time` as well. The closer they are
+    // (i.e. the smaller `gap` is), the chance that errors will happen again
+    // becomes larger. Two extreme cases:
+    // - `gap` is kMinDisablingDuration, meaning the feature was disabled again
+    // right after it's re-enabled (after the previous disabling). In this case,
+    // disable it for kMaxDisablingCoefficient * kMinDisablingDuration.
+    // - `gap` is infinity, which should be equivalent to the case where
+    // `prev_disabled_time` doesn't exist. In this case, disable it for
+    // `kMinDisablingDuration`.
+    // We construct a reciprocal function to satisfy the above properties.
+    disabling_duration =
+        ((max_disabling_duration - min_disabling_duration) / gap + 1) *
+        min_disabling_duration;
+    DVLOG(1) << __func__
+             << "disabling_duration =" << disabling_duration.InDays();
+  }
+
+  return last_disabled_time + disabling_duration;
+}
+
+// static
 bool MediaFoundationServiceMonitor::IsHardwareSecureDecryptionDisabledByPref() {
   DVLOG(1) << __func__;
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
 
-  std::vector<base::Time> disabled_times = GetDisabledTimesPref();
-  base::Time current_time = base::Time::Now();
-  for (const auto& disabled_time : disabled_times) {
-    if (current_time - disabled_time < base::Days(kDaysDisablingExtended))
-      return true;
-  }
-  return false;
+  auto earliest_enable_time = GetEarliestEnableTime(GetDisabledTimesPref());
+  DVLOG(1) << __func__ << "earliest_enable_time =" << earliest_enable_time;
+
+  return base::Time::Now() < earliest_enable_time;
 }
 
 // static
diff --git a/chrome/browser/media/media_foundation_service_monitor.h b/chrome/browser/media/media_foundation_service_monitor.h
index ef6f470..12fce86 100644
--- a/chrome/browser/media/media_foundation_service_monitor.h
+++ b/chrome/browser/media/media_foundation_service_monitor.h
@@ -21,8 +21,13 @@
   // Register the pref used in this class.
   static void RegisterPrefs(PrefRegistrySimple* registry);
 
-  // Returns whether hardware secure decryption should be disabled according to
-  // the date stored in "Local State".
+  // Returns the earliest time when hardware secure decryption should be
+  // re-enabled after previous `disabled_times`.
+  static base::Time GetEarliestEnableTime(
+      std::vector<base::Time> disabled_times);
+
+  // Same as above, but uses base::Time::Now() as the `current_time`, and get
+  // `disabled_times` from "Local State".
   static bool IsHardwareSecureDecryptionDisabledByPref();
 
   // Returns the MediaFoundationServiceMonitor singleton.
diff --git a/chrome/browser/media/media_foundation_service_monitor_unittest.cc b/chrome/browser/media/media_foundation_service_monitor_unittest.cc
new file mode 100644
index 0000000..6fba0bfe
--- /dev/null
+++ b/chrome/browser/media/media_foundation_service_monitor_unittest.cc
@@ -0,0 +1,98 @@
+// Copyright 2022 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/media/media_foundation_service_monitor.h"
+
+#include "base/test/scoped_feature_list.h"
+#include "base/time/time.h"
+#include "media/base/media_switches.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace {
+
+// Test the `days_since_last_disabling_date` against `disabled_dates`, both of
+// which are integer(s) number of days since an arbitrary base time.
+void TestEarliestEnableDate(std::vector<int> disabled_dates,
+                            int days_since_last_disabling_date) {
+  // An arbitrary base time for the tests.
+  base::Time base_time;
+  EXPECT_TRUE(base::Time::FromString("22 Sep 2022 12:23 GMT", &base_time));
+
+  std::vector<base::Time> disabled_times;
+  for (const auto& days : disabled_dates) {
+    disabled_times.push_back(base_time + base::Days(days));
+  }
+  auto enable_time =
+      MediaFoundationServiceMonitor::GetEarliestEnableTime(disabled_times);
+  auto expected_time =
+      disabled_times.back() + base::Days(days_since_last_disabling_date);
+
+  // Expect the `enable_time` to be in a range to avoid testing rounding logic.
+  EXPECT_LE(enable_time, expected_time + base::Days(1));
+  EXPECT_GE(enable_time, expected_time - base::Days(1));
+}
+
+}  // namespace
+
+TEST(MediaFoundationServiceMonitorTest, GetEarliestEnableTime_Default) {
+  // One disabling event will cause the feature to be disabled for 30 days,
+  // which is the minimum disabling days.
+  TestEarliestEnableDate({0}, 30);
+  TestEarliestEnableDate({1}, 30);
+  TestEarliestEnableDate({10}, 30);
+
+  // Two close disabling events will cause the feature to be disabled for 180
+  // days, which is the maximum disabling days.
+  TestEarliestEnableDate({10, 10}, 180);
+  TestEarliestEnableDate({10, 20}, 180);
+  TestEarliestEnableDate({10, 40}, 180);
+
+  // The closer the two disabling events are, the longer the feature will be
+  // disabled.
+  TestEarliestEnableDate({10, 50}, 142);
+  TestEarliestEnableDate({10, 100}, 80);
+  TestEarliestEnableDate({10, 1000}, 34);
+
+  // Two far apart disabling events will cause the feature to be disabled for 30
+  // days, which is the minimum disabling days.
+  TestEarliestEnableDate({10, 10000}, 30);
+
+  // The third disabling event time doesn't matter.
+  TestEarliestEnableDate({10, 50}, 142);
+  TestEarliestEnableDate({1, 10, 50}, 142);
+}
+
+TEST(MediaFoundationServiceMonitorTest, GetEarliestEnableTime_Overridden) {
+  // Ensure we take any base::Feature overrides into account.
+  base::test::ScopedFeatureList features;
+  features.InitAndEnableFeatureWithParameters(
+      media::kHardwareSecureDecryptionFallback,
+      {{"min_disabling_days", "10"}, {"max_disabling_days", "60"}});
+
+  // One disabling event will cause the feature to be disabled for 30 days,
+  // which is the minimum disabling days.
+  TestEarliestEnableDate({0}, 10);
+  TestEarliestEnableDate({1}, 10);
+  TestEarliestEnableDate({10}, 10);
+
+  // Two close disabling events will cause the feature to be disabled for 60
+  // days, which is the maximum disabling days.
+  TestEarliestEnableDate({10, 10}, 60);
+  TestEarliestEnableDate({10, 20}, 60);
+
+  // The closer the two disabling events are, the longer the feature will be
+  // disabled.
+  TestEarliestEnableDate({10, 40}, 26);
+  TestEarliestEnableDate({10, 50}, 22);
+  TestEarliestEnableDate({10, 100}, 15);
+
+  // Two far apart disabling events will cause the feature to be disabled for 10
+  // days, which is the minimum disabling days.
+  TestEarliestEnableDate({10, 1000}, 10);
+  TestEarliestEnableDate({10, 10000}, 10);
+
+  // The third disabling event time doesn't matter.
+  TestEarliestEnableDate({10, 50}, 22);
+  TestEarliestEnableDate({1, 10, 50}, 22);
+}
diff --git a/chrome/browser/media/router/discovery/access_code/access_code_media_sink_util.cc b/chrome/browser/media/router/discovery/access_code/access_code_media_sink_util.cc
index b9afc70..582dae0 100644
--- a/chrome/browser/media/router/discovery/access_code/access_code_media_sink_util.cc
+++ b/chrome/browser/media/router/discovery/access_code/access_code_media_sink_util.cc
@@ -31,6 +31,8 @@
 constexpr char kCapabilitiesKey[] = "capabilities";
 constexpr char kPortKey[] = "port";
 constexpr char kIpAddressKey[] = "ip_address";
+constexpr char kModelName[] = "model_name";
+constexpr char kDefaultAccessCodeModelName[] = "Chromecast Cast Moderator";
 
 uint8_t ConvertDeviceCapabilitiesToInt(
     chrome_browser_media::proto::DeviceCapabilities proto) {
@@ -116,6 +118,10 @@
   extra_data.capabilities =
       ConvertDeviceCapabilitiesToInt(discovery_device.device_capabilities());
   extra_data.discovery_type = CastDiscoveryType::kAccessCodeManualEntry;
+  // Various pieces of Chrome make decisions about how to support casting based
+  // on the device's model name, generally speaking treating anything that
+  // starts with "Chromecast" as a first party casting device.
+  extra_data.model_name = kDefaultAccessCodeModelName;
 
   const std::string& processed_uuid =
       MediaSinkInternal::ProcessDeviceUUID(unique_id);
@@ -141,6 +147,7 @@
   extra_data_dict.Set(kPortKey, extra_data.ip_endpoint.port());
   extra_data_dict.Set(kIpAddressKey,
                       extra_data.ip_endpoint.address().ToString());
+  extra_data_dict.Set(kModelName, extra_data.model_name);
 
   base::Value::Dict sink_dict;
   sink_dict.Set(kSinkIdKey, sink.id());
@@ -191,6 +198,9 @@
   extra_data.ip_endpoint = net::IPEndPoint(ip_address, port.value());
   extra_data.capabilities = capabilities.value();
   extra_data.discovery_type = CastDiscoveryType::kAccessCodeRememberedDevice;
+  const std::string* model_name = extra_data_dict->FindString(kModelName);
+  extra_data.model_name =
+      model_name ? *model_name : kDefaultAccessCodeModelName;
 
   const auto* sink_dict = value_dict.FindDict(kSinkDictKey);
   if (!sink_dict)
diff --git a/chrome/browser/media/router/discovery/access_code/access_code_media_sink_util_unittest.cc b/chrome/browser/media/router/discovery/access_code/access_code_media_sink_util_unittest.cc
index 87b5dda..9ff27a5c 100644
--- a/chrome/browser/media/router/discovery/access_code/access_code_media_sink_util_unittest.cc
+++ b/chrome/browser/media/router/discovery/access_code/access_code_media_sink_util_unittest.cc
@@ -118,6 +118,7 @@
       net::IPEndPoint(expected_ip, kCastControlPort);
   expected_extra_data.discovery_type =
       CastDiscoveryType::kAccessCodeManualEntry;
+  expected_extra_data.model_name = "Chromecast Cast Moderator";
 
   media_router::MediaSink expected_sink(
       base::StringPrintf("cast:<%s>", kExpectedSinkId), kExpectedDisplayName,
@@ -169,6 +170,7 @@
   expected_extra_data.ip_endpoint = net::IPEndPoint(expected_ip, port_value);
   expected_extra_data.discovery_type =
       CastDiscoveryType::kAccessCodeManualEntry;
+  expected_extra_data.model_name = "Chromecast Cast Moderator";
 
   media_router::MediaSink expected_sink(
       base::StringPrintf("cast:<%s>", kExpectedSinkId), kExpectedDisplayName,
diff --git a/chrome/browser/media/webrtc/capture_handle_browsertest.cc b/chrome/browser/media/webrtc/capture_handle_browsertest.cc
index 280707f..52188b1b 100644
--- a/chrome/browser/media/webrtc/capture_handle_browsertest.cc
+++ b/chrome/browser/media/webrtc/capture_handle_browsertest.cc
@@ -31,9 +31,6 @@
 #include "content/public/test/browser_test_utils.h"
 #include "content/public/test/prerender_test_util.h"
 
-// TODO(crbug.com/1215089): Enable this test suite on Lacros.
-#if !BUILDFLAG(IS_CHROMEOS_LACROS)
-
 using content::WebContents;
 
 namespace {
@@ -834,5 +831,3 @@
   EXPECT_EQ(script_result, "capture-handle-set");
   EXPECT_EQ(capturing_tab.ReadCaptureHandle(), captured_tab.capture_handle);
 }
-
-#endif  //  !BUILDFLAG(IS_CHROMEOS_LACROS)
diff --git a/chrome/browser/media/webrtc/conditional_focus_browsertest.cc b/chrome/browser/media/webrtc/conditional_focus_browsertest.cc
index 5379e800..d4a6501 100644
--- a/chrome/browser/media/webrtc/conditional_focus_browsertest.cc
+++ b/chrome/browser/media/webrtc/conditional_focus_browsertest.cc
@@ -20,9 +20,6 @@
 #include "content/public/test/browser_test.h"
 #include "third_party/blink/public/common/switches.h"
 
-// TODO(crbug.com/1215089): Enable this test suite on Lacros.
-#if !BUILDFLAG(IS_CHROMEOS_LACROS)
-
 namespace {
 
 using content::WebContents;
@@ -305,5 +302,3 @@
           "'BrowserCaptureMediaStreamTrack': The window of opportunity for "
           "focus-decision is closed.");
 }
-
-#endif  //  !BUILDFLAG(IS_CHROMEOS_LACROS)
diff --git a/chrome/browser/metrics/chrome_android_metrics_provider.cc b/chrome/browser/metrics/chrome_android_metrics_provider.cc
index 59e0dcf9..652ec24 100644
--- a/chrome/browser/metrics/chrome_android_metrics_provider.cc
+++ b/chrome/browser/metrics/chrome_android_metrics_provider.cc
@@ -5,6 +5,7 @@
 #include "chrome/browser/metrics/chrome_android_metrics_provider.h"
 
 #include "base/feature_list.h"
+#include "base/metrics/histogram_functions.h"
 #include "base/metrics/histogram_macros.h"
 #include "chrome/browser/android/customtabs/custom_tab_session_state_tracker.h"
 #include "chrome/browser/android/locale/locale_manager.h"
@@ -31,6 +32,14 @@
                             kAppNotificationStatusBoundary);
 }
 
+void EmitMultipleUserProfilesHistogram() {
+  const chrome::android::MultipleUserProfilesState
+      multiple_user_profiles_state =
+          chrome::android::GetMultipleUserProfilesState();
+  base::UmaHistogramEnumeration("Android.MultipleUserProfilesState",
+                                multiple_user_profiles_state);
+}
+
 metrics::SystemProfileProto::OS::DarkModeState ToProtoDarkModeState(
     chrome::android::DarkModeState state) {
   switch (state) {
@@ -82,6 +91,10 @@
       chrome::android::GetActivityTypeFromLocalState(local_state_);
   if (activity_type.has_value())
     chrome::android::EmitActivityTypeHistograms(activity_type.value());
+
+  // Save whether multiple user profiles are present in Android. This is
+  // unlikely to change across sessions.
+  EmitMultipleUserProfilesHistogram();
 }
 
 void ChromeAndroidMetricsProvider::ProvideCurrentSessionData(
@@ -106,5 +119,6 @@
 
   UmaSessionStats::GetInstance()->ProvideCurrentSessionData();
   EmitAppNotificationStatusHistogram();
+  EmitMultipleUserProfilesHistogram();
   LocaleManager::RecordUserTypeMetrics();
 }
diff --git a/chrome/browser/metrics/chrome_android_metrics_provider_unittest.cc b/chrome/browser/metrics/chrome_android_metrics_provider_unittest.cc
index 6076e630..7431bf8 100644
--- a/chrome/browser/metrics/chrome_android_metrics_provider_unittest.cc
+++ b/chrome/browser/metrics/chrome_android_metrics_provider_unittest.cc
@@ -61,6 +61,24 @@
 }
 
 TEST_F(ChromeAndroidMetricsProviderTest,
+       ProvideCurrentSessionData_HasMultipleUserProfiles) {
+  metrics_provider_.ProvideCurrentSessionData(&uma_proto_);
+  histogram_tester_.ExpectTotalCount("Android.MultipleUserProfilesState", 1);
+  // Caches value, test a second time.
+  metrics_provider_.ProvideCurrentSessionData(&uma_proto_);
+  histogram_tester_.ExpectTotalCount("Android.MultipleUserProfilesState", 2);
+}
+
+TEST_F(ChromeAndroidMetricsProviderTest,
+       ProvidePreviousSessionData_HasMultipleUserProfiles) {
+  metrics_provider_.ProvidePreviousSessionData(&uma_proto_);
+  histogram_tester_.ExpectTotalCount("Android.MultipleUserProfilesState", 1);
+  // Caches value, test a second time.
+  metrics_provider_.ProvidePreviousSessionData(&uma_proto_);
+  histogram_tester_.ExpectTotalCount("Android.MultipleUserProfilesState", 2);
+}
+
+TEST_F(ChromeAndroidMetricsProviderTest,
        ProvideCurrentSessionData_DarkModeState) {
   ASSERT_FALSE(uma_proto_.system_profile().os().has_dark_mode_state());
 
diff --git a/chrome/browser/metrics/structured/ash_structured_metrics_recorder.cc b/chrome/browser/metrics/structured/ash_structured_metrics_recorder.cc
index 5344aa2..b8fe8aa2 100644
--- a/chrome/browser/metrics/structured/ash_structured_metrics_recorder.cc
+++ b/chrome/browser/metrics/structured/ash_structured_metrics_recorder.cc
@@ -9,7 +9,6 @@
 #include "chrome/browser/ash/crosapi/crosapi_manager.h"
 #include "chromeos/crosapi/mojom/structured_metrics_service.mojom.h"
 #include "components/metrics/structured/event.h"
-#include "components/metrics/structured/event_base.h"
 #include "components/metrics/structured/histogram_util.h"
 #include "components/metrics/structured/recorder.h"
 
diff --git a/chrome/browser/metrics/structured/ash_structured_metrics_recorder.h b/chrome/browser/metrics/structured/ash_structured_metrics_recorder.h
index 134a156..411bcca 100644
--- a/chrome/browser/metrics/structured/ash_structured_metrics_recorder.h
+++ b/chrome/browser/metrics/structured/ash_structured_metrics_recorder.h
@@ -7,7 +7,6 @@
 
 #include "chromeos/crosapi/mojom/structured_metrics_service.mojom.h"
 #include "components/metrics/structured/event.h"
-#include "components/metrics/structured/event_base.h"
 #include "components/metrics/structured/structured_metrics_client.h"
 #include "mojo/public/cpp/bindings/remote.h"
 
diff --git a/chrome/browser/metrics/structured/ash_structured_metrics_recorder_browsertest.cc b/chrome/browser/metrics/structured/ash_structured_metrics_recorder_browsertest.cc
index 3ea0cab..b16daf9 100644
--- a/chrome/browser/metrics/structured/ash_structured_metrics_recorder_browsertest.cc
+++ b/chrome/browser/metrics/structured/ash_structured_metrics_recorder_browsertest.cc
@@ -7,13 +7,11 @@
 #include <memory>
 #include <vector>
 
-#include "base/callback.h"
 #include "base/run_loop.h"
 #include "base/test/bind.h"
 #include "base/test/scoped_run_loop_timeout.h"
 #include "chrome/test/base/mixin_based_in_process_browser_test.h"
 #include "components/metrics/structured/event.h"
-#include "components/metrics/structured/event_base.h"
 #include "components/metrics/structured/recorder.h"
 #include "components/metrics/structured/structured_events.h"
 #include "content/public/test/browser_test.h"
@@ -21,19 +19,14 @@
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
 
-namespace metrics {
-namespace structured {
+namespace metrics::structured {
 
 namespace {
 
-using EventDelegate = base::RepeatingCallback<void(const EventBase& event)>;
+using EventDelegate = base::RepeatingCallback<void(const Event& event)>;
 
 using testing::Eq;
 
-// Hash of test project to be used.
-constexpr uint64_t kProjectOneHash = UINT64_C(16881314472396226433);
-constexpr uint64_t kEventOneHash = UINT64_C(13593049295042080097);
-
 }  // namespace
 
 class AshStructuredMetricsRecorderTest : public MixinBasedInProcessBrowserTest,
@@ -55,12 +48,12 @@
   }
 
   // RecorderImpl:
-  void OnRecord(const EventBase& event) override {
-    // If a delegate has not been assigned, do nothing.
+  void OnEventRecord(const Event& event) override {
     if (!event_delegate_)
       return;
     event_delegate_.Run(event);
   }
+
   // Tests do not care about these.
   void OnProfileAdded(const base::FilePath& profile_path) override {}
   void OnReportingStateChanged(bool enabled) override {}
@@ -83,9 +76,9 @@
   // Wait for the test messages to have been received.
   base::RunLoop run_loop;
   EventDelegate event_handler =
-      base::BindLambdaForTesting([&run_loop](const EventBase& event_base) {
-        EXPECT_THAT(event_base.project_name_hash(), Eq(kProjectOneHash));
-        EXPECT_THAT(event_base.name_hash(), Eq(kEventOneHash));
+      base::BindLambdaForTesting([&run_loop](const Event& event) {
+        EXPECT_THAT(event.project_name(), Eq("TestProjectOne"));
+        EXPECT_THAT(event.event_name(), Eq("TestEventOne"));
         run_loop.Quit();
       });
   SetTestMessageReceivedClosure(event_handler);
@@ -95,6 +88,4 @@
 
 // TODO(jongahn): Add a test that verifies behavior if an invalid event is sent.
 
-}  // namespace structured
-
-}  // namespace metrics
+}  // namespace metrics::structured
diff --git a/chrome/browser/metrics/structured/lacros_structured_metrics_recorder.cc b/chrome/browser/metrics/structured/lacros_structured_metrics_recorder.cc
index 69b40b1f..cdc81c98 100644
--- a/chrome/browser/metrics/structured/lacros_structured_metrics_recorder.cc
+++ b/chrome/browser/metrics/structured/lacros_structured_metrics_recorder.cc
@@ -10,7 +10,6 @@
 #include "chromeos/crosapi/mojom/structured_metrics_service.mojom.h"
 #include "chromeos/lacros/lacros_service.h"
 #include "components/metrics/structured/event.h"
-#include "components/metrics/structured/event_base.h"
 #include "components/metrics/structured/structured_metrics_client.h"
 #include "mojo/public/cpp/bindings/remote.h"
 
diff --git a/chrome/browser/metrics/structured/lacros_structured_metrics_recorder.h b/chrome/browser/metrics/structured/lacros_structured_metrics_recorder.h
index 31416127..cb30ad4 100644
--- a/chrome/browser/metrics/structured/lacros_structured_metrics_recorder.h
+++ b/chrome/browser/metrics/structured/lacros_structured_metrics_recorder.h
@@ -12,7 +12,6 @@
 #include "base/observer_list_types.h"
 #include "base/task/sequenced_task_runner.h"
 #include "components/metrics/structured/event.h"
-#include "components/metrics/structured/event_base.h"
 #include "components/metrics/structured/structured_metrics_client.h"
 
 namespace metrics {
diff --git a/chrome/browser/navigation_predictor/navigation_predictor_keyed_service.cc b/chrome/browser/navigation_predictor/navigation_predictor_keyed_service.cc
index cda422c4..e2894d86 100644
--- a/chrome/browser/navigation_predictor/navigation_predictor_keyed_service.cc
+++ b/chrome/browser/navigation_predictor/navigation_predictor_keyed_service.cc
@@ -27,17 +27,16 @@
   if (!prediction.web_contents())
     return;
 
-  base::DictionaryValue message;
+  base::Value::Dict message;
 
-  base::ListValue url_list;
+  base::Value::List url_list;
   for (const GURL& url : prediction.sorted_predicted_urls()) {
     url_list.Append(url.spec());
   }
 
-  message.SetKey("predictions", std::move(url_list));
+  message.Set("predictions", std::move(url_list));
   if (prediction.source_document_url()) {
-    message.SetStringKey("source_url",
-                         prediction.source_document_url()->spec());
+    message.Set("source_url", prediction.source_document_url()->spec());
   }
 
   std::string json_body;
diff --git a/chrome/browser/optimization_guide/page_content_annotations_service_browsertest.cc b/chrome/browser/optimization_guide/page_content_annotations_service_browsertest.cc
index c9d4ebd6..fba72ca 100644
--- a/chrome/browser/optimization_guide/page_content_annotations_service_browsertest.cc
+++ b/chrome/browser/optimization_guide/page_content_annotations_service_browsertest.cc
@@ -478,7 +478,6 @@
 IN_PROC_BROWSER_TEST_F(PageContentAnnotationsServiceBrowserTest,
                        DISABLED_ModelExecutes) {
   base::HistogramTester histogram_tester;
-  ukm::TestAutoSetUkmRecorder ukm_recorder;
 
   GURL url(embedded_test_server()->GetURL("a.com", "/hello.html"));
   ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), url));
@@ -529,10 +528,6 @@
   EXPECT_NE(-1.0, got_content_annotations->model_annotations.visibility_score);
   EXPECT_TRUE(got_content_annotations->model_annotations.categories.empty());
 
-  auto entries = ukm_recorder.GetEntriesByName(
-      ukm::builders::PageContentAnnotations::kEntryName);
-  EXPECT_EQ(1u, entries.size());
-
 #endif  // BUILDFLAG(BUILD_WITH_TFLITE_LIB)
 }
 
diff --git a/chrome/browser/password_manager/android/password_store_android_backend.cc b/chrome/browser/password_manager/android/password_store_android_backend.cc
index d53a070..a8d8c8a3 100644
--- a/chrome/browser/password_manager/android/password_store_android_backend.cc
+++ b/chrome/browser/password_manager/android/password_store_android_backend.cc
@@ -7,10 +7,12 @@
 #include <jni.h>
 #include <list>
 #include <memory>
+#include <utility>
 #include <vector>
 
 #include "base/barrier_callback.h"
 #include "base/callback.h"
+#include "base/functional/bind.h"
 #include "base/location.h"
 #include "base/memory/weak_ptr.h"
 #include "base/metrics/histogram_functions.h"
@@ -21,6 +23,7 @@
 #include "base/strings/strcat.h"
 #include "base/strings/string_piece.h"
 #include "base/threading/sequenced_task_runner_handle.h"
+#include "base/time/time.h"
 #include "chrome/browser/password_manager/android/password_manager_lifecycle_helper_impl.h"
 #include "chrome/browser/password_manager/android/password_store_android_backend_api_error_codes.h"
 #include "chrome/browser/password_manager/android/password_store_android_backend_bridge.h"
@@ -33,6 +36,7 @@
 #include "components/password_manager/core/browser/password_form.h"
 #include "components/password_manager/core/browser/password_manager_eviction_util.h"
 #include "components/password_manager/core/browser/password_store_backend.h"
+#include "components/password_manager/core/browser/password_store_backend_metrics_recorder.h"
 #include "components/password_manager/core/browser/password_store_util.h"
 #include "components/password_manager/core/browser/password_sync_util.h"
 #include "components/password_manager/core/common/password_manager_features.h"
@@ -59,6 +63,7 @@
 constexpr char kAliveAfterConnectionSuspendedHistogram[] =
     "PasswordManager.AliveAfterConnectionSuspendedError";
 constexpr base::TimeDelta kReportAliveAfterErrorDelay = base::Seconds(10);
+constexpr base::TimeDelta kTaskRetryTimeout = base::Seconds(16);
 
 using base::UTF8ToUTF16;
 using password_manager::GetExpressionForFederatedMatching;
@@ -291,11 +296,36 @@
   return false;
 }
 
-bool IsUnrecoverableBackendError(AndroidBackendAPIErrorCode api_error_code) {
+bool IsRetriableOperation(PasswordStoreOperation operation) {
+  switch (operation) {
+    case PasswordStoreOperation::kGetAllLoginsAsync:
+    case PasswordStoreOperation::kGetAutofillableLoginsAsync:
+      return true;
+    case PasswordStoreOperation::kGetAllLoginsForAccountAsync:
+    case PasswordStoreOperation::kFillMatchingLoginsAsync:
+    case PasswordStoreOperation::kAddLoginAsync:
+    case PasswordStoreOperation::kUpdateLoginAsync:
+    case PasswordStoreOperation::kRemoveLoginForAccount:
+    case PasswordStoreOperation::kRemoveLoginAsync:
+    case PasswordStoreOperation::kRemoveLoginsByURLAndTimeAsync:
+    case PasswordStoreOperation::kRemoveLoginsCreatedBetweenAsync:
+    case PasswordStoreOperation::kDisableAutoSignInForOriginsAsync:
+    case PasswordStoreOperation::kClearAllLocalPasswords:
+      return false;
+  }
+  NOTREACHED() << "Operation code not handled";
+  return false;
+}
+
+bool IsUnrecoverableBackendError(AndroidBackendAPIErrorCode api_error_code,
+                                 PasswordStoreOperation operation) {
   if (password_manager_upm_eviction::ShouldRetryOnApiError(
-          static_cast<int>(api_error_code))) {
-    // If the error is retriable, it does not require any error-specific support
-    // and could be recovered.
+          static_cast<int>(api_error_code)) &&
+      IsRetriableOperation(operation)) {
+    // If the error and the operation are retriable, the error does not require
+    // any error-specific support and could be recovered.
+    // Retriable operations as they are defined at the moment should not result
+    // in eviction, not even if the retrying has timed out.
     return false;
   }
 
@@ -353,8 +383,17 @@
   return PasswordStoreBackendErrorType::kUncategorized;
 }
 
+bool ShouldRetryOperation(PasswordStoreOperation operation,
+                          int api_error,
+                          base::TimeDelta delay) {
+  return IsRetriableOperation(operation) &&
+         password_manager_upm_eviction::ShouldRetryOnApiError(api_error) &&
+         (delay < kTaskRetryTimeout);
+}
+
 PasswordStoreBackendError BackendErrorFromAndroidBackendError(
-    const AndroidBackendError& error) {
+    const AndroidBackendError& error,
+    PasswordStoreOperation operation) {
   if (error.type != AndroidBackendErrorType::kExternalError) {
     return PasswordStoreBackendError(
         PasswordStoreBackendErrorType::kUncategorized,
@@ -369,22 +408,23 @@
         PasswordStoreBackendErrorRecoveryType::kUnrecoverable);
   }
 
-  if (password_manager_upm_eviction::ShouldRetryOnApiError(
-          error.api_error_code.value())) {
-    return PasswordStoreBackendError(
-        PasswordStoreBackendErrorType::kUncategorized,
-        PasswordStoreBackendErrorRecoveryType::kRetriable);
-  }
-
-  PasswordStoreBackendErrorRecoveryType recovery_type =
-      IsUnrecoverableBackendError(
-          static_cast<AndroidBackendAPIErrorCode>(error.api_error_code.value()))
-          ? PasswordStoreBackendErrorRecoveryType::kUnrecoverable
-          : PasswordStoreBackendErrorRecoveryType::kRecoverable;
   AndroidBackendAPIErrorCode api_error_code =
       static_cast<AndroidBackendAPIErrorCode>(error.api_error_code.value());
   PasswordStoreBackendErrorType error_type =
       APIErrorCodeToErrorType(api_error_code);
+
+  if (password_manager_upm_eviction::ShouldRetryOnApiError(
+          error.api_error_code.value())) {
+    return PasswordStoreBackendError(
+        error_type,
+        IsRetriableOperation(operation)
+            ? PasswordStoreBackendErrorRecoveryType::kRetriable
+            : PasswordStoreBackendErrorRecoveryType::kUnrecoverable);
+  }
+  PasswordStoreBackendErrorRecoveryType recovery_type =
+      IsUnrecoverableBackendError(api_error_code, operation)
+          ? PasswordStoreBackendErrorRecoveryType::kUnrecoverable
+          : PasswordStoreBackendErrorRecoveryType::kRecoverable;
   return PasswordStoreBackendError(error_type, recovery_type);
 }
 
@@ -490,15 +530,23 @@
 
 PasswordStoreAndroidBackend::JobReturnHandler::JobReturnHandler(
     LoginsOrErrorReply callback,
-    PasswordStoreBackendMetricsRecorder metrics_recorder)
+    PasswordStoreBackendMetricsRecorder metrics_recorder,
+    base::TimeDelta delay,
+    PasswordStoreOperation operation)
     : success_callback_(std::move(callback)),
-      metrics_recorder_(std::move(metrics_recorder)) {}
+      metrics_recorder_(std::move(metrics_recorder)),
+      delay_(delay),
+      operation_(operation) {}
 
 PasswordStoreAndroidBackend::JobReturnHandler::JobReturnHandler(
     PasswordChangesOrErrorReply callback,
-    PasswordStoreBackendMetricsRecorder metrics_recorder)
+    PasswordStoreBackendMetricsRecorder metrics_recorder,
+    base::TimeDelta delay,
+    PasswordStoreOperation operation)
     : success_callback_(std::move(callback)),
-      metrics_recorder_(std::move(metrics_recorder)) {}
+      metrics_recorder_(std::move(metrics_recorder)),
+      delay_(delay),
+      operation_(operation) {}
 
 PasswordStoreAndroidBackend::JobReturnHandler::JobReturnHandler(
     JobReturnHandler&&) = default;
@@ -518,6 +566,15 @@
   return metrics_recorder_.GetElapsedTimeSinceCreation();
 }
 
+base::TimeDelta PasswordStoreAndroidBackend::JobReturnHandler::GetDelay() {
+  return delay_;
+}
+
+PasswordStoreOperation
+PasswordStoreAndroidBackend::JobReturnHandler::GetOperation() {
+  return operation_;
+}
+
 PasswordStoreAndroidBackend::PasswordStoreAndroidBackend(PrefService* prefs)
     : lifecycle_helper_(std::make_unique<PasswordManagerLifecycleHelperImpl>()),
       bridge_(PasswordStoreAndroidBackendBridge::Create()) {
@@ -572,16 +629,17 @@
 
 void PasswordStoreAndroidBackend::GetAllLoginsAsync(
     LoginsOrErrorReply callback) {
-  GetAllLoginsForAccount(GetAccount(GetSyncingAccount(sync_service_)),
-                         std::move(callback));
+  GetAllLoginsForAccountInternal(GetAccount(GetSyncingAccount(sync_service_)),
+                                 std::move(callback),
+                                 PasswordStoreOperation::kGetAllLoginsAsync,
+                                 /*delay=*/base::Seconds(0));
 }
 
 void PasswordStoreAndroidBackend::GetAutofillableLoginsAsync(
     LoginsOrErrorReply callback) {
-  JobId job_id = bridge_->GetAutofillableLogins(
-      GetAccount(GetSyncingAccount(sync_service_)));
-  QueueNewJob(job_id, std::move(callback),
-              MetricInfix("GetAutofillableLoginsAsync"));
+  GetAutofillableLoginsAsyncInternal(
+      std::move(callback), PasswordStoreOperation::kGetAutofillableLoginsAsync,
+      /*delay=*/base::Seconds(0));
 }
 
 void PasswordStoreAndroidBackend::GetAllLoginsForAccountAsync(
@@ -618,7 +676,8 @@
     callbacks_chain = base::BindOnce(
         &PasswordStoreAndroidBackend::GetLoginsAsync,
         weak_ptr_factory_.GetWeakPtr(), std::move(form), include_psl,
-        base::BindOnce(barrier_callback).Then(std::move(callbacks_chain)));
+        base::BindOnce(barrier_callback).Then(std::move(callbacks_chain)),
+        PasswordStoreOperation::kFillMatchingLoginsAsync);
   }
   std::move(callbacks_chain).Run();
 }
@@ -630,7 +689,9 @@
          (form.username_value.empty() && form.password_value.empty()));
   JobId job_id =
       bridge_->AddLogin(form, GetAccount(GetSyncingAccount(sync_service_)));
-  QueueNewJob(job_id, std::move(callback), MetricInfix("AddLoginAsync"));
+  QueueNewJob(job_id, std::move(callback), MetricInfix("AddLoginAsync"),
+              PasswordStoreOperation::kAddLoginAsync,
+              /*delay=*/base::Seconds(0));
 }
 
 void PasswordStoreAndroidBackend::UpdateLoginAsync(
@@ -640,14 +701,17 @@
          (form.username_value.empty() && form.password_value.empty()));
   JobId job_id =
       bridge_->UpdateLogin(form, GetAccount(GetSyncingAccount(sync_service_)));
-  QueueNewJob(job_id, std::move(callback), MetricInfix("UpdateLoginAsync"));
+  QueueNewJob(job_id, std::move(callback), MetricInfix("UpdateLoginAsync"),
+              PasswordStoreOperation::kUpdateLoginAsync,
+              /*delay=*/base::Seconds(0));
 }
 
 void PasswordStoreAndroidBackend::RemoveLoginAsync(
     const PasswordForm& form,
     PasswordChangesOrErrorReply callback) {
-  RemoveLoginForAccount(form, GetAccount(GetSyncingAccount(sync_service_)),
-                        std::move(callback));
+  RemoveLoginForAccountInternal(
+      form, GetAccount(GetSyncingAccount(sync_service_)), std::move(callback),
+      PasswordStoreOperation::kRemoveLoginAsync, /*delay=*/base::Seconds(0));
 }
 
 void PasswordStoreAndroidBackend::FilterAndRemoveLogins(
@@ -655,6 +719,8 @@
     base::Time delete_begin,
     base::Time delete_end,
     PasswordChangesOrErrorReply reply,
+    PasswordStoreOperation operation,
+    base::TimeDelta delay,
     LoginsResultOrError result) {
   if (absl::holds_alternative<PasswordStoreBackendError>(result)) {
     std::move(reply).Run(
@@ -681,9 +747,11 @@
   base::OnceClosure callbacks_chain = base::DoNothing();
   for (const auto& login : logins_to_remove) {
     callbacks_chain = base::BindOnce(
-        &PasswordStoreAndroidBackend::RemoveLoginAsync,
+        &PasswordStoreAndroidBackend::RemoveLoginForAccountInternal,
         weak_ptr_factory_.GetWeakPtr(), std::move(login),
-        base::BindOnce(barrier_callback).Then(std::move(callbacks_chain)));
+        GetAccount(GetSyncingAccount(sync_service_)),
+        base::BindOnce(barrier_callback).Then(std::move(callbacks_chain)),
+        operation, delay);
   }
   std::move(callbacks_chain).Run();
 }
@@ -699,10 +767,16 @@
       ReportMetricsAndInvokeCallbackForStoreModifications(
           MetricInfix("RemoveLoginsByURLAndTimeAsync"), std::move(callback));
 
-  GetAllLoginsAsync(base::BindOnce(
-      &PasswordStoreAndroidBackend::FilterAndRemoveLogins,
-      weak_ptr_factory_.GetWeakPtr(), std::move(url_filter), delete_begin,
-      delete_end, std::move(record_metrics_and_reply)));
+  GetAllLoginsForAccountInternal(
+      GetAccount(GetSyncingAccount(sync_service_)),
+      base::BindOnce(&PasswordStoreAndroidBackend::FilterAndRemoveLogins,
+                     weak_ptr_factory_.GetWeakPtr(), std::move(url_filter),
+                     delete_begin, delete_end,
+                     std::move(record_metrics_and_reply),
+                     PasswordStoreOperation::kRemoveLoginsByURLAndTimeAsync,
+                     /*delay=*/base::Seconds(0)),
+      PasswordStoreOperation::kRemoveLoginsByURLAndTimeAsync,
+      /*delay=*/base::Seconds(0));
 }
 
 void PasswordStoreAndroidBackend::RemoveLoginsCreatedBetweenAsync(
@@ -714,12 +788,18 @@
       ReportMetricsAndInvokeCallbackForStoreModifications(
           MetricInfix("RemoveLoginsCreatedBetweenAsync"), std::move(callback));
 
-  GetAllLoginsAsync(base::BindOnce(
-      &PasswordStoreAndroidBackend::FilterAndRemoveLogins,
-      weak_ptr_factory_.GetWeakPtr(),
-      // Include all urls.
-      base::BindRepeating([](const GURL&) { return true; }), delete_begin,
-      delete_end, std::move(record_metrics_and_reply)));
+  GetAllLoginsForAccountInternal(
+      GetAccount(GetSyncingAccount(sync_service_)),
+      base::BindOnce(&PasswordStoreAndroidBackend::FilterAndRemoveLogins,
+                     weak_ptr_factory_.GetWeakPtr(),
+                     // Include all urls.
+                     base::BindRepeating([](const GURL&) { return true; }),
+                     delete_begin, delete_end,
+                     std::move(record_metrics_and_reply),
+                     PasswordStoreOperation::kRemoveLoginsCreatedBetweenAsync,
+                     /*delay=*/base::Seconds(0)),
+      PasswordStoreOperation::kRemoveLoginsCreatedBetweenAsync,
+      /*delay=*/base::Seconds(0));
 }
 
 void PasswordStoreAndroidBackend::DisableAutoSignInForOriginsAsync(
@@ -743,10 +823,13 @@
               MetricInfix("DisableAutoSignInForOriginsAsync")),
           std::move(completion));
 
-  GetAllLoginsAsync(
+  GetAllLoginsForAccountInternal(
+      GetAccount(GetSyncingAccount(sync_service_)),
       base::BindOnce(&PasswordStoreAndroidBackend::FilterAndDisableAutoSignIn,
                      weak_ptr_factory_.GetWeakPtr(), origin_filter,
-                     std::move(record_metrics_and_run_completion)));
+                     std::move(record_metrics_and_run_completion)),
+      PasswordStoreOperation::kDisableAutoSignInForOriginsAsync,
+      /*delay=*/base::Seconds(0));
 }
 
 SmartBubbleStatsStore* PasswordStoreAndroidBackend::GetSmartBubbleStatsStore() {
@@ -793,10 +876,12 @@
               base::Unretained(raw_recorder));
 
           callbacks_chain = base::BindOnce(
-              &PasswordStoreAndroidBackend::RemoveLoginForAccount, weak_self,
-              std::move(*login), PasswordStoreOperationTarget::kLocalStorage,
-              std::move(record_removal_result)
-                  .Then(std::move(callbacks_chain)));
+              &PasswordStoreAndroidBackend::RemoveLoginForAccountInternal,
+              weak_self, std::move(*login),
+              PasswordStoreOperationTarget::kLocalStorage,
+              std::move(record_removal_result).Then(std::move(callbacks_chain)),
+              PasswordStoreOperation::kClearAllLocalPasswords,
+              /*delay=*/base::Seconds(0));
         }
 
         std::move(callbacks_chain).Run();
@@ -806,8 +891,10 @@
           BackendInfix("AndroidBackend"),
           MetricInfix("ClearAllLocalPasswords")));
 
-  GetAllLoginsForAccount(PasswordStoreOperationTarget::kLocalStorage,
-                         std::move(cleaning_callback));
+  GetAllLoginsForAccountInternal(
+      PasswordStoreOperationTarget::kLocalStorage, std::move(cleaning_callback),
+      PasswordStoreOperation::kClearAllLocalPasswords,
+      /*delay=*/base::Seconds(0));
 }
 
 void PasswordStoreAndroidBackend::OnSyncServiceInitialized(
@@ -823,6 +910,47 @@
   sync_controller_delegate_->OnSyncServiceInitialized(sync_service);
 }
 
+void PasswordStoreAndroidBackend::GetAutofillableLoginsAsyncInternal(
+    LoginsOrErrorReply callback,
+    PasswordStoreOperation operation,
+    base::TimeDelta delay) {
+  JobId job_id = bridge_->GetAutofillableLogins(
+      GetAccount(GetSyncingAccount(sync_service_)));
+  QueueNewJob(job_id, std::move(callback),
+              MetricInfix("GetAutofillableLoginsAsync"),
+              PasswordStoreOperation::kGetAutofillableLoginsAsync, delay);
+}
+
+void PasswordStoreAndroidBackend::GetAllLoginsForAccountInternal(
+    PasswordStoreAndroidBackendBridge::Account account,
+    LoginsOrErrorReply callback,
+    PasswordStoreOperation operation,
+    base::TimeDelta delay) {
+  JobId job_id = bridge_->GetAllLogins(std::move(account));
+  QueueNewJob(job_id, std::move(callback), MetricInfix("GetAllLoginsAsync"),
+              operation, delay);
+}
+
+void PasswordStoreAndroidBackend::RemoveLoginForAccountInternal(
+    const PasswordForm& form,
+    PasswordStoreAndroidBackendBridge::Account account,
+    PasswordChangesOrErrorReply callback,
+    PasswordStoreOperation operation,
+    base::TimeDelta delay) {
+  JobId job_id = bridge_->RemoveLogin(form, std::move(account));
+  QueueNewJob(job_id, std::move(callback), MetricInfix("RemoveLoginAsync"),
+              operation, delay);
+}
+
+void PasswordStoreAndroidBackend::RetryOperation(
+    base::OnceCallback<void(base::TimeDelta)> callback,
+    base::TimeDelta delay) {
+  base::TimeDelta new_delay =
+      delay.InSeconds() == 0 ? base::Seconds(1) : delay * 2;
+  main_task_runner_->PostDelayedTask(
+      FROM_HERE, base::BindOnce(std::move(callback), new_delay), new_delay);
+}
+
 void PasswordStoreAndroidBackend::OnCompleteWithLogins(
     JobId job_id,
     std::vector<PasswordForm> passwords) {
@@ -865,6 +993,7 @@
   absl::optional<JobReturnHandler> reply = GetAndEraseJob(job_id);
   if (!reply.has_value())
     return;  // Task cleaned up after returning from background.
+  PasswordStoreOperation operation = reply->GetOperation();
   if (error.api_error_code.has_value() && sync_service_) {
     // TODO(crbug.com/1324588): DCHECK_EQ(api_error_code,
     // AndroidBackendAPIErrorCode::kDeveloperError) to catch dev errors.
@@ -872,11 +1001,61 @@
     RecordApiErrorInCombinationWithSyncStatus(error.api_error_code.value(),
                                               sync_service_->GetAuthError());
 
-    // If the user is experiencing an error unresolvable by Chrome or by the
-    // user, unenroll the user from the UPM experience.
     int api_error = error.api_error_code.value();
     auto api_error_code = static_cast<AndroidBackendAPIErrorCode>(api_error);
-    if (password_manager::IsUnrecoverableBackendError(api_error_code)) {
+    // TODO(crbug.com/1349276): Remove this after analyzing metrics
+    ReportAliveStatusOnAPIErrorIfNeeded(api_error_code);
+
+    if (ShouldRecordUptimeOnApiError(api_error_code)) {
+      base::UmaHistogramLongTimes(
+          GetUptimeHistogramNameForApiError(api_error_code),
+          base::Time::Now() - initialized_at_);
+    }
+
+    // TODO(crbug.com/1372343): Extract the retry logic into a separate method.
+
+    // Retry the call if the performed operation in combination with the error
+    // was retriable and the time limit was not reached.
+    base::TimeDelta delay = reply->GetDelay();
+    if (ShouldRetryOperation(operation, api_error, delay)) {
+      switch (operation) {
+        case PasswordStoreOperation::kGetAllLoginsAsync:
+          RetryOperation(
+              base::BindOnce(
+                  &PasswordStoreAndroidBackend::GetAllLoginsForAccountInternal,
+                  weak_ptr_factory_.GetWeakPtr(),
+                  GetAccount(GetSyncingAccount(sync_service_)),
+                  std::move(*reply).Get<LoginsOrErrorReply>(), operation),
+              delay);
+          return;
+        case PasswordStoreOperation::kGetAutofillableLoginsAsync:
+          RetryOperation(
+              base::BindOnce(&PasswordStoreAndroidBackend::
+                                 GetAutofillableLoginsAsyncInternal,
+                             weak_ptr_factory_.GetWeakPtr(),
+                             std::move(*reply).Get<LoginsOrErrorReply>(),
+                             operation),
+              delay);
+          return;
+        case PasswordStoreOperation::kGetAllLoginsForAccountAsync:
+        case PasswordStoreOperation::kFillMatchingLoginsAsync:
+        case PasswordStoreOperation::kAddLoginAsync:
+        case PasswordStoreOperation::kUpdateLoginAsync:
+        case PasswordStoreOperation::kRemoveLoginForAccount:
+        case PasswordStoreOperation::kRemoveLoginAsync:
+        case PasswordStoreOperation::kRemoveLoginsByURLAndTimeAsync:
+        case PasswordStoreOperation::kRemoveLoginsCreatedBetweenAsync:
+        case PasswordStoreOperation::kDisableAutoSignInForOriginsAsync:
+        case PasswordStoreOperation::kClearAllLocalPasswords:
+          NOTREACHED();
+          return;
+      }
+    }
+
+    // If the user is experiencing an error unresolvable by Chrome or by the
+    // user, unenroll the user from the UPM experience.
+    if (password_manager::IsUnrecoverableBackendError(api_error_code,
+                                                      operation)) {
       if (!password_manager_upm_eviction::IsCurrentUserEvicted(prefs_)) {
         if (base::FeatureList::IsEnabled(
                 password_manager::features::kShowUPMErrorNotification)) {
@@ -892,18 +1071,9 @@
       // considered recoverable.
       prefs_->SetBoolean(prefs::kSavePasswordsSuspendedByError, true);
     }
-
-    // TODO(crbug.com/1349276): Remove this after analyzing metrics
-    ReportAliveStatusOnAPIErrorIfNeeded(api_error_code);
-
-    if (ShouldRecordUptimeOnApiError(api_error_code)) {
-      base::UmaHistogramLongTimes(
-          GetUptimeHistogramNameForApiError(api_error_code),
-          base::Time::Now() - initialized_at_);
-    }
   }
   PasswordStoreBackendError reported_error =
-      BackendErrorFromAndroidBackendError(error);
+      BackendErrorFromAndroidBackendError(error, operation);
   reply->RecordMetrics(std::move(error));
   // The decision whether to show an error UI depends on the re-enrollment pref
   // and as such the consumers should be called last.
@@ -925,13 +1095,16 @@
 template <typename Callback>
 void PasswordStoreAndroidBackend::QueueNewJob(JobId job_id,
                                               Callback callback,
-                                              MetricInfix metric_infix) {
+                                              MetricInfix metric_infix,
+                                              PasswordStoreOperation operation,
+                                              base::TimeDelta delay) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(main_sequence_checker_);
   request_for_job_.emplace(
-      job_id,
-      JobReturnHandler(std::move(callback), PasswordStoreBackendMetricsRecorder(
-                                                BackendInfix("AndroidBackend"),
-                                                std::move(metric_infix))));
+      job_id, JobReturnHandler(
+                  std::move(callback),
+                  PasswordStoreBackendMetricsRecorder(
+                      BackendInfix("AndroidBackend"), std::move(metric_infix)),
+                  delay, operation));
 }
 
 absl::optional<PasswordStoreAndroidBackend::JobReturnHandler>
@@ -945,16 +1118,19 @@
   return reply;
 }
 
-void PasswordStoreAndroidBackend::GetLoginsAsync(const PasswordFormDigest& form,
-                                                 bool include_psl,
-                                                 LoginsOrErrorReply callback) {
+void PasswordStoreAndroidBackend::GetLoginsAsync(
+    const PasswordFormDigest& form,
+    bool include_psl,
+    LoginsOrErrorReply callback,
+    PasswordStoreOperation operation) {
   JobId job_id = bridge_->GetLoginsForSignonRealm(
       FormToSignonRealmQuery(form, include_psl),
       GetAccount(GetSyncingAccount(sync_service_)));
   QueueNewJob(job_id,
               base::BindOnce(&ValidateSignonRealm, std::move(form), include_psl,
                              std::move(callback)),
-              MetricInfix("GetLoginsAsync"));
+              MetricInfix("GetLoginsAsync"), operation,
+              /*delay=*/base::Seconds(0));
 }
 
 void PasswordStoreAndroidBackend::FilterAndDisableAutoSignIn(
@@ -1069,16 +1245,19 @@
 void PasswordStoreAndroidBackend::GetAllLoginsForAccount(
     PasswordStoreAndroidBackendBridge::Account account,
     LoginsOrErrorReply callback) {
-  JobId job_id = bridge_->GetAllLogins(std::move(account));
-  QueueNewJob(job_id, std::move(callback), MetricInfix("GetAllLoginsAsync"));
+  GetAllLoginsForAccountInternal(
+      account, std::move(callback),
+      PasswordStoreOperation::kGetAllLoginsForAccountAsync,
+      /*delay=*/base::Seconds(0));
 }
 
 void PasswordStoreAndroidBackend::RemoveLoginForAccount(
     const PasswordForm& form,
     PasswordStoreAndroidBackendBridge::Account account,
     PasswordChangesOrErrorReply callback) {
-  JobId job_id = bridge_->RemoveLogin(form, std::move(account));
-  QueueNewJob(job_id, std::move(callback), MetricInfix("RemoveLoginAsync"));
+  RemoveLoginForAccountInternal(form, std::move(account), std::move(callback),
+                                PasswordStoreOperation::kRemoveLoginForAccount,
+                                /*delay=*/base::Seconds(0));
 }
 
 void PasswordStoreAndroidBackend::OnForegroundSessionStart() {
diff --git a/chrome/browser/password_manager/android/password_store_android_backend.h b/chrome/browser/password_manager/android/password_store_android_backend.h
index fdf77ed..e9657375 100644
--- a/chrome/browser/password_manager/android/password_store_android_backend.h
+++ b/chrome/browser/password_manager/android/password_store_android_backend.h
@@ -43,6 +43,35 @@
   kMaxValue = kInactiveUnenrolledDueToErrors
 };
 
+// This enum is used in the JobReturnHandler for tracking the store operation
+// that started the job so that the correct operation can be retried when the
+// job encountered an error.
+enum class PasswordStoreOperation {
+  // Operations that are safe to retry because they are non-modifying and not
+  // visible to the user.
+  kGetAllLoginsAsync = 0,
+  kGetAutofillableLoginsAsync = 1,
+
+  // Operation is only used from the migration and should not be retried.
+  kGetAllLoginsForAccountAsync = 2,
+
+  // Operation that is non-modifying, but not safe to retry because it is
+  // user-visible.
+  kFillMatchingLoginsAsync = 3,
+
+  // Operations that are not safe to retry because they are modifying.
+  kAddLoginAsync = 4,
+  kUpdateLoginAsync = 5,
+  kRemoveLoginForAccount = 6,
+  kRemoveLoginAsync = 7,
+  kRemoveLoginsByURLAndTimeAsync = 8,
+  kRemoveLoginsCreatedBetweenAsync = 9,
+  kDisableAutoSignInForOriginsAsync = 10,
+  kClearAllLocalPasswords = 11,
+
+  kMaxValue = kClearAllLocalPasswords
+};
+
 // Android-specific password store backend that delegates every request to
 // Google Mobile Service.
 // It uses a `PasswordStoreAndroidBackendBridge` to send API requests for each
@@ -69,18 +98,28 @@
 
   class ClearAllLocalPasswordsMetricRecorder;
 
-  // Wraps the handler for an asynchronous job (if successful) and invokes the
-  // supplied metrics recorded upon completion. An object of this type shall be
-  // created and stored in |request_for_job_| once an asynchronous begins, and
-  // destroyed once the job is finished.
+  // Wraps the handler for an asynchronous job (if successful or scheduled to be
+  // retried) and invokes the supplied metrics recorded upon completion. An
+  // object of this type shall be created and stored in |request_for_job_| once
+  // an asynchronous task begins, and destroyed once the job is finished.
+  // The handler stores an |operation| which determines whether the method
+  // matching the |operation| can be retried due to an error. The operations are
+  // retried with exponential backoff. The |delay| with which the job was
+  // started is stored in the handler so that the next retry of the job can
+  // increase the |delay|. NOTE: Currently only retries for operations which
+  // match 1-to-1 to methods are supported.
   class JobReturnHandler {
    public:
     using ErrorReply = base::OnceClosure;
 
     JobReturnHandler(LoginsOrErrorReply callback,
-                     PasswordStoreBackendMetricsRecorder metrics_recorder);
+                     PasswordStoreBackendMetricsRecorder metrics_recorder,
+                     base::TimeDelta delay,
+                     PasswordStoreOperation operation);
     JobReturnHandler(PasswordChangesOrErrorReply callback,
-                     PasswordStoreBackendMetricsRecorder metrics_recorder);
+                     PasswordStoreBackendMetricsRecorder metrics_recorder,
+                     base::TimeDelta delay,
+                     PasswordStoreOperation operation);
     JobReturnHandler(JobReturnHandler&&);
     JobReturnHandler& operator=(JobReturnHandler&&) = delete;
     ~JobReturnHandler();
@@ -98,10 +137,15 @@
     void RecordMetrics(absl::optional<AndroidBackendError> error) const;
     base::TimeDelta GetElapsedTimeSinceStart() const;
 
+    base::TimeDelta GetDelay();
+    PasswordStoreOperation GetOperation();
+
    private:
     absl::variant<LoginsOrErrorReply, PasswordChangesOrErrorReply>
         success_callback_;
     PasswordStoreBackendMetricsRecorder metrics_recorder_;
+    base::TimeDelta delay_;
+    PasswordStoreOperation operation_;
   };
 
   using JobId = PasswordStoreAndroidBackendBridge::JobId;
@@ -149,6 +193,43 @@
   void ClearAllLocalPasswords() override;
   void OnSyncServiceInitialized(syncer::SyncService* sync_service) override;
 
+  // Internal method used for implementing the GetAutofillableLoginsAsync method
+  // from the PasswordStoreBackend interface. |operation| is the
+  // PasswordStoreOperation that invoked this method and |delay| is the amount
+  // of time by which the call to this method was delayed. Calls
+  // GetAutofillableLogins from the PasswordStoreAndroidBackendBridge.
+  void GetAutofillableLoginsAsyncInternal(LoginsOrErrorReply callback,
+                                          PasswordStoreOperation operation,
+                                          base::TimeDelta delay);
+
+  // Internal method used for implementing the methods from the
+  // PasswordStoreBackend interface. |operation| is the PasswordStoreOperation
+  // that invoked this method and |delay| is the amount of time by which the
+  // call to this method was delayed. Returns the complete list of PasswordForms
+  // (regardless of their blocklist status) for |account| with a |delay|.
+  void GetAllLoginsForAccountInternal(
+      PasswordStoreAndroidBackendBridge::Account account,
+      LoginsOrErrorReply callback,
+      PasswordStoreOperation operation,
+      base::TimeDelta delay);
+
+  // Removes |form| from |account|.
+  // |operation| is the PasswordStoreOperation  that invoked this method and
+  // |delay| is the amount of time by which the call to this method was delayed.
+  void RemoveLoginForAccountInternal(
+      const PasswordForm& form,
+      PasswordStoreAndroidBackendBridge::Account account,
+      PasswordChangesOrErrorReply callback,
+      PasswordStoreOperation operation,
+      base::TimeDelta delay);
+
+  // Implements the retry mechanism for the operations that are safe to retry.
+  // The given |delay| comes from the previous attempt to run the operation.
+  // The delay before the next retry will be double the value of |delay|,
+  // except for the first retry that has a delay of 1 second.
+  void RetryOperation(base::OnceCallback<void(base::TimeDelta)> callback,
+                      base::TimeDelta delay);
+
   // Implements PasswordStoreAndroidBackendBridge::Consumer interface.
   void OnCompleteWithLogins(PasswordStoreAndroidBackendBridge::JobId job_id,
                             std::vector<PasswordForm> passwords) override;
@@ -158,21 +239,35 @@
                AndroidBackendError error) override;
 
   template <typename Callback>
-  void QueueNewJob(JobId job_id, Callback callback, MetricInfix metric_infix);
+  // Calling this method can be delayed in the case when a retry is scheduled.
+  // Since the retry logic implements exponential backoff the duration of the
+  // |delay| is passed to QueueNewJob from its caller such that the |delay| can
+  // be stored in the JobReturnHandler and retrievable from it. QueueNewJob
+  // doesn't introduce any delay.
+  void QueueNewJob(JobId job_id,
+                   Callback callback,
+                   MetricInfix metric_infix,
+                   PasswordStoreOperation operation,
+                   base::TimeDelta delay);
   absl::optional<JobReturnHandler> GetAndEraseJob(JobId job_id);
 
   // Gets logins matching |form|.
   void GetLoginsAsync(const PasswordFormDigest& form,
                       bool include_psl,
-                      LoginsOrErrorReply callback);
+                      LoginsOrErrorReply callback,
+                      PasswordStoreOperation operation);
 
   // Filters |logins| created between |delete_begin| and |delete_end| time
   // that match |url_filer| and asynchronously removes them.
+  // |operation| is the PasswordStoreOperation  that invoked this method and
+  // |delay| is the amount of time by which the call to this method was delayed.
   void FilterAndRemoveLogins(
       const base::RepeatingCallback<bool(const GURL&)>& url_filter,
       base::Time delete_begin,
       base::Time delete_end,
       PasswordChangesOrErrorReply reply,
+      PasswordStoreOperation operation,
+      base::TimeDelta delay,
       LoginsResultOrError result);
 
   // Filters logins that match |origin_filer| and asynchronously disables
diff --git a/chrome/browser/password_manager/android/password_store_android_backend_unittest.cc b/chrome/browser/password_manager/android/password_store_android_backend_unittest.cc
index 4e04416d..c72925f4 100644
--- a/chrome/browser/password_manager/android/password_store_android_backend_unittest.cc
+++ b/chrome/browser/password_manager/android/password_store_android_backend_unittest.cc
@@ -15,6 +15,7 @@
 #include "base/test/mock_callback.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/test/task_environment.h"
+#include "base/time/clock.h"
 #include "base/time/time.h"
 #include "chrome/browser/password_manager/android/fake_password_manager_lifecycle_helper.h"
 #include "chrome/browser/password_manager/android/mock_password_sync_controller_delegate_bridge.h"
@@ -23,6 +24,7 @@
 #include "chrome/browser/password_manager/android/password_store_android_backend_bridge.h"
 #include "chrome/browser/password_manager/android/password_sync_controller_delegate_android.h"
 #include "chrome/browser/password_manager/android/password_sync_controller_delegate_bridge_impl.h"
+#include "components/password_manager/core/browser/android_backend_error.h"
 #include "components/password_manager/core/browser/password_manager_test_utils.h"
 #include "components/password_manager/core/common/password_manager_features.h"
 #include "components/password_manager/core/common/password_manager_pref_names.h"
@@ -67,6 +69,8 @@
 constexpr AndroidBackendErrorType kCleanedUpWithoutResponseErrorType =
     AndroidBackendErrorType::kCleanedUpWithoutResponse;
 constexpr JobId kJobId{1337};
+const int kNetworkErrorCode =
+    static_cast<int>(AndroidBackendAPIErrorCode::kNetworkError);
 
 MATCHER_P2(ExpectError, error_type, recovery_type, "") {
   return absl::holds_alternative<PasswordStoreBackendError>(arg) &&
@@ -114,6 +118,12 @@
   return form;
 }
 
+AndroidBackendError CreateNetworkError() {
+  AndroidBackendError error{AndroidBackendErrorType::kExternalError};
+  error.api_error_code = kNetworkErrorCode;
+  return error;
+}
+
 std::vector<PasswordForm> UnwrapForms(
     std::vector<std::unique_ptr<PasswordForm>> password_ptrs) {
   std::vector<PasswordForm> forms;
@@ -210,10 +220,6 @@
   PrefService* prefs() { return &prefs_; }
   void RunUntilIdle() { task_environment_.RunUntilIdle(); }
 
-  base::test::SingleThreadTaskEnvironment task_environment_{
-      base::test::TaskEnvironment::MainThreadType::UI,
-      base::test::TaskEnvironment::TimeSource::MOCK_TIME};
-
   void EnableSyncForTestAccount() {
     sync_service_.GetUserSettings()->SetSelectedTypes(
         /*sync_everything=*/false, {syncer::UserSelectableType::kPasswords});
@@ -227,6 +233,10 @@
         /*sync_everything=*/false, /*types=*/{});
   }
 
+  base::test::SingleThreadTaskEnvironment task_environment_{
+      base::test::TaskEnvironment::MainThreadType::UI,
+      base::test::TaskEnvironment::TimeSource::MOCK_TIME};
+
  private:
   std::unique_ptr<PasswordStoreAndroidBackendBridge> CreateMockBridge() {
     auto unique_bridge =
@@ -802,8 +812,9 @@
   histogram_tester.ExpectBucketCount(kAPIErrorMetric, kBadRequestErrorCode, 1);
 }
 
-TEST_F(PasswordStoreAndroidBackendTest,
-       OnExternalRetriableErrorNotCausingExperimentUnenrollment) {
+TEST_F(
+    PasswordStoreAndroidBackendTest,
+    OnUnretriableOperationWithExternalRetriableErrorOnCausesExperimentUnenrollment) {
   base::test::ScopedFeatureList scoped_feature_list;
   scoped_feature_list.InitWithFeaturesAndParameters(
       {{password_manager::features::kUnifiedPasswordManagerErrorMessages, {}},
@@ -820,21 +831,91 @@
                         base::RepeatingClosure(), base::DoNothing());
   backend().OnSyncServiceInitialized(sync_service());
 
+  base::MockCallback<PasswordChangesOrErrorReply> mock_reply;
+  EXPECT_CALL(*bridge(), AddLogin).WillOnce(Return(kJobId));
+  PasswordForm form =
+      CreateTestLogin(kTestUsername, kTestPassword, kTestUrl, kTestDateCreated);
+
+  backend().AddLoginAsync(form, mock_reply.Get());
+
+  AndroidBackendError error{AndroidBackendErrorType::kExternalError};
+  // Simulate receiving NETWORK_ERROR code.
+  error.api_error_code = absl::optional<int>(kNetworkErrorCode);
+
+  // AddLogin operation is non-retriable, so the returned error should not be
+  // indicated as retriable even if the error itself is retriable.
+  EXPECT_CALL(
+      mock_reply,
+      Run(ExpectError(PasswordStoreBackendErrorType::kUncategorized,
+                      PasswordStoreBackendErrorRecoveryType::kUnrecoverable)));
+
+  consumer().OnError(kJobId, std::move(error));
+  RunUntilIdle();
+
+  // User should be unenrolled from the experiment as operation could not be
+  // retried.
+  EXPECT_TRUE(prefs()->GetBoolean(
+      prefs::kUnenrolledFromGoogleMobileServicesDueToErrors));
+  EXPECT_EQ(prefs()->GetInteger(
+                prefs::kUnenrolledFromGoogleMobileServicesAfterApiErrorCode),
+            kNetworkErrorCode);
+  EXPECT_EQ(prefs()->GetInteger(
+                prefs::kCurrentMigrationVersionToGoogleMobileServices),
+            0);
+  EXPECT_EQ(prefs()->GetDouble(prefs::kTimeOfLastMigrationAttempt), 0.0);
+  EXPECT_FALSE(prefs()->GetBoolean(prefs::kSettingsMigratedToUPM));
+
+  const char kErrorCodeMetric[] =
+      "PasswordManager.PasswordStoreAndroidBackend.ErrorCode";
+  const char kAPIErrorMetric[] =
+      "PasswordManager.PasswordStoreAndroidBackend.APIError";
+
+  histogram_tester.ExpectBucketCount(
+      kErrorCodeMetric, AndroidBackendErrorType::kExternalError, 1);
+  histogram_tester.ExpectBucketCount(kAPIErrorMetric, kNetworkErrorCode, 1);
+  histogram_tester.ExpectBucketCount(kUnenrollmentHistogram, true, 1);
+}
+
+TEST_F(PasswordStoreAndroidBackendTest,
+       OnNetworkErrorRetriableStopsRetryingAfterTimeout) {
+  base::test::ScopedFeatureList scoped_feature_list;
+  scoped_feature_list.InitWithFeaturesAndParameters(
+      {{password_manager::features::kUnifiedPasswordManagerAndroid,
+        {// NETWORK_ERROR = 7
+         {password_manager::features::kIgnoredGmsApiErrors.name, ""},
+         {password_manager::features::kRetriableGmsApiErrors.name, "7"}}}},
+      {});
+
+  base::HistogramTester histogram_tester;
+
+  backend().InitBackend(PasswordStoreAndroidBackend::RemoteChangesReceived(),
+                        base::RepeatingClosure(), base::DoNothing());
+  backend().OnSyncServiceInitialized(sync_service());
+
   base::MockCallback<LoginsOrErrorReply> mock_reply;
-  EXPECT_CALL(*bridge(), GetAllLogins).WillOnce(Return(kJobId));
+  EXPECT_CALL(*bridge(), GetAllLogins).Times(6).WillRepeatedly(Return(kJobId));
+
+  // Initiating the first call.
   backend().GetAllLoginsAsync(mock_reply.Get());
+
+  for (int i = 0; i < 5; i++) {
+    // Answering the previous call with an error.
+    // Simulate receiving NETWORK_ERROR code.
+    consumer().OnError(kJobId, CreateNetworkError());
+    // Runs the delayed tasks which results in GetAllLogins being called on
+    // the bridge.
+    task_environment_.FastForwardUntilNoTasksRemain();
+  }
   EXPECT_CALL(
       mock_reply,
       Run(ExpectError(PasswordStoreBackendErrorType::kUncategorized,
                       PasswordStoreBackendErrorRecoveryType::kRetriable)));
-  AndroidBackendError error{AndroidBackendErrorType::kExternalError};
-  // Simulate receiving BAD_REQUEST code.
-  int kNetworkErrorErrorCode =
-      static_cast<int>(AndroidBackendAPIErrorCode::kNetworkError);
-  error.api_error_code = absl::optional<int>(kNetworkErrorErrorCode);
-  consumer().OnError(kJobId, std::move(error));
+  consumer().OnError(kJobId, CreateNetworkError());
+
   RunUntilIdle();
 
+  // User should not be unenrolled even if retries failed as only operations
+  // performed at Chrome startup are retried.
   EXPECT_FALSE(prefs()->GetBoolean(
       prefs::kUnenrolledFromGoogleMobileServicesDueToErrors));
   EXPECT_EQ(prefs()->GetInteger(
@@ -852,8 +933,56 @@
       "PasswordManager.PasswordStoreAndroidBackend.APIError";
 
   histogram_tester.ExpectBucketCount(kErrorCodeMetric, 7, 1);
-  histogram_tester.ExpectBucketCount(kAPIErrorMetric, kNetworkErrorErrorCode,
-                                     1);
+  histogram_tester.ExpectBucketCount(
+      kAPIErrorMetric,
+      static_cast<int>(AndroidBackendAPIErrorCode::kNetworkError), 1);
+}
+
+TEST_F(PasswordStoreAndroidBackendTest,
+       OnNetworkErrorRetriableStopsRetryingAfterSuccess) {
+  base::test::ScopedFeatureList scoped_feature_list;
+  scoped_feature_list.InitWithFeaturesAndParameters(
+      {{password_manager::features::kUnifiedPasswordManagerErrorMessages, {}},
+       {password_manager::features::kUnifiedPasswordManagerAndroid,
+        {// NETWORK_ERROR = 7
+         {password_manager::features::kIgnoredGmsApiErrors.name, ""},
+         {password_manager::features::kRetriableGmsApiErrors.name, "7"}}}},
+      {});
+
+  backend().InitBackend(PasswordStoreAndroidBackend::RemoteChangesReceived(),
+                        base::RepeatingClosure(), base::DoNothing());
+  backend().OnSyncServiceInitialized(sync_service());
+
+  base::MockCallback<LoginsOrErrorReply> mock_reply;
+
+  // GetAllLogins will be called once with an error and it will succeed after
+  // repeating.
+  const JobId kFailedJobId{1};
+  const JobId kSucceedJobId{2};
+  EXPECT_CALL(*bridge(), GetAllLogins)
+      .WillOnce(Return(kFailedJobId))
+      .WillOnce(Return(kSucceedJobId));
+
+  base::Time before_call_time = task_environment_.GetMockClock()->Now();
+
+  // Initiating the first call.
+  backend().GetAllLoginsAsync(mock_reply.Get());
+
+  // Answering the call with an error.
+  consumer().OnError(kFailedJobId, CreateNetworkError());
+  task_environment_.FastForwardUntilNoTasksRemain();
+
+  // Retry should be performed after timeout.
+  base::Time after_retry_time = task_environment_.GetMockClock()->Now();
+  EXPECT_GE(after_retry_time - before_call_time, base::Seconds(1));
+
+  // Answering the call with logins.
+  std::vector<std::unique_ptr<PasswordForm>> expected_logins =
+      CreateTestLogins();
+  EXPECT_CALL(mock_reply, Run(LoginsResultsOrErrorAre(&expected_logins)));
+  consumer().OnCompleteWithLogins(kSucceedJobId,
+                                  UnwrapForms(CreateTestLogins()));
+  task_environment_.FastForwardUntilNoTasksRemain();
 }
 
 TEST_F(PasswordStoreAndroidBackendTest,
diff --git a/chrome/browser/payments/BUILD.gn b/chrome/browser/payments/BUILD.gn
index e60af56..391fd31 100644
--- a/chrome/browser/payments/BUILD.gn
+++ b/chrome/browser/payments/BUILD.gn
@@ -31,6 +31,7 @@
     "payment_request_app_store_billing_browsertest.cc",
     "payment_request_can_make_payment_browsertest.cc",
     "payment_request_can_make_payment_event_browsertest.cc",
+    "payment_request_id_browsertest.cc",
     "payment_request_security_policy_browsertest.cc",
     "sec_fetch_site_browsertest.cc",
     "secure_payment_confirmation_browsertest.cc",
diff --git a/chrome/browser/payments/payment_request_id_browsertest.cc b/chrome/browser/payments/payment_request_id_browsertest.cc
new file mode 100644
index 0000000..ffcd1bd7
--- /dev/null
+++ b/chrome/browser/payments/payment_request_id_browsertest.cc
@@ -0,0 +1,22 @@
+// Copyright 2022 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/test/payments/payment_request_platform_browsertest_base.h"
+#include "content/public/test/browser_test.h"
+#include "content/public/test/browser_test_utils.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace payments {
+
+using PaymentRequestIdTest = PaymentRequestPlatformBrowserTestBase;
+
+IN_PROC_BROWSER_TEST_F(PaymentRequestIdTest, ResponseIdEqualsRequestId) {
+  NavigateTo("a.com", "/payment_request_id_test.html");
+  GURL method = https_server()->GetURL("b.com", "/nickpay.com/pay");
+  std::string get_id = content::JsReplace("getResponseId($1)", method.spec());
+
+  EXPECT_EQ("my_payment_id", content::EvalJs(GetActiveWebContents(), get_id));
+}
+
+}  // namespace payments
diff --git a/chrome/browser/permissions/notification_permission_review_service_unittest.cc b/chrome/browser/permissions/notification_permission_review_service_unittest.cc
index 69d7bc2e..739d393e 100644
--- a/chrome/browser/permissions/notification_permission_review_service_unittest.cc
+++ b/chrome/browser/permissions/notification_permission_review_service_unittest.cc
@@ -14,7 +14,6 @@
 #include "content/public/test/browser_task_environment.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "url/gurl.h"
-#include "url/origin.h"
 
 namespace permissions {
 
@@ -32,12 +31,12 @@
        IgnoreOriginForNotificationPermissionReview) {
   HostContentSettingsMap* map =
       HostContentSettingsMapFactory::GetForProfile(profile());
-  GURL hosts[] = {GURL("https://google.com/"),
-                  GURL("https://www.youtube.com/")};
-  map->SetContentSettingDefaultScope(hosts[0], GURL(),
+  std::string urls[] = {"https://google.com:443",
+                        "https://www.youtube.com:443"};
+  map->SetContentSettingDefaultScope(GURL(urls[0]), GURL(),
                                      ContentSettingsType::NOTIFICATIONS,
                                      CONTENT_SETTING_ALLOW);
-  map->SetContentSettingDefaultScope(hosts[1], GURL(),
+  map->SetContentSettingDefaultScope(GURL(urls[1]), GURL(),
                                      ContentSettingsType::NOTIFICATIONS,
                                      CONTENT_SETTING_ALLOW);
 
@@ -48,28 +47,30 @@
 
   // Add notification permission to block list and check if it will be not be
   // shown on the list.
-  service->AddOriginToNotificationPermissionReviewBlocklist(
-      url::Origin::Create(hosts[0]));
+  service->AddPatternToNotificationPermissionReviewBlocklist(
+      ContentSettingsPattern::FromString(urls[0]),
+      ContentSettingsPattern::Wildcard());
   notification_permissions = service->GetNotificationSiteListForReview();
   EXPECT_EQ(1UL, notification_permissions.size());
-  EXPECT_EQ(notification_permissions[0].origin.GetURL(), hosts[1]);
+  EXPECT_EQ(notification_permissions[0].primary_pattern,
+            ContentSettingsPattern::FromString(urls[1]));
 }
 
 // TODO(crbug.com/1363714): Move this test to ContentSettingsPatternTest.
 TEST_F(NotificationPermissionReviewServiceTest, SingleOriginTest) {
   HostContentSettingsMap* map =
       HostContentSettingsMapFactory::GetForProfile(profile());
-  const std::string url_1 = "http://[*].example1.com";
-  const std::string url_2 = "http://example2.com";
-  map->SetContentSettingDefaultScope(GURL(url_1), GURL(),
-                                     ContentSettingsType::NOTIFICATIONS,
-                                     CONTENT_SETTING_ALLOW);
-  map->SetContentSettingDefaultScope(GURL(url_2), GURL(),
-                                     ContentSettingsType::NOTIFICATIONS,
-                                     CONTENT_SETTING_ALLOW);
+  auto pattern_1 =
+      ContentSettingsPattern::FromString("https://[*.]example1.com:443");
+  auto pattern_2 =
+      ContentSettingsPattern::FromString("https://example2.com:443");
+  map->SetContentSettingCustomScope(
+      pattern_1, ContentSettingsPattern::Wildcard(),
+      ContentSettingsType::NOTIFICATIONS, CONTENT_SETTING_ALLOW);
+  map->SetContentSettingCustomScope(
+      pattern_2, ContentSettingsPattern::Wildcard(),
+      ContentSettingsType::NOTIFICATIONS, CONTENT_SETTING_ALLOW);
 
-  auto pattern_1 = ContentSettingsPattern::FromString(url_1);
-  auto pattern_2 = ContentSettingsPattern::FromString(url_2);
   // Assert wildcard in primary pattern returns false on single origin check.
   EXPECT_EQ(false, content_settings::PatternAppliesToSingleOrigin(
                        pattern_1, ContentSettingsPattern::Wildcard()));
@@ -83,31 +84,31 @@
       NotificationPermissionsReviewServiceFactory::GetForProfile(profile());
   auto notification_permissions = service->GetNotificationSiteListForReview();
   EXPECT_EQ(1UL, notification_permissions.size());
-  EXPECT_EQ(GURL(url_2), notification_permissions[0].origin.GetURL());
+  EXPECT_EQ(pattern_2, notification_permissions[0].primary_pattern);
 }
 
 TEST_F(NotificationPermissionReviewServiceTest,
        ShowOnlyGrantedNotificationPermissions) {
   HostContentSettingsMap* map =
       HostContentSettingsMapFactory::GetForProfile(profile());
-  GURL hosts[] = {GURL("https://google.com/"), GURL("https://www.youtube.com/"),
-                  GURL("https://www.example.com/")};
-  map->SetContentSettingDefaultScope(hosts[0], GURL(),
+  GURL urls[] = {GURL("https://google.com/"), GURL("https://www.youtube.com/"),
+                 GURL("https://www.example.com/")};
+  map->SetContentSettingDefaultScope(urls[0], GURL(),
                                      ContentSettingsType::NOTIFICATIONS,
                                      CONTENT_SETTING_ALLOW);
-  map->SetContentSettingDefaultScope(hosts[1], GURL(),
+  map->SetContentSettingDefaultScope(urls[1], GURL(),
                                      ContentSettingsType::NOTIFICATIONS,
                                      CONTENT_SETTING_BLOCK);
-  map->SetContentSettingDefaultScope(hosts[2], GURL(),
-                                     ContentSettingsType::NOTIFICATIONS,
-                                     CONTENT_SETTING_ASK);
+  map->SetContentSettingDefaultScope(
+      urls[2], GURL(), ContentSettingsType::NOTIFICATIONS, CONTENT_SETTING_ASK);
 
   // Assert the review list only has the URL with granted permission.
   auto* service =
       NotificationPermissionsReviewServiceFactory::GetForProfile(profile());
   auto notification_permissions = service->GetNotificationSiteListForReview();
   EXPECT_EQ(1UL, notification_permissions.size());
-  EXPECT_EQ(notification_permissions[0].origin.GetURL(), hosts[0]);
+  EXPECT_EQ(GURL(notification_permissions[0].primary_pattern.ToString()),
+            urls[0]);
 }
 #endif  // !BUILDFLAG(IS_ANDROID)
 
diff --git a/chrome/browser/permissions/permission_manager_factory.cc b/chrome/browser/permissions/permission_manager_factory.cc
index 6d8d7dc..3649a61 100644
--- a/chrome/browser/permissions/permission_manager_factory.cc
+++ b/chrome/browser/permissions/permission_manager_factory.cc
@@ -28,7 +28,7 @@
 #include "components/background_sync/background_sync_permission_context.h"
 #include "components/embedder_support/permission_context_utils.h"
 #include "components/permissions/contexts/local_fonts_permission_context.h"
-#include "components/permissions/contexts/window_placement_permission_context.h"
+#include "components/permissions/contexts/window_management_permission_context.h"
 #include "components/permissions/permission_manager.h"
 #include "ppapi/buildflags/buildflags.h"
 
@@ -135,7 +135,7 @@
   // TODO(crbug.com/897300): Still in development for Android so we don't
   // support it on WebLayer yet.
   permission_contexts[ContentSettingsType::WINDOW_MANAGEMENT] =
-      std::make_unique<permissions::WindowPlacementPermissionContext>(profile);
+      std::make_unique<permissions::WindowManagementPermissionContext>(profile);
 
   return permission_contexts;
 }
diff --git a/chrome/browser/printing/print_backend_browsertest.cc b/chrome/browser/printing/print_backend_browsertest.cc
index ee617a1..5e3012f 100644
--- a/chrome/browser/printing/print_backend_browsertest.cc
+++ b/chrome/browser/printing/print_backend_browsertest.cc
@@ -128,11 +128,6 @@
     PrintBackend::SetPrintBackendForTesting(/*print_backend=*/nullptr);
   }
 
-  void LaunchUninitialized() {
-    print_backend_service_ =
-        PrintBackendServiceTestImpl::LaunchUninitialized(remote_);
-  }
-
   // Initialize and load the backend service with some test print drivers.
   void LaunchService() {
     print_backend_service_ = PrintBackendServiceTestImpl::LaunchForTesting(
diff --git a/chrome/browser/printing/print_backend_service_test_impl.cc b/chrome/browser/printing/print_backend_service_test_impl.cc
index 95ded27..9bd6d02 100644
--- a/chrome/browser/printing/print_backend_service_test_impl.cc
+++ b/chrome/browser/printing/print_backend_service_test_impl.cc
@@ -8,6 +8,7 @@
 
 #include "base/check.h"
 #include "base/logging.h"
+#include "base/memory/ptr_util.h"
 #include "base/memory/scoped_refptr.h"
 #include "base/values.h"
 #include "chrome/browser/printing/print_backend_service_manager.h"
@@ -50,8 +51,10 @@
 #endif
 
 PrintBackendServiceTestImpl::PrintBackendServiceTestImpl(
-    mojo::PendingReceiver<mojom::PrintBackendService> receiver)
-    : PrintBackendServiceImpl(std::move(receiver)) {}
+    mojo::PendingReceiver<mojom::PrintBackendService> receiver,
+    scoped_refptr<TestPrintBackend> backend)
+    : PrintBackendServiceImpl(std::move(receiver)),
+      test_print_backend_(std::move(backend)) {}
 
 PrintBackendServiceTestImpl::~PrintBackendServiceTestImpl() = default;
 
@@ -161,16 +164,6 @@
 }
 #endif  // BUILDFLAG(IS_WIN)
 
-// static
-std::unique_ptr<PrintBackendServiceTestImpl>
-PrintBackendServiceTestImpl::LaunchUninitialized(
-    mojo::Remote<mojom::PrintBackendService>& remote) {
-  // Launch the service running locally in-process.
-  mojo::PendingReceiver<mojom::PrintBackendService> receiver =
-      remote.BindNewPipeAndPassReceiver();
-  return std::make_unique<PrintBackendServiceTestImpl>(std::move(receiver));
-}
-
 void PrintBackendServiceTestImpl::TerminateConnection() {
   DLOG(ERROR) << "Terminating print backend service test connection";
   receiver_.reset();
@@ -182,11 +175,12 @@
     mojo::Remote<mojom::PrintBackendService>& remote,
     scoped_refptr<TestPrintBackend> backend,
     bool sandboxed) {
-  std::unique_ptr<PrintBackendServiceTestImpl> service =
-      LaunchUninitialized(remote);
+  mojo::PendingReceiver<mojom::PrintBackendService> receiver =
+      remote.BindNewPipeAndPassReceiver();
 
-  // Do the common initialization using the testing print backend.
-  service->test_print_backend_ = backend;
+  // Private ctor.
+  auto service = base::WrapUnique(
+      new PrintBackendServiceTestImpl(std::move(receiver), std::move(backend)));
   service->Init(/*locale=*/std::string());
 
   // Register this test version of print backend service to be used instead of
diff --git a/chrome/browser/printing/print_backend_service_test_impl.h b/chrome/browser/printing/print_backend_service_test_impl.h
index afbce1d..807a8f34 100644
--- a/chrome/browser/printing/print_backend_service_test_impl.h
+++ b/chrome/browser/printing/print_backend_service_test_impl.h
@@ -41,8 +41,14 @@
 // printer drivers.
 class PrintBackendServiceTestImpl : public PrintBackendServiceImpl {
  public:
-  explicit PrintBackendServiceTestImpl(
-      mojo::PendingReceiver<mojom::PrintBackendService> receiver);
+  // Launch the service in-process for testing using the provided backend.
+  // `sandboxed` identifies if this service is potentially subject to
+  // experiencing access-denied errors on some commands.
+  static std::unique_ptr<PrintBackendServiceTestImpl> LaunchForTesting(
+      mojo::Remote<mojom::PrintBackendService>& remote,
+      scoped_refptr<TestPrintBackend> backend,
+      bool sandboxed);
+
   PrintBackendServiceTestImpl(const PrintBackendServiceTestImpl&) = delete;
   PrintBackendServiceTestImpl& operator=(const PrintBackendServiceTestImpl&) =
       delete;
@@ -94,20 +100,11 @@
   }
 #endif
 
-  // Launch the service in-process for testing using the provided backend.
-  // `sandboxed` identifies if this service is potentially subject to
-  // experiencing access-denied errors on some commands.
-  static std::unique_ptr<PrintBackendServiceTestImpl> LaunchForTesting(
-      mojo::Remote<mojom::PrintBackendService>& remote,
-      scoped_refptr<TestPrintBackend> backend,
-      bool sandboxed);
-
  private:
-  friend class PrintBackendBrowserTest;
-
-  // Launch the service in-process for testing without initializing backend.
-  static std::unique_ptr<PrintBackendServiceTestImpl> LaunchUninitialized(
-      mojo::Remote<mojom::PrintBackendService>& remote);
+  // Use LaunchForTesting().
+  PrintBackendServiceTestImpl(
+      mojo::PendingReceiver<mojom::PrintBackendService> receiver,
+      scoped_refptr<TestPrintBackend> backend);
 
   void OnDidGetDefaultPrinterName(
       mojom::PrintBackendService::GetDefaultPrinterNameCallback callback,
diff --git a/chrome/browser/renderer_context_menu/render_view_context_menu.cc b/chrome/browser/renderer_context_menu/render_view_context_menu.cc
index 603287f..fc7f843 100644
--- a/chrome/browser/renderer_context_menu/render_view_context_menu.cc
+++ b/chrome/browser/renderer_context_menu/render_view_context_menu.cc
@@ -1379,15 +1379,15 @@
       ->GetExtensionForWebContents(source_web_contents_);
 }
 
-std::u16string RenderViewContextMenu::GetTargetLanguageDisplayName() const {
-  std::unique_ptr<translate::TranslatePrefs> prefs(
-      ChromeTranslateClient::CreateTranslatePrefs(GetPrefs(browser_context_)));
-  language::LanguageModel* language_model =
-      LanguageModelManagerFactory::GetForBrowserContext(browser_context_)
-          ->GetPrimaryModel();
-  std::string locale = translate::TranslateManager::GetTargetLanguage(
-      prefs.get(), language_model);
-  return l10n_util::GetDisplayNameForLocale(locale, locale, true);
+std::u16string RenderViewContextMenu::GetTargetLanguageDisplayName(
+    bool is_full_page_translation) const {
+  std::string source;
+  std::string target;
+
+  ChromeTranslateClient::FromWebContents(embedder_web_contents_)
+      ->GetTranslateLanguages(embedder_web_contents_, &source, &target,
+                              is_full_page_translation);
+  return l10n_util::GetDisplayNameForLocale(target, target, true);
 }
 
 void RenderViewContextMenu::AppendDeveloperItems() {
@@ -1824,8 +1824,9 @@
   if (canTranslate) {
     menu_model_.AddItem(
         IDC_CONTENT_CONTEXT_TRANSLATE,
-        l10n_util::GetStringFUTF16(IDS_CONTENT_CONTEXT_TRANSLATE,
-                                   GetTargetLanguageDisplayName()));
+        l10n_util::GetStringFUTF16(
+            IDS_CONTENT_CONTEXT_TRANSLATE,
+            GetTargetLanguageDisplayName(/*is_full_page_translation=*/true)));
   }
 }
 
@@ -1886,8 +1887,9 @@
 void RenderViewContextMenu::AppendPartialTranslateItem() {
   menu_model_.AddItem(
       IDC_CONTENT_CONTEXT_PARTIAL_TRANSLATE,
-      l10n_util::GetStringFUTF16(IDS_CONTENT_CONTEXT_PARTIAL_TRANSLATE,
-                                 GetTargetLanguageDisplayName()));
+      l10n_util::GetStringFUTF16(
+          IDS_CONTENT_CONTEXT_PARTIAL_TRANSLATE,
+          GetTargetLanguageDisplayName(/*is_full_page_translation=*/false)));
 }
 
 void RenderViewContextMenu::AppendMediaRouterItem() {
@@ -3793,12 +3795,16 @@
 void RenderViewContextMenu::ExecPartialTranslate() {
   std::string source_language;
   std::string target_language;
+
   ChromeTranslateClient* chrome_translate_client =
       ChromeTranslateClient::FromWebContents(embedder_web_contents_);
-  chrome_translate_client->GetTranslateLanguagesForDisplay(
-      embedder_web_contents_, &source_language, &target_language);
-  GetBrowser()->window()->StartPartialTranslate(
-      source_language, target_language, params_.selection_text);
+  if (chrome_translate_client) {
+    chrome_translate_client->GetTranslateLanguages(
+        embedder_web_contents_, &source_language, &target_language,
+        /*for_display=*/false);
+    GetBrowser()->window()->StartPartialTranslate(
+        source_language, target_language, params_.selection_text);
+  }
 }
 
 void RenderViewContextMenu::ExecLanguageSettings(int event_flags) {
diff --git a/chrome/browser/renderer_context_menu/render_view_context_menu.h b/chrome/browser/renderer_context_menu/render_view_context_menu.h
index 08948db..9f9a118 100644
--- a/chrome/browser/renderer_context_menu/render_view_context_menu.h
+++ b/chrome/browser/renderer_context_menu/render_view_context_menu.h
@@ -212,7 +212,12 @@
 
   // Queries the Translate service to obtain the user's Translate target
   // language and returns the language name in its same locale.
-  std::u16string GetTargetLanguageDisplayName() const;
+  // On an already translated page, full page translation uses the current page
+  // language as the target language while partial translation uses the last
+  // used target language. |is_full_page_translation| controls the desired
+  // outcome.
+  std::u16string GetTargetLanguageDisplayName(
+      bool is_full_page_translation) const;
 
   bool IsInProgressiveWebApp() const;
 
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/background/editing/intent_handler_test.js b/chrome/browser/resources/chromeos/accessibility/chromevox/background/editing/intent_handler_test.js
index f60d888..43633ce 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/background/editing/intent_handler_test.js
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/background/editing/intent_handler_test.js
@@ -82,8 +82,6 @@
 AX_TEST_F('ChromeVoxIntentHandlerTest', 'MoveByWord', function() {
   let calls = [];
   const fakeLine = new (class {
-    constructor() {}
-
     createWordRange(...args) {
       calls.push(['createWordRange', ...args]);
       return {};
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/background/output/output_types.js b/chrome/browser/resources/chromeos/accessibility/chromevox/background/output/output_types.js
index 45171a5..712498a 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/background/output/output_types.js
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/background/output/output_types.js
@@ -60,8 +60,6 @@
  * Custom actions performed while rendering an output string.
  */
 export class OutputAction {
-  constructor() {}
-
   run() {}
 }
 
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/background/panel/i_search_handler.js b/chrome/browser/resources/chromeos/accessibility/chromevox/background/panel/i_search_handler.js
index 5583b4c7..2de9b4bd 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/background/panel/i_search_handler.js
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/background/panel/i_search_handler.js
@@ -13,8 +13,6 @@
  * @interface
  */
 export class ISearchHandler {
-  constructor() {}
-
   /**
    * Called when there are no remaining nodes in the document matching
    * search.
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/common/abstract_earcons.js b/chrome/browser/resources/chromeos/accessibility/chromevox/common/abstract_earcons.js
index c0c92ed..c2d2864 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/common/abstract_earcons.js
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/common/abstract_earcons.js
@@ -72,8 +72,6 @@
 
 
 export class AbstractEarcons {
-  constructor() {}
-
   /**
    * Plays the specified earcon sound.
    * @param {Earcon} earcon An earcon identifier.
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/common/msgs.js b/chrome/browser/resources/chromeos/accessibility/chromevox/common/msgs.js
index 7902ccc5..83296db 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/common/msgs.js
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/common/msgs.js
@@ -8,8 +8,6 @@
  */
 
 export class Msgs {
-  constructor() {}
-
   /**
    * Return the current locale.
    * @return {string} The locale.
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/options/bluetooth_braille_display_manager.js b/chrome/browser/resources/chromeos/accessibility/chromevox/options/bluetooth_braille_display_manager.js
index f285ec2..853e3fa 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/options/bluetooth_braille_display_manager.js
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/options/bluetooth_braille_display_manager.js
@@ -10,8 +10,6 @@
 
 /** @interface */
 export class BluetoothBrailleDisplayListener {
-  constructor() {}
-
   /**
    * @param {!Array<chrome.bluetooth.Device>} displays
    */
diff --git a/chrome/browser/resources/chromeos/accessibility/common/automation_predicate.js b/chrome/browser/resources/chromeos/accessibility/common/automation_predicate.js
index df3e1cc..fc310bb 100644
--- a/chrome/browser/resources/chromeos/accessibility/common/automation_predicate.js
+++ b/chrome/browser/resources/chromeos/accessibility/common/automation_predicate.js
@@ -105,8 +105,6 @@
 };
 
 export class AutomationPredicate {
-  constructor() {}
-
   /**
    * Constructs a predicate given a list of roles.
    * @param {!Array<Role>} roles
diff --git a/chrome/browser/resources/chromeos/accessibility/common/automation_util.js b/chrome/browser/resources/chromeos/accessibility/common/automation_util.js
index 07d143c..2c84e911f 100644
--- a/chrome/browser/resources/chromeos/accessibility/common/automation_util.js
+++ b/chrome/browser/resources/chromeos/accessibility/common/automation_util.js
@@ -14,8 +14,6 @@
 const RoleType = chrome.automation.RoleType;
 
 export class AutomationUtil {
-  constructor() {}
-
   /**
    * Find a node in subtree of |cur| satisfying |pred| using pre-order
    * traversal.
diff --git a/chrome/browser/resources/chromeos/accessibility/common/string_util.js b/chrome/browser/resources/chromeos/accessibility/common/string_util.js
index 1e5080c9..4a5c0e4 100644
--- a/chrome/browser/resources/chromeos/accessibility/common/string_util.js
+++ b/chrome/browser/resources/chromeos/accessibility/common/string_util.js
@@ -7,8 +7,6 @@
  */
 
 export class StringUtil {
-  constructor() {}
-
   /**
    * Returns the length of the longest common prefix of two strings.
    * @param {string} first The first string.
diff --git a/chrome/browser/resources/chromeos/accessibility/common/testing/doc_utils.js b/chrome/browser/resources/chromeos/accessibility/common/testing/doc_utils.js
index b87f942..e573f80 100644
--- a/chrome/browser/resources/chromeos/accessibility/common/testing/doc_utils.js
+++ b/chrome/browser/resources/chromeos/accessibility/common/testing/doc_utils.js
@@ -3,8 +3,6 @@
 // found in the LICENSE file.
 
 class DocUtils {
-  constructor() {}
-
   /**
    * Creates a data url for a document.
    * @param {string} doc Snippet
diff --git a/chrome/browser/resources/chromeos/accessibility/select_to_speak/metrics_utils.js b/chrome/browser/resources/chromeos/accessibility/select_to_speak/metrics_utils.js
index 63658fd..5561aed 100644
--- a/chrome/browser/resources/chromeos/accessibility/select_to_speak/metrics_utils.js
+++ b/chrome/browser/resources/chromeos/accessibility/select_to_speak/metrics_utils.js
@@ -7,8 +7,6 @@
 // Utilities for UMA metrics.
 
 export class MetricsUtils {
-  constructor() {}
-
   /**
    * Records a cancel event if speech was in progress.
    */
diff --git a/chrome/browser/resources/chromeos/accessibility/select_to_speak/node_navigation_utils.js b/chrome/browser/resources/chromeos/accessibility/select_to_speak/node_navigation_utils.js
index 5cc2aee..7257932 100644
--- a/chrome/browser/resources/chromeos/accessibility/select_to_speak/node_navigation_utils.js
+++ b/chrome/browser/resources/chromeos/accessibility/select_to_speak/node_navigation_utils.js
@@ -25,8 +25,6 @@
  * which handle lower-level calculation.
  */
 export class NodeNavigationUtils {
-  constructor() {}
-
   /**
    * Finds the nodes for the next text block in the given direction. This
    * function is based on |NodeUtils.getNextParagraph| but provides additional
diff --git a/chrome/browser/resources/chromeos/accessibility/select_to_speak/node_utils.js b/chrome/browser/resources/chromeos/accessibility/select_to_speak/node_utils.js
index c7b8f37..757ca49 100644
--- a/chrome/browser/resources/chromeos/accessibility/select_to_speak/node_utils.js
+++ b/chrome/browser/resources/chromeos/accessibility/select_to_speak/node_utils.js
@@ -15,8 +15,6 @@
 // Utilities for automation nodes in Select-to-Speak.
 
 export class NodeUtils {
-  constructor() {}
-
   /**
    * Gets the current visibility state for a given node.
    *
diff --git a/chrome/browser/resources/chromeos/accessibility/select_to_speak/paragraph_utils.js b/chrome/browser/resources/chromeos/accessibility/select_to_speak/paragraph_utils.js
index 6495dda..ccbfcdb3 100644
--- a/chrome/browser/resources/chromeos/accessibility/select_to_speak/paragraph_utils.js
+++ b/chrome/browser/resources/chromeos/accessibility/select_to_speak/paragraph_utils.js
@@ -8,8 +8,6 @@
 var RoleType = chrome.automation.RoleType;
 
 export class ParagraphUtils {
-  constructor() {}
-
   /**
    * @param {!AutomationNode} node
    * @return {boolean} Whether the given node is a paragraph.
diff --git a/chrome/browser/resources/chromeos/accessibility/select_to_speak/sentence_utils.js b/chrome/browser/resources/chromeos/accessibility/select_to_speak/sentence_utils.js
index 861b801..a9738a97 100644
--- a/chrome/browser/resources/chromeos/accessibility/select_to_speak/sentence_utils.js
+++ b/chrome/browser/resources/chromeos/accessibility/select_to_speak/sentence_utils.js
@@ -12,8 +12,6 @@
  * Utilities for processing sentences within strings and node groups.
  */
 export class SentenceUtils {
-  constructor() {}
-
   /**
    * Gets the sentence start from the current position. When |direction| is set
    * to forward, this function will incrementally go over each nodeGroupItem in
diff --git a/chrome/browser/resources/chromeos/accessibility/select_to_speak/ui_manager.js b/chrome/browser/resources/chromeos/accessibility/select_to_speak/ui_manager.js
index 3279a9a..09c6b24 100644
--- a/chrome/browser/resources/chromeos/accessibility/select_to_speak/ui_manager.js
+++ b/chrome/browser/resources/chromeos/accessibility/select_to_speak/ui_manager.js
@@ -49,8 +49,6 @@
  * @interface
  */
 export class SelectToSpeakUiListener {
-  constructor() {}
-
   /** User requests navigation to next paragraph. */
   onNextParagraphRequested() {}
 
diff --git a/chrome/browser/resources/chromeos/accessibility/select_to_speak/word_utils.js b/chrome/browser/resources/chromeos/accessibility/select_to_speak/word_utils.js
index 9864541b..e00dc3000 100644
--- a/chrome/browser/resources/chromeos/accessibility/select_to_speak/word_utils.js
+++ b/chrome/browser/resources/chromeos/accessibility/select_to_speak/word_utils.js
@@ -7,8 +7,6 @@
 // Utilities for processing words within strings and nodes.
 
 export class WordUtils {
-  constructor() {}
-
   /**
    * Searches through text starting at an index to find the next word's
    * start boundary.
diff --git a/chrome/browser/resources/chromeos/bluetooth_pairing_dialog/BUILD.gn b/chrome/browser/resources/chromeos/bluetooth_pairing_dialog/BUILD.gn
index 12d575f..088aef7 100644
--- a/chrome/browser/resources/chromeos/bluetooth_pairing_dialog/BUILD.gn
+++ b/chrome/browser/resources/chromeos/bluetooth_pairing_dialog/BUILD.gn
@@ -72,7 +72,6 @@
 
 js_library("bluetooth_pairing_dialog") {
   deps = [
-    "//ash/webui/common/resources/bluetooth:bluetooth_dialog",
     "//ash/webui/common/resources/bluetooth:bluetooth_pairing_ui",
     "//ui/webui/resources/cr_elements:i18n_behavior",
     "//ui/webui/resources/js:cr.m",
diff --git a/chrome/browser/resources/chromeos/bluetooth_pairing_dialog/bluetooth_pairing_dialog.html b/chrome/browser/resources/chromeos/bluetooth_pairing_dialog/bluetooth_pairing_dialog.html
index 4071b8b..8b82478 100644
--- a/chrome/browser/resources/chromeos/bluetooth_pairing_dialog/bluetooth_pairing_dialog.html
+++ b/chrome/browser/resources/chromeos/bluetooth_pairing_dialog/bluetooth_pairing_dialog.html
@@ -1,20 +1,5 @@
-<style include="cr-page-host-style cr-shared-style">
-  bluetooth-dialog::part(dialog) {
-    border-radius: 0;
-    box-shadow: none;
-    height: 100%;
-    width: 100%;
-  }
-</style>
-<template is="dom-if" if="[[!isBluetoothRevampEnabled_]]" restamp>
-  <bluetooth-dialog id="deviceDialog" no-cancel on-close="closeDialog_"
-      pairing-device="[[pairingDevice_]]"
-      dialog-title="$i18n{bluetoothPairDeviceTitle}">
-  </bluetooth-dialog>
-</template>
-<template is="dom-if" if="[[isBluetoothRevampEnabled_]]" restamp>
-  <bluetooth-pairing-ui on-finished="closeDialog_"
-      pairing-device-address="[[deviceAddress_]]"
-      should-omit-links="[[shouldOmitLinks_]]">
-  </bluetooth-pairing-ui>
-</template>
+<style include="cr-page-host-style cr-shared-style"></style>
+<bluetooth-pairing-ui on-finished="closeDialog_"
+    pairing-device-address="[[deviceAddress_]]"
+    should-omit-links="[[shouldOmitLinks_]]">
+</bluetooth-pairing-ui>
diff --git a/chrome/browser/resources/chromeos/bluetooth_pairing_dialog/bluetooth_pairing_dialog.js b/chrome/browser/resources/chromeos/bluetooth_pairing_dialog/bluetooth_pairing_dialog.js
index 8f939aa..3c1af0a 100644
--- a/chrome/browser/resources/chromeos/bluetooth_pairing_dialog/bluetooth_pairing_dialog.js
+++ b/chrome/browser/resources/chromeos/bluetooth_pairing_dialog/bluetooth_pairing_dialog.js
@@ -2,24 +2,20 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import 'chrome://resources/ash/common/bluetooth/bluetooth_dialog.js';
 import 'chrome://resources/ash/common/bluetooth/bluetooth_pairing_ui.js';
 import 'chrome://resources/cr_elements/cr_shared_style.css.js';
 import 'chrome://resources/cr_elements/cr_shared_vars.css.js';
 import 'chrome://resources/cr_elements/cr_page_host_style.css.js';
 import './strings.m.js';
 
-import {loadTimeData} from '//resources/js/load_time_data.m.js';
 import {I18nBehavior} from 'chrome://resources/cr_elements/i18n_behavior.js';
-import {afterNextRender, html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 /**
  * @fileoverview
- * 'bluetooth-dialog-host' is used to host a <bluetooth-dialog> element to
- * manage bluetooth pairing. The device properties are provided in the
- * chrome 'dialogArguments' variable. When created (attached) the dialog
- * connects to the specified device and passes the results to the
- * bluetooth-dialog element to display.
+ * 'bluetooth-dialog-host' is used to host a <bluetooth-pairing-ui> element to
+ * manage bluetooth pairing. The dialog arguments are provided in the
+ * chrome 'dialogArguments' variable.
  */
 
 Polymer({
@@ -37,20 +33,10 @@
      */
     pairingDevice_: Object,
 
-    /** @private */
-    isBluetoothRevampEnabled_: {
-      type: Boolean,
-      value() {
-        return loadTimeData.getBoolean('enableBluetoothRevamp');
-      },
-    },
-
     /**
      * The address, when set, of the specific device that will be attempted to
      * be paired with by the pairing dialog. If null, no specific device will be
      * paired with and the user will be allowed to select a device to pair with.
-     * This is set by the dialog arguments when |isBluetoothRevampEnabled_| is
-     * true.
      * @private {?string}
      */
     deviceAddress_: {
@@ -62,8 +48,6 @@
      * Flag indicating whether links should be displayed or not. In some
      * cases, such as the user being in OOBE or the login screen, links will
      * not work and should not be displayed.
-     * This is set by the dialog arguments when |isBluetoothRevampEnabled_| is
-     * true.
      */
     shouldOmitLinks_: {
       type: Boolean,
@@ -74,54 +58,17 @@
   /** @override */
   attached() {
     const dialogArgs = chrome.getVariableValue('dialogArguments');
-
-    if (this.isBluetoothRevampEnabled_) {
-      if (!dialogArgs) {
-        return;
-      }
-
-      const parsedDialogArgs = JSON.parse(dialogArgs);
-      if (!parsedDialogArgs) {
-        return;
-      }
-
-      this.deviceAddress_ = parsedDialogArgs.address;
-      this.shouldOmitLinks_ = !!parsedDialogArgs.shouldOmitLinks;
-      return;
-    }
-
     if (!dialogArgs) {
-      // This situation currently only occurs if the user navigates to the debug
-      // chrome://bluetooth-pairing.
-      console.warn('No arguments were provided to the dialog.');
-
-      // Wait for next render or deviceDialog has not been created yet.
-      afterNextRender(this, () => this.$$('#deviceDialog').open());
       return;
     }
 
     const parsedDialogArgs = JSON.parse(dialogArgs);
+    if (!parsedDialogArgs) {
+      return;
+    }
 
-    // Wait for next render or deviceDialog has not been created yet.
-    afterNextRender(this, () => this.connect_(parsedDialogArgs.address));
-  },
-
-  /**
-   * @param {!string} address The address of the pairing device.
-   * @private
-   */
-  connect_(address) {
-    this.$$('#deviceDialog').open();
-
-    chrome.bluetooth.getDevice(address, device => {
-      this.pairingDevice_ = device;
-      chrome.bluetoothPrivate.connect(address, result => {
-        var dialog = this.$$('#deviceDialog');
-        dialog.endConnectionAttempt(
-            this.pairingDevice_, true /* wasPairing */,
-            chrome.runtime.lastError, result);
-      });
-    });
+    this.deviceAddress_ = parsedDialogArgs.address;
+    this.shouldOmitLinks_ = !!parsedDialogArgs.shouldOmitLinks;
   },
 
   /** @private */
diff --git a/chrome/browser/resources/connectors_internals/BUILD.gn b/chrome/browser/resources/connectors_internals/BUILD.gn
index 3264292..cf9590e 100644
--- a/chrome/browser/resources/connectors_internals/BUILD.gn
+++ b/chrome/browser/resources/connectors_internals/BUILD.gn
@@ -11,7 +11,7 @@
   web_component_files = [
     "app.ts",
     "connectors_tabs.ts",
-    "zero_trust_connector.ts",
+    "device_trust_connector.ts",
   ]
   mojo_files = [ "$root_gen_dir/mojom-webui/chrome/browser/ui/webui/connectors_internals/connectors_internals.mojom-webui.js" ]
   mojo_files_deps = [
diff --git a/chrome/browser/resources/connectors_internals/connectors_tabs.ts b/chrome/browser/resources/connectors_internals/connectors_tabs.ts
index 1c769f9..066570e 100644
--- a/chrome/browser/resources/connectors_internals/connectors_tabs.ts
+++ b/chrome/browser/resources/connectors_internals/connectors_tabs.ts
@@ -8,7 +8,7 @@
 import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
 
 import {getTemplate} from './connectors_tabs.html.js';
-import {ZeroTrustConnectorElement} from './zero_trust_connector.js';
+import {DeviceTrustConnectorElement} from './device_trust_connector.js';
 
 interface ConnectorTab {
   // Title used as the tab button's text.
@@ -26,9 +26,9 @@
 // Set of all connector tabs. Adding a new entry here will make it automatically
 // show in the UI.
 const connectorTabs: ConnectorTab[] = [{
-  title: 'Zero Trust',
-  directive: ZeroTrustConnectorElement.is,
-  isEnabled: loadTimeData.getBoolean('zeroTrustConnectorEnabled'),
+  title: 'Device Trust',
+  directive: DeviceTrustConnectorElement.is,
+  isEnabled: loadTimeData.getBoolean('deviceTrustConnectorEnabled'),
 }];
 
 export class ConnectorsTabsElement extends CustomElement {
diff --git a/chrome/browser/resources/connectors_internals/zero_trust_connector.html b/chrome/browser/resources/connectors_internals/device_trust_connector.html
similarity index 65%
rename from chrome/browser/resources/connectors_internals/zero_trust_connector.html
rename to chrome/browser/resources/connectors_internals/device_trust_connector.html
index 37d1100..db18dcb 100644
--- a/chrome/browser/resources/connectors_internals/zero_trust_connector.html
+++ b/chrome/browser/resources/connectors_internals/device_trust_connector.html
@@ -11,7 +11,7 @@
     display: none;
   }
 </style>
-<h2>Zero Trust Connector</h2>
+<h2>Device Trust Connector</h2>
 <div>
   Is Enabled: <span id="enabled-string" class="bold"></span>
 </div>
@@ -19,8 +19,13 @@
   Key Manager Initialized: <span id="key-manager-state" class="bold"></span>
 </div>
 <div id="key-metadata-row">
-  Trust Level: <span id="key-trust-level" class="bold"></span>
-  Key Type: <span id="key-type" class="bold"></span>
+  <div>
+    Trust Level: <span id="key-trust-level" class="bold"></span>
+    Key Type: <span id="key-type" class="bold"></span>
+  </div>
+  <div>
+    SPKI Hash: <span id="spki-hash" class="bold"></span>
+  </div>
 </div>
 <div>
   Signals:
diff --git a/chrome/browser/resources/connectors_internals/zero_trust_connector.ts b/chrome/browser/resources/connectors_internals/device_trust_connector.ts
similarity index 78%
rename from chrome/browser/resources/connectors_internals/zero_trust_connector.ts
rename to chrome/browser/resources/connectors_internals/device_trust_connector.ts
index 3e9225d..819781f 100644
--- a/chrome/browser/resources/connectors_internals/zero_trust_connector.ts
+++ b/chrome/browser/resources/connectors_internals/device_trust_connector.ts
@@ -4,8 +4,8 @@
 
 import {CustomElement} from 'chrome://resources/js/custom_element.js';
 
-import {KeyInfo, KeyManagerInitializedValue, KeyTrustLevel, KeyType, PageHandler, PageHandlerInterface, ZeroTrustState} from './connectors_internals.mojom-webui.js';
-import {getTemplate} from './zero_trust_connector.html.js';
+import {DeviceTrustState, KeyInfo, KeyManagerInitializedValue, KeyTrustLevel, KeyType, PageHandler, PageHandlerInterface} from './connectors_internals.mojom-webui.js';
+import {getTemplate} from './device_trust_connector.html.js';
 
 const TrustLevelStringMap = {
   [KeyTrustLevel.UNSPECIFIED]: 'Unspecified',
@@ -19,9 +19,9 @@
   [KeyType.EC]: 'EC',
 };
 
-export class ZeroTrustConnectorElement extends CustomElement {
+export class DeviceTrustConnectorElement extends CustomElement {
   static get is() {
-    return 'zero-trust-connector';
+    return 'device-trust-connector';
   }
 
   static override get template() {
@@ -44,6 +44,7 @@
     const metadataRowEl = (this.$('#key-metadata-row') as HTMLElement);
     const trustLevelStateEl = (this.$('#key-trust-level') as HTMLElement);
     const keyTypeStateEl = (this.$('#key-type') as HTMLElement);
+    const spkiHashStateEl = (this.$('#spki-hash') as HTMLElement);
 
     const initializedValue = keyInfo.isKeyManagerInitialized;
     if (initializedValue === KeyManagerInitializedValue.UNSUPPORTED) {
@@ -59,6 +60,7 @@
         trustLevelStateEl.innerText =
             this.trustLevelToString(keyInfo.trustLevel);
         keyTypeStateEl.innerText = this.keyTypeToString(keyInfo.keyType);
+        spkiHashStateEl.innerText = keyInfo.encodedSpkiHash;
 
         this.showElement(metadataRowEl);
       } else {
@@ -92,8 +94,8 @@
     super();
     this.pageHandler = PageHandler.getRemote();
 
-    this.fetchZeroTrustValues()
-        .then(state => this.setZeroTrustValues(state))
+    this.fetchDeviceTrustValues()
+        .then(state => this.setDeviceTrustValues(state))
         .then(() => {
           const copyButton = this.copyButton;
           if (copyButton) {
@@ -103,7 +105,7 @@
         });
   }
 
-  private setZeroTrustValues(state: ZeroTrustState|undefined) {
+  private setDeviceTrustValues(state: DeviceTrustState|undefined) {
     if (!state) {
       this.enabledString = 'error';
       return;
@@ -116,11 +118,11 @@
     this.signalsString = state.signalsJson;
   }
 
-  private async fetchZeroTrustValues(): Promise<ZeroTrustState|undefined> {
-    return this.pageHandler.getZeroTrustState().then(
-        (response: {state: ZeroTrustState}) => response && response.state,
+  private async fetchDeviceTrustValues(): Promise<DeviceTrustState|undefined> {
+    return this.pageHandler.getDeviceTrustState().then(
+        (response: {state: DeviceTrustState}) => response && response.state,
         (e: object) => {
-          console.warn(`fetchZeroTrustValues failed: ${JSON.stringify(e)}`);
+          console.warn(`fetchDeviceTrustValues failed: ${JSON.stringify(e)}`);
           return undefined;
         });
   }
@@ -148,4 +150,5 @@
   }
 }
 
-customElements.define(ZeroTrustConnectorElement.is, ZeroTrustConnectorElement);
+customElements.define(
+    DeviceTrustConnectorElement.is, DeviceTrustConnectorElement);
diff --git a/chrome/browser/resources/new_tab_page/app.html b/chrome/browser/resources/new_tab_page/app.html
index b526cd5..0602134d 100644
--- a/chrome/browser/resources/new_tab_page/app.html
+++ b/chrome/browser/resources/new_tab_page/app.html
@@ -94,9 +94,14 @@
   }
 
   ntp-realbox {
+    visibility: hidden;
     width: var(--ntp-search-box-width);
   }
 
+  ntp-realbox[shown] {
+    visibility: visible;
+  }
+
   cr-most-visited {
     --most-visited-focus-shadow: var(--ntp-focus-shadow);
     --most-visited-text-color: var(--color-new-tab-page-most-visited-foreground);
@@ -317,12 +322,13 @@
       hidden$="[[!logoEnabled_]]">
   </ntp-logo>
   <div id="realboxContainer">
-    <ntp-realbox id="realbox"
-        is-dark="[[theme_.isDark]]"
-        on-open-voice-search="onOpenVoiceSearch_">
+    <ntp-realbox id="realbox" is-dark="[[theme_.isDark]]"
+        on-open-lens-search="onOpenLensSearch_"
+        on-open-voice-search="onOpenVoiceSearch_" shown$="[[realboxShown_]]">
     </ntp-realbox>
     <template is="dom-if" if="[[realboxLensSearchEnabled_]]">
-      <ntp-lens-upload-dialog>
+      <ntp-lens-upload-dialog id="lensUploadDialog" 
+          on-close-lens-search="onCloseLensSearch_">
       </ntp-lens-upload-dialog>
     </template>
   </div>
diff --git a/chrome/browser/resources/new_tab_page/app.ts b/chrome/browser/resources/new_tab_page/app.ts
index 28309fe1..d38edb6 100644
--- a/chrome/browser/resources/new_tab_page/app.ts
+++ b/chrome/browser/resources/new_tab_page/app.ts
@@ -12,8 +12,8 @@
 import {ClickInfo, Command} from 'chrome://resources/js/browser_command/browser_command.mojom-webui.js';
 import {BrowserCommandProxy} from 'chrome://resources/js/browser_command/browser_command_proxy.js';
 import {hexColorToSkColor, skColorToRgba} from 'chrome://resources/js/color_utils.js';
-import {FocusOutlineManager} from 'chrome://resources/js/focus_outline_manager.js';
 import {EventTracker} from 'chrome://resources/js/event_tracker.js';
+import {FocusOutlineManager} from 'chrome://resources/js/focus_outline_manager.js';
 import {SkColor} from 'chrome://resources/mojo/skia/public/mojom/skcolor.mojom-webui.js';
 import {DomIf, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
@@ -22,6 +22,7 @@
 import {CustomizeDialogPage} from './customize_dialog_types.js';
 import {loadTimeData} from './i18n_setup.js';
 import {IframeElement} from './iframe.js';
+import {LensUploadDialogElement} from './lens_upload_dialog.js';
 import {LogoElement} from './logo.js';
 import {recordLoadDuration} from './metrics_utils.js';
 import {PageCallbackRouter, PageHandlerRemote, Theme} from './new_tab_page.mojom-webui.js';
@@ -180,6 +181,11 @@
         value: () => loadTimeData.getBoolean('realboxLensSearch'),
       },
 
+      realboxShown_: {
+        type: Boolean,
+        computed: 'computeRealboxShown_(showLensUploadDialog_)',
+      },
+
       logoEnabled_: {
         type: Boolean,
         value: () => loadTimeData.getBoolean('logoEnabled'),
@@ -255,6 +261,8 @@
         reflectToAttribute: true,
       },
 
+      showLensUploadDialog_: Boolean,
+
       /**
        * If true, renders additional elements that were not deemed crucial to
        * to show up immediately on load.
@@ -285,6 +293,8 @@
   private logoColor_: string;
   private singleColoredLogo_: boolean;
   private realboxLensSearchEnabled_: boolean;
+  private realboxShown_: boolean;
+  private showLensUploadDialog_: boolean = false;
   private logoEnabled_: boolean;
   private oneGoogleBarEnabled_: boolean;
   private shortcutsEnabled_: boolean;
@@ -436,6 +446,11 @@
         '';
   }
 
+  private computeRealboxShown_(showLensUploadDialog: boolean): boolean {
+    // Do not show the realbox if the upload dialog is showing.
+    return !showLensUploadDialog;
+  }
+
   private computePromoAndModulesLoaded_(): boolean {
     return (!loadTimeData.getBoolean('middleSlotPromoEnabled') ||
             this.middleSlotPromoLoaded_) &&
@@ -453,6 +468,19 @@
     recordVoiceAction(VoiceAction.ACTIVATE_SEARCH_BOX);
   }
 
+  private onOpenLensSearch_() {
+    // TODO(crbug.com/1371943): Use shadow root to select upload dialog until
+    // feature is no-longer wrapped by dom-if.
+    (this.shadowRoot!.querySelector(LensUploadDialogElement.is)! as
+     LensUploadDialogElement)
+        .openDialog();
+    this.showLensUploadDialog_ = true;
+  }
+
+  private onCloseLensSearch_() {
+    this.showLensUploadDialog_ = false;
+  }
+
   private onCustomizeClick_() {
     if (this.customizeChromeEnabled_) {
       this.pageHandler_.showCustomizeChromeSidePanel();
diff --git a/chrome/browser/resources/new_tab_page/lens_upload_dialog.html b/chrome/browser/resources/new_tab_page/lens_upload_dialog.html
index 281c6866..df1d6f9 100644
--- a/chrome/browser/resources/new_tab_page/lens_upload_dialog.html
+++ b/chrome/browser/resources/new_tab_page/lens_upload_dialog.html
@@ -1 +1,257 @@
-<div></div>
\ No newline at end of file
+<style include="cr-icons">
+  :host {
+    --upload-dialog-background: var(--color-new-tab-page-background-override);
+    --upload-dialog-divider-line-border-top: 1px solid var(--google-grey-200);
+    --upload-dialog-divider-line-or-label-color: var(--color-new-tab-page-secondary-foreground);
+    --upload-dialog-drag-drop-background: var(--google-grey-50);
+    --upload-dialog-drag-drop-border: 1px dashed var(--google-grey-400);
+    --upload-dialog-drag-drop-title-color: var(--color-new-tab-page-secondary-foreground);
+    --upload-dialog-drag-drop-upload-text-color: var(--google-blue-700);
+    --upload-dialog-input-box-background: var(--color-new-tab-page-background-override);
+    --upload-dialog-input-box-border-color: var(--google-grey-300);
+    --upload-dialog-input-box-color: var(--google-grey-800);
+    --upload-dialog-input-box-placeholder-color: var(--google-grey-600);
+    --upload-dialog-input-submit-background: var(--color-new-tab-page-background-override);
+    --upload-dialog-input-submit-border-color: var(--google-grey-300);
+    --upload-dialog-input-submit-color: var(--google-blue-600);
+    --upload-dialog-shadow: var( --cr-elevation-3);
+    --upload-dialog-title-color: var(--google-grey-800);
+    font-family: inherit;
+    width: calc(100% + 8px);
+  }
+
+  #dialog {
+    background: var(--upload-dialog-background);
+    border-radius: 22px;
+    box-shadow: var(--upload-dialog-shadow);
+    box-sizing: border-box;
+    left: unset;
+    padding: 20px;
+    position: relative;
+    right: unset;
+  }
+
+  :host-context([dir='rtl']) #closeButton {
+    left: 20px;
+    right: initial;
+  }
+
+  #closeButton {
+    align-self: flex-end;
+    cursor: pointer;
+    display: flex;
+    position: absolute;
+    right: 20px;
+    top: 15px;
+  }
+
+  #title {
+    color: var(--upload-dialog-title-color);
+    font-size: 16px;
+    letter-spacing: 0.1px;
+    line-height: 28px;
+    margin-bottom: 14px;
+    text-align: center;
+  }
+
+  #dragDropArea {
+    background: var(--upload-dialog-drag-drop-background);
+    border: var(--upload-dialog-drag-drop-border);
+    border-radius: 8px;
+    box-sizing: border-box;
+    display: flex;
+    flex-direction: column;
+    flex-grow: 1;
+    height: 280px;
+    padding: 20px;
+    position: relative;
+    width: 100%;
+  }
+
+  #dragDropNormal {
+    align-items: center;
+    display: flex;
+    flex-direction: column;
+    flex-grow: 1;
+    height: 100%;
+    justify-content: center;
+    margin-top: 0;
+  }
+
+  #dragDropTitleContainer {
+    align-items: center;
+    display: inline-flex;
+    flex-direction: row;
+    flex-grow: 1;
+    justify-content: initial;
+  }
+
+  #dragDropIllustration {
+    background: url(icons/drag_drop_illustration.svg) no-repeat center;
+    display: inline-flex;
+    height: 45px;
+    margin-inline-end: 18px;
+    vertical-align: middle;
+    width: 59px;
+  }
+
+  #dragDropTitle {
+    color: var(--upload-dialog-drag-drop-title-color);
+    font-size: 16px;
+    line-height: 25px;
+    max-width: 300px;
+  }
+
+  #dragText {
+    display: inline-block;
+    margin-inline-end: 4px;
+  }
+
+  #uploadText {
+    color: var(--upload-dialog-drag-drop-upload-text-color);
+    cursor: pointer;
+    display: inline-block;
+    white-space: nowrap;
+  }
+
+  #uploadText:focus {
+    text-decoration: underline;
+  }
+
+  #urlUploadContainer {
+    box-sizing: border-box;
+    display: flex;
+    flex-direction: column;
+    width: 100%;
+  }
+
+  #sectionDivider {
+    align-items: center;
+    display: flex;
+  }
+
+  .divider-line {
+    border-top: var(--upload-dialog-divider-line-border-top);
+    flex-grow: 1;
+    height: 0;
+  }
+
+  #orLabel {
+    color: var(--upload-dialog-divider-line-or-label-color);
+    cursor: default;
+    flex-shrink: 0;
+    font-size: 14px;
+    margin-inline-end: 20px;
+    margin-inline-start: 20px;
+  }
+
+  #inputContainer {
+    display: flex;
+    margin-top: 14px;
+  }
+
+  #inputBox {
+    background: var(--upload-dialog-input-box-background);
+    border: 1px solid var(--upload-dialog-input-box-border-color);
+    border-radius: 36px;
+    color: var(--upload-dialog-input-box-color);
+    display: inline-flex;
+    flex-grow: 1;
+    font-size: 14px;
+    height: 40px;
+    outline: none;
+    padding: 0 24px;
+    width: 100%;
+  }
+
+  #inputBox::placeholder {
+    color: var(--upload-dialog-input-box-placeholder-color);
+  }
+
+  #inputBox:hover {
+    --upload-dialog-input-box-border-color: var(--google-grey-800);
+  }
+
+  #inputBox:focus {
+    --upload-dialog-input-box-border-color: var(--google-blue-700);
+  }
+
+  #inputBox:active {
+    --upload-dialog-input-box-border-color: var(--google-blue-700);
+  }
+
+  #inputSubmit {
+    align-items: center;
+    background: var(--upload-dialog-input-submit-background);
+    border: 1px solid var(--upload-dialog-input-submit-border-color);
+    border-radius: 32px;
+    color: var(--upload-dialog-input-submit-color);
+    cursor: pointer;
+    display: inline-flex;
+    flex-shrink: 0;
+    font-size: 14px;
+    justify-content: center;
+    letter-spacing: 0.25px;
+    margin-inline-start: 8px;
+    outline: 0;
+    padding: 8px 24px;
+  }
+
+  #inputSubmit:hover {
+    --upload-dialog-input-submit-background: rgba(var(--google-blue-700), 0.08);
+    --upload-dialog-input-submit-border-color: var(--google-grey-300);
+    --upload-dialog-input-submit-color: var(--google-blue-600);
+  }
+
+  #inputSubmit:focus {
+    --upload-dialog-input-submit-background: rgba(var(--google-blue-700), 0.08);
+    --upload-dialog-input-submit-border-color: var(--google-blue-700);
+    --upload-dialog-input-submit-color: var(--google-blue-600);
+  }
+
+  #inputSubmit:active {
+    --upload-dialog-input-submit-background: rgba(var(--google-blue-700), 0.14);
+    --upload-dialog-input-submit-border-color: var(--google-grey-300);
+    --upload-dialog-input-submit-color: var(--google-blue-600);
+  }
+</style>
+
+<div id="dialog" hidden$="{{isHidden_}}" tabindex="-1" lang="$i18n{language}">
+  <div id="container">
+    <cr-icon-button id="closeButton" class="icon-clear" 
+        title="$i18n{lensSearchUploadDialogCloseButtonLabel}"
+        on-click="onCloseButtonClick_">
+    </cr-icon-button>
+    <div id="title">
+      $i18n{lensSearchUploadDialogTitle}
+    </div>
+    <div id="dragDropArea">
+      <div id="dragDropNormal">
+        <div id="dragDropTitleContainer">
+          <div id="dragDropIllustration"></div>
+          <div id="dragDropTitle">
+            <span id="dragText">$i18n{lensSearchUploadDialogDragTitle}</span>
+            <span tabindex="0" role="button" id="uploadText">
+              $i18n{lensSearchUploadDialogUploadFileTitle}
+            </span>
+          </div>
+        </div>
+        <div id="urlUploadContainer">
+          <div id="sectionDivider">
+            <div class="divider-line"></div>
+            <div id="orLabel">$i18n{lensSearchUploadDialogOrText}</div>
+            <div class="divider-line"></div>
+          </div>
+          <div id="inputContainer">
+            <input id="inputBox" autocomplete="false" autocorrect="false"
+                placeholder="$i18n{lensSearchUploadDialogTextPlaceholder}" 
+                text="text">
+            <div id="inputSubmit" tabindex="0" role="button">
+              $i18n{lensSearchUploadDialogSearchButtonLabel}
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
\ No newline at end of file
diff --git a/chrome/browser/resources/new_tab_page/lens_upload_dialog.ts b/chrome/browser/resources/new_tab_page/lens_upload_dialog.ts
index 06a39fb3..f7f1e53 100644
--- a/chrome/browser/resources/new_tab_page/lens_upload_dialog.ts
+++ b/chrome/browser/resources/new_tab_page/lens_upload_dialog.ts
@@ -2,12 +2,17 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import 'chrome://resources/cr_elements/cr_button/cr_button.js';
+import 'chrome://resources/cr_elements/cr_icon_button/cr_icon_button.js';
+
+import {afterNextRender, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 import {getTemplate} from './lens_upload_dialog.html.js';
-
-
-export interface LensUploadDialogElement {}
+export interface LensUploadDialogElement {
+  $: {
+    dialog: HTMLDivElement,
+  };
+}
 
 // Modal that lets the user upload images for search on Lens.
 export class LensUploadDialogElement extends PolymerElement {
@@ -18,8 +23,69 @@
   static get template() {
     return getTemplate();
   }
-}
 
+  static get properties() {
+    return {
+      isHidden_: Boolean,
+    };
+  }
+
+  private isHidden_: boolean = true;
+  private outsideClickHandler_: (event: MouseEvent) => void;
+  private outsideClickHandlerAttached_ = false;
+
+  constructor() {
+    super();
+    this.outsideClickHandler_ = (event: MouseEvent) => {
+      const outsideDialog = !event.composedPath().includes(this.$.dialog);
+      if (outsideDialog) {
+        this.closeDialog();
+      }
+    };
+  }
+
+  override connectedCallback() {
+    super.connectedCallback();
+  }
+
+  override disconnectedCallback() {
+    super.disconnectedCallback();
+    this.detachOutsideClickHandler_();
+  }
+
+  openDialog() {
+    this.isHidden_ = false;
+    // Click handler needs to be attached outside of the initial event handler,
+    // otherwise the click of the icon which initially opened the dialog would
+    // also be registered in the outside click handler, causing the dialog to
+    // immediately close after opening.
+    afterNextRender(this, () => this.attachOutsideClickHandler_());
+  }
+
+  closeDialog() {
+    this.isHidden_ = true;
+    this.detachOutsideClickHandler_();
+    this.dispatchEvent(new Event('close-lens-search'));
+  }
+
+  private attachOutsideClickHandler_() {
+    if (!this.outsideClickHandlerAttached_) {
+      document.addEventListener('click', this.outsideClickHandler_);
+      this.outsideClickHandlerAttached_ = true;
+    }
+  }
+
+  private detachOutsideClickHandler_() {
+    if (this.outsideClickHandlerAttached_) {
+      document.removeEventListener('click', this.outsideClickHandler_);
+      this.outsideClickHandlerAttached_ = false;
+    }
+  }
+
+  private onCloseButtonClick_() {
+    this.closeDialog();
+  }
+}
 declare global {
   interface HTMLElementTagNameMap {
     'ntp-lens-upload-dialog': LensUploadDialogElement;
diff --git a/chrome/browser/resources/new_tab_page/middle_slot_promo.html b/chrome/browser/resources/new_tab_page/middle_slot_promo.html
index 9ff7dc2..9071e5a 100644
--- a/chrome/browser/resources/new_tab_page/middle_slot_promo.html
+++ b/chrome/browser/resources/new_tab_page/middle_slot_promo.html
@@ -16,18 +16,21 @@
     flex-direction: row;
     height: 30px;
     justify-content: center;
-    padding-inline-end: 8px;
-    padding-inline-start: 4px;
-  }
-
-  :host([shown-middle-slot-promo-id_]) #promoAndDismissContainer {
-    padding-inline-end: 12px;
   }
 
   #promoContainer {
     align-items: center;
     display: flex;
-    overflow: hidden;
+    overflow-x: clip;
+    padding-inline-end: 8px;
+  }
+
+  :host([shown-middle-slot-promo-id_]) #promoContainer {
+    padding-inline-end: 2px;
+  }
+
+  #promoContainer > :first-child {
+    padding-inline-start: 8px;
   }
 
   a {
@@ -43,7 +46,7 @@
   }
 
   .image + * {
-    margin-inline-start: 4px;
+    padding-inline-start: 4px;
   }
 
   img {
@@ -62,7 +65,8 @@
   #dismissPromoButton {
     --cr-icon-button-icon-size: 14px;
     --cr-icon-button-size: 20px;
-    margin-inline-start: 10px;
+    margin-inline-end: 4px;
+    margin-inline-start: 8px;
   }
 
   #promoContainer > :last-child {
diff --git a/chrome/browser/resources/new_tab_page/realbox/realbox.ts b/chrome/browser/resources/new_tab_page/realbox/realbox.ts
index e2f5002..70e3e80 100644
--- a/chrome/browser/resources/new_tab_page/realbox/realbox.ts
+++ b/chrome/browser/resources/new_tab_page/realbox/realbox.ts
@@ -76,6 +76,13 @@
         reflectToAttribute: true,
       },
 
+      /** Whether the Google Lens icon should be visible in the searchbox. */
+      realboxLensSearchEnabled: {
+        type: Boolean,
+        value: () => loadTimeData.getBoolean('realboxLensSearch'),
+        reflectToAttribute: true,
+      },
+
       //========================================================================
       // Private properties
       //========================================================================
@@ -185,6 +192,7 @@
   isDark: boolean;
   matchesAreVisible: boolean;
   matchSearchbox: boolean;
+  realboxLensSearchEnabled: boolean;
   private charTypedTime_: number;
   private isDeletingInput_: boolean;
   private lastIgnoredEnterEvent_: KeyboardEvent|null;
diff --git a/chrome/browser/resources/pdf/pdf_viewer_base.ts b/chrome/browser/resources/pdf/pdf_viewer_base.ts
index d30222f..2838b0a 100644
--- a/chrome/browser/resources/pdf/pdf_viewer_base.ts
+++ b/chrome/browser/resources/pdf/pdf_viewer_base.ts
@@ -422,31 +422,33 @@
    * @param params The open params passed in the URL.
    */
   private handleURLParams_(params: OpenPdfParams) {
+    assert(this.viewport_);
+
     if (params.zoom) {
-      this.viewport_!.setZoom(params.zoom);
+      this.viewport_.setZoom(params.zoom);
     }
 
     if (params.position) {
-      this.viewport_!.goToPageAndXY(
+      this.viewport_.goToPageAndXY(
           params.page ? params.page : 0, params.position.x, params.position.y);
     } else if (params.page) {
-      this.viewport_!.goToPage(params.page);
+      this.viewport_.goToPage(params.page);
     }
 
     if (params.view) {
       this.isUserInitiatedEvent = false;
-      this.updateViewportFit(params.view);
+      this.viewport_.setFittingType(params.view);
       this.forceFit(params.view);
       if (params.viewPosition) {
         const zoomedPositionShift =
-            params.viewPosition * this.viewport_!.getZoom();
-        const currentViewportPosition = this.viewport_!.position;
+            params.viewPosition * this.viewport_.getZoom();
+        const currentViewportPosition = this.viewport_.position;
         if (params.view === FittingType.FIT_TO_WIDTH) {
           currentViewportPosition.y += zoomedPositionShift;
         } else if (params.view === FittingType.FIT_TO_HEIGHT) {
           currentViewportPosition.x += zoomedPositionShift;
         }
-        this.viewport_!.setPosition(currentViewportPosition);
+        this.viewport_.setPosition(currentViewportPosition);
       }
       this.isUserInitiatedEvent = true;
     }
@@ -494,19 +496,9 @@
     }
   }
 
-  protected updateViewportFit(fittingType: FittingType) {
-    if (fittingType === FittingType.FIT_TO_PAGE) {
-      this.viewport_!.fitToPage();
-    } else if (fittingType === FittingType.FIT_TO_WIDTH) {
-      this.viewport_!.fitToWidth();
-    } else if (fittingType === FittingType.FIT_TO_HEIGHT) {
-      this.viewport_!.fitToHeight();
-    }
-  }
-
   /** Requests to change the viewport fitting type. */
   protected onFitToChanged(e: CustomEvent<FittingType>) {
-    this.updateViewportFit(e.detail);
+    this.viewport_!.setFittingType(e.detail);
     recordFitTo(e.detail);
   }
 
diff --git a/chrome/browser/resources/pdf/pdf_viewer_pp.ts b/chrome/browser/resources/pdf/pdf_viewer_pp.ts
index 3ce4b84..cea672a 100644
--- a/chrome/browser/resources/pdf/pdf_viewer_pp.ts
+++ b/chrome/browser/resources/pdf/pdf_viewer_pp.ts
@@ -202,7 +202,7 @@
           this.inPrintPreviewMode_ = true;
           this.isUserInitiatedEvent = false;
           this.forceFit(FittingType.FIT_TO_PAGE);
-          this.updateViewportFit(FittingType.FIT_TO_PAGE);
+          this.viewport.setFittingType(FittingType.FIT_TO_PAGE);
           this.isUserInitiatedEvent = true;
         }
 
diff --git a/chrome/browser/resources/pdf/viewport.ts b/chrome/browser/resources/pdf/viewport.ts
index 7db7f5cd..9302ee79 100644
--- a/chrome/browser/resources/pdf/viewport.ts
+++ b/chrome/browser/resources/pdf/viewport.ts
@@ -868,6 +868,25 @@
     return Math.max(zoom, 0);
   }
 
+  setFittingType(fittingType: FittingType) {
+    switch (fittingType) {
+      case FittingType.FIT_TO_PAGE:
+        this.fitToPage();
+        return;
+      case FittingType.FIT_TO_WIDTH:
+        this.fitToWidth();
+        return;
+      case FittingType.FIT_TO_HEIGHT:
+        this.fitToHeight();
+        return;
+      case FittingType.NONE:
+        this.fittingType_ = fittingType;
+        return;
+      default:
+        assertNotReached('Invalid fittingType');
+    }
+  }
+
   /** Zoom the viewport so that the page width consumes the entire viewport. */
   fitToWidth() {
     this.mightZoom_(() => {
diff --git a/chrome/browser/resources/settings/chromeos/BUILD.gn b/chrome/browser/resources/settings/chromeos/BUILD.gn
index 41a29ea3..18f6519 100644
--- a/chrome/browser/resources/settings/chromeos/BUILD.gn
+++ b/chrome/browser/resources/settings/chromeos/BUILD.gn
@@ -404,7 +404,6 @@
     ":web_components",
 
     # Sub-folder targets
-    "bluetooth_page:web_components",
     "crostini_page:web_components",
     "device_page:web_components",
     "guest_os:web_components",
@@ -430,7 +429,6 @@
 group("closure_compile_module") {
   deps = [
     ":closure_compile_local_module",
-    "bluetooth_page:closure_compile_module",
     "crostini_page:closure_compile_module",
     "device_page:closure_compile_module",
     "guest_os:closure_compile_module",
diff --git a/chrome/browser/resources/settings/chromeos/bluetooth_page/BUILD.gn b/chrome/browser/resources/settings/chromeos/bluetooth_page/BUILD.gn
deleted file mode 100644
index 8a78bc96..0000000
--- a/chrome/browser/resources/settings/chromeos/bluetooth_page/BUILD.gn
+++ /dev/null
@@ -1,87 +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.
-
-import("//third_party/closure_compiler/compile_js.gni")
-import("//tools/polymer/html_to_js.gni")
-import("../os_settings.gni")
-
-js_type_check("closure_compile_module") {
-  closure_flags = os_settings_closure_flags
-  is_polymer3 = true
-  deps = [
-    ":bluetooth_device_list_item",
-    ":bluetooth_page",
-    ":bluetooth_page_browser_proxy",
-    ":bluetooth_subpage",
-  ]
-}
-
-js_library("bluetooth_device_list_item") {
-  deps = [
-    ":bluetooth_page_browser_proxy",
-    "//ash/webui/common/resources:focus_row_behavior",
-    "//services/device/public/mojom:mojom_js_library_for_compile",
-    "//ui/webui/resources/cr_elements:i18n_behavior",
-  ]
-  externs_list = [
-    "$externs_path/bluetooth.js",
-    "//ui/webui/resources/cr_elements/cr_action_menu/cr_action_menu_externs.js",
-  ]
-}
-
-js_library("bluetooth_page") {
-  deps = [
-    ":bluetooth_subpage",
-    "..:deep_linking_behavior",
-    "..:metrics_recorder",
-    "..:os_route",
-    "..:prefs_behavior",
-    "..:route_observer_behavior",
-    "../..:router",
-    "//services/device/public/mojom:mojom_js_library_for_compile",
-    "//ui/webui/resources/cr_elements:i18n_behavior",
-    "//ui/webui/resources/js:assert",
-  ]
-  externs_list = [
-    "$externs_path/bluetooth.js",
-    "$externs_path/bluetooth_private.js",
-  ]
-}
-
-js_library("bluetooth_subpage") {
-  deps = [
-    "..:deep_linking_behavior",
-    "..:metrics_recorder",
-    "..:os_route",
-    "..:route_observer_behavior",
-    "../..:router",
-    "//ash/webui/common/resources:list_property_update_behavior",
-    "//ash/webui/common/resources/bluetooth:bluetooth_dialog",
-    "//ash/webui/common/resources/bluetooth:bluetooth_metrics_utils",
-    "//services/device/public/mojom:mojom_js_library_for_compile",
-    "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled",
-    "//ui/webui/resources/cr_elements:cr_scrollable_behavior",
-    "//ui/webui/resources/cr_elements:i18n_behavior",
-    "//ui/webui/resources/js:assert",
-  ]
-  externs_list = [
-    "$externs_path/bluetooth.js",
-    "$externs_path/bluetooth_private.js",
-  ]
-}
-
-js_library("bluetooth_page_browser_proxy") {
-  deps = [
-    "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled",
-    "//ui/webui/resources/js:cr.m",
-  ]
-}
-
-html_to_js("web_components") {
-  js_files = [
-    "bluetooth_device_list_item.js",
-    "bluetooth_page.js",
-    "bluetooth_subpage.js",
-  ]
-}
diff --git a/chrome/browser/resources/settings/chromeos/bluetooth_page/DIR_METADATA b/chrome/browser/resources/settings/chromeos/bluetooth_page/DIR_METADATA
deleted file mode 100644
index be64e82..0000000
--- a/chrome/browser/resources/settings/chromeos/bluetooth_page/DIR_METADATA
+++ /dev/null
@@ -1,4 +0,0 @@
-buganizer {
-  component_id: 1131776
-}
-team_email: "cros-connectivity@google.com"
diff --git a/chrome/browser/resources/settings/chromeos/bluetooth_page/OWNERS b/chrome/browser/resources/settings/chromeos/bluetooth_page/OWNERS
deleted file mode 100644
index 8234d45..0000000
--- a/chrome/browser/resources/settings/chromeos/bluetooth_page/OWNERS
+++ /dev/null
@@ -1 +0,0 @@
-file://ash/webui/common/resources/bluetooth/OWNERS
diff --git a/chrome/browser/resources/settings/chromeos/bluetooth_page/bluetooth_device_list_item.html b/chrome/browser/resources/settings/chromeos/bluetooth_page/bluetooth_device_list_item.html
deleted file mode 100644
index 376940b..0000000
--- a/chrome/browser/resources/settings/chromeos/bluetooth_page/bluetooth_device_list_item.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<style include="settings-shared">
-  .name[connected] {
-    font-weight: 500;
-  }
-
-  .state[connected] {
-    color: var(--cros-text-color-positive);
-  }
-</style>
-<div focus-row-container>
-  <div class="list-item"
-      focus-row-control
-      focus-type="rowWrapper"
-      aria-label$="[[ariaLabel]]"
-      role="button"
-      selectable
-      on-keydown="onKeyDown_"
-      on-click="onClick_">
-    <iron-icon id="deviceIcon" icon="[[getDeviceIcon_(device)]]">
-    </iron-icon>
-    <div class="middle">
-      <div class="name"
-          connected$="[[device.connected]]"
-          aria-hidden="true">
-        [[getDeviceName_(device)]]
-      </div>
-      <div class="state secondary"
-          connected$="[[device.connected]]"
-          hidden$="[[!hasConnectionStatusText_(device)]]">
-        [[getConnectionStatusText_(device)]]
-      </div>
-    </div>
-    <template is="dom-if" if="[[shouldShowManagedIcon_]]" restamp>
-      <iron-icon id="managedIcon" icon="cr:domain"
-          tabindex="0"
-          on-mouseenter="onShowTooltip_"
-          on-focus="onShowTooltip_"
-          aria-label="$i18n{bluetoothManaged}"
-          role="img">
-      </iron-icon>
-    </template>
-    <div hidden$="[[!device.paired]]">
-      <cr-icon-button id="menuButton"
-          class="icon-more-vert"
-          focus-row-control
-          focus-type="menuButton"
-          on-click="onMenuButtonTap_"
-          tabindex$="[[tabindex]]"
-          title="$i18n{moreActions}"
-          on-keydown="ignoreEnterKey_"></cr-icon-button>
-    </div>
-  </div>
-</div>
-<cr-action-menu id="dotsMenu" role-description="$i18n{menu}">
-  <button class="dropdown-item" on-click="onConnectActionTap_">
-    [[getConnectActionText_(device.connected)]]
-  </button>
-  <button class="dropdown-item" on-click="onRemoveTap_">
-    $i18n{bluetoothRemove}
-  </button>
-</cr-action-menu>
diff --git a/chrome/browser/resources/settings/chromeos/bluetooth_page/bluetooth_device_list_item.js b/chrome/browser/resources/settings/chromeos/bluetooth_page/bluetooth_device_list_item.js
deleted file mode 100644
index 47c0f1d..0000000
--- a/chrome/browser/resources/settings/chromeos/bluetooth_page/bluetooth_device_list_item.js
+++ /dev/null
@@ -1,339 +0,0 @@
-// Copyright 2015 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/**
- * @fileoverview Polymer element for displaying a bluetooth device in a list.
- */
-
-import 'chrome://resources/cr_elements/cr_action_menu/cr_action_menu.js';
-import 'chrome://resources/cr_elements/cr_icon_button/cr_icon_button.js';
-import 'chrome://resources/cr_elements/icons.html.js';
-import 'chrome://resources/polymer/v3_0/iron-icon/iron-icon.js';
-import '../os_icons.js';
-import '../../settings_shared.css.js';
-
-import {FocusRowBehavior, FocusRowBehaviorInterface} from 'chrome://resources/ash/common/focus_row_behavior.js';
-import {I18nBehavior, I18nBehaviorInterface} from 'chrome://resources/cr_elements/i18n_behavior.js';
-import {html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
-
-import {BluetoothPageBrowserProxy, BluetoothPageBrowserProxyImpl} from './bluetooth_page_browser_proxy.js';
-
-/**
- * @constructor
- * @extends {PolymerElement}
- * @implements {I18nBehaviorInterface}
- * @implements {FocusRowBehaviorInterface}
- */
-const BluetoothDeviceListItemElementBase =
-    mixinBehaviors([I18nBehavior, FocusRowBehavior], PolymerElement);
-
-/** @polymer */
-class BluetoothDeviceListItemElement extends
-    BluetoothDeviceListItemElementBase {
-  static get is() {
-    return 'bluetooth-device-list-item';
-  }
-
-  static get template() {
-    return html`{__html_template__}`;
-  }
-
-  static get properties() {
-    return {
-      /**
-       * The bluetooth device.
-       * @type {!chrome.bluetooth.Device}
-       */
-      device: {
-        type: Object,
-        observer: 'onDeviceChanged_',
-      },
-
-      /**
-       * The aria-label attribute for the top-level bluetooth-device-list-item
-       * element.
-       */
-      ariaLabel: {
-        type: String,
-        notify: true,
-        computed: 'getAriaLabel_(device)',
-      },
-
-      // TODO(crbug.com/1208155) Add managed policy icon that is shown when this
-      // flag is true.
-      /** @private */
-      shouldShowManagedIcon_: {
-        type: Boolean,
-        value: false,
-      },
-    };
-  }
-
-  /** @override */
-  ready() {
-    super.ready();
-
-    /** @private {?BluetoothPageBrowserProxy} */
-    this.browserProxy_ = BluetoothPageBrowserProxyImpl.getInstance();
-
-    this.setAttribute('role', 'button');
-  }
-
-  /** @override */
-  disconnectedCallback() {
-    super.disconnectedCallback();
-
-    // Fire an event in case the tooltip was previously showing for the managed
-    // icon in this item and this item is being removed.
-    this.fireTooltipStateChangeEvent_(/*showTooltip=*/ false);
-  }
-
-  /**
-   * @param {!Event} event
-   * @private
-   */
-  ignoreEnterKey_(event) {
-    if (event.key === 'Enter') {
-      event.stopPropagation();
-    }
-  }
-
-  /** @private */
-  tryConnect_() {
-    if (!this.isDisconnected_(this.device)) {
-      return;
-    }
-
-    const event = new CustomEvent('device-event', {
-      bubbles: true,
-      composed: true,
-      detail: {
-        action: 'connect',
-        device: this.device,
-      },
-    });
-    this.dispatchEvent(event);
-  }
-
-  /** @private */
-  onClick_() {
-    this.tryConnect_();
-  }
-
-  /**
-   * @param {!KeyboardEvent} e
-   * @private
-   */
-  onKeyDown_(e) {
-    if (e.key === 'Enter' || e.key === ' ') {
-      this.tryConnect_();
-      e.preventDefault();
-    }
-  }
-
-  /**
-   * @param {!Event} event
-   * @private
-   */
-  onMenuButtonTap_(event) {
-    const button = /** @type {!HTMLElement} */ (event.target);
-    const menu = /** @type {!CrActionMenuElement} */ (this.$.dotsMenu);
-    menu.showAt(button);
-    event.stopPropagation();
-  }
-
-  /** @private */
-  onConnectActionTap_() {
-    const action = this.isDisconnected_(this.device) ? 'connect' : 'disconnect';
-    const event = new CustomEvent('device-event', {
-      bubbles: true,
-      composed: true,
-      detail: {
-        action: action,
-        device: this.device,
-      },
-    });
-    this.dispatchEvent(event);
-    /** @type {!CrActionMenuElement} */ (this.$.dotsMenu).close();
-  }
-
-  /** @private */
-  onRemoveTap_() {
-    const event = new CustomEvent('device-event', {
-      bubbles: true,
-      composed: true,
-      detail: {
-        action: 'remove',
-        device: this.device,
-      },
-    });
-    this.dispatchEvent(event);
-    /** @type {!CrActionMenuElement} */ (this.$.dotsMenu).close();
-  }
-
-  /**
-   * @param {boolean} connected
-   * @return {string} The text to display for the connect/disconnect menu item.
-   * @private
-   */
-  getConnectActionText_(connected) {
-    return this.i18n(connected ? 'bluetoothDisconnect' : 'bluetoothConnect');
-  }
-
-  /**
-   * @param {!chrome.bluetooth.Device} device
-   * @return {string} The text to display for |device| in the device list.
-   * @private
-   */
-  getDeviceName_(device) {
-    return device.name || device.address;
-  }
-
-  /**
-   * @param {!chrome.bluetooth.Device} device
-   * @return {string} The aria label to use for a |device| that will include the
-   * device name and device type if known.
-   * @private
-   */
-  getAriaLabel_(device) {
-    // We need to turn the device name, connection status and type into a single
-    // localized string.
-    // The possible device type enum values can be seen here:
-    // https://developer.chrome.com/apps/bluetooth#type-Device.
-    // The localization id is computed dynamically to avoid maintaining a
-    // mapping from the enum string value to the localization id.
-    // if device.type is not defined, we fall back to an unknown device string.
-    const deviceName = this.getDeviceName_(device);
-    const deviceStatus = this.getConnectionStatusText_(device);
-
-    const a11ydeviceNameAndType = (device.type) ?
-        this.i18n('bluetoothDeviceType_' + device.type, deviceName) :
-        this.i18n('bluetoothDeviceType_unknown', deviceName);
-    return this.i18n(
-        'bluetoothDeviceWithConnectionStatus', a11ydeviceNameAndType,
-        deviceStatus);
-  }
-
-  /**
-   * @param {!chrome.bluetooth.Device} device
-   * @return {string} The text to display the connection status of |device|.
-   * @private
-   */
-  getConnectionStatusText_(device) {
-    if (!this.hasConnectionStatusText_(device)) {
-      return '';
-    }
-    if (device.connecting) {
-      return this.i18n('bluetoothConnecting');
-    }
-    if (!device.connected) {
-      return this.i18n('bluetoothNotConnected');
-    }
-    return device.batteryPercentage !== undefined ?
-        this.i18n('bluetoothConnectedWithBattery', device.batteryPercentage) :
-        this.i18n('bluetoothConnected');
-  }
-
-  /**
-   * @param {!chrome.bluetooth.Device} device
-   * @return {boolean} True if connection status should be shown as the
-   *     secondary text of the |device| in device list.
-   * @private
-   */
-  hasConnectionStatusText_(device) {
-    return !!(device.paired || device.connecting);
-  }
-
-  /**
-   * @param {!chrome.bluetooth.Device} device
-   * @return {boolean}
-   * @private
-   */
-  isDisconnected_(device) {
-    return !device.connected && !device.connecting;
-  }
-
-  /**
-   * Returns device type icon's ID corresponding to the given device.
-   * To be consistent with the Bluetooth device list in system menu, this
-   * mapping needs to be synced with ash::tray::GetBluetoothDeviceIcon().
-   *
-   * @param {!chrome.bluetooth.Device} device
-   * @return {string}
-   * @private
-   */
-  getDeviceIcon_(device) {
-    switch (device.type) {
-      case 'computer':
-        return 'cr:computer';
-      case 'phone':
-        return 'os-settings:smartphone';
-      case 'audio':
-      case 'carAudio':
-        return 'os-settings:headset';
-      case 'video':
-        return 'cr:videocam';
-      case 'joystick':
-      case 'gamepad':
-        return 'os-settings:gamepad';
-      case 'keyboard':
-      case 'keyboardMouseCombo':
-        return 'os-settings:keyboard';
-      case 'tablet':
-        return 'os-settings:tablet';
-      case 'mouse':
-        return 'os-settings:mouse';
-      default:
-        return device.connected ? 'os-settings:bluetooth-connected' :
-                                  'cr:bluetooth';
-    }
-  }
-
-  /**
-   * @param {?chrome.bluetooth.Device} newValue
-   * @param {?chrome.bluetooth.Device} oldValue
-   * @private
-   */
-  onDeviceChanged_(newValue, oldValue) {
-    if (!newValue) {
-      this.shouldShowManagedIcon_ = false;
-      return;
-    }
-
-    this.browserProxy_.isDeviceBlockedByPolicy(newValue.address)
-        .then((isBlocked) => {
-          this.shouldShowManagedIcon_ = isBlocked;
-          if (!this.shouldShowManagedIcon_) {
-            // Fire an event in case the tooltip was previously showing for this
-            // icon and this icon now is hidden.
-            this.fireTooltipStateChangeEvent_(/*showTooltip=*/ false);
-          }
-        });
-  }
-
-  /** @private */
-  onShowTooltip_() {
-    this.fireTooltipStateChangeEvent_(/*showTooltip=*/ true);
-  }
-
-  /**
-   * @param {boolean} showTooltip
-   */
-  fireTooltipStateChangeEvent_(showTooltip) {
-    const event = new CustomEvent('blocked-tooltip-state-change', {
-      bubbles: true,
-      composed: true,
-      detail: {
-        address: this.device.address,
-        show: showTooltip,
-        element: showTooltip ? this.shadowRoot.querySelector('#managedIcon') :
-                               undefined,
-      },
-    });
-    this.dispatchEvent(event);
-  }
-}
-
-customElements.define(
-    BluetoothDeviceListItemElement.is, BluetoothDeviceListItemElement);
diff --git a/chrome/browser/resources/settings/chromeos/bluetooth_page/bluetooth_page.html b/chrome/browser/resources/settings/chromeos/bluetooth_page/bluetooth_page.html
deleted file mode 100644
index 56e683d..0000000
--- a/chrome/browser/resources/settings/chromeos/bluetooth_page/bluetooth_page.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<style include="settings-shared"></style>
-<settings-animated-pages id="pages" section="bluetooth"
-    focus-config="[[focusConfig_]]">
-  <div route-path="default">
-    <template is="dom-if" if="[[!isSecondaryUser_]]">
-      <div id="bluetoothDevices"
-          class="settings-box two-line first no-padding">
-        <div class="link-wrapper" actionable on-click="onTap_">
-          <iron-icon icon="[[getIcon_(bluetoothToggleState_)]]"></iron-icon>
-          <div class="middle settings-box-text" aria-hidden="true">
-            $i18n{bluetoothPageTitle}
-            <div class="secondary" id="bluetoothSecondary">
-              [[getOnOffString_(bluetoothToggleState_,
-              '$i18nPolymer{deviceOn}', '$i18nPolymer{deviceOff}')]]
-            </div>
-          </div>
-          <cr-policy-pref-indicator
-              icon-aria-label="$i18n{bluetoothPageTitle}"
-              pref="[[prefs.cros.device.allow_bluetooth]]"
-              hidden="[[prefs.cros.device.allow_bluetooth.value]]">
-          </cr-policy-pref-indicator>
-          <template is="dom-if" if="[[bluetoothToggleState_]]">
-            <cr-icon-button class="subpage-arrow"
-                on-click="onSubpageArrowTap_"
-                aria-label="$i18n{bluetoothPageTitle}"
-                aria-describedby="bluetoothSecondary"
-                aria-roledescription="$i18n{subpageArrowRoleDescription}">
-            </cr-icon-button>
-          </template>
-        </div>
-        <div class="separator"></div>
-        <cr-toggle id="enableBluetooth"
-            class="margin-matches-padding"
-            checked="{{bluetoothToggleState_}}"
-            disabled$="[[!isToggleEnabled_(
-                adapterState_, stateChangeInProgress_)]]"
-            aria-label="$i18n{bluetoothToggleA11yLabel}"
-            deep-link-focus-id$="[[Setting.kBluetoothOnOff]]"
-            on-change="onBluetoothToggledByUser_">
-        </cr-toggle>
-      </div>
-    </template>
-    <template is="dom-if" if="[[isSecondaryUser_]]">
-      <div id="bluetoothDevices" class="settings-box two-line">
-        <iron-icon class="policy" icon="cr:group"></iron-icon>
-        <div class="middle settings-box-text">
-          [[i18n('bluetoothPrimaryUserControlled', primaryUserEmail_)]]
-        </div>
-      </div>
-    </template>
-  </div>
-  <template is="dom-if" route-path="/bluetoothDevices">
-    <settings-subpage page-title="$i18n{bluetoothPageTitle}">
-      <settings-bluetooth-subpage
-          adapter-state="[[adapterState_]]"
-          bluetooth-toggle-state="{{bluetoothToggleState_}}"
-          state-change-in-progress="[[stateChangeInProgress_]]"
-          bluetooth="[[bluetooth]]"
-          bluetooth-private="[[bluetoothPrivate]]">
-      </settings-bluetooth-subpage>
-    </settings-subpage>
-  </template>
-</settings-animated-pages>
diff --git a/chrome/browser/resources/settings/chromeos/bluetooth_page/bluetooth_page.js b/chrome/browser/resources/settings/chromeos/bluetooth_page/bluetooth_page.js
deleted file mode 100644
index 707e2ad5..0000000
--- a/chrome/browser/resources/settings/chromeos/bluetooth_page/bluetooth_page.js
+++ /dev/null
@@ -1,348 +0,0 @@
-// Copyright 2015 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/**
- * @fileoverview
- * 'Settings page for managing bluetooth properties and devices. This page
- * just provodes a summary and link to the subpage.
- */
-
-import 'chrome://resources/cr_elements/cr_icon_button/cr_icon_button.js';
-import 'chrome://resources/cr_elements/cr_toggle/cr_toggle.js';
-import 'chrome://resources/cr_elements/icons.html.js';
-import 'chrome://resources/cr_elements/policy/cr_policy_pref_indicator.js';
-import '../os_icons.js';
-import '../../prefs/prefs.js';
-import '../../settings_page/settings_animated_pages.js';
-import '../../settings_page/settings_subpage.js';
-import '../../settings_shared.css.js';
-import './bluetooth_subpage.js';
-
-import {I18nBehavior, I18nBehaviorInterface} from 'chrome://resources/cr_elements/i18n_behavior.js';
-import {html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
-
-import {loadTimeData} from '../../i18n_setup.js';
-import {Setting} from '../../mojom-webui/setting.mojom-webui.js';
-import {Route, Router} from '../../router.js';
-import {DeepLinkingBehavior, DeepLinkingBehaviorInterface} from '../deep_linking_behavior.js';
-import {recordSettingChange} from '../metrics_recorder.js';
-import {routes} from '../os_route.js';
-import {PrefsBehavior, PrefsBehaviorInterface} from '../prefs_behavior.js';
-import {RouteObserverBehavior, RouteObserverBehaviorInterface} from '../route_observer_behavior.js';
-
-export const bluetoothApis = window['bluetoothApis'] || {
-  /**
-   * Set this to provide a fake implementation for testing.
-   * @type {Bluetooth}
-   */
-  bluetoothApiForTest: null,
-
-  /**
-   * Set this to provide a fake implementation for testing.
-   * @type {BluetoothPrivate}
-   */
-  bluetoothPrivateApiForTest: null,
-};
-
-/**
- * @constructor
- * @extends {PolymerElement}
- * @implements {I18nBehaviorInterface}
- * @implements {DeepLinkingBehaviorInterface}
- * @implements {PrefsBehaviorInterface}
- * @implements {RouteObserverBehaviorInterface}
- */
-const SettingsBluetoothPageElementBase = mixinBehaviors(
-    [I18nBehavior, DeepLinkingBehavior, PrefsBehavior, RouteObserverBehavior],
-    PolymerElement);
-
-/** @polymer */
-class SettingsBluetoothPageElement extends SettingsBluetoothPageElementBase {
-  static get is() {
-    return 'settings-bluetooth-page';
-  }
-
-  static get template() {
-    return html`{__html_template__}`;
-  }
-
-  static get properties() {
-    return {
-      /** Preferences state. */
-      prefs: {
-        type: Object,
-        notify: true,
-      },
-
-      /**
-       * Reflects the current state of the toggle buttons (in this page and the
-       * subpage). This will be set when the adapter state change or when the
-       * user changes the toggle.
-       * @private
-       */
-      bluetoothToggleState_: {
-        type: Boolean,
-        observer: 'bluetoothToggleStateChanged_',
-      },
-
-      /**
-       * Set to true while an adapter state change is requested and the callback
-       * hasn't fired yet. One of the factor that determines whether to disable
-       * the toggle button.
-       * @private
-       */
-      stateChangeInProgress_: {
-        type: Boolean,
-        value: false,
-      },
-
-      /**
-       * The cached bluetooth adapter state.
-       * @type {!chrome.bluetooth.AdapterState|undefined}
-       * @private
-       */
-      adapterState_: {
-        type: Object,
-        notify: true,
-      },
-
-      /** @private {!Map<string, string>} */
-      focusConfig_: {
-        type: Object,
-        value() {
-          const map = new Map();
-          if (routes.BLUETOOTH_DEVICES) {
-            map.set(
-                routes.BLUETOOTH_DEVICES.path,
-                '#bluetoothDevices .subpage-arrow');
-          }
-          return map;
-        },
-      },
-
-      /**
-       * Interface for bluetooth calls. May be overridden by tests.
-       * @type {Bluetooth}
-       * @private
-       */
-      bluetooth: {
-        type: Object,
-        value: chrome.bluetooth,
-      },
-
-      /**
-       * Interface for bluetoothPrivate calls. May be overridden by tests.
-       * @type {BluetoothPrivate}
-       * @private
-       */
-      bluetoothPrivate: {
-        type: Object,
-        value: chrome.bluetoothPrivate,
-      },
-
-      /**
-       * Whether the user is a secondary user.
-       * @private
-       */
-      isSecondaryUser_: {
-        type: Boolean,
-        value() {
-          return loadTimeData.getBoolean('isSecondaryUser');
-        },
-        readOnly: true,
-      },
-
-      /**
-       * Email address for the primary user.
-       * @private
-       */
-      primaryUserEmail_: {
-        type: String,
-        value() {
-          return loadTimeData.getString('primaryUserEmail');
-        },
-        readOnly: true,
-      },
-
-      /**
-       * Used by DeepLinkingBehavior to focus this page's deep links.
-       * @type {!Set<!Setting>}
-       */
-      supportedSettingIds: {
-        type: Object,
-        value: () => new Set([Setting.kBluetoothOnOff]),
-      },
-
-    };
-  }
-
-  static get observers() {
-    return ['deviceListChanged_(deviceList_.*)'];
-  }
-
-  /** @override */
-  ready() {
-    super.ready();
-
-    if (bluetoothApis.bluetoothApiForTest) {
-      this.bluetooth = bluetoothApis.bluetoothApiForTest;
-    }
-    if (bluetoothApis.bluetoothPrivateApiForTest) {
-      this.bluetoothPrivate = bluetoothApis.bluetoothPrivateApiForTest;
-    }
-  }
-
-  /** @override */
-  connectedCallback() {
-    super.connectedCallback();
-
-    /**
-     * Listener for chrome.bluetooth.onAdapterStateChanged events.
-     * @type {function(!chrome.bluetooth.AdapterState)|undefined}
-     * @private
-     */
-    this.bluetoothAdapterStateChangedListener_ =
-        this.onBluetoothAdapterStateChanged_.bind(this);
-    this.bluetooth.onAdapterStateChanged.addListener(
-        this.bluetoothAdapterStateChangedListener_);
-
-    // Request the inital adapter state.
-    this.bluetooth.getAdapterState(this.bluetoothAdapterStateChangedListener_);
-  }
-
-  /** @override */
-  disconnectedCallback() {
-    super.disconnectedCallback();
-
-    if (this.bluetoothAdapterStateChangedListener_) {
-      this.bluetooth.onAdapterStateChanged.removeListener(
-          this.bluetoothAdapterStateChangedListener_);
-    }
-  }
-
-  /**
-   * RouteObserverBehavior
-   * @param {!Route} newRoute
-   * @param {!Route=} oldRoute
-   * @protected
-   */
-  currentRouteChanged(newRoute, oldRoute) {
-    // Does not apply to this page.
-    if (newRoute !== routes.BLUETOOTH) {
-      return;
-    }
-
-    this.attemptDeepLink();
-  }
-
-  /**
-   * @param {boolean} bluetoothToggleState
-   * @return {string}
-   * @private
-   */
-  getIcon_(bluetoothToggleState) {
-    // Don't use |this.bluetoothToggleState_| here, since it has not been
-    // updated yet to the latest value.
-    if (!bluetoothToggleState) {
-      return 'os-settings:bluetooth-disabled';
-    }
-    return 'cr:bluetooth';
-  }
-
-  /**
-   * @param {boolean} enabled
-   * @param {string} onstr
-   * @param {string} offstr
-   * @return {string}
-   * @private
-   */
-  getOnOffString_(enabled, onstr, offstr) {
-    return enabled ? onstr : offstr;
-  }
-
-  /**
-   * @return {boolean}
-   * @private
-   */
-  isToggleEnabled_() {
-    return this.adapterState_ !== undefined && this.adapterState_.available &&
-        !this.stateChangeInProgress_;
-  }
-
-  /**
-   * Process bluetooth.onAdapterStateChanged events.
-   * @param {!chrome.bluetooth.AdapterState} state
-   * @private
-   */
-  onBluetoothAdapterStateChanged_(state) {
-    this.adapterState_ = state;
-    if (this.isToggleEnabled_()) {
-      this.bluetoothToggleState_ = state.powered;
-    }
-  }
-
-  /**
-   * Listens for toggle change events (rather than state changes) to handle
-   * just user-triggered changes to the bluetoothToggleState_.
-   * @private
-   */
-  onBluetoothToggledByUser_() {
-    // Record that the user manually enabled/disabled Bluetooth.
-    recordSettingChange(
-        Setting.kBluetoothOnOff, {boolValue: this.bluetoothToggleState_});
-  }
-
-  /** @private */
-  onTap_() {
-    if (!this.isToggleEnabled_()) {
-      return;
-    }
-    if (!this.bluetoothToggleState_) {
-      this.bluetoothToggleState_ = true;
-    } else {
-      this.openSubpage_();
-    }
-  }
-
-  /**
-   * @param {!Event} e
-   * @private
-   */
-  onSubpageArrowTap_(e) {
-    this.openSubpage_();
-    e.stopPropagation();
-  }
-
-  /** @private */
-  bluetoothToggleStateChanged_() {
-    if (!this.adapterState_ || !this.isToggleEnabled_() ||
-        this.bluetoothToggleState_ === this.adapterState_.powered) {
-      return;
-    }
-    this.stateChangeInProgress_ = true;
-    this.bluetoothPrivate.setAdapterState(
-        {powered: this.bluetoothToggleState_}, () => {
-          // Restore the in-progress mark when the callback is called regardless
-          // of error or success.
-          this.stateChangeInProgress_ = false;
-
-          const error = chrome.runtime.lastError;
-          if (error && error !== 'Error setting adapter properties: powered') {
-            console.error('Error enabling bluetooth: ' + error.message);
-            return;
-          }
-          this.setPrefValue(
-              'ash.user.bluetooth.adapter_enabled',
-              this.bluetoothToggleState_);
-        });
-  }
-
-  /** @private */
-  openSubpage_() {
-    Router.getInstance().navigateTo(routes.BLUETOOTH_DEVICES);
-  }
-}
-
-customElements.define(
-    SettingsBluetoothPageElement.is, SettingsBluetoothPageElement);
diff --git a/chrome/browser/resources/settings/chromeos/bluetooth_page/bluetooth_page_browser_proxy.js b/chrome/browser/resources/settings/chromeos/bluetooth_page/bluetooth_page_browser_proxy.js
deleted file mode 100644
index 163a601c..0000000
--- a/chrome/browser/resources/settings/chromeos/bluetooth_page/bluetooth_page_browser_proxy.js
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2021 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import {sendWithPromise} from 'chrome://resources/js/cr.m.js';
-
-/** @interface */
-export class BluetoothPageBrowserProxy {
-  /** @return {!Promise<!boolean>} */
-  isDeviceBlockedByPolicy(address) {}
-}
-
-/** @type {?BluetoothPageBrowserProxy} */
-let instance = null;
-
-/**
- * @implements {BluetoothPageBrowserProxy}
- */
-export class BluetoothPageBrowserProxyImpl {
-  /** @return {!BluetoothPageBrowserProxy} */
-  static getInstance() {
-    return instance || (instance = new BluetoothPageBrowserProxyImpl());
-  }
-
-  /** @param {!BluetoothPageBrowserProxy} obj */
-  static setInstanceForTesting(obj) {
-    instance = obj;
-  }
-
-  /** @override */
-  isDeviceBlockedByPolicy(address) {
-    return sendWithPromise('isDeviceBlockedByPolicy', address);
-  }
-}
diff --git a/chrome/browser/resources/settings/chromeos/bluetooth_page/bluetooth_subpage.html b/chrome/browser/resources/settings/chromeos/bluetooth_page/bluetooth_subpage.html
deleted file mode 100644
index b299a18..0000000
--- a/chrome/browser/resources/settings/chromeos/bluetooth_page/bluetooth_subpage.html
+++ /dev/null
@@ -1,113 +0,0 @@
-<style include="cr-shared-style settings-shared iron-flex">
-  .container {
-    display: flex;
-    flex-direction: column;
-    min-height: 10px;
-    overflow-y: auto;
-  }
-
-  paper-spinner-lite {
-    height: var(--cr-icon-size);
-    margin-block-start: 18px; /* Align with h2. */
-    width: var(--cr-icon-size);
-  }
-
-  #onOff {
-    font-weight: 500;
-  }
-
-  #onOff[on] {
-    color: var(--cros-text-color-prominent);
-  }
-  /* Disables click events on #enableBluetooth during a state change.
-   * This is added in lieu of disabling #enableToggle to prevent
-   * transient disables from state changes to be varbalized by ChromeVox
-   * (see http://crbug/1007378 for more details). */
-  :host([state-change-in-progress]) #enableBluetooth {
-    cursor: initial;
-    opacity: var(--cr-disabled-opacity);
-    pointer-events: none;
-  }
-</style>
-<div id="enableBluetooth" class="cr-row first" on-click="onEnableTap_"
-    actionable>
-  <div id="onOff" class="flex cr-padded-text"
-      on$="[[bluetoothToggleState]]" aria-hidden="true">
-    [[getOnOffString_(bluetoothToggleState,
-      '$i18nPolymer{deviceOn}', '$i18nPolymer{deviceOff}')]]
-  </div>
-  <cr-toggle id="enableToggle"
-      checked="{{bluetoothToggleState}}"
-      disabled$="[[!isAdapterAvailable_(adapterState)]]"
-      aria-label="$i18n{bluetoothToggleA11yLabel}"
-      deep-link-focus-id$="[[Setting.kBluetoothOnOff]]">
-  </cr-toggle>
-</div>
-<!-- Paired device list -->
-<div class="cr-row first" hidden="[[!bluetoothToggleState]]">
-  <h2 class="flex">$i18n{bluetoothDeviceListPaired}</h2>
-</div>
-<div id="noPairedDevices" class="list-frame cr-padded-text"
-    hidden="[[!showNoDevices_(bluetoothToggleState, pairedDeviceList_,
-        pairedDeviceList_.splices)]]">
-  $i18n{bluetoothNoDevices}
-</div>
-<div id="pairedContainer" class="container list-frame"
-    scrollable on-device-event="onDeviceEvent_"
-    hidden="[[!showDevices_(bluetoothToggleState, pairedDeviceList_,
-        pairedDeviceList_.splices)]]">
-  <iron-list id="pairedDevices" items="[[pairedDeviceList_]]"
-      scroll-target="pairedContainer" class="cr-separators" preserve-focus>
-    <template>
-      <bluetooth-device-list-item actionable device="[[item]]"
-          first$="[[!index]]" tabindex$="[[tabIndex]]"
-          focus-row-index="[[index]]" iron-list-tab-index="[[tabIndex]]"
-          last-focused="{{lastFocused_}}" list-blurred="{{listBlurred_}}"
-          deep-link-focus-id$="[[Setting.kBluetoothConnectToDevice]]
-              [[Setting.kBluetoothDisconnectFromDevice]]
-              [[Setting.kBluetoothUnpairDevice]]"
-          on-blocked-tooltip-state-change="onBlockedTooltipStateChange_">
-      </bluetooth-device-list-item>
-    </template>
-  </iron-list>
-</div>
-<!-- Unpaired device list -->
-<div class="cr-row first" hidden="[[!bluetoothToggleState]]">
-  <h2 class="flex">$i18n{bluetoothDeviceListUnpaired}</h2>
-  <paper-spinner-lite active="[[showSpinner_]]">
-  </paper-spinner-lite>
-</div>
-<div id="noUnpairedDevices" class="list-frame cr-padded-text"
-    hidden="[[!showNoDevices_(bluetoothToggleState, unpairedDeviceList_,
-        unpairedDeviceList_.splices)]]">
-  $i18n{bluetoothNoDevicesFound}
-</div>
-<div id="unpairedContainer" class="container list-frame"
-    scrollable on-device-event="onDeviceEvent_"
-    hidden="[[!showDevices_(bluetoothToggleState, unpairedDeviceList_,
-        unpairedDeviceList_.splices)]]">
-  <iron-list id="unpairedDevices" class="cr-separators"
-      preserve-focus items="[[unpairedDeviceList_]]"
-      scroll-target="unpairedContainer">
-    <template>
-      <bluetooth-device-list-item actionable device="[[item]]"
-          first$="[[!index]]" tabindex$="[[tabIndex]]"
-          deep-link-focus-id$="[[Setting.kBluetoothPairDevice]]"
-          on-blocked-tooltip-state-change="onBlockedTooltipStateChange_">
-      </bluetooth-device-list-item>
-    </template>
-  </iron-list>
-</div>
-<paper-tooltip id="tooltip"
-    manual-mode
-    position="top"
-    aria-hidden="true">
-  $i18n{bluetoothManaged}
-</paper-tooltip>
-<bluetooth-dialog id="deviceDialog"
-    bluetooth="[[bluetooth]]"
-    bluetooth-private="[[bluetoothPrivate]]"
-    dialog-title="$i18n{bluetoothPairDevicePageTitle}"
-    on-close="onDialogClose_"
-    pairing-device="[[pairingDevice_]]">
-</bluetooth-dialog>
diff --git a/chrome/browser/resources/settings/chromeos/bluetooth_page/bluetooth_subpage.js b/chrome/browser/resources/settings/chromeos/bluetooth_page/bluetooth_subpage.js
deleted file mode 100644
index f26b01ca..0000000
--- a/chrome/browser/resources/settings/chromeos/bluetooth_page/bluetooth_subpage.js
+++ /dev/null
@@ -1,811 +0,0 @@
-// Copyright 2017 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/**
- * @fileoverview
- * 'settings-bluetooth-subpage' is the settings subpage for managing bluetooth
- *  properties and devices.
- */
-
-import 'chrome://resources/ash/common/bluetooth/bluetooth_dialog.js';
-import 'chrome://resources/cr_elements/cr_toggle/cr_toggle.js';
-import 'chrome://resources/cr_elements/cr_shared_style.css.js';
-import 'chrome://resources/polymer/v3_0/iron-flex-layout/iron-flex-layout-classes.js';
-import 'chrome://resources/polymer/v3_0/iron-list/iron-list.js';
-import 'chrome://resources/polymer/v3_0/paper-spinner/paper-spinner-lite.js';
-import 'chrome://resources/polymer/v3_0/paper-tooltip/paper-tooltip.js';
-import '../../settings_shared.css.js';
-import './bluetooth_device_list_item.js';
-
-import {BluetoothUiSurface, recordBluetoothUiSurfaceMetrics, recordUserInitiatedReconnectionAttemptDuration} from 'chrome://resources/ash/common/bluetooth/bluetooth_metrics_utils.js';
-import {CrScrollableBehavior, CrScrollableBehaviorInterface} from 'chrome://resources/cr_elements/cr_scrollable_behavior.js';
-import {I18nBehavior, I18nBehaviorInterface} from 'chrome://resources/cr_elements/i18n_behavior.js';
-import {ListPropertyUpdateBehavior, ListPropertyUpdateBehaviorInterface} from 'chrome://resources/ash/common/list_property_update_behavior.js';
-import {flush, html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
-
-import {Setting} from '../../mojom-webui/setting.mojom-webui.js';
-import {Route, Router} from '../../router.js';
-import {DeepLinkingBehavior, DeepLinkingBehaviorInterface} from '../deep_linking_behavior.js';
-import {recordSettingChange} from '../metrics_recorder.js';
-import {routes} from '../os_route.js';
-import {RouteObserverBehavior, RouteObserverBehaviorInterface} from '../route_observer_behavior.js';
-
-/**
- * Maximum number of bluetooth devices shown in bluetooth subpage.
- * @type {number}
- */
-const MAX_NUMBER_DEVICE_SHOWN = 50;
-
-/**
- * @constructor
- * @extends {PolymerElement}
- * @implements {I18nBehaviorInterface}
- * @implements {CrScrollableBehaviorInterface}
- * @implements {DeepLinkingBehaviorInterface}
- * @implements {ListPropertyUpdateBehaviorInterface}
- * @implements {RouteObserverBehaviorInterface}
- */
-const SettingsBluetoothSubpageElementBase = mixinBehaviors(
-    [
-      I18nBehavior,
-      CrScrollableBehavior,
-      DeepLinkingBehavior,
-      ListPropertyUpdateBehavior,
-      RouteObserverBehavior,
-    ],
-    PolymerElement);
-
-/** @polymer */
-class SettingsBluetoothSubpageElement extends
-    SettingsBluetoothSubpageElementBase {
-  static get is() {
-    return 'settings-bluetooth-subpage';
-  }
-
-  static get template() {
-    return html`{__html_template__}`;
-  }
-
-  static get properties() {
-    return {
-      /** Reflects the bluetooth-page property. */
-      bluetoothToggleState: {
-        type: Boolean,
-        notify: true,
-      },
-
-      /** Reflects the bluetooth-page property. */
-      stateChangeInProgress: {
-        type: Boolean,
-        reflectToAttribute: true,
-      },
-
-      /**
-       * The bluetooth adapter state, cached by bluetooth-page.
-       * @type {!chrome.bluetooth.AdapterState|undefined}
-       */
-      adapterState: Object,
-
-      /** Informs bluetooth-page whether to show the spinner in the header. */
-      showSpinner_: {
-        type: Boolean,
-        notify: true,
-        computed: 'computeShowSpinner_(adapterState.*, dialogShown_)',
-      },
-
-      /**
-       * The ordered list of bluetooth devices.
-       * @type {!Array<!chrome.bluetooth.Device>}
-       * @private
-       */
-      deviceList_: {
-        type: Array,
-        value() {
-          return [];
-        },
-      },
-
-      /**
-       * The ordered list of paired or connecting bluetooth devices.
-       * @type {!Array<!chrome.bluetooth.Device>}
-       */
-      pairedDeviceList_: {
-        type: Array,
-        value: /** @return {Array} */ function() {
-          return [];
-        },
-      },
-
-      /**
-       * The ordered list of unpaired bluetooth devices.
-       * @type {!Array<!chrome.bluetooth.Device>}
-       */
-      unpairedDeviceList_: {
-        type: Array,
-        value: /** @return {Array} */ function() {
-          return [];
-        },
-      },
-
-      /**
-       * Whether or not the dialog is shown.
-       * @private
-       */
-      dialogShown_: {
-        type: Boolean,
-        value: false,
-      },
-
-      /**
-       * Current Pairing device.
-       * @type {!chrome.bluetooth.Device|undefined}
-       * @private
-       */
-      pairingDevice_: Object,
-
-      /**
-       * Interface for bluetooth calls. Set in bluetooth-page.
-       * @type {Bluetooth}
-       * @private
-       */
-      bluetooth: {
-        type: Object,
-        value: chrome.bluetooth,
-      },
-
-      /**
-       * Interface for bluetoothPrivate calls. Set in bluetooth-page.
-       * @type {BluetoothPrivate}
-       * @private
-       */
-      bluetoothPrivate: {
-        type: Object,
-        value: chrome.bluetoothPrivate,
-      },
-
-      /**
-       * Update frequency of the bluetooth list.
-       * @type {number}
-       */
-      listUpdateFrequencyMs: {
-        type: Number,
-        value: 1000,
-      },
-
-      /**
-       * The time in milliseconds at which discovery was started attempt (when
-       * the page was opened with Bluetooth on, or when Bluetooth turned on
-       * while the page was active).
-       * @private {?number}
-       */
-      discoveryStartTimestampMs_: {
-        type: Number,
-        value: null,
-      },
-
-      /**
-       * Used by FocusRowBehavior to track the last focused element on a row.
-       * @private {?Object}
-       */
-      lastFocused_: Object,
-
-      /**
-       * Used by FocusRowBehavior to track if the list has been blurred.
-       * @private
-       */
-      listBlurred_: Boolean,
-
-      /**
-       * Contains the settingId of any deep link that wasn't able to be shown,
-       * null otherwise.
-       * @private {?Setting}
-       */
-      pendingSettingId_: {
-        type: Number,
-        value: null,
-      },
-
-      /**
-       * Used by DeepLinkingBehavior to focus this page's deep links.
-       * @type {!Set<!Setting>}
-       */
-      supportedSettingIds: {
-        type: Object,
-        value: () => new Set([
-          Setting.kBluetoothOnOff,
-          Setting.kBluetoothConnectToDevice,
-          Setting.kBluetoothDisconnectFromDevice,
-          Setting.kBluetoothPairDevice,
-          Setting.kBluetoothUnpairDevice,
-        ]),
-      },
-
-    };
-  }
-
-  static get observers() {
-    return [
-      'deviceListChanged_(deviceList_.*)',
-      'listUpdateFrequencyMsChanged_(listUpdateFrequencyMs)',
-      'updateDiscoveryAndMaybeRefreshDeviceList_(adapterState.*)',
-
-    ];
-  }
-
-  constructor() {
-    super();
-
-    /**
-     * Timer ID for bluetooth list update.
-     * @type {number|undefined}
-     * @private
-     */
-    this.updateTimerId_ = undefined;
-
-    /**
-     * Used to prevent duplicate event listeners being added for the focus
-     * event.
-     * @type {function(Event)|undefined}
-     * @private
-     */
-    this.onWindowFocusedListener_ = undefined;
-
-    /**
-     * Used to prevent duplicate event listeners being added for the blur event.
-     * @type {function(Event)|undefined}
-     * @private
-     */
-    this.onWindowBlurredListener_ = undefined;
-
-    /**
-     * The address of the device corresponding to the tooltip if it is currently
-     * showing. If undefined, the tooltip is not showing.
-     * @type {string|undefined}
-     * @private
-     */
-    this.currentTooltipDeviceAddress_ = undefined;
-  }
-
-  /**
-   * Used to determine if the window has focus. This is overridden by tests so
-   * that focus logic can be better encapsulated in this element.
-   * @return {boolean}
-   * @private
-   */
-  isWindowFocusedFunction_() {
-    return document.hasFocus();
-  }
-
-  /**
-   * Overridden from DeepLinkingBehavior.
-   * @param {!Setting} settingId
-   * @return {boolean}
-   */
-  beforeDeepLinkAttempt(settingId) {
-    // If lastFocused_ is an internal element of a Focus Row (such as the menu
-    // button on a paired device), FocusRowBehavior prevents the Focus Row from
-    // being focused. We clear lastFocused_ so that we can focus the row (such
-    // as a paired/unpaired device).
-    if (settingId === Setting.kBluetoothConnectToDevice ||
-        settingId === Setting.kBluetoothDisconnectFromDevice ||
-        settingId === Setting.kBluetoothPairDevice ||
-        settingId === Setting.kBluetoothUnpairDevice) {
-      this.lastFocused_ = null;
-    }
-    // Should continue with deep link attempt.
-    return true;
-  }
-
-  /** @override */
-  disconnectedCallback() {
-    super.disconnectedCallback();
-
-    if (this.updateTimerId_ !== undefined) {
-      window.clearInterval(this.updateTimerId_);
-      this.updateTimerId_ = undefined;
-      this.deviceList_ = [];
-    }
-  }
-
-  /**
-   * RouteObserverBehavior
-   * @param {!Route} route
-   * @param {!Route=} oldRoute
-   * @protected
-   */
-  currentRouteChanged(route, oldRoute) {
-    // Any navigation resets the previous attempt to deep link.
-    this.pendingSettingId_ = null;
-    this.updateDiscoveryAndMaybeRefreshDeviceList_();
-
-    // Does not apply to this page.
-    if (route !== routes.BLUETOOTH_DEVICES) {
-      this.removeWindowFocusEventListeners_();
-      return;
-    }
-
-    this.addWindowFocusEventListeners_();
-
-    recordBluetoothUiSurfaceMetrics(
-        BluetoothUiSurface.SETTINGS_DEVICE_LIST_SUBPAGE);
-    this.attemptDeepLink().then(result => {
-      if (!result.deepLinkShown && result.pendingSettingId) {
-        // Store any deep link settingId that wasn't shown so we can try again
-        // in refreshBluetoothList_.
-        this.pendingSettingId_ = result.pendingSettingId;
-      }
-    });
-  }
-
-  /** @private */
-  computeShowSpinner_() {
-    return !this.dialogShown_ && this.adapterState &&
-        this.adapterState.discovering;
-  }
-
-  /** @private */
-  updateDiscoveryAndMaybeRefreshDeviceList_() {
-    this.updateDiscovery_();
-    this.startOrStopRefreshingDeviceList_();
-  }
-
-  /** @private */
-  deviceListChanged_() {
-    this.updateList(
-        'pairedDeviceList_', item => item.address,
-        this.getUpdatedDeviceList_(
-            this.pairedDeviceList_,
-            this.deviceList_.filter(d => d.paired || d.connecting)));
-    this.updateList(
-        'unpairedDeviceList_', item => item.address,
-        this.getUpdatedDeviceList_(
-            this.unpairedDeviceList_,
-            this.deviceList_.filter(d => !(d.paired || d.connecting))));
-    this.updateScrollableContents();
-  }
-
-  /**
-   * Returns a copy of |oldDeviceList| but:
-   *   - Using the corresponding device objects in |newDeviceList|
-   *   - Removing devices not in |newDeviceList|
-   *   - Adding device not in |oldDeviceList| but in |newDeviceList| to the
-   *     end of the list.
-   *
-   * @param {!Array<!chrome.bluetooth.Device>} oldDeviceList
-   * @param {!Array<!chrome.bluetooth.Device>} newDeviceList
-   * @return {!Array<!chrome.bluetooth.Device>}
-   * @private
-   */
-  getUpdatedDeviceList_(oldDeviceList, newDeviceList) {
-    const newDeviceMap = new Map(newDeviceList.map(d => [d.address, d]));
-    const updatedDeviceList = [];
-
-    // Add elements of |oldDeviceList| that are in |newDeviceList| to
-    // |updatedDeviceList|.
-    for (const oldDevice of oldDeviceList) {
-      const newDevice = newDeviceMap.get(oldDevice.address);
-      if (newDevice === undefined) {
-        continue;
-      }
-      updatedDeviceList.push(newDevice);
-      newDeviceMap.delete(newDevice.address);
-    }
-
-    // Add all elements of |newDeviceList| that are not in |oldDeviceList| to
-    // |updatedDeviceList|.
-    for (const newDevice of newDeviceMap.values()) {
-      updatedDeviceList.push(newDevice);
-    }
-
-    return updatedDeviceList;
-  }
-
-  /** @private */
-  updateDiscovery_() {
-    if (!this.adapterState || !this.adapterState.powered) {
-      return;
-    }
-
-    // Don't enable discovery if the window isn't focused to avoid keeping the
-    // Bluetooth stack in a busy loop.
-    if (Router.getInstance().getCurrentRoute() === routes.BLUETOOTH_DEVICES &&
-        this.isWindowFocusedFunction_()) {
-      this.startDiscovery_();
-    } else {
-      this.stopDiscovery_();
-    }
-  }
-
-  /** @private */
-  startDiscovery_() {
-    if (!this.adapterState || this.adapterState.discovering) {
-      return;
-    }
-
-    this.bluetooth.startDiscovery(function() {
-      const lastError = chrome.runtime.lastError;
-      if (lastError) {
-        if (lastError.message === 'Starting discovery failed') {
-          return;
-        }  // May happen if also started elsewhere, ignore.
-        console.error('startDiscovery Error: ' + lastError.message);
-      }
-    });
-  }
-
-  /** @private */
-  stopDiscovery_() {
-    if (!this.adapterState || !this.adapterState.discovering) {
-      return;
-    }
-
-    this.bluetooth.stopDiscovery(function() {
-      const lastError = chrome.runtime.lastError;
-      if (lastError) {
-        if (lastError.message === 'Failed to stop discovery') {
-          return;
-        }  // May happen if also stopped elsewhere, ignore.
-        console.error('stopDiscovery Error: ' + lastError.message);
-      }
-    });
-  }
-
-  /**
-   * @param {!CustomEvent<!{
-   *     action: string, device:
-   *     !chrome.bluetooth.Device
-   * }>} e
-   * @private
-   */
-  onDeviceEvent_(e) {
-    const action = e.detail.action;
-    const device = e.detail.device;
-    if (action === 'connect') {
-      this.connectDevice_(device);
-    } else if (action === 'disconnect') {
-      this.disconnectDevice_(device);
-    } else if (action === 'remove') {
-      this.forgetDevice_(device);
-    } else {
-      console.error('Unexected action: ' + action);
-    }
-  }
-
-  /**
-   * @param {!Event} event
-   * @private
-   */
-  onEnableTap_(event) {
-    if (this.isAdapterAvailable_() && !this.stateChangeInProgress) {
-      this.bluetoothToggleState = !this.bluetoothToggleState;
-    }
-    event.stopPropagation();
-  }
-
-  /** @private */
-  addWindowFocusEventListeners_() {
-    // Prevent duplicate event listener registrations by binding the event
-    // listener callbacks a single time and storing their values.
-    if (!this.onWindowFocusedListener_) {
-      this.onWindowFocusedListener_ =
-          this.updateDiscoveryAndMaybeRefreshDeviceList_.bind(this);
-    }
-    if (!this.onWindowBlurredListener_) {
-      this.onWindowBlurredListener_ =
-          this.updateDiscoveryAndMaybeRefreshDeviceList_.bind(this);
-    }
-    window.addEventListener('focus', this.onWindowFocusedListener_);
-    window.addEventListener('blur', this.onWindowBlurredListener_);
-  }
-
-  /** @private */
-  removeWindowFocusEventListeners_() {
-    if (this.onWindowFocusedListener_) {
-      window.removeEventListener('focus', this.onWindowFocusedListener_);
-    }
-    if (this.onWindowBlurredListener_) {
-      window.removeEventListener('blur', this.onWindowBlurredListener_);
-    }
-  }
-
-  /**
-   * @param {boolean} enabled
-   * @param {string} onstr
-   * @param {string} offstr
-   * @return {string}
-   * @private
-   */
-  getOnOffString_(enabled, onstr, offstr) {
-    // If these strings are changed to convey more information other than "On"
-    // and "Off" in the future, revisit the a11y implementation to ensure no
-    // meaningful information is skipped.
-    return enabled ? onstr : offstr;
-  }
-
-  /**
-   * @return {boolean}
-   * @private
-   */
-  isAdapterAvailable_() {
-    return !!this.adapterState && this.adapterState.available;
-  }
-
-  /**
-   * @param {boolean} bluetoothToggleState
-   * @param {!Array<!chrome.bluetooth.Device>} deviceList
-   * @return {boolean}
-   * @private
-   */
-  showDevices_(bluetoothToggleState, deviceList) {
-    return bluetoothToggleState && deviceList.length > 0;
-  }
-
-  /**
-   * @param {boolean} bluetoothToggleState
-   * @param {!Array<!chrome.bluetooth.Device>} deviceList
-   * @return {boolean}
-   * @private
-   */
-  showNoDevices_(bluetoothToggleState, deviceList) {
-    return bluetoothToggleState && deviceList.length === 0;
-  }
-
-  /**
-   * @param {!chrome.bluetooth.Device} device
-   * @private
-   */
-  connectDevice_(device) {
-    if (device.connecting || device.connected) {
-      return;
-    }
-
-    // If the device is not paired, show the pairing dialog before connecting.
-    // TODO(crbug.com/966170): Need to check if the device is pairable as well.
-    const isPaired = device.paired;
-    if (!isPaired) {
-      this.pairingDevice_ = device;
-      this.openDialog_();
-    }
-
-    if (isPaired !== undefined && device.transport !== undefined) {
-      this.recordDeviceSelectionDuration_(isPaired, device.transport);
-    }
-
-    const connectionStartTimestampMs = Date.now();
-    const address = device.address;
-    this.bluetoothPrivate.connect(address, result => {
-      if (isPaired) {
-        const connectResult = chrome.runtime.lastError ? undefined : result;
-        chrome.bluetoothPrivate.recordReconnection(connectResult);
-        recordUserInitiatedReconnectionAttemptDuration(
-            Date.now() - connectionStartTimestampMs, device.transport,
-            connectResult);
-      }
-
-      // If |pairingDevice_| has changed, ignore the connect result.
-      if (this.pairingDevice_ && address !== this.pairingDevice_.address) {
-        return;
-      }
-
-      // Let the dialog handle any errors, otherwise close the dialog.
-      const dialog = this.$.deviceDialog;
-      if (dialog.endConnectionAttempt(
-              device, !isPaired /* wasPairing */, chrome.runtime.lastError,
-              result)) {
-        this.openDialog_();
-      } else if (
-          result !== chrome.bluetoothPrivate.ConnectResultType.IN_PROGRESS) {
-        this.$.deviceDialog.close();
-      }
-    });
-    recordSettingChange();
-  }
-
-  /**
-   * @param {!chrome.bluetooth.Device} device
-   * @private
-   */
-  disconnectDevice_(device) {
-    this.bluetoothPrivate.disconnectAll(device.address, function() {
-      if (chrome.runtime.lastError) {
-        console.error(
-            'Error disconnecting: ' + device.address +
-            chrome.runtime.lastError.message);
-      }
-    });
-    recordSettingChange();
-  }
-
-  /**
-   * @param {!chrome.bluetooth.Device} device
-   * @private
-   */
-  forgetDevice_(device) {
-    this.bluetoothPrivate.forgetDevice(device.address, () => {
-      if (chrome.runtime.lastError) {
-        console.error(
-            'Error forgetting bluetooth device: ' +
-            chrome.runtime.lastError.message);
-      }
-    });
-    recordSettingChange();
-  }
-
-  /** @private */
-  openDialog_() {
-    if (this.dialogShown_) {
-      return;
-    }
-    // Call flush so that the dialog gets sized correctly before it is opened.
-    flush();
-    this.$.deviceDialog.open();
-    recordBluetoothUiSurfaceMetrics(BluetoothUiSurface.SETTINGS_PAIRING_DIALOG);
-    this.dialogShown_ = true;
-  }
-
-  /** @private */
-  onDialogClose_() {
-    this.dialogShown_ = false;
-    this.pairingDevice_ = undefined;
-    // The list is dynamic so focus the first item.
-    const device = this.shadowRoot.querySelector(
-        '#unpairedContainer bluetooth-device-list-item');
-    if (device) {
-      device.focus();
-    }
-  }
-
-  /**
-   * Return the sorted devices based on the connected statuses, connected
-   * devices are first followed by non-connected devices.
-   *
-   * @param {!Array<!chrome.bluetooth.Device>} devices
-   * @return {!Array<!chrome.bluetooth.Device>}
-   * @private
-   */
-  sortDevices_(devices) {
-    return devices.sort((a, b) => a.connected ? -1 : (b.connected ? 1 : 0));
-  }
-
-  /**
-   * Requests bluetooth device list from Chrome. Update deviceList_ once the
-   * results are returned from chrome.
-   * @private
-   */
-  refreshBluetoothList_() {
-    const filter = {
-      filterType: chrome.bluetooth.FilterType.KNOWN,
-      limit: MAX_NUMBER_DEVICE_SHOWN,
-    };
-    this.bluetooth.getDevices(filter, devices => {
-      this.deviceList_ = this.sortDevices_(devices);
-
-      // Check if we have yet to focus a deep-linked element.
-      if (!this.pendingSettingId_) {
-        return;
-      }
-
-      this.beforeDeepLinkAttempt(this.pendingSettingId_);
-      this.showDeepLink(this.pendingSettingId_).then(result => {
-        if (result.deepLinkShown) {
-          this.pendingSettingId_ = null;
-        }
-      });
-    });
-  }
-
-  /** @private */
-  startOrStopRefreshingDeviceList_() {
-    if (this.adapterState && this.adapterState.powered) {
-      if (this.updateTimerId_ !== undefined) {
-        return;
-      }
-
-      this.refreshBluetoothList_();
-      this.updateTimerId_ = window.setInterval(
-          this.refreshBluetoothList_.bind(this), this.listUpdateFrequencyMs);
-      this.discoveryStartTimestampMs_ = Date.now();
-      return;
-    }
-    window.clearInterval(this.updateTimerId_);
-    this.updateTimerId_ = undefined;
-    this.discoveryStartTimestampMs_ = null;
-    this.deviceList_ = [];
-  }
-
-  /**
-   * Restarts the timer when the frequency changes, which happens
-   * during tests.
-   */
-  listUpdateFrequencyMsChanged_() {
-    if (this.updateTimerId_ === undefined) {
-      return;
-    }
-
-    window.clearInterval(this.updateTimerId_);
-    this.updateTimerId_ = undefined;
-
-    this.startOrStopRefreshingDeviceList_();
-  }
-
-  /**
-   * Record metrics for how long it took between when discovery started on the
-   * Settings page, and the user selected the device they wanted to connect to.
-   * @param {!boolean} wasPaired If the selected device was already
-   *     paired.
-   * @param {!chrome.bluetooth.Transport} transport The transport type
-   *     of the device.
-   * @private
-   */
-  recordDeviceSelectionDuration_(wasPaired, transport) {
-    if (!this.discoveryStartTimestampMs_) {
-      // It's not necessarily an error that |discoveryStartTimestampMs_| isn't
-      // present; it's intentionally cleared after the first device selection
-      // (see further on in this method). Recording subsequent device selections
-      // after the first would provide inflated durations that don't truly
-      // reflect how long it took for the user to find the device they're
-      // looking for.
-      return;
-    }
-
-    chrome.bluetoothPrivate.recordDeviceSelection(
-        Date.now() - this.discoveryStartTimestampMs_, wasPaired, transport);
-
-    this.discoveryStartTimestampMs_ = null;
-  }
-
-  /**
-   * Updates the visibility of the enterprise policy UI tooltip. This is
-   * triggered by the blocked-tooltip-state-change event. This event can be
-   * fired in two cases:
-   * 1) We want to show the tooltip for a given device's icon. Here, show will
-   *    be true and the element will be defined.
-   * 2) We want to make sure there is no tooltip showing for a given device's
-   *    icon. Here, show will be false and the element undefined.
-   * In both cases, address will be the item's device address.
-   * We need to use a common tooltip since a tooltip within the item gets cut
-   * off from the iron-list.
-   * @param {!{detail: {address: string, show: boolean, element: ?HTMLElement}}}
-   *     e
-   * @private
-   */
-  onBlockedTooltipStateChange_(e) {
-    const target = e.detail.element;
-    const hide = () => {
-      /** @type {{hide: Function}} */ (this.$.tooltip).hide();
-      this.$.tooltip.removeEventListener('mouseenter', hide);
-      this.currentTooltipDeviceAddress_ = undefined;
-      if (target) {
-        target.removeEventListener('mouseleave', hide);
-        target.removeEventListener('blur', hide);
-        target.removeEventListener('tap', hide);
-      }
-    };
-
-    if (!e.detail.show) {
-      if (this.currentTooltipDeviceAddress_ &&
-          e.detail.address === this.currentTooltipDeviceAddress_) {
-        hide();
-      }
-      return;
-    }
-
-    // paper-tooltip normally determines the target from the |for| property,
-    // which is a selector. Here paper-tooltip is being reused by multiple
-    // potential targets. Since paper-tooltip does not expose a public property
-    // or method to update the target, the private property |_target| is
-    // updated directly.
-    this.$.tooltip._target = target;
-    /** @type {{updatePosition: Function}} */ (this.$.tooltip).updatePosition();
-    target.addEventListener('mouseleave', hide);
-    target.addEventListener('blur', hide);
-    target.addEventListener('tap', hide);
-    this.$.tooltip.addEventListener('mouseenter', hide);
-    this.$.tooltip.show();
-    this.currentTooltipDeviceAddress_ = e.detail.address;
-  }
-}
-
-customElements.define(
-    SettingsBluetoothSubpageElement.is, SettingsBluetoothSubpageElement);
diff --git a/chrome/browser/resources/settings/chromeos/os_route.js b/chrome/browser/resources/settings/chromeos/os_route.js
index eb6e028..6610189f 100644
--- a/chrome/browser/resources/settings/chromeos/os_route.js
+++ b/chrome/browser/resources/settings/chromeos/os_route.js
@@ -70,11 +70,9 @@
   r.BLUETOOTH_DEVICES = createSubpage(
       r.BLUETOOTH, routesMojomWebui.BLUETOOTH_DEVICES_SUBPAGE_PATH,
       Subpage.kBluetoothDevices);
-  if (loadTimeData.getBoolean('enableBluetoothRevamp')) {
-    r.BLUETOOTH_DEVICE_DETAIL = createSubpage(
-        r.BLUETOOTH, routesMojomWebui.BLUETOOTH_DEVICE_DETAIL_SUBPAGE_PATH,
-        Subpage.kBluetoothDeviceDetail);
-  }
+  r.BLUETOOTH_DEVICE_DETAIL = createSubpage(
+      r.BLUETOOTH, routesMojomWebui.BLUETOOTH_DEVICE_DETAIL_SUBPAGE_PATH,
+      Subpage.kBluetoothDeviceDetail);
   if (loadTimeData.getBoolean('enableSavedDevicesFlag')) {
     r.BLUETOOTH_SAVED_DEVICES = createSubpage(
         r.BLUETOOTH, routesMojomWebui.BLUETOOTH_SAVED_DEVICES_SUBPAGE_PATH,
diff --git a/chrome/browser/resources/settings/chromeos/os_settings.gni b/chrome/browser/resources/settings/chromeos/os_settings.gni
index e02c0f0..6ad9b3b 100644
--- a/chrome/browser/resources/settings/chromeos/os_settings.gni
+++ b/chrome/browser/resources/settings/chromeos/os_settings.gni
@@ -94,7 +94,6 @@
 
 non_web_component_files = [
   "chromeos/assert_extras.ts",
-  "chromeos/bluetooth_page/bluetooth_page_browser_proxy.js",
   "chromeos/combined_search_handler.js",
   "chromeos/crostini_page/crostini_browser_proxy.js",
   "chromeos/crostini_page/crostini_shared_usb_devices.js",
@@ -200,9 +199,6 @@
 
 # Files that are generated by html_to_js().
 gen_web_component_files = [
-  "chromeos/bluetooth_page/bluetooth_device_list_item.js",
-  "chromeos/bluetooth_page/bluetooth_page.js",
-  "chromeos/bluetooth_page/bluetooth_subpage.js",
   "chromeos/crostini_page/bruschetta_subpage.js",
   "chromeos/crostini_page/crostini_arc_adb.js",
   "chromeos/crostini_page/crostini_arc_adb_confirmation_dialog.js",
diff --git a/chrome/browser/resources/settings/chromeos/os_settings.js b/chrome/browser/resources/settings/chromeos/os_settings.js
index 1cfdd39..72ae450e 100644
--- a/chrome/browser/resources/settings/chromeos/os_settings.js
+++ b/chrome/browser/resources/settings/chromeos/os_settings.js
@@ -3,9 +3,6 @@
 // found in the LICENSE file.
 
 import '../prefs/prefs.js';
-import './bluetooth_page/bluetooth_device_list_item.js';
-import './bluetooth_page/bluetooth_page.js';
-import './bluetooth_page/bluetooth_subpage.js';
 import './device_page/audio.js';
 import './device_page/cros_audio_config.js';
 import './device_page/device_page.js';
@@ -124,13 +121,11 @@
 export {getContactManager, observeContactManager, setContactManagerForTesting} from '../shared/nearby_contact_manager.js';
 export {getNearbyShareSettings, observeNearbyShareSettings, setNearbyShareSettingsForTesting} from '../shared/nearby_share_settings.js';
 export {NearbySettings, NearbyShareSettingsBehavior} from '../shared/nearby_share_settings_behavior.js';
-export {bluetoothApis} from './bluetooth_page/bluetooth_page.js';
-export {BluetoothPageBrowserProxyImpl} from './bluetooth_page/bluetooth_page_browser_proxy.js';
 export {setCrosAudioConfigForTesting} from './device_page/cros_audio_config.js';
 export {DevicePageBrowserProxy, DevicePageBrowserProxyImpl, IdleBehavior, LidClosedBehavior, NoteAppLockScreenSupport, setDisplayApiForTesting, StorageSpaceState} from './device_page/device_page_browser_proxy.js';
+export {FindShortcutBehavior, FindShortcutManager} from './find_shortcut_behavior.js';
 export {GoogleAssistantBrowserProxyImpl} from './google_assistant_page/google_assistant_browser_proxy.js';
 export {ConsentStatus, DspHotwordState} from './google_assistant_page/google_assistant_page.js';
-export {FindShortcutBehavior, FindShortcutManager} from './find_shortcut_behavior.js';
 export {InternetPageBrowserProxy, InternetPageBrowserProxyImpl} from './internet_page/internet_page_browser_proxy.js';
 export {KerberosAccountsBrowserProxyImpl, KerberosConfigErrorCode, KerberosErrorType} from './kerberos_page/kerberos_accounts_browser_proxy.js';
 export {recordClick, recordNavigation, recordPageBlur, recordPageFocus, recordSearch, recordSettingChange, setUserActionRecorderForTesting} from './metrics_recorder.js';
diff --git a/chrome/browser/resources/settings/chromeos/os_settings_page/os_settings_page.html b/chrome/browser/resources/settings/chromeos/os_settings_page/os_settings_page.html
index f7bb5d7d..131ba57 100644
--- a/chrome/browser/resources/settings/chromeos/os_settings_page/os_settings_page.html
+++ b/chrome/browser/resources/settings/chromeos/os_settings_page/os_settings_page.html
@@ -127,14 +127,8 @@
     </settings-section>
     <settings-section page-title="$i18n{bluetoothPageTitle}"
         section="bluetooth">
-      <template is="dom-if" if="[[!isBluetoothRevampEnabled_]]" restamp>
-        <settings-bluetooth-page prefs="{{prefs}}">
-        </settings-bluetooth-page>
-      </template>
-      <template is="dom-if" if="[[isBluetoothRevampEnabled_]]" restamp>
-        <os-settings-bluetooth-page prefs="{{prefs}}">
-        </os-settings-bluetooth-page>
-      </template>
+      <os-settings-bluetooth-page prefs="{{prefs}}">
+      </os-settings-bluetooth-page>
     </settings-section>
     <template is="dom-if" if="[[!isGuestMode_]]" restamp>
       <settings-section page-title="$i18n{multidevicePageTitle}"
diff --git a/chrome/browser/resources/settings/chromeos/os_settings_page/os_settings_page.ts b/chrome/browser/resources/settings/chromeos/os_settings_page/os_settings_page.ts
index 1a36958..bf8a0a09 100644
--- a/chrome/browser/resources/settings/chromeos/os_settings_page/os_settings_page.ts
+++ b/chrome/browser/resources/settings/chromeos/os_settings_page/os_settings_page.ts
@@ -21,7 +21,6 @@
 import '../personalization_page/personalization_page.js';
 import '../../settings_page/settings_section.js';
 import '../../settings_page_styles.css.js';
-import '../bluetooth_page/bluetooth_page.js';
 import '../device_page/device_page.js';
 import '../internet_page/internet_page.js';
 import '../kerberos_page/kerberos_page.js';
@@ -155,13 +154,6 @@
       },
 
       currentRoute_: Object,
-
-      isBluetoothRevampEnabled_: {
-        type: Boolean,
-        value() {
-          return loadTimeData.getBoolean('enableBluetoothRevamp');
-        },
-      },
     };
   }
 
@@ -173,7 +165,6 @@
   private showSecondaryUserBanner_: boolean;
   private showUpdateRequiredEolBanner_: boolean;
   private currentRoute_?: Route;
-  private isBluetoothRevampEnabled_: boolean;
   /**
    * Used to avoid handling a new toggle while currently toggling.
    */
diff --git a/chrome/browser/resources/settings/languages_page/languages.ts b/chrome/browser/resources/settings/languages_page/languages.ts
index 4720bbd5..296fa192 100644
--- a/chrome/browser/resources/settings/languages_page/languages.ts
+++ b/chrome/browser/resources/settings/languages_page/languages.ts
@@ -16,6 +16,7 @@
 import {PromiseResolver} from '//resources/js/promise_resolver.js';
 import {PolymerElement} from '//resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
+import {loadTimeData} from '../i18n_setup.js';
 import {PrefsMixin} from '../prefs/prefs_mixin.js';
 import {CrSettingsPrefs} from '../prefs/prefs_types.js';
 
@@ -839,18 +840,23 @@
   }
 
   canDisableLanguage(languageState: LanguageState): boolean {
+    // <if expr="is_win">
     // Cannot disable the prospective UI language.
     if (languageState.language.code === this.languages!.prospectiveUILanguage) {
       return false;
     }
+    // </if>
 
     // Cannot disable the only enabled language.
     if (this.languages!.enabled.length === 1) {
       return false;
     }
 
+    // In the Detailed Language Settings the Translate Blocked list should not
+    // affect the disabled status of Preferred Languages.
     // Cannot disable the last translate blocked language.
-    if (this.isOnlyTranslateBlockedLanguage(languageState)) {
+    if (!loadTimeData.getBoolean('enableDesktopDetailedLanguageSettings') &&
+        this.isOnlyTranslateBlockedLanguage(languageState)) {
       return false;
     }
 
diff --git a/chrome/browser/resources/settings/languages_page/languages_page.html b/chrome/browser/resources/settings/languages_page/languages_page.html
index 00f01f67..49eee4a 100644
--- a/chrome/browser/resources/settings/languages_page/languages_page.html
+++ b/chrome/browser/resources/settings/languages_page/languages_page.html
@@ -169,7 +169,7 @@
         </button>
         <button class="dropdown-item" role="menuitem"
             on-click="onRemoveLanguageTap_"
-            hidden="[[!detailLanguage_.removable]]">
+            disabled="[[!detailLanguage_.removable]]">
           $i18n{removeLanguage}
         </button>
       </cr-action-menu>
diff --git a/chrome/browser/resources/settings/performance_page/tab_discard_exception_list.html b/chrome/browser/resources/settings/performance_page/tab_discard_exception_list.html
index 43aaa53..991e02e9 100644
--- a/chrome/browser/resources/settings/performance_page/tab_discard_exception_list.html
+++ b/chrome/browser/resources/settings/performance_page/tab_discard_exception_list.html
@@ -21,7 +21,7 @@
 <div id="outer" class="layout vertical list-frame">
   <div id="container" class="scroll-container" scrollable>
     <iron-list id="list" items="[[siteList_]]" scroll-target="container"
-        preserve-focus risk-selection class="cr-separators">
+        preserve-focus risk-selection>
       <template>
         <tab-discard-exception-entry site="[[item]]" first$="[[!index]]"
             tabindex$="[[tabIndex]]" iron-list-tab-index="[[tabIndex]]"
diff --git a/chrome/browser/resources/settings/settings_menu/settings_menu.html b/chrome/browser/resources/settings/settings_menu/settings_menu.html
index c091a6d..32a53bb 100644
--- a/chrome/browser/resources/settings/settings_menu/settings_menu.html
+++ b/chrome/browser/resources/settings/settings_menu/settings_menu.html
@@ -79,7 +79,8 @@
             $i18n{privacyPageTitle}
             <paper-ripple></paper-ripple>
           </a>
-          <template is="dom-if" if="[[performanceFeaturesAvailable_]]">
+          <template is="dom-if" id="performanceDomIf"
+              if="[[performanceFeaturesAvailable_]]">
             <a role="menuitem" id="performance" href="/performance"
                 class="cr-nav-menu-item"
                 hidden="[[!pageVisibility.performance]]">
diff --git a/chrome/browser/resources/settings/settings_menu/settings_menu.ts b/chrome/browser/resources/settings/settings_menu/settings_menu.ts
index e024d25..956d2e4 100644
--- a/chrome/browser/resources/settings/settings_menu/settings_menu.ts
+++ b/chrome/browser/resources/settings/settings_menu/settings_menu.ts
@@ -19,9 +19,10 @@
 import {assert} from 'chrome://resources/js/assert_ts.js';
 import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
 import {IronSelectorElement} from 'chrome://resources/polymer/v3_0/iron-selector/iron-selector.js';
-import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {DomIf, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
 import {PageVisibility} from '../page_visibility.js';
+import {routes} from '../route.js';
 import {Route, RouteObserverMixin, RouteObserverMixinInterface, Router} from '../router.js';
 
 import {getTemplate} from './settings_menu.html.js';
@@ -64,8 +65,24 @@
   }
 
   pageVisibility: PageVisibility;
+  private performanceFeaturesAvailable_: boolean;
 
   override currentRouteChanged(newRoute: Route) {
+    if (this.performanceFeaturesAvailable_ && newRoute === routes.PERFORMANCE) {
+      // Add special handling for the Performance section, since the
+      // corresponding menu entry resides in a dom-if and is normally not
+      // present in the DOM during initial load. Force-render the dom-if
+      // instead.
+      const anchor = this.shadowRoot!.querySelector('#performance');
+      if (anchor === null) {
+        const domIf =
+            this.shadowRoot!.querySelector<DomIf>('#performanceDomIf');
+        assert(domIf);
+        assert(domIf.if);
+        domIf.render();
+      }
+    }
+
     // Focus the initially selected path.
     const anchors = this.shadowRoot!.querySelectorAll('a');
     for (let i = 0; i < anchors.length; ++i) {
diff --git a/chrome/browser/safe_browsing/cloud_content_scanning/binary_upload_service.cc b/chrome/browser/safe_browsing/cloud_content_scanning/binary_upload_service.cc
index 091b24e..3dde5ee 100644
--- a/chrome/browser/safe_browsing/cloud_content_scanning/binary_upload_service.cc
+++ b/chrome/browser/safe_browsing/cloud_content_scanning/binary_upload_service.cc
@@ -174,6 +174,17 @@
   content_analysis_request_.mutable_request_data()->set_tab_title(tab_title);
 }
 
+void BinaryUploadService::Request::set_user_action_id(
+    const std::string& user_action_id) {
+  content_analysis_request_.set_user_action_id(user_action_id);
+}
+
+void BinaryUploadService::Request::set_user_action_requests_count(
+    uint64_t user_action_requests_count) {
+  content_analysis_request_.set_user_action_requests_count(
+      user_action_requests_count);
+}
+
 std::string BinaryUploadService::Request::SetRandomRequestToken() {
   DCHECK(request_token().empty());
 
@@ -213,6 +224,14 @@
   return content_analysis_request_.request_data().content_type();
 }
 
+const std::string& BinaryUploadService::Request::user_action_id() const {
+  return content_analysis_request_.user_action_id();
+}
+
+uint64_t BinaryUploadService::Request::user_action_requests_count() const {
+  return content_analysis_request_.user_action_requests_count();
+}
+
 void BinaryUploadService::Request::FinishRequest(
     Result result,
     enterprise_connectors::ContentAnalysisResponse response) {
diff --git a/chrome/browser/safe_browsing/cloud_content_scanning/binary_upload_service.h b/chrome/browser/safe_browsing/cloud_content_scanning/binary_upload_service.h
index 8c32fbf..bcc01205 100644
--- a/chrome/browser/safe_browsing/cloud_content_scanning/binary_upload_service.h
+++ b/chrome/browser/safe_browsing/cloud_content_scanning/binary_upload_service.h
@@ -155,6 +155,8 @@
     void set_client_metadata(enterprise_connectors::ClientMetadata metadata);
     void set_content_type(const std::string& type);
     void set_tab_title(const std::string& tab_title);
+    void set_user_action_id(const std::string& user_action_id);
+    void set_user_action_requests_count(uint64_t user_action_requests_count);
 
     std::string SetRandomRequestToken();
 
@@ -166,6 +168,8 @@
     const std::string& filename() const;
     const std::string& digest() const;
     const std::string& content_type() const;
+    const std::string& user_action_id() const;
+    uint64_t user_action_requests_count() const;
 
     // Finish the request, with the given `result` and `response` from the
     // server.
diff --git a/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_browsertest_base.cc b/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_browsertest_base.cc
index a3c625cf..3cd98cba 100644
--- a/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_browsertest_base.cc
+++ b/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_browsertest_base.cc
@@ -41,12 +41,13 @@
       GURL url,
       const std::string& source,
       const std::string& destination,
+      const std::string& user_action_id,
       safe_browsing::DeepScanAccessPoint access_point,
       const std::vector<base::FilePath>& paths,
       enterprise_connectors::FilesRequestHandler::CompletionCallback callback) {
     return base::WrapUnique(new UnresponsiveFilesRequestHandler(
         upload_service, profile, analysis_settings, url, source, destination,
-        access_point, paths, std::move(callback)));
+        user_action_id, access_point, paths, std::move(callback)));
   }
 
  private:
diff --git a/chrome/browser/safe_browsing/tailored_security/chrome_tailored_security_service.cc b/chrome/browser/safe_browsing/tailored_security/chrome_tailored_security_service.cc
index 661877e..8b496ba 100644
--- a/chrome/browser/safe_browsing/tailored_security/chrome_tailored_security_service.cc
+++ b/chrome/browser/safe_browsing/tailored_security/chrome_tailored_security_service.cc
@@ -54,11 +54,16 @@
 ChromeTailoredSecurityService::ChromeTailoredSecurityService(Profile* profile)
     : TailoredSecurityService(IdentityManagerFactory::GetForProfile(profile),
                               profile->GetPrefs()),
-      profile_(profile) {}
+      profile_(profile) {
+  AddObserver(this);
+}
 
-ChromeTailoredSecurityService::~ChromeTailoredSecurityService() = default;
+ChromeTailoredSecurityService::~ChromeTailoredSecurityService() {
+  RemoveObserver(this);
+}
 
-void ChromeTailoredSecurityService::ShowSyncNotification(bool is_enabled) {
+void ChromeTailoredSecurityService::OnSyncNotificationMessageRequest(
+    bool is_enabled) {
 #if BUILDFLAG(IS_ANDROID)
   content::WebContents* web_contents = GetWebContentsForProfile(profile_);
   if (!web_contents) {
@@ -115,9 +120,9 @@
     Browser* browser,
     bool show_enable_modal) {
   if (show_enable_modal) {
-    ShowEnabledDialogForBrowser(browser);
+    dialog_manager_.ShowEnabledDialogForBrowser(browser);
   } else {
-    ShowDisabledDialogForBrowser(browser);
+    dialog_manager_.ShowDisabledDialogForBrowser(browser);
   }
 }
 #endif
diff --git a/chrome/browser/safe_browsing/tailored_security/chrome_tailored_security_service.h b/chrome/browser/safe_browsing/tailored_security/chrome_tailored_security_service.h
index 4667ff3..024b0bb 100644
--- a/chrome/browser/safe_browsing/tailored_security/chrome_tailored_security_service.h
+++ b/chrome/browser/safe_browsing/tailored_security/chrome_tailored_security_service.h
@@ -8,9 +8,12 @@
 #include "base/memory/raw_ptr.h"
 #include "build/build_config.h"
 #include "components/safe_browsing/core/browser/tailored_security_service/tailored_security_service.h"
+#include "components/safe_browsing/core/browser/tailored_security_service/tailored_security_service_observer.h"
 
 #if BUILDFLAG(IS_ANDROID)
 #include "chrome/browser/safe_browsing/tailored_security/consented_message_android.h"
+#else
+#include "chrome/browser/ui/views/safe_browsing/tailored_security_desktop_dialog.h"
 #endif
 
 class Browser;
@@ -18,14 +21,16 @@
 
 namespace safe_browsing {
 
-class ChromeTailoredSecurityService : public TailoredSecurityService {
+class ChromeTailoredSecurityService : public TailoredSecurityService,
+                                      public TailoredSecurityServiceObserver {
  public:
   explicit ChromeTailoredSecurityService(Profile* profile);
   ~ChromeTailoredSecurityService() override;
 
- protected:
-  void ShowSyncNotification(bool is_enabled) override;
+  // TailoredSecurityServiceObserver.
+  void OnSyncNotificationMessageRequest(bool is_enabled) override;
 
+ protected:
 #if !BUILDFLAG(IS_ANDROID)
   // Shows a dialog on the provided `browser`. If `show_enable_dialog` is
   // true, display the enabled dialog; otherwise show the disabled dialog. This
@@ -40,6 +45,8 @@
   void MessageDismissed();
 
   std::unique_ptr<TailoredSecurityConsentedModalAndroid> message_;
+#else
+  TailoredSecurityDesktopDialogManager dialog_manager_;
 #endif
 
   raw_ptr<Profile> profile_;
diff --git a/chrome/browser/safe_browsing/tailored_security/chrome_tailored_security_service_unittest.cc b/chrome/browser/safe_browsing/tailored_security/chrome_tailored_security_service_unittest.cc
index 883de563..d393d780 100644
--- a/chrome/browser/safe_browsing/tailored_security/chrome_tailored_security_service_unittest.cc
+++ b/chrome/browser/safe_browsing/tailored_security/chrome_tailored_security_service_unittest.cc
@@ -111,7 +111,6 @@
     params.type = Browser::TYPE_NORMAL;
     params.window = browser_window_.get();
     browser_ = std::unique_ptr<Browser>(Browser::Create(params));
-
     chrome_tailored_security_service_ =
         std::make_unique<TestChromeTailoredSecurityService>(profile_);
   }
diff --git a/chrome/browser/segmentation_platform/segmentation_platform_config.cc b/chrome/browser/segmentation_platform/segmentation_platform_config.cc
index 675f44b..075c575 100644
--- a/chrome/browser/segmentation_platform/segmentation_platform_config.cc
+++ b/chrome/browser/segmentation_platform/segmentation_platform_config.cc
@@ -12,6 +12,7 @@
 #include "chrome/browser/metrics/chrome_metrics_service_accessor.h"
 #include "components/segmentation_platform/embedder/default_model/cross_device_user_segment.h"
 #include "components/segmentation_platform/embedder/default_model/feed_user_segment.h"
+#include "components/segmentation_platform/embedder/default_model/frequent_feature_user_model.h"
 #include "components/segmentation_platform/embedder/default_model/low_user_engagement_model.h"
 #include "components/segmentation_platform/embedder/default_model/resume_heavy_user_model.h"
 #include "components/segmentation_platform/embedder/default_model/search_user_model.h"
@@ -180,6 +181,7 @@
   configs.emplace_back(ChromeStartModelV2::GetConfig());
   configs.emplace_back(IntentionalUserModel::GetConfig());
   configs.emplace_back(PowerUserSegment::GetConfig());
+  configs.emplace_back(FrequentFeatureUserModel::GetConfig());
 #endif
   // TODO(ssid): Move this check into the model.
   if (IsLowEngagementFeatureEnabled()) {
diff --git a/chrome/browser/supervised_user/kids_chrome_management/kids_external_fetcher.cc b/chrome/browser/supervised_user/kids_chrome_management/kids_external_fetcher.cc
index b7e893e3..8cbc5cb 100644
--- a/chrome/browser/supervised_user/kids_chrome_management/kids_external_fetcher.cc
+++ b/chrome/browser/supervised_user/kids_chrome_management/kids_external_fetcher.cc
@@ -147,7 +147,7 @@
       base::expected<signin::AccessTokenInfo, GoogleServiceAuthError>
           access_token) {
     DCHECK(
-        callback);  // https://chromium.googlesource.com/chromium/src/+/master/docs/callback.md#creating-a-callback-that-does-nothing
+        callback);  // https://chromium.googlesource.com/chromium/src/+/main/docs/callback.md#creating-a-callback-that-does-nothing
 
     if (!access_token.has_value()) {
       std::move(callback).Run(KidsExternalFetcherStatus::GoogleServiceAuthError(
diff --git a/chrome/browser/supervised_user/kids_chrome_management/kids_external_fetcher.h b/chrome/browser/supervised_user/kids_chrome_management/kids_external_fetcher.h
index bd6eba3..8fccb7f 100644
--- a/chrome/browser/supervised_user/kids_chrome_management/kids_external_fetcher.h
+++ b/chrome/browser/supervised_user/kids_chrome_management/kids_external_fetcher.h
@@ -45,8 +45,8 @@
   static KidsExternalFetcherStatus HttpError();
   static KidsExternalFetcherStatus InvalidResponse();
 
-  // KidsExternalFetcherStatus::IsOk iff google_service_auth_error_ is empty and
-  // fetch_error_ == NONE
+  // KidsExternalFetcherStatus::IsOk iff google_service_auth_error_.state() ==
+  // NONE and state_ == NONE
   bool IsOk() const;
 
   State state() const;
diff --git a/chrome/browser/tab_group/java/src/org/chromium/chrome/browser/tasks/tab_groups/TabGroupModelFilter.java b/chrome/browser/tab_group/java/src/org/chromium/chrome/browser/tasks/tab_groups/TabGroupModelFilter.java
index 1e7078c..1d572bd 100644
--- a/chrome/browser/tab_group/java/src/org/chromium/chrome/browser/tasks/tab_groups/TabGroupModelFilter.java
+++ b/chrome/browser/tab_group/java/src/org/chromium/chrome/browser/tasks/tab_groups/TabGroupModelFilter.java
@@ -192,7 +192,6 @@
     private Tab mAbsentSelectedTab;
     private boolean mShouldRecordUma = true;
     private boolean mIsResetting;
-    private boolean mIsUndoing;
 
     // Create group automatically for target_blank links.
     private final boolean mGroupAutoCreation;
@@ -492,14 +491,12 @@
      * @param originalGroupId The rootId before grouped.
      */
     public void undoGroupedTab(Tab tab, int originalIndex, int originalGroupId) {
-        if (!tab.isInitialized()) return;
-
+        if (!tab.isInitialized()) {
+            return;
+        }
         int currentIndex = TabModelUtils.getTabIndexById(getTabModel(), tab.getId());
         assert currentIndex != TabModel.INVALID_TAB_INDEX;
 
-        // Unconditionally signal removal of the tab from the group it is in.
-        mIsUndoing = true;
-        boolean groupExistedBeforeMove = mGroupIdToGroupMap.get(originalGroupId) != null;
         setRootId(tab, originalGroupId);
         if (currentIndex == originalIndex) {
             didMoveTab(tab, originalIndex, currentIndex);
@@ -507,17 +504,6 @@
             if (currentIndex < originalIndex) originalIndex++;
             getTabModel().moveTab(tab.getId(), originalIndex);
         }
-        mIsUndoing = false;
-
-        // If undoing results in restoring a tab into a different group (not as a single tab) then
-        // notify observers it was added.
-        if (groupExistedBeforeMove) {
-            TabGroup group = mGroupIdToGroupMap.get(originalGroupId);
-            // Last shown tab IDs are not preserved across an undo.
-            for (Observer observer : mGroupFilterObserver) {
-                observer.didMergeTabToGroup(tab, group.getLastShownTabId());
-            }
-        }
     }
 
     // TODO(crbug.com/951608): follow up with sessions count histogram for TabGroups.
@@ -802,7 +788,7 @@
         if (!isTabModelRestored()) return;
         // Need to cache the flags before resetting the internal data map.
         boolean isMergeTabToGroup = isMergeTabToGroup(tab);
-        boolean isMoveTabOutOfGroup = isMoveTabOutOfGroup(tab) || mIsUndoing;
+        boolean isMoveTabOutOfGroup = isMoveTabOutOfGroup(tab);
         int groupIdBeforeMove = getGroupIdBeforeMove(tab, isMergeTabToGroup || isMoveTabOutOfGroup);
         assert groupIdBeforeMove != TabGroup.INVALID_GROUP_ID;
         TabGroup groupBeforeMove = mGroupIdToGroupMap.get(groupIdBeforeMove);
diff --git a/chrome/browser/tab_group/junit/src/org/chromium/chrome/browser/tasks/tab_groups/TabGroupModelFilterUnitTest.java b/chrome/browser/tab_group/junit/src/org/chromium/chrome/browser/tasks/tab_groups/TabGroupModelFilterUnitTest.java
index fa7fc30..94a949e 100644
--- a/chrome/browser/tab_group/junit/src/org/chromium/chrome/browser/tasks/tab_groups/TabGroupModelFilterUnitTest.java
+++ b/chrome/browser/tab_group/junit/src/org/chromium/chrome/browser/tasks/tab_groups/TabGroupModelFilterUnitTest.java
@@ -976,75 +976,6 @@
         assertThat(mTabGroupModelFilter.indexOf(mTab4), equalTo(2));
     }
 
-    @Test
-    public void undoGroupedTab_MultipleGroupUndoNoMovement() {
-        List<Tab> expectedTabModel =
-                new ArrayList<>(Arrays.asList(mTab1, mTab2, mTab3, mTab4, mTab5, mTab6));
-
-        // Simulate we just grouped mTab4 and the group (mTab5, mTab6) with the group (mTab2,
-        // mTab3).
-        CriticalPersistedTabData.from(mTab4).setRootId(TAB2_ROOT_ID);
-        CriticalPersistedTabData.from(mTab5).setRootId(TAB2_ROOT_ID);
-        CriticalPersistedTabData.from(mTab6).setRootId(TAB2_ROOT_ID);
-        mTabGroupModelFilter.resetFilterState();
-        assertThat(CriticalPersistedTabData.from(mTab4).getRootId(), equalTo(TAB2_ROOT_ID));
-        assertThat(CriticalPersistedTabData.from(mTab5).getRootId(), equalTo(TAB2_ROOT_ID));
-        assertThat(CriticalPersistedTabData.from(mTab6).getRootId(), equalTo(TAB2_ROOT_ID));
-        assertThat(mTabGroupModelFilter.indexOf(mTab4), equalTo(1));
-        assertThat(mTabGroupModelFilter.indexOf(mTab5), equalTo(1));
-        assertThat(mTabGroupModelFilter.indexOf(mTab6), equalTo(1));
-        assertArrayEquals(mTabs.toArray(), expectedTabModel.toArray());
-
-        // Undo the grouped action in reverse order so indexes are correct.
-        mTabGroupModelFilter.undoGroupedTab(mTab6, POSITION6, TAB5_ROOT_ID);
-        verify(mTabGroupModelFilterObserver).didMoveTabOutOfGroup(mTab6, POSITION2);
-        mTabGroupModelFilter.undoGroupedTab(mTab5, POSITION5, TAB5_ROOT_ID);
-        verify(mTabGroupModelFilterObserver).didMoveTabOutOfGroup(mTab5, POSITION2);
-        verify(mTabGroupModelFilterObserver).didMergeTabToGroup(mTab5, mTab6.getId());
-        mTabGroupModelFilter.undoGroupedTab(mTab4, POSITION4, TAB4_ROOT_ID);
-        verify(mTabGroupModelFilterObserver).didMoveTabOutOfGroup(mTab4, POSITION2);
-
-        assertArrayEquals(mTabs.toArray(), expectedTabModel.toArray());
-        assertThat(CriticalPersistedTabData.from(mTab4).getRootId(), equalTo(TAB4_ROOT_ID));
-        assertThat(CriticalPersistedTabData.from(mTab5).getRootId(), equalTo(TAB5_ROOT_ID));
-        assertThat(CriticalPersistedTabData.from(mTab6).getRootId(), equalTo(TAB5_ROOT_ID));
-        assertThat(mTabGroupModelFilter.indexOf(mTab4), equalTo(2));
-        assertThat(mTabGroupModelFilter.indexOf(mTab5), equalTo(3));
-        assertThat(mTabGroupModelFilter.indexOf(mTab6), equalTo(3));
-    }
-
-    @Test
-    public void undoGroupedTab_MultipleGroupUndoWithMovement() {
-        List<Tab> expectedTabModel =
-                new ArrayList<>(Arrays.asList(mTab1, mTab2, mTab3, mTab6, mTab5, mTab4));
-
-        // Simulate we just grouped the group (mTab5, mTab6) with the group (mTab2, mTab3).
-        CriticalPersistedTabData.from(mTab5).setRootId(TAB2_ROOT_ID);
-        CriticalPersistedTabData.from(mTab6).setRootId(TAB2_ROOT_ID);
-        mTabModel.moveTab(mTab5.getId(), POSITION3 + 1);
-        mTabModel.moveTab(mTab6.getId(), POSITION3 + 1);
-        mTabGroupModelFilter.resetFilterState();
-        assertThat(CriticalPersistedTabData.from(mTab5).getRootId(), equalTo(TAB2_ROOT_ID));
-        assertThat(CriticalPersistedTabData.from(mTab6).getRootId(), equalTo(TAB2_ROOT_ID));
-        assertThat(mTabGroupModelFilter.indexOf(mTab5), equalTo(1));
-        assertThat(mTabGroupModelFilter.indexOf(mTab6), equalTo(1));
-        assertArrayEquals(mTabs.toArray(), expectedTabModel.toArray());
-
-        // Undo the grouped action in reverse order so indexes are correct.
-        expectedTabModel = new ArrayList<>(Arrays.asList(mTab1, mTab2, mTab3, mTab4, mTab5, mTab6));
-        mTabGroupModelFilter.undoGroupedTab(mTab6, POSITION6, TAB5_ROOT_ID);
-        verify(mTabGroupModelFilterObserver).didMoveTabOutOfGroup(mTab6, POSITION2);
-        mTabGroupModelFilter.undoGroupedTab(mTab5, POSITION5, TAB5_ROOT_ID);
-        verify(mTabGroupModelFilterObserver).didMoveTabOutOfGroup(mTab5, POSITION2);
-        verify(mTabGroupModelFilterObserver).didMergeTabToGroup(mTab5, mTab6.getId());
-
-        assertThat(CriticalPersistedTabData.from(mTab5).getRootId(), equalTo(TAB5_ROOT_ID));
-        assertThat(CriticalPersistedTabData.from(mTab6).getRootId(), equalTo(TAB5_ROOT_ID));
-        assertThat(mTabGroupModelFilter.indexOf(mTab5), equalTo(3));
-        assertThat(mTabGroupModelFilter.indexOf(mTab6), equalTo(3));
-        assertArrayEquals(mTabs.toArray(), expectedTabModel.toArray());
-    }
-
     @Test(expected = AssertionError.class)
     public void undoGroupedTab_AssertTest() {
         // Simulate mTab6 is not in TabModel.
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_es.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_es.xtb
index f0d9d63..1fd1457 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_es.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_es.xtb
@@ -6,7 +6,7 @@
 <translation id="207576718733492531">La lista de credenciales que puedes rellenar con un toque está cerrada.</translation>
 <translation id="2359808026110333948">Continuar</translation>
 <translation id="2410754283952462441">Elige una cuenta</translation>
-<translation id="263889165891674454">¿Usar contraseña o clave de acceso guardada?</translation>
+<translation id="263889165891674454">¿Usar contraseña o llave de acceso guardada?</translation>
 <translation id="3399357656427473483">Lista de credenciales que puedes rellenar con un toque.</translation>
 <translation id="3653689374478248324">Iniciarás sesión en <ph name="SITE_NAME" /></translation>
 <translation id="3950820424414687140">Iniciar sesión</translation>
diff --git a/chrome/browser/translate/chrome_translate_client.cc b/chrome/browser/translate/chrome_translate_client.cc
index b1792a5..54503ec9 100644
--- a/chrome/browser/translate/chrome_translate_client.cc
+++ b/chrome/browser/translate/chrome_translate_client.cc
@@ -196,10 +196,11 @@
   return chrome_translate_client->GetTranslateManager();
 }
 
-void ChromeTranslateClient::GetTranslateLanguagesForDisplay(
+void ChromeTranslateClient::GetTranslateLanguages(
     content::WebContents* web_contents,
     std::string* source,
-    std::string* target) {
+    std::string* target,
+    bool for_display) {
   DCHECK(source != nullptr);
   DCHECK(target != nullptr);
 
@@ -210,10 +211,17 @@
       Profile::FromBrowserContext(web_contents->GetBrowserContext());
   std::unique_ptr<translate::TranslatePrefs> translate_prefs =
       CreateTranslatePrefs(profile->GetPrefs());
-  *target = translate_manager_->GetTargetLanguageForDisplay(
-      translate_prefs.get(), LanguageModelManagerFactory::GetInstance()
-                                 ->GetForBrowserContext(profile)
-                                 ->GetPrimaryModel());
+  if (for_display) {
+    *target = translate_manager_->GetTargetLanguageForDisplay(
+        translate_prefs.get(), LanguageModelManagerFactory::GetInstance()
+                                   ->GetForBrowserContext(profile)
+                                   ->GetPrimaryModel());
+  } else {
+    *target = translate_manager_->GetTargetLanguage(
+        translate_prefs.get(), LanguageModelManagerFactory::GetInstance()
+                                   ->GetForBrowserContext(profile)
+                                   ->GetPrimaryModel());
+  }
 }
 
 translate::TranslateManager* ChromeTranslateClient::GetTranslateManager() {
diff --git a/chrome/browser/translate/chrome_translate_client.h b/chrome/browser/translate/chrome_translate_client.h
index b79835a..52989b0 100644
--- a/chrome/browser/translate/chrome_translate_client.h
+++ b/chrome/browser/translate/chrome_translate_client.h
@@ -82,12 +82,13 @@
       content::WebContents* web_contents);
 
   // Gets |source| and |target| languages. |source| is the original source
-  // language of a page, |target| is either the current page language if a page
-  // was translated, or the output of the |TranslateManager::GetTargetLanguage|
-  // otherwise.
-  void GetTranslateLanguagesForDisplay(content::WebContents* web_contents,
-                                       std::string* source,
-                                       std::string* target);
+  // language of a page. |target| is |TranslateManager::GetTargetLanguage|,
+  // or, if |for_display| is true and the page was translated - the current page
+  // language.
+  void GetTranslateLanguages(content::WebContents* web_contents,
+                             std::string* source,
+                             std::string* target,
+                             bool for_display = true);
 
   // Gets the associated TranslateManager.
   translate::TranslateManager* GetTranslateManager();
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
index 6bf91cd..c75dd24 100644
--- a/chrome/browser/ui/BUILD.gn
+++ b/chrome/browser/ui/BUILD.gn
@@ -694,8 +694,8 @@
       "webui/connectors_internals/connectors_internals_page_handler.h",
       "webui/connectors_internals/connectors_internals_ui.cc",
       "webui/connectors_internals/connectors_internals_ui.h",
-      "webui/connectors_internals/zero_trust_utils.cc",
-      "webui/connectors_internals/zero_trust_utils.h",
+      "webui/connectors_internals/device_trust_utils.cc",
+      "webui/connectors_internals/device_trust_utils.h",
     ]
 
     deps += [
diff --git a/chrome/browser/ui/android/fast_checkout/internal/BUILD.gn b/chrome/browser/ui/android/fast_checkout/internal/BUILD.gn
index d84b3ef..c4219a9 100644
--- a/chrome/browser/ui/android/fast_checkout/internal/BUILD.gn
+++ b/chrome/browser/ui/android/fast_checkout/internal/BUILD.gn
@@ -14,6 +14,7 @@
     "java/src/org/chromium/chrome/browser/ui/fast_checkout/FastCheckoutMediator.java",
     "java/src/org/chromium/chrome/browser/ui/fast_checkout/FastCheckoutProperties.java",
     "java/src/org/chromium/chrome/browser/ui/fast_checkout/FastCheckoutSheetContent.java",
+    "java/src/org/chromium/chrome/browser/ui/fast_checkout/FastCheckoutUserActions.java",
     "java/src/org/chromium/chrome/browser/ui/fast_checkout/detail_screen/AutofillProfileItemProperties.java",
     "java/src/org/chromium/chrome/browser/ui/fast_checkout/detail_screen/AutofillProfileItemViewBinder.java",
     "java/src/org/chromium/chrome/browser/ui/fast_checkout/detail_screen/CreditCardItemProperties.java",
diff --git a/chrome/browser/ui/android/fast_checkout/internal/java/src/org/chromium/chrome/browser/ui/fast_checkout/FastCheckoutMediator.java b/chrome/browser/ui/android/fast_checkout/internal/java/src/org/chromium/chrome/browser/ui/fast_checkout/FastCheckoutMediator.java
index b47062a..5e37638 100644
--- a/chrome/browser/ui/android/fast_checkout/internal/java/src/org/chromium/chrome/browser/ui/fast_checkout/FastCheckoutMediator.java
+++ b/chrome/browser/ui/android/fast_checkout/internal/java/src/org/chromium/chrome/browser/ui/fast_checkout/FastCheckoutMediator.java
@@ -76,8 +76,11 @@
         };
 
         mModel.set(FastCheckoutProperties.HOME_SCREEN_DELEGATE, createHomeScreenDelegate());
-        mModel.set(FastCheckoutProperties.DETAIL_SCREEN_BACK_CLICK_HANDLER,
-                () -> setCurrentScreen(FastCheckoutProperties.ScreenType.HOME_SCREEN));
+        mModel.set(FastCheckoutProperties.DETAIL_SCREEN_BACK_CLICK_HANDLER, () -> {
+            setCurrentScreen(FastCheckoutProperties.ScreenType.HOME_SCREEN);
+            FastCheckoutUserActions.NAVIGATED_BACK_HOME.log();
+        });
+        FastCheckoutUserActions.INITIALIZED.log();
     }
 
     /** Returns an implementation the {@link HomeScreenCoordinator.Delegate} interface. */
@@ -88,6 +91,7 @@
                 if (!mModel.get(FastCheckoutProperties.VISIBLE)) {
                     return; // Dismiss only if not dismissed yet.
                 }
+                FastCheckoutUserActions.ACCEPTED.log();
                 FastCheckoutAutofillProfile profile =
                         mModel.get(FastCheckoutProperties.SELECTED_PROFILE);
                 FastCheckoutCreditCard creditCard =
@@ -100,11 +104,13 @@
             @Override
             public void onShowAddressesList() {
                 setCurrentScreen(FastCheckoutProperties.ScreenType.AUTOFILL_PROFILE_SCREEN);
+                FastCheckoutUserActions.NAVIGATED_TO_ADDRESSES.log();
             }
 
             @Override
             public void onShowCreditCardList() {
                 setCurrentScreen(FastCheckoutProperties.ScreenType.CREDIT_CARD_SCREEN);
+                FastCheckoutUserActions.NAVIGATED_TO_CREDIT_CARDS.log();
             }
         };
     }
@@ -153,7 +159,7 @@
         if (!mModel.get(FastCheckoutProperties.VISIBLE)) {
             return; // Dismiss only if not dismissed yet.
         }
-        // TODO(crbug.com/1334642): Record dismissal metrics.
+        FastCheckoutUserActions.DISMISSED.log();
         mModel.set(FastCheckoutProperties.VISIBLE, false);
         mDelegate.onDismissed();
     }
@@ -205,7 +211,11 @@
         profileItems.add(new ListItem(DetailItemType.FOOTER,
                 FooterItemProperties.create(
                         /*label=*/R.string.fast_checkout_detail_screen_add_autofill_profile_text,
-                        /*onClickHandler=*/() -> mDelegate.openAutofillProfileSettings())));
+                        /*onClickHandler=*/() -> {
+                            mDelegate.openAutofillProfileSettings();
+                            FastCheckoutUserActions.NAVIGATED_TO_ADDRESSES_SETTINGS_VIA_FOOTER
+                                    .log();
+                        })));
 
         setSelectedAutofillProfile(newSelection);
     }
@@ -217,6 +227,7 @@
      */
     public void setSelectedAutofillProfile(FastCheckoutAutofillProfile selectedProfile) {
         assert selectedProfile != null;
+        boolean isInitialSelection = mModel.get(FastCheckoutProperties.SELECTED_PROFILE) == null;
         mModel.set(FastCheckoutProperties.SELECTED_PROFILE, selectedProfile);
 
         int foundProfiles = 0;
@@ -227,9 +238,17 @@
             }
             boolean isSelected = selectedProfile.equals(
                     item.model.get(AutofillProfileItemProperties.AUTOFILL_PROFILE));
+            boolean wasSelected = item.model.get(AutofillProfileItemProperties.IS_SELECTED);
             item.model.set(AutofillProfileItemProperties.IS_SELECTED, isSelected);
             if (isSelected) {
                 ++foundProfiles;
+                if (!isInitialSelection) {
+                    if (wasSelected) {
+                        FastCheckoutUserActions.SELECTED_SAME_ADDRESS.log();
+                    } else {
+                        FastCheckoutUserActions.SELECTED_DIFFERENT_ADDRESS.log();
+                    }
+                }
             }
         }
 
@@ -272,7 +291,11 @@
         cardItems.add(new ListItem(DetailItemType.FOOTER,
                 FooterItemProperties.create(
                         /*label=*/R.string.fast_checkout_detail_screen_add_credit_card_text,
-                        /*onClickHandler=*/() -> mDelegate.openCreditCardSettings())));
+                        /*onClickHandler=*/() -> {
+                            mDelegate.openCreditCardSettings();
+                            FastCheckoutUserActions.NAVIGATED_TO_CREDIT_CARDS_SETTINGS_VIA_FOOTER
+                                    .log();
+                        })));
 
         setSelectedCreditCard(newSelection);
     }
@@ -284,6 +307,8 @@
      */
     public void setSelectedCreditCard(FastCheckoutCreditCard selectedCreditCard) {
         assert selectedCreditCard != null;
+        boolean isInitialSelection =
+                mModel.get(FastCheckoutProperties.SELECTED_CREDIT_CARD) == null;
         mModel.set(FastCheckoutProperties.SELECTED_CREDIT_CARD, selectedCreditCard);
 
         int foundCards = 0;
@@ -294,9 +319,17 @@
             }
             boolean isSelected =
                     selectedCreditCard.equals(item.model.get(CreditCardItemProperties.CREDIT_CARD));
+            boolean wasSelected = item.model.get(CreditCardItemProperties.IS_SELECTED);
             item.model.set(CreditCardItemProperties.IS_SELECTED, isSelected);
             if (isSelected) {
                 ++foundCards;
+                if (!isInitialSelection) {
+                    if (wasSelected) {
+                        FastCheckoutUserActions.SELECTED_SAME_CREDIT_CARD.log();
+                    } else {
+                        FastCheckoutUserActions.SELECTED_DIFFERENT_CREDIT_CARD.log();
+                    }
+                }
             }
         }
 
@@ -316,7 +349,10 @@
             mModel.set(FastCheckoutProperties.DETAIL_SCREEN_SETTINGS_MENU_TITLE,
                     R.string.fast_checkout_autofill_profile_settings_button_description);
             mModel.set(FastCheckoutProperties.DETAIL_SCREEN_SETTINGS_CLICK_HANDLER,
-                    createSettingsOnClickListener(() -> mDelegate.openAutofillProfileSettings()));
+                    createSettingsOnClickListener(() -> {
+                        mDelegate.openAutofillProfileSettings();
+                        FastCheckoutUserActions.NAVIGATED_TO_ADDRESSES_SETTINGS_VIA_ICON.log();
+                    }));
             mModel.set(FastCheckoutProperties.DETAIL_SCREEN_MODEL_LIST,
                     mModel.get(FastCheckoutProperties.PROFILE_MODEL_LIST));
             mModel.set(FastCheckoutProperties.DETAIL_SCREEN_LIST_HEIGHT_IN_PX,
@@ -327,7 +363,10 @@
             mModel.set(FastCheckoutProperties.DETAIL_SCREEN_SETTINGS_MENU_TITLE,
                     R.string.fast_checkout_credit_card_settings_button_description);
             mModel.set(FastCheckoutProperties.DETAIL_SCREEN_SETTINGS_CLICK_HANDLER,
-                    createSettingsOnClickListener(() -> mDelegate.openCreditCardSettings()));
+                    createSettingsOnClickListener(() -> {
+                        mDelegate.openCreditCardSettings();
+                        FastCheckoutUserActions.NAVIGATED_TO_CREDIT_CARDS_SETTINGS_VIA_ICON.log();
+                    }));
             mModel.set(FastCheckoutProperties.DETAIL_SCREEN_MODEL_LIST,
                     mModel.get(FastCheckoutProperties.CREDIT_CARD_MODEL_LIST));
             mModel.set(FastCheckoutProperties.DETAIL_SCREEN_LIST_HEIGHT_IN_PX,
@@ -397,7 +436,7 @@
      */
     @MainThread
     public void destroy() {
-        // TODO(crbug.com/1334642): Record as part of the dismissal metrics.
+        FastCheckoutUserActions.DESTROYED.log();
         mModel.set(FastCheckoutProperties.VISIBLE, false);
     }
 }
diff --git a/chrome/browser/ui/android/fast_checkout/internal/java/src/org/chromium/chrome/browser/ui/fast_checkout/FastCheckoutUserActions.java b/chrome/browser/ui/android/fast_checkout/internal/java/src/org/chromium/chrome/browser/ui/fast_checkout/FastCheckoutUserActions.java
new file mode 100644
index 0000000..c3dfb01
--- /dev/null
+++ b/chrome/browser/ui/android/fast_checkout/internal/java/src/org/chromium/chrome/browser/ui/fast_checkout/FastCheckoutUserActions.java
@@ -0,0 +1,45 @@
+// Copyright 2022 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.ui.fast_checkout;
+
+import org.chromium.base.metrics.RecordUserAction;
+
+/**
+ * Defines Fast Checkout's UMA user actions. The resulting string returned by
+ * `getAction()` needs to be documented at tools/metrics/actions/actions.xml.
+ */
+public enum FastCheckoutUserActions {
+    INITIALIZED("Initialized"),
+    ACCEPTED("Accepted"),
+    NAVIGATED_BACK_HOME("NavigatedBackHome"),
+    NAVIGATED_TO_ADDRESSES("NavigatedToAddresses"),
+    NAVIGATED_TO_CREDIT_CARDS("NavigatedToCreditCards"),
+    NAVIGATED_TO_ADDRESSES_SETTINGS_VIA_ICON("NavigatedToAddressesSettingsViaIcon"),
+    NAVIGATED_TO_CREDIT_CARDS_SETTINGS_VIA_ICON("NavigatedToCreditCardsSettingsViaIcon"),
+    NAVIGATED_TO_ADDRESSES_SETTINGS_VIA_FOOTER("NavigatedToAddressesSettingsViaFooter"),
+    NAVIGATED_TO_CREDIT_CARDS_SETTINGS_VIA_FOOTER("NavigatedToCreditCardsSettingsViaFooter"),
+    SELECTED_DIFFERENT_ADDRESS("SelectedDifferentAddress"),
+    SELECTED_DIFFERENT_CREDIT_CARD("SelectedDifferentCreditCard"),
+    SELECTED_SAME_ADDRESS("SelectedSameAddress"),
+    SELECTED_SAME_CREDIT_CARD("SelectedSameCreditCard"),
+    DISMISSED("Dismissed"),
+    DESTROYED("Destroyed");
+
+    private static final String USER_ACTION_PREFIX = "Autofill.FastCheckout.";
+
+    private final String mAction;
+
+    FastCheckoutUserActions(final String action) {
+        this.mAction = action;
+    }
+
+    String getAction() {
+        return USER_ACTION_PREFIX + mAction;
+    }
+
+    public void log() {
+        RecordUserAction.record(getAction());
+    }
+}
diff --git a/chrome/browser/ui/android/fast_checkout/internal/junit/src/org/chromium/chrome/browser/ui/fast_checkout/FastCheckoutMediatorTest.java b/chrome/browser/ui/android/fast_checkout/internal/junit/src/org/chromium/chrome/browser/ui/fast_checkout/FastCheckoutMediatorTest.java
index df2f26f..83a0a56 100644
--- a/chrome/browser/ui/android/fast_checkout/internal/junit/src/org/chromium/chrome/browser/ui/fast_checkout/FastCheckoutMediatorTest.java
+++ b/chrome/browser/ui/android/fast_checkout/internal/junit/src/org/chromium/chrome/browser/ui/fast_checkout/FastCheckoutMediatorTest.java
@@ -8,6 +8,7 @@
 import static org.hamcrest.Matchers.is;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyBoolean;
 import static org.mockito.ArgumentMatchers.eq;
@@ -36,6 +37,7 @@
 import androidx.appcompat.widget.Toolbar.OnMenuItemClickListener;
 import androidx.recyclerview.widget.RecyclerView;
 
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -44,6 +46,7 @@
 import org.robolectric.annotation.Config;
 
 import org.chromium.base.test.BaseRobolectricTestRunner;
+import org.chromium.base.test.util.UserActionTester;
 import org.chromium.chrome.browser.ui.fast_checkout.FastCheckoutProperties.DetailItemType;
 import org.chromium.chrome.browser.ui.fast_checkout.FastCheckoutProperties.ScreenType;
 import org.chromium.chrome.browser.ui.fast_checkout.data.FastCheckoutAutofillProfile;
@@ -103,15 +106,22 @@
     private BottomSheetController mMockBottomSheetController;
 
     private FastCheckoutMediator mMediator = new FastCheckoutMediator();
+    private UserActionTester mActionTester;
 
     private final PropertyModel mModel = FastCheckoutProperties.createDefaultModel();
 
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
+        mActionTester = new UserActionTester();
         mMediator.initialize(mMockDelegate, mModel, mMockBottomSheetController, 160, 92);
     }
 
+    @After
+    public void tearDown() {
+        mActionTester.tearDown();
+    }
+
     @Test
     public void testCreatesValidDefaultModel() {
         assertThat(mModel.get(VISIBLE), is(false));
@@ -128,6 +138,7 @@
 
         assertNotNull(mModel.get(DETAIL_SCREEN_BACK_CLICK_HANDLER));
         assertThat(mModel.get(DETAIL_SCREEN_BACK_CLICK_HANDLER), instanceOf(Runnable.class));
+        assertActionRecorded(FastCheckoutUserActions.INITIALIZED);
     }
 
     @Test
@@ -164,6 +175,7 @@
 
         mModel.get(DETAIL_SCREEN_BACK_CLICK_HANDLER).run();
         assertThat(mModel.get(CURRENT_SCREEN), is(ScreenType.HOME_SCREEN));
+        assertActionRecorded(FastCheckoutUserActions.NAVIGATED_BACK_HOME);
     }
 
     @Test
@@ -177,6 +189,7 @@
 
         mModel.get(DETAIL_SCREEN_SETTINGS_CLICK_HANDLER).onMenuItemClick(settingsItem);
         verify(mMockDelegate).openAutofillProfileSettings();
+        assertActionRecorded(FastCheckoutUserActions.NAVIGATED_TO_ADDRESSES_SETTINGS_VIA_ICON);
     }
 
     @Test
@@ -190,6 +203,7 @@
 
         mModel.get(DETAIL_SCREEN_SETTINGS_CLICK_HANDLER).onMenuItemClick(settingsItem);
         verify(mMockDelegate).openCreditCardSettings();
+        assertActionRecorded(FastCheckoutUserActions.NAVIGATED_TO_CREDIT_CARDS_SETTINGS_VIA_ICON);
     }
 
     @Test
@@ -365,6 +379,7 @@
         assertThat(mModel.get(SELECTED_PROFILE),
                 is(model.get(AutofillProfileItemProperties.AUTOFILL_PROFILE)));
         assertThat(mModel.get(CURRENT_SCREEN), is(ScreenType.HOME_SCREEN));
+        assertActionRecorded(FastCheckoutUserActions.SELECTED_DIFFERENT_ADDRESS);
     }
 
     @Test
@@ -382,6 +397,7 @@
         assertThat(mModel.get(SELECTED_CREDIT_CARD),
                 is(model.get(CreditCardItemProperties.CREDIT_CARD)));
         assertThat(mModel.get(CURRENT_SCREEN), is(ScreenType.HOME_SCREEN));
+        assertActionRecorded(FastCheckoutUserActions.SELECTED_DIFFERENT_CREDIT_CARD);
     }
 
     @Test
@@ -397,6 +413,7 @@
         PropertyModel model = models.get(DUMMY_PROFILES.length).model;
         model.get(FooterItemProperties.ON_CLICK_HANDLER).run();
         verify(mMockDelegate).openAutofillProfileSettings();
+        assertActionRecorded(FastCheckoutUserActions.NAVIGATED_TO_ADDRESSES_SETTINGS_VIA_FOOTER);
     }
 
     @Test
@@ -412,6 +429,7 @@
         PropertyModel model = models.get(DUMMY_CARDS.length).model;
         model.get(FooterItemProperties.ON_CLICK_HANDLER).run();
         verify(mMockDelegate).openCreditCardSettings();
+        assertActionRecorded(FastCheckoutUserActions.NAVIGATED_TO_CREDIT_CARDS_SETTINGS_VIA_FOOTER);
     }
 
     @Test
@@ -423,6 +441,7 @@
 
         mMediator.destroy();
         assertThat(mModel.get(VISIBLE), is(false));
+        assertActionRecorded(FastCheckoutUserActions.DESTROYED);
     }
 
     @Test
@@ -456,4 +475,8 @@
         assertThat(mModel.get(DETAIL_SCREEN_LIST_HEIGHT_IN_PX),
                 is(FrameLayout.LayoutParams.WRAP_CONTENT));
     }
+
+    private void assertActionRecorded(FastCheckoutUserActions action) {
+        assertTrue(mActionTester.getActions().contains(action.getAction()));
+    }
 }
diff --git a/chrome/browser/ui/android/omnibox/java/res/layout/location_bar_base.xml b/chrome/browser/ui/android/omnibox/java/res/layout/location_bar_base.xml
index a3f227c..0f7e389 100644
--- a/chrome/browser/ui/android/omnibox/java/res/layout/location_bar_base.xml
+++ b/chrome/browser/ui/android/omnibox/java/res/layout/location_bar_base.xml
@@ -11,8 +11,26 @@
 <merge
     xmlns:android="http://schemas.android.com/apk/res/android" >
 
+    <!-- This space will be expanded when the location bar is focused on phone and tablet
+         form factor. Or its width will be expanded when initialized in search widget location
+         bar on phone form factor.
+    -->
+    <Space android:id="@+id/location_bar_status_view_left_space"
+        android:layout_width="0dp"
+        android:layout_height="match_parent"
+        android:focusable="false" />
+
     <include layout="@layout/location_status" />
 
+    <!-- This space will be expanded when the location bar is focused on phone form factor.
+         Or its width will be expanded when initialized in search widget location bar on
+         phone form factor
+    -->
+    <Space android:id="@+id/location_bar_status_view_right_space"
+        android:layout_width="0dp"
+        android:layout_height="match_parent"
+        android:focusable="false" />
+
     <include
         android:layout_width="match_parent"
         android:layout_height="match_parent"
diff --git a/chrome/browser/ui/android/omnibox/java/res/values/dimens.xml b/chrome/browser/ui/android/omnibox/java/res/values/dimens.xml
index dc5f1cf0..e233496 100644
--- a/chrome/browser/ui/android/omnibox/java/res/values/dimens.xml
+++ b/chrome/browser/ui/android/omnibox/java/res/values/dimens.xml
@@ -41,16 +41,20 @@
     <dimen name="location_bar_url_action_offset">-8dp</dimen>
     <dimen name="location_bar_url_action_padding">8dp</dimen>
 
+    <dimen name="location_bar_status_view_left_space_width">8dp</dimen>
+
     <dimen name="tablet_toolbar_start_padding">4dp</dimen>
 
     <!-- Omnibox suggestions -->
-    <dimen name="omnibox_suggestion_header_margin_start">
+    <dimen name="omnibox_suggestion_header_padding_start">
         @dimen/omnibox_suggestion_24dp_icon_margin_start
     </dimen>
-    <dimen name="omnibox_suggestion_header_margin_start_modern">20dp</dimen>
-    <dimen name="omnibox_suggestion_header_margin_top">24dp</dimen>
+    <dimen name="omnibox_suggestion_header_padding_start_modern">20dp</dimen>
+    <dimen name="omnibox_suggestion_header_padding_top">12dp</dimen>
+    <dimen name="omnibox_suggestion_header_padding_bottom">12dp</dimen>
     <dimen name="omnibox_suggestion_header_height">48dp</dimen>
-    <dimen name="omnibox_suggestion_header_height_modern">56dp</dimen>
+    <dimen name="omnibox_suggestion_header_height_modern">44dp</dimen>
+    <dimen name="omnibox_suggestion_header_height_modern_phase2">32dp</dimen>
     <dimen name="omnibox_suggestion_semicompact_height">56dp</dimen>
     <dimen name="omnibox_suggestion_compact_height">48dp</dimen>
     <dimen name="omnibox_suggestion_semicompact_padding">8dp</dimen>
@@ -80,9 +84,10 @@
 
     <dimen name="omnibox_suggestion_bg_elevation">@dimen/default_elevation_0</dimen>
     <dimen name="omnibox_suggestion_bg_round_corner_radius">16dp</dimen>
-    <dimen name="omnibox_suggestion_bg_rectangle_corner_radius">0dp</dimen>
-    <dimen name="omnibox_suggestion_vertical_spacing">2dp</dimen>
+    <dimen name="omnibox_suggestion_bg_rectangle_corner_radius">2dp</dimen>
+    <dimen name="omnibox_suggestion_vertical_margin">2dp</dimen>
     <dimen name="omnibox_suggestion_side_spacing">16dp</dimen>
+    <dimen name="omnibox_suggestion_group_vertical_margin">12dp</dimen>
 
     <dimen name="omnibox_suggestion_dropdown_bg_elevation">@dimen/default_elevation_1</dimen>
 
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarDataProvider.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarDataProvider.java
index 7e28cdf7..5ffa61f 100644
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarDataProvider.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarDataProvider.java
@@ -120,9 +120,10 @@
      * Returns the current page classification.
      *
      * @param isFocusedFromFakebox If the omnibox focus originated from the fakebox.
+     * @param isPrefetch If the page classification for prefetching is requested.
      * @return Integer value representing the {@code OmniboxEventProto.PageClassification}.
      */
-    int getPageClassification(boolean isFocusedFromFakebox);
+    int getPageClassification(boolean isFocusedFromFakebox, boolean isPrefetch);
 
     /**
      * Returns the resource ID of the icon that should be displayed or 0 if no icon should be shown.
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarLayout.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarLayout.java
index db394ed..a6237d473 100644
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarLayout.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarLayout.java
@@ -41,6 +41,8 @@
     protected ImageButton mMicButton;
     protected ImageButton mLensButton;
     protected UrlBar mUrlBar;
+    protected View mStatusViewLeftSpace;
+    protected View mStatusViewRightSpace;
 
     protected UrlBarCoordinator mUrlCoordinator;
     protected AutocompleteCoordinator mAutocompleteCoordinator;
@@ -73,6 +75,8 @@
         mMicButton = findViewById(R.id.mic_button);
         mLensButton = findViewById(R.id.lens_camera_button);
         mUrlActionContainer = (LinearLayout) findViewById(R.id.url_action_container);
+        mStatusViewLeftSpace = findViewById(R.id.location_bar_status_view_left_space);
+        mStatusViewRightSpace = findViewById(R.id.location_bar_status_view_right_space);
     }
 
     /**
@@ -307,5 +311,50 @@
                 - getResources().getDimensionPixelSize(R.dimen.location_bar_icon_end_padding);
     }
 
+    /**
+     * Set the url focus change percent, expand the left and right space besides the status view.
+     *
+     * @param percent The current focus percent.
+     */
+    public void setUrlFocusChangePercent(float percent) {
+        setStatusViewLeftSpacePercent(percent);
+        setStatusViewRightSpacePrecent(percent);
+    }
+
+    /**
+     * Set the status view's left space's width based on current animation progress percent.
+     *
+     * @param percent The animation progress percent.
+     */
+    public void setStatusViewLeftSpacePercent(float percent) {
+        if (!OmniboxFeatures.shouldShowModernizeVisualUpdate(getContext())) {
+            return;
+        }
+
+        // Set the left space expansion width.
+        ViewGroup.LayoutParams leftSpacingParams = mStatusViewLeftSpace.getLayoutParams();
+        leftSpacingParams.width = (int) (getResources().getDimensionPixelSize(
+                                                 R.dimen.location_bar_status_view_left_space_width)
+                * percent);
+        mStatusViewLeftSpace.setLayoutParams(leftSpacingParams);
+    }
+
+    /**
+     * Set the status view's right space's width based on current animation progress percent.
+     *
+     * @param percent The animation progress percent.
+     */
+    public void setStatusViewRightSpacePrecent(float percent) {
+        // Status view's right space does not need to expand for tablets.
+        if (DeviceFormFactor.isNonMultiDisplayContextOnTablet(getContext())) {
+            return;
+        }
+
+        // Set the right space expansion width.
+        ViewGroup.LayoutParams rightSpacingParams = mStatusViewRightSpace.getLayoutParams();
+        rightSpacingParams.width = (int) (getEndPaddingPixelSizeOnFocusDelta() * percent);
+        mStatusViewRightSpace.setLayoutParams(rightSpacingParams);
+    }
+
     public void notifyVoiceRecognitionCanceled() {}
 }
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java
index e3c79ff..9a58a57 100644
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java
@@ -362,6 +362,8 @@
                 mLocationBarLayout.setUrlActionContainerVisibility(View.GONE);
             }
 
+            // Add expansion animation for the space besides status view in location bar.
+            mLocationBarLayout.setUrlFocusChangePercent(fraction);
             mStatusCoordinator.setUrlFocusChangePercent(fraction);
         }
     }
@@ -1073,7 +1075,7 @@
         // This widget must guarantee consistent feature set regardless of search engine choice or
         // other aspects that may not be met by Lens.
         LocationBarDataProvider dataProvider = getLocationBarDataProvider();
-        if (dataProvider.getPageClassification(dataProvider.isIncognito())
+        if (dataProvider.getPageClassification(dataProvider.isIncognito(), /*isPrefetch=*/false)
                 == PageClassification.ANDROID_SEARCH_WIDGET_VALUE) {
             return false;
         }
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteController.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteController.java
index 93c2a60..8252a836 100644
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteController.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteController.java
@@ -105,12 +105,14 @@
 
     /**
      * Issue a prefetch request for zero prefix suggestions.
-     *
      * Prefetch is a fire-and-forget operation that yields no results.
+     *
+     * @param url The URL of the current tab, used to suggest query refinements.
+     * @param pageClassification The page classification of the current tab.
      */
-    void startPrefetch() {
+    void startPrefetch(@NonNull String url, int pageClassification) {
         if (mNativeController == 0) return;
-        AutocompleteControllerJni.get().startPrefetch(mNativeController);
+        AutocompleteControllerJni.get().startPrefetch(mNativeController, url, pageClassification);
     }
 
     /**
@@ -375,7 +377,8 @@
         /**
          * Sends a zero suggest request to the server in order to pre-populate the result cache.
          */
-        void startPrefetch(long nativeAutocompleteControllerAndroid);
+        void startPrefetch(long nativeAutocompleteControllerAndroid, String currentUrl,
+                int pageClassification);
 
         /**
          * Acquire an instance of AutocompleteController associated with the supplied profile.
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java
index b9517b3f..5311bdd5 100644
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java
@@ -316,7 +316,8 @@
             // suggestion would take the user to the DSE home page.
             // This is tracked by MobileStartup.LaunchCause / EXTERNAL_SEARCH_ACTION_INTENT
             // metric.
-            if (mDataProvider.getPageClassification(false)
+            if (mDataProvider.getPageClassification(
+                        /*isFocusedFromFakebox=*/false, /*isPrefetch=*/false)
                     != PageClassification.ANDROID_SEARCH_WIDGET_VALUE) {
                 postAutocompleteRequest(this::startZeroSuggest, SCHEDULE_FOR_IMMEDIATE_EXECUTION);
             } else {
@@ -330,7 +331,8 @@
                     mOmniboxFocusResultedInNavigation);
             SuggestionsMetrics.recordRefineActionUsage(mRefineActionUsage);
             SuggestionsMetrics.recordSuggestionsListScrolled(
-                    mDataProvider.getPageClassification(mDelegate.didFocusUrlFromFakebox()),
+                    mDataProvider.getPageClassification(
+                            mDelegate.didFocusUrlFromFakebox(), /*isPrefetch=*/false),
                     mSuggestionsListScrolled);
 
             setSuggestionVisibilityState(SuggestionVisibilityState.DISALLOWED);
@@ -683,8 +685,8 @@
                                 == mUrlBarEditingTextProvider.getSelectionEnd()
                         ? mUrlBarEditingTextProvider.getSelectionStart()
                         : -1;
-                int pageClassification =
-                        mDataProvider.getPageClassification(mDelegate.didFocusUrlFromFakebox());
+                int pageClassification = mDataProvider.getPageClassification(
+                        mDelegate.didFocusUrlFromFakebox(), /*isPrefetch=*/false);
                 String currentUrl = mDataProvider.getCurrentUrl();
 
                 postAutocompleteRequest(() -> {
@@ -872,8 +874,11 @@
      * Sends a zero suggest request to the server in order to pre-populate the result cache.
      */
     /* package */ void startPrefetch() {
-        postAutocompleteRequest(
-                () -> mAutocomplete.startPrefetch(), SCHEDULE_FOR_IMMEDIATE_EXECUTION);
+        int pageClassification = mDataProvider.getPageClassification(
+                /*isFocusedFromFakebox=*/false, /*isPrefetch=*/true);
+        postAutocompleteRequest(() -> {
+            mAutocomplete.startPrefetch(mDataProvider.getCurrentUrl(), pageClassification);
+        }, SCHEDULE_FOR_IMMEDIATE_EXECUTION);
     }
 
     /**
@@ -892,8 +897,8 @@
 
         if (mDelegate.isUrlBarFocused()
                 && (mDataProvider.hasTab() || mDataProvider.isInOverviewAndShowingOmnibox())) {
-            int pageClassification =
-                    mDataProvider.getPageClassification(mDelegate.didFocusUrlFromFakebox());
+            int pageClassification = mDataProvider.getPageClassification(
+                    mDelegate.didFocusUrlFromFakebox(), /*isPrefetch=*/false);
             mShouldCacheSuggestions =
                     pageClassification == PageClassification.ANDROID_SEARCH_WIDGET_VALUE;
             mAutocomplete.startZeroSuggest(mUrlBarEditingTextProvider.getTextWithAutocomplete(),
@@ -953,7 +958,9 @@
         stopAutocomplete(false);
         if (mDataProvider.hasTab()) {
             mAutocomplete.start(mDataProvider.getCurrentUrl(),
-                    mDataProvider.getPageClassification(false), query, -1, false);
+                    mDataProvider.getPageClassification(
+                            /*isFocusedFromFakebox=*/false, /*isPrefetch=*/false),
+                    query, -1, false);
         }
     }
 
@@ -999,8 +1006,8 @@
         if (mAutocompleteResult.isFromCachedResult()) return;
 
         String currentPageUrl = mDataProvider.getCurrentUrl();
-        int pageClassification =
-                mDataProvider.getPageClassification(mDelegate.didFocusUrlFromFakebox());
+        int pageClassification = mDataProvider.getPageClassification(
+                mDelegate.didFocusUrlFromFakebox(), /*isPrefetch=*/false);
         long elapsedTimeSinceModified = getElapsedTimeSinceInputChange();
         int autocompleteLength = mUrlBarEditingTextProvider.getTextWithAutocomplete().length()
                 - mUrlBarEditingTextProvider.getTextWithoutAutocomplete().length();
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediatorUnitTest.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediatorUnitTest.java
index 3fb1946a..b8f36ea8 100644
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediatorUnitTest.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediatorUnitTest.java
@@ -202,7 +202,8 @@
         when(mLocationBarDataProvider.hasTab()).thenReturn(true);
         when(mLocationBarDataProvider.getCurrentUrl()).thenReturn(url);
         when(mLocationBarDataProvider.getTitle()).thenReturn(title);
-        when(mLocationBarDataProvider.getPageClassification(false)).thenReturn(pageClassification);
+        when(mLocationBarDataProvider.getPageClassification(false, false))
+                .thenReturn(pageClassification);
     }
 
     @Test
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/CachedZeroSuggestionsManager.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/CachedZeroSuggestionsManager.java
index 9161105..b3b8054 100644
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/CachedZeroSuggestionsManager.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/CachedZeroSuggestionsManager.java
@@ -34,7 +34,7 @@
 import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
 import org.chromium.components.omnibox.AutocompleteMatch;
 import org.chromium.components.omnibox.AutocompleteResult;
-import org.chromium.components.omnibox.AutocompleteResult.GroupDetails;
+import org.chromium.components.omnibox.GroupsProto.GroupConfig;
 import org.chromium.url.GURL;
 
 import java.util.ArrayList;
@@ -63,7 +63,7 @@
         final SharedPreferencesManager manager = SharedPreferencesManager.getInstance();
         List<AutocompleteMatch> suggestions =
                 CachedZeroSuggestionsManager.readCachedSuggestionList(manager);
-        SparseArray<GroupDetails> groupsDetails =
+        SparseArray<GroupConfig> groupsDetails =
                 CachedZeroSuggestionsManager.readCachedGroupsDetails(manager);
         removeInvalidSuggestionsAndGroupsDetails(suggestions, groupsDetails);
         return AutocompleteResult.fromCache(suggestions, groupsDetails);
@@ -193,16 +193,16 @@
      * Cache suggestion group details in shared preferences.
      *
      * @param prefs Shared preferences manager.
-     * @param groupsDetails Map of Group ID to GroupDetails.
+     * @param groupsDetails Map of Group ID to GroupConfig.
      */
     private static void cacheGroupsDetails(
-            SharedPreferencesManager prefs, SparseArray<GroupDetails> groupsDetails) {
+            SharedPreferencesManager prefs, SparseArray<GroupConfig> groupsDetails) {
         final int size = groupsDetails.size();
         prefs.writeInt(ChromePreferenceKeys.KEY_ZERO_SUGGEST_HEADER_LIST_SIZE, size);
         for (int i = 0; i < size; i++) {
-            final GroupDetails details = groupsDetails.valueAt(i);
-            String title = details.title;
-            boolean collapsedByDefault = details.collapsedByDefault;
+            final GroupConfig details = groupsDetails.valueAt(i);
+            String title = details.getHeaderText();
+            boolean collapsedByDefault = details.getVisibility() == GroupConfig.Visibility.HIDDEN;
 
             prefs.writeInt(
                     KEY_ZERO_SUGGEST_HEADER_GROUP_ID_PREFIX.createKey(i), groupsDetails.keyAt(i));
@@ -217,13 +217,13 @@
      * Restore group details from shared preferences.
      *
      * @param prefs Shared preferences manager.
-     * @return Map of group ID to GroupDetails previously cached in shared preferences.
+     * @return Map of group ID to GroupConfig previously cached in shared preferences.
      */
     @NonNull
     @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
-    static SparseArray<GroupDetails> readCachedGroupsDetails(SharedPreferencesManager prefs) {
+    static SparseArray<GroupConfig> readCachedGroupsDetails(SharedPreferencesManager prefs) {
         final int size = prefs.readInt(ChromePreferenceKeys.KEY_ZERO_SUGGEST_HEADER_LIST_SIZE, 0);
-        final SparseArray<GroupDetails> groupsDetails = new SparseArray<>(size);
+        final SparseArray<GroupConfig> groupsDetails = new SparseArray<>(size);
 
         for (int i = 0; i < size; i++) {
             int groupId = prefs.readInt(KEY_ZERO_SUGGEST_HEADER_GROUP_ID_PREFIX.createKey(i),
@@ -233,7 +233,19 @@
             boolean collapsedByDefault = prefs.readBoolean(
                     KEY_ZERO_SUGGEST_HEADER_GROUP_COLLAPSED_BY_DEFAULT_PREFIX.createKey(i), false);
 
-            groupsDetails.put(groupId, new GroupDetails(groupTitle, collapsedByDefault));
+            if (groupTitle == null) {
+                // Group definition incomplete.
+                // Note that an empty string is a valid group title.
+                continue;
+            }
+
+            groupsDetails.put(groupId,
+                    GroupConfig.newBuilder()
+                            .setHeaderText(groupTitle)
+                            .setVisibility(collapsedByDefault
+                                            ? GroupConfig.Visibility.HIDDEN
+                                            : GroupConfig.Visibility.DEFAULT_VISIBLE)
+                            .build());
         }
         return groupsDetails;
     }
@@ -242,15 +254,15 @@
      * Remove all invalid entries for group details map and omnibox suggestions list.
      *
      * @param suggestions List of suggestions to scan for invalid entries.
-     * @param groupsDetails Map of GroupDetails to scan for invalid entries.
+     * @param groupsDetails Map of GroupConfig to scan for invalid entries.
      */
     @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
     static void removeInvalidSuggestionsAndGroupsDetails(
-            List<AutocompleteMatch> suggestions, SparseArray<GroupDetails> groupsDetails) {
-        // Remove all group details that have invalid index or title.
+            List<AutocompleteMatch> suggestions, SparseArray<GroupConfig> groupsDetails) {
+        // Remove all group details that have invalid index.
+        // Note that the missing title is OK: groups do not need to have one.
         for (int index = groupsDetails.size() - 1; index >= 0; index--) {
-            if (groupsDetails.keyAt(index) == AutocompleteMatch.INVALID_GROUP
-                    || TextUtils.isEmpty(groupsDetails.valueAt(index).title)) {
+            if (groupsDetails.keyAt(index) == AutocompleteMatch.INVALID_GROUP) {
                 groupsDetails.removeAt(index);
             }
         }
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/CachedZeroSuggestionsManagerUnitTest.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/CachedZeroSuggestionsManagerUnitTest.java
index 6457f72..fccdb44 100644
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/CachedZeroSuggestionsManagerUnitTest.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/CachedZeroSuggestionsManagerUnitTest.java
@@ -22,7 +22,7 @@
 import org.chromium.components.omnibox.AutocompleteMatch;
 import org.chromium.components.omnibox.AutocompleteMatchBuilder;
 import org.chromium.components.omnibox.AutocompleteResult;
-import org.chromium.components.omnibox.AutocompleteResult.GroupDetails;
+import org.chromium.components.omnibox.GroupsProto.GroupConfig;
 import org.chromium.url.JUnitTestGURLs;
 import org.chromium.url.ShadowGURL;
 
@@ -46,8 +46,8 @@
         final List<AutocompleteMatch> list2 = data2.getSuggestionsList();
         Assert.assertEquals(list1, list2);
 
-        final SparseArray<GroupDetails> groupsDetails1 = data1.getGroupsDetails();
-        final SparseArray<GroupDetails> groupsDetails2 = data2.getGroupsDetails();
+        final SparseArray<GroupConfig> groupsDetails1 = data1.getGroupsDetails();
+        final SparseArray<GroupConfig> groupsDetails2 = data2.getGroupsDetails();
         Assert.assertEquals(groupsDetails1.size(), groupsDetails2.size());
         for (int index = 0; index < groupsDetails1.size(); index++) {
             Assert.assertEquals(groupsDetails1.keyAt(index), groupsDetails2.keyAt(index));
@@ -100,6 +100,21 @@
                 .setDescription("dummy description " + id);
     }
 
+    /**
+     * Create a simple GroupConfig instance with supplied text and visibility.
+     *
+     * @param headerText The header text to apply to group config.
+     * @param isHidden Whether the newly built group is default-collapsed.
+     * @return Newly constructed GroupConfig.
+     */
+    private GroupConfig buildGroupConfig(String headerText, boolean isHidden) {
+        return GroupConfig.newBuilder()
+                .setHeaderText(headerText)
+                .setVisibility(isHidden ? GroupConfig.Visibility.HIDDEN
+                                        : GroupConfig.Visibility.DEFAULT_VISIBLE)
+                .build();
+    }
+
     @Test
     @SmallTest
     public void setNewSuggestions_cachedSuggestionsWithPostdataBeforeAndAfterAreSame() {
@@ -152,11 +167,11 @@
 
     @Test
     @SmallTest
-    public void groupsDetails_cacheAllSaneGroupDetails() {
-        SparseArray<GroupDetails> groupsDetails = new SparseArray<>();
-        groupsDetails.put(10, new GroupDetails("Header For Group 10", false));
-        groupsDetails.put(20, new GroupDetails("Header For Group 20", false));
-        groupsDetails.put(30, new GroupDetails("Header For Group 30", false));
+    public void groupsDetails_cacheAllSaneGroupConfig() {
+        SparseArray<GroupConfig> groupsDetails = new SparseArray<>();
+        groupsDetails.put(10, buildGroupConfig("Header For Group 10", false));
+        groupsDetails.put(20, buildGroupConfig("Header For Group 20", false));
+        groupsDetails.put(30, buildGroupConfig("Header For Group 30", false));
         AutocompleteResult dataToCache = AutocompleteResult.fromCache(null, groupsDetails);
         CachedZeroSuggestionsManager.saveToCache(dataToCache);
         AutocompleteResult dataFromCache = CachedZeroSuggestionsManager.readFromCache();
@@ -165,35 +180,30 @@
 
     @Test
     @SmallTest
-    public void groupsDetails_cachePartiallySaneGroupDetailsDropsInvalidEntries() {
-        SparseArray<GroupDetails> groupsDetails = new SparseArray<>();
-        groupsDetails.put(10, new GroupDetails("Header For Group 10", false));
-        groupsDetails.put(
-                AutocompleteMatch.INVALID_GROUP, new GroupDetails("Header For Group 20", true));
-        groupsDetails.put(30, new GroupDetails("", false));
-
-        AutocompleteResult dataToCache = AutocompleteResult.fromCache(null, groupsDetails);
-        CachedZeroSuggestionsManager.saveToCache(dataToCache);
-        AutocompleteResult dataFromCache = CachedZeroSuggestionsManager.readFromCache();
-
-        SparseArray<GroupDetails> validGroupsDetails = new SparseArray<>();
-        validGroupsDetails.put(10, new GroupDetails("Header For Group 10", false));
-        assertAutocompleteResultEquals(
-                dataFromCache, AutocompleteResult.fromCache(null, validGroupsDetails));
-    }
-
-    @Test
-    @SmallTest
     public void groupsDetails_restoreInvalidGroupsDetailsFromCache() {
-        SparseArray<GroupDetails> groupsDetails = new SparseArray<>();
+        SparseArray<GroupConfig> groupsDetails = new SparseArray<>();
         groupsDetails.put(
-                AutocompleteMatch.INVALID_GROUP, new GroupDetails("This group is invalid", true));
-        groupsDetails.put(20, new GroupDetails("", false));
-        groupsDetails.put(30, new GroupDetails("", false));
+                AutocompleteMatch.INVALID_GROUP, buildGroupConfig("This group is invalid", true));
+        groupsDetails.put(20, buildGroupConfig("Test", false));
+        groupsDetails.put(30, buildGroupConfig("", false));
 
+        // Write to disk.
         AutocompleteResult dataToCache = AutocompleteResult.fromCache(null, groupsDetails);
         CachedZeroSuggestionsManager.saveToCache(dataToCache);
+
+        // Check that it works the first time (group details are correct).
+        // Only the INVALID_GROUP should be removed.
         AutocompleteResult dataFromCache = CachedZeroSuggestionsManager.readFromCache();
+        Assert.assertEquals(2, dataFromCache.getGroupsDetails().size());
+
+        // Partially remove data, rendering details invalid - check it no longer works.
+        final SharedPreferencesManager manager = SharedPreferencesManager.getInstance();
+        manager.removeKey(
+                ChromePreferenceKeys.KEY_ZERO_SUGGEST_HEADER_GROUP_TITLE_PREFIX.createKey(1));
+        manager.removeKey(
+                ChromePreferenceKeys.KEY_ZERO_SUGGEST_HEADER_GROUP_TITLE_PREFIX.createKey(2));
+
+        dataFromCache = CachedZeroSuggestionsManager.readFromCache();
         assertAutocompleteResultEquals(dataFromCache, AutocompleteResult.EMPTY_RESULT);
     }
 
@@ -202,8 +212,8 @@
     public void dropSuggestions_suggestionsWithValidGroupsAssociation() {
         List<AutocompleteMatch> list = buildDummySuggestionsList(2, false);
         list.add(createSuggestionBuilder(33).setGroupId(1).build());
-        SparseArray<GroupDetails> groupsDetails = new SparseArray<>();
-        groupsDetails.put(1, new GroupDetails("Valid Header", true));
+        SparseArray<GroupConfig> groupsDetails = new SparseArray<>();
+        groupsDetails.put(1, buildGroupConfig("Valid Header", true));
 
         AutocompleteResult dataToCache = AutocompleteResult.fromCache(list, groupsDetails);
         CachedZeroSuggestionsManager.saveToCache(dataToCache);
@@ -262,17 +272,17 @@
 
     @Test
     @SmallTest
-    public void malformedCache_dropsMissingGroupDetails() {
+    public void malformedCache_dropsMissingGroupConfig() {
         // Clear cache explicitly, otherwise this test will be flaky until the suite is re-executed.
         ContextUtils.getAppSharedPreferences().edit().clear().apply();
 
         final SharedPreferencesManager manager = SharedPreferencesManager.getInstance();
 
         // Write 3 wrong group groupsDetails to the cache
-        SparseArray<GroupDetails> groupsDetails = new SparseArray<>();
-        groupsDetails.put(12, new GroupDetails("Valid group", true));
-        groupsDetails.put(34, new GroupDetails("", false));
-        groupsDetails.put(AutocompleteMatch.INVALID_GROUP, new GroupDetails("Invalid group", true));
+        SparseArray<GroupConfig> groupsDetails = new SparseArray<>();
+        groupsDetails.put(12, buildGroupConfig("Valid group", true));
+        groupsDetails.put(34, buildGroupConfig("", false));
+        groupsDetails.put(AutocompleteMatch.INVALID_GROUP, buildGroupConfig("Invalid group", true));
         AutocompleteResult invalidDataToCache = AutocompleteResult.fromCache(null, groupsDetails);
         CachedZeroSuggestionsManager.saveToCache(invalidDataToCache);
 
@@ -282,20 +292,24 @@
         // Read raw suggestions from the cache. Note that the sparse array will only have 3 elements
         // because we put one item with INVALID_GROUP, and additional INVALID_GROUP will be deduced
         // from missing data with null title and default expanded state set to true.
-        SparseArray<GroupDetails> rawGroupsDetails =
+        SparseArray<GroupConfig> rawGroupsDetails =
                 CachedZeroSuggestionsManager.readCachedGroupsDetails(manager);
         Assert.assertEquals(3, rawGroupsDetails.size());
-        Assert.assertEquals(rawGroupsDetails.get(12).title, "Valid group");
-        Assert.assertEquals(rawGroupsDetails.get(12).collapsedByDefault, true);
-        Assert.assertEquals(rawGroupsDetails.get(34).title, "");
-        Assert.assertEquals(rawGroupsDetails.get(34).collapsedByDefault, false);
-        Assert.assertEquals(rawGroupsDetails.get(AutocompleteMatch.INVALID_GROUP).title, null);
+        Assert.assertEquals(rawGroupsDetails.get(12).getHeaderText(), "Valid group");
         Assert.assertEquals(
-                rawGroupsDetails.get(AutocompleteMatch.INVALID_GROUP).collapsedByDefault, false);
+                rawGroupsDetails.get(12).getVisibility(), GroupConfig.Visibility.HIDDEN);
+        Assert.assertEquals(rawGroupsDetails.get(34).getHeaderText(), "");
+        Assert.assertEquals(
+                rawGroupsDetails.get(34).getVisibility(), GroupConfig.Visibility.DEFAULT_VISIBLE);
+        Assert.assertEquals(rawGroupsDetails.get(AutocompleteMatch.INVALID_GROUP).getHeaderText(),
+                "Invalid group");
+        Assert.assertEquals(rawGroupsDetails.get(AutocompleteMatch.INVALID_GROUP).getVisibility(),
+                GroupConfig.Visibility.HIDDEN);
 
         // Cache recovery however should be smart here and remove items that make no sense.
-        SparseArray<GroupDetails> wantGroupsDetails = new SparseArray<>();
-        wantGroupsDetails.put(12, new GroupDetails("Valid group", true));
+        SparseArray<GroupConfig> wantGroupsDetails = new SparseArray<>();
+        wantGroupsDetails.put(12, buildGroupConfig("Valid group", true));
+        wantGroupsDetails.put(34, buildGroupConfig("", false));
         AutocompleteResult wantDataFromCache =
                 AutocompleteResult.fromCache(null, wantGroupsDetails);
         AutocompleteResult dataFromCache = CachedZeroSuggestionsManager.readFromCache();
@@ -307,14 +321,13 @@
     @SmallTest
     public void removeInvalidSuggestions_dropsInvalidSuggestionsAndGroupsDetails() {
         // Write 3 wrong group groupsDetails to the cache
-        SparseArray<GroupDetails> groupsDetailsExpected = new SparseArray<>();
-        groupsDetailsExpected.put(12, new GroupDetails("Valid group", true));
+        SparseArray<GroupConfig> groupsDetailsExpected = new SparseArray<>();
+        groupsDetailsExpected.put(12, buildGroupConfig("Valid group", true));
 
-        SparseArray<GroupDetails> groupsDetailsWithInvalidItems = new SparseArray<>();
-        groupsDetailsWithInvalidItems.put(12, new GroupDetails("Valid group", true));
-        groupsDetailsWithInvalidItems.put(34, new GroupDetails("", false));
+        SparseArray<GroupConfig> groupsDetailsWithInvalidItems = new SparseArray<>();
+        groupsDetailsWithInvalidItems.put(12, buildGroupConfig("Valid group", true));
         groupsDetailsWithInvalidItems.put(
-                AutocompleteMatch.INVALID_GROUP, new GroupDetails("Invalid group", true));
+                AutocompleteMatch.INVALID_GROUP, buildGroupConfig("Invalid group", true));
 
         List<AutocompleteMatch> listExpected = buildDummySuggestionsList(2, false);
         listExpected.add(createSuggestionBuilder(72).setGroupId(12).build());
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownCommonProperties.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownCommonProperties.java
index efce14bc..196e0dd 100644
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownCommonProperties.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownCommonProperties.java
@@ -6,6 +6,7 @@
 
 import org.chromium.ui.modelutil.PropertyKey;
 import org.chromium.ui.modelutil.PropertyModel.WritableBooleanPropertyKey;
+import org.chromium.ui.modelutil.PropertyModel.WritableIntPropertyKey;
 
 /**
  * The set of common properties associated with dropdown suggestions.
@@ -17,7 +18,11 @@
     /** Whether the suggestion background's bottom corners should be rounded. */
     public static final WritableBooleanPropertyKey BG_BOTTOM_CORNER_ROUNDED =
             new WritableBooleanPropertyKey();
+    /** The top margin of the suggestion. */
+    public static final WritableIntPropertyKey TOP_MARGIN = new WritableIntPropertyKey();
+    /** The bottom margin of the suggestion. */
+    public static final WritableIntPropertyKey BOTTOM_MARGIN = new WritableIntPropertyKey();
 
-    public static final PropertyKey[] ALL_KEYS =
-            new PropertyKey[] {BG_TOP_CORNER_ROUNDED, BG_BOTTOM_CORNER_ROUNDED};
+    public static final PropertyKey[] ALL_KEYS = new PropertyKey[] {
+            BG_TOP_CORNER_ROUNDED, BG_BOTTOM_CORNER_ROUNDED, TOP_MARGIN, BOTTOM_MARGIN};
 }
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilder.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilder.java
index 2cc3f15c..83f6684a 100644
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilder.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilder.java
@@ -38,7 +38,7 @@
 import org.chromium.components.image_fetcher.ImageFetcherFactory;
 import org.chromium.components.omnibox.AutocompleteMatch;
 import org.chromium.components.omnibox.AutocompleteResult;
-import org.chromium.components.omnibox.AutocompleteResult.GroupDetails;
+import org.chromium.components.omnibox.GroupsProto.GroupConfig;
 import org.chromium.ui.modelutil.PropertyModel;
 
 import java.util.ArrayList;
@@ -308,16 +308,15 @@
             // determines rounding boundaries of suggestion group.
             if (currentGroup != suggestion.getGroupId()) {
                 currentGroup = suggestion.getGroupId();
-                final GroupDetails details =
-                        autocompleteResult.getGroupsDetails().get(currentGroup);
+                final GroupConfig details = autocompleteResult.getGroupsDetails().get(currentGroup);
 
                 // Only add the Header Group when both ID and details are specified.
                 // Note that despite GroupsDetails map not holding <null> values,
                 // a group definition for specific ID may be unavailable, or the group
                 // header text may be empty.
-                if (details != null && !TextUtils.isEmpty(details.title)) {
+                if (details != null && !TextUtils.isEmpty(details.getHeaderText())) {
                     final PropertyModel model = mHeaderProcessor.createModel();
-                    mHeaderProcessor.populateModel(model, currentGroup, details.title);
+                    mHeaderProcessor.populateModel(model, currentGroup, details.getHeaderText());
                     viewInfoList.add(
                             new DropdownItemViewInfo(mHeaderProcessor, model, currentGroup));
                 }
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilderUnitTest.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilderUnitTest.java
index 26850bc..592d448 100644
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilderUnitTest.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilderUnitTest.java
@@ -40,7 +40,7 @@
 import org.chromium.components.omnibox.AutocompleteMatch;
 import org.chromium.components.omnibox.AutocompleteMatchBuilder;
 import org.chromium.components.omnibox.AutocompleteResult;
-import org.chromium.components.omnibox.AutocompleteResult.GroupDetails;
+import org.chromium.components.omnibox.GroupsProto.GroupConfig;
 import org.chromium.ui.modelutil.PropertyModel;
 import org.chromium.url.ShadowGURL;
 
@@ -96,12 +96,27 @@
         }
     }
 
+    /**
+     * Create a simple GroupConfig instance with supplied text and visibility.
+     *
+     * @param headerText The header text to apply to group config.
+     * @param isHidden Whether the newly built group is default-collapsed.
+     * @return Newly constructed GroupConfig.
+     */
+    private GroupConfig buildGroupConfig(String headerText, boolean isHidden) {
+        return GroupConfig.newBuilder()
+                .setHeaderText(headerText)
+                .setVisibility(isHidden ? GroupConfig.Visibility.HIDDEN
+                                        : GroupConfig.Visibility.DEFAULT_VISIBLE)
+                .build();
+    }
+
     @Test
     @SmallTest
     public void headers_buildsHeaderForFirstSuggestion() {
         final List<AutocompleteMatch> actualList = new ArrayList<>();
-        final SparseArray<GroupDetails> groupsDetails = new SparseArray<>();
-        groupsDetails.put(1, new GroupDetails("Header 1", false));
+        final SparseArray<GroupConfig> groupsDetails = new SparseArray<>();
+        groupsDetails.put(1, buildGroupConfig("Header 1", false));
         when(mMockSuggestionProcessor.doesProcessSuggestion(any(), anyInt())).thenReturn(true);
 
         AutocompleteMatch suggestion =
@@ -138,9 +153,9 @@
     @SmallTest
     public void headers_buildsHeadersOnlyWhenGroupChanges() {
         final List<AutocompleteMatch> actualList = new ArrayList<>();
-        final SparseArray<GroupDetails> groupsDetails = new SparseArray<>();
-        groupsDetails.put(1, new GroupDetails("Header 1", false));
-        groupsDetails.put(2, new GroupDetails("Header 2", false));
+        final SparseArray<GroupConfig> groupsDetails = new SparseArray<>();
+        groupsDetails.put(1, buildGroupConfig("Header 1", false));
+        groupsDetails.put(2, buildGroupConfig("Header 2", false));
 
         when(mMockSuggestionProcessor.doesProcessSuggestion(any(), anyInt())).thenReturn(true);
         AutocompleteMatch suggestionWithNoGroup =
@@ -199,11 +214,11 @@
 
     @Test
     @SmallTest
-    public void headers_ignoreGroupHeadersWithNoTitle() {
+    public void headers_respectGroupHeadersWithNoTitle() {
         final List<AutocompleteMatch> actualList = new ArrayList<>();
-        final SparseArray<GroupDetails> groupsDetails = new SparseArray<>();
-        groupsDetails.put(1, new GroupDetails(null, false));
-        groupsDetails.put(2, new GroupDetails("Header 2", false));
+        final SparseArray<GroupConfig> groupsDetails = new SparseArray<>();
+        groupsDetails.put(1, buildGroupConfig("", false));
+        groupsDetails.put(2, buildGroupConfig("Header 2", false));
 
         when(mMockSuggestionProcessor.doesProcessSuggestion(any(), anyInt())).thenReturn(true);
         AutocompleteMatch suggestionWithNoGroup =
@@ -498,8 +513,8 @@
         mBuilder.setDividerLineProcessorForTest(mMockDividerLineProcessor);
 
         final List<AutocompleteMatch> actualList = new ArrayList<>();
-        final SparseArray<GroupDetails> groupsDetails = new SparseArray<>();
-        groupsDetails.put(1, new GroupDetails("Header 1", false));
+        final SparseArray<GroupConfig> groupsDetails = new SparseArray<>();
+        groupsDetails.put(1, buildGroupConfig("Header 1", false));
         when(mMockSuggestionProcessor.doesProcessSuggestion(any(), anyInt())).thenReturn(true);
 
         AutocompleteMatch suggestion =
@@ -532,7 +547,7 @@
         mBuilder.setDividerLineProcessorForTest(mMockDividerLineProcessor);
 
         final List<AutocompleteMatch> actualList = new ArrayList<>();
-        final SparseArray<GroupDetails> groupsDetails = new SparseArray<>();
+        final SparseArray<GroupConfig> groupsDetails = new SparseArray<>();
 
         final List<DropdownItemViewInfo> infoList = mBuilder.buildDropdownViewInfoList(
                 AutocompleteResult.fromCache(actualList, groupsDetails));
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListManager.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListManager.java
index 57f7e11c..49c9be83 100644
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListManager.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListManager.java
@@ -12,8 +12,9 @@
 import androidx.annotation.NonNull;
 
 import org.chromium.chrome.browser.omnibox.OmniboxFeatures;
+import org.chromium.chrome.browser.omnibox.R;
 import org.chromium.chrome.browser.ui.theme.BrandedColorScheme;
-import org.chromium.components.omnibox.AutocompleteResult;
+import org.chromium.components.omnibox.GroupsProto.GroupConfig;
 import org.chromium.ui.base.DeviceFormFactor;
 import org.chromium.ui.modelutil.MVCListAdapter.ListItem;
 import org.chromium.ui.modelutil.MVCListAdapter.ModelList;
@@ -110,17 +111,17 @@
      * Specify the input list of DropdownItemViewInfo elements.
      *
      * @param sourceList Source list of ViewInfo elements.
-     * @param groupsDetails Group ID to GroupDetails map carrying group collapsed state information.
+     * @param groupsDetails Group ID to GroupConfig map carrying group collapsed state information.
      */
     void setSourceViewInfoList(@NonNull List<DropdownItemViewInfo> sourceList,
-            @NonNull SparseArray<AutocompleteResult.GroupDetails> groupsDetails) {
+            @NonNull SparseArray<GroupConfig> groupsDetails) {
         mSourceViewInfoList = sourceList;
         mGroupsCollapsedState.clear();
 
         // Clone information about the recommended group collapsed state.
         for (int index = 0; index < groupsDetails.size(); index++) {
-            mGroupsCollapsedState.put(
-                    groupsDetails.keyAt(index), groupsDetails.valueAt(index).collapsedByDefault);
+            mGroupsCollapsedState.put(groupsDetails.keyAt(index),
+                    groupsDetails.valueAt(index).getVisibility() == GroupConfig.Visibility.HIDDEN);
         }
 
         // Build a new list of suggestions. Honor the default collapsed state.
@@ -130,6 +131,10 @@
                 : SuggestionCommonProperties.FormFactor.PHONE;
         DropdownItemViewInfo prevSuggestionWithBackground = null;
         boolean inDropdownItemBackgroundRoundingGroup = false;
+        int groupVerticalMargin = mContext.getResources().getDimensionPixelSize(
+                R.dimen.omnibox_suggestion_group_vertical_margin);
+        int suggestionVerticalMargin = mContext.getResources().getDimensionPixelSize(
+                R.dimen.omnibox_suggestion_vertical_margin);
         for (int i = 0; i < mSourceViewInfoList.size(); i++) {
             final DropdownItemViewInfo item = mSourceViewInfoList.get(i);
             final PropertyModel model = item.model;
@@ -144,6 +149,18 @@
                 // The default value is false, so we do not need to assign false to
                 // BG_BOTTOM_CORNER_ROUNDED here.
 
+                if (inDropdownItemBackgroundRoundingGroup) {
+                    // This is not the first in the group, use the normal margin.
+                    model.set(DropdownCommonProperties.TOP_MARGIN, suggestionVerticalMargin);
+                    model.set(DropdownCommonProperties.BOTTOM_MARGIN, 0);
+                } else {
+                    // First one in the group, this suggestion should use the group margin. Except
+                    // for the first group since dropdown has the margin.
+                    model.set(DropdownCommonProperties.TOP_MARGIN,
+                            prevSuggestionWithBackground == null ? 0 : groupVerticalMargin);
+                    model.set(DropdownCommonProperties.BOTTOM_MARGIN, 0);
+                }
+
                 prevSuggestionWithBackground = item;
                 inDropdownItemBackgroundRoundingGroup = true;
             } else {
@@ -152,6 +169,8 @@
                 if (prevSuggestionWithBackground != null) {
                     prevSuggestionWithBackground.model.set(
                             DropdownCommonProperties.BG_BOTTOM_CORNER_ROUNDED, true);
+                    prevSuggestionWithBackground.model.set(
+                            DropdownCommonProperties.BOTTOM_MARGIN, groupVerticalMargin);
                 }
                 inDropdownItemBackgroundRoundingGroup = false;
             }
@@ -166,6 +185,8 @@
         if (prevSuggestionWithBackground != null) {
             prevSuggestionWithBackground.model.set(
                     DropdownCommonProperties.BG_BOTTOM_CORNER_ROUNDED, true);
+            // No margin for the very last suggestion since the dropdown has the margin.
+            prevSuggestionWithBackground.model.set(DropdownCommonProperties.BOTTOM_MARGIN, 0);
         }
 
         mManagedModel.set(suggestionsList);
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListManagerUnitTest.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListManagerUnitTest.java
index e8c9403b..2251229 100644
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListManagerUnitTest.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListManagerUnitTest.java
@@ -30,8 +30,9 @@
 
 import org.chromium.base.ContextUtils;
 import org.chromium.base.test.BaseRobolectricTestRunner;
+import org.chromium.chrome.browser.omnibox.R;
 import org.chromium.chrome.browser.ui.theme.BrandedColorScheme;
-import org.chromium.components.omnibox.AutocompleteResult.GroupDetails;
+import org.chromium.components.omnibox.GroupsProto.GroupConfig;
 import org.chromium.ui.modelutil.ListObservable.ListObserver;
 import org.chromium.ui.modelutil.MVCListAdapter.ModelList;
 import org.chromium.ui.modelutil.PropertyModel;
@@ -104,6 +105,21 @@
         }
     }
 
+    /**
+     * Create a simple GroupConfig instance with supplied text and visibility.
+     *
+     * @param headerText The header text to apply to group config.
+     * @param isHidden Whether the newly built group is default-collapsed.
+     * @return Newly constructed GroupConfig.
+     */
+    private GroupConfig buildGroupConfig(String headerText, boolean isHidden) {
+        return GroupConfig.newBuilder()
+                .setHeaderText(headerText)
+                .setVisibility(isHidden ? GroupConfig.Visibility.HIDDEN
+                                        : GroupConfig.Visibility.DEFAULT_VISIBLE)
+                .build();
+    }
+
     @Test
     @SmallTest
     public void modelUpdates_visibilityChangesOnlyUpdateTheModel() {
@@ -119,7 +135,7 @@
                 new DropdownItemViewInfo(mBasicSuggestionProcessor, mModel, 2),
                 new DropdownItemViewInfo(mBasicSuggestionProcessor, mModel, 2));
 
-        mManager.setSourceViewInfoList(list, new SparseArray<GroupDetails>());
+        mManager.setSourceViewInfoList(list, new SparseArray<GroupConfig>());
         verifyModelEquals(list);
 
         // Monitor updates moving forward.
@@ -156,7 +172,7 @@
                 new DropdownItemViewInfo(mBasicSuggestionProcessor, mModel, 2),
                 new DropdownItemViewInfo(mBasicSuggestionProcessor, mModel, 2));
 
-        mManager.setSourceViewInfoList(listWithBothGroupsExpanded, new SparseArray<GroupDetails>());
+        mManager.setSourceViewInfoList(listWithBothGroupsExpanded, new SparseArray<GroupConfig>());
         verifyModelEquals(listWithBothGroupsExpanded);
 
         // Toggle group 1.
@@ -203,10 +219,10 @@
                 new DropdownItemViewInfo(mBasicSuggestionProcessor, mModel, 2));
 
         // Receive suggestions list with group 1 default-collapsed.
-        mManager.setSourceViewInfoList(listWithBothGroupsExpanded, new SparseArray<GroupDetails>() {
+        mManager.setSourceViewInfoList(listWithBothGroupsExpanded, new SparseArray<GroupConfig>() {
             {
-                put(1, new GroupDetails("Collapsed", true));
-                put(2, new GroupDetails("Expanded", false));
+                put(1, buildGroupConfig("Collapsed", true));
+                put(2, buildGroupConfig("Expanded", false));
             }
         });
 
@@ -220,10 +236,10 @@
         verifyModelEquals(listWithBothGroupsExpanded);
 
         // Receive suggestions list with group 2 default-collapsed.
-        mManager.setSourceViewInfoList(listWithBothGroupsExpanded, new SparseArray<GroupDetails>() {
+        mManager.setSourceViewInfoList(listWithBothGroupsExpanded, new SparseArray<GroupConfig>() {
             {
-                put(1, new GroupDetails("Expanded", false));
-                put(2, new GroupDetails("Collapsed", true));
+                put(1, buildGroupConfig("Expanded", false));
+                put(2, buildGroupConfig("Collapsed", true));
             }
         });
         final List<DropdownItemViewInfo> listWithGroup2Collapsed =
@@ -234,10 +250,10 @@
         verifyModelEquals(listWithBothGroupsExpanded);
 
         // Receive suggestions list with both groups default-collapsed.
-        mManager.setSourceViewInfoList(listWithBothGroupsExpanded, new SparseArray<GroupDetails>() {
+        mManager.setSourceViewInfoList(listWithBothGroupsExpanded, new SparseArray<GroupConfig>() {
             {
-                put(1, new GroupDetails("Collapsed", true));
-                put(2, new GroupDetails("Collapsed", true));
+                put(1, buildGroupConfig("Collapsed", true));
+                put(2, buildGroupConfig("Collapsed", true));
             }
         });
         final List<DropdownItemViewInfo> listWithBothGroupsCollapsed =
@@ -262,7 +278,7 @@
                 new DropdownItemViewInfo(mBasicSuggestionProcessor, mModel, 2),
                 new DropdownItemViewInfo(mBasicSuggestionProcessor, mModel, 2));
 
-        mManager.setSourceViewInfoList(list, new SparseArray<GroupDetails>());
+        mManager.setSourceViewInfoList(list, new SparseArray<GroupConfig>());
         verifyModelEquals(list);
 
         // Expand group 1.
@@ -287,7 +303,7 @@
                 new DropdownItemViewInfo(mBasicSuggestionProcessor, mModel, 2),
                 new DropdownItemViewInfo(mBasicSuggestionProcessor, mModel, 2));
 
-        mManager.setSourceViewInfoList(list, new SparseArray<GroupDetails>());
+        mManager.setSourceViewInfoList(list, new SparseArray<GroupConfig>());
         verifyModelEquals(list);
 
         // Collapse group 1.
@@ -328,12 +344,12 @@
                         new DropdownItemViewInfo(mBasicSuggestionProcessor, mModel, 1),
                         new DropdownItemViewInfo(mBasicSuggestionProcessor, mModel, 1));
 
-        mManager.setSourceViewInfoList(list1, new SparseArray<GroupDetails>());
+        mManager.setSourceViewInfoList(list1, new SparseArray<GroupConfig>());
         verifyModelEquals(list1);
 
         mManager.clear();
 
-        mManager.setSourceViewInfoList(list2, new SparseArray<GroupDetails>());
+        mManager.setSourceViewInfoList(list2, new SparseArray<GroupConfig>());
         verifyModelEquals(list2);
     }
 
@@ -348,7 +364,7 @@
                         new DropdownItemViewInfo(mBasicSuggestionProcessor,
                                 new PropertyModel(SuggestionCommonProperties.ALL_KEYS), 1));
 
-        mManager.setSourceViewInfoList(list, new SparseArray<GroupDetails>());
+        mManager.setSourceViewInfoList(list, new SparseArray<GroupConfig>());
         verifyModelEquals(list);
         verifyPropertyValues(View.LAYOUT_DIRECTION_INHERIT, BrandedColorScheme.LIGHT_BRANDED_THEME);
 
@@ -370,7 +386,7 @@
                         new PropertyModel(SuggestionCommonProperties.ALL_KEYS), 2),
                 new DropdownItemViewInfo(mBasicSuggestionProcessor,
                         new PropertyModel(SuggestionCommonProperties.ALL_KEYS), 2));
-        mManager.setSourceViewInfoList(list, new SparseArray<GroupDetails>());
+        mManager.setSourceViewInfoList(list, new SparseArray<GroupConfig>());
         verifyModelEquals(list);
         verifyPropertyValues(View.LAYOUT_DIRECTION_RTL, BrandedColorScheme.INCOGNITO);
     }
@@ -392,7 +408,7 @@
                 new DropdownItemViewInfo(mBasicSuggestionProcessor,
                         new PropertyModel(SuggestionCommonProperties.ALL_KEYS), groupId));
 
-        mManager.setSourceViewInfoList(list, new SparseArray<GroupDetails>());
+        mManager.setSourceViewInfoList(list, new SparseArray<GroupConfig>());
         verifyModelEquals(list);
 
         //
@@ -426,4 +442,61 @@
         Assert.assertTrue(mSuggestionModels.get(3).model.get(
                 DropdownCommonProperties.BG_BOTTOM_CORNER_ROUNDED));
     }
+
+    @Test
+    @SmallTest
+    public void suggestionsListSpacing() {
+        int groupVerticalSpacing = mContext.getResources().getDimensionPixelSize(
+                R.dimen.omnibox_suggestion_group_vertical_margin);
+        int suggestionVerticalSpacing = mContext.getResources().getDimensionPixelSize(
+                R.dimen.omnibox_suggestion_vertical_margin);
+
+        final int groupId = 1;
+        when(mHeaderProcessor.allowBackgroundRounding()).thenReturn(false);
+        when(mBasicSuggestionProcessor.allowBackgroundRounding()).thenReturn(true);
+
+        List<DropdownItemViewInfo> list = Arrays.asList(
+                new DropdownItemViewInfo(mBasicSuggestionProcessor,
+                        new PropertyModel(SuggestionCommonProperties.ALL_KEYS), groupId),
+                new DropdownItemViewInfo(mHeaderProcessor,
+                        new PropertyModel(SuggestionCommonProperties.ALL_KEYS), groupId),
+                new DropdownItemViewInfo(mBasicSuggestionProcessor,
+                        new PropertyModel(SuggestionCommonProperties.ALL_KEYS), groupId),
+                new DropdownItemViewInfo(mBasicSuggestionProcessor,
+                        new PropertyModel(SuggestionCommonProperties.ALL_KEYS), groupId));
+
+        mManager.setSourceViewInfoList(list, new SparseArray<GroupConfig>());
+        verifyModelEquals(list);
+
+        //
+        // ******************** <--- very first one, no margin.
+        // * basic suggestion *
+        // ******************** <--- last one in a group, group margin.
+        //                      <--- no background, no margin
+        //  header suggestion
+        //                      <--- no background, no margin
+        // ******************** <--- first one in a group, group margin.
+        // * basic suggestion *
+        // ******************** <--- normal bottom, no margin.
+        // ******************** <--- normal top, suggestion margin.
+        // * basic suggestion *
+        // ******************** <--- very last one, no margin.
+        //
+        Assert.assertEquals(
+                0, mSuggestionModels.get(0).model.get(DropdownCommonProperties.TOP_MARGIN));
+        Assert.assertEquals(groupVerticalSpacing,
+                mSuggestionModels.get(0).model.get(DropdownCommonProperties.BOTTOM_MARGIN));
+        Assert.assertEquals(
+                0, mSuggestionModels.get(1).model.get(DropdownCommonProperties.TOP_MARGIN));
+        Assert.assertEquals(
+                0, mSuggestionModels.get(1).model.get(DropdownCommonProperties.BOTTOM_MARGIN));
+        Assert.assertEquals(groupVerticalSpacing,
+                mSuggestionModels.get(2).model.get(DropdownCommonProperties.TOP_MARGIN));
+        Assert.assertEquals(
+                0, mSuggestionModels.get(2).model.get(DropdownCommonProperties.BOTTOM_MARGIN));
+        Assert.assertEquals(suggestionVerticalSpacing,
+                mSuggestionModels.get(3).model.get(DropdownCommonProperties.TOP_MARGIN));
+        Assert.assertEquals(
+                0, mSuggestionModels.get(3).model.get(DropdownCommonProperties.BOTTOM_MARGIN));
+    }
 }
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/answer/AnswerSuggestionProcessor.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/answer/AnswerSuggestionProcessor.java
index 588735f..91ff67c 100644
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/answer/AnswerSuggestionProcessor.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/answer/AnswerSuggestionProcessor.java
@@ -6,7 +6,6 @@
 
 import android.content.Context;
 import android.graphics.Bitmap;
-import android.text.TextUtils;
 
 import androidx.annotation.DrawableRes;
 import androidx.annotation.VisibleForTesting;
@@ -29,7 +28,6 @@
 import org.chromium.ui.modelutil.PropertyModel;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -65,25 +63,19 @@
      */
     @Override
     public void onNativeInitialized() {
+        super.onNativeInitialized();
         mOmniBoxAnswerColorReversal =
                 ChromeFeatureList.isEnabled(ChromeFeatureList.SUGGESTION_ANSWERS_COLOR_REVERSE);
-
-        mOmniBoxAnswerColorReversalFinanceOnly =
-                ChromeFeatureList.getFieldTrialParamByFeatureAsBoolean(
-                        ChromeFeatureList.SUGGESTION_ANSWERS_COLOR_REVERSE,
-                        "omnibox_answer_color_reversal_finance_only",
-                        /* default= */ true);
-
+        boolean financeReversalEnabled = ChromeFeatureList.getFieldTrialParamByFeatureAsBoolean(
+                ChromeFeatureList.SUGGESTION_ANSWERS_COLOR_REVERSE,
+                "omnibox_answer_color_reversal_finance_only",
+                /* default= */ true);
         String stockColorReversalCountryList = ChromeFeatureList.getFieldTrialParamByFeature(
                 ChromeFeatureList.SUGGESTION_ANSWERS_COLOR_REVERSE,
                 "omnibox_answer_color_reversal_countries");
-        if (!TextUtils.isEmpty(stockColorReversalCountryList)) {
-            List<String> financeTickerColorReversalCountryList =
-                    Arrays.asList(stockColorReversalCountryList.split(","));
-            String localeString = LocaleUtils.getDefaultLocaleString();
-            mOmniBoxAnswerColorReversalFinanceOnly &=
-                    financeTickerColorReversalCountryList.contains(localeString);
-        }
+        mOmniBoxAnswerColorReversalFinanceOnly = financeReversalEnabled
+                && stockColorReversalCountryList != null
+                && stockColorReversalCountryList.contains(LocaleUtils.getDefaultLocaleString());
     }
 
     @Override
@@ -205,6 +197,16 @@
                         && isFinanceAnswer);
     }
 
+    /* Returns whether Omnibox answer color reversal is enabled. */
+    public boolean isOmniboxAnswerColorReversalEnabled() {
+        return mOmniBoxAnswerColorReversal;
+    }
+
+    /* Returns whether Omnibox answer color reversal is enabled to finance answer only. */
+    public boolean isOmniboxAnswerColorReversalFinanceOnlyEnabled() {
+        return mOmniBoxAnswerColorReversalFinanceOnly;
+    }
+
     /**
      * Get default suggestion icon for supplied suggestion.
      */
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/answer/AnswerSuggestionProcessorUnitTest.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/answer/AnswerSuggestionProcessorUnitTest.java
index 966157cce..b1de9427 100644
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/answer/AnswerSuggestionProcessorUnitTest.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/answer/AnswerSuggestionProcessorUnitTest.java
@@ -18,10 +18,12 @@
 
 import androidx.test.filters.SmallTest;
 
+import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
+import org.junit.rules.TestRule;
 import org.junit.runner.RunWith;
 import org.mockito.ArgumentCaptor;
 import org.mockito.Mock;
@@ -31,13 +33,16 @@
 
 import org.chromium.base.Callback;
 import org.chromium.base.ContextUtils;
+import org.chromium.base.FeatureList;
 import org.chromium.base.test.BaseRobolectricTestRunner;
 import org.chromium.chrome.R;
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
 import org.chromium.chrome.browser.omnibox.OmniboxSuggestionType;
 import org.chromium.chrome.browser.omnibox.UrlBarEditingTextStateProvider;
 import org.chromium.chrome.browser.omnibox.suggestions.SuggestionHost;
 import org.chromium.chrome.browser.omnibox.suggestions.base.BaseSuggestionViewProperties;
 import org.chromium.chrome.browser.omnibox.suggestions.base.SuggestionDrawableState;
+import org.chromium.chrome.test.util.browser.Features;
 import org.chromium.components.image_fetcher.ImageFetcher;
 import org.chromium.components.omnibox.AnswerTextStyle;
 import org.chromium.components.omnibox.AnswerTextType;
@@ -53,6 +58,7 @@
 import org.chromium.url.ShadowGURL;
 
 import java.util.Arrays;
+import java.util.Locale;
 
 /**
  * Tests for {@link AnswerSuggestionProcessor}.
@@ -65,6 +71,7 @@
             AnswerType.TRANSLATION, AnswerType.WEATHER, AnswerType.WHEN_IS, AnswerType.CURRENCY};
 
     public @Rule MockitoRule mMockitoRule = MockitoJUnit.rule();
+    public @Rule TestRule mFeatureProcessor = new Features.JUnitProcessor();
 
     private @Mock SuggestionHost mSuggestionHost;
     private @Mock UrlBarEditingTextStateProvider mUrlStateProvider;
@@ -72,6 +79,7 @@
     private @Mock Bitmap mBitmap;
 
     private AnswerSuggestionProcessor mProcessor;
+    private Locale mDefaultLocale;
 
     /**
      * Base Suggestion class that can be used for testing.
@@ -171,6 +179,12 @@
     public void setUp() {
         mProcessor = new AnswerSuggestionProcessor(ContextUtils.getApplicationContext(),
                 mSuggestionHost, mUrlStateProvider, () -> mImageFetcher);
+        mDefaultLocale = Locale.getDefault();
+    }
+
+    @After
+    public void tearDown() {
+        Locale.setDefault(mDefaultLocale);
     }
 
     /** Populate model for associated suggestion. */
@@ -188,6 +202,60 @@
         return ImageFetcher.Params.create(url, ImageFetcher.ANSWER_SUGGESTIONS_UMA_CLIENT_NAME);
     }
 
+    void setColorReversalFeatureValues(
+            boolean flagEnabled, boolean financeOnly, String countryList) {
+        FeatureList.TestValues testValues = new FeatureList.TestValues();
+        testValues.addFeatureFlagOverride(
+                ChromeFeatureList.SUGGESTION_ANSWERS_COLOR_REVERSE, flagEnabled);
+        testValues.addFieldTrialParamOverride(ChromeFeatureList.SUGGESTION_ANSWERS_COLOR_REVERSE,
+                "omnibox_answer_color_reversal_finance_only", String.valueOf(financeOnly));
+        testValues.addFieldTrialParamOverride(ChromeFeatureList.SUGGESTION_ANSWERS_COLOR_REVERSE,
+                "omnibox_answer_color_reversal_countries", countryList);
+        FeatureList.setTestValues(testValues);
+    }
+
+    @Test
+    @SmallTest
+    public void onNativeInitialized_checkColorReversalDisable() {
+        setColorReversalFeatureValues(false, false, "");
+        mProcessor.onNativeInitialized();
+        Assert.assertFalse(mProcessor.isOmniboxAnswerColorReversalEnabled());
+        Assert.assertFalse(mProcessor.isOmniboxAnswerColorReversalFinanceOnlyEnabled());
+    }
+
+    @Test
+    @SmallTest
+    public void onNativeInitialized_checkColorReversalEnableWithoutCountryList() {
+        setColorReversalFeatureValues(true, true, "");
+        Locale.setDefault(new Locale("ja", "JP"));
+
+        mProcessor.onNativeInitialized();
+        Assert.assertTrue(mProcessor.isOmniboxAnswerColorReversalEnabled());
+        Assert.assertFalse(mProcessor.isOmniboxAnswerColorReversalFinanceOnlyEnabled());
+    }
+
+    @Test
+    @SmallTest
+    public void onNativeInitialized_checkColorReversalEnableWithExcludedCountryList() {
+        setColorReversalFeatureValues(true, true, "zh-CN,zh-TW,ko-KR");
+        Locale.setDefault(new Locale("ja", "JP"));
+
+        mProcessor.onNativeInitialized();
+        Assert.assertTrue(mProcessor.isOmniboxAnswerColorReversalEnabled());
+        Assert.assertFalse(mProcessor.isOmniboxAnswerColorReversalFinanceOnlyEnabled());
+    }
+
+    @Test
+    @SmallTest
+    public void onNativeInitialized_checkColorReversalEnableWithIncludedCountryList() {
+        setColorReversalFeatureValues(true, true, "zh-CN,zh-TW,ja-JP,ko-KR");
+        Locale.setDefault(new Locale("ja", "JP"));
+
+        mProcessor.onNativeInitialized();
+        Assert.assertTrue(mProcessor.isOmniboxAnswerColorReversalEnabled());
+        Assert.assertTrue(mProcessor.isOmniboxAnswerColorReversalFinanceOnlyEnabled());
+    }
+
     @Test
     @SmallTest
     public void regularAnswer_order() {
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/base/BaseSuggestionViewBinder.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/base/BaseSuggestionViewBinder.java
index e2af590..9bc8f630 100644
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/base/BaseSuggestionViewBinder.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/base/BaseSuggestionViewBinder.java
@@ -69,7 +69,9 @@
         } else if (SuggestionCommonProperties.COLOR_SCHEME == propertyKey) {
             updateColorScheme(model, view);
         } else if (DropdownCommonProperties.BG_TOP_CORNER_ROUNDED == propertyKey) {
-            updateBackgroundAndMargin(model, view);
+            updateBackground(model, view);
+        } else if (DropdownCommonProperties.TOP_MARGIN == propertyKey) {
+            updateMargin(model, view);
         } else if (BaseSuggestionViewProperties.ACTIONS == propertyKey) {
             bindActionButtons(model, view, model.get(BaseSuggestionViewProperties.ACTIONS));
         } else if (BaseSuggestionViewProperties.ON_FOCUS_VIA_SELECTION == propertyKey) {
@@ -280,9 +282,17 @@
      * @param model A property model to look up relevant properties.
      * @param view A view that need to be updated.
      */
-    public static void updateBackgroundAndMargin(PropertyModel model, View view) {
+    public static void updateBackground(PropertyModel model, View view) {
         view.setBackground(getBackgroundDrawable(model, view));
+    }
 
+    /**
+     * Update the margin for the view.
+     *
+     * @param model A property model to look up relevant properties.
+     * @param view A view that need to be updated.
+     */
+    public static void updateMargin(PropertyModel model, View view) {
         ViewGroup.LayoutParams layoutParams = view.getLayoutParams();
         if (layoutParams == null) {
             layoutParams =
@@ -290,12 +300,12 @@
         }
 
         if (layoutParams instanceof MarginLayoutParams) {
-            int verticalSpacing = view.getContext().getResources().getDimensionPixelSize(
-                    R.dimen.omnibox_suggestion_vertical_spacing);
+            int topSpacing = model.get(DropdownCommonProperties.TOP_MARGIN);
+            int bottomSpacing = model.get(DropdownCommonProperties.BOTTOM_MARGIN);
             int sideSpacing = view.getContext().getResources().getDimensionPixelOffset(
                     R.dimen.omnibox_suggestion_side_spacing);
             ((MarginLayoutParams) layoutParams)
-                    .setMargins(sideSpacing, verticalSpacing, sideSpacing, 0);
+                    .setMargins(sideSpacing, topSpacing, sideSpacing, bottomSpacing);
         }
         view.setLayoutParams(layoutParams);
     }
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/base/BaseSuggestionViewBinderUnitTest.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/base/BaseSuggestionViewBinderUnitTest.java
index a5dce25..8e1b7124 100644
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/base/BaseSuggestionViewBinderUnitTest.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/base/BaseSuggestionViewBinderUnitTest.java
@@ -285,24 +285,28 @@
     }
 
     @Test
-    public void suggestionBackgroundAndMargin() {
+    public void suggestionBackground() {
         mModel.set(DropdownCommonProperties.BG_BOTTOM_CORNER_ROUNDED, false);
         mModel.set(DropdownCommonProperties.BG_TOP_CORNER_ROUNDED, true);
 
         verify(mBaseView).setBackground(any());
         Assert.assertNotNull(mBaseView.getBackground());
+    }
+
+    @Test
+    public void suggestionMargin() {
+        mModel.set(DropdownCommonProperties.BOTTOM_MARGIN, 17);
+        mModel.set(DropdownCommonProperties.TOP_MARGIN, 13);
 
         verify(mBaseView).setLayoutParams(any());
-        int verticalSpacing = mBaseView.getContext().getResources().getDimensionPixelSize(
-                R.dimen.omnibox_suggestion_vertical_spacing);
         int sideSpacing = mBaseView.getContext().getResources().getDimensionPixelOffset(
                 R.dimen.omnibox_suggestion_side_spacing);
         MarginLayoutParams layoutParams = (MarginLayoutParams) mBaseView.getLayoutParams();
         Assert.assertNotNull(layoutParams);
         Assert.assertEquals(sideSpacing, layoutParams.leftMargin);
-        Assert.assertEquals(verticalSpacing, layoutParams.topMargin);
+        Assert.assertEquals(13, layoutParams.topMargin);
         Assert.assertEquals(sideSpacing, layoutParams.rightMargin);
-        Assert.assertEquals(0, layoutParams.bottomMargin);
+        Assert.assertEquals(17, layoutParams.bottomMargin);
     }
 
     @Test
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/base/BaseSuggestionViewProcessorUnitTest.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/base/BaseSuggestionViewProcessorUnitTest.java
index e30cb6c..9cefdcc 100644
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/base/BaseSuggestionViewProcessorUnitTest.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/base/BaseSuggestionViewProcessorUnitTest.java
@@ -21,13 +21,13 @@
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.junit.runners.BlockJUnit4ClassRunner;
 import org.mockito.ArgumentMatcher;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
 import org.chromium.chrome.browser.omnibox.MatchClassificationStyle;
 import org.chromium.components.omnibox.AutocompleteMatch.MatchClassification;
+import org.chromium.testing.local.LocalRobolectricTestRunner;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -35,7 +35,7 @@
 /**
  * Tests for {@link BaseSuggestionViewProcessor}.
  */
-@RunWith(BlockJUnit4ClassRunner.class)
+@RunWith(LocalRobolectricTestRunner.class)
 public class BaseSuggestionViewProcessorUnitTest {
     private static final int FAKE_STRING_LENGTH = 10;
 
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/carousel/BaseCarouselSuggestionViewBinder.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/carousel/BaseCarouselSuggestionViewBinder.java
index b12f145..83b962b 100644
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/carousel/BaseCarouselSuggestionViewBinder.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/carousel/BaseCarouselSuggestionViewBinder.java
@@ -40,21 +40,14 @@
         } else if (key == BaseCarouselSuggestionViewProperties.SHOW_TITLE) {
             final boolean showTitle = model.get(BaseCarouselSuggestionViewProperties.SHOW_TITLE);
             final View headerView = view.getHeaderView();
-            final int verticalPadStart = view.getResources().getDimensionPixelSize(
+            final int paddingVertical = view.getResources().getDimensionPixelSize(
                     R.dimen.omnibox_carousel_suggestion_padding);
-
-            // Remove end padding for the carousel as the feature OMNIBOX_HEADER_PADDING_UPDATE will
-            // increase the start margin of the suggestion header below the carousel.
-            final int verticalPadEnd =
-                    ChromeFeatureList.isEnabled(ChromeFeatureList.OMNIBOX_HEADER_PADDING_UPDATE)
-                    ? 0
-                    : verticalPadStart;
             if (showTitle) {
                 headerView.setVisibility(View.VISIBLE);
-                view.setPaddingRelative(0, 0, 0, verticalPadEnd);
+                view.setPaddingRelative(0, 0, 0, paddingVertical);
             } else {
                 headerView.setVisibility(View.GONE);
-                view.setPaddingRelative(0, verticalPadStart, 0, verticalPadEnd);
+                view.setPaddingRelative(0, paddingVertical, 0, paddingVertical);
             }
         } else if (key == SuggestionCommonProperties.DEVICE_FORM_FACTOR) {
             view.setItemSpacingPx(getItemSpacingPx(
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/header/HeaderView.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/header/HeaderView.java
index a0eb340b..787d878495 100644
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/header/HeaderView.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/header/HeaderView.java
@@ -154,11 +154,15 @@
     /**
      * Specifies the paddings for suggestion header.
      *
-     * @param shouldUpdateHeaderPadding true, if suggestion header's padding should be updated.
+     * @param minHeight the min height of header view.
+     * @param paddingStart the start padding of header view.
+     * @param paddingTop the top padding of header view.
+     * @param paddingBottom the bottom padding of header view.
      */
-    void setUpdateHeaderPadding(int minHeight, int paddingMarginStart, int paddingMarginTop) {
+    void setUpdateHeaderPadding(
+            int minHeight, int paddingStart, int paddingTop, int paddingBottom) {
         mHeaderText.setMinHeight(minHeight);
-        mHeaderText.setPaddingRelative(paddingMarginStart, paddingMarginTop, 0, 0);
+        mHeaderText.setPaddingRelative(paddingStart, paddingTop, 0, paddingBottom);
     }
 
     @Override
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/header/HeaderViewBinder.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/header/HeaderViewBinder.java
index 02834e64..509d9e2 100644
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/header/HeaderViewBinder.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/header/HeaderViewBinder.java
@@ -10,6 +10,7 @@
 import androidx.core.widget.TextViewCompat;
 
 import org.chromium.base.ApiCompatibilityUtils;
+import org.chromium.chrome.browser.omnibox.OmniboxFeatures;
 import org.chromium.chrome.browser.omnibox.R;
 import org.chromium.chrome.browser.omnibox.suggestions.SuggestionCommonProperties;
 import org.chromium.chrome.browser.ui.theme.BrandedColorScheme;
@@ -61,14 +62,29 @@
             int minHeight = res.getDimensionPixelSize(useUpdatedHeaderPadding
                             ? R.dimen.omnibox_suggestion_header_height_modern
                             : R.dimen.omnibox_suggestion_header_height);
-            int paddingMarginStart = res.getDimensionPixelSize(useUpdatedHeaderPadding
-                            ? R.dimen.omnibox_suggestion_header_margin_start_modern
-                            : R.dimen.omnibox_suggestion_header_margin_start);
-            int paddingMarginTop = useUpdatedHeaderPadding
-                    ? res.getDimensionPixelSize(R.dimen.omnibox_suggestion_header_margin_top)
+
+            int paddingStart = res.getDimensionPixelSize(useUpdatedHeaderPadding
+                            ? R.dimen.omnibox_suggestion_header_padding_start_modern
+                            : R.dimen.omnibox_suggestion_header_padding_start);
+
+            int paddingTop = useUpdatedHeaderPadding
+                    ? res.getDimensionPixelSize(R.dimen.omnibox_suggestion_header_padding_top)
                     : 0;
 
-            view.setUpdateHeaderPadding(minHeight, paddingMarginStart, paddingMarginTop);
+            int paddingBottom = useUpdatedHeaderPadding
+                    ? res.getDimensionPixelSize(R.dimen.omnibox_suggestion_header_padding_bottom)
+                    : 0;
+
+            // Use modified start padding if the phase 2 feature is enabled.
+            if (OmniboxFeatures.shouldShowModernizeVisualUpdate(view.getContext())) {
+                minHeight = res.getDimensionPixelSize(
+                        R.dimen.omnibox_suggestion_header_height_modern_phase2);
+                paddingStart += res.getDimensionPixelSize(R.dimen.omnibox_suggestion_side_spacing);
+                // TODO(crbug.com/1372596): Header view is off center and we should fix this.
+                paddingBottom = 0;
+            }
+
+            view.setUpdateHeaderPadding(minHeight, paddingStart, paddingTop, paddingBottom);
         }
     }
 }
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/header/HeaderViewBinderUnitTest.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/header/HeaderViewBinderUnitTest.java
index 819543e..c5f13c48 100644
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/header/HeaderViewBinderUnitTest.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/header/HeaderViewBinderUnitTest.java
@@ -28,6 +28,7 @@
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
+import org.junit.rules.TestRule;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.Mockito;
@@ -36,6 +37,10 @@
 import org.chromium.base.ContextUtils;
 import org.chromium.base.test.BaseRobolectricTestRunner;
 import org.chromium.chrome.R;
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
+import org.chromium.chrome.test.util.browser.Features;
+import org.chromium.chrome.test.util.browser.Features.DisableFeatures;
+import org.chromium.chrome.test.util.browser.Features.EnableFeatures;
 import org.chromium.ui.base.TestActivity;
 import org.chromium.ui.modelutil.PropertyModel;
 import org.chromium.ui.modelutil.PropertyModelChangeProcessor;
@@ -49,6 +54,9 @@
     public ActivityScenarioRule<TestActivity> mActivityScenarioRule =
             new ActivityScenarioRule<>(TestActivity.class);
 
+    @Rule
+    public TestRule mProcessor = new Features.JUnitProcessor();
+
     Activity mActivity;
     PropertyModel mModel;
     Context mContext;
@@ -208,30 +216,58 @@
     }
 
     @Test
+    @DisableFeatures({ChromeFeatureList.OMNIBOX_HEADER_PADDING_UPDATE,
+            ChromeFeatureList.OMNIBOX_MODERNIZE_VISUAL_UPDATE})
+    public void
+    headerView_updateHeaderPaddingFalse() {
+        // Update Header Padding.
+        mModel.set(HeaderViewProperties.USE_UPDATED_HEADER_PADDING, false);
+
+        int minHeight = mResources.getDimensionPixelSize(R.dimen.omnibox_suggestion_header_height);
+        int paddingStart =
+                mResources.getDimensionPixelSize(R.dimen.omnibox_suggestion_header_padding_start);
+        int paddingTop = 0;
+        int paddingBottom = 0;
+        verify(mHeaderView, times(1))
+                .setUpdateHeaderPadding(minHeight, paddingStart, paddingTop, paddingBottom);
+    }
+
+    @Test
+    @EnableFeatures(ChromeFeatureList.OMNIBOX_HEADER_PADDING_UPDATE)
+    @DisableFeatures(ChromeFeatureList.OMNIBOX_MODERNIZE_VISUAL_UPDATE)
     public void headerView_updateHeaderPaddingTrue() {
         // Update Header Padding.
         mModel.set(HeaderViewProperties.USE_UPDATED_HEADER_PADDING, true);
 
         int minHeight =
                 mResources.getDimensionPixelSize(R.dimen.omnibox_suggestion_header_height_modern);
-        int paddingMarginStart = mResources.getDimensionPixelSize(
-                R.dimen.omnibox_suggestion_header_margin_start_modern);
-        int paddingMarginTop =
-                mResources.getDimensionPixelSize(R.dimen.omnibox_suggestion_header_margin_top);
+        int paddingStart = mResources.getDimensionPixelSize(
+                R.dimen.omnibox_suggestion_header_padding_start_modern);
+        int paddingTop =
+                mResources.getDimensionPixelSize(R.dimen.omnibox_suggestion_header_padding_top);
+        int paddingBottom =
+                mResources.getDimensionPixelSize(R.dimen.omnibox_suggestion_header_padding_bottom);
         verify(mHeaderView, times(1))
-                .setUpdateHeaderPadding(minHeight, paddingMarginStart, paddingMarginTop);
+                .setUpdateHeaderPadding(minHeight, paddingStart, paddingTop, paddingBottom);
     }
 
     @Test
-    public void headerView_updateHeaderPaddingFalse() {
+    @EnableFeatures({ChromeFeatureList.OMNIBOX_HEADER_PADDING_UPDATE,
+            ChromeFeatureList.OMNIBOX_MODERNIZE_VISUAL_UPDATE})
+    public void
+    headerView_updateHeaderPaddingTrueModernizeFeatureEnabled() {
         // Update Header Padding.
-        mModel.set(HeaderViewProperties.USE_UPDATED_HEADER_PADDING, false);
+        mModel.set(HeaderViewProperties.USE_UPDATED_HEADER_PADDING, true);
 
-        int minHeight = mResources.getDimensionPixelSize(R.dimen.omnibox_suggestion_header_height);
-        int paddingMarginStart =
-                mResources.getDimensionPixelSize(R.dimen.omnibox_suggestion_header_margin_start);
-        int paddingMarginTop = 0;
+        int minHeight = mResources.getDimensionPixelSize(
+                R.dimen.omnibox_suggestion_header_height_modern_phase2);
+        int paddingStart = mResources.getDimensionPixelSize(
+                                   R.dimen.omnibox_suggestion_header_padding_start_modern)
+                + mResources.getDimensionPixelSize(R.dimen.omnibox_suggestion_side_spacing);
+        int paddingTop =
+                mResources.getDimensionPixelSize(R.dimen.omnibox_suggestion_header_padding_top);
+        int paddingBottom = 0;
         verify(mHeaderView, times(1))
-                .setUpdateHeaderPadding(minHeight, paddingMarginStart, paddingMarginTop);
+                .setUpdateHeaderPadding(minHeight, paddingStart, paddingTop, paddingBottom);
     }
 }
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/pedal/PedalSuggestionViewBinder.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/pedal/PedalSuggestionViewBinder.java
index 020b9e5..e4102c0 100644
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/pedal/PedalSuggestionViewBinder.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/pedal/PedalSuggestionViewBinder.java
@@ -70,7 +70,9 @@
             ViewCompat.setLayoutDirection(
                     view.getPedalView(), model.get(SuggestionCommonProperties.LAYOUT_DIRECTION));
         } else if (DropdownCommonProperties.BG_TOP_CORNER_ROUNDED == propertyKey) {
-            BaseSuggestionViewBinder.updateBackgroundAndMargin(model, view);
+            BaseSuggestionViewBinder.updateBackground(model, view);
+        } else if (DropdownCommonProperties.TOP_MARGIN == propertyKey) {
+            BaseSuggestionViewBinder.updateMargin(model, view);
         }
     }
 }
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb
index 1b6e9ffe..6c87223b 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb
@@ -340,6 +340,7 @@
 <translation id="2861923151411510142">የተወሰኑ የChrome ባህሪዎች ከአሁን በኋላ \u2019 አይገኙም</translation>
 <translation id="2870560284913253234">ጣቢያ</translation>
 <translation id="2871733351037274014">ገጾችን ቅድሚያ ጫን</translation>
+<translation id="2876136027428473467"><ph name="CHILD_NAME" /> ይህን ድር ጣቢያ እንዲያጸድቁ ይፈልጋሉ፦</translation>
 <translation id="2886836735871983413">ድሩን ሲያስሱ የጣቢያዎች ዝርዝር እዚህ ይታያል</translation>
 <translation id="2888126860611144412">ስለChrome</translation>
 <translation id="2891154217021530873">ገጹን መጫን አቁም</translation>
@@ -355,6 +356,7 @@
 <translation id="2932150158123903946">የGoogle <ph name="APP_NAME" /> ማከማቻ</translation>
 <translation id="2932222164150889403">የእርስዎ የቁልፍ ሰሌዳ አይለወጥም</translation>
 <translation id="2936980480904111527">የChrome ማሳወቂያዎች ነገሮችን ይበልጥ ቀላል ያደርጋሉ።</translation>
+<translation id="2940075786175545812">ድር ጣቢያን የማጽደቅ ወይም ያለማጽደቅ አማራጭ</translation>
 <translation id="2942036813789421260">የቅድመ-እይታ ትር ተዘግቷል</translation>
 <translation id="2946420957526726953">ከሌሎች መሣሪያዎች ጋር ለመገናኘት Chromeን በማዘመን ላይ።</translation>
 <translation id="2951071800649516099">ለበኋላ ወደ ንባብ ዝርዝርዎ ገጾችን ያክሉ</translation>
@@ -422,6 +424,7 @@
 <translation id="3259831549858767975">በገጹ ላይ ያለውን ሁሉንም ነገር ይበልጥ አሳንስ</translation>
 <translation id="3264124641674805320">ለበኋላ ይዘትን እንዴት ማውረድ እንደሚቻል</translation>
 <translation id="3264259168916048410">ኮምፒተርዎ ወደ አንድ ጣቢያ ለመግባት ይህንን መሣሪያ መጠቀም ይፈልጋል</translation>
+<translation id="3265093782546847662">የ<ph name="DOMAIN" /> ሁሉም ገጾች</translation>
 <translation id="3265534588625245297">የሚከተሏቸውን ጣቢያዎች ያቀናብሩ</translation>
 <translation id="3269093882174072735">ምስል ጫን</translation>
 <translation id="3280562213547448728">የድምፅ ፍለጋ</translation>
@@ -731,6 +734,7 @@
 <translation id="4985248278475639481">ግላዊነት ስለማላበስ</translation>
 <translation id="4987271110129728827">ያንን ገጽ ማግኘት አልተቻለም። የፊደል አጻጻፍዎን ይመልከቱ ወይም የድር ፍለጋ ይሞክሩ።</translation>
 <translation id="4988526792673242964">ገፆች</translation>
+<translation id="4991110219272367918">ድር ጣቢያን የማጽደቅ ወይም ያለማጽደቅ አማራጭ ተዘግቷል</translation>
 <translation id="499724277181351974">ይዳስሱ፦ <ph name="WEBSITE_TITLE" />፦ <ph name="WEBSITE_URL" /></translation>
 <translation id="5001388021414335527">ይህንን ጣቢያ እዚህ ይከተሉ</translation>
 <translation id="500351648694011114">ይበልጥ በቀላሉ ያስሱ</translation>
@@ -1105,6 +1109,7 @@
 <translation id="6896758677409633944">ቅዳ</translation>
 <translation id="6900532703269623216">የላቀ ጥበቃ</translation>
 <translation id="6903907808598579934">ስምረትን አብራ</translation>
+<translation id="6908998565271542516">በሙሉ ቁመት የተከፈተን ድር ጣቢያ የማጽደቅ ወይም ያለማጽደቅ አማራጭ</translation>
 <translation id="6909589135458168665">ገጾችን ቅድሚያ ጫን</translation>
 <translation id="6942665639005891494">የቅንብሮች ምናሌ አማራጩን በመጠቀም ነባሪውን የማውረጃ ቦታ ይጠቀሙ</translation>
 <translation id="694267552845942083">በአሁኑ ጊዜ የስንረት ቅንብሮችዎን እያበጁ ነው። ስምረትን ማብራቱን ለመጨረስ ከማያ ገጹ ታችኛው ክፍል አጠገብ ያለውን የአረጋግጥ አዝራር መታ ያድርጉ። ወደ ላይ ያስሱ</translation>
@@ -1112,6 +1117,7 @@
 <translation id="6955535239952325894">ይህ ቅንብር በሚተዳደሩ አሳሾች ላይ ተሰናክሏል</translation>
 <translation id="6963766334940102469">ዕልባቶችን ሰርዝ</translation>
 <translation id="696447261358045621">ከማንነት የማያሳውቅ ሁነታ ይውጡ</translation>
+<translation id="6971862865055170158">አታጽድቅ</translation>
 <translation id="6979737339423435258">የምንጊዜም</translation>
 <translation id="6987047470128880212">ማንነት የማያሳውቅ በዚህ መሣሪያ ላይ አይገኝም</translation>
 <translation id="6995899638241819463">የይለፍ ቃላት በውሂብ ደንብ ጥሰት ተጋላጭ ከሆነ ያስጠንቅቅዎት</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_as.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_as.xtb
index 29dca465..7f89cac 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_as.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_as.xtb
@@ -340,6 +340,7 @@
 <translation id="2861923151411510142">Chromeৰ কিছুমান সুবিধা আৰু উপলব্ধ হৈ নাথাকিব</translation>
 <translation id="2870560284913253234">ছাইট</translation>
 <translation id="2871733351037274014">পৃষ্ঠা আগতীয়াকৈ ল’ড কৰক</translation>
+<translation id="2876136027428473467"><ph name="CHILD_NAME" />এ আপুনি এই ৱেবছাইটটো অনুমোদন জনোৱাটো বিচাৰে:</translation>
 <translation id="2886836735871983413">আপুনি ৱেব ব্ৰাউজ কৰিলে ইয়াত ছাইটসমূহৰ এখন সূচী প্ৰদৰ্শিত হ’ব</translation>
 <translation id="2888126860611144412">Chromeৰ বিষয়ে</translation>
 <translation id="2891154217021530873">পৃষ্ঠা ল’ড হোৱা কার্যটো বন্ধ কৰক</translation>
@@ -355,6 +356,7 @@
 <translation id="2932150158123903946">Google <ph name="APP_NAME" /> ষ্ট'ৰেজ</translation>
 <translation id="2932222164150889403">আপোনাৰ কীব’ৰ্ড সলনি নহ’ব</translation>
 <translation id="2936980480904111527">Chromeৰ জাননীয়ে কথাবোৰ সহজ কৰি তোলে</translation>
+<translation id="2940075786175545812">এটা ৱেবছাইট অনুমোদন জনোৱা অথবা নজনোৱাৰ বিকল্প</translation>
 <translation id="2942036813789421260">পূৰ্বদৰ্শন টেবটো বন্ধ কৰা আছে</translation>
 <translation id="2946420957526726953">অন্য ডিভাইচৰ সৈতে সংযোগ কৰিবলৈ Chrome আপডে’ট কৰি থকা হৈছে</translation>
 <translation id="2951071800649516099">পৰৱৰ্তী সময়ৰ বাবে আপোনাৰ পঢ়াৰ সূচীত পৃষ্ঠাসমূহ যোগ দিয়ক</translation>
@@ -422,6 +424,7 @@
 <translation id="3259831549858767975">পৃষ্ঠাটোৰ সকলো সমলৰ আকাৰ সৰু কৰক</translation>
 <translation id="3264124641674805320">পৰৱৰ্তী সময়ৰ বাবে সমল কেনেকৈ ডাউনল'ড কৰিব লাগে</translation>
 <translation id="3264259168916048410">আপোনাৰ কম্পিউটাৰটোৱে এটা ছাইটত ছাইন ইন কৰিবলৈ এই ডিভাইচটো ব্যৱহাৰ কৰিব বিচাৰে</translation>
+<translation id="3265093782546847662"><ph name="DOMAIN" />ৰ আটাইবোৰ পৃষ্ঠা</translation>
 <translation id="3265534588625245297">আপুনি ফ'ল' কৰা ছাইটসমূহ পৰিচালনা কৰক</translation>
 <translation id="3269093882174072735">ছবি ল’ড কৰক</translation>
 <translation id="3280562213547448728">কণ্ঠধ্বনিৰ দ্বাৰা সন্ধান</translation>
@@ -731,6 +734,7 @@
 <translation id="4985248278475639481">বিজ্ঞাপনৰ ব্যক্তিগতকৃত কৰাৰ বিষয়ে</translation>
 <translation id="4987271110129728827">সেই পৃষ্ঠাখন বিচাৰি পোৱা নাই। আপোনাৰ বানান পৰীক্ষা কৰক অথবা ৱেবত সন্ধান কৰি চাওক।</translation>
 <translation id="4988526792673242964">পৃষ্ঠা</translation>
+<translation id="4991110219272367918">এটা ৱেবছাইট অনুমোদন জনোৱা অথবা নজনোৱাৰ বিকল্প বন্ধ কৰা হৈছে</translation>
 <translation id="499724277181351974">নেভিগে’ট কৰক: <ph name="WEBSITE_TITLE" />: <ph name="WEBSITE_URL" /></translation>
 <translation id="5001388021414335527">ইয়াত এই ছাইটটো ফ’ল’ কৰক</translation>
 <translation id="500351648694011114">অধিক সহজে ব্ৰাউজ কৰক</translation>
@@ -1105,6 +1109,7 @@
 <translation id="6896758677409633944">প্ৰতিলিপি কৰক</translation>
 <translation id="6900532703269623216">বৰ্ধিত সুৰক্ষা</translation>
 <translation id="6903907808598579934">ছিংক অন কৰক</translation>
+<translation id="6908998565271542516">এটা ৱেবছাইট অনুমোদন জনোৱা অথবা নজনোৱাৰ বিকল্প পূৰ্ণ উচ্চতাত খোলা হৈছে</translation>
 <translation id="6909589135458168665">পৃষ্ঠা আগতীয়াকৈ ল’ড কৰক</translation>
 <translation id="6942665639005891494">ছেটিংসমূহ-ৰ মেনুৰ বিকল্পটো ব্যৱহাৰ কৰি ডিফ’ল্ট ডাউনল’ডৰ অৱস্থান যিকোনো সময়তে সলনি কৰক</translation>
 <translation id="694267552845942083">আপুনি বৰ্তমান আপোনাৰ ছিংক কৰাৰ ছেটিং কাষ্টমাইজ কৰি আছে। ছিংক কৰাৰ সুবিধাটো অন কৰাটো সম্পূৰ্ণ কৰিবলৈ স্ক্ৰীনখনৰ একেবাৰে তলিৰ কাষত থকা নিশ্চিত কৰক বুটামটো টিপক। ওপৰলৈ যাওক</translation>
@@ -1112,6 +1117,7 @@
 <translation id="6955535239952325894">পৰিচালিত ব্ৰাউজাৰসমূহত এই ছেটিংটো অক্ষম কৰা হৈছে</translation>
 <translation id="6963766334940102469">বুকমার্ক মচক</translation>
 <translation id="696447261358045621">ইনক’গনিট’ ম’ডৰ পৰা বাহিৰ হওক</translation>
+<translation id="6971862865055170158">অনুমোদন নজনাব</translation>
 <translation id="6979737339423435258">সকলো সময়তে</translation>
 <translation id="6987047470128880212">এই ডিভাইচটোত ইনক’গনিট’ উপলব্ধ নহয়</translation>
 <translation id="6995899638241819463">ডেটা উলংঘনৰ ফলত পাছৱৰ্ডসমূহ ফাদিল হ’লে আপোনাক সকীয়নি দিয়ে</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_be.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_be.xtb
index ee04dbc..ad5641d 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_be.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_be.xtb
@@ -340,6 +340,7 @@
 <translation id="2861923151411510142">Некаторыя функцыі Chrome перастануць быць даступнымі</translation>
 <translation id="2870560284913253234">Сайт</translation>
 <translation id="2871733351037274014">Перадзагрузка старонак</translation>
+<translation id="2876136027428473467"><ph name="CHILD_NAME" /> просіць ухваліць гэты вэб-сайт:</translation>
 <translation id="2886836735871983413">Сайты будуць з'яўляцца тут па меры прагляду вамі вэб-старонак</translation>
 <translation id="2888126860611144412">Пра браўзер Chrome</translation>
 <translation id="2891154217021530873">Спыніць загрузку старонкі</translation>
@@ -355,6 +356,7 @@
 <translation id="2932150158123903946">Сховішча Google <ph name="APP_NAME" /></translation>
 <translation id="2932222164150889403">Мова ўводу з клавіятуры не зменіцца</translation>
 <translation id="2936980480904111527">Апавяшчэнні Chrome спрашчаюць жыццё</translation>
+<translation id="2940075786175545812">Старонка, на якой можна ўхваліць вэб-сайт</translation>
 <translation id="2942036813789421260">Укладка перадпрагляду закрыта</translation>
 <translation id="2946420957526726953">Chrome абнаўляецца, каб мець магчымасць падключацца да іншых прылад</translation>
 <translation id="2951071800649516099">Захоўвайце старонкі, каб прачытаць іх пазней, – дадавайце іх у спіс на прагляд</translation>
@@ -422,6 +424,7 @@
 <translation id="3259831549858767975">Паменшыць усё на старонцы</translation>
 <translation id="3264124641674805320">Як спампоўваць змесціва для прагляду</translation>
 <translation id="3264259168916048410">Ваш камп’ютар прапануе выкарыстоўваць гэту прыладу для ўваходу на сайт</translation>
+<translation id="3265093782546847662">Усе старонкі дамена <ph name="DOMAIN" /></translation>
 <translation id="3265534588625245297">Кіруйце сайтамі, на якія вы падпісаны</translation>
 <translation id="3269093882174072735">Загрузіць відарыс</translation>
 <translation id="3280562213547448728">Галасавы пошук</translation>
@@ -731,6 +734,7 @@
 <translation id="4985248278475639481">Пра персаналізацыю рэкламы</translation>
 <translation id="4987271110129728827">Не ўдалося знайсці старонку. Праверце правільнасць напісання запыту або паспрабуйце выканаць пошук у інтэрнэце.</translation>
 <translation id="4988526792673242964">Старонкі</translation>
+<translation id="4991110219272367918">Старонка, на якой можна ўхваліць вэб-сайт, закрыта</translation>
 <translation id="499724277181351974">Перайсці на сайт <ph name="WEBSITE_TITLE" />: <ph name="WEBSITE_URL" /></translation>
 <translation id="5001388021414335527">Падпісацца на сайт можна тут</translation>
 <translation id="500351648694011114">Зручнейшы прагляд старонак</translation>
@@ -1105,6 +1109,7 @@
 <translation id="6896758677409633944">Капіраваць</translation>
 <translation id="6900532703269623216">Палепшаная абарона</translation>
 <translation id="6903907808598579934">Уключыць сінхранізацыю</translation>
+<translation id="6908998565271542516">Старонка, на якой можна ўхваліць вэб-сайт, разгорнута на ўвесь экран</translation>
 <translation id="6909589135458168665">Перадзагрузка старонак</translation>
 <translation id="6942665639005891494">Стандартнае размяшчэнне спамповак можна змяніць у наладах</translation>
 <translation id="694267552845942083">Вы знаходзіцеся на старонцы налад сінхранізацыі. Каб завяршыць уключэнне сінхранізацыі, націсніце кнопку "Пацвердзіць" унізе экрана. Перайсці ўверх</translation>
@@ -1112,6 +1117,7 @@
 <translation id="6955535239952325894">Гэта налада выключана ў браўзерах, якія знаходзяцца пад кіраваннем</translation>
 <translation id="6963766334940102469">Выдаліць закладкі</translation>
 <translation id="696447261358045621">Выйсці з рэжыму інкогніта</translation>
+<translation id="6971862865055170158">Не ўхваляць</translation>
 <translation id="6979737339423435258">За ўвесь час</translation>
 <translation id="6987047470128880212">На гэтай прыладзе нельга адкрываць укладкі ў рэжыме інкогніта</translation>
 <translation id="6995899638241819463">Папярэджваць мяне ў выпадку, калі пры ўцечцы даных былі раскрыты паролі</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb
index 5406ca6..eb65b9a4 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb
@@ -340,6 +340,7 @@
 <translation id="2861923151411510142">কিছু Chrome-এর ফিচার আর ব্যবহার করা যাবে না</translation>
 <translation id="2870560284913253234">সাইট</translation>
 <translation id="2871733351037274014">পৃষ্ঠা প্রিলোড করা</translation>
+<translation id="2876136027428473467"><ph name="CHILD_NAME" /> চায় যে আপনি এই ওয়েবসাইট অনুমোদন করুন:</translation>
 <translation id="2886836735871983413">আপনি ওয়েবে ব্রাউজ করলে সাইটের একটি তালিকা এখানে দেখা যাবে</translation>
 <translation id="2888126860611144412">Chrome সম্বন্ধে</translation>
 <translation id="2891154217021530873">পৃষ্ঠা লোড করা বন্ধ করুন</translation>
@@ -355,6 +356,7 @@
 <translation id="2932150158123903946">Google <ph name="APP_NAME" /> স্টোরেজ</translation>
 <translation id="2932222164150889403">আপনার কীবোর্ড পরিবর্তন হবে না</translation>
 <translation id="2936980480904111527">Chrome-এর বিজ্ঞপ্তিগুলি জিনিসকে আরও সহজ করে তোলে</translation>
+<translation id="2940075786175545812">একটি ওয়েবসাইটে অনুমোদন দেওয়ার বা না দেওয়ার বিকল্প</translation>
 <translation id="2942036813789421260">প্রিভিউ ট্যাব বন্ধ করা আছে</translation>
 <translation id="2946420957526726953">অন্য ডিভাইসে কানেক্ট করার জন্য Chrome আপডেট করা হচ্ছে</translation>
 <translation id="2951071800649516099">পরে পড়ার জন্য পড়ার তালিকায় পৃষ্ঠা যোগ করুন</translation>
@@ -422,6 +424,7 @@
 <translation id="3259831549858767975">পৃষ্ঠাতে থাকা সবকিছুকে ছোট করুন</translation>
 <translation id="3264124641674805320">পরে দেখার জন্য কন্টেন্ট কীভাবে ডাউনলোড করবেন</translation>
 <translation id="3264259168916048410">কোনও সাইটে সাইন-ইন করার জন্য আপনার কম্পিউটার এই ডিভাইসটি ব্যবহার করতে চায়</translation>
+<translation id="3265093782546847662"><ph name="DOMAIN" />-এর সব পৃষ্ঠা</translation>
 <translation id="3265534588625245297">আপনার ফলো করা সাইটগুলি ম্যানেজ করুন</translation>
 <translation id="3269093882174072735">ছবি লোড করুন</translation>
 <translation id="3280562213547448728">ভয়েস সার্চ</translation>
@@ -733,6 +736,7 @@
 <translation id="4985248278475639481">পছন্দমতো বিজ্ঞাপন সম্পর্কে</translation>
 <translation id="4987271110129728827">এই পৃষ্ঠাটি খুঁজে পাওয়া যাচ্ছে না। আপনার লেখা বানান চেক করুন বা ওয়েব সার্চ করুন।</translation>
 <translation id="4988526792673242964">পৃষ্ঠাসমূহ</translation>
+<translation id="4991110219272367918">ওয়েবসাইট বন্ধ করা হবে কিনা তা অনুমোদন করা বা না করার বিকল্প</translation>
 <translation id="499724277181351974">নেভিগেট করুন: <ph name="WEBSITE_TITLE" />: <ph name="WEBSITE_URL" /></translation>
 <translation id="5001388021414335527">এই সাইট এখানে ফলো করুন</translation>
 <translation id="500351648694011114">আরও সহজে ব্রাউজ করুন</translation>
@@ -1107,6 +1111,7 @@
 <translation id="6896758677409633944">কপি</translation>
 <translation id="6900532703269623216">উন্নত সুরক্ষা</translation>
 <translation id="6903907808598579934">সিঙ্ক চালু করুন</translation>
+<translation id="6908998565271542516">ওয়েবসাইট সম্পূর্ণ স্ক্রিন জুড়ে খোলা হবে কিনা তা অনুমোদন করা বা না করার বিকল্প</translation>
 <translation id="6909589135458168665">পৃষ্ঠা প্রিলোড করা</translation>
 <translation id="6942665639005891494">সেটিংস মেনুর বিকল্পে গিয়ে যেকোনও সময় ডাউনলোডের ডিফল্ট লোকেশন পরিবর্তন করুন</translation>
 <translation id="694267552845942083">এখন আপনার সিঙ্ক সেটিংস কাস্টমাইজ করছেন। স্ক্রিনের নিচের দিকে থাকা "কনফার্ম করুন" বোতামে ট্যাপ করে সিঙ্ক চালু করুন। উপরের দিকে নেভিগেট করুন</translation>
@@ -1114,6 +1119,7 @@
 <translation id="6955535239952325894">ম্যানেজ করা ব্রাউজারে এই সেটিং কাজ করে না</translation>
 <translation id="6963766334940102469">বুকমার্কগুলি মুছুন</translation>
 <translation id="696447261358045621">ছদ্মবেশী মোড ছেড়ে বেরিয়ে আসুন</translation>
+<translation id="6971862865055170158">অনুমোদন দেবেন না</translation>
 <translation id="6979737339423435258">শুরু থেকে</translation>
 <translation id="6987047470128880212">এই ডিভাইসে ছদ্মবেশী ট্যাব উপলভ্য নেই</translation>
 <translation id="6995899638241819463">আপনার পাসওয়ার্ড কোনও ডেটা নিরাপত্তা লঙ্ঘনের কারণে সর্বজনীনভাবে প্রকাশ হলে তা আপনাকে জানানো হবে</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb
index beb1aa7e..ed07d8c 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb
@@ -340,6 +340,7 @@
 <translation id="2861923151411510142">Algunes funcions de Chrome ja no estaran disponibles</translation>
 <translation id="2870560284913253234">Lloc web</translation>
 <translation id="2871733351037274014">Precàrrega de pàgines</translation>
+<translation id="2876136027428473467"><ph name="CHILD_NAME" /> vol que aprovis aquest lloc web:</translation>
 <translation id="2886836735871983413">Aquí es mostrarà una llista de llocs web a mesura que naveguis pel web</translation>
 <translation id="2888126860611144412">Sobre Chrome</translation>
 <translation id="2891154217021530873">Atura la càrrega de la pàgina</translation>
@@ -355,6 +356,7 @@
 <translation id="2932150158123903946">Emmagatzematge de Google <ph name="APP_NAME" /></translation>
 <translation id="2932222164150889403">El teclat no canviarà</translation>
 <translation id="2936980480904111527">Les notificacions de Chrome faciliten les coses</translation>
+<translation id="2940075786175545812">Opció per aprovar o no aprovar un lloc web</translation>
 <translation id="2942036813789421260">La pestanya de previsualització està tancada</translation>
 <translation id="2946420957526726953">Chrome s'està actualitzant per connectar-se a altres dispositius</translation>
 <translation id="2951071800649516099">Afegeix pàgines a la llista de lectura per a més tard</translation>
@@ -422,6 +424,7 @@
 <translation id="3259831549858767975">Redueix la mida de tots els elements de la pàgina</translation>
 <translation id="3264124641674805320">Com es pot baixar contingut per a més tard</translation>
 <translation id="3264259168916048410">L'ordinador vol utilitzar aquest dispositiu per iniciar la sessió en un lloc web</translation>
+<translation id="3265093782546847662">Totes les pàgines de <ph name="DOMAIN" /></translation>
 <translation id="3265534588625245297">Gestiona els llocs web que segueixes</translation>
 <translation id="3269093882174072735">Carrega la imatge</translation>
 <translation id="3280562213547448728">Cerca per veu</translation>
@@ -731,6 +734,7 @@
 <translation id="4985248278475639481">Sobre la personalització d'anuncis</translation>
 <translation id="4987271110129728827">No es troba aquesta pàgina. Comprova'n l'ortografia o prova de fer una cerca web.</translation>
 <translation id="4988526792673242964">Pàgines</translation>
+<translation id="4991110219272367918">Opció per aprovar o no aprovar un lloc web tancat</translation>
 <translation id="499724277181351974">Navega: <ph name="WEBSITE_TITLE" />: <ph name="WEBSITE_URL" /></translation>
 <translation id="5001388021414335527">Segueix aquest lloc web aquí</translation>
 <translation id="500351648694011114">Navega més fàcilment</translation>
@@ -1105,6 +1109,7 @@
 <translation id="6896758677409633944">Copia</translation>
 <translation id="6900532703269623216">Protecció millorada</translation>
 <translation id="6903907808598579934">Activa la sincronització</translation>
+<translation id="6908998565271542516">Opció per aprovar o no aprovar un lloc web obert a alçada completa</translation>
 <translation id="6909589135458168665">Precàrrega de pàgines</translation>
 <translation id="6942665639005891494">Canvia la ubicació predeterminada de baixada en qualsevol moment amb l'opció del menú Configuració</translation>
 <translation id="694267552845942083">Estàs personalitzant la configuració de la sincronització. Per acabar d'activar la sincronització, toca el botó Confirma que hi ha a la part inferior de la pantalla. Navega cap amunt.</translation>
@@ -1112,6 +1117,7 @@
 <translation id="6955535239952325894">Aquesta opció de configuració està desactivada als navegadors gestionats</translation>
 <translation id="6963766334940102469">Suprimeix les adreces d'interès</translation>
 <translation id="696447261358045621">Surt del mode d'incògnit</translation>
+<translation id="6971862865055170158">No aprovis</translation>
 <translation id="6979737339423435258">Sempre</translation>
 <translation id="6987047470128880212">El mode d'incògnit no està disponible en aquest dispositiu</translation>
 <translation id="6995899638241819463">Rep un advertiment si les contrasenyes queden exposades en l'àmbit d'una violació de les dades</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb
index 18a953d..71c91ef 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb
@@ -340,6 +340,7 @@
 <translation id="2861923151411510142">Mõned Chrome'i funktsioonid pole enam saadaval</translation>
 <translation id="2870560284913253234">Sait</translation>
 <translation id="2871733351037274014">Lehtede eellaadimine</translation>
+<translation id="2876136027428473467"><ph name="CHILD_NAME" /> soovib, et kiidaksite heaks järgmise veebisaidi:</translation>
 <translation id="2886836735871983413">Kui veebi sirvite, kuvatakse siin saitide loend</translation>
 <translation id="2888126860611144412">Teave Chrome'i kohta</translation>
 <translation id="2891154217021530873">Peata lehe laadimine</translation>
@@ -355,6 +356,7 @@
 <translation id="2932150158123903946">Rakenduse Google <ph name="APP_NAME" /> salvestusruum</translation>
 <translation id="2932222164150889403">Teie klaviatuur ei muutu</translation>
 <translation id="2936980480904111527">Chrome'i märguanded lihtsustavad asju</translation>
+<translation id="2940075786175545812">Valik veebisaidi heakskiitmiseks või mitteheakskiitmiseks</translation>
 <translation id="2942036813789421260">Eelvaate vaheleht on suletud</translation>
 <translation id="2946420957526726953">Chrome'i värskendamine, et luua ühendus teiste seadmetega</translation>
 <translation id="2951071800649516099">Lisage lugemisloendisse lehti, mida hiljem lugeda</translation>
@@ -422,6 +424,7 @@
 <translation id="3259831549858767975">Lehel kuvatud sisu vähendamine</translation>
 <translation id="3264124641674805320">Kuidas sisu hilisemaks kasutamiseks alla laadida?</translation>
 <translation id="3264259168916048410">Teie arvuti soovib seda seadet kasutada saidile sisselogimiseks</translation>
+<translation id="3265093782546847662">Kõik domeeni <ph name="DOMAIN" /> lehed</translation>
 <translation id="3265534588625245297">Hallake jälgitavaid saite</translation>
 <translation id="3269093882174072735">Laadi kujutis</translation>
 <translation id="3280562213547448728">Häälotsing</translation>
@@ -731,6 +734,7 @@
 <translation id="4985248278475639481">Reklaamide isikupärastamise teave</translation>
 <translation id="4987271110129728827">Seda lehte ei leitud. Kontrollige õigekirja või proovige veebiotsingut.</translation>
 <translation id="4988526792673242964">Leheküljed</translation>
+<translation id="4991110219272367918">Valik suletud veebisaidi heakskiitmiseks või mitteheakskiitmiseks</translation>
 <translation id="499724277181351974">Navigeerige: <ph name="WEBSITE_TITLE" />: <ph name="WEBSITE_URL" /></translation>
 <translation id="5001388021414335527">Jälgige seda saiti siin</translation>
 <translation id="500351648694011114">Sirvige hõlpsamini</translation>
@@ -1105,6 +1109,7 @@
 <translation id="6896758677409633944">Kopeeri</translation>
 <translation id="6900532703269623216">Parem kaitse</translation>
 <translation id="6903907808598579934">Lülita sünkroonimine sisse</translation>
+<translation id="6908998565271542516">Valik täiskõrgusel avatud veebisaidi heakskiitmiseks või mitteheakskiitmiseks</translation>
 <translation id="6909589135458168665">Lehtede eellaadimine</translation>
 <translation id="6942665639005891494">Allalaadimise vaikeasukohta saab menüü Seaded valikuga alati muuta</translation>
 <translation id="694267552845942083">Kohandate praegu oma sünkroonimisseadeid. Sünkroonimise sisselülitamiseks puudutage ekraani alaosas nuppu Kinnita. Navigeeri üles</translation>
@@ -1112,6 +1117,7 @@
 <translation id="6955535239952325894">See seade on hallatud brauserites keelatud</translation>
 <translation id="6963766334940102469">Kustuta järjehoidjad</translation>
 <translation id="696447261358045621">Lahkumine inkognito režiimist</translation>
+<translation id="6971862865055170158">Ära kiida heaks</translation>
 <translation id="6979737339423435258">Algusest</translation>
 <translation id="6987047470128880212">Inkognito ei ole selles seadmes saadaval</translation>
 <translation id="6995899638241819463">Hoiata mind, kui paroolid andmetega seotud rikkumise käigus avalikustatakse</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb
index e661a4b..32dfdfb9 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb
@@ -340,6 +340,7 @@
 <translation id="2861923151411510142">‏برخی‌از ویژگی‌های Chrome دیگر دردسترس نخواهد بود</translation>
 <translation id="2870560284913253234">سایت</translation>
 <translation id="2871733351037274014">پیش‌بارگیری صفحات</translation>
+<translation id="2876136027428473467"><ph name="CHILD_NAME" /> از شما می‌خواهد این وب‌سایت را تأیید کنید:</translation>
 <translation id="2886836735871983413">همان‌طور که وب را مرور می‌کنید، فهرستی از سایت‌ها در اینجا نشان داده خواهد شد</translation>
 <translation id="2888126860611144412">‏درباره Chrome</translation>
 <translation id="2891154217021530873">توقف بارگیری صفحه</translation>
@@ -355,6 +356,7 @@
 <translation id="2932150158123903946">‏فضای ذخیره‌سازی Google <ph name="APP_NAME" /></translation>
 <translation id="2932222164150889403">صفحه‌کلیدتان تغییر نخواهد کرد</translation>
 <translation id="2936980480904111527">‏اعلان‌های Chrome انجام کارها را آسان‌تر می‌کند</translation>
+<translation id="2940075786175545812">گزینه تأیید کردن یا نکردن وب‌سایت</translation>
 <translation id="2942036813789421260">برگه پیش‌نمایش بسته است</translation>
 <translation id="2946420957526726953">‏درحال به‌روزرسانی Chrome برای اتصال به دستگاه‌های دیگر</translation>
 <translation id="2951071800649516099">صفحه‌ها را برای خواندن در فرصتی دیگر به فهرست خواندن اضافه کنید</translation>
@@ -422,6 +424,7 @@
 <translation id="3259831549858767975">کوچک‌تر کردن همه‌چیز در صفحه</translation>
 <translation id="3264124641674805320">نحوه بارگیری محتوا برای فرصتی دیگر</translation>
 <translation id="3264259168916048410">رایانه‌تان می‌خواهد از این دستگاه برای ورود به سیستم سایتی استفاده کند</translation>
+<translation id="3265093782546847662">همه صفحه‌های <ph name="DOMAIN" /></translation>
 <translation id="3265534588625245297">مدیریت سایت‌هایی که دنبال می‌کنید</translation>
 <translation id="3269093882174072735">بارگیری تصویر</translation>
 <translation id="3280562213547448728">جستجوی گفتاری</translation>
@@ -731,6 +734,7 @@
 <translation id="4985248278475639481">درباره شخصی‌سازی آگهی</translation>
 <translation id="4987271110129728827">صفحه پیدا نشد. املای واژه‌های تایپ‌شده را بررسی کنید یا جستجوی وب انجام دهید.</translation>
 <translation id="4988526792673242964">صفحات</translation>
+<translation id="4991110219272367918">گزینه تأیید کردن یا نکردن وب‌سایت بسته شد</translation>
 <translation id="499724277181351974">پیمایش: <ph name="WEBSITE_TITLE" />: <ph name="WEBSITE_URL" /></translation>
 <translation id="5001388021414335527">این سایت را در اینجا دنبال کنید</translation>
 <translation id="500351648694011114">مرور آسان‌تر</translation>
@@ -1105,6 +1109,7 @@
 <translation id="6896758677409633944">کپی</translation>
 <translation id="6900532703269623216">محافظت بهبودیافته</translation>
 <translation id="6903907808598579934">روشن کردن همگام‌سازی</translation>
+<translation id="6908998565271542516">گزینه تأیید کردن یا نکردن وب‌سایت که به‌طور کامل باز شده است</translation>
 <translation id="6909589135458168665">پیش‌بارگیری صفحات</translation>
 <translation id="6942665639005891494">هرزمان بخواهید می‌توانید با استفاده از منوی «تنظیمات»، محل پیش‌فرض بارگیری را تغییر دهید</translation>
 <translation id="694267552845942083">اکنون درحال سفارشی کردن تنظیمات «همگام‌سازی» هستید. برای تکمیل روشن کردن همگام‌سازی، روی دکمه «تأیید» در پایین صفحه ضربه بزنید. پیمایش به بالا</translation>
@@ -1112,6 +1117,7 @@
 <translation id="6955535239952325894">این تنظیم در مرورگرهای مدیریت‌شده غیرفعال است</translation>
 <translation id="6963766334940102469">حذف نشانک‌ها</translation>
 <translation id="696447261358045621">خروج از «حالت ناشناس»</translation>
+<translation id="6971862865055170158">تأیید نکردن</translation>
 <translation id="6979737339423435258">از ابتدا تا الآن</translation>
 <translation id="6987047470128880212">«حالت ناشناس» در این دستگاه دردسترس نیست</translation>
 <translation id="6995899638241819463">اگر گذرواژه‌ها دراثر سرقت اطلاعات شبکه لورفته باشند، به شما اطلاع داده شود</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb
index a352cb1..e8afb29 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb
@@ -340,6 +340,7 @@
 <translation id="2861923151411510142">Jotkin Chromen ominaisuudet eivä\u2019t ole enää käytettävissä</translation>
 <translation id="2870560284913253234">Sivusto</translation>
 <translation id="2871733351037274014">Sivujen esilataus</translation>
+<translation id="2876136027428473467"><ph name="CHILD_NAME" /> haluaa sinun hyväksyvän tämän sivuston:</translation>
 <translation id="2886836735871983413">Sivustoja lisätään tähän sitä mukaa, kun selaat internetiä</translation>
 <translation id="2888126860611144412">Tietoja Chromesta</translation>
 <translation id="2891154217021530873">Pysäytä sivun lataus</translation>
@@ -355,6 +356,7 @@
 <translation id="2932150158123903946">Tallennustila: Google <ph name="APP_NAME" /></translation>
 <translation id="2932222164150889403">Tämä ei vaikuta näppäimistöön</translation>
 <translation id="2936980480904111527">Chromen ilmoitukset tekevät asioista helpompia</translation>
+<translation id="2940075786175545812">Vaihtoehto hyväksyä tai jättää hyväksymättä verkkosivusto</translation>
 <translation id="2942036813789421260">Esikatseluvälilehti on suljettu</translation>
 <translation id="2946420957526726953">Päivitetään Chrome, jotta voit yhdistää muihin laitteisiin</translation>
 <translation id="2951071800649516099">Lisää sivuja lukulistalle myöhempää käyttöä varten</translation>
@@ -422,6 +424,7 @@
 <translation id="3259831549858767975">Pienennä sivun kaikki sisältö</translation>
 <translation id="3264124641674805320">Miten sisältöä ladataan myöhempää käyttöä varten</translation>
 <translation id="3264259168916048410">Tietokoneesi pyytää tämän laitteen käyttämistä sivustolle kirjautumiseen</translation>
+<translation id="3265093782546847662">Kaikki sivut, joiden verkkotunnus on <ph name="DOMAIN" /></translation>
 <translation id="3265534588625245297">Valitse seurattavat sivustot</translation>
 <translation id="3269093882174072735">Lataa kuva</translation>
 <translation id="3280562213547448728">Puhehaku</translation>
@@ -731,6 +734,7 @@
 <translation id="4985248278475639481">Tietoa mainosten personoinnista</translation>
 <translation id="4987271110129728827">Sivua ei löydy. Tarkista oikeinkirjoitus tai kokeile verkkohakua.</translation>
 <translation id="4988526792673242964">Sivut</translation>
+<translation id="4991110219272367918">Suljetun verkkosivuston hyväksymisen tai hyväksymättä jättämisen vaihtoehto</translation>
 <translation id="499724277181351974">Siirry: <ph name="WEBSITE_TITLE" />: <ph name="WEBSITE_URL" /></translation>
 <translation id="5001388021414335527">Seuraa sivustoa valitsemalla tämä</translation>
 <translation id="500351648694011114">Selaa helpommin</translation>
@@ -1105,6 +1109,7 @@
 <translation id="6896758677409633944">Kopioi</translation>
 <translation id="6900532703269623216">Parannettu suojaus</translation>
 <translation id="6903907808598579934">Ota synkronointi käyttöön</translation>
+<translation id="6908998565271542516">Vaihtoehto hyväksyä tai jättää hyväksymättä koko näytön kokoinen verkkosivusto</translation>
 <translation id="6909589135458168665">Sivujen esilataus</translation>
 <translation id="6942665639005891494">Muuta oletuslataussijaintia milloin tahansa Asetukset-valikon kautta</translation>
 <translation id="694267552845942083">Valitset parhaillaan synkronointiasetuksia. Viimeistele synkronoinnin käyttöönotto napauttamalla näytön alaosasta Vahvista-painiketta. Siirry ylös</translation>
@@ -1112,6 +1117,7 @@
 <translation id="6955535239952325894">Tämä asetus on poistettu käytöstä ylläpidetyillä selaimilla</translation>
 <translation id="6963766334940102469">Poista kirjanmerkkejä</translation>
 <translation id="696447261358045621">Poistu incognito-tilasta</translation>
+<translation id="6971862865055170158">Älä hyväksy</translation>
 <translation id="6979737339423435258">Kaikki</translation>
 <translation id="6987047470128880212">Incognito ei ole käytettävissä tällä laitteella</translation>
 <translation id="6995899638241819463">Varoita, jos salasanoja vaarantuu tietosuojaloukkauksessa</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb
index c7929e2b..da466b6c 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb
@@ -340,6 +340,7 @@
 <translation id="2861923151411510142">Chromeની કેટલીક સુવિધાઓ હવે ઉપલબ્ધ રહેશે નહીં</translation>
 <translation id="2870560284913253234">સાઇટ</translation>
 <translation id="2871733351037274014">પહેલેથી લોડ કરેલા પેજ</translation>
+<translation id="2876136027428473467"><ph name="CHILD_NAME" /> ઇચ્છે છે કે તમે આ વેબસાઇટ માટે મંજૂરી આપો:</translation>
 <translation id="2886836735871983413">જ્યારે તમે વેબ બ્રાઉઝ કરશો, ત્યારે સાઇટની સૂચિ અહીં દેખાશે</translation>
 <translation id="2888126860611144412">Chrome વિશે</translation>
 <translation id="2891154217021530873">પેજ લોડ કરવાનું રોકો</translation>
@@ -355,6 +356,7 @@
 <translation id="2932150158123903946">Google <ph name="APP_NAME" /> સ્ટોરેજ</translation>
 <translation id="2932222164150889403">તમારું કીબોર્ડ બદલાશે નહીં</translation>
 <translation id="2936980480904111527">Chrome નોટિફિકેશન થકી કાર્યો વધુ સરળ બને છે</translation>
+<translation id="2940075786175545812">કોઈ વેબસાઇટને મંજૂરી આપવાનો અથવા ન આપવાનો વિકલ્પ</translation>
 <translation id="2942036813789421260">પ્રીવ્યૂની ટૅબ બંધ કરવામાં આવી</translation>
 <translation id="2946420957526726953">અન્ય ડિવાઇસને કનેક્ટ કરવા માટે, Chrome અપડેટ કરી રહ્યાં છીએ</translation>
 <translation id="2951071800649516099">પછીથી વાંચવા માટે, તમારી વાંચન સૂચિમાં પેજ ઉમેરો</translation>
@@ -422,6 +424,7 @@
 <translation id="3259831549858767975">પેજ પરની તમામ કન્ટેન્ટને નાની કરો</translation>
 <translation id="3264124641674805320">પછીથી ઉપયોગ કરવા માટે કન્ટેન્ટ કેવી રીતે ડાઉનલોડ કરવું</translation>
 <translation id="3264259168916048410">કોઈ સાઇટમાં સાઇન ઇન કરવા માટે તમારું કમ્પ્યુટર આ ડિવાઇસનો ઉપયોગ કરવા માગે છે</translation>
+<translation id="3265093782546847662"><ph name="DOMAIN" />ના બધા પેજ</translation>
 <translation id="3265534588625245297">તમે અનુસરો છો તે સાઇટ મેનેજ કરો</translation>
 <translation id="3269093882174072735">છબી લોડ કરો</translation>
 <translation id="3280562213547448728">વૉઇસ શોધ</translation>
@@ -731,6 +734,7 @@
 <translation id="4985248278475639481">રુચિ મુજબ જાહેરાત વિશે</translation>
 <translation id="4987271110129728827">એ પેજ મળતું નથી. તમારી જોડણી ચેક કરો અથવા વેબ શોધનો પ્રયાસ કરો.</translation>
 <translation id="4988526792673242964">પેજ</translation>
+<translation id="4991110219272367918">કોઈ વેબસાઇટને મંજૂરી આપવાનો અથવા ન આપવાનો વિકલ્પ બંધ કર્યો</translation>
 <translation id="499724277181351974">નૅવિગેટ કરીને આના પર જાઓ: <ph name="WEBSITE_TITLE" />: <ph name="WEBSITE_URL" /></translation>
 <translation id="5001388021414335527">આ સાઇટને અહીં ફૉલો કરો</translation>
 <translation id="500351648694011114">વધુ સરળતાથી બ્રાઉઝ કરો</translation>
@@ -1105,6 +1109,7 @@
 <translation id="6896758677409633944">કૉપિ કરો</translation>
 <translation id="6900532703269623216">વધારેલું સંરક્ષણ</translation>
 <translation id="6903907808598579934">સમન્વયન ચાલુ કરો</translation>
+<translation id="6908998565271542516">કોઈ વેબસાઇટને પૂરી ઊંચાઈ સુધી ખોલવાની મંજૂરી આપવાનો અથવા ન આપવાનો વિકલ્પ</translation>
 <translation id="6909589135458168665">પહેલેથી લોડ કરેલા પેજ</translation>
 <translation id="6942665639005891494">સેટિંગ મેનૂ વિકલ્પનો ઉપયોગ કરીને ડિફૉલ્ટ ડાઉનલોડ સ્થાનને કોઈપણ સમયે બદલો</translation>
 <translation id="694267552845942083">તમે હાલમાં તમારા સિંક સેટિંગને કસ્ટમાઇઝ કરી રહ્યાં છો. સિંક ચાલુ કરવાનું પૂર્ણ કરવા માટે, સ્ક્રીનની નીચેની બાજુએ કન્ફર્મ કરો બટન પર ટૅપ કરો. ઉપર નૅવિગેટ કરો</translation>
@@ -1112,6 +1117,7 @@
 <translation id="6955535239952325894">મેનેજ કરાયેલા બ્રાઉઝર પર આ સેટિંગ બંધ કરવામાં આવ્યું છે</translation>
 <translation id="6963766334940102469">બુકમાર્ક ડિલીટ કરો</translation>
 <translation id="696447261358045621">છૂપો મોડ છોડો</translation>
+<translation id="6971862865055170158">મંજૂરી આપશો નહીં</translation>
 <translation id="6979737339423435258">હંમેશાં</translation>
 <translation id="6987047470128880212">છૂપી ટૅબ આ ડિવાઇસ પર ઉપલબ્ધ નથી</translation>
 <translation id="6995899638241819463">જો ડેટા ઉલ્લંઘનમાં પાસવર્ડ જાહેર થાય તો તમને ચેતવણી આપવામાં આવે છે</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_is.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_is.xtb
index 47c7600..d56bb1b 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_is.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_is.xtb
@@ -340,6 +340,7 @@
 <translation id="2861923151411510142">Tilteknir Chrome eiginleikar verða ekki tiltækir lengur</translation>
 <translation id="2870560284913253234">Vefsvæði</translation>
 <translation id="2871733351037274014">Forhlaða síðum</translation>
+<translation id="2876136027428473467"><ph name="CHILD_NAME" /> biður þig um að samþykkja þetta vefsvæði:</translation>
 <translation id="2886836735871983413">Listi yfir vefsvæði mun birtast hér þegar þú vafrar um vefinn</translation>
 <translation id="2888126860611144412">Um Chrome</translation>
 <translation id="2891154217021530873">Stöðva hleðslu síðu</translation>
@@ -355,6 +356,7 @@
 <translation id="2932150158123903946">Google <ph name="APP_NAME" /> geymslurými</translation>
 <translation id="2932222164150889403">Lyklaborðið þitt breytist ekki</translation>
 <translation id="2936980480904111527">Chrome tilkynningar auðvelda málin</translation>
+<translation id="2940075786175545812">Valkostur til að samþykkja eða samþykkja ekki vefsvæði</translation>
 <translation id="2942036813789421260">Forskoðunarflipi er lokaður</translation>
 <translation id="2946420957526726953">Uppfærir Chrome til að tengjast öðrum tækjum</translation>
 <translation id="2951071800649516099">Bæta síðum á leslistann þinn til síðari nota</translation>
@@ -422,6 +424,7 @@
 <translation id="3259831549858767975">Minnka allt á síðunni</translation>
 <translation id="3264124641674805320">Svona sækirðu efni til að nota síðar</translation>
 <translation id="3264259168916048410">Tölvan vill nota þetta tæki til að skrá inn á vefsvæði</translation>
+<translation id="3265093782546847662">Allar síður á <ph name="DOMAIN" /></translation>
 <translation id="3265534588625245297">Stjórna vefsvæðunum sem þú fylgir</translation>
 <translation id="3269093882174072735">Hlaða mynd</translation>
 <translation id="3280562213547448728">Raddleit</translation>
@@ -731,6 +734,7 @@
 <translation id="4985248278475639481">Um sérsniðnar auglýsingar</translation>
 <translation id="4987271110129728827">Finn ekki síðuna. Athugaðu stafsetninguna eða prófaðu vefleit.</translation>
 <translation id="4988526792673242964">Síður</translation>
+<translation id="4991110219272367918">Valkosti til að samþykkja eða samþykkja ekki vefsvæði lokað</translation>
 <translation id="499724277181351974">Opna: <ph name="WEBSITE_TITLE" />: <ph name="WEBSITE_URL" /></translation>
 <translation id="5001388021414335527">Fylgja þessu vefsvæði hér</translation>
 <translation id="500351648694011114">Auðveldari vefskoðun</translation>
@@ -1105,6 +1109,7 @@
 <translation id="6896758677409633944">Afrita</translation>
 <translation id="6900532703269623216">Aukin vörn</translation>
 <translation id="6903907808598579934">Kveikja á samstillingu</translation>
+<translation id="6908998565271542516">Valkostur til að samþykkja eða samþykkja ekki vefsvæði opnaður í fullri hæð</translation>
 <translation id="6909589135458168665">Forhlaða síðum</translation>
 <translation id="6942665639005891494">Þú getur breytt staðsetningu niðurhals hvenær sem er með því að nota valkostinn í stillingavalmyndinni</translation>
 <translation id="694267552845942083">Þú ert að sérstilla samstillingu. Til að ljúka við að kveikja á samstillingu skaltu ýta á hnappinn „Staðfesta“ neðarlega á skjánum. Fara upp</translation>
@@ -1112,6 +1117,7 @@
 <translation id="6955535239952325894">Slökkt er á þessari stillingu í stýrðum vöfrum</translation>
 <translation id="6963766334940102469">Eyða bókamerkjum</translation>
 <translation id="696447261358045621">Slökkva á huliðsstillingu</translation>
+<translation id="6971862865055170158">Ekki samþykkja</translation>
 <translation id="6979737339423435258">Frá upphafi</translation>
 <translation id="6987047470128880212">Huliðsstilling er ekki í boði í þessu tæki</translation>
 <translation id="6995899638241819463">Láta vita ef aðgangsorðin þín eru afhjúpuð vegna öryggisbrots</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb
index 2ab7dbf..bf37777 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb
@@ -340,6 +340,7 @@
 <translation id="2861923151411510142">Alcune funzionalità di Chrome non saranno più disponibili</translation>
 <translation id="2870560284913253234">Sito</translation>
 <translation id="2871733351037274014">Precarica le pagine</translation>
+<translation id="2876136027428473467"><ph name="CHILD_NAME" /> ha chiesto la tua approvazione per il seguente sito web:</translation>
 <translation id="2886836735871983413">Qui verrà visualizzato un elenco di siti quando navighi sul Web</translation>
 <translation id="2888126860611144412">Informazioni su Chrome</translation>
 <translation id="2891154217021530873">Interrompe il caricamento della pagina</translation>
@@ -355,6 +356,7 @@
 <translation id="2932150158123903946">Spazio di archiviazione di Google <ph name="APP_NAME" /></translation>
 <translation id="2932222164150889403">La tua tastiera resterà invariata</translation>
 <translation id="2936980480904111527">Le notifiche di Chrome semplificano le cose</translation>
+<translation id="2940075786175545812">Opzione per approvare o meno un sito web</translation>
 <translation id="2942036813789421260">La scheda di anteprima è chiusa</translation>
 <translation id="2946420957526726953">Aggiornamento di Chrome per la connessione ad altri dispositivi</translation>
 <translation id="2951071800649516099">Aggiungi pagine al tuo Elenco di lettura per consultarle in un secondo momento</translation>
@@ -422,6 +424,7 @@
 <translation id="3259831549858767975">Rimpicciolisci i contenuti della pagina</translation>
 <translation id="3264124641674805320">Come scaricare contenuti da usare in un secondo momento</translation>
 <translation id="3264259168916048410">Il computer chiede di usare questo dispositivo per accedere a un sito</translation>
+<translation id="3265093782546847662">Tutte le pagine di <ph name="DOMAIN" /></translation>
 <translation id="3265534588625245297">Gestisci i siti che segui</translation>
 <translation id="3269093882174072735">Carica immagine</translation>
 <translation id="3280562213547448728">Ricerca vocale</translation>
@@ -731,6 +734,7 @@
 <translation id="4985248278475639481">Informazioni sulla personalizzazione degli annunci</translation>
 <translation id="4987271110129728827">Impossibile trovare la pagina. Controlla l'ortografia o prova a effettuare una ricerca web.</translation>
 <translation id="4988526792673242964">Pagine</translation>
+<translation id="4991110219272367918">Opzione per approvare o meno un sito web chiuso</translation>
 <translation id="499724277181351974">Vai: <ph name="WEBSITE_TITLE" />: <ph name="WEBSITE_URL" /></translation>
 <translation id="5001388021414335527">Segui questo sito qui</translation>
 <translation id="500351648694011114">Naviga più facilmente</translation>
@@ -1105,6 +1109,7 @@
 <translation id="6896758677409633944">Copia</translation>
 <translation id="6900532703269623216">Protezione avanzata</translation>
 <translation id="6903907808598579934">Attiva la sincronizzazione</translation>
+<translation id="6908998565271542516">Opzione per approvare o meno un sito web aperto a schermo intero</translation>
 <translation id="6909589135458168665">Precarica le pagine</translation>
 <translation id="6942665639005891494">Modifica in qualsiasi momento il percorso di download predefinito utilizzando l'opzione del menu Impostazioni</translation>
 <translation id="694267552845942083">Stai personalizzando le impostazioni di sincronizzazione. Per terminare l'attivazione della sincronizzazione, tocca il pulsante Conferma nella parte inferiore dello schermo. Torna indietro</translation>
@@ -1112,6 +1117,7 @@
 <translation id="6955535239952325894">Questa impostazione è disattivata sui browser gestiti</translation>
 <translation id="6963766334940102469">Elimina Preferiti</translation>
 <translation id="696447261358045621">Esci dalla modalità di navigazione in incognito</translation>
+<translation id="6971862865055170158">Non approvare</translation>
 <translation id="6979737339423435258">Dall'inizio</translation>
 <translation id="6987047470128880212">La modalità in incognito non è disponibile su questo dispositivo.</translation>
 <translation id="6995899638241819463">Ricevi un avviso se le password vengono esposte a causa di una violazione dei dati</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_km.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_km.xtb
index 960fa37..e6f2760 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_km.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_km.xtb
@@ -340,6 +340,7 @@
 <translation id="2861923151411510142">មុខងារ Chrome មួយចំនួន​នឹង​មិន​អាច​ប្រើ​បាន​ទៀតទេ</translation>
 <translation id="2870560284913253234">គេហទំព័រ</translation>
 <translation id="2871733351037274014">ផ្ទុកទំព័រ​ជាមុន</translation>
+<translation id="2876136027428473467"><ph name="CHILD_NAME" /> ចង់​ឱ្យ​អ្នក​អនុញ្ញាត​គេហទំព័រ​នេះ៖</translation>
 <translation id="2886836735871983413">បញ្ជី​គេហទំព័រ​នឹង​បង្ហាញ​នៅត្រង់នេះ នៅពេលដែលអ្នក​រុករកលើ​បណ្ដាញ</translation>
 <translation id="2888126860611144412">អំពី Chrome</translation>
 <translation id="2891154217021530873">បញ្ឈប់ដំណើរការទំព័រ</translation>
@@ -355,6 +356,7 @@
 <translation id="2932150158123903946">ទំហំផ្ទុក Google <ph name="APP_NAME" /></translation>
 <translation id="2932222164150889403">ក្ដារចុច​របស់អ្នក​នឹងមិន​ផ្លាស់ប្ដូរ​ទេ</translation>
 <translation id="2936980480904111527">ការជូនដំណឹងនៅលើ Chrome ធ្វើឱ្យអ្វីៗកាន់តែងាយស្រួល</translation>
+<translation id="2940075786175545812">ជម្រើស​អនុញ្ញាត ឬ​មិនអនុញ្ញាត​គេហទំព័រ</translation>
 <translation id="2942036813789421260">ផ្ទាំងមើលសាកល្បងបាន​បិទ</translation>
 <translation id="2946420957526726953">កំពុង​ដំឡើងកំណែ Chrome ដើម្បីភ្ជាប់ជាមួយ​ឧបករណ៍​ផ្សេងទៀត</translation>
 <translation id="2951071800649516099">បញ្ចូលទំព័រទៅក្នុងបញ្ជីអានរបស់អ្នកសម្រាប់អានពេលក្រោយ</translation>
@@ -422,6 +424,7 @@
 <translation id="3259831549858767975">ធ្វើឲ្យអ្វីគ្រប់យ៉ាងនៅលើទំព័រនេះតូចជាងមុន</translation>
 <translation id="3264124641674805320">របៀបទាញយកខ្លឹមសារទុកប្រើពេលក្រោយ</translation>
 <translation id="3264259168916048410">កុំព្យូទ័រ​របស់អ្នក​ចង់ប្រើ​ឧបករណ៍​នេះ ដើម្បី​ចូលទៅកាន់​គេហទំព័រ</translation>
+<translation id="3265093782546847662">ទំព័រទាំងអស់នៃ <ph name="DOMAIN" /></translation>
 <translation id="3265534588625245297">គ្រប់គ្រង​គេហទំព័រ​ដែលអ្នក​តាមដាន</translation>
 <translation id="3269093882174072735">ដំណើរការរូបភាព</translation>
 <translation id="3280562213547448728">ស្វែងរក​តាម​សំឡេង</translation>
@@ -731,6 +734,7 @@
 <translation id="4985248278475639481">អំពី​ការកំណត់​ការផ្សាយពាណិជ្ជកម្ម​ឱ្យស្របតាមបុគ្គល</translation>
 <translation id="4987271110129728827">រកមិនឃើញទំព័រនោះទេ។ សូមពិនិត្យមើលអក្ខរាវិរុទ្ធរបស់អ្នក ឬសាកល្បងស្វែងរក​តាមអ៊ីនធឺណិត។</translation>
 <translation id="4988526792673242964">ទំព័រ</translation>
+<translation id="4991110219272367918">ជម្រើស​អនុញ្ញាត ឬ​មិនអនុញ្ញាត​គេហទំព័រ​ដែលបានបិទ</translation>
 <translation id="499724277181351974">រុករក៖ <ph name="WEBSITE_TITLE" />៖ <ph name="WEBSITE_URL" /></translation>
 <translation id="5001388021414335527">តាមដានគេហទំព័រនេះនៅទីនេះ</translation>
 <translation id="500351648694011114">រុករកកាន់តែងាយស្រួល</translation>
@@ -1105,6 +1109,7 @@
 <translation id="6896758677409633944">ចម្លង</translation>
 <translation id="6900532703269623216">ការការពារ​ដែលប្រសើរជាងមុន</translation>
 <translation id="6903907808598579934">បើកសមកាលកម្ម</translation>
+<translation id="6908998565271542516">ជម្រើស​អនុញ្ញាត ឬ​មិន​អនុញ្ញាត​គេហទំព័រ​ដែលបានបើក​ពេញអេក្រង់</translation>
 <translation id="6909589135458168665">ផ្ទុកទំព័រ​ជាមុន</translation>
 <translation id="6942665639005891494">ប្ដូរ​ទីតាំង​ទាញយក​លំនាំដើម​បាន​គ្រប់ពេល​ដោយ​ប្រើ​ជម្រើ​សម៉ឺនុយ​​ការកំណត់</translation>
 <translation id="694267552845942083">បច្ចុប្បន្ន អ្នកកំពុងប្ដូរ​ការកំណត់​ការធ្វើសមកាលកម្ម​តាមបំណង​របស់អ្នក។ ដើម្បីបញ្ចប់ការបើក​សមកាលកម្ម សូមចុចប៊ូតុង "បញ្ជាក់" នៅជិតផ្នែកខាងក្រោម​នៃអេក្រង់។ រំកិលឡើងលើ</translation>
@@ -1112,6 +1117,7 @@
 <translation id="6955535239952325894">ការកំណត់​នេះត្រូវបានបិទនៅលើកម្មវិធីរុករកតាមអ៊ីនធឺណិតដែលស្ថិតក្រោមការគ្រប់គ្រង</translation>
 <translation id="6963766334940102469">លុបចំណាំ</translation>
 <translation id="696447261358045621">ចាកចេញពី​មុខងារ​ឯកជន</translation>
+<translation id="6971862865055170158">មិនអនុញ្ញាត</translation>
 <translation id="6979737339423435258">គ្រប់​ពេល</translation>
 <translation id="6987047470128880212">មិនអាចប្រើមុខងារឯកជន​នៅលើឧបករណ៍​នេះបានទេ</translation>
 <translation id="6995899638241819463">ទទួលបាន​ការព្រមាន ប្រសិនបើ​ពាក្យសម្ងាត់​​បែកធ្លាយ​នៅក្នុង​ការបំពាន​ទិន្នន័យ</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_kn.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_kn.xtb
index 2b1b189..4181e9f 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_kn.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_kn.xtb
@@ -340,6 +340,7 @@
 <translation id="2861923151411510142">ಕೆಲವು Chrome ವೈಶಿಷ್ಟ್ಯಗಳು ಇನ್ನು ಮುಂದೆ ಲಭ್ಯವಿರುವುದಿಲ್ಲ</translation>
 <translation id="2870560284913253234">ಸೈಟ್</translation>
 <translation id="2871733351037274014">ಪುಟಗಳನ್ನು ಮುಂಚಿತವಾಗಿ ಲೋಡ್ ಮಾಡಿ</translation>
+<translation id="2876136027428473467"><ph name="CHILD_NAME" /> ಅವರು ನೀವು ಈ ವೆಬ್‌ಸೈಟ್‌ಗೆ ಅನುಮೋದಿಸಬೇಕೆಂದು ಬಯಸುತ್ತಿದ್ದಾರೆ:</translation>
 <translation id="2886836735871983413">ನೀವು ವೆಬ್ ಅನ್ನು ಬ್ರೌಸ್ ಮಾಡುತ್ತಿದ್ದಂತೆ ಸೈಟ್‌ಗಳ ಪಟ್ಟಿ ಇಲ್ಲಿ ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತದೆ</translation>
 <translation id="2888126860611144412">Chrome ಕುರಿತು</translation>
 <translation id="2891154217021530873">ಪುಟ ಲೋಡ್ ಮಾಡುವುದನ್ನು ನಿಲ್ಲಿಸಿ</translation>
@@ -355,6 +356,7 @@
 <translation id="2932150158123903946">Google <ph name="APP_NAME" /> ಸಂಗ್ರಹಣೆ</translation>
 <translation id="2932222164150889403">ನಿಮ್ಮ ಕೀಬೋರ್ಡ್ ಬದಲಾಗುವುದಿಲ್ಲ</translation>
 <translation id="2936980480904111527">Chrome ಅಧಿಸೂಚನೆಗಳು ಕೆಲಸಗಳನ್ನು ಸುಲಭವಾಗಿಸುತ್ತವೆ</translation>
+<translation id="2940075786175545812">ವೆಬ್‌ಸೈಟ್ ಅನ್ನು ಅನುಮೋದಿಸುವ ಅಥವಾ ಅನುಮೋದಿಸದಿರುವ ಕುರಿತ ಆಯ್ಕೆ</translation>
 <translation id="2942036813789421260">ಪೂರ್ವವೀಕ್ಷಣೆ ಟ್ಯಾಬ್ ಮುಚ್ಚಿದೆ</translation>
 <translation id="2946420957526726953">Chrome ಅನ್ನು ಇತರ ಸಾಧನಗಳಿಗೆ ಕನೆಕ್ಟ್ ಮಾಡಲು ಅಪ್‌ಡೇಟ್ ಮಾಡಲಾಗುತ್ತಿದೆ</translation>
 <translation id="2951071800649516099">ನಂತರದಲ್ಲಿ ನಿಮ್ಮ ಓದುವ ಪಟ್ಟಿಗೆ ಪುಟಗಳನ್ನು ಸೇರಿಸಿ</translation>
@@ -422,6 +424,7 @@
 <translation id="3259831549858767975">ಪುಟದಲ್ಲಿರುವ ಪ್ರತಿಯೊಂದನ್ನೂ ಚಿಕ್ಕದಾಗಿಸಿ</translation>
 <translation id="3264124641674805320">ನಂತರದ ಬಳಕೆಗೆ ವಿಷಯವನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡುವುದು ಹೇಗೆ</translation>
 <translation id="3264259168916048410">ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್, ಸೈಟ್‌ಗೆ ಸೈನ್ ಇನ್ ಮಾಡಲು ಈ ಸಾಧನವನ್ನು ಬಳಸಲು ಬಯಸುತ್ತದೆ</translation>
+<translation id="3265093782546847662"><ph name="DOMAIN" /> ನ ಎಲ್ಲಾ ಪುಟಗಳು</translation>
 <translation id="3265534588625245297">ನೀವು ಫಾಲೋ ಮಾಡುವ ಸೈಟ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸಿ</translation>
 <translation id="3269093882174072735">ಚಿತ್ರ ಲೋಡ್ ಮಾಡಿ</translation>
 <translation id="3280562213547448728">ಧ್ವನಿ ಹುಡುಕಾಟ</translation>
@@ -730,6 +733,7 @@
 <translation id="4985248278475639481">ಜಾಹೀರಾತು ವೈಯಕ್ತಿಕಗೊಳಿಸುವಿಕೆಯ ಕುರಿತು</translation>
 <translation id="4987271110129728827">ಆ ಪುಟ ಕಂಡುಬರುತ್ತಿಲ್ಲ. ನಿಮ್ಮ ಕಾಗುಣಿತವನ್ನು ಪರಿಶೀಲಿಸಿ ಅಥವಾ ವೆಬ್‌ನಲ್ಲಿ ಹುಡುಕಿ ನೋಡಿ.</translation>
 <translation id="4988526792673242964">ಪುಟಗಳು</translation>
+<translation id="4991110219272367918">ವೆಬ್‌ಸೈಟ್ ಅನ್ನು ಅನುಮೋದಿಸುವ ಅಥವಾ ಅನುಮೋದಿಸದಿರುವ ಕುರಿತ ಆಯ್ಕೆಯನ್ನು ಮುಚ್ಚಲಾಗಿದೆ</translation>
 <translation id="499724277181351974">ನ್ಯಾವಿಗೇಟ್ ಮಾಡಿ: <ph name="WEBSITE_TITLE" />: <ph name="WEBSITE_URL" /></translation>
 <translation id="5001388021414335527">ಇಲ್ಲಿ ಈ ಸೈಟ್ ಅನ್ನು ಫಾಲೋ ಮಾಡಿ</translation>
 <translation id="500351648694011114">ಹೆಚ್ಚು ಸುಲಭವಾಗಿ ಬ್ರೌಸ್ ಮಾಡಿ</translation>
@@ -1104,6 +1108,7 @@
 <translation id="6896758677409633944">ನಕಲಿಸು</translation>
 <translation id="6900532703269623216">ವರ್ಧಿತ ಸುರಕ್ಷತೆ</translation>
 <translation id="6903907808598579934">ಸಿಂಕ್‌ ಆನ್‌ ಮಾಡಿ</translation>
+<translation id="6908998565271542516">ವೆಬ್‌ಸೈಟ್ ಅನ್ನು ಅನುಮೋದಿಸುವ ಅಥವಾ ಅನುಮೋದಿಸದಿರುವ ಕುರಿತ ಆಯ್ಕೆಯನ್ನು ಪೂರ್ಣ ಎತ್ತರದಲ್ಲಿ ತೆರೆಯಲಾಗಿದೆ</translation>
 <translation id="6909589135458168665">ಪುಟಗಳನ್ನು ಮುಂಚಿತವಾಗಿ ಲೋಡ್ ಮಾಡಿ</translation>
 <translation id="6942665639005891494">ಸೆಟ್ಟಿಂಗ್‌ಗಳ ಮೆನು ಆಯ್ಕೆಯನ್ನು ಬಳಸಿ, ಡಿಫಾಲ್ಟ್ ಡೌನ್‌ಲೋಡ್ ಸ್ಥಳವನ್ನು ಯಾವಾಗ ಬೇಕಾದರೂ ಬದಲಾಯಿಸಿ</translation>
 <translation id="694267552845942083">ನೀವು ಪ್ರಸ್ತುತ ನಿಮ್ಮ ಸಿಂಕ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡುತ್ತಿದ್ದೀರಿ. ಸಿಂಕ್ ಆನ್ ಮಾಡುವುದನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು, ಸ್ಕ್ರೀನ್‌ನ ಕೆಳಭಾಗದ ಸಮೀಪದಲ್ಲಿರುವ 'ದೃಢೀಕರಿಸಿ' ಬಟನ್ ಟ್ಯಾಪ್ ಮಾಡಿ. ಮೇಲಕ್ಕೆ ನ್ಯಾವಿಗೇಟ್ ಮಾಡಿ</translation>
@@ -1111,6 +1116,7 @@
 <translation id="6955535239952325894">ನಿರ್ವಹಿಸಲಾದ ಬ್ರೌಸರ್‌ಗಳಲ್ಲಿ ಈ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ</translation>
 <translation id="6963766334940102469">ಬುಕ್‌ಮಾರ್ಕ್‌ಗಳನ್ನು ಅಳಿಸಿ</translation>
 <translation id="696447261358045621">ಅಜ್ಞಾತ ಮೋಡ್‌‌ ಅನ್ನು ತೊರೆಯಿರಿ</translation>
+<translation id="6971862865055170158">ಅನುಮೋದಿಸಬೇಡಿ</translation>
 <translation id="6979737339423435258">ಎಲ್ಲ ಸಮಯ</translation>
 <translation id="6987047470128880212">ಈ ಸಾಧನದಲ್ಲಿ ಅಜ್ಞಾತ ಮೋಡ್ ಲಭ್ಯವಿಲ್ಲ</translation>
 <translation id="6995899638241819463">ಡೇಟಾ ಉಲ್ಲಂಘನೆಯಿಂದಾಗಿ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಬಹಿರಂಗಪಡಿಸಿದರೆ ನಿಮಗೆ ಎಚ್ಚರಿಕೆ ನೀಡಲಾಗುತ್ತದೆ</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb
index ab0dee0..7400474 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb
@@ -340,6 +340,7 @@
 <translation id="2861923151411510142">일부 Chrome 기능을 더 이상 사용할 수 없게 됩니다.</translation>
 <translation id="2870560284913253234">사이트</translation>
 <translation id="2871733351037274014">페이지 미리 로드</translation>
+<translation id="2876136027428473467"><ph name="CHILD_NAME" />님이 다음 웹사이트의 승인을 요청했습니다.</translation>
 <translation id="2886836735871983413">웹을 탐색하면 여기에 사이트 목록이 표시됩니다.</translation>
 <translation id="2888126860611144412">Chrome 정보</translation>
 <translation id="2891154217021530873">페이지 로딩 중지</translation>
@@ -355,6 +356,7 @@
 <translation id="2932150158123903946">Google <ph name="APP_NAME" /> 저장공간</translation>
 <translation id="2932222164150889403">키보드는 변경되지 않습니다</translation>
 <translation id="2936980480904111527">Chrome 알림으로 더 간편하게 작업하세요</translation>
+<translation id="2940075786175545812">웹사이트 승인 또는 비승인 옵션</translation>
 <translation id="2942036813789421260">미리보기 탭 닫힘</translation>
 <translation id="2946420957526726953">다른 기기에 연결하기 위해 Chrome을 업데이트하는 중</translation>
 <translation id="2951071800649516099">나중에 읽을 수 있도록 읽기 목록에 페이지를 추가합니다.</translation>
@@ -422,6 +424,7 @@
 <translation id="3259831549858767975">페이지의 모든 항목 축소</translation>
 <translation id="3264124641674805320">나중에 보기 위해 콘텐츠를 다운로드하는 방법</translation>
 <translation id="3264259168916048410">컴퓨터가 사이트에 로그인하기 위해 기기를 사용하려고 합니다.</translation>
+<translation id="3265093782546847662"><ph name="DOMAIN" />의 모든 페이지</translation>
 <translation id="3265534588625245297">팔로우하는 사이트 관리</translation>
 <translation id="3269093882174072735">이미지 로드</translation>
 <translation id="3280562213547448728">음성 검색</translation>
@@ -731,6 +734,7 @@
 <translation id="4985248278475639481">광고 개인 최적화 알아보기</translation>
 <translation id="4987271110129728827">페이지를 찾을 수 없습니다. 철자를 확인하거나 웹 검색을 이용해 보세요.</translation>
 <translation id="4988526792673242964">페이지</translation>
+<translation id="4991110219272367918">웹사이트 승인 또는 비승인 옵션 닫힘</translation>
 <translation id="499724277181351974">이동: <ph name="WEBSITE_TITLE" />: <ph name="WEBSITE_URL" /></translation>
 <translation id="5001388021414335527">여기에서 사이트를 팔로우하세요</translation>
 <translation id="500351648694011114">더 간편하게 탐색하기</translation>
@@ -1105,6 +1109,7 @@
 <translation id="6896758677409633944">복사</translation>
 <translation id="6900532703269623216">향상된 보호 모드</translation>
 <translation id="6903907808598579934">동기화 사용 설정</translation>
+<translation id="6908998565271542516">웹사이트 승인 또는 비승인 옵션이 전체 높이로 열림</translation>
 <translation id="6909589135458168665">페이지 미리 로드</translation>
 <translation id="6942665639005891494">언제든지 설정 메뉴 옵션으로 기본 다운로드 위치 변경 가능</translation>
 <translation id="694267552845942083">현재 동기화 설정을 맞춤설정 중입니다. 동기화 사용 설정을 마무리하려면 화면 하단 근처에 있는 확인 버튼을 탭하세요. 위로 이동</translation>
@@ -1112,6 +1117,7 @@
 <translation id="6955535239952325894">관리 브라우저에서 설정이 사용 중지됨</translation>
 <translation id="6963766334940102469">북마크 삭제</translation>
 <translation id="696447261358045621">시크릿 모드 종료</translation>
+<translation id="6971862865055170158">승인 안함</translation>
 <translation id="6979737339423435258">전체 기간</translation>
 <translation id="6987047470128880212">이 기기에서는 시크릿 모드를 사용할 수 없습니다.</translation>
 <translation id="6995899638241819463">데이터 유출로 인해 비밀번호가 노출된 경우 알림</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ky.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ky.xtb
index c176aa1..af68e64 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ky.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ky.xtb
@@ -340,6 +340,7 @@
 <translation id="2861923151411510142">Айрым Chrome функциялары мындан ары иштебейт</translation>
 <translation id="2870560284913253234">Сайт</translation>
 <translation id="2871733351037274014">Барактарды алдын ала жүктөө</translation>
+<translation id="2876136027428473467"><ph name="CHILD_NAME" /> төмөндөгү вебсайтты ырастоону суранып жатат:</translation>
 <translation id="2886836735871983413">Сайттардын тизмеси Интернеттеги аракеттериңизге жараша көрсөтүлөт</translation>
 <translation id="2888126860611144412">Chrome тууралуу</translation>
 <translation id="2891154217021530873">Беттин жүктөлүшүн токтотуу</translation>
@@ -355,6 +356,7 @@
 <translation id="2932150158123903946">Google <ph name="APP_NAME" /> сактагычы</translation>
 <translation id="2932222164150889403">Баскычтоп өзгөрбөйт</translation>
 <translation id="2936980480904111527">Chrome билдирмелери ишти жеңилдетет</translation>
+<translation id="2940075786175545812">Вебсайтты ырастоо же ырастабоо параметри</translation>
 <translation id="2942036813789421260">Алдын ала көрүү өтмөгү жабылды</translation>
 <translation id="2946420957526726953">Башка түзмөктөргө туташуу үчүн Chrome'ду жаңыртыңыз</translation>
 <translation id="2951071800649516099">Кийинкиге окуу тизмеңизге барактарды кошуңуз</translation>
@@ -422,6 +424,7 @@
 <translation id="3259831549858767975">Барактагы бардык нерселерди кичирейтүү</translation>
 <translation id="3264124641674805320">Кийинкиге мазмунду кантип жүктөп алса болот</translation>
 <translation id="3264259168916048410">Компьютериңиз бул түзмөктү сайтка кирүү үчүн колдонгусу келет</translation>
+<translation id="3265093782546847662"><ph name="DOMAIN" /> сайтынын бардык барактары</translation>
 <translation id="3265534588625245297">Жазылган сайттарды башкаруу</translation>
 <translation id="3269093882174072735">Сүрөттү жүктөө</translation>
 <translation id="3280562213547448728">Оозеки издөө</translation>
@@ -731,6 +734,7 @@
 <translation id="4985248278475639481">Жарнамаларды жекелештирүү жөнүндө маалымат</translation>
 <translation id="4987271110129728827">Ал бет табылбай жатат. Ал туура жазылганын текшериңиз же Интернеттен издеп көрүңүз.</translation>
 <translation id="4988526792673242964">Барактар</translation>
+<translation id="4991110219272367918">Вебсайтты ырастоо же ырастабоо параметри жабылды</translation>
 <translation id="499724277181351974">Өтүү: <ph name="WEBSITE_TITLE" />: <ph name="WEBSITE_URL" /></translation>
 <translation id="5001388021414335527">Бул сайтка ушул жерден көз салуу</translation>
 <translation id="500351648694011114">Оңой серептеңиз</translation>
@@ -1105,6 +1109,7 @@
 <translation id="6896758677409633944">Көчүрүү</translation>
 <translation id="6900532703269623216">Жакшыртылган коргоо</translation>
 <translation id="6903907808598579934">Шайкештирүүнү күйгүзүү</translation>
+<translation id="6908998565271542516">Вебсайтты ырастоо же ырастабоо параметри толук экранда ачылды</translation>
 <translation id="6909589135458168665">Барактарды алдын ала жүктөө</translation>
 <translation id="6942665639005891494">Жүктөлүп алынгандар үчүн демейки папканы каалаган убакта "Жөндөөлөр" менюсунан өзгөртүңүз</translation>
 <translation id="694267552845942083">Учурда Шайкештирүү жөндөөлөрүн ыңгайлаштырып жатасыз. Шайкештирүүнү күйүгүзүү үчүн экрандын ылдый жагында жайгашкан "Ырастоо" баскычын таптап коюңуз. Мурунку экранга өтүү</translation>
@@ -1112,6 +1117,7 @@
 <translation id="6955535239952325894">Бул жөндөө көзөмөлдөнгөн серепчилерде өчүрүлгөн</translation>
 <translation id="6963766334940102469">Кыстармаларды жок кылуу</translation>
 <translation id="696447261358045621">Жашыруун режимден чыгуу</translation>
+<translation id="6971862865055170158">Ырасталбасын</translation>
 <translation id="6979737339423435258">Бардыгы</translation>
 <translation id="6987047470128880212">Бул түзмөктө жашыруун өтмөк жок</translation>
 <translation id="6995899638241819463">Сырсөзүңүздү кимдир-бирөө билип алса, эскертүү жөнөтүлсүн</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lo.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lo.xtb
index fb5553f..0455f49 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lo.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lo.xtb
@@ -340,6 +340,7 @@
 <translation id="2861923151411510142">ຄຸນສົມບັດ Chrome ບາງຢ່າງບໍ່ສາມາດໃຊ້ໄດ້ອີກຕໍ່ໄປ</translation>
 <translation id="2870560284913253234">ເວັບ​ໄຊທ໌</translation>
 <translation id="2871733351037274014">ໂຫຼດໜ້າກ່ອນລ່ວງໜ້າ</translation>
+<translation id="2876136027428473467"><ph name="CHILD_NAME" /> ຕ້ອງການໃຫ້ທ່ານອະນຸມັດເວັບໄຊນີ້:</translation>
 <translation id="2886836735871983413">ລາຍຊື່ຂອງເວັບໄຊຈະປາກົດຢູ່ບ່ອນນີ້ໃນເວລາທີ່ທ່ານທ່ອງເວັບ</translation>
 <translation id="2888126860611144412">ກ່ຽວ​ກັບ Chrome</translation>
 <translation id="2891154217021530873">ຢຸດ​ການໂຫຼດ​ຫນ້າ</translation>
@@ -355,6 +356,7 @@
 <translation id="2932150158123903946">ບ່ອນເກັບຂໍ້ມູນ Google <ph name="APP_NAME" /></translation>
 <translation id="2932222164150889403">ແປ້ນພິມຂອງທ່ານຈະບໍ່ປ່ຽນແປງ</translation>
 <translation id="2936980480904111527">ການແຈ້ງເຕືອນ Chrome ເຮັດໃຫ້ສິ່ງຕ່າງໆງ່າຍຂຶ້ນ</translation>
+<translation id="2940075786175545812">ຕົວເລືອກເພື່ອອະນຸມັດ ຫຼື ບໍ່ອະນຸມັດ</translation>
 <translation id="2942036813789421260">ແຖບສະແດງຕົວຢ່າງປິດຢູ່</translation>
 <translation id="2946420957526726953">ກຳລັງອັບເດດ Chrome ເພື່ອເຊື່ອມຕໍ່ຫາອຸປະກອນອື່ນ</translation>
 <translation id="2951071800649516099">ເພີ່ມໜ້າໃສ່ລາຍຊື່ການອ່ານສຳລັບພາຍຫຼັງ</translation>
@@ -422,6 +424,7 @@
 <translation id="3259831549858767975">ເຮັດໃຫ້ທຸກຢ່າງໃນໜ້ານ້ອຍລົງ</translation>
 <translation id="3264124641674805320">ວິທີດາວໂຫຼດເນື້ອຫາສຳລັບພາຍຫຼັງ</translation>
 <translation id="3264259168916048410">ຄອມພິວເຕີຂອງທ່ານຕ້ອງການໃຊ້ອຸປະກອນນີ້ເພື່ອເຂົ້າສູ່ລະບົບຫາເວັບໄຊ</translation>
+<translation id="3265093782546847662">ໜ້າທັງໝົດຂອງ <ph name="DOMAIN" /></translation>
 <translation id="3265534588625245297">ຈັດການເວັບໄຊທີ່ທ່ານຕິດຕາມ</translation>
 <translation id="3269093882174072735">ໂຫຼດ​ຮູບ</translation>
 <translation id="3280562213547448728">ຊອກຫາດ້ວຍສຽງ</translation>
@@ -731,6 +734,7 @@
 <translation id="4985248278475639481">ກ່ຽວກັບການປັບແຕ່ງໂຄສະນາເປັນແບບສ່ວນຕົວ</translation>
 <translation id="4987271110129728827">ບໍ່ສາມາດຊອກເຫັນໜ້ານັ້ນໄດ້. ກະລຸນາກວດສອບການສະກົດຄຳຂອງທ່ານ ຫຼື ລອງຊອກຫາໃນເວັບໄຊ.</translation>
 <translation id="4988526792673242964">ໜ້າ</translation>
+<translation id="4991110219272367918">ຕົວເລືອກເພື່ອອະນຸມັດ ຫຼື ບໍ່ອະນຸມັດເວັບໄຊປິດຢູ່</translation>
 <translation id="499724277181351974">ນຳທາງ: <ph name="WEBSITE_TITLE" />: <ph name="WEBSITE_URL" /></translation>
 <translation id="5001388021414335527">ຕິດຕາມເວັບໄຊນີ້ຢູ່ບ່ອນນີ້</translation>
 <translation id="500351648694011114">ທ່ອງເວັບໄດ້ງ່າຍຂຶ້ນ</translation>
@@ -1105,6 +1109,7 @@
 <translation id="6896758677409633944">ກັອບປີ້</translation>
 <translation id="6900532703269623216">ການປົກປ້ອງທີ່ປັບປຸງດີຂຶ້ນ</translation>
 <translation id="6903907808598579934">ເປີດການຊິ້ງຂໍ້ມູນ</translation>
+<translation id="6908998565271542516">ຕົວເລືອກເພື່ອອະນຸມັດ ຫຼື ບໍ່ອະນຸມັດເວັບໄຊເປີດຢູ່ໃນແບບຄວາມສູງເຕັມ</translation>
 <translation id="6909589135458168665">ໂຫຼດໜ້າກ່ອນລ່ວງໜ້າ</translation>
 <translation id="6942665639005891494">ປ່ຽນບ່ອນຈັດເກັບການດາວໂຫຼດເລີ່ມຕົ້ນໄດ້ທຸກເວລາ ໂດຍໃຊ້ຕົວເລືອກເມນູການຕັ້ງຄ່າ</translation>
 <translation id="694267552845942083">ທ່ານກຳລັງປັບແຕ່ງການຕັ້ງຄ່າການຊິ້ງຂໍ້ມູນຂອງທ່ານໃນຂະນະນີ້. ເພື່ອສຳເລັດການເປີດການຊິ້ງຂໍ້ມູນ, ກະລຸນາແຕະປຸ່ມຢືນຢັນຢູ່ໃກ້ລຸ່ມສຸດຂອງໜ້າຈໍ. ເລື່ອນຂຶ້ນ</translation>
@@ -1112,6 +1117,7 @@
 <translation id="6955535239952325894">ການຕັ້ງຄ່ານີ້ຖືກປິດການນຳໃຊ້ໃນໂປຣແກຣມທ່ອງເວັບທີ່ມີການຈັດການ</translation>
 <translation id="6963766334940102469">ລຶບ​ບຸກ​ມາກ​ສ໌</translation>
 <translation id="696447261358045621">ອອກຈາກໂໝດບໍ່ເປີດເຜີຍຕົວຕົນ</translation>
+<translation id="6971862865055170158">ບໍ່ອະນຸມັດ</translation>
 <translation id="6979737339423435258">ທຸກເວລາ</translation>
 <translation id="6987047470128880212">ບໍ່ສາມາດໃຊ້ໂໝດບໍ່ເປີດເຜີຍຕົວຢູ່ອຸປະກອນນີ້ໄດ້</translation>
 <translation id="6995899638241819463">ເຕືອນບອກທ່ານຖ້າລະຫັດຜ່ານຮົ່ວໄຫຼໃນການລະເມີດຂໍ້ມູນ</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb
index 0c55d8e..db5165e 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb
@@ -340,6 +340,7 @@
 <translation id="2861923151411510142">Kai kurios „Chrome“ funkcijos nebebus pasiekiamos</translation>
 <translation id="2870560284913253234">Svetainė</translation>
 <translation id="2871733351037274014">Puslapių įkėlimas iš anksto</translation>
+<translation id="2876136027428473467"><ph name="CHILD_NAME" /> nori, kad patvirtintumėte šią svetainę:</translation>
 <translation id="2886836735871983413">Svetainių sąrašas bus rodomas čia jums naršant žiniatinklį</translation>
 <translation id="2888126860611144412">Apie „Chrome“</translation>
 <translation id="2891154217021530873">Sustabdyti puslapio įkėlimą</translation>
@@ -355,6 +356,7 @@
 <translation id="2932150158123903946">„Google <ph name="APP_NAME" />“ saugykla</translation>
 <translation id="2932222164150889403">Klaviatūra nebus pakeista</translation>
 <translation id="2936980480904111527">Naudojant „Chrome“ pranešimus galima lengviau atlikti užduotis</translation>
+<translation id="2940075786175545812">Svetainės patvirtinimo arba nepatvirtinimo parinktis</translation>
 <translation id="2942036813789421260">Peržiūros skirtukas uždarytas</translation>
 <translation id="2946420957526726953">Atnaujinama „Chrome“, kad galėtumėte prisijungti prie kitų įrenginių</translation>
 <translation id="2951071800649516099">Pridėkite puslapių prie skaitymo sąrašo, kad galėtumėte perskaityti juos vėliau</translation>
@@ -422,6 +424,7 @@
 <translation id="3259831549858767975">Sumažinti visą puslapio turinį</translation>
 <translation id="3264124641674805320">Kaip atsisiųsti turinį, norint peržiūrėti vėliau</translation>
 <translation id="3264259168916048410">Kompiuteris nori naudoti šį įrenginį prisijungiant prie svetainės</translation>
+<translation id="3265093782546847662">Visi <ph name="DOMAIN" /> puslapiai</translation>
 <translation id="3265534588625245297">Stebimų svetainių tvarkymas</translation>
 <translation id="3269093882174072735">Įkelti vaizdą</translation>
 <translation id="3280562213547448728">Paieška balsu</translation>
@@ -731,6 +734,7 @@
 <translation id="4985248278475639481">Apie skelbimų suasmeninimą</translation>
 <translation id="4987271110129728827">Nepavyko rasti šio puslapio. Patikrinkite rašybą arba pabandykite naudoti žiniatinklio paiešką.</translation>
 <translation id="4988526792673242964">Psl.</translation>
+<translation id="4991110219272367918">Uždaryta svetainės patvirtinimo arba nepatvirtinimo parinktis</translation>
 <translation id="499724277181351974">Rodyti kelią: <ph name="WEBSITE_TITLE" />: <ph name="WEBSITE_URL" /></translation>
 <translation id="5001388021414335527">Stebėkite šią svetainę čia</translation>
 <translation id="500351648694011114">Naršykite lengviau</translation>
@@ -1105,6 +1109,7 @@
 <translation id="6896758677409633944">Kopijuoti</translation>
 <translation id="6900532703269623216">Sustiprinta apsauga</translation>
 <translation id="6903907808598579934">Įjungti sinchronizavimą</translation>
+<translation id="6908998565271542516">Per visą ekrano aukštį atidaryta svetainės patvirtinimo arba nepatvirtinimo parinktis</translation>
 <translation id="6909589135458168665">Puslapių įkėlimas iš anksto</translation>
 <translation id="6942665639005891494">Numatytąją atsisiuntimo vietą galite bet kada pakeisti naudodami nustatymų meniu parinktį</translation>
 <translation id="694267552845942083">Šiuo metu tinkinate savo sinchronizavimo nustatymus. Jei norite užbaigti sinchronizavimo įjungimo procesą, palieskite mygtuką „Patvirtinti“ netoli ekrano apačios. Eiti į viršų</translation>
@@ -1112,6 +1117,7 @@
 <translation id="6955535239952325894">Šis nustatymas išjungtas tvarkomose naršyklėse</translation>
 <translation id="6963766334940102469">Ištrinti žymes</translation>
 <translation id="696447261358045621">Išjungti inkognito režimą</translation>
+<translation id="6971862865055170158">Nepatvirtinti</translation>
 <translation id="6979737339423435258">Visas laikotarpis</translation>
 <translation id="6987047470128880212">Inkognito režimas šiame įrenginyje nepasiekiamas</translation>
 <translation id="6995899638241819463">Įspėti, jei slaptažodžiai buvo atskleisti įvykus duomenų saugos pažeidimui</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ml.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ml.xtb
index 63ef8c0a..fd25ca5a 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ml.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ml.xtb
@@ -340,6 +340,7 @@
 <translation id="2861923151411510142">ചില Chrome ഫീച്ചറുകൾ ഇനി ലഭ്യമായിരിക്കില്ല</translation>
 <translation id="2870560284913253234">സൈറ്റ്</translation>
 <translation id="2871733351037274014">പേജുകൾ മുൻകൂട്ടി ലോഡ് ചെയ്യുക</translation>
+<translation id="2876136027428473467">ഈ വെബ്സൈറ്റിന് അനുമതി നൽകാൻ <ph name="CHILD_NAME" /> നിങ്ങളോട് ആവശ്യപ്പെടുന്നു:</translation>
 <translation id="2886836735871983413">നിങ്ങൾ വെബിൽ ബ്രൗസ് ചെയ്യുമ്പോൾ സൈറ്റുകളുടെ ഒരു ലിസ്റ്റ് ഇവിടെ ദൃശ്യമാകും</translation>
 <translation id="2888126860611144412">Chrome-നെ കുറിച്ച്</translation>
 <translation id="2891154217021530873">പേജ് ലോഡുചെയ്യുന്നത് നിർത്തുക</translation>
@@ -355,6 +356,7 @@
 <translation id="2932150158123903946">Google <ph name="APP_NAME" /> സ്‌റ്റോറേജ്</translation>
 <translation id="2932222164150889403">നിങ്ങളുടെ കീബോഡ് മാറില്ല</translation>
 <translation id="2936980480904111527">Chrome അറിയിപ്പുകൾ കാര്യങ്ങൾ എളുപ്പത്തിലാക്കുന്നു</translation>
+<translation id="2940075786175545812">വെബ്‌സൈറ്റ് അംഗീകരിക്കാനോ നിരസിക്കാനോ ഉള്ള ഓപ്ഷൻ</translation>
 <translation id="2942036813789421260">പ്രിവ്യു ടാബ് അടച്ചു</translation>
 <translation id="2946420957526726953">മറ്റ് ഉപകരണങ്ങളുമായി കണക്റ്റ് ചെയ്യാൻ Chrome അപ്ഡേറ്റ് ചെയ്യുന്നു</translation>
 <translation id="2951071800649516099">പിന്നീട് വായിക്കാൻ വായിക്കാനുള്ളവയുടെ ലിസ്‌റ്റിലേക്ക് പേജുകൾ ചേർക്കുക</translation>
@@ -422,6 +424,7 @@
 <translation id="3259831549858767975">പേജിൽ എല്ലാം ചെറുതായി നൽകുക</translation>
 <translation id="3264124641674805320">പിന്നീടുള്ള ഉപയോഗത്തിനായി ഉള്ളടക്കം എങ്ങനെ ഡൗൺലോഡ് ചെയ്യാം</translation>
 <translation id="3264259168916048410">സൈറ്റിലേക്ക് സൈൻ ഇൻ ചെയ്യാൻ നിങ്ങളുടെ കമ്പ്യൂട്ടറിന് ഈ ഉപകരണം ഉപയോഗിക്കേണ്ടതുണ്ട്</translation>
+<translation id="3265093782546847662"><ph name="DOMAIN" /> എന്നതിന്റെ എല്ലാ പേജുകളും</translation>
 <translation id="3265534588625245297">നിങ്ങൾ പിന്തുടരുന്ന സൈറ്റുകൾ മാനേജ് ചെയ്യുക</translation>
 <translation id="3269093882174072735">ചിത്രം ലോഡ് ചെയ്യുക</translation>
 <translation id="3280562213547448728">ശബ്ദ തിരയൽ</translation>
@@ -731,6 +734,7 @@
 <translation id="4985248278475639481">പരസ്യം വ്യക്തിപരമാക്കലിനെക്കുറിച്ച്</translation>
 <translation id="4987271110129728827">ആ പേജ് കണ്ടെത്താനാകുന്നില്ല. നിങ്ങളുടെ സ്പെല്ലിംഗ് പരിശോധിക്കുകയോ വെബ് തിരയൽ പരീക്ഷിക്കുകയോ ചെയ്യുക.</translation>
 <translation id="4988526792673242964">പേജുകള്‍</translation>
+<translation id="4991110219272367918">അടച്ച വെബ്‌സൈറ്റ് അംഗീകരിക്കാനോ നിരസിക്കാനോ ഉള്ള ഓപ്ഷൻ</translation>
 <translation id="499724277181351974">നാവിഗേറ്റ് ചെയ്യുക: <ph name="WEBSITE_TITLE" />: <ph name="WEBSITE_URL" /></translation>
 <translation id="5001388021414335527">ഈ സൈറ്റ് ഇവിടെ പിന്തുടരുക</translation>
 <translation id="500351648694011114">കൂടുതൽ എളുപ്പത്തിൽ ബ്രൗസ് ചെയ്യുക</translation>
@@ -1105,6 +1109,7 @@
 <translation id="6896758677409633944">പകര്‍ത്തുക</translation>
 <translation id="6900532703269623216">മെച്ചപ്പെടുത്തിയ പരിരക്ഷ</translation>
 <translation id="6903907808598579934">സമന്വയിപ്പിക്കൽ ഓണാക്കുക</translation>
+<translation id="6908998565271542516">മുഴുവൻ ഉയരത്തിൽ തുറന്നിരിക്കുന്ന വെബ്സൈറ്റ് അംഗീകരിക്കാനോ നിരസിക്കാനോ ഉള്ള ഓപ്ഷൻ</translation>
 <translation id="6909589135458168665">പേജുകൾ മുൻകൂട്ടി ലോഡ് ചെയ്യുക</translation>
 <translation id="6942665639005891494">ക്രമീകരണ മെനു ഓപ്‌ഷൻ ഉപയോഗിച്ച്, ഏതുസമയത്തും ഡിഫോൾട്ട് ഡൗൺലോഡ് ലൊക്കേഷൻ മാറ്റുക.</translation>
 <translation id="694267552845942083">നിങ്ങൾ നിലവിൽ നിങ്ങളുടെ സമന്വയ ക്രമീകരണം ഇഷ്ടാനുസൃതമാക്കുകയാണ്. സമന്വയിപ്പിക്കൽ ഓണാക്കുന്നത് പൂർത്തിയാക്കാൻ, സ്‌ക്രീനിന്റെ ചുവടുഭാഗത്തിന് സമീപമുള്ള 'സ്ഥിരീകരിക്കുക' ബട്ടൺ ടാപ്പ് ചെയ്യുക. മുകളിലേക്ക് പോകുക</translation>
@@ -1112,6 +1117,7 @@
 <translation id="6955535239952325894">മാനേജ് ചെയ്യപ്പെടുന്ന ബ്രൗസറുകളിൽ ഈ ക്രമീകരണം പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നു</translation>
 <translation id="6963766334940102469">ബുക്ക്‌മാർക്കുകൾ ഇല്ലാതാക്കുക</translation>
 <translation id="696447261358045621">അദൃശ്യ മോഡിൽ നിന്ന് പുറത്തുകടക്കുക</translation>
+<translation id="6971862865055170158">അംഗീകരിക്കരുത്</translation>
 <translation id="6979737339423435258">എല്ലാ സമയത്തും</translation>
 <translation id="6987047470128880212">ഈ ഉപകരണത്തിൽ അദൃശ്യ മോഡ് ലഭ്യമല്ല</translation>
 <translation id="6995899638241819463">പാസ്‌വേഡുകൾ, ഡാറ്റാ ലംഘനത്തിന്റെ ഭാഗമായി വെളിപ്പെട്ടാൽ നിങ്ങൾക്ക് മുന്നറിയിപ്പ് നൽകുന്നു</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mn.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mn.xtb
index 96ae246..91fedcf 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mn.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mn.xtb
@@ -340,6 +340,7 @@
 <translation id="2861923151411510142">Chrome-ын зарим онцлог \u2019 цаашид боломжгүй болно</translation>
 <translation id="2870560284913253234">Ажлын талбар</translation>
 <translation id="2871733351037274014">Хуудаснуудыг урьдчилан ачаалах</translation>
+<translation id="2876136027428473467"><ph name="CHILD_NAME" /> танаас энэ вебсайтыг зөвшөөрөхийг хүсэж байна:</translation>
 <translation id="2886836735871983413">Таныг вебийг үзэж байхад сайтын жагсаалт энд харагдана</translation>
 <translation id="2888126860611144412">Chrome-н тухай</translation>
 <translation id="2891154217021530873">Хуудас ачаалахыг зогсоох</translation>
@@ -355,6 +356,7 @@
 <translation id="2932150158123903946">Google <ph name="APP_NAME" /> сан</translation>
 <translation id="2932222164150889403">Таны гар өөрчлөгдөхгүй</translation>
 <translation id="2936980480904111527">Chrome-н мэдэгдэл нь зүйлсийг хялбар болгодог</translation>
+<translation id="2940075786175545812">Вебсайтыг зөвшөөрөх эсвэл зөвшөөрөхгүй байх сонголт</translation>
 <translation id="2942036813789421260">Урьдчилан үзэх таб хаалттай байна</translation>
 <translation id="2946420957526726953">Бусад төхөөрөмжид холбогдохын тулд Chrome-г шинэчилж байна</translation>
 <translation id="2951071800649516099">Хуудаснуудыг дараа уншихаар унших жагсаалтдаа нэмээрэй</translation>
@@ -422,6 +424,7 @@
 <translation id="3259831549858767975">Хуудасны бүх зүйлийг жижиг болгох</translation>
 <translation id="3264124641674805320">Контентыг хэрхэн дараа үзэхээр татаж авах вэ</translation>
 <translation id="3264259168916048410">Таны компьютер энэ төхөөрөмжийг сайтад нэвтрэхийн тулд ашиглахыг хүсэж байна</translation>
+<translation id="3265093782546847662"><ph name="DOMAIN" />-н бүх хуудас</translation>
 <translation id="3265534588625245297">Дагадаг сайтуудаа удирдана уу</translation>
 <translation id="3269093882174072735">Зураг ачаалах</translation>
 <translation id="3280562213547448728">Дуут хайлт</translation>
@@ -730,6 +733,7 @@
 <translation id="4985248278475639481">Сонирхсон зарын тохируулгын тухай</translation>
 <translation id="4987271110129728827">Тухайн хуудсыг олох боломжгүй. Зөв бичсэн эсэхээ шалгах эсвэл веб хайлтыг туршина уу.</translation>
 <translation id="4988526792673242964">Хуудас</translation>
+<translation id="4991110219272367918">Вебсайтыг зөвшөөрөх эсвэл зөвшөөрөхгүй байх сонголтыг хаасан</translation>
 <translation id="499724277181351974">Шилжих: <ph name="WEBSITE_TITLE" />: <ph name="WEBSITE_URL" /></translation>
 <translation id="5001388021414335527">Энэ сайтыг энд дагана уу</translation>
 <translation id="500351648694011114">Илүү хялбар үзээрэй</translation>
@@ -1104,6 +1108,7 @@
 <translation id="6896758677409633944">Хуулах</translation>
 <translation id="6900532703269623216">Сайжруулсан хамгаалалт</translation>
 <translation id="6903907808598579934">Синк хийхийг асаах</translation>
+<translation id="6908998565271542516">Бүтэн өндөртэйгээр нээсэн вебсайтыг зөвшөөрөх эсвэл зөвшөөрөхгүй байх сонголт</translation>
 <translation id="6909589135458168665">Хуудаснуудыг урьдчилан ачаалах</translation>
 <translation id="6942665639005891494">Тохиргооны цэсийн сонголтоор таталтын өгөгдмөл байршлыг дурын үед өөрчлөх</translation>
 <translation id="694267552845942083">Та одоогоор Синк хийх тохиргоогоо өөрчилж байна. Синкийг асааж дуусгахын тулд дэлгэцийн доод хэсгийн ойролцоо байгаа Баталгаажуулах товчлуурыг товшино уу. Дээш шилжих</translation>
@@ -1111,6 +1116,7 @@
 <translation id="6955535239952325894">Удирдсан хөтчүүд дээр энэ тохиргоог идэвхгүй болгосон</translation>
 <translation id="6963766334940102469">Хавчуургыг устгах</translation>
 <translation id="696447261358045621">Нууцлалтай горимоос гарах</translation>
+<translation id="6971862865055170158">Бүү зөвшөөр</translation>
 <translation id="6979737339423435258">Бүх цаг</translation>
 <translation id="6987047470128880212">Нууцлалтай таб энэ төхөөрөмж дээр боломжгүй</translation>
 <translation id="6995899638241819463">Өгөгдлийн зөрчлийн улмаас нууц үгийг задруулсан бол танд анхааруулах</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb
index e4235e6..ff73c5a 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb
@@ -340,6 +340,7 @@
 <translation id="2861923151411510142">Sesetengah ciri Chrome tidak akan tersedia lagi</translation>
 <translation id="2870560284913253234">Tapak</translation>
 <translation id="2871733351037274014">Halaman pramuat</translation>
+<translation id="2876136027428473467"><ph name="CHILD_NAME" /> mahu anda meluluskan laman web ini:</translation>
 <translation id="2886836735871983413">Senarai laman akan dipaparkan di sini semasa anda menyemak imbas web</translation>
 <translation id="2888126860611144412">Perihal Chrome</translation>
 <translation id="2891154217021530873">Hentikan pemuatan halaman</translation>
@@ -355,6 +356,7 @@
 <translation id="2932150158123903946">Storan Google <ph name="APP_NAME" /></translation>
 <translation id="2932222164150889403">Papan kekunci anda tidak akan berubah</translation>
 <translation id="2936980480904111527">Pemberitahuan Chrome memudahkan segalanya</translation>
+<translation id="2940075786175545812">Pilihan untuk meluluskan atau tidak meluluskan laman web</translation>
 <translation id="2942036813789421260">Tab pratonton ditutup</translation>
 <translation id="2946420957526726953">Mengemas kini Chrome untuk menyambung kepada peranti lain</translation>
 <translation id="2951071800649516099">Tambahkan halaman pada senarai bacaan anda untuk kemudian</translation>
@@ -422,6 +424,7 @@
 <translation id="3259831549858767975">Jadikan semua yang ada pada halaman lebih kecil</translation>
 <translation id="3264124641674805320">Cara memuat turun kandungan untuk dilihat kemudian</translation>
 <translation id="3264259168916048410">Komputer anda mahu menggunakan peranti ini untuk log masuk ke laman</translation>
+<translation id="3265093782546847662">Semua halaman <ph name="DOMAIN" /></translation>
 <translation id="3265534588625245297">Urus laman yang anda ikuti</translation>
 <translation id="3269093882174072735">Muatkan imej</translation>
 <translation id="3280562213547448728">Carian suara</translation>
@@ -731,6 +734,7 @@
 <translation id="4985248278475639481">Perihal pemeribadian iklan</translation>
 <translation id="4987271110129728827">Tidak menemukan halaman itu. Semak ejaan anda atau cuba carian web.</translation>
 <translation id="4988526792673242964">Halaman</translation>
+<translation id="4991110219272367918">Pilihan untuk meluluskan atau tidak meluluskan laman web yang ditutup</translation>
 <translation id="499724277181351974">Navigasi: <ph name="WEBSITE_TITLE" />: <ph name="WEBSITE_URL" /></translation>
 <translation id="5001388021414335527">Ikuti laman ini di sini</translation>
 <translation id="500351648694011114">Semak imbas dengan lebih mudah</translation>
@@ -1105,6 +1109,7 @@
 <translation id="6896758677409633944">Salin</translation>
 <translation id="6900532703269623216">Perlindungan dipertingkat</translation>
 <translation id="6903907808598579934">Hidupkan penyegerakan</translation>
+<translation id="6908998565271542516">Pilihan untuk meluluskan atau tidak meluluskan laman web yang dibuka pada ketinggian penuh</translation>
 <translation id="6909589135458168665">Halaman Pramuat</translation>
 <translation id="6942665639005891494">Tukar lokasi muat turun lalai pada bila-bila masa menggunakan pilihan menu Tetapan</translation>
 <translation id="694267552845942083">Anda sedang menyesuaikan tetapan Penyegerakan anda. Untuk menyelesaikan tindakan menghidupkan penyegerakan, ketik butang Sahkan berdekatan bahagian bawah skrin. Navigasi ke atas</translation>
@@ -1112,6 +1117,7 @@
 <translation id="6955535239952325894">Tetapan ini dilumpuhkan pada penyemak imbas terurus</translation>
 <translation id="6963766334940102469">Padamkan penanda halaman</translation>
 <translation id="696447261358045621">Tinggalkan mod Inkognito</translation>
+<translation id="6971862865055170158">Jangan luluskan</translation>
 <translation id="6979737339423435258">Sepanjang masa</translation>
 <translation id="6987047470128880212">Inkognito tidak tersedia pada peranti ini</translation>
 <translation id="6995899638241819463">Beri amaran kepada anda jika kata laluan terdedah dalam pelanggaran data</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ne.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ne.xtb
index b262b21a..2c80353 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ne.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ne.xtb
@@ -340,6 +340,7 @@
 <translation id="2861923151411510142">Chrome का केही सुविधाहरू अबदेखि उपलब्ध हुने छैनन्</translation>
 <translation id="2870560284913253234">साइट</translation>
 <translation id="2871733351037274014">पेजहरू प्रिलोड गरियोस्</translation>
+<translation id="2876136027428473467"><ph name="CHILD_NAME" /> तपाईंले यो वेबसाइट अनुमोदन गरिदिनुहोस् भन्ने चाहन्छन्:</translation>
 <translation id="2886836735871983413">तपाईंले वेब ब्राउज गर्दै जाँदा साइटहरूको सूची यहाँ देखिने छ</translation>
 <translation id="2888126860611144412">Chrome को बारेमा</translation>
 <translation id="2891154217021530873">पृष्ठ लोड गर्न रोक्नुहोस्</translation>
@@ -355,6 +356,7 @@
 <translation id="2932150158123903946">Google <ph name="APP_NAME" /> को भण्डारण</translation>
 <translation id="2932222164150889403">तपाईंको किबोर्ड परिवर्तन हुने छैन</translation>
 <translation id="2936980480904111527">Chrome बाट प्राप्त हुने सूचनाहरूका सहायताले विभिन्न कार्यहरू सजिलै गर्न सकिन्छ</translation>
+<translation id="2940075786175545812">कुनै वेबसाइट अनुमोदन गर्ने वा नगर्ने विकल्प</translation>
 <translation id="2942036813789421260">पूर्वावलोकन ट्याब बन्द छ</translation>
 <translation id="2946420957526726953">तपाईंको फोन अन्य डिभाइससँग कनेक्ट गर्न Chrome अपडेट गरिँदै छ</translation>
 <translation id="2951071800649516099">पछि पढ्न सेभ गरिएका वेबपेजको सूचीमा वेबपेजहरू हाल्नुहोस्</translation>
@@ -422,6 +424,7 @@
 <translation id="3259831549858767975">पृष्ठमा रहेको सबै कुरालाई अझ सानो बनाउनुहोस्</translation>
 <translation id="3264124641674805320">पछि हेर्ने वा पढ्ने प्रयोजनका लागि सामग्री डाउनलोड गर्ने तरिका</translation>
 <translation id="3264259168916048410">तपाईंको कम्प्युटर कुनै साइटमा साइन इन गर्ने प्रयोजनका लागि यो डिभाइस प्रयोग गर्न चाहन्छ</translation>
+<translation id="3265093782546847662"><ph name="DOMAIN" /> का सबै पेजहरू</translation>
 <translation id="3265534588625245297">आफूले फलो गर्ने साइटहरू व्यवस्थापन गर्नुहोस्</translation>
 <translation id="3269093882174072735">छवि लोड गर्नुहोस्</translation>
 <translation id="3280562213547448728">भ्वाइस सर्च</translation>
@@ -730,6 +733,7 @@
 <translation id="4985248278475639481">विज्ञापनको पर्सनलाइजेसनका बारेमा जानकारी</translation>
 <translation id="4987271110129728827">उक्त पेज भेट्टाउन सकिएन। आफ्नो हिज्जे जाँच्नुहोस् वा वेबमा खोजी हेर्नुहोस्।</translation>
 <translation id="4988526792673242964">पृष्ठहरू</translation>
+<translation id="4991110219272367918">कुनै वेबसाइट अनुमोदन गर्ने वा नगर्ने विकल्प बन्द गरिएको छ</translation>
 <translation id="499724277181351974">नेभिगेट गर्नुहोस्: <ph name="WEBSITE_TITLE" />: <ph name="WEBSITE_URL" /></translation>
 <translation id="5001388021414335527">यहाँ क्लिक गरी यो साइट फलो गर्नुहोस्</translation>
 <translation id="500351648694011114">अझ सजिलैसँग ब्राउज गर्नुहोस्</translation>
@@ -1104,6 +1108,7 @@
 <translation id="6896758677409633944">प्रतिलिपि गर्नुहोस्</translation>
 <translation id="6900532703269623216">उन्नत सुरक्षा</translation>
 <translation id="6903907808598579934">सिंकलाई अन गर्नुहोस्</translation>
+<translation id="6908998565271542516">कुनै वेबसाइट अनुमोदन गर्ने वा नगर्ने विकल्प फुल स्ट्रिनमा खुलिएको छ</translation>
 <translation id="6909589135458168665">पेजहरू प्रिलोड गरियोस्</translation>
 <translation id="6942665639005891494">सेटिङहरू नामक मेनुको विकल्प प्रयोग गरी डिफल्ट डाउनलोड स्थान जुनसुकै बेला परिवर्तन गर्नुहोस्</translation>
 <translation id="694267552845942083">तपाईं हाल सिंकसम्बन्धी तपाईंका सेटिङ आफ्नो आवश्यकता अनुकूल पार्दै हुनुहुन्छ। सिंक गर्ने सुविधा अन गर्ने प्रक्रिया पूरा गर्न स्क्रिनको फेदको छेवैमा रहेको 'पुष्टि गर्नुहोस्' नामक बटनमा ट्याप गर्नुहोस्। माथि जानुहोस्</translation>
@@ -1111,6 +1116,7 @@
 <translation id="6955535239952325894">व्यवस्थापन गरिएका ब्राउजरहरूमा यो सेटिङ असक्षम पारिएको हुन्छ</translation>
 <translation id="6963766334940102469">बुकमार्कहरू मेट्नुहोस्</translation>
 <translation id="696447261358045621">इन्कोग्निटो मोडबाट बाहिरिनुहोस्</translation>
+<translation id="6971862865055170158">अनुमोदन नगर्नुहोस्</translation>
 <translation id="6979737339423435258">सुरूबाट नै</translation>
 <translation id="6987047470128880212">यो डिभाइसमा इन्कोग्निटो मोड उपलब्ध छैन</translation>
 <translation id="6995899638241819463">डेटा चोरीको घटनामा पासवर्डको खुलासा हुँदा तपाईंलाई चेतावनी दिइन्छ</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb
index 950bacf9..115415d 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb
@@ -310,7 +310,7 @@
 <translation id="2709516037105925701">Autofyll</translation>
 <translation id="271033894570825754">Ny</translation>
 <translation id="2711073837061989559">Prøveprosjekter</translation>
-<translation id="2718352093833049315">Bare når Wi-Fi er på</translation>
+<translation id="2718352093833049315">Bare når Wifi er på</translation>
 <translation id="2718846868787000099">For å kunne vise innhold på språkene du foretrekker, kan nettstedene du besøker, se preferansene dine</translation>
 <translation id="2722945394406572875">Privacy Sandbox-forespørselen er lukket</translation>
 <translation id="2723001399770238859">lyd</translation>
@@ -419,7 +419,7 @@
 <translation id="3237433641417325993">Rull ned for å se foreslåtte artikler</translation>
 <translation id="3244271242291266297">MM</translation>
 <translation id="3245429137663807393">Hvis du også deler Chrome-bruksrapporter, inneholder disse rapportene nettadressene du besøker</translation>
-<translation id="3250563604907490871">Bildebeskrivelser gjenopptas når du kobler til Wi-Fi</translation>
+<translation id="3250563604907490871">Bildebeskrivelser gjenopptas når du kobler til wifi</translation>
 <translation id="3254409185687681395">Legg til bokmerke for denne siden</translation>
 <translation id="3259831549858767975">Gjør alt på siden mindre</translation>
 <translation id="3264124641674805320">Slik laster du ned innhold til senere</translation>
@@ -628,7 +628,7 @@
 <translation id="4484496141267039529">Ingen tilkobling. Prøv på nytt senere.</translation>
 <translation id="4487967297491345095">Alle appdataene for Chrome slettes permanent. Dette omfatter alle filer, innstillinger, kontoer, databaser osv.</translation>
 <translation id="449126573531210296">Kryptér synkroniserte passord med Google-kontoen din</translation>
-<translation id="4504667196171871375">Via Wi-Fi og mobildata</translation>
+<translation id="4504667196171871375">Via Wifi og mobildata</translation>
 <translation id="4508528996305412043">Feedkortmenyen er åpnet</translation>
 <translation id="4508642716788467538">Velg språk</translation>
 <translation id="4513387527876475750">{DAYS,plural, =1{for # dag siden}other{for # dager siden}}</translation>
@@ -1031,7 +1031,7 @@
 <translation id="6556542240154580383">{TAB_COUNT,plural, =1{<ph name="TAB_TITLE" /> og <ph name="TAB_COUNT_ONE" /> annen fane blir lukket}other{<ph name="TAB_TITLE" /> og <ph name="TAB_COUNT_MANY" /> andre faner blir lukket}}</translation>
 <translation id="6560414384669816528">Søk med Sogou</translation>
 <translation id="656065428026159829">Se mer</translation>
-<translation id="6565959834589222080">Wi-Fi brukes når det er tilgjengelig</translation>
+<translation id="6565959834589222080">Wifi brukes når det er tilgjengelig</translation>
 <translation id="6569373978618239158">Nå ser du artikler fra <ph name="SITE_NAME" /> når du åpner nye faner. Nettstedene du følger, lagres i Google-kontoen din. Du kan administrere dem i innstillingene for Discover.</translation>
 <translation id="6573096386450695060">Tillat alltid</translation>
 <translation id="6573431926118603307">Faner du har åpnet i Chrome på de andre enhetene dine, vises her.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb
index 3b6f755..8d31005e 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb
@@ -340,6 +340,7 @@
 <translation id="2861923151411510142">Niektóre funkcje Chrome nie będą już dostępne</translation>
 <translation id="2870560284913253234">Witryna</translation>
 <translation id="2871733351037274014">Wstępnie wczytuj strony</translation>
+<translation id="2876136027428473467"><ph name="CHILD_NAME" /> chce, abyś zatwierdził(a) stronę:</translation>
 <translation id="2886836735871983413">Gdy zaczniesz przeglądać strony, tu pojawi się lista witryn</translation>
 <translation id="2888126860611144412">Chrome – informacje</translation>
 <translation id="2891154217021530873">Zatrzymaj wczytywanie strony</translation>
@@ -355,6 +356,7 @@
 <translation id="2932150158123903946">Dane aplikacji Google <ph name="APP_NAME" /></translation>
 <translation id="2932222164150889403">Twoja klawiatura się nie zmieni</translation>
 <translation id="2936980480904111527">Powiadomienia w Chrome ułatwiają korzystanie z internetu</translation>
+<translation id="2940075786175545812">Opcja zatwierdzenia lub odrzucenia witryny</translation>
 <translation id="2942036813789421260">Karta podglądu jest zamknięta</translation>
 <translation id="2946420957526726953">Aktualizuję Chrome, aby umożliwić nawiązywanie połączeń z innymi urządzeniami</translation>
 <translation id="2951071800649516099">Dodaj strony do listy Do przeczytania, aby przeczytać je później</translation>
@@ -422,6 +424,7 @@
 <translation id="3259831549858767975">Pomniejsz całą zawartość strony</translation>
 <translation id="3264124641674805320">Pobieranie treści na później</translation>
 <translation id="3264259168916048410">Twój komputer chce użyć tego urządzenia, aby umożliwić Ci zalogowanie się na stronie</translation>
+<translation id="3265093782546847662">Wszystkie strony w domenie <ph name="DOMAIN" /></translation>
 <translation id="3265534588625245297">Zarządzaj obserwowanymi witrynami</translation>
 <translation id="3269093882174072735">Wczytaj obraz</translation>
 <translation id="3280562213547448728">Wyszukiwanie głosowe</translation>
@@ -731,6 +734,7 @@
 <translation id="4985248278475639481">Informacje o personalizacji reklam</translation>
 <translation id="4987271110129728827">Nie można znaleźć tej strony. Sprawdź pisownię lub spróbuj wyszukać w internecie.</translation>
 <translation id="4988526792673242964">Strony</translation>
+<translation id="4991110219272367918">Opcja zatwierdzenia lub odrzucenia witryny zamknięta</translation>
 <translation id="499724277181351974">Wejdź na stronę <ph name="WEBSITE_TITLE" />: <ph name="WEBSITE_URL" /></translation>
 <translation id="5001388021414335527">Dodaj stronę do obserwowanych tutaj</translation>
 <translation id="500351648694011114">Przeglądaj wygodniej</translation>
@@ -1105,6 +1109,7 @@
 <translation id="6896758677409633944">Kopiuj</translation>
 <translation id="6900532703269623216">Silniejsza ochrona</translation>
 <translation id="6903907808598579934">Włącz synchronizację</translation>
+<translation id="6908998565271542516">Opcja zatwierdzenia lub odrzucenia witryny otwarta na pełną wysokość</translation>
 <translation id="6909589135458168665">Wstępne wczytywanie stron</translation>
 <translation id="6942665639005891494">W dowolnej chwili w Ustawieniach możesz zmienić domyślną lokalizację pobierania</translation>
 <translation id="694267552845942083">W tej chwili dostosowujesz ustawienia synchronizacji. Aby zakończyć włączanie synchronizacji, na dole ekranu kliknij przycisk Potwierdź. Przejdź wyżej</translation>
@@ -1112,6 +1117,7 @@
 <translation id="6955535239952325894">To ustawienie jest wyłączone w zarządzanych przeglądarkach</translation>
 <translation id="6963766334940102469">Usuń zakładki</translation>
 <translation id="696447261358045621">Wyłącz tryb incognito</translation>
+<translation id="6971862865055170158">Nie zatwierdzaj</translation>
 <translation id="6979737339423435258">Od początku</translation>
 <translation id="6987047470128880212">Na tym urządzeniu tryb incognito jest niedostępny</translation>
 <translation id="6995899638241819463">Ostrzegaj, jeśli wskutek naruszenia bezpieczeństwa danych doszło do ujawnienia haseł</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb
index 34939604..19ae43a 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb
@@ -340,6 +340,7 @@
 <translation id="2861923151411510142">Nekatere Chromove funkcije ne bodo več na voljo.</translation>
 <translation id="2870560284913253234">Spletno mesto</translation>
 <translation id="2871733351037274014">Vnaprejšnje nalaganje strani</translation>
+<translation id="2876136027428473467"><ph name="CHILD_NAME" /> želi, da odobrite to spletno mesto:</translation>
 <translation id="2886836735871983413">Tukaj bo prikazan seznam spletnih mest, ko brskate po spletu.</translation>
 <translation id="2888126860611144412">O brskalniku Chrome</translation>
 <translation id="2891154217021530873">Ustavi nalaganje strani</translation>
@@ -355,6 +356,7 @@
 <translation id="2932150158123903946">Shranjeni podatki aplikacije Google <ph name="APP_NAME" /></translation>
 <translation id="2932222164150889403">Tipkovnica se ne bo spremenila.</translation>
 <translation id="2936980480904111527">Obvestila v Chromu olajšajo stvari</translation>
+<translation id="2940075786175545812">Možnost odobritve ali neodobritve spletnega mesta</translation>
 <translation id="2942036813789421260">Zavihek za predogled je zaprt</translation>
 <translation id="2946420957526726953">Updating Chroma za povezovanje z drugimi napravami</translation>
 <translation id="2951071800649516099">Dodajte strani na bralni seznam za pozneje.</translation>
@@ -422,6 +424,7 @@
 <translation id="3259831549858767975">Pomanjšanje vsebine strani</translation>
 <translation id="3264124641674805320">Kako prenesti vsebino za pozneje</translation>
 <translation id="3264259168916048410">Računalnik želi uporabiti to napravo za prijavo na tem spletnem mestu.</translation>
+<translation id="3265093782546847662">Vse strani domene <ph name="DOMAIN" /></translation>
 <translation id="3265534588625245297">Upravljajte spletna mesta, ki jim sledite.</translation>
 <translation id="3269093882174072735">Naloži sliko</translation>
 <translation id="3280562213547448728">Glasovno iskanje</translation>
@@ -731,6 +734,7 @@
 <translation id="4985248278475639481">O osebnem prilagajanju oglasov</translation>
 <translation id="4987271110129728827">Te strani ni mogoče najti. Preverite črkovanje ali poskusite spletno iskanje.</translation>
 <translation id="4988526792673242964">Strani</translation>
+<translation id="4991110219272367918">Možnost odobritve ali neodobritve spletnega mesta je zaprta</translation>
 <translation id="499724277181351974">Premikanje: <ph name="WEBSITE_TITLE" />: <ph name="WEBSITE_URL" /></translation>
 <translation id="5001388021414335527">Spremljajte to spletno mesto tukaj</translation>
 <translation id="500351648694011114">Preprostejše brskanje</translation>
@@ -1105,6 +1109,7 @@
 <translation id="6896758677409633944">Kopiraj</translation>
 <translation id="6900532703269623216">Izboljšana zaščita</translation>
 <translation id="6903907808598579934">Vklopi sinhronizacijo</translation>
+<translation id="6908998565271542516">Možnost odobritve ali neodobritve spletnega mesta, odprtega pri polni višini</translation>
 <translation id="6909589135458168665">Vnaprejšnje nalaganje strani</translation>
 <translation id="6942665639005891494">Z možnostjo v meniju z nastavitvami lahko kadar koli spremenite privzeto mesto za prenose</translation>
 <translation id="694267552845942083">Trenutno prilagajate nastavitve sinhronizacije. Če želite dokončati vklop sinhronizacije, se dotaknite gumba za potrditev pri dnu zaslona. Pomik navzgor</translation>
@@ -1112,6 +1117,7 @@
 <translation id="6955535239952325894">Ta nastavitev je onemogočena v upravljanih brskalnikih</translation>
 <translation id="6963766334940102469">Izbriši zaznamke</translation>
 <translation id="696447261358045621">Izklop anonimnega načina</translation>
+<translation id="6971862865055170158">Ne odobri</translation>
 <translation id="6979737339423435258">Od začetka</translation>
 <translation id="6987047470128880212">Anonimni način ni na voljo v tej napravi.</translation>
 <translation id="6995899638241819463">Posvari, če so gesla razkrita zaradi podatkovne kršitve</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb
index 02fca0d..8946521 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb
@@ -340,6 +340,7 @@
 <translation id="2861923151411510142">Vissa funktioner i Chrome kommer inte längre att vara tillgängliga</translation>
 <translation id="2870560284913253234">Webbplats</translation>
 <translation id="2871733351037274014">Läs in sidor i förväg</translation>
+<translation id="2876136027428473467"><ph name="CHILD_NAME" /> vill att du godkänner följande webbplats:</translation>
 <translation id="2886836735871983413">En lista över webbplatser visas här allt eftersom du surfar på webben</translation>
 <translation id="2888126860611144412">Om Chrome</translation>
 <translation id="2891154217021530873">Avbryt inläsningen av sidan</translation>
@@ -355,6 +356,7 @@
 <translation id="2932150158123903946">Lagring för Google <ph name="APP_NAME" /></translation>
 <translation id="2932222164150889403">Tangentbordet ändras inte</translation>
 <translation id="2936980480904111527">Chrome-aviseringar gör saker enklare</translation>
+<translation id="2940075786175545812">Alternativ för att godkänna eller inte godkänna en webbplats</translation>
 <translation id="2942036813789421260">Fliken Förhandsgranskning har stängts</translation>
 <translation id="2946420957526726953">Uppdatera Chrome för att ansluta till andra enheter</translation>
 <translation id="2951071800649516099">Lägg till sidor som du vill läsa senare i läslistan</translation>
@@ -422,6 +424,7 @@
 <translation id="3259831549858767975">Gör allt på sidan mindre</translation>
 <translation id="3264124641674805320">Så här laddar du ned innehåll att spara till senare</translation>
 <translation id="3264259168916048410">Datorn vill använda den här enheten för att logga in på en webbplats</translation>
+<translation id="3265093782546847662">Alla sidor på <ph name="DOMAIN" /></translation>
 <translation id="3265534588625245297">Hantera de webbplatser du följer</translation>
 <translation id="3269093882174072735">Läs in bild</translation>
 <translation id="3280562213547448728">Röstsökning</translation>
@@ -732,6 +735,7 @@
 <translation id="4985248278475639481">Om annonsanpassning</translation>
 <translation id="4987271110129728827">Sidan hittades inte. Kontrollera stavningen eller testa att söka på webben.</translation>
 <translation id="4988526792673242964">Sidor</translation>
+<translation id="4991110219272367918">Alternativ för att godkänna eller inte godkänna en webbplats har stängts</translation>
 <translation id="499724277181351974">Navigera till: <ph name="WEBSITE_TITLE" />: <ph name="WEBSITE_URL" /></translation>
 <translation id="5001388021414335527">Följ denna webbplats här</translation>
 <translation id="500351648694011114">Surfa enklare</translation>
@@ -1106,6 +1110,7 @@
 <translation id="6896758677409633944">Kopiera</translation>
 <translation id="6900532703269623216">Förbättrat skydd</translation>
 <translation id="6903907808598579934">Aktivera synkronisering</translation>
+<translation id="6908998565271542516">Alternativ för att godkänna eller inte godkänna en webbplats som öppnas i full höjd</translation>
 <translation id="6909589135458168665">Läs in sidor i förväg</translation>
 <translation id="6942665639005891494">Ändra standardplats för nedladdningar när som helst via alternativet i inställningsmenyn</translation>
 <translation id="694267552845942083">Du anpassar synkroniseringsinställningarna. Aktivera synkroniseringen genom att trycka på Bekräfta längst ned på skärmen. Navigera uppåt</translation>
@@ -1113,6 +1118,7 @@
 <translation id="6955535239952325894">Inställningen är inaktiverad för hanterade webbläsare</translation>
 <translation id="6963766334940102469">Radera bokmärken</translation>
 <translation id="696447261358045621">Inaktivera inkognitoläge</translation>
+<translation id="6971862865055170158">Godkänn inte</translation>
 <translation id="6979737339423435258">Sedan kontot skapades</translation>
 <translation id="6987047470128880212">Inkognito är inte tillgängligt på den här enheten</translation>
 <translation id="6995899638241819463">En varning visas om lösenord har läckt ut vid ett dataintrång</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb
index fc0cb8c..98fab45 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb
@@ -340,6 +340,7 @@
 <translation id="2861923151411510142">Baadhi ya vipengele vya Chrome havitapatikana tena\u2019</translation>
 <translation id="2870560284913253234">Tovuti</translation>
 <translation id="2871733351037274014">Kupakia kurasa mapema</translation>
+<translation id="2876136027428473467"><ph name="CHILD_NAME" /> anakuomba uidhinishe tovuti hii:</translation>
 <translation id="2886836735871983413">Orodha ya tovuti itaonekana hapa unapovinjari kwenye wavuti</translation>
 <translation id="2888126860611144412">Kuhusu Chrome</translation>
 <translation id="2891154217021530873">Simamisha upakiaji wa ukurasa</translation>
@@ -355,6 +356,7 @@
 <translation id="2932150158123903946">Hifadhi ya Google <ph name="APP_NAME" /></translation>
 <translation id="2932222164150889403">Kibodi yako haitabadilika</translation>
 <translation id="2936980480904111527">Arifa za Chrome hurahisisha mambo</translation>
+<translation id="2940075786175545812">Chaguo la kuidhinisha au kutoidhinisha tovuti</translation>
 <translation id="2942036813789421260">Kichupo cha kukagua kwanza kimefungwa</translation>
 <translation id="2946420957526726953">Inasasisha Chrome ili iweze kuunganisha kwenye vifaa vingine</translation>
 <translation id="2951071800649516099">Weka kurasa kwenye orodha yako ya kusoma ili uzisome baadaye</translation>
@@ -422,6 +424,7 @@
 <translation id="3259831549858767975">Fanya kila kitu kwenye ukurasa kiwe kidogo zaidi</translation>
 <translation id="3264124641674805320">Jinsi ya kupakua maudhui ili uyaangalie baadaye</translation>
 <translation id="3264259168916048410">Kompyuta yako inataka kutumia kifaa hiki kuingia katika akaunti kwenye tovuti</translation>
+<translation id="3265093782546847662">Kurasa zote za <ph name="DOMAIN" /></translation>
 <translation id="3265534588625245297">Dhibiti tovuti unazofuatilia</translation>
 <translation id="3269093882174072735">Pakia picha</translation>
 <translation id="3280562213547448728">Kutafuta kwa kutamka</translation>
@@ -731,6 +734,7 @@
 <translation id="4985248278475639481">Maelezo kuhusu kuweka mapendeleo ya matangazo</translation>
 <translation id="4987271110129728827">Imeshindwa kupata ukurasa huo. Kagua tahajia zako au jaribu kutafuta kwenye wavuti.</translation>
 <translation id="4988526792673242964">Kurasa</translation>
+<translation id="4991110219272367918">Chaguo la kuidhinisha au kutoidhinisha tovuti limefungwa</translation>
 <translation id="499724277181351974">Sogeza: <ph name="WEBSITE_TITLE" />: <ph name="WEBSITE_URL" /></translation>
 <translation id="5001388021414335527">Fuatilia tovuti hii hapa</translation>
 <translation id="500351648694011114">Vinjari kwa urahisi zaidi</translation>
@@ -1105,6 +1109,7 @@
 <translation id="6896758677409633944">Nakili</translation>
 <translation id="6900532703269623216">Ulinzi ulioboreshwa</translation>
 <translation id="6903907808598579934">Washa kipengele cha kusawazisha</translation>
+<translation id="6908998565271542516">Chaguo la kuidhinisha au kutoidhinisha wavuti limefunguliwa katika skrini nzima</translation>
 <translation id="6909589135458168665">Kupakia Kurasa Mapema</translation>
 <translation id="6942665639005891494">Badilisha sehemu chaguomsingi ya kupakua wakati wowote ukitumia chaguo la menyu ya Mipangilio</translation>
 <translation id="694267552845942083">Kwa sasa unaweka mipangilio yako ya Usawazishaji iwe upendavyo. Ili ukamilishe kuwasha usawazishaji, gusa kitufe cha 'Thibitisha' kwenye sehemu ya chini ya skrini. Nenda juu</translation>
@@ -1112,6 +1117,7 @@
 <translation id="6955535239952325894">Mipangilio hii imezimwa kwenye vivinjari vinavyodhibitiwa</translation>
 <translation id="6963766334940102469">Futa alamisho</translation>
 <translation id="696447261358045621">Funga hali fiche</translation>
+<translation id="6971862865055170158">Usiidhinishe</translation>
 <translation id="6979737339423435258">Wakati wote</translation>
 <translation id="6987047470128880212">Hali fiche haipatikani kwenye kifa hiki</translation>
 <translation id="6995899638241819463">Nionye ikiwa manenosiri yamefichuliwa katika tukio la ufichuzi haramu wa data</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_te.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_te.xtb
index c761878..20dae71 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_te.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_te.xtb
@@ -232,7 +232,7 @@
 <translation id="2230777942707397948">ఖాళీ విండో</translation>
 <translation id="223356358902285214">వెబ్ &amp; యాప్ యాక్టివిటీ</translation>
 <translation id="2239812875700136898">Discover కోసం ఆప్షన్‌లు' అనే బటన్ ద్వారా మీకు కనపడే కథనాలను నియంత్రించండి</translation>
-<translation id="2248941474044011069">మీ పాస్‌వర్డ్‌లు Google పాస్‌వర్డ్ మేనేజర్‌లో సేవ్ కావడానికి ముందు, మీ పరికరంలో ఎన్‌క్రిప్ట్ చేయబడ్డాయి</translation>
+<translation id="2248941474044011069">మీ పాస్‌వర్డ్‌లు Google Password Managerలో సేవ్ కావడానికి ముందు, మీ పరికరంలో ఎన్‌క్రిప్ట్ చేయబడ్డాయి</translation>
 <translation id="2259659629660284697">పాస్‌వర్డ్‌లను ఎగుమతి చేయండి…</translation>
 <translation id="2276231040576210443">ఏది సింక్ చేయాలనే దాన్ని, మీరు ఎప్పుడైనా <ph name="BEGIN_LINK1" />సెట్టింగ్‌లలో<ph name="END_LINK1" /> ఎంచుకోవచ్చు. Google మీ హిస్టరీ ఆధారంగా Search, ఇతర సర్వీస్‌లను వ్యక్తిగతీకరించవచ్చు.</translation>
 <translation id="2276696007612801991">మీ పాస్‌వర్డ్‌లను చెక్ చేయడానికి Google ఖాతాకు సైన్ ఇన్ చేయండి</translation>
@@ -340,6 +340,7 @@
 <translation id="2861923151411510142">కొన్ని Chrome ఫీచర్‌లు ఇకపై అందుబాటులో ఉండవు</translation>
 <translation id="2870560284913253234">సైట్</translation>
 <translation id="2871733351037274014">పేజీలను ప్రీ - లోడ్ చేయండి</translation>
+<translation id="2876136027428473467">మీరు ఈ వెబ్‌సైట్‌ను ఆమోదించాలని <ph name="CHILD_NAME" /> కోరుతున్నారు:</translation>
 <translation id="2886836735871983413">మీరు వెబ్‌లో బ్రౌజ్ చేస్తున్నప్పుడు, ఇక్కడ సైట్‌ల లిస్ట్ కనిపిస్తుంది</translation>
 <translation id="2888126860611144412">Chrome పరిచయం</translation>
 <translation id="2891154217021530873">పేజీ లోడ్ కాకుండా ఆపివేయండి</translation>
@@ -355,6 +356,7 @@
 <translation id="2932150158123903946">Google <ph name="APP_NAME" /> నిల్వ</translation>
 <translation id="2932222164150889403">మీ కీబోర్డ్ మారదు</translation>
 <translation id="2936980480904111527">Chrome నోటిఫికేషన్‌లు పనులను మరింత సులభతరం చేస్తాయి</translation>
+<translation id="2940075786175545812">ఏదైనా వెబ్‌సైట్‌ను ఆమోదించాలా లేదా వద్దా అని నిర్ణయించే ఆప్షన్</translation>
 <translation id="2942036813789421260">ప్రివ్యూ ట్యాబ్ మూసివేయబడింది</translation>
 <translation id="2946420957526726953">ఇతర పరికరాలతో కనెక్ట్ చేయడానికి Chromeను అప్‌డేట్ చేస్తోంది</translation>
 <translation id="2951071800649516099">తర్వాత చదవడానికి మీ చదవాల్సిన లిస్ట్‌కు పేజీలను జోడించండి</translation>
@@ -422,6 +424,7 @@
 <translation id="3259831549858767975">పేజీలోని అన్నింటినీ చిన్నవిగా చేయండి</translation>
 <translation id="3264124641674805320">తర్వాత ఉపయోగించడానికి కంటెంట్‌ను డౌన్‌లోడ్ చేయడం ఎలా</translation>
 <translation id="3264259168916048410">ఒక సైట్‌లోకి సైన్ ఇన్ చేయడానికి, మీ కంప్యూటర్ ఈ పరికరాన్ని ఉపయోగించాలని కోరుతోంది</translation>
+<translation id="3265093782546847662"><ph name="DOMAIN" />‌లోని అన్ని పేజీలు</translation>
 <translation id="3265534588625245297">మీరు ఫాలో చేసే సైట్‌లను మేనేజ్ చేయండి</translation>
 <translation id="3269093882174072735">చిత్రాన్ని లోడ్ చేయి</translation>
 <translation id="3280562213547448728">వాయిస్ సెర్చ్</translation>
@@ -695,7 +698,7 @@
 <translation id="4837753911714442426">పేజీని ముద్రించడానికి ఎంపికలను తెరవండి</translation>
 <translation id="4842092870884894799">పాస్‌వర్డ్ ఉత్పత్తి పాప్ అప్ చూపబడుతోంది</translation>
 <translation id="4842515939542199281">మీ వాయిస్‌తో సెర్చ్ చేయడానికి, మైక్రోఫోన్‌ను ట్యాప్ చేయండి</translation>
-<translation id="4844633725025837809">అదనపు భద్రత కోసం, పాస్‌వర్డ్‌లు Google పాస్‌వర్డ్ మేనేజర్‌లో సేవ్ కావడానికి ముందు, వాటిని మీ పరికరంలో ఎన్‌క్రిప్ట్ చేయండి</translation>
+<translation id="4844633725025837809">అదనపు భద్రత కోసం, పాస్‌వర్డ్‌లు Google Password Managerలో సేవ్ కావడానికి ముందు, వాటిని మీ పరికరంలో ఎన్‌క్రిప్ట్ చేయండి</translation>
 <translation id="4850886885716139402">వీక్షణ</translation>
 <translation id="4852014461738377247">సైన్ ఇన్ అవుతోంది\u2026</translation>
 <translation id="4860895144060829044">కాల్ చేయండి</translation>
@@ -731,6 +734,7 @@
 <translation id="4985248278475639481">యాడ్‌ల వ్యక్తిగతీకరణ గురించి</translation>
 <translation id="4987271110129728827">ఆ పేజీని కనుగొనడం సాధ్యపడలేదు. మీ స్పెల్లింగ్‌ను చెక్ చేయండి లేదా వెబ్ సెర్చ్‌ను ట్రై చేయండి.</translation>
 <translation id="4988526792673242964">పేజీలు</translation>
+<translation id="4991110219272367918">ఏదైనా వెబ్‌సైట్‌ను ఆమోదించాలా లేదా వద్దా అని నిర్ణయించే ఆప్షన్ మూసివేయబడింది</translation>
 <translation id="499724277181351974">నావిగేట్ చేయండి: <ph name="WEBSITE_TITLE" />: <ph name="WEBSITE_URL" /></translation>
 <translation id="5001388021414335527">ఈ సైట్‌ను ఇక్కడ ఫాలో అవ్వండి</translation>
 <translation id="500351648694011114">మరింత సులువుగా బ్రౌజ్ చేయండి</translation>
@@ -947,7 +951,7 @@
 <translation id="6186394685773237175">చోరీకి గురైన పాస్‌వర్డ్‌లు ఏవీ కనుగొనబడలేదు</translation>
 <translation id="6192907950379606605">ఇమేజ్ వివరణలను పొందండి</translation>
 <translation id="6193448654517602979">ట్యాబ్‌లను ఎంచుకోండి</translation>
-<translation id="6196315980958524839">పాస్‌వర్డ్‌లు ఈ పరికరంలోని Google పాస్‌వర్డ్ మేనేజర్‌లో సేవ్ చేయబడతాయి</translation>
+<translation id="6196315980958524839">పాస్‌వర్డ్‌లు ఈ పరికరంలోని Google Password Managerలో సేవ్ చేయబడతాయి</translation>
 <translation id="620197886010707372">Google Playలో <ph name="APPNAME" /> యాప్‌ను తెరవాలా?</translation>
 <translation id="6202812185118613467">సింక్‌ను ప్రారంభించడం కోసం తిరిగి సైన్ ఇన్ చేయండి</translation>
 <translation id="6210748933810148297"><ph name="EMAIL" /> కాదా?</translation>
@@ -1105,6 +1109,7 @@
 <translation id="6896758677409633944">కాపీ చేయి</translation>
 <translation id="6900532703269623216">మెరుగైన రక్షణ</translation>
 <translation id="6903907808598579934">సింక్‌ను ఆన్ చేయి</translation>
+<translation id="6908998565271542516">ఏదైనా వెబ్‌సైట్‌ను ఆమోదించాలా లేదా వద్దా అని నిర్ణయించే ఆప్షన్ పూర్తి ఎత్తులో తెరవబడింది</translation>
 <translation id="6909589135458168665">పేజీలను ప్రీ - లోడ్ చేయండి</translation>
 <translation id="6942665639005891494">సెట్టింగ్‌ల మెనూ ఎంపికను ఉపయోగించి డిఫాల్ట్ డౌన్‌లోడ్ స్థానాన్ని మార్చండి</translation>
 <translation id="694267552845942083">మీరు ప్రస్తుతం మీ సింక్ సెట్టింగ్‌లను అనుకూలీకరిస్తున్నారు. సింక్‌ను ఆన్ చేయడం పూర్తి చేయడానికి, స్క్రీన్ దిగువ భాగం సమీపంలోని 'నిర్ధారించు' బటన్‌ను ట్యాప్ చేయండి. పైకి నావిగేట్ చేయి</translation>
@@ -1112,6 +1117,7 @@
 <translation id="6955535239952325894">మేనేజ్ అవుతోన్న బ్రౌజర్‌లలో ఈ సెట్టింగ్ డిజేబుల్ చేయబడింది.</translation>
 <translation id="6963766334940102469">బుక్‌మార్క్‌లను తొలగించు</translation>
 <translation id="696447261358045621">అజ్ఞాత మోడ్ నుండి నిష్క్రమించండి</translation>
+<translation id="6971862865055170158">ఆమోదించవద్దు</translation>
 <translation id="6979737339423435258">మొత్తం సమయం</translation>
 <translation id="6987047470128880212">ఈ పరికరంలో అజ్ఞాత మోడ్ అందుబాటులో లేదు</translation>
 <translation id="6995899638241819463">మీరు ఉపయోగించే పాస్‌వర్డ్‌లు, ఏదైనా డేటా ఉల్లంఘనలో బహిర్గతమైతే మిమ్మల్ని హెచ్చరిస్తుంది</translation>
@@ -1292,7 +1298,7 @@
 <translation id="7961015016161918242">ఎప్పుడూ లేదు</translation>
 <translation id="7961926449547174351">మీరు స్టోరేజ్ యాక్సెస్‌ను డిజేబుల్ చేశారు, దానిని ఎనేబుల్ చేయడానికి దయచేసి సెట్టింగ్‌లకు వెళ్లండి.</translation>
 <translation id="7963646190083259054">విక్రేత:</translation>
-<translation id="7965838025086216108">మీరు సేవ్ చేసిన పాస్‌వర్డ్‌లను ఏ పరికరంలోనైనా ఉపయోగించవచ్చు. <ph name="ACCOUNT" /> కోసం అవి Google పాస్‌వర్డ్ మేనేజర్‌లో సేవ్ చేయబడతాయి.</translation>
+<translation id="7965838025086216108">మీరు సేవ్ చేసిన పాస్‌వర్డ్‌లను ఏ పరికరంలోనైనా ఉపయోగించవచ్చు. <ph name="ACCOUNT" /> కోసం అవి Google Password Managerలో సేవ్ చేయబడతాయి.</translation>
 <translation id="7968014550143838305">చదవాల్సిన లిస్ట్‌కు జోడించబడింది</translation>
 <translation id="7971136598759319605">1 రోజు క్రితం యాక్టివ్‌గా ఉంది</translation>
 <translation id="7975379999046275268"><ph name="BEGIN_NEW" />కొత్త<ph name="END_NEW" /> పేజీని ప్రివ్యూ చేయండి</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 da8697a..c93eef8 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
@@ -340,6 +340,7 @@
 <translation id="2861923151411510142">Bazı Chrome özellikleri artık kullanılamayacak</translation>
 <translation id="2870560284913253234">Site</translation>
 <translation id="2871733351037274014">Sayfaları önceden yükleme</translation>
+<translation id="2876136027428473467"><ph name="CHILD_NAME" /> şu web sitesini onaylamanızı istiyor:</translation>
 <translation id="2886836735871983413">Siz web'de gezindikçe sitelerin listesi burada görünür</translation>
 <translation id="2888126860611144412">Chrome hakkında</translation>
 <translation id="2891154217021530873">Sayfa yüklemeyi durdur</translation>
@@ -355,6 +356,7 @@
 <translation id="2932150158123903946">Google <ph name="APP_NAME" /> depolama alanı</translation>
 <translation id="2932222164150889403">Klavyeniz değişmeyecek</translation>
 <translation id="2936980480904111527">Chrome bildirimleri birçok kolaylık sağlar</translation>
+<translation id="2940075786175545812">Bir web sitesini onaylama veya onaylamama seçeneği</translation>
 <translation id="2942036813789421260">Önizleme sekmesi kapalı</translation>
 <translation id="2946420957526726953">Diğer cihazlara bağlanmak için Chrome güncelleniyor</translation>
 <translation id="2951071800649516099">Daha sonra okumak için sayfaları okuma listenize ekleyin</translation>
@@ -422,6 +424,7 @@
 <translation id="3259831549858767975">Sayfadaki her şeyi küçültür</translation>
 <translation id="3264124641674805320">Daha sonrası için içerik nasıl indirilir?</translation>
 <translation id="3264259168916048410">Bilgisayarınız bir sitede oturum açmak için bu cihazı kullanmak istiyor</translation>
+<translation id="3265093782546847662"><ph name="DOMAIN" /> alanının tüm sayfaları</translation>
 <translation id="3265534588625245297">Takip ettiğiniz siteleri yönetin</translation>
 <translation id="3269093882174072735">Resim yükle</translation>
 <translation id="3280562213547448728">Sesli arama</translation>
@@ -731,6 +734,7 @@
 <translation id="4985248278475639481">Reklam kişiselleştirme hakkında</translation>
 <translation id="4987271110129728827">Sayfa bulunamadı. Yazımınızı kontrol edin veya web araması yapmayı deneyin.</translation>
 <translation id="4988526792673242964">Sayfalar</translation>
+<translation id="4991110219272367918">Kapatılan bir web sitesini onaylama veya onaylamama seçeneği</translation>
 <translation id="499724277181351974">Şu sayfaya git: <ph name="WEBSITE_TITLE" />: <ph name="WEBSITE_URL" /></translation>
 <translation id="5001388021414335527">Siteyi buradan takip edin</translation>
 <translation id="500351648694011114">Daha kolay göz atın</translation>
@@ -1105,6 +1109,7 @@
 <translation id="6896758677409633944">Kopyala</translation>
 <translation id="6900532703269623216">Gelişmiş koruma</translation>
 <translation id="6903907808598579934">Senkronizasyonu aç</translation>
+<translation id="6908998565271542516">Tam ekranda açılan bir web sitesini onaylama veya onaylamama seçeneği</translation>
 <translation id="6909589135458168665">Sayfaları Önceden Yükleme</translation>
 <translation id="6942665639005891494">Dosyaların indirileceği varsayılan konumu istediğiniz zaman Ayarlar menü seçeneğini kullanarak değiştirebilirsiniz</translation>
 <translation id="694267552845942083">Şu anda Senkronizasyon ayarlarınızı özelleştiriyorsunuz. Senkronizasyonu etkinleştirme işlemini tamamlamak için ekranın altına yakın bir yerde bulunan Onayla düğmesine dokunun. Yukarı git</translation>
@@ -1112,6 +1117,7 @@
 <translation id="6955535239952325894">Bu ayar yönetilen tarayıcılarda devre dışı bırakıldı</translation>
 <translation id="6963766334940102469">Yer işaretlerini silme</translation>
 <translation id="696447261358045621">Gizli moddan çık</translation>
+<translation id="6971862865055170158">Onaylama</translation>
 <translation id="6979737339423435258">Tüm zamanlar</translation>
 <translation id="6987047470128880212">Gizli mod bu cihazda kullanılamıyor</translation>
 <translation id="6995899638241819463">Şifreleriniz bir veri ihlalinde ifşa olursa uyarı alın</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb
index 5bafb884..6cf913e 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb
@@ -340,6 +340,7 @@
 <translation id="2861923151411510142">Деякі функції Chrome більше не будуть доступними</translation>
 <translation id="2870560284913253234">Сайт</translation>
 <translation id="2871733351037274014">Попередньо завантажувати сторінки</translation>
+<translation id="2876136027428473467"><ph name="CHILD_NAME" /> просить схвалити цей веб-сайт:</translation>
 <translation id="2886836735871983413">Коли ви переглядатимете веб-сторінки, тут з’являтиметься список сайтів</translation>
 <translation id="2888126860611144412">Про Chrome</translation>
 <translation id="2891154217021530873">Припинити завантаження сторінки</translation>
@@ -355,6 +356,7 @@
 <translation id="2932150158123903946">Дані додатка Google <ph name="APP_NAME" /></translation>
 <translation id="2932222164150889403">Розкладка клавіатури не зміниться</translation>
 <translation id="2936980480904111527">Переваги сповіщень Chrome</translation>
+<translation id="2940075786175545812">Екран з опцією схвалити або відхилити запит на доступ до веб-сайту</translation>
 <translation id="2942036813789421260">Вкладку "Попередній перегляд" закрито</translation>
 <translation id="2946420957526726953">Chrome оновлюється, щоб підключитися до інших пристроїв</translation>
 <translation id="2951071800649516099">Додавайте сторінки в список читання, щоб переглядати їх пізніше</translation>
@@ -422,6 +424,7 @@
 <translation id="3259831549858767975">Зменшити всі елементи на сторінці</translation>
 <translation id="3264124641674805320">Як завантажити контент, щоб переглянути його пізніше</translation>
 <translation id="3264259168916048410">Ваш комп’ютер пропонує використовувати цей пристрій для входу на сайті</translation>
+<translation id="3265093782546847662">Усі сторінки в домені <ph name="DOMAIN" /></translation>
 <translation id="3265534588625245297">Керуйте сайтами, на які підписалися</translation>
 <translation id="3269093882174072735">Завантажити зображення</translation>
 <translation id="3280562213547448728">Голосовий пошук</translation>
@@ -731,6 +734,7 @@
 <translation id="4985248278475639481">Про персоналізацію реклами</translation>
 <translation id="4987271110129728827">Не вдається знайти цю сторінку. Перевірте написання або спробуйте шукати в Інтернеті.</translation>
 <translation id="4988526792673242964">Сторінки</translation>
+<translation id="4991110219272367918">Екран з опцією схвалити або відхилити запит на доступ до веб-сайту закрито</translation>
 <translation id="499724277181351974">Відкрити: <ph name="WEBSITE_TITLE" />: <ph name="WEBSITE_URL" /></translation>
 <translation id="5001388021414335527">Підпишіться на цей сайт</translation>
 <translation id="500351648694011114">Легше переглядайте контент</translation>
@@ -1105,6 +1109,7 @@
 <translation id="6896758677409633944">Копіювати</translation>
 <translation id="6900532703269623216">Покращений захист</translation>
 <translation id="6903907808598579934">Увімкнути синхронізацію</translation>
+<translation id="6908998565271542516">Екран з опцією схвалити або відхилити запит на доступ до веб-сайту відкрито на повну висоту</translation>
 <translation id="6909589135458168665">Попередньо завантажувати сторінки</translation>
 <translation id="6942665639005891494">Будь-коли змінюйте папку для завантажень за умовчанням, використовуючи відповідну опцію в меню "Налаштування"</translation>
 <translation id="694267552845942083">Зараз ви налаштовуєте синхронізацію. Щоб увімкнути її, натисніть кнопку "Підтвердити" внизу екрана. Перейти вгору</translation>
@@ -1112,6 +1117,7 @@
 <translation id="6955535239952325894">Цей параметр вимкнено в керованих веб-переглядачах</translation>
 <translation id="6963766334940102469">Видалити закладки</translation>
 <translation id="696447261358045621">Вимкнути режим анонімного перегляду</translation>
+<translation id="6971862865055170158">Не схвалювати</translation>
 <translation id="6979737339423435258">Увесь час</translation>
 <translation id="6987047470128880212">Анонімний режим недоступний на цьому пристрої</translation>
 <translation id="6995899638241819463">Попереджати, якщо паролі розкрито через порушення безпеки даних</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb
index dee21ace..130c0ef0 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb
@@ -340,6 +340,7 @@
 <translation id="2861923151411510142">‏Chrome کی کچھ خصوصیات اب دستیاب نہیں ہوں گی۔</translation>
 <translation id="2870560284913253234">سائٹ</translation>
 <translation id="2871733351037274014">پیشگی لوڈ والے صفحات</translation>
+<translation id="2876136027428473467"><ph name="CHILD_NAME" /> آپ سے اس ویب سائٹ کی منظوری چاہتی ہے:</translation>
 <translation id="2886836735871983413">آپ کے ویب براؤز کرتے ہی سائٹس کی ایک فہرست یہاں ظاہر ہوگی</translation>
 <translation id="2888126860611144412">‏Chrome کے بارے میں</translation>
 <translation id="2891154217021530873">صفحہ لوڈ کرنا بند کریں</translation>
@@ -355,6 +356,7 @@
 <translation id="2932150158123903946">‏Google <ph name="APP_NAME" /> اسٹوریج</translation>
 <translation id="2932222164150889403">آپ کا کی بورڈ تبدیل نہیں ہوگا</translation>
 <translation id="2936980480904111527">‏Chrome کی اطلاعات چیزوں کو آسان بناتی ہیں</translation>
+<translation id="2940075786175545812">کسی ویب سائٹ کو منظوری دینے یا منظوری نہ دینے کا اختیار</translation>
 <translation id="2942036813789421260">پیش منظر ٹیب بند ہے</translation>
 <translation id="2946420957526726953">‏دیگر آلات سے منسلک ہونے کیلئے Chrome کو اپ ڈیٹ کیا جا رہا ہے</translation>
 <translation id="2951071800649516099">بعد کیلئے اپنی پڑھنے کی فہرست میں صفحات شامل کریں</translation>
@@ -422,6 +424,7 @@
 <translation id="3259831549858767975">صفحہ پر موجود ہر چیز کو اور چھوٹا کریں</translation>
 <translation id="3264124641674805320">بعد میں دیکھنے کیلئے مواد ڈاؤن لوڈ کرنے کا طریقہ</translation>
 <translation id="3264259168916048410">آپ کا کمپیوٹر اس آلے کو کسی سائٹ میں سائن ان کرنے کیلئے استعمال کرنا چاہتا ہے</translation>
+<translation id="3265093782546847662"><ph name="DOMAIN" /> کے سبھی صفحات</translation>
 <translation id="3265534588625245297">ان سائٹس کا نظم کریں جن کی آپ پیروی کرتے ہیں</translation>
 <translation id="3269093882174072735">تصویر لوڈ کریں</translation>
 <translation id="3280562213547448728">صوتی تلاش</translation>
@@ -731,6 +734,7 @@
 <translation id="4985248278475639481">اشتہارات کی ذاتی نوعیت سازی کے بارے میں</translation>
 <translation id="4987271110129728827">وہ صفحہ نہیں مل سکا۔ اپنا املا چیک کریں یا ویب تلاش کی کوشش کریں۔</translation>
 <translation id="4988526792673242964">صفحات</translation>
+<translation id="4991110219272367918">کسی بند ویب سائٹ کو منظوری دینے یا منظوری نہ دینے کا اختیار</translation>
 <translation id="499724277181351974">نیویگیٹ کریں: <ph name="WEBSITE_TITLE" />: <ph name="WEBSITE_URL" /></translation>
 <translation id="5001388021414335527">یہاں اس سائٹ کی پیروی کریں</translation>
 <translation id="500351648694011114">زیادہ آسانی سے براؤز کریں</translation>
@@ -1105,6 +1109,7 @@
 <translation id="6896758677409633944">کاپی کریں</translation>
 <translation id="6900532703269623216">بہتر کردہ حفاظت</translation>
 <translation id="6903907808598579934">مطابقت پذیری آن کریں</translation>
+<translation id="6908998565271542516">مکمل اونچائی پر کھلی ہوئی کسی ویب سائٹ کو منظوری دینے یا منظوری نہ دینے کا اختیار</translation>
 <translation id="6909589135458168665">پیشگی لوڈ والے صفحات</translation>
 <translation id="6942665639005891494">ترتیبات کا مینو اختیار استعمال کر کے ڈاؤن لوڈ کا ڈیفالٹ مقام کسی بھی وقت تبدیل کریں</translation>
 <translation id="694267552845942083">آپ فی الحال اپنی مطابقت پذیری کی ترتیبات کو حسب ضرورت بنا رہے ہیں۔ مطابقت پذیری آن کرنے کا عمل مکمل کرنے کیلئے، اسکرین کے نچلے حصے کے پاس موجود 'تصدیق کریں' بٹن پر تھپتھپائیں۔ اوپر نیویگیٹ کریں</translation>
@@ -1112,6 +1117,7 @@
 <translation id="6955535239952325894">یہ ترتیب نظم کردہ براؤزرز پر غیر فعال ہے</translation>
 <translation id="6963766334940102469">بُک مارکس حذف کریں</translation>
 <translation id="696447261358045621">پوشیدگی وضع ترک کریں</translation>
+<translation id="6971862865055170158">منظوری نہ دیں</translation>
 <translation id="6979737339423435258">ہر وقت</translation>
 <translation id="6987047470128880212">اس آلے پر پوشیدگی دستیاب نہیں ہے</translation>
 <translation id="6995899638241819463">اگر پاس ورڈز ڈیٹا کی خلاف ورزی میں افشاء ہوتے ہیں تو وارننگ حاصل کریں</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-HK.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-HK.xtb
index 285a072e..68e70aa 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-HK.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-HK.xtb
@@ -340,6 +340,7 @@
 <translation id="2861923151411510142">部分 Chrome 功能將無法再使用</translation>
 <translation id="2870560284913253234">網站</translation>
 <translation id="2871733351037274014">預先載入網頁</translation>
+<translation id="2876136027428473467"><ph name="CHILD_NAME" />想請你核准這個網站:</translation>
 <translation id="2886836735871983413">在您瀏覽網絡同時,系統會於此處顯示網站清單</translation>
 <translation id="2888126860611144412">關於 Chrome</translation>
 <translation id="2891154217021530873">停止載入網頁</translation>
@@ -355,6 +356,7 @@
 <translation id="2932150158123903946">Google <ph name="APP_NAME" /> 儲存空間</translation>
 <translation id="2932222164150889403">這不會影響您的鍵盤設定</translation>
 <translation id="2936980480904111527">Chrome 通知能提供更簡易的操作體驗</translation>
+<translation id="2940075786175545812">審核網站瀏覽要求的選項</translation>
 <translation id="2942036813789421260">預覽分頁閂咗</translation>
 <translation id="2946420957526726953">正在更新 Chrome 以連接其他裝置</translation>
 <translation id="2951071800649516099">將網頁新增至閱讀清單,以便稍後瀏覽</translation>
@@ -422,6 +424,7 @@
 <translation id="3259831549858767975">縮小網頁中的所有內容</translation>
 <translation id="3264124641674805320">如何下載內容供日後使用</translation>
 <translation id="3264259168916048410">您的電腦想透過此裝置登入網站</translation>
+<translation id="3265093782546847662"><ph name="DOMAIN" /> 的所有頁面</translation>
 <translation id="3265534588625245297">管理您追蹤的網站</translation>
 <translation id="3269093882174072735">載入圖片</translation>
 <translation id="3280562213547448728">語音搜尋</translation>
@@ -731,6 +734,7 @@
 <translation id="4985248278475639481">關於廣告個人化</translation>
 <translation id="4987271110129728827">找不到該頁面。請檢查拼字,或嘗試執行網絡搜尋。</translation>
 <translation id="4988526792673242964">網頁</translation>
+<translation id="4991110219272367918">審核網站瀏覽要求的選項功能表已關閉</translation>
 <translation id="499724277181351974">導覽:<ph name="WEBSITE_TITLE" />:<ph name="WEBSITE_URL" /></translation>
 <translation id="5001388021414335527">按一下這裡追蹤此網站</translation>
 <translation id="500351648694011114">讓瀏覽變得更輕鬆</translation>
@@ -1105,6 +1109,7 @@
 <translation id="6896758677409633944">複製</translation>
 <translation id="6900532703269623216">強化保護功能</translation>
 <translation id="6903907808598579934">開啟同步處理功能</translation>
+<translation id="6908998565271542516">審核網站瀏覽要求的選項功能表已完整開啟</translation>
 <translation id="6909589135458168665">預先載入網頁</translation>
 <translation id="6942665639005891494">用「設定」選單選項,隨時更改預設嘅下載位置</translation>
 <translation id="694267552845942083">你自訂緊同步設定。㩒一下畫面底部附近嘅 [確認] 掣,就可以完成打開同步處理功能嘅程序喇。向上瀏覽</translation>
@@ -1112,6 +1117,7 @@
 <translation id="6955535239952325894">受管理的瀏覽器已停用此設定</translation>
 <translation id="6963766334940102469">刪除書籤</translation>
 <translation id="696447261358045621">退出無痕模式</translation>
+<translation id="6971862865055170158">拒絕</translation>
 <translation id="6979737339423435258">所有時間</translation>
 <translation id="6987047470128880212">這部裝置不支援無式痕分頁</translation>
 <translation id="6995899638241819463">密碼因資料外洩而被洩露時接收警告</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb
index 6f90cae5..8cad780 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb
@@ -339,6 +339,7 @@
 <translation id="2861923151411510142">系統將不再提供部分 Chrome 功能</translation>
 <translation id="2870560284913253234">網站</translation>
 <translation id="2871733351037274014">預先載入網頁</translation>
+<translation id="2876136027428473467"><ph name="CHILD_NAME" />想請你核准這個網站:</translation>
 <translation id="2886836735871983413">瀏覽網路時,網站清單會顯示在這裡</translation>
 <translation id="2888126860611144412">關於 Chrome</translation>
 <translation id="2891154217021530873">停止載入網頁</translation>
@@ -354,6 +355,7 @@
 <translation id="2932150158123903946">Google <ph name="APP_NAME" /> 儲存資料量</translation>
 <translation id="2932222164150889403">這不會影響你的鍵盤設定</translation>
 <translation id="2936980480904111527">Chrome 的通知功能提供了更簡易直覺的操作體驗</translation>
+<translation id="2940075786175545812">審核網站瀏覽要求的選項</translation>
 <translation id="2942036813789421260">預覽分頁已關閉</translation>
 <translation id="2946420957526726953">正在更新 Chrome 以連線到其他裝置</translation>
 <translation id="2951071800649516099">將網頁新增至閱讀清單以供日後使用</translation>
@@ -421,6 +423,7 @@
 <translation id="3259831549858767975">縮小網頁上的所有內容</translation>
 <translation id="3264124641674805320">如何下載內容供稍後使用</translation>
 <translation id="3264259168916048410">你的電腦想要透過這部裝置登入網站</translation>
+<translation id="3265093782546847662"><ph name="DOMAIN" /> 的所有頁面</translation>
 <translation id="3265534588625245297">管理你追蹤的網站</translation>
 <translation id="3269093882174072735">載入圖片</translation>
 <translation id="3280562213547448728">語音搜尋</translation>
@@ -730,6 +733,7 @@
 <translation id="4985248278475639481">關於廣告個人化</translation>
 <translation id="4987271110129728827">找不到該頁面。請檢查錯別字或嘗試執行網頁搜尋。</translation>
 <translation id="4988526792673242964">網頁</translation>
+<translation id="4991110219272367918">審核網站瀏覽要求的選項功能表已關閉</translation>
 <translation id="499724277181351974">導航:<ph name="WEBSITE_TITLE" />:<ph name="WEBSITE_URL" /></translation>
 <translation id="5001388021414335527">在這裡追蹤這個網站</translation>
 <translation id="500351648694011114">瀏覽更輕鬆</translation>
@@ -1102,6 +1106,7 @@
 <translation id="6896758677409633944">複製</translation>
 <translation id="6900532703269623216">強化防護</translation>
 <translation id="6903907808598579934">開啟同步功能</translation>
+<translation id="6908998565271542516">審核網站瀏覽要求的選項功能表已完整開啟</translation>
 <translation id="6909589135458168665">預先載入網頁</translation>
 <translation id="6942665639005891494">你隨時可以使用 [設定] 選單選項變更預設的下載位置</translation>
 <translation id="694267552845942083">你正在自訂同步功能設定。如要開啟同步功能,請輕觸畫面底部附近的 [確認] 按鈕。向上瀏覽</translation>
@@ -1109,6 +1114,7 @@
 <translation id="6955535239952325894">受管理的瀏覽器已停用這項設定</translation>
 <translation id="6963766334940102469">刪除書籤</translation>
 <translation id="696447261358045621">退出無痕模式</translation>
+<translation id="6971862865055170158">拒絕</translation>
 <translation id="6979737339423435258">不限時間</translation>
 <translation id="6987047470128880212">這部裝置不支援無痕模式</translation>
 <translation id="6995899638241819463">當密碼因資料侵害事件遭到外洩時發出警告</translation>
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/LocationBarModel.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/LocationBarModel.java
index 4ea704c7..cfdddbb 100644
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/LocationBarModel.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/LocationBarModel.java
@@ -579,15 +579,15 @@
     }
 
     @Override
-    public int getPageClassification(boolean isFocusedFromFakebox) {
+    public int getPageClassification(boolean isFocusedFromFakebox, boolean isPrefetch) {
         if (mNativeLocationBarModelAndroid == 0) return PageClassification.INVALID_SPEC_VALUE;
 
         // Provide NTP as page class in overview mode (when Start Surface is enabled). No call
         // to the backend necessary or possible, since there is no tab or navigation entry.
         if (isInOverviewAndShowingOmnibox()) return PageClassification.NTP_VALUE;
 
-        return LocationBarModelJni.get().getPageClassification(
-                mNativeLocationBarModelAndroid, LocationBarModel.this, isFocusedFromFakebox);
+        return LocationBarModelJni.get().getPageClassification(mNativeLocationBarModelAndroid,
+                LocationBarModel.this, isFocusedFromFakebox, isPrefetch);
     }
 
     @Override
@@ -757,6 +757,6 @@
         String getFormattedFullURL(long nativeLocationBarModelAndroid, LocationBarModel caller);
         String getURLForDisplay(long nativeLocationBarModelAndroid, LocationBarModel caller);
         int getPageClassification(long nativeLocationBarModelAndroid, LocationBarModel caller,
-                boolean isFocusedFromFakebox);
+                boolean isFocusedFromFakebox, boolean isPrefetch);
     }
 }
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java
index 2c461d81..4c650ce9 100644
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.java
@@ -1062,19 +1062,6 @@
 
         mLocationBar.getPhoneCoordinator().setTranslationX(locationBarTranslationX);
 
-        // When the dse icon is enabled, the UrlBar needs additional translation to compensate for
-        // the additional translation applied to the LocationBar. See comments in
-        // LocationBarCoordinator#getUrlBarTranslationXForToolbarAnimation() and
-        // LocationBarMediator#getUrlBarTranslationXForToolbarAnimation() for implementation
-        // details.
-        if (SearchEngineLogoUtils.getInstance().shouldShowSearchEngineLogo(isIncognito)) {
-            mUrlBar.setTranslationX(
-                    mLocationBar.getUrlBarTranslationXForToolbarAnimation(mUrlExpansionFraction,
-                            UrlUtilities.isNTPUrl(getToolbarDataProvider().getCurrentGurl())));
-        } else {
-            mUrlBar.setTranslationX(0);
-        }
-
         if (!mOptionalButtonAnimationRunning) {
             mUrlActionContainer.setTranslationX(getUrlActionsTranslationXForExpansionAnimation(
                     isLocationBarRtl, locationBarBaseTranslationX));
diff --git a/chrome/browser/ui/android/toolbar/location_bar_model_android.cc b/chrome/browser/ui/android/toolbar/location_bar_model_android.cc
index 1915d392..69dbbf38 100644
--- a/chrome/browser/ui/android/toolbar/location_bar_model_android.cc
+++ b/chrome/browser/ui/android/toolbar/location_bar_model_android.cc
@@ -50,7 +50,8 @@
 jint LocationBarModelAndroid::GetPageClassification(
     JNIEnv* env,
     const base::android::JavaParamRef<jobject>& obj,
-    bool is_focused_from_fakebox) {
+    bool is_focused_from_fakebox,
+    bool is_prefetch) {
   // On phones, the omnibox is not initially shown on the NTP.  In this case,
   // treat the fakebox like the omnibox.
   if (ui::GetDeviceFormFactor() == ui::DEVICE_FORM_FACTOR_PHONE)
diff --git a/chrome/browser/ui/android/toolbar/location_bar_model_android.h b/chrome/browser/ui/android/toolbar/location_bar_model_android.h
index d7b20a0..dd52333 100644
--- a/chrome/browser/ui/android/toolbar/location_bar_model_android.h
+++ b/chrome/browser/ui/android/toolbar/location_bar_model_android.h
@@ -38,7 +38,8 @@
       const base::android::JavaParamRef<jobject>& obj);
   jint GetPageClassification(JNIEnv* env,
                              const base::android::JavaParamRef<jobject>& obj,
-                             bool is_focused_from_fakebox);
+                             bool is_focused_from_fakebox,
+                             bool is_prefetch);
 
   // ChromeLocationBarModelDelegate:
   content::WebContents* GetActiveWebContents() const override;
diff --git a/chrome/browser/ui/android/toolbar/location_bar_model_android_unittest.cc b/chrome/browser/ui/android/toolbar/location_bar_model_android_unittest.cc
index ff9ec5d4..3262dfd8 100644
--- a/chrome/browser/ui/android/toolbar/location_bar_model_android_unittest.cc
+++ b/chrome/browser/ui/android/toolbar/location_bar_model_android_unittest.cc
@@ -35,7 +35,8 @@
   EXPECT_EQ(
       metrics::OmniboxEventProto::INSTANT_NTP_WITH_OMNIBOX_AS_STARTING_FOCUS,
       location_bar_model_android.GetPageClassification(
-          nullptr, base::android::JavaParamRef<jobject>(nullptr), false));
+          nullptr, base::android::JavaParamRef<jobject>(nullptr), false,
+          false));
 
   std::string ntp_with_path_and_query =
       std::string(chrome::kChromeUINativeNewTabURL) + "foopath?foo=bar";
@@ -43,5 +44,6 @@
   EXPECT_EQ(
       metrics::OmniboxEventProto::INSTANT_NTP_WITH_OMNIBOX_AS_STARTING_FOCUS,
       location_bar_model_android.GetPageClassification(
-          nullptr, base::android::JavaParamRef<jobject>(nullptr), false));
+          nullptr, base::android::JavaParamRef<jobject>(nullptr), false,
+          false));
 }
diff --git a/chrome/browser/ui/ash/assistant/device_actions.cc b/chrome/browser/ui/ash/assistant/device_actions.cc
index 79c00f6..b9043e6 100644
--- a/chrome/browser/ui/ash/assistant/device_actions.cc
+++ b/chrome/browser/ui/ash/assistant/device_actions.cc
@@ -11,7 +11,6 @@
 #include "ash/components/arc/mojom/intent_helper.mojom.h"
 #include "ash/components/arc/session/arc_bridge_service.h"
 #include "ash/components/arc/session/arc_service_manager.h"
-#include "ash/constants/ash_features.h"
 #include "ash/constants/ash_pref_names.h"
 #include "ash/public/cpp/bluetooth_config_service.h"
 #include "base/bind.h"
@@ -111,12 +110,8 @@
 
 DeviceActions::DeviceActions(std::unique_ptr<DeviceActionsDelegate> delegate)
     : delegate_(std::move(delegate)) {
-  if (ash::features::IsBluetoothRevampEnabled()) {
-    // BluetoothConfigService is not available if kBluetoothRevamp is not
-    // enabled.
-    ash::GetBluetoothConfigService(
-        remote_cros_bluetooth_config_.BindNewPipeAndPassReceiver());
-  }
+  ash::GetBluetoothConfigService(
+      remote_cros_bluetooth_config_.BindNewPipeAndPassReceiver());
 }
 
 DeviceActions::~DeviceActions() = default;
@@ -129,19 +124,7 @@
 }
 
 void DeviceActions::SetBluetoothEnabled(bool enabled) {
-  // If kBluetoothRevamp is enabled, BluetoothPowerController does not observe
-  // the pref value change.
-  if (ash::features::IsBluetoothRevampEnabled()) {
-    remote_cros_bluetooth_config_->SetBluetoothEnabledState(enabled);
-  } else {
-    const user_manager::User* const user =
-        user_manager::UserManager::Get()->GetActiveUser();
-    Profile* profile = ash::ProfileHelper::Get()->GetProfileByUser(user);
-    DCHECK(profile);
-    // BluetoothPowerController observes the pref value change.
-    profile->GetPrefs()->SetBoolean(ash::prefs::kUserBluetoothAdapterEnabled,
-                                    enabled);
-  }
+  remote_cros_bluetooth_config_->SetBluetoothEnabledState(enabled);
 }
 
 void HandleScreenBrightnessCallback(
diff --git a/chrome/browser/ui/ash/chrome_browser_main_extra_parts_ash.cc b/chrome/browser/ui/ash/chrome_browser_main_extra_parts_ash.cc
index 5ff45d7..de07060 100644
--- a/chrome/browser/ui/ash/chrome_browser_main_extra_parts_ash.cc
+++ b/chrome/browser/ui/ash/chrome_browser_main_extra_parts_ash.cc
@@ -240,14 +240,12 @@
 
   desks_client_ = std::make_unique<DesksClient>();
 
-  if (ash::features::IsBluetoothRevampEnabled()) {
-    ash::bluetooth_config::FastPairDelegate* delegate =
-        ash::features::IsFastPairEnabled()
-            ? ash::Shell::Get()->quick_pair_mediator()->GetFastPairDelegate()
-            : nullptr;
+  ash::bluetooth_config::FastPairDelegate* delegate =
+      ash::features::IsFastPairEnabled()
+          ? ash::Shell::Get()->quick_pair_mediator()->GetFastPairDelegate()
+          : nullptr;
 
-    ash::bluetooth_config::Initialize(delegate);
-  }
+  ash::bluetooth_config::Initialize(delegate);
 }
 
 void ChromeBrowserMainExtraPartsAsh::PostProfileInit(Profile* profile,
@@ -310,8 +308,7 @@
 }
 
 void ChromeBrowserMainExtraPartsAsh::PostMainMessageLoopRun() {
-  if (ash::features::IsBluetoothRevampEnabled())
-    ash::bluetooth_config::Shutdown();
+  ash::bluetooth_config::Shutdown();
 
   // Disable event dispatch before Exo starts closing windows to prevent
   // synthetic events from being dispatched. crbug.com/874156 and
diff --git a/chrome/browser/ui/ash/holding_space/holding_space_ui_browsertest.cc b/chrome/browser/ui/ash/holding_space/holding_space_ui_browsertest.cc
index 7bdb566..eb96f32b 100644
--- a/chrome/browser/ui/ash/holding_space/holding_space_ui_browsertest.cc
+++ b/chrome/browser/ui/ash/holding_space/holding_space_ui_browsertest.cc
@@ -54,7 +54,6 @@
 #include "ui/base/clipboard/custom_data_helper.h"
 #include "ui/base/dragdrop/drag_drop_types.h"
 #include "ui/base/dragdrop/mojom/drag_drop_types.mojom.h"
-#include "ui/base/dragdrop/os_exchange_data_provider_factory.h"
 #include "ui/compositor/layer.h"
 #include "ui/compositor/scoped_animation_duration_scale_mode.h"
 #include "ui/events/base_event_utils.h"
@@ -1014,11 +1013,12 @@
     // space item that we attempted to open was a screenshot.
     base::RunLoop run_loop;
     EXPECT_CALL(mock, OnWindowActivated)
-        .WillOnce([&](wm::ActivationChangeObserver::ActivationReason reason,
-                      aura::Window* gained_active, aura::Window* lost_active) {
-          EXPECT_EQ("Gallery", base::UTF16ToUTF8(gained_active->GetTitle()));
-          run_loop.Quit();
-        });
+        .WillRepeatedly(
+            [&](wm::ActivationChangeObserver::ActivationReason reason,
+                aura::Window* gained_active, aura::Window* lost_active) {
+              if (gained_active->GetTitle() == u"Gallery")
+                run_loop.Quit();
+            });
     run_loop.Run();
 
     // Reset.
diff --git a/chrome/browser/ui/autofill/payments/card_unmask_authentication_selection_dialog_controller_impl.cc b/chrome/browser/ui/autofill/payments/card_unmask_authentication_selection_dialog_controller_impl.cc
index e22ac3a9..08c942b 100644
--- a/chrome/browser/ui/autofill/payments/card_unmask_authentication_selection_dialog_controller_impl.cc
+++ b/chrome/browser/ui/autofill/payments/card_unmask_authentication_selection_dialog_controller_impl.cc
@@ -140,6 +140,7 @@
   switch (challenge_option.type) {
     case CardUnmaskChallengeOptionType::kSmsOtp:
       return ui::ImageModel::FromVectorIcon(vector_icons::kSmsIcon);
+    case CardUnmaskChallengeOptionType::kCvc:
     case CardUnmaskChallengeOptionType::kUnknownType:
       NOTREACHED();
       return ui::ImageModel();
@@ -153,6 +154,7 @@
     case CardUnmaskChallengeOptionType::kSmsOtp:
       return l10n_util::GetStringUTF16(
           IDS_AUTOFILL_AUTHENTICATION_MODE_TEXT_MESSAGE_LABEL);
+    case CardUnmaskChallengeOptionType::kCvc:
     case CardUnmaskChallengeOptionType::kUnknownType:
       NOTREACHED();
       return std::u16string();
diff --git a/chrome/browser/ui/browser_commands.cc b/chrome/browser/ui/browser_commands.cc
index 677a1dc0..94f60a27 100644
--- a/chrome/browser/ui/browser_commands.cc
+++ b/chrome/browser/ui/browser_commands.cc
@@ -1259,8 +1259,8 @@
 
   std::string source_language;
   std::string target_language;
-  chrome_translate_client->GetTranslateLanguagesForDisplay(
-      web_contents, &source_language, &target_language);
+  chrome_translate_client->GetTranslateLanguages(web_contents, &source_language,
+                                                 &target_language);
 
   translate::TranslateStep step = translate::TRANSLATE_STEP_BEFORE_TRANSLATE;
   if (chrome_translate_client) {
diff --git a/chrome/browser/ui/browser_dialogs.h b/chrome/browser/ui/browser_dialogs.h
index 6416d7a9..c124926 100644
--- a/chrome/browser/ui/browser_dialogs.h
+++ b/chrome/browser/ui/browser_dialogs.h
@@ -70,6 +70,10 @@
 struct SelectedFileInfo;
 }  // namespace ui
 
+namespace webapps {
+struct Screenshot;
+}  // namespace webapps
+
 namespace chrome {
 
 // Shows or hides the Task Manager. |browser| can be NULL when called from Ash.
@@ -238,7 +242,7 @@
     content::WebContents* web_contents,
     std::unique_ptr<WebAppInstallInfo> web_app_info,
     AppInstallationAcceptanceCallback callback,
-    const std::vector<SkBitmap>& screenshots,
+    const std::vector<webapps::Screenshot>& screenshots,
     PwaInProductHelpState iph_state = PwaInProductHelpState::kNotShown);
 
 // Sets whether |ShowPWAInstallBubble| should accept immediately without any
diff --git a/chrome/browser/ui/browser_element_identifiers.cc b/chrome/browser/ui/browser_element_identifiers.cc
index b849f819..6c0aa423 100644
--- a/chrome/browser/ui/browser_element_identifiers.cc
+++ b/chrome/browser/ui/browser_element_identifiers.cc
@@ -26,6 +26,7 @@
 DEFINE_ELEMENT_IDENTIFIER_VALUE(kReadLaterButtonElementId);
 DEFINE_ELEMENT_IDENTIFIER_VALUE(kReadLaterSidePanelWebViewElementId);
 DEFINE_ELEMENT_IDENTIFIER_VALUE(kSidePanelCloseButtonElementId);
+DEFINE_ELEMENT_IDENTIFIER_VALUE(kSidePanelOpenInNewTabButtonElementId);
 DEFINE_ELEMENT_IDENTIFIER_VALUE(kSavePasswordComboboxElementId);
 DEFINE_ELEMENT_IDENTIFIER_VALUE(kSideSearchButtonElementId);
 DEFINE_ELEMENT_IDENTIFIER_VALUE(kTabAlertIndicatorButtonElementId);
diff --git a/chrome/browser/ui/browser_element_identifiers.h b/chrome/browser/ui/browser_element_identifiers.h
index f9ded69..fa375e0 100644
--- a/chrome/browser/ui/browser_element_identifiers.h
+++ b/chrome/browser/ui/browser_element_identifiers.h
@@ -35,6 +35,7 @@
 DECLARE_ELEMENT_IDENTIFIER_VALUE(kReadLaterButtonElementId);
 DECLARE_ELEMENT_IDENTIFIER_VALUE(kReadLaterSidePanelWebViewElementId);
 DECLARE_ELEMENT_IDENTIFIER_VALUE(kSidePanelCloseButtonElementId);
+DECLARE_ELEMENT_IDENTIFIER_VALUE(kSidePanelOpenInNewTabButtonElementId);
 DECLARE_ELEMENT_IDENTIFIER_VALUE(kSavePasswordComboboxElementId);
 DECLARE_ELEMENT_IDENTIFIER_VALUE(kSideSearchButtonElementId);
 DECLARE_ELEMENT_IDENTIFIER_VALUE(kTabAlertIndicatorButtonElementId);
diff --git a/chrome/browser/ui/commerce/price_tracking/shopping_list_ui_tab_helper.cc b/chrome/browser/ui/commerce/price_tracking/shopping_list_ui_tab_helper.cc
index 8bf503fb..0664329 100644
--- a/chrome/browser/ui/commerce/price_tracking/shopping_list_ui_tab_helper.cc
+++ b/chrome/browser/ui/commerce/price_tracking/shopping_list_ui_tab_helper.cc
@@ -67,7 +67,7 @@
   if (image_fetcher_service) {
     // TODO(1360846): Consider using the in-memory cache instead.
     image_fetcher_ = image_fetcher_service->GetImageFetcher(
-        image_fetcher::ImageFetcherConfig::kDiskCacheOnly);
+        image_fetcher::ImageFetcherConfig::kNetworkOnly);
   } else {
     CHECK_IS_TEST();
   }
diff --git a/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc b/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc
index 4d71eda..ffb8a739 100644
--- a/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc
+++ b/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc
@@ -735,6 +735,7 @@
       base::BindOnce(&ManagePasswordsUIController::OnReauthCompleted,
                      weak_ptr_factory_.GetWeakPtr());
 
+  CancelAnyOngoingBiometricAuth();
   biometric_authenticator_ =
       passwords_data_.client()->GetBiometricAuthenticator();
   biometric_authenticator_->AuthenticateWithMessage(
@@ -828,6 +829,8 @@
 }
 
 void ManagePasswordsUIController::PrimaryPageChanged(content::Page& page) {
+  CancelAnyOngoingBiometricAuth();
+
   // Keep the state if the bubble is currently open or the fallback for saving
   // should be still available.
   if (IsShowingBubble() || save_fallback_timer_.IsRunning()) {
@@ -1031,4 +1034,12 @@
   biometric_authenticator_.reset();
 }
 
+void ManagePasswordsUIController::CancelAnyOngoingBiometricAuth() {
+  if (!biometric_authenticator_)
+    return;
+  biometric_authenticator_->Cancel(
+      device_reauth::BiometricAuthRequester::kTouchToFill);
+  biometric_authenticator_.reset();
+}
+
 WEB_CONTENTS_USER_DATA_KEY_IMPL(ManagePasswordsUIController);
diff --git a/chrome/browser/ui/passwords/manage_passwords_ui_controller.h b/chrome/browser/ui/passwords/manage_passwords_ui_controller.h
index 2f419d1..8e9b59d 100644
--- a/chrome/browser/ui/passwords/manage_passwords_ui_controller.h
+++ b/chrome/browser/ui/passwords/manage_passwords_ui_controller.h
@@ -330,6 +330,9 @@
           password_manager::MovePasswordToAccountStoreHelper>>::iterator
           done_helper_it);
 
+  // Cancels current authentication and releases |biometric_authenticator_|.
+  void CancelAnyOngoingBiometricAuth();
+
   // Timeout in seconds for the manual fallback for saving.
   static int save_fallback_timeout_in_seconds_;
 
diff --git a/chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc b/chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc
index fc344e3..e355885b 100644
--- a/chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc
+++ b/chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc
@@ -163,14 +163,20 @@
     return are_passwords_revealed_in_opened_bubble_;
   }
 
-  MOCK_METHOD1(CreateAccountChooser,
-               AccountChooserPrompt*(CredentialManagerDialogController*));
-  MOCK_METHOD1(CreateAutoSigninPrompt,
-               AutoSigninFirstRunPrompt*(CredentialManagerDialogController*));
-  MOCK_METHOD1(CreateCredentialLeakPrompt,
-               CredentialLeakPrompt*(CredentialLeakDialogController*));
-  MOCK_CONST_METHOD0(HasBrowserWindow, bool());
-  MOCK_METHOD0(OnUpdateBubbleAndIconVisibility, void());
+  MOCK_METHOD(AccountChooserPrompt*,
+              CreateAccountChooser,
+              (CredentialManagerDialogController*),
+              (override));
+  MOCK_METHOD(AutoSigninFirstRunPrompt*,
+              CreateAutoSigninPrompt,
+              (CredentialManagerDialogController*),
+              (override));
+  MOCK_METHOD(CredentialLeakPrompt*,
+              CreateCredentialLeakPrompt,
+              (CredentialLeakDialogController*),
+              (override));
+  MOCK_METHOD(bool, HasBrowserWindow, (), (override, const));
+  MOCK_METHOD(void, OnUpdateBubbleAndIconVisibility, (), ());
 
  private:
   void UpdateBubbleAndIconVisibility() override;
@@ -1891,4 +1897,31 @@
   ExpectIconAndControllerStateIs(password_manager::ui::MANAGE_STATE);
 }
 
-#endif  // BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN)
+TEST_F(ManagePasswordsUIControllerTest,
+       AuthenticateWithMessageTwiceCancelsFirstCall) {
+  scoped_refptr<device_reauth::MockBiometricAuthenticator> mock_authenticator =
+      base::MakeRefCounted<device_reauth::MockBiometricAuthenticator>();
+  client().SetAuthenticator(mock_authenticator);
+  EXPECT_CALL(*mock_authenticator.get(), AuthenticateWithMessage);
+  controller()->AuthenticateUserWithMessage(/*message=*/u"", base::DoNothing());
+
+  EXPECT_CALL(*mock_authenticator.get(), Cancel);
+  EXPECT_CALL(*mock_authenticator.get(), AuthenticateWithMessage);
+  controller()->AuthenticateUserWithMessage(/*message=*/u"", base::DoNothing());
+}
+
+TEST_F(ManagePasswordsUIControllerTest, AuthenticationCancledOnPageChange) {
+  base::MockCallback<base::OnceCallback<void(bool)>> result_callback;
+  scoped_refptr<device_reauth::MockBiometricAuthenticator> mock_authenticator =
+      base::MakeRefCounted<device_reauth::MockBiometricAuthenticator>();
+  client().SetAuthenticator(mock_authenticator);
+  EXPECT_CALL(*mock_authenticator.get(), AuthenticateWithMessage);
+  controller()->AuthenticateUserWithMessage(/*message=*/u"", base::DoNothing());
+
+  EXPECT_CALL(*mock_authenticator.get(), Cancel);
+
+  static_cast<content::WebContentsObserver*>(controller())
+      ->PrimaryPageChanged(controller()->GetWebContents()->GetPrimaryPage());
+}
+
+#endif  // BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN)
\ No newline at end of file
diff --git a/chrome/browser/ui/performance_controls/performance_controls_metrics.cc b/chrome/browser/ui/performance_controls/performance_controls_metrics.cc
index 819b350c2..d2b6e3f 100644
--- a/chrome/browser/ui/performance_controls/performance_controls_metrics.cc
+++ b/chrome/browser/ui/performance_controls/performance_controls_metrics.cc
@@ -11,7 +11,22 @@
                                 type);
 }
 
+void RecordBatterySaverIPHOpenSettings(bool success) {
+  base::UmaHistogramBoolean("PerformanceControls.BatterySaver.IPHOpenSettings",
+                            success);
+}
+
 void RecordHighEfficiencyBubbleAction(HighEfficiencyBubbleActionType type) {
   base::UmaHistogramEnumeration(
       "PerformanceControls.HighEfficiency.BubbleAction", type);
 }
+
+void RecordHighEfficiencyInfoIPHOpenSettings(bool success) {
+  base::UmaHistogramBoolean(
+      "PerformanceControls.HighEfficiency.InfoIPHOpenSettings", success);
+}
+
+void RecordHighEfficiencyIPHEnableMode(bool success) {
+  base::UmaHistogramBoolean("PerformanceControls.HighEfficiency.IPHEnableMode",
+                            success);
+}
diff --git a/chrome/browser/ui/performance_controls/performance_controls_metrics.h b/chrome/browser/ui/performance_controls/performance_controls_metrics.h
index ea836d35..2ae8f21 100644
--- a/chrome/browser/ui/performance_controls/performance_controls_metrics.h
+++ b/chrome/browser/ui/performance_controls/performance_controls_metrics.h
@@ -22,6 +22,9 @@
 // End of enums for histograms.
 
 void RecordBatterySaverBubbleAction(BatterySaverBubbleActionType type);
+void RecordBatterySaverIPHOpenSettings(bool success);
 void RecordHighEfficiencyBubbleAction(HighEfficiencyBubbleActionType type);
+void RecordHighEfficiencyInfoIPHOpenSettings(bool success);
+void RecordHighEfficiencyIPHEnableMode(bool success);
 
 #endif  // CHROME_BROWSER_UI_PERFORMANCE_CONTROLS_PERFORMANCE_CONTROLS_METRICS_H_
diff --git a/chrome/browser/ui/translate/partial_translate_bubble_model_impl.cc b/chrome/browser/ui/translate/partial_translate_bubble_model_impl.cc
index 8c05dd26..d6416a8 100644
--- a/chrome/browser/ui/translate/partial_translate_bubble_model_impl.cc
+++ b/chrome/browser/ui/translate/partial_translate_bubble_model_impl.cc
@@ -187,6 +187,13 @@
   translate_request_started_time_ = base::TimeTicks::Now();
 
   RecordHistogramsOnPartialTranslateStart();
+
+  translate::TranslateManager* translate_manager =
+      ChromeTranslateClient::GetManagerFromWebContents(web_contents);
+  translate_manager->translate_client()
+      ->GetTranslatePrefs()
+      ->SetRecentTargetLanguage(GetTargetLanguageCode());
+
   // Cancels any ongoing requests.
   partial_translate_manager_->StartPartialTranslate(
       web_contents, request,
@@ -201,9 +208,6 @@
     content::WebContents* web_contents) {
   translate::TranslateManager* translate_manager =
       ChromeTranslateClient::GetManagerFromWebContents(web_contents);
-  translate_manager->translate_client()
-      ->GetTranslatePrefs()
-      ->SetRecentTargetLanguage(GetTargetLanguageCode());
   translate_manager->ShowTranslateUI(GetTargetLanguageCode(), true);
 }
 
diff --git a/chrome/browser/ui/views/commerce/price_tracking_bubble_dialog_view.cc b/chrome/browser/ui/views/commerce/price_tracking_bubble_dialog_view.cc
index ff45ea2c..dce3d228 100644
--- a/chrome/browser/ui/views/commerce/price_tracking_bubble_dialog_view.cc
+++ b/chrome/browser/ui/views/commerce/price_tracking_bubble_dialog_view.cc
@@ -108,6 +108,7 @@
         gfx::Range(offset, offset + folder_name.length()), style_info);
   }
   SetMainImage(std::move(image_model));
+  body_label_->SetFocusBehavior(View::FocusBehavior::ACCESSIBLE_ONLY);
 }
 
 PriceTrackingBubbleDialogView::~PriceTrackingBubbleDialogView() = default;
diff --git a/chrome/browser/ui/views/commerce/price_tracking_icon_view.cc b/chrome/browser/ui/views/commerce/price_tracking_icon_view.cc
index 3cb8717..7383fdd 100644
--- a/chrome/browser/ui/views/commerce/price_tracking_icon_view.cc
+++ b/chrome/browser/ui/views/commerce/price_tracking_icon_view.cc
@@ -148,6 +148,7 @@
     }
     base::RecordAction(
         base::UserMetricsAction("Commerce.PriceTracking.OmniboxChip.Tracked"));
+    commerce::MaybeEnableEmailNotifications(profile_->GetPrefs());
   }
 
   const bookmarks::BookmarkNode* node =
diff --git a/chrome/browser/ui/views/commerce/price_tracking_view.cc b/chrome/browser/ui/views/commerce/price_tracking_view.cc
index 80e88d57..1393802 100644
--- a/chrome/browser/ui/views/commerce/price_tracking_view.cc
+++ b/chrome/browser/ui/views/commerce/price_tracking_view.cc
@@ -11,6 +11,7 @@
 #include "chrome/browser/ui/views/chrome_layout_provider.h"
 #include "components/bookmarks/browser/bookmark_model.h"
 #include "components/commerce/core/price_tracking_utils.h"
+#include "components/prefs/pref_service.h"
 #include "components/strings/grit/components_strings.h"
 #include "third_party/skia/include/core/SkColor.h"
 #include "ui/base/l10n/l10n_util.h"
@@ -63,6 +64,7 @@
           l10n_util::GetStringUTF16(IDS_OMNIBOX_TRACK_PRICE_DIALOG_TITLE),
           views::style::CONTEXT_DIALOG_BODY_TEXT, views::style::STYLE_PRIMARY));
   title_label->SetHorizontalAlignment(gfx::ALIGN_LEFT);
+  title_label->SetFocusBehavior(View::FocusBehavior::ACCESSIBLE_ONLY);
   // Body label
   body_label_ = text_container->AddChildView(std::make_unique<views::Label>(
       l10n_util::GetStringUTF16(
@@ -73,6 +75,7 @@
   body_label_->SetAllowCharacterBreak(true);
   body_label_->SetMultiLine(true);
   body_label_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
+  body_label_->SetFocusBehavior(View::FocusBehavior::ACCESSIBLE_ONLY);
   AddChildView(std::move(text_container));
 
   // Toggle button column
@@ -127,6 +130,9 @@
       BookmarkModelFactory::GetForBrowserContext(profile_);
   const bookmarks::BookmarkNode* node =
       model->GetMostRecentlyAddedUserNodeForURL(url);
+  if (profile_ && is_price_track_enabled_) {
+    commerce::MaybeEnableEmailNotifications(profile_->GetPrefs());
+  }
   commerce::SetPriceTrackingStateForBookmark(
       commerce::ShoppingServiceFactory::GetForBrowserContext(profile_), model,
       node, is_price_track_enabled_,
diff --git a/chrome/browser/ui/views/desktop_capture/desktop_media_list_controller.cc b/chrome/browser/ui/views/desktop_capture/desktop_media_list_controller.cc
index 6d9111d..e9888b34 100644
--- a/chrome/browser/ui/views/desktop_capture/desktop_media_list_controller.cc
+++ b/chrome/browser/ui/views/desktop_capture/desktop_media_list_controller.cc
@@ -170,7 +170,7 @@
 }
 
 base::WeakPtr<DesktopMediaListController>
-DesktopMediaListController::GetWeakPtr() const {
+DesktopMediaListController::GetWeakPtr() {
   return weak_factory_.GetWeakPtr();
 }
 
diff --git a/chrome/browser/ui/views/desktop_capture/desktop_media_list_controller.h b/chrome/browser/ui/views/desktop_capture/desktop_media_list_controller.h
index edcc72db..10582c75 100644
--- a/chrome/browser/ui/views/desktop_capture/desktop_media_list_controller.h
+++ b/chrome/browser/ui/views/desktop_capture/desktop_media_list_controller.h
@@ -119,7 +119,7 @@
 
   // Returns a WeakPtr to the current DesktopMediaListController. Note that the
   // weak pointer must only be used on the UI thread.
-  base::WeakPtr<DesktopMediaListController> GetWeakPtr() const;
+  base::WeakPtr<DesktopMediaListController> GetWeakPtr();
 
  private:
   friend class DesktopMediaPickerViewsTestApi;
diff --git a/chrome/browser/ui/views/download/download_item_view.cc b/chrome/browser/ui/views/download/download_item_view.cc
index 5f75a6f..0835134 100644
--- a/chrome/browser/ui/views/download/download_item_view.cc
+++ b/chrome/browser/ui/views/download/download_item_view.cc
@@ -473,7 +473,7 @@
 
   // Set the description to the empty string, otherwise the tooltip will be
   // used, which is redundant with the accessible name.
-  node_data->SetDescription(std::u16string());
+  node_data->SetDescriptionExplicitlyEmpty();
 }
 
 void DownloadItemView::ShowContextMenuForViewImpl(
diff --git a/chrome/browser/ui/views/frame/browser_desktop_window_tree_host_lacros.cc b/chrome/browser/ui/views/frame/browser_desktop_window_tree_host_lacros.cc
index 128e86d..9b026e5 100644
--- a/chrome/browser/ui/views/frame/browser_desktop_window_tree_host_lacros.cc
+++ b/chrome/browser/ui/views/frame/browser_desktop_window_tree_host_lacros.cc
@@ -96,9 +96,9 @@
         {SkRRect::kLowerRight_Corner, false, false},
     };
     for (const auto& corner : kCorners) {
-      auto radii = rrect.radii(corner.corner);
-      auto rx = std::ceil(scale * radii.x());
-      auto ry = std::ceil(scale * radii.y());
+      auto corner_radii = rrect.radii(corner.corner);
+      auto rx = std::ceil(scale * corner_radii.x());
+      auto ry = std::ceil(scale * corner_radii.y());
       auto corner_rect = SkIRect::MakeXYWH(
           corner.left ? rect.x() : rect.right() - rx,
           corner.upper ? rect.y() : rect.bottom() - ry, rx, ry);
diff --git a/chrome/browser/ui/views/performance_controls/high_efficiency_chip_view.cc b/chrome/browser/ui/views/performance_controls/high_efficiency_chip_view.cc
index 4ba8829..71bf173 100644
--- a/chrome/browser/ui/views/performance_controls/high_efficiency_chip_view.cc
+++ b/chrome/browser/ui/views/performance_controls/high_efficiency_chip_view.cc
@@ -156,15 +156,22 @@
   if (browser_->window() != nullptr) {
     bool const promo_shown = browser_->window()->MaybeShowFeaturePromo(
         feature_engagement::kIPHHighEfficiencyInfoModeFeature, {},
-        base::BindOnce(&HighEfficiencyChipView::UnpauseAnimation,
+        base::BindOnce(&HighEfficiencyChipView::OnIPHClosed,
                        weak_ptr_factory_.GetWeakPtr()));
     // While the IPH is showing, pause the animation of the chip so it doesn't
     // animate closed.
-    if (promo_shown)
+    if (promo_shown) {
       PauseAnimation();
+      SetHighlighted(true);
+    }
   }
 }
 
+void HighEfficiencyChipView::OnIPHClosed() {
+  SetHighlighted(false);
+  UnpauseAnimation();
+}
+
 void HighEfficiencyChipView::OnPrefChanged() {
   is_high_efficiency_mode_enabled_ = registrar_.prefs()->GetBoolean(
       performance_manager::user_tuning::prefs::kHighEfficiencyModeEnabled);
diff --git a/chrome/browser/ui/views/performance_controls/high_efficiency_chip_view.h b/chrome/browser/ui/views/performance_controls/high_efficiency_chip_view.h
index aebcc7c..7f77ebc6 100644
--- a/chrome/browser/ui/views/performance_controls/high_efficiency_chip_view.h
+++ b/chrome/browser/ui/views/performance_controls/high_efficiency_chip_view.h
@@ -47,6 +47,7 @@
   bool is_high_efficiency_mode_enabled_ = false;
 
   void MaybeShowIPH();
+  void OnIPHClosed();
 
   // Callback for the registrar. Checks whether high efficiency mode is
   // currently enabled.
diff --git a/chrome/browser/ui/views/performance_controls/high_efficiency_chip_view_browsertest.cc b/chrome/browser/ui/views/performance_controls/high_efficiency_chip_view_browsertest.cc
index 7c58ecd..31e2d57e 100644
--- a/chrome/browser/ui/views/performance_controls/high_efficiency_chip_view_browsertest.cc
+++ b/chrome/browser/ui/views/performance_controls/high_efficiency_chip_view_browsertest.cc
@@ -24,6 +24,8 @@
 #include "content/public/test/browser_test.h"
 #include "content/public/test/mock_navigation_handle.h"
 #include "content/public/test/test_navigation_observer.h"
+#include "ui/views/animation/ink_drop.h"
+#include "ui/views/animation/ink_drop_state.h"
 #include "ui/views/interaction/interaction_test_util_views.h"
 #include "ui/views/test/widget_test.h"
 #include "ui/views/widget/any_widget_observer.h"
@@ -98,6 +100,12 @@
     waiter.WaitIfNeededAndGet();
   }
 
+  views::InkDropState GetInkDropState() {
+    return views::InkDrop::Get(GetPageActionIconView())
+        ->GetInkDrop()
+        ->GetTargetInkDropState();
+  }
+
  private:
   base::test::ScopedFeatureList feature_list_;
 };
@@ -150,3 +158,39 @@
       feature_engagement::kIPHHighEfficiencyInfoModeFeature));
   EXPECT_NE(icon->GetBubble(), nullptr);
 }
+
+IN_PROC_BROWSER_TEST_F(HighEfficiencyChipViewBrowserTest,
+                       ShowAndHideInkDropWithPromo) {
+  auto lock = BrowserFeaturePromoController::BlockActiveWindowCheckForTesting();
+  auto* const promo_controller = GetFeaturePromoController();
+
+  EXPECT_FALSE(GetFeaturePromoController()->IsPromoActive(
+      feature_engagement::kIPHHighEfficiencyInfoModeFeature));
+
+  SetTabDiscardState(true);
+  PageActionIconView* icon = GetPageActionIconView();
+  EXPECT_TRUE(icon->GetVisible());
+
+  WaitForIPHToShow();
+
+  EXPECT_TRUE(GetFeaturePromoController()->IsPromoActive(
+      feature_engagement::kIPHHighEfficiencyInfoModeFeature));
+
+  EXPECT_EQ(GetInkDropState(), views::InkDropState::ACTIVATED);
+
+  auto* promo_bubble = promo_controller->promo_bubble_for_testing()
+                           ->AsA<user_education::HelpBubbleViews>()
+                           ->bubble_view();
+
+  views::test::WidgetDestroyedWaiter waiter(promo_bubble->GetWidget());
+  auto* default_action_button = promo_bubble->GetDefaultButtonForTesting();
+  PressButton(default_action_button);
+  waiter.Wait();
+
+  EXPECT_FALSE(browser()->window()->IsFeaturePromoActive(
+      feature_engagement::kIPHHighEfficiencyInfoModeFeature));
+
+  views::InkDropState current_state = GetInkDropState();
+  EXPECT_TRUE(current_state == views::InkDropState::HIDDEN ||
+              current_state == views::InkDropState::DEACTIVATED);
+}
diff --git a/chrome/browser/ui/views/profiles/profile_picker_view_browsertest.cc b/chrome/browser/ui/views/profiles/profile_picker_view_browsertest.cc
index 7e4ca55..7f7c0f2c 100644
--- a/chrome/browser/ui/views/profiles/profile_picker_view_browsertest.cc
+++ b/chrome/browser/ui/views/profiles/profile_picker_view_browsertest.cc
@@ -467,10 +467,6 @@
           .Wait();
 
       // Fake the OS account addition.
-      account_manager::AccountKey kAccountKey{
-          kGaiaId, account_manager::AccountType::kGaia};
-      auto* account_manager = MaybeGetAshAccountManagerForTests();
-      DCHECK(account_manager);
       account_manager->UpsertAccount(kAccountKey, email, "access_token");
 
       // Fake that this account was successfully added via the UI.
@@ -859,7 +855,7 @@
 #define MAYBE_CreateSignedInProfileDiceReenter CreateSignedInProfileDiceReenter
 #endif
 IN_PROC_BROWSER_TEST_F(ProfilePickerCreationFlowBrowserTest,
-                       CreateSignedInProfileDiceReenter) {
+                       MAYBE_CreateSignedInProfileDiceReenter) {
   ASSERT_EQ(1u, BrowserList::GetInstance()->size());
   Profile* profile_being_created = StartDiceSignIn();
 
diff --git a/chrome/browser/ui/views/safe_browsing/tailored_security_desktop_dialog.cc b/chrome/browser/ui/views/safe_browsing/tailored_security_desktop_dialog.cc
index 15edd29..c7a53be 100644
--- a/chrome/browser/ui/views/safe_browsing/tailored_security_desktop_dialog.cc
+++ b/chrome/browser/ui/views/safe_browsing/tailored_security_desktop_dialog.cc
@@ -59,9 +59,23 @@
     chrome::ShowSafeBrowsingEnhancedProtection(browser);
   }
 
+  void CloseDialog() {
+    if (this->dialog_model() && this->dialog_model()->host()) {
+      base::UmaHistogramEnumeration(
+          kOutcomeMetricName_, TailoredSecurityOutcome::kClosedByAnotherDialog);
+      this->dialog_model()->host()->Close();
+    }
+  }
+
+  base::OnceCallback<void()> GetCloseDialogCallback() {
+    return base::BindOnce(&TailoredSecurityDialogModelDelegate::CloseDialog,
+                          weak_factory_.GetWeakPtr());
+  }
+
  private:
   const std::string kOutcomeMetricName_;
   const base::UserMetricsAction settings_user_action_;
+  base::WeakPtrFactory<TailoredSecurityDialogModelDelegate> weak_factory_{this};
 };
 
 class DisabledDialogModelDelegate : public TailoredSecurityDialogModelDelegate {
@@ -82,7 +96,13 @@
                                     "EnabledDialog.SettingsButtonClicked")) {}
 };
 
-void ShowEnabledDialogForBrowser(Browser* browser) {
+TailoredSecurityDesktopDialogManager::TailoredSecurityDesktopDialogManager() =
+    default;
+TailoredSecurityDesktopDialogManager::~TailoredSecurityDesktopDialogManager() =
+    default;
+
+void TailoredSecurityDesktopDialogManager::ShowEnabledDialogForBrowser(
+    Browser* browser) {
   auto model_delegate = std::make_unique<EnabledDialogModelDelegate>();
   auto* model_delegate_ptr = model_delegate.get();
 
@@ -117,11 +137,17 @@
   // `window` should always be non-null unless this is called before
   // CreateBrowserWindow().
   DCHECK(browser->window());
+
+  if (close_dialog_callback_) {
+    std::move(close_dialog_callback_).Run();
+  }
+  close_dialog_callback_ = model_delegate_ptr->GetCloseDialogCallback();
   constrained_window::ShowBrowserModal(std::move(dialog_model),
                                        browser->window()->GetNativeWindow());
 }
 
-void ShowDisabledDialogForBrowser(Browser* browser) {
+void TailoredSecurityDesktopDialogManager::ShowDisabledDialogForBrowser(
+    Browser* browser) {
   auto model_delegate = std::make_unique<DisabledDialogModelDelegate>();
   auto* model_delegate_ptr = model_delegate.get();
 
@@ -151,6 +177,11 @@
   // `window` should always be non-null unless this is called before
   // CreateBrowserWindow().
   DCHECK(browser->window());
+
+  if (close_dialog_callback_) {
+    std::move(close_dialog_callback_).Run();
+  }
+  close_dialog_callback_ = model_delegate_ptr->GetCloseDialogCallback();
   constrained_window::ShowBrowserModal(std::move(dialog_model),
                                        browser->window()->GetNativeWindow());
 }
diff --git a/chrome/browser/ui/views/safe_browsing/tailored_security_desktop_dialog.h b/chrome/browser/ui/views/safe_browsing/tailored_security_desktop_dialog.h
index 0bf11e3..d4513b28 100644
--- a/chrome/browser/ui/views/safe_browsing/tailored_security_desktop_dialog.h
+++ b/chrome/browser/ui/views/safe_browsing/tailored_security_desktop_dialog.h
@@ -5,6 +5,8 @@
 #ifndef CHROME_BROWSER_UI_VIEWS_SAFE_BROWSING_TAILORED_SECURITY_DESKTOP_DIALOG_H_
 #define CHROME_BROWSER_UI_VIEWS_SAFE_BROWSING_TAILORED_SECURITY_DESKTOP_DIALOG_H_
 
+#include "base/callback.h"
+
 class Browser;
 
 namespace safe_browsing {
@@ -18,11 +20,27 @@
 static constexpr char kTailoredSecurityNoticeDialog[] =
     "TailoredSecurityNoticeDialog";
 
-// Creates and shows a dialog for when Tailored Security is enabled.
-void ShowEnabledDialogForBrowser(Browser* browser);
+class TailoredSecurityDesktopDialogManager {
+ public:
+  TailoredSecurityDesktopDialogManager();
+  ~TailoredSecurityDesktopDialogManager();
 
-// Creates and shows a dialog for when Tailored Security is disabled.
-void ShowDisabledDialogForBrowser(Browser* browser);
+  // Creates and shows a dialog for when Tailored Security is enabled. If this
+  // manager has opened any other dialogs, calling this method will close those
+  // dialogs.
+  void ShowEnabledDialogForBrowser(Browser* browser);
+
+  // Creates and shows a dialog for when Tailored Security is disabled. If this
+  // manager has opened any other dialogs, calling this method will close those
+  // dialogs.
+  void ShowDisabledDialogForBrowser(Browser* browser);
+
+ private:
+  // When the manager opens a dialog, the manager stores the callback to close
+  // it here. There will only ever be one other open Tailored Security Desktop
+  // dialog at any given time.
+  base::OnceCallback<void()> close_dialog_callback_;
+};
 
 }  // namespace safe_browsing
 
diff --git a/chrome/browser/ui/views/safe_browsing/tailored_security_desktop_dialog_browsertest.cc b/chrome/browser/ui/views/safe_browsing/tailored_security_desktop_dialog_browsertest.cc
index aeb9ccd..8a95a9f 100644
--- a/chrome/browser/ui/views/safe_browsing/tailored_security_desktop_dialog_browsertest.cc
+++ b/chrome/browser/ui/views/safe_browsing/tailored_security_desktop_dialog_browsertest.cc
@@ -32,24 +32,6 @@
 const char kEnhancedProtectionSettingsUrl[] =
     "chrome://settings/security?q=enhanced";
 
-views::Widget* ShowTailoredSecurityEnabledDialog(Browser* browser) {
-  views::NamedWidgetShownWaiter waiter(
-      views::test::AnyWidgetTestPasskey{},
-      safe_browsing::kTailoredSecurityNoticeDialog);
-  safe_browsing::ShowEnabledDialogForBrowser(browser);
-
-  return waiter.WaitIfNeededAndGet();
-}
-
-views::Widget* ShowTailoredSecurityDisabledDialog(Browser* browser) {
-  views::NamedWidgetShownWaiter waiter(
-      views::test::AnyWidgetTestPasskey{},
-      safe_browsing::kTailoredSecurityNoticeDialog);
-  safe_browsing::ShowDisabledDialogForBrowser(browser);
-
-  return waiter.WaitIfNeededAndGet();
-}
-
 // A struct of test parameters that can be used by parameterized tests.
 struct TestParam {
   // The suffix for the test name.
@@ -83,11 +65,13 @@
 
 }  // namespace
 
-class TailoredSecurityDesktopDialogTest
+class TailoredSecurityDesktopDialogManagerTest
     : public DialogBrowserTest,
       public testing::WithParamInterface<TestParam> {
  public:
-  TailoredSecurityDesktopDialogTest() {
+  TailoredSecurityDesktopDialogManagerTest() {
+    dialog_manager_ =
+        std::make_unique<safe_browsing::TailoredSecurityDesktopDialogManager>();
     if (GetParam().use_dark_theme) {
       features_.InitAndEnableFeature(features::kWebUIDarkMode);
     } else {
@@ -95,10 +79,10 @@
     }
   }
 
-  TailoredSecurityDesktopDialogTest(const TailoredSecurityDesktopDialogTest&) =
-      delete;
-  TailoredSecurityDesktopDialogTest& operator=(
-      const TailoredSecurityDesktopDialogTest&) = delete;
+  TailoredSecurityDesktopDialogManagerTest(
+      const TailoredSecurityDesktopDialogManagerTest&) = delete;
+  TailoredSecurityDesktopDialogManagerTest& operator=(
+      const TailoredSecurityDesktopDialogManagerTest&) = delete;
 
   // DialogBrowserTest:
   void ShowUi(const std::string& name) override {
@@ -107,9 +91,9 @@
         ui::ScopedAnimationDurationScaleMode::ZERO_DURATION);
     const std::string& actual_name = name.substr(0, name.find("/"));
     if (actual_name == "enabledDialog") {
-      safe_browsing::ShowEnabledDialogForBrowser(browser());
+      dialog_manager_->ShowEnabledDialogForBrowser(browser());
     } else if (actual_name == "disabledDialog") {
-      safe_browsing::ShowDisabledDialogForBrowser(browser());
+      dialog_manager_->ShowDisabledDialogForBrowser(browser());
     } else {
       FAIL() << "No dialog case defined for this string: " << name;
     }
@@ -121,21 +105,41 @@
     }
   }
 
+  views::Widget* ShowTailoredSecurityEnabledDialog(Browser* browser) {
+    views::NamedWidgetShownWaiter waiter(
+        views::test::AnyWidgetTestPasskey{},
+        safe_browsing::kTailoredSecurityNoticeDialog);
+    dialog_manager_->ShowEnabledDialogForBrowser(browser);
+
+    return waiter.WaitIfNeededAndGet();
+  }
+
+  views::Widget* ShowTailoredSecurityDisabledDialog(Browser* browser) {
+    views::NamedWidgetShownWaiter waiter(
+        views::test::AnyWidgetTestPasskey{},
+        safe_browsing::kTailoredSecurityNoticeDialog);
+    dialog_manager_->ShowDisabledDialogForBrowser(browser);
+
+    return waiter.WaitIfNeededAndGet();
+  }
+
  private:
   base::test::ScopedFeatureList features_;
+  std::unique_ptr<safe_browsing::TailoredSecurityDesktopDialogManager>
+      dialog_manager_;
 };
 
-IN_PROC_BROWSER_TEST_P(TailoredSecurityDesktopDialogTest,
+IN_PROC_BROWSER_TEST_P(TailoredSecurityDesktopDialogManagerTest,
                        InvokeUi_enabledDialog) {
   ShowAndVerifyUi();
 }
 
-IN_PROC_BROWSER_TEST_P(TailoredSecurityDesktopDialogTest,
+IN_PROC_BROWSER_TEST_P(TailoredSecurityDesktopDialogManagerTest,
                        InvokeUi_disabledDialog) {
   ShowAndVerifyUi();
 }
 
-IN_PROC_BROWSER_TEST_P(TailoredSecurityDesktopDialogTest,
+IN_PROC_BROWSER_TEST_P(TailoredSecurityDesktopDialogManagerTest,
                        EnabledDialogOkButtonIncrementsAcknowledgedHistogram) {
   base::HistogramTester histograms;
   auto* dialog = ShowTailoredSecurityEnabledDialog(browser());
@@ -147,7 +151,7 @@
                                TailoredSecurityOutcome::kAccepted, 1);
 }
 
-IN_PROC_BROWSER_TEST_P(TailoredSecurityDesktopDialogTest,
+IN_PROC_BROWSER_TEST_P(TailoredSecurityDesktopDialogManagerTest,
                        EnabledDialogCancelButtonIncrementsSettingsHistogram) {
   base::HistogramTester histograms;
   auto* dialog = ShowTailoredSecurityEnabledDialog(browser());
@@ -160,7 +164,7 @@
                                TailoredSecurityOutcome::kSettings, 1);
 }
 
-IN_PROC_BROWSER_TEST_P(TailoredSecurityDesktopDialogTest,
+IN_PROC_BROWSER_TEST_P(TailoredSecurityDesktopDialogManagerTest,
                        EnabledDialogCancelButtonNavigatesToSettings) {
   base::HistogramTester histograms;
   auto* dialog = ShowTailoredSecurityEnabledDialog(browser());
@@ -176,7 +180,7 @@
             GURL(kEnhancedProtectionSettingsUrl));
 }
 
-IN_PROC_BROWSER_TEST_P(TailoredSecurityDesktopDialogTest,
+IN_PROC_BROWSER_TEST_P(TailoredSecurityDesktopDialogManagerTest,
                        EnabledDialogCancelButtonRecordsUserAction) {
   base::UserActionTester uat;
   auto* dialog = ShowTailoredSecurityEnabledDialog(browser());
@@ -191,7 +195,7 @@
             1);
 }
 
-IN_PROC_BROWSER_TEST_P(TailoredSecurityDesktopDialogTest,
+IN_PROC_BROWSER_TEST_P(TailoredSecurityDesktopDialogManagerTest,
                        DisabledDialogOkButtonIncrementsAcknowledgedHistogram) {
   base::HistogramTester histograms;
   auto* dialog = ShowTailoredSecurityDisabledDialog(browser());
@@ -203,7 +207,7 @@
                                TailoredSecurityOutcome::kAccepted, 1);
 }
 
-IN_PROC_BROWSER_TEST_P(TailoredSecurityDesktopDialogTest,
+IN_PROC_BROWSER_TEST_P(TailoredSecurityDesktopDialogManagerTest,
                        DisabledDialogCancelButtonIncrementsSettingsHistogram) {
   base::HistogramTester histograms;
   auto* dialog = ShowTailoredSecurityDisabledDialog(browser());
@@ -216,7 +220,7 @@
                                TailoredSecurityOutcome::kSettings, 1);
 }
 
-IN_PROC_BROWSER_TEST_P(TailoredSecurityDesktopDialogTest,
+IN_PROC_BROWSER_TEST_P(TailoredSecurityDesktopDialogManagerTest,
                        DisabledDialogCancelButtonNavigatesToSettings) {
   base::HistogramTester histograms;
   auto* dialog = ShowTailoredSecurityDisabledDialog(browser());
@@ -232,7 +236,7 @@
             GURL(kEnhancedProtectionSettingsUrl));
 }
 
-IN_PROC_BROWSER_TEST_P(TailoredSecurityDesktopDialogTest,
+IN_PROC_BROWSER_TEST_P(TailoredSecurityDesktopDialogManagerTest,
                        DisabledDialogCancelButtonRecordsUserAction) {
   base::UserActionTester uat;
   auto* dialog = ShowTailoredSecurityDisabledDialog(browser());
@@ -247,7 +251,63 @@
             1);
 }
 
+IN_PROC_BROWSER_TEST_P(TailoredSecurityDesktopDialogManagerTest,
+                       OpeningANewEnableDialogWillCloseAnyOpenDisableDialogs) {
+  auto* disabled_dialog = ShowTailoredSecurityDisabledDialog(browser());
+  auto* enabled_dialog = ShowTailoredSecurityEnabledDialog(browser());
+  EXPECT_TRUE(disabled_dialog->IsClosed());
+  EXPECT_FALSE(enabled_dialog->IsClosed());
+}
+
+IN_PROC_BROWSER_TEST_P(TailoredSecurityDesktopDialogManagerTest,
+                       ClosingDisabledByOpeningEnabledLogsCloseReason) {
+  base::HistogramTester histograms;
+  ShowTailoredSecurityDisabledDialog(browser());
+  histograms.ExpectBucketCount(safe_browsing::kDisabledDialogOutcome,
+                               TailoredSecurityOutcome::kSettings, 0);
+  histograms.ExpectBucketCount(safe_browsing::kDisabledDialogOutcome,
+                               TailoredSecurityOutcome::kAccepted, 0);
+
+  ShowTailoredSecurityEnabledDialog(browser());
+
+  histograms.ExpectBucketCount(safe_browsing::kDisabledDialogOutcome,
+                               TailoredSecurityOutcome::kSettings, 0);
+  histograms.ExpectBucketCount(safe_browsing::kDisabledDialogOutcome,
+                               TailoredSecurityOutcome::kAccepted, 0);
+  histograms.ExpectBucketCount(safe_browsing::kDisabledDialogOutcome,
+                               TailoredSecurityOutcome::kClosedByAnotherDialog,
+                               1);
+}
+
+IN_PROC_BROWSER_TEST_P(TailoredSecurityDesktopDialogManagerTest,
+                       OpeningANewDisableDialogWillCloseAnyOpenEnableDialogs) {
+  auto* enabled_dialog = ShowTailoredSecurityEnabledDialog(browser());
+  auto* disabled_dialog = ShowTailoredSecurityDisabledDialog(browser());
+  EXPECT_TRUE(enabled_dialog->IsClosed());
+  EXPECT_FALSE(disabled_dialog->IsClosed());
+}
+
+IN_PROC_BROWSER_TEST_P(TailoredSecurityDesktopDialogManagerTest,
+                       ClosingEnabledByOpeningDisabledLogsCloseReason) {
+  base::HistogramTester histograms;
+  ShowTailoredSecurityEnabledDialog(browser());
+  histograms.ExpectBucketCount(safe_browsing::kEnabledDialogOutcome,
+                               TailoredSecurityOutcome::kSettings, 0);
+  histograms.ExpectBucketCount(safe_browsing::kEnabledDialogOutcome,
+                               TailoredSecurityOutcome::kAccepted, 0);
+
+  ShowTailoredSecurityDisabledDialog(browser());
+
+  histograms.ExpectBucketCount(safe_browsing::kEnabledDialogOutcome,
+                               TailoredSecurityOutcome::kSettings, 0);
+  histograms.ExpectBucketCount(safe_browsing::kEnabledDialogOutcome,
+                               TailoredSecurityOutcome::kAccepted, 0);
+  histograms.ExpectBucketCount(safe_browsing::kEnabledDialogOutcome,
+                               TailoredSecurityOutcome::kClosedByAnotherDialog,
+                               1);
+}
+
 INSTANTIATE_TEST_SUITE_P(All,
-                         TailoredSecurityDesktopDialogTest,
+                         TailoredSecurityDesktopDialogManagerTest,
                          testing::ValuesIn(kTestParams),
                          &ParamToTestSuffix);
diff --git a/chrome/browser/ui/views/side_panel/read_anything/read_anything_constants.h b/chrome/browser/ui/views/side_panel/read_anything/read_anything_constants.h
index 438cff7..3f25f9d 100644
--- a/chrome/browser/ui/views/side_panel/read_anything/read_anything_constants.h
+++ b/chrome/browser/ui/views/side_panel/read_anything/read_anything_constants.h
@@ -27,11 +27,6 @@
 const double kReadAnythingMaximumFontScale = 4.5;
 const double kReadAnythingFontScaleIncrement = 0.25;
 
-// Custom feature colors.
-constexpr SkColor kReadAnythingDarkBackground = SkColorSetRGB(0x33, 0x36, 0x39);
-constexpr SkColor kReadAnythingYellowForeground =
-    SkColorSetRGB(0x4E, 0x3F, 0x6C);
-
 }  // namespace
 
 #endif  // CHROME_BROWSER_UI_VIEWS_SIDE_PANEL_READ_ANYTHING_READ_ANYTHING_CONSTANTS_H_
diff --git a/chrome/browser/ui/views/side_panel/read_anything/read_anything_controller.cc b/chrome/browser/ui/views/side_panel/read_anything/read_anything_controller.cc
index f900d654..4044c168f 100644
--- a/chrome/browser/ui/views/side_panel/read_anything/read_anything_controller.cc
+++ b/chrome/browser/ui/views/side_panel/read_anything/read_anything_controller.cc
@@ -82,6 +82,9 @@
     return;
 
   model_->SetSelectedLineSpacingByIndex(new_index);
+
+  browser_->profile()->GetPrefs()->SetInteger(
+      prefs::kAccessibilityReadAnythingLineSpacing, new_index);
 }
 
 ui::ComboboxModel* ReadAnythingController::GetLineSpacingModel() {
diff --git a/chrome/browser/ui/views/side_panel/read_anything/read_anything_controller_unittest.cc b/chrome/browser/ui/views/side_panel/read_anything/read_anything_controller_unittest.cc
index e929338..b2e81f49 100644
--- a/chrome/browser/ui/views/side_panel/read_anything/read_anything_controller_unittest.cc
+++ b/chrome/browser/ui/views/side_panel/read_anything/read_anything_controller_unittest.cc
@@ -31,6 +31,9 @@
         prefs::kAccessibilityReadAnythingColorInfo,
         (int)read_anything::mojom::Colors::kDefaultValue);
     browser()->profile()->GetPrefs()->SetInteger(
+        prefs::kAccessibilityReadAnythingLineSpacing,
+        (int)read_anything::mojom::Spacing::kDefault);
+    browser()->profile()->GetPrefs()->SetInteger(
         prefs::kAccessibilityReadAnythingLetterSpacing,
         (int)read_anything::mojom::Spacing::kDefault);
   }
@@ -76,6 +79,11 @@
         prefs::kAccessibilityReadAnythingColorInfo);
   }
 
+  int GetPrefsLineSpacing() {
+    return browser()->profile()->GetPrefs()->GetInteger(
+        prefs::kAccessibilityReadAnythingLineSpacing);
+  }
+
   int GetPrefsLetterSpacing() {
     return browser()->profile()->GetPrefs()->GetInteger(
         prefs::kAccessibilityReadAnythingLetterSpacing);
@@ -144,6 +152,22 @@
   EXPECT_EQ(GetPrefsColors(), 3);
 }
 
+TEST_F(ReadAnythingControllerTest, OnLineSpacingChangedUpdatesPref) {
+  EXPECT_EQ(GetPrefsLineSpacing(), 1);
+
+  MockOnLineSpacingChanged((int)read_anything::mojom::Spacing::kLoose);
+
+  EXPECT_EQ(GetPrefsLineSpacing(), 2);
+}
+
+TEST_F(ReadAnythingControllerTest, OnLineSpacingChangedInvalidInput) {
+  EXPECT_EQ(GetPrefsLineSpacing(), 1);
+
+  MockOnLineSpacingChanged(10);
+
+  EXPECT_EQ(GetPrefsLineSpacing(), 1);
+}
+
 TEST_F(ReadAnythingControllerTest, OnLetterSpacingChangedUpdatesPref) {
   EXPECT_EQ(GetPrefsLetterSpacing(), 1);
 
diff --git a/chrome/browser/ui/views/side_panel/read_anything/read_anything_coordinator.cc b/chrome/browser/ui/views/side_panel/read_anything/read_anything_coordinator.cc
index b42be3e..0f1bb03 100644
--- a/chrome/browser/ui/views/side_panel/read_anything/read_anything_coordinator.cc
+++ b/chrome/browser/ui/views/side_panel/read_anything/read_anything_coordinator.cc
@@ -51,8 +51,9 @@
           prefs::kAccessibilityReadAnythingColorInfo));
 
   read_anything::mojom::Spacing prefs_line_spacing;
-  // TODO Get pref from browser profile (future CL)
-  prefs_line_spacing = read_anything::mojom::Spacing::kDefault;
+  prefs_line_spacing = static_cast<read_anything::mojom::Spacing>(
+      browser->profile()->GetPrefs()->GetInteger(
+          prefs::kAccessibilityReadAnythingLineSpacing));
 
   read_anything::mojom::Spacing prefs_letter_spacing;
   prefs_letter_spacing = static_cast<read_anything::mojom::Spacing>(
diff --git a/chrome/browser/ui/views/side_panel/read_anything/read_anything_model.cc b/chrome/browser/ui/views/side_panel/read_anything/read_anything_model.cc
index c668853..d314a52 100644
--- a/chrome/browser/ui/views/side_panel/read_anything/read_anything_model.cc
+++ b/chrome/browser/ui/views/side_panel/read_anything/read_anything_model.cc
@@ -32,7 +32,7 @@
       font_scale_(kReadAnythingDefaultFontScale),
       font_model_(std::make_unique<ReadAnythingFontModel>()),
       colors_model_(std::make_unique<ReadAnythingColorsModel>()),
-      lines_model_(std::make_unique<ReadAnythingLineSpacingModel>()),
+      line_spacing_model_(std::make_unique<ReadAnythingLineSpacingModel>()),
       letter_spacing_model_(
           std::make_unique<ReadAnythingLetterSpacingModel>()) {}
 
@@ -50,14 +50,6 @@
     font_name_ = font_name;
   }
 
-  size_t letter_spacing_index = static_cast<size_t>(letter_spacing);
-  if (letter_spacing_model_->IsValidLetterSpacingIndex(letter_spacing_index)) {
-    letter_spacing_model_->SetDefaultLetterSpacingIndexFromPref(
-        letter_spacing_index);
-    letter_spacing_ =
-        letter_spacing_model_->GetLetterSpacingAt(letter_spacing_index);
-  }
-
   font_scale_ = font_scale;
 
   size_t colors_index = static_cast<size_t>(colors);
@@ -71,8 +63,17 @@
   background_color_ = initial_colors.background;
 
   size_t line_spacing_index = static_cast<size_t>(line_spacing);
-  if (lines_model_->IsValidLineSpacingIndex(line_spacing_index)) {
-    line_spacing_ = lines_model_->GetLineSpacingAt(line_spacing_index);
+  if (line_spacing_model_->IsValidLineSpacingIndex(line_spacing_index)) {
+    line_spacing_model_->SetDefaultLineSpacingIndexFromPref(line_spacing_index);
+    line_spacing_ = line_spacing_model_->GetLineSpacingAt(line_spacing_index);
+  }
+
+  size_t letter_spacing_index = static_cast<size_t>(letter_spacing);
+  if (letter_spacing_model_->IsValidLetterSpacingIndex(letter_spacing_index)) {
+    letter_spacing_model_->SetDefaultLetterSpacingIndexFromPref(
+        letter_spacing_index);
+    letter_spacing_ =
+        letter_spacing_model_->GetLetterSpacingAt(letter_spacing_index);
   }
 }
 
@@ -107,9 +108,9 @@
 
 void ReadAnythingModel::SetSelectedLineSpacingByIndex(size_t new_index) {
   // Check that the index is valid.
-  DCHECK(lines_model_->IsValidLineSpacingIndex(new_index));
+  DCHECK(line_spacing_model_->IsValidLineSpacingIndex(new_index));
 
-  line_spacing_ = lines_model_->GetLineSpacingAt(new_index);
+  line_spacing_ = line_spacing_model_->GetLineSpacingAt(new_index);
   NotifyThemeChanged();
 }
 
@@ -239,18 +240,16 @@
   // Define the possible sets of colors available to the user.
   // TODO (crbug.com/1266555): Define default colors from system theme.
   ColorInfo kDefaultColors = {u"Default", IDS_READ_ANYTHING_DEFAULT_PNG,
-                              SkColors::kBlack.toSkColor(),
-                              SkColors::kWhite.toSkColor()};
+                              gfx::kGoogleGrey800, gfx::kGoogleGrey050};
 
   ColorInfo kLightColors = {u"Light", IDS_READ_ANYTHING_LIGHT_PNG,
-                            gfx::kGoogleGrey900, gfx::kGoogleGrey050};
+                            gfx::kGoogleGrey800, gfx::kGoogleGrey050};
 
   ColorInfo kDarkColors = {u"Dark", IDS_READ_ANYTHING_DARK_PNG,
-                           gfx::kGoogleGrey200, kReadAnythingDarkBackground};
+                           gfx::kGoogleGrey200, gfx::kGoogleGrey900};
 
   ColorInfo kYellowColors = {u"Yellow", IDS_READ_ANYTHING_YELLOW_PNG,
-                             kReadAnythingYellowForeground,
-                             gfx::kGoogleYellow200};
+                             gfx::kGoogleGrey800, gfx::kGoogleYellow200};
 
   colors_choices_.emplace_back(kDefaultColors);
   colors_choices_.emplace_back(kLightColors);
diff --git a/chrome/browser/ui/views/side_panel/read_anything/read_anything_model.h b/chrome/browser/ui/views/side_panel/read_anything/read_anything_model.h
index 69fafd41..57c230d 100644
--- a/chrome/browser/ui/views/side_panel/read_anything/read_anything_model.h
+++ b/chrome/browser/ui/views/side_panel/read_anything/read_anything_model.h
@@ -235,7 +235,7 @@
   double GetFontScale() { return font_scale_; }
   ReadAnythingColorsModel* GetColorsModel() { return colors_model_.get(); }
   ReadAnythingLineSpacingModel* GetLineSpacingModel() {
-    return lines_model_.get();
+    return line_spacing_model_.get();
   }
   ReadAnythingLetterSpacingModel* GetLetterSpacingModel() {
     return letter_spacing_model_.get();
@@ -266,7 +266,7 @@
   base::ObserverList<Observer> observers_;
   const std::unique_ptr<ReadAnythingFontModel> font_model_;
   const std::unique_ptr<ReadAnythingColorsModel> colors_model_;
-  const std::unique_ptr<ReadAnythingLineSpacingModel> lines_model_;
+  const std::unique_ptr<ReadAnythingLineSpacingModel> line_spacing_model_;
   const std::unique_ptr<ReadAnythingLetterSpacingModel> letter_spacing_model_;
 };
 
diff --git a/chrome/browser/ui/views/side_panel/side_panel_coordinator.cc b/chrome/browser/ui/views/side_panel/side_panel_coordinator.cc
index 0c43244..6e2b6e6 100644
--- a/chrome/browser/ui/views/side_panel/side_panel_coordinator.cc
+++ b/chrome/browser/ui/views/side_panel/side_panel_coordinator.cc
@@ -24,10 +24,12 @@
 #include "chrome/grit/generated_resources.h"
 #include "components/feature_engagement/public/feature_constants.h"
 #include "components/strings/grit/components_strings.h"
+#include "components/vector_icons/vector_icons.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/base/metadata/metadata_header_macros.h"
 #include "ui/base/metadata/metadata_impl_macros.h"
 #include "ui/base/models/combobox_model.h"
+#include "ui/base/window_open_disposition.h"
 #include "ui/color/color_id.h"
 #include "ui/gfx/vector_icon_utils.h"
 #include "ui/views/controls/button/image_button.h"
@@ -303,6 +305,22 @@
   }
 }
 
+void SidePanelCoordinator::OpenInNewTab() {
+  if (!GetContentView() || !current_entry_)
+    return;
+
+  // TODO(tommycli): Hook this up to the current entry's Open in New Tab GURL.
+  GURL new_tab_url("https://www.google.com/");
+
+  content::OpenURLParams params(new_tab_url, content::Referrer(),
+                                WindowOpenDisposition::NEW_FOREGROUND_TAB,
+                                ui::PAGE_TRANSITION_AUTO_BOOKMARK,
+                                /*is_renderer_initiated=*/false);
+  browser_view_->browser()->OpenURL(params);
+
+  Close();
+}
+
 SidePanelRegistry* SidePanelCoordinator::GetGlobalSidePanelRegistry() {
   return static_cast<SidePanelRegistry*>(
       browser_view_->browser()->GetUserData(kGlobalSidePanelRegistryKey));
@@ -498,6 +516,22 @@
       views::CreateThemedSolidBackground(ui::kColorWindowBackground));
 
   header_combobox_ = header->AddChildView(CreateCombobox());
+  header_combobox_->SetFocusBehavior(views::View::FocusBehavior::ALWAYS);
+
+  header_open_in_new_tab_button_ = header->AddChildView(CreateControlButton(
+      header.get(),
+      base::BindRepeating(&SidePanelCoordinator::OpenInNewTab,
+                          base::Unretained(this)),
+      vector_icons::kOpenInNewIcon, gfx::Insets(),
+      l10n_util::GetStringUTF16(IDS_ACCNAME_OPEN_IN_NEW_TAB),
+      kSidePanelOpenInNewTabButtonElementId,
+      ChromeLayoutProvider::Get()->GetDistanceMetric(
+          ChromeDistanceMetric::DISTANCE_SIDE_PANEL_HEADER_VECTOR_ICON_SIZE)));
+  header_open_in_new_tab_button_->SetFocusBehavior(
+      views::View::FocusBehavior::ALWAYS);
+  // The icon is later set as visible for side panels that support it.
+  // TODO(tommycli): Implement setting this button as visible later.
+  header_open_in_new_tab_button_->SetVisible(false);
 
   auto* header_close_button = header->AddChildView(CreateControlButton(
       header.get(),
@@ -507,8 +541,6 @@
       kSidePanelCloseButtonElementId,
       ChromeLayoutProvider::Get()->GetDistanceMetric(
           ChromeDistanceMetric::DISTANCE_SIDE_PANEL_HEADER_VECTOR_ICON_SIZE)));
-
-  header_combobox_->SetFocusBehavior(views::View::FocusBehavior::ALWAYS);
   header_close_button->SetFocusBehavior(views::View::FocusBehavior::ALWAYS);
 
   return header;
diff --git a/chrome/browser/ui/views/side_panel/side_panel_coordinator.h b/chrome/browser/ui/views/side_panel/side_panel_coordinator.h
index e480b48..3a5319d 100644
--- a/chrome/browser/ui/views/side_panel/side_panel_coordinator.h
+++ b/chrome/browser/ui/views/side_panel/side_panel_coordinator.h
@@ -21,6 +21,7 @@
 class SidePanelComboboxModel;
 
 namespace views {
+class ImageButton;
 class Combobox;
 class View;
 }  // namespace views
@@ -53,6 +54,10 @@
   void Close();
   void Toggle();
 
+  // Opens the current side panel contents in a new tab. This is called by the
+  // header button, when it's visible.
+  void OpenInNewTab();
+
   SidePanelRegistry* GetGlobalSidePanelRegistry();
 
   // Prevent content swapping delays from happening for testing.
@@ -165,6 +170,9 @@
   std::unique_ptr<SidePanelComboboxModel> combobox_model_;
   raw_ptr<views::Combobox> header_combobox_ = nullptr;
 
+  // Used to update the visibility of the 'Open in New Tab' header button.
+  raw_ptr<views::ImageButton> header_open_in_new_tab_button_ = nullptr;
+
   base::ObserverList<SidePanelViewStateObserver> view_state_observers_;
 
   // TODO(pbos): Add awareness of tab registries here. This probably needs to
diff --git a/chrome/browser/ui/views/site_data/page_specific_site_data_dialog.cc b/chrome/browser/ui/views/site_data/page_specific_site_data_dialog.cc
index c12bf571..8a22696 100644
--- a/chrome/browser/ui/views/site_data/page_specific_site_data_dialog.cc
+++ b/chrome/browser/ui/views/site_data/page_specific_site_data_dialog.cc
@@ -98,13 +98,17 @@
   auto eltd_current_origin = GetEtldPlusOne(current_origin);
 
   PageSpecificSiteDataDialogSection first_party_section;
-  first_party_section.title = u"From this site";
-  first_party_section.subtitle = u"From this site subtitle";
+  first_party_section.title = l10n_util::GetStringUTF16(
+      IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_FIRST_PARTY_TITLE);
+  first_party_section.subtitle = l10n_util::GetStringUTF16(
+      IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_FIRST_PARTY_SUBTITLE);
   first_party_section.identifier = kPageSpecificSiteDataDialogFirstPartySection;
 
   PageSpecificSiteDataDialogSection third_party_section;
-  third_party_section.title = u"From other site";
-  third_party_section.subtitle = u"From other site subtitle";
+  third_party_section.title = l10n_util::GetStringUTF16(
+      IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_THIRD_PARTY_TITLE);
+  third_party_section.subtitle = l10n_util::GetStringUTF16(
+      IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_THIRD_PARTY_SUBTITLE);
   third_party_section.identifier = kPageSpecificSiteDataDialogThirdPartySection;
 
   for (const auto& site : all_sites) {
@@ -425,7 +429,8 @@
   PageSpecificSiteDataDialogModelDelegate* delegate = delegate_unique.get();
   auto builder = ui::DialogModel::Builder(std::move(delegate_unique));
   builder
-      .SetTitle(l10n_util::GetStringUTF16(IDS_COLLECTED_COOKIES_DIALOG_TITLE))
+      .SetTitle(
+          l10n_util::GetStringUTF16(IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_TITLE))
       .SetInternalName("PageSpecificSiteDataDialog")
       .AddOkButton(
           base::BindRepeating(&PageSpecificSiteDataDialogModelDelegate::
diff --git a/chrome/browser/ui/views/site_data/page_specific_site_data_dialog_browsertest.cc b/chrome/browser/ui/views/site_data/page_specific_site_data_dialog_browsertest.cc
index 928435e3..58b2efd 100644
--- a/chrome/browser/ui/views/site_data/page_specific_site_data_dialog_browsertest.cc
+++ b/chrome/browser/ui/views/site_data/page_specific_site_data_dialog_browsertest.cc
@@ -12,6 +12,7 @@
 #include "chrome/browser/ui/views/site_data/page_specific_site_data_dialog.h"
 #include "chrome/browser/ui/views/site_data/page_specific_site_data_dialog_controller.h"
 #include "chrome/browser/ui/views/site_data/site_data_row_view.h"
+#include "chrome/grit/generated_resources.h"
 #include "chrome/test/base/in_process_browser_test.h"
 #include "chrome/test/base/ui_test_utils.h"
 #include "components/content_settings/core/browser/cookie_settings.h"
@@ -24,6 +25,7 @@
 #include "net/dns/mock_host_resolver.h"
 #include "net/test/embedded_test_server/embedded_test_server.h"
 #include "ui/base/interaction/element_identifier.h"
+#include "ui/base/l10n/l10n_util.h"
 #include "ui/events/base_event_utils.h"
 #include "ui/views/controls/button/button.h"
 #include "ui/views/controls/button/image_button.h"
@@ -327,7 +329,9 @@
       kCookiesDialogHistogramName,
       static_cast<int>(PageSpecificSiteDataDialogAction::kSiteBlocked), 1);
   EXPECT_TRUE(row_view->state_label_for_testing()->GetVisible());
-  EXPECT_EQ(row_view->state_label_for_testing()->GetText(), u"Blocked");
+  EXPECT_EQ(row_view->state_label_for_testing()->GetText(),
+            l10n_util::GetStringUTF16(
+                IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_BLOCKED_STATE_SUBTITLE));
   // The delete button isn't available for blocked sites.
   EXPECT_FALSE(row_view->delete_button_for_testing()->GetVisible());
 
@@ -369,7 +373,9 @@
       kCookiesDialogHistogramName,
       static_cast<int>(PageSpecificSiteDataDialogAction::kSiteBlocked), 1);
 
-  EXPECT_EQ(row_view->state_label_for_testing()->GetText(), u"Blocked");
+  EXPECT_EQ(row_view->state_label_for_testing()->GetText(),
+            l10n_util::GetStringUTF16(
+                IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_BLOCKED_STATE_SUBTITLE));
   ClickAllowMenuItem(row_view);
 
   histograms.ExpectBucketCount(
@@ -377,7 +383,9 @@
       static_cast<int>(PageSpecificSiteDataDialogAction::kSiteAllowed), 1);
 
   EXPECT_TRUE(row_view->state_label_for_testing()->GetVisible());
-  EXPECT_EQ(row_view->state_label_for_testing()->GetText(), u"Allowed");
+  EXPECT_EQ(row_view->state_label_for_testing()->GetText(),
+            l10n_util::GetStringUTF16(
+                IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_ALLOWED_STATE_SUBTITLE));
 
   dialog->Close();
   EXPECT_EQ(1u, infobar_count());
@@ -416,7 +424,10 @@
       static_cast<int>(PageSpecificSiteDataDialogAction::kSiteClearedOnExit),
       1);
   EXPECT_TRUE(row_view->state_label_for_testing()->GetVisible());
-  EXPECT_EQ(row_view->state_label_for_testing()->GetText(), u"Clear on close");
+  EXPECT_EQ(
+      row_view->state_label_for_testing()->GetText(),
+      l10n_util::GetStringUTF16(
+          IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_SESSION_ONLY_STATE_SUBTITLE));
 
   dialog->Close();
   EXPECT_EQ(1u, infobar_count());
diff --git a/chrome/browser/ui/views/site_data/page_specific_site_data_dialog_interactive_uitest.cc b/chrome/browser/ui/views/site_data/page_specific_site_data_dialog_interactive_uitest.cc
index 550200f..1880d7d 100644
--- a/chrome/browser/ui/views/site_data/page_specific_site_data_dialog_interactive_uitest.cc
+++ b/chrome/browser/ui/views/site_data/page_specific_site_data_dialog_interactive_uitest.cc
@@ -13,6 +13,7 @@
 #include "chrome/browser/ui/views/site_data/page_specific_site_data_dialog.h"
 #include "chrome/browser/ui/views/site_data/page_specific_site_data_dialog_controller.h"
 #include "chrome/browser/ui/views/site_data/site_data_row_view.h"
+#include "chrome/grit/generated_resources.h"
 #include "chrome/test/base/in_process_browser_test.h"
 #include "chrome/test/interaction/webui_interaction_test_util.h"
 #include "components/page_info/core/features.h"
@@ -22,6 +23,7 @@
 #include "ui/base/interaction/expect_call_in_scope.h"
 #include "ui/base/interaction/interaction_sequence.h"
 #include "ui/base/interaction/interaction_test_util.h"
+#include "ui/base/l10n/l10n_util.h"
 #include "ui/views/controls/label.h"
 #include "ui/views/controls/tabbed_pane/tabbed_pane.h"
 #include "ui/views/controls/tree/tree_view.h"
@@ -35,6 +37,7 @@
 #endif
 
 namespace {
+
 DEFINE_LOCAL_ELEMENT_IDENTIFIER_VALUE(kWebUIInteractionTestUtilTestId);
 const char kFirstPartyAllowedRow[] = "FirstPartyAllowedRow";
 const char kThirdPartyBlockedRow[] = "ThirdPartyBlockedRow";
@@ -204,15 +207,18 @@
                                 GetContext(element),
                                 kPageSpecificSiteDataDialogEmptyStateLabel));
                       })))
-          .AddStep(ui::InteractionSequence::StepBuilder()
-                       .SetElementName(kFirstPartyAllowedRow)
-                       .SetStartCallback(base::BindLambdaForTesting(
-                           [&](ui::InteractionSequence*,
-                               ui::TrackedElement* element) {
-                             EXPECT_EQ(GetStateLabelText(element), u"Allowed");
-                             test_util_.PressButton(
-                                 GetMenuButtonElement(element));
-                           })))
+          .AddStep(
+              ui::InteractionSequence::StepBuilder()
+                  .SetElementName(kFirstPartyAllowedRow)
+                  .SetStartCallback(base::BindLambdaForTesting(
+                      [&](ui::InteractionSequence*,
+                          ui::TrackedElement* element) {
+                        EXPECT_EQ(
+                            GetStateLabelText(element),
+                            l10n_util::GetStringUTF16(
+                                IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_ALLOWED_STATE_SUBTITLE));
+                        test_util_.PressButton(GetMenuButtonElement(element));
+                      })))
           // Verify that the menu has "Block" and "Clear on exit" menu
           // items.
           .AddStep(CheckIsElementPresent(SiteDataRowView::kBlockMenuItem))
@@ -307,15 +313,18 @@
                         views::InteractionSequenceViews::NameView(
                             sequence, row_view, kThirdPartyBlockedRow);
                       })))
-          .AddStep(ui::InteractionSequence::StepBuilder()
-                       .SetElementName(kThirdPartyBlockedRow)
-                       .SetStartCallback(base::BindLambdaForTesting(
-                           [&](ui::InteractionSequence*,
-                               ui::TrackedElement* element) {
-                             EXPECT_EQ(GetStateLabelText(element), u"Blocked");
-                             test_util_.PressButton(
-                                 GetMenuButtonElement(element));
-                           })))
+          .AddStep(
+              ui::InteractionSequence::StepBuilder()
+                  .SetElementName(kThirdPartyBlockedRow)
+                  .SetStartCallback(base::BindLambdaForTesting(
+                      [&](ui::InteractionSequence*,
+                          ui::TrackedElement* element) {
+                        EXPECT_EQ(
+                            GetStateLabelText(element),
+                            l10n_util::GetStringUTF16(
+                                IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_BLOCKED_STATE_SUBTITLE));
+                        test_util_.PressButton(GetMenuButtonElement(element));
+                      })))
           // Verify that the menu has "Clear on exit" and "Allow" menu items.
           .AddStep(CheckIsElementPresent(SiteDataRowView::kClearOnExitMenuItem))
           .AddStep(ui::InteractionSequence::StepBuilder()
@@ -344,17 +353,20 @@
                        .SetElementName(kThirdPartyBlockedRow))
           // Verify that UI has updated as a result of clicking on a menu item
           // and the correct histogram was logged. Open the content menu again.
-          .AddStep(ui::InteractionSequence::StepBuilder()
-                       .SetElementName(kThirdPartyBlockedRow)
-                       .SetStartCallback(base::BindLambdaForTesting(
-                           [&](ui::InteractionSequence*,
-                               ui::TrackedElement* element) {
-                             EXPECT_EQ(GetStateLabelText(element), u"Allowed");
-                             ExpectActionCount(
-                                 histograms,
-                                 PageSpecificSiteDataDialogAction::kSiteAllowed,
-                                 1);
-                           })))
+          .AddStep(
+              ui::InteractionSequence::StepBuilder()
+                  .SetElementName(kThirdPartyBlockedRow)
+                  .SetStartCallback(base::BindLambdaForTesting(
+                      [&](ui::InteractionSequence*,
+                          ui::TrackedElement* element) {
+                        EXPECT_EQ(
+                            GetStateLabelText(element),
+                            l10n_util::GetStringUTF16(
+                                IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_ALLOWED_STATE_SUBTITLE));
+                        ExpectActionCount(
+                            histograms,
+                            PageSpecificSiteDataDialogAction::kSiteAllowed, 1);
+                      })))
           // Verify that after allowing a site, it can be deleted.
           .AddStep(ui::InteractionSequence::StepBuilder()
                        .SetElementName(kThirdPartyBlockedRow)
diff --git a/chrome/browser/ui/views/site_data/site_data_row_view.cc b/chrome/browser/ui/views/site_data/site_data_row_view.cc
index 98d61bc..f9812a85 100644
--- a/chrome/browser/ui/views/site_data/site_data_row_view.cc
+++ b/chrome/browser/ui/views/site_data/site_data_row_view.cc
@@ -8,7 +8,9 @@
 #include "chrome/browser/ui/views/accessibility/non_accessible_image_view.h"
 #include "chrome/browser/ui/views/chrome_layout_provider.h"
 #include "chrome/browser/ui/views/site_data/page_specific_site_data_dialog.h"
+#include "chrome/grit/generated_resources.h"
 #include "components/omnibox/browser/favicon_cache.h"
+#include "ui/base/l10n/l10n_util.h"
 #include "ui/base/models/dialog_model.h"
 #include "ui/base/models/dialog_model_menu_model_adapter.h"
 #include "ui/views/controls/button/image_button.h"
@@ -39,20 +41,27 @@
 std::u16string GetSettingStateString(ContentSetting setting,
                                      bool is_fully_partitioned) {
   // TODO(crbug.com/1344787): Return actual strings.
+  int message_id = -1;
   switch (setting) {
     case CONTENT_SETTING_ALLOW: {
-      return is_fully_partitioned ? u"Only using partitioned storage"
-                                  : u"Allowed";
+      message_id =
+          is_fully_partitioned
+              ? IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_PARTITIONED_STATE_SUBTITLE
+              : IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_ALLOWED_STATE_SUBTITLE;
+      break;
     }
     case CONTENT_SETTING_BLOCK: {
       // Partitioned cookies don't need a special call out because they are
       // blocked with the rest of the cookies.
-      return u"Blocked";
+      message_id = IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_BLOCKED_STATE_SUBTITLE;
+      break;
     }
     case CONTENT_SETTING_SESSION_ONLY: {
-      return is_fully_partitioned
-                 ? u"Only using partitioned storage. Clear on close"
-                 : u"Clear on close";
+      message_id =
+          is_fully_partitioned
+              ? IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_PARTITIONED_SESSION_ONLY_STATE_SUBTITLE
+              : IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_SESSION_ONLY_STATE_SUBTITLE;
+      break;
     }
     case CONTENT_SETTING_DEFAULT:
     case CONTENT_SETTING_ASK:
@@ -60,8 +69,10 @@
     case CONTENT_SETTING_NUM_SETTINGS:
       // Not supported settings for cookies.
       NOTREACHED();
-      return u"";
+      break;
   }
+
+  return l10n_util::GetStringUTF16(message_id);
 }
 
 std::unique_ptr<views::TableLayout> SetupTableLayout() {
@@ -138,8 +149,8 @@
     SetFaviconImage(favicon);
 
   // TODO(crbug.com/1344787): Use proper formatting of the host.
-  auto* label = AddChildView(
-      std::make_unique<views::Label>(base::UTF8ToUTF16(origin.host())));
+  std::u16string host_name = base::UTF8ToUTF16(origin.host());
+  auto* label = AddChildView(std::make_unique<views::Label>(host_name));
   label->SetHorizontalAlignment(gfx::ALIGN_LEFT);
 
   auto* delete_button_container = AddChildView(std::make_unique<views::View>());
@@ -150,7 +161,8 @@
                               base::Unretained(this)),
           kTrashCanIcon, kIconSize));
   views::InstallCircleHighlightPathGenerator(delete_button_);
-  delete_button_->SetAccessibleName(u"Delete storage");
+  delete_button_->SetTooltipText(l10n_util::GetStringFUTF16(
+      IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_DELETE_BUTTON_TOOLTIP, host_name));
   delete_button_->SetVisible(setting_ != CONTENT_SETTING_BLOCK);
   delete_button_->SetProperty(views::kElementIdentifierKey, kDeleteButton);
 
@@ -159,7 +171,8 @@
       base::BindRepeating(&SiteDataRowView::OnMenuIconClicked,
                           base::Unretained(this)),
       kBrowserToolsIcon, kIconSize));
-  menu_button_->SetAccessibleName(u"Open context menu");
+  menu_button_->SetTooltipText(l10n_util::GetStringFUTF16(
+      IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_CONTEXT_MENU_TOOLTIP, host_name));
   menu_button_->SetProperty(views::kElementIdentifierKey, kMenuButton);
   views::InstallCircleHighlightPathGenerator(menu_button_);
 
@@ -189,21 +202,27 @@
     // TODO(crbug.com/1344787): Consider clearing the data before blocking the
     // site to have a clean slate.
     builder.AddMenuItem(
-        ui::ImageModel(), u"Don't allow",
+        ui::ImageModel(),
+        l10n_util::GetStringUTF16(
+            IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_BLOCK_MENU_ITEM),
         base::BindRepeating(&SiteDataRowView::OnBlockMenuItemClicked,
                             base::Unretained(this)),
         ui::DialogModelMenuItem::Params().SetId(kBlockMenuItem));
   }
   if (setting_ != CONTENT_SETTING_ALLOW) {
     builder.AddMenuItem(
-        ui::ImageModel(), u"Allow",
+        ui::ImageModel(),
+        l10n_util::GetStringUTF16(
+            IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_ALLOW_MENU_ITEM),
         base::BindRepeating(&SiteDataRowView::OnAllowMenuItemClicked,
                             base::Unretained(this)),
         ui::DialogModelMenuItem::Params().SetId(kAllowMenuItem));
   }
   if (setting_ != CONTENT_SETTING_SESSION_ONLY) {
     builder.AddMenuItem(
-        ui::ImageModel(), u"Clear when you close Chrome",
+        ui::ImageModel(),
+        l10n_util::GetStringUTF16(
+            IDS_PAGE_SPECIFIC_SITE_DATA_DIALOG_SESSION_ONLY_MENU_ITEM),
         base::BindRepeating(&SiteDataRowView::OnClearOnExitMenuItemClicked,
                             base::Unretained(this)),
         ui::DialogModelMenuItem::Params().SetId(kClearOnExitMenuItem));
diff --git a/chrome/browser/ui/views/tabs/compound_tab_container.cc b/chrome/browser/ui/views/tabs/compound_tab_container.cc
index 8d6b9541..ae7601d2 100644
--- a/chrome/browser/ui/views/tabs/compound_tab_container.cc
+++ b/chrome/browser/ui/views/tabs/compound_tab_container.cc
@@ -324,6 +324,14 @@
   unpinned_tab_container_->OnGroupContentsChanged(group);
 }
 
+void CompoundTabContainer::OnGroupVisualsChanged(
+    const tab_groups::TabGroupId& group,
+    const tab_groups::TabGroupVisualData* old_visuals,
+    const tab_groups::TabGroupVisualData* new_visuals) {
+  unpinned_tab_container_->OnGroupVisualsChanged(group, old_visuals,
+                                                 new_visuals);
+}
+
 void CompoundTabContainer::OnGroupClosed(const tab_groups::TabGroupId& group) {
   unpinned_tab_container_->OnGroupClosed(group);
 }
@@ -416,13 +424,6 @@
   NOTREACHED();
 }
 
-void CompoundTabContainer::StartBasicAnimation() {
-  // TODO(crbug.com/1346023): Remove callers so this method can be private to
-  // TabContainerImpl.
-  pinned_tab_container_->StartBasicAnimation();
-  unpinned_tab_container_->StartBasicAnimation();
-}
-
 void CompoundTabContainer::InvalidateIdealBounds() {
   pinned_tab_container_->InvalidateIdealBounds();
   unpinned_tab_container_->InvalidateIdealBounds();
diff --git a/chrome/browser/ui/views/tabs/compound_tab_container.h b/chrome/browser/ui/views/tabs/compound_tab_container.h
index 024dbc9..af771d58 100644
--- a/chrome/browser/ui/views/tabs/compound_tab_container.h
+++ b/chrome/browser/ui/views/tabs/compound_tab_container.h
@@ -49,6 +49,10 @@
   void OnGroupEditorOpened(const tab_groups::TabGroupId& group) override;
   void OnGroupMoved(const tab_groups::TabGroupId& group) override;
   void OnGroupContentsChanged(const tab_groups::TabGroupId& group) override;
+  void OnGroupVisualsChanged(
+      const tab_groups::TabGroupId& group,
+      const tab_groups::TabGroupVisualData* old_visuals,
+      const tab_groups::TabGroupVisualData* new_visuals) override;
   void OnGroupClosed(const tab_groups::TabGroupId& group) override;
   void UpdateTabGroupVisuals(tab_groups::TabGroupId group_id) override;
   void NotifyTabGroupEditorBubbleOpened() override;
@@ -64,7 +68,6 @@
   bool IsRectInContentArea(const gfx::Rect& rect) override;
   void OnTabSlotAnimationProgressed(TabSlotView* view) override;
   void OnTabCloseAnimationCompleted(Tab* tab) override;
-  void StartBasicAnimation() override;
   void InvalidateIdealBounds() override;
   bool IsAnimating() const override;
   void CancelAnimation() override;
diff --git a/chrome/browser/ui/views/tabs/tab_container.h b/chrome/browser/ui/views/tabs/tab_container.h
index c0b7908..69d63814 100644
--- a/chrome/browser/ui/views/tabs/tab_container.h
+++ b/chrome/browser/ui/views/tabs/tab_container.h
@@ -71,6 +71,10 @@
   virtual void OnGroupEditorOpened(const tab_groups::TabGroupId& group) = 0;
   virtual void OnGroupMoved(const tab_groups::TabGroupId& group) = 0;
   virtual void OnGroupContentsChanged(const tab_groups::TabGroupId& group) = 0;
+  virtual void OnGroupVisualsChanged(
+      const tab_groups::TabGroupId& group,
+      const tab_groups::TabGroupVisualData* old_visuals,
+      const tab_groups::TabGroupVisualData* new_visuals) = 0;
   virtual void OnGroupClosed(const tab_groups::TabGroupId& group) = 0;
   virtual void UpdateTabGroupVisuals(tab_groups::TabGroupId group_id) = 0;
   virtual void NotifyTabGroupEditorBubbleOpened() = 0;
@@ -100,12 +104,6 @@
   // Called whenever a tab close animation has completed. This kills the `tab`.
   virtual void OnTabCloseAnimationCompleted(Tab* tab) = 0;
 
-  // Animates tabs and group views from where they are to where they should be.
-  // Callers that want to do fancier things can manipulate starting bounds
-  // before calling this and/or replace the animation for some tabs or group
-  // views after calling this.
-  virtual void StartBasicAnimation() = 0;
-
   // Force recalculation of ideal bounds at the next layout. Used to cause tabs
   // to animate to their ideal bounds after somebody other than TabContainer
   // (cough TabDragController cough) moves tabs directly.
diff --git a/chrome/browser/ui/views/tabs/tab_container_impl.cc b/chrome/browser/ui/views/tabs/tab_container_impl.cc
index b016aad7..769e826 100644
--- a/chrome/browser/ui/views/tabs/tab_container_impl.cc
+++ b/chrome/browser/ui/views/tabs/tab_container_impl.cc
@@ -282,7 +282,42 @@
 
 void TabContainerImpl::SetActiveTab(absl::optional<size_t> prev_active_index,
                                     absl::optional<size_t> new_active_index) {
+  auto maybe_update_group_visuals = [this](absl::optional<size_t> tab_index) {
+    if (!tab_index.has_value())
+      return;
+    absl::optional<tab_groups::TabGroupId> group =
+        GetTabAtModelIndex(tab_index.value())->group();
+    if (group.has_value())
+      UpdateTabGroupVisuals(group.value());
+  };
+
+  maybe_update_group_visuals(prev_active_index);
+  maybe_update_group_visuals(new_active_index);
+
   layout_helper_->SetActiveTab(prev_active_index, new_active_index);
+
+  if (GetActiveTabWidth() == GetInactiveTabWidth()) {
+    // When tabs are wide enough, selecting a new tab cannot change the
+    // ideal bounds, so only a repaint is necessary.
+    SchedulePaint();
+  } else if (IsAnimating() || drag_context_->IsDragSessionActive()) {
+    // The selection change will have modified the ideal bounds of the tabs
+    // in |selected_tabs_| and |new_selection|.  We need to recompute and
+    // retarget the animation to these new bounds. Note: This is safe even if
+    // we're in the midst of mouse-based tab closure--we won't expand the
+    // tabstrip back to the full window width--because PrepareForCloseAt() will
+    // have set |override_available_width_for_tabs_| already.
+    StartBasicAnimation();
+  } else {
+    // As in the animating case above, the selection change will have
+    // affected the desired bounds of the tabs, but since we're in a steady
+    // state we can just snap to the new bounds.
+    CompleteAnimationAndLayout();
+  }
+
+  if (base::FeatureList::IsEnabled(features::kScrollableTabStrip) &&
+      new_active_index.has_value())
+    ScrollTabToVisible(new_active_index.value());
 }
 
 std::unique_ptr<Tab> TabContainerImpl::TransferTabOut(int model_index) {
@@ -429,6 +464,26 @@
   StartBasicAnimation();
 }
 
+void TabContainerImpl::OnGroupVisualsChanged(
+    const tab_groups::TabGroupId& group,
+    const tab_groups::TabGroupVisualData* old_visuals,
+    const tab_groups::TabGroupVisualData* new_visuals) {
+  GetGroupViews()[group]->OnGroupVisualsChanged();
+  // The group title may have changed size, so update bounds.
+  // First exit tab closing mode, unless this change was a collapse, in which
+  // case we want to stay in tab closing mode.
+  const bool is_collapsing = old_visuals && !old_visuals->is_collapsed() &&
+                             new_visuals->is_collapsed();
+  if (!is_collapsing)
+    ExitTabClosingMode();
+  StartBasicAnimation();
+
+  // The active tab may need to repaint its group stroke if it's in `group`.
+  const int active_index = controller_->GetActiveIndex();
+  if (IsValidModelIndex(active_index))
+    GetTabAtModelIndex(active_index)->SchedulePaint();
+}
+
 void TabContainerImpl::OnGroupMoved(const tab_groups::TabGroupId& group) {
   DCHECK(group_views_[group]);
 
@@ -563,11 +618,6 @@
     UpdateTabGroupVisuals(view->group().value());
 }
 
-void TabContainerImpl::StartBasicAnimation() {
-  UpdateIdealBounds();
-  AnimateToIdealBounds();
-}
-
 void TabContainerImpl::InvalidateIdealBounds() {
   last_layout_size_ = gfx::Size();
 }
@@ -1030,6 +1080,11 @@
       GetAvailableWidthForTabContainer());
 }
 
+void TabContainerImpl::StartBasicAnimation() {
+  UpdateIdealBounds();
+  AnimateToIdealBounds();
+}
+
 void TabContainerImpl::StartInsertTabAnimation(int model_index) {
   ExitTabClosingMode();
 
diff --git a/chrome/browser/ui/views/tabs/tab_container_impl.h b/chrome/browser/ui/views/tabs/tab_container_impl.h
index 8fb8065..9d508f16 100644
--- a/chrome/browser/ui/views/tabs/tab_container_impl.h
+++ b/chrome/browser/ui/views/tabs/tab_container_impl.h
@@ -70,6 +70,10 @@
   void OnGroupEditorOpened(const tab_groups::TabGroupId& group) override;
   void OnGroupMoved(const tab_groups::TabGroupId& group) override;
   void OnGroupContentsChanged(const tab_groups::TabGroupId& group) override;
+  void OnGroupVisualsChanged(
+      const tab_groups::TabGroupId& group,
+      const tab_groups::TabGroupVisualData* old_visuals,
+      const tab_groups::TabGroupVisualData* new_visuals) override;
   void OnGroupClosed(const tab_groups::TabGroupId& group) override;
   void UpdateTabGroupVisuals(tab_groups::TabGroupId group_id) override;
   void NotifyTabGroupEditorBubbleOpened() override;
@@ -92,7 +96,6 @@
 
   void OnTabCloseAnimationCompleted(Tab* tab) override;
 
-  void StartBasicAnimation() override;
   void InvalidateIdealBounds() override;
   bool IsAnimating() const override;
   void CancelAnimation() override;
@@ -222,6 +225,12 @@
   // mode.
   int CalculateAvailableWidthForTabs() const;
 
+  // Animates tabs and group views from where they are to where they should be.
+  // Callers that want to do fancier things can manipulate starting bounds
+  // before calling this and/or replace the animation for some tabs or group
+  // views after calling this.
+  void StartBasicAnimation();
+
   // Invoked from |AddTab| after the newly created tab has been inserted.
   void StartInsertTabAnimation(int model_index);
 
diff --git a/chrome/browser/ui/views/tabs/tab_container_unittest.cc b/chrome/browser/ui/views/tabs/tab_container_unittest.cc
index f4f9ace8..3a858775 100644
--- a/chrome/browser/ui/views/tabs/tab_container_unittest.cc
+++ b/chrome/browser/ui/views/tabs/tab_container_unittest.cc
@@ -892,8 +892,9 @@
 
 TEST_F(TabContainerTest, PreferredWidth) {
   Tab* const tab = AddTab(0);
+  // Manually displace `tab`, then trigger an animation back to ideal bounds.
   tab->SetBoundsRect(gfx::Rect());
-  tab_container_->StartBasicAnimation();
+  tab_container_->MoveTab(0, 0);
 
   // During animations, container should prefer to match its child bounds.
   const gfx::Rect initial_tab_bounds = tab->bounds();
diff --git a/chrome/browser/ui/views/tabs/tab_strip.cc b/chrome/browser/ui/views/tabs/tab_strip.cc
index 7695b7fe..07ef023 100644
--- a/chrome/browser/ui/views/tabs/tab_strip.cc
+++ b/chrome/browser/ui/views/tabs/tab_strip.cc
@@ -1107,20 +1107,7 @@
     const tab_groups::TabGroupId& group,
     const tab_groups::TabGroupVisualData* old_visuals,
     const tab_groups::TabGroupVisualData* new_visuals) {
-  tab_container_->GetGroupViews()[group]->OnGroupVisualsChanged();
-  // The group title may have changed size, so update bounds.
-  // First exit tab closing mode, unless this change was a collapse, in which
-  // case we want to stay in tab closing mode.
-  bool is_collapsing = old_visuals && !old_visuals->is_collapsed() &&
-                       new_visuals->is_collapsed();
-  if (!is_collapsing)
-    tab_container_->ExitTabClosingMode();
-  tab_container_->StartBasicAnimation();
-
-  // The active tab may need to repaint its group stroke if it's in |group|.
-  int active_index = GetActiveIndex();
-  if (IsValidModelIndex(active_index))
-    tab_at(active_index)->SchedulePaint();
+  tab_container_->OnGroupVisualsChanged(group, old_visuals, new_visuals);
 }
 
 void TabStrip::ToggleTabGroup(const tab_groups::TabGroupId& group,
@@ -1209,11 +1196,9 @@
                                   : nullptr;
 
   if (new_active_tab != old_active_tab) {
-    if (old_active_tab) {
+    if (old_active_tab)
       old_active_tab->ActiveStateChanged();
-      if (old_active_tab->group().has_value())
-        tab_container_->UpdateTabGroupVisuals(old_active_tab->group().value());
-    }
+
     if (new_active_tab->group().has_value()) {
       const tab_groups::TabGroupId new_group = new_active_tab->group().value();
       // If the tab that is about to be activated is in a collapsed group,
@@ -1221,34 +1206,11 @@
       if (IsGroupCollapsed(new_group))
         ToggleTabGroupCollapsedState(
             new_group, ToggleTabGroupCollapsedStateOrigin::kImplicitAction);
-      tab_container_->UpdateTabGroupVisuals(new_group);
     }
-
     new_active_tab->ActiveStateChanged();
+
     tab_container_->SetActiveTab(selected_tabs_.active(),
                                  new_selection.active());
-    if (base::FeatureList::IsEnabled(features::kScrollableTabStrip)) {
-      tab_container_->ScrollTabToVisible(new_selection.active().value());
-    }
-  }
-
-  if (GetActiveTabWidth() == GetInactiveTabWidth()) {
-    // When tabs are wide enough, selecting a new tab cannot change the
-    // ideal bounds, so only a repaint is necessary.
-    SchedulePaint();
-  } else if (IsAnimating() || drag_context_->IsDragSessionActive()) {
-    // The selection change will have modified the ideal bounds of the tabs
-    // in |selected_tabs_| and |new_selection|.  We need to recompute and
-    // retarget the animation to these new bounds. Note: This is safe even if
-    // we're in the midst of mouse-based tab closure--we won't expand the
-    // tabstrip back to the full window width--because PrepareForCloseAt() will
-    // have set |override_available_width_for_tabs_| already.
-    tab_container_->StartBasicAnimation();
-  } else {
-    // As in the animating case above, the selection change will have
-    // affected the desired bounds of the tabs, but since we're in a steady
-    // state we can just snap to the new bounds.
-    tab_container_->CompleteAnimationAndLayout();
   }
 
   // Use STLSetDifference to get the indices of elements newly selected
diff --git a/chrome/browser/ui/views/user_education/browser_user_education_service.cc b/chrome/browser/ui/views/user_education/browser_user_education_service.cc
index 1e967c2..24f7909 100644
--- a/chrome/browser/ui/views/user_education/browser_user_education_service.cc
+++ b/chrome/browser/ui/views/user_education/browser_user_education_service.cc
@@ -16,6 +16,7 @@
 #include "chrome/browser/ui/browser_finder.h"
 #include "chrome/browser/ui/chrome_pages.h"
 #include "chrome/browser/ui/color/chrome_color_id.h"
+#include "chrome/browser/ui/performance_controls/performance_controls_metrics.h"
 #include "chrome/browser/ui/views/chrome_typography.h"
 #include "chrome/browser/ui/views/frame/browser_view.h"
 #include "chrome/common/webui_url_constants.h"
@@ -293,6 +294,7 @@
                 if (browser)
                   chrome::ShowSettingsSubPage(browser,
                                               chrome::kPerformanceSubPage);
+                RecordBatterySaverIPHOpenSettings(browser != nullptr);
               }))
           .SetBubbleTitleText(IDS_BATTERY_SAVER_MODE_PROMO_TITLE)
           .SetBubbleArrow(HelpBubbleArrow::kTopRight)));
@@ -311,6 +313,7 @@
                 if (browser)
                   chrome::ShowSettingsSubPage(browser,
                                               chrome::kPerformanceSubPage);
+                RecordHighEfficiencyInfoIPHOpenSettings(browser != nullptr);
               }))
           .SetBubbleTitleText(IDS_HIGH_EFFICIENCY_INFO_MODE_PROMO_TITLE)
           .SetBubbleArrow(HelpBubbleArrow::kTopCenter)));
@@ -328,6 +331,7 @@
                 prefs->SetBoolean(performance_manager::user_tuning::prefs::
                                       kHighEfficiencyModeEnabled,
                                   true);
+                RecordHighEfficiencyIPHEnableMode(true);
               }))
           .SetCustomActionIsDefault(true)
           .SetCustomActionDismissText(IDS_NOT_NOW)
diff --git a/chrome/browser/ui/views/web_apps/web_app_detailed_install_dialog.cc b/chrome/browser/ui/views/web_apps/web_app_detailed_install_dialog.cc
index 9afa47e9..69b969f 100644
--- a/chrome/browser/ui/views/web_apps/web_app_detailed_install_dialog.cc
+++ b/chrome/browser/ui/views/web_apps/web_app_detailed_install_dialog.cc
@@ -31,6 +31,7 @@
 #include "components/feature_engagement/public/tracker.h"
 #include "components/prefs/pref_service.h"
 #include "components/strings/grit/components_strings.h"
+#include "components/webapps/browser/installable/installable_data.h"
 #include "components/webapps/common/constants.h"
 #include "content/public/browser/navigation_handle.h"
 #include "content/public/browser/web_contents.h"
@@ -91,7 +92,8 @@
 
 class ImageCarouselView : public views::View {
  public:
-  explicit ImageCarouselView(const std::vector<SkBitmap>& screenshots)
+  explicit ImageCarouselView(
+      const std::vector<webapps::Screenshot>& screenshots)
       : screenshots_(screenshots) {
     DCHECK(screenshots.size());
 
@@ -103,8 +105,8 @@
     // and should all have the same aspect ratio.
 #if DCHECK_IS_ON()
     for (const auto& screenshot : screenshots) {
-      DCHECK(screenshot.width() * screenshots_[0].height() ==
-             screenshot.height() * screenshots_[0].width());
+      DCHECK(screenshot.image.width() * screenshots_[0].image.height() ==
+             screenshot.image.height() * screenshots_[0].image.width());
     }
 #endif
 
@@ -160,8 +162,11 @@
         screen->GetDisplayNearestView(GetWidget()->GetNativeView())
             .device_scale_factor();
     for (size_t i = 0; i < screenshots_.size(); i++) {
-      image_views_[i]->SetImage(ui::ImageModel::FromImageSkia(
-          gfx::ImageSkia::CreateFromBitmap(screenshots_[i], current_scale)));
+      image_views_[i]->SetImage(
+          ui::ImageModel::FromImageSkia(gfx::ImageSkia::CreateFromBitmap(
+              screenshots_[i].image, current_scale)));
+      if (screenshots_[i].label)
+        image_views_[i]->SetAccessibleName(screenshots_[i].label.value());
     }
   }
 
@@ -178,9 +183,10 @@
     // by `OnScrollButtonClicked` based on image carousel animation.
     if (!trailing_button_visibility_set_up_) {
       for (size_t i = 0; i < screenshots_.size(); i++) {
-        const int item_width = base::checked_cast<int>(
-            screenshots_[i].width() * (base::checked_cast<float>(fixed_height) /
-                                       screenshots_[i].height()));
+        const int item_width =
+            base::checked_cast<int>(screenshots_[i].image.width() *
+                                    (base::checked_cast<float>(fixed_height) /
+                                     screenshots_[i].image.height()));
         image_views_[i]->SetImageSize({item_width, fixed_height});
       }
       image_carousel_full_width_ =
@@ -268,7 +274,7 @@
     return scroll_button;
   }
 
-  const std::vector<SkBitmap>& screenshots_;
+  const std::vector<webapps::Screenshot>& screenshots_;
   std::unique_ptr<views::BoundsAnimator> bounds_animator_;
   views::View* image_container_ = nullptr;
   views::BoxLayoutView* image_inner_container_ = nullptr;
@@ -290,7 +296,7 @@
     content::WebContents* web_contents,
     std::unique_ptr<WebAppInstallInfo> install_info,
     chrome::AppInstallationAcceptanceCallback callback,
-    const std::vector<SkBitmap>& screenshots,
+    const std::vector<webapps::Screenshot>& screenshots,
     chrome::PwaInProductHelpState iph_state) {
   content::BrowserContext* browser_context = web_contents->GetBrowserContext();
   PrefService* const prefs =
diff --git a/chrome/browser/ui/views/web_apps/web_app_detailed_install_dialog_browsertest.cc b/chrome/browser/ui/views/web_apps/web_app_detailed_install_dialog_browsertest.cc
index dbb45b8..d0d303e6 100644
--- a/chrome/browser/ui/views/web_apps/web_app_detailed_install_dialog_browsertest.cc
+++ b/chrome/browser/ui/views/web_apps/web_app_detailed_install_dialog_browsertest.cc
@@ -11,6 +11,7 @@
 #include "chrome/browser/ui/test/test_browser_dialog.h"
 #include "chrome/browser/web_applications/web_app_install_info.h"
 #include "chrome/test/base/ui_test_utils.h"
+#include "components/webapps/browser/installable/installable_data.h"
 #include "components/webapps/common/constants.h"
 #include "content/public/browser/web_contents.h"
 #include "content/public/test/browser_test.h"
@@ -34,24 +35,31 @@
     install_info->icon_bitmaps.any[kIconSize] =
         CreateSolidColorIcon(kIconSize, kIconSize, kIconColor);
 
-    std::vector<SkBitmap> screenshots;
+    std::vector<webapps::Screenshot> screenshots;
     if (name == "single_screenshot") {
-      screenshots.push_back(CreateSolidColorIcon(
-          kScreenshotSize, kScreenshotSize, SK_ColorGREEN));
+      screenshots.emplace_back(
+          CreateSolidColorIcon(kScreenshotSize, kScreenshotSize, SK_ColorGREEN),
+          u"example screenshot");
     } else if (name == "multiple_screenshots") {
-      screenshots.push_back(CreateSolidColorIcon(
-          kScreenshotSize, kScreenshotSize, SK_ColorGREEN));
-      screenshots.push_back(CreateSolidColorIcon(
-          kScreenshotSize, kScreenshotSize, SK_ColorBLACK));
-      screenshots.push_back(
-          CreateSolidColorIcon(kScreenshotSize, kScreenshotSize, SK_ColorBLUE));
+      screenshots.emplace_back(
+          CreateSolidColorIcon(kScreenshotSize, kScreenshotSize, SK_ColorGREEN),
+          u"example screenshot");
+      screenshots.emplace_back(
+          CreateSolidColorIcon(kScreenshotSize, kScreenshotSize, SK_ColorBLACK),
+          u"example screenshot 2");
+      screenshots.emplace_back(
+          CreateSolidColorIcon(kScreenshotSize, kScreenshotSize, SK_ColorBLUE),
+          u"");
     } else if (name == "max_ratio_screenshot") {
-      screenshots.push_back(CreateSolidColorIcon(
-          webapps::kMaximumScreenshotRatio * kScreenshotSize, kScreenshotSize,
-          SK_ColorGREEN));
+      screenshots.emplace_back(
+          CreateSolidColorIcon(
+              webapps::kMaximumScreenshotRatio * kScreenshotSize,
+              kScreenshotSize, SK_ColorGREEN),
+          absl::nullopt);
     } else {
-      screenshots.push_back(CreateSolidColorIcon(
-          kScreenshotSize, kScreenshotSize, SK_ColorGREEN));
+      screenshots.emplace_back(
+          CreateSolidColorIcon(kScreenshotSize, kScreenshotSize, SK_ColorGREEN),
+          absl::nullopt);
     }
     chrome::ShowWebAppDetailedInstallDialog(
         browser()->tab_strip_model()->GetWebContentsAt(0),
diff --git a/chrome/browser/ui/views/webauthn/authenticator_paask_sheet_view.cc b/chrome/browser/ui/views/webauthn/authenticator_paask_sheet_view.cc
index ad4ff5e..c50886d 100644
--- a/chrome/browser/ui/views/webauthn/authenticator_paask_sheet_view.cc
+++ b/chrome/browser/ui/views/webauthn/authenticator_paask_sheet_view.cc
@@ -5,9 +5,11 @@
 #include <memory>
 #include <utility>
 
+#include "base/feature_list.h"
 #include "chrome/browser/ui/views/webauthn/authenticator_paask_sheet_view.h"
 #include "chrome/browser/ui/webauthn/sheet_models.h"
 #include "chrome/grit/generated_resources.h"
+#include "device/fido/features.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/base/resource/resource_bundle.h"
 #include "ui/views/border.h"
@@ -48,6 +50,16 @@
     return std::make_pair(nullptr, AutoFocus::kNo);
   }
 
+  if (base::FeatureList::IsEnabled(
+          device::kWebAuthnNewDiscoverableCredentialsUi)) {
+    return std::make_pair(
+        std::make_unique<LinkLabelButton>(
+            base::BindRepeating(&AuthenticatorPaaskSheetView::OnLinkClicked,
+                                base::Unretained(this)),
+            l10n_util::GetStringUTF16(IDS_WEBAUTHN_CABLEV2_SERVERLINK_TROUBLE)),
+        AutoFocus::kNo);
+  }
+
   std::u16string link_text;
   switch (dialog_model->experiment_server_link_sheet_) {
     case AuthenticatorRequestDialogModel::ExperimentServerLinkSheet::CONTROL:
diff --git a/chrome/browser/ui/web_applications/web_app_dialog_utils.cc b/chrome/browser/ui/web_applications/web_app_dialog_utils.cc
index 89d071b9..ef1cc6e 100644
--- a/chrome/browser/ui/web_applications/web_app_dialog_utils.cc
+++ b/chrome/browser/ui/web_applications/web_app_dialog_utils.cc
@@ -29,6 +29,7 @@
 #include "chrome/browser/web_applications/web_app_utils.h"
 #include "components/webapps/browser/banners/app_banner_manager.h"
 #include "components/webapps/browser/features.h"
+#include "components/webapps/browser/installable/installable_data.h"
 #include "components/webapps/browser/installable/installable_metrics.h"
 #include "content/public/browser/navigation_entry.h"
 
diff --git a/chrome/browser/ui/webauthn/sheet_models.cc b/chrome/browser/ui/webauthn/sheet_models.cc
index 7a07d07..89a8d935b 100644
--- a/chrome/browser/ui/webauthn/sheet_models.cc
+++ b/chrome/browser/ui/webauthn/sheet_models.cc
@@ -797,7 +797,15 @@
 std::u16string AuthenticatorPaaskSheetModel::GetStepTitle() const {
   if (base::FeatureList::IsEnabled(
           device::kWebAuthnNewDiscoverableCredentialsUi)) {
-    return l10n_util::GetStringUTF16(IDS_WEBAUTHN_CABLE_ACTIVATE_TITLE_DEVICE);
+    switch (dialog_model()->cable_ui_type()) {
+      case AuthenticatorRequestDialogModel::CableUIType::CABLE_V1:
+      case AuthenticatorRequestDialogModel::CableUIType::CABLE_V2_SERVER_LINK:
+        // caBLEv1 and v2 server-link don't include device names.
+        return l10n_util::GetStringUTF16(IDS_WEBAUTHN_CABLE_ACTIVATE_TITLE);
+      case AuthenticatorRequestDialogModel::CableUIType::CABLE_V2_2ND_FACTOR:
+        return l10n_util::GetStringUTF16(
+            IDS_WEBAUTHN_CABLE_ACTIVATE_TITLE_DEVICE);
+    }
   }
   switch (dialog_model()->experiment_server_link_title_) {
     case AuthenticatorRequestDialogModel::ExperimentServerLinkTitle::CONTROL:
@@ -811,9 +819,20 @@
 std::u16string AuthenticatorPaaskSheetModel::GetStepDescription() const {
   if (base::FeatureList::IsEnabled(
           device::kWebAuthnNewDiscoverableCredentialsUi)) {
-    return l10n_util::GetStringFUTF16(
-        IDS_WEBAUTHN_CABLE_ACTIVATE_DEVICE_NAME_DESCRIPTION,
-        base::UTF8ToUTF16(dialog_model()->selected_phone_name().value_or("")));
+    switch (dialog_model()->cable_ui_type()) {
+      case AuthenticatorRequestDialogModel::CableUIType::CABLE_V1:
+      case AuthenticatorRequestDialogModel::CableUIType::CABLE_V2_SERVER_LINK:
+        // caBLEv1 and v2 server-link don't include device names.
+        return l10n_util::GetStringUTF16(
+            IDS_WEBAUTHN_CABLE_ACTIVATE_DESCRIPTION);
+      case AuthenticatorRequestDialogModel::CableUIType::CABLE_V2_2ND_FACTOR: {
+        DCHECK(dialog_model()->selected_phone_name());
+        return l10n_util::GetStringFUTF16(
+            IDS_WEBAUTHN_CABLE_ACTIVATE_DEVICE_NAME_DESCRIPTION,
+            base::UTF8ToUTF16(
+                dialog_model()->selected_phone_name().value_or("")));
+      }
+    }
   }
   switch (dialog_model()->cable_ui_type()) {
     case AuthenticatorRequestDialogModel::CableUIType::CABLE_V1:
diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
index 5576336..c21cc338 100644
--- a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
+++ b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
@@ -230,7 +230,7 @@
 #include "chrome/browser/ash/login/easy_unlock/easy_unlock_service_factory.h"
 #include "chrome/browser/ash/login/login_pref_names.h"
 #include "chrome/browser/ash/multidevice_setup/multidevice_setup_service_factory.h"
-#include "chrome/browser/ash/net/network_health/network_health_service.h"
+#include "chrome/browser/ash/net/network_health/network_health_manager.h"
 #include "chrome/browser/ash/os_feedback/chrome_os_feedback_delegate.h"
 #include "chrome/browser/ash/printing/print_management/printing_manager.h"
 #include "chrome/browser/ash/printing/print_management/printing_manager_factory.h"
@@ -664,14 +664,14 @@
           [](mojo::PendingReceiver<
               chromeos::network_diagnostics::mojom::NetworkDiagnosticsRoutines>
                  receiver) {
-            chromeos::network_health::NetworkHealthService::GetInstance()
+            ash::network_health::NetworkHealthManager::GetInstance()
                 ->BindDiagnosticsReceiver(std::move(receiver));
           }),
       /* BindNetworkHealthServiceCallback */
       base::BindRepeating(
           [](mojo::PendingReceiver<
               chromeos::network_health::mojom::NetworkHealthService> receiver) {
-            chromeos::network_health::NetworkHealthService::GetInstance()
+            ash::network_health::NetworkHealthManager::GetInstance()
                 ->BindHealthReceiver(std::move(receiver));
           }),
       /* SendFeedbackReportCallback */
diff --git a/chrome/browser/ui/webui/chromeos/bluetooth_pairing_dialog.cc b/chrome/browser/ui/webui/chromeos/bluetooth_pairing_dialog.cc
index c2a3d45..e3067f29 100644
--- a/chrome/browser/ui/webui/chromeos/bluetooth_pairing_dialog.cc
+++ b/chrome/browser/ui/webui/chromeos/bluetooth_pairing_dialog.cc
@@ -6,7 +6,6 @@
 
 #include <memory>
 
-#include "ash/constants/ash_features.h"
 #include "ash/public/cpp/bluetooth_config_service.h"
 #include "base/check.h"
 #include "base/json/json_writer.h"
@@ -33,15 +32,13 @@
 
 namespace {
 
-constexpr int kBluetoothPairingDialogHeight = 375;
-constexpr int kBluetoothPairingDialogHeightWithFlag = 424;
+constexpr int kBluetoothPairingDialogHeight = 424;
 
 void AddBluetoothStrings(content::WebUIDataSource* html_source) {
   struct {
     const char* name;
     int id;
   } localized_strings[] = {
-      {"bluetoothPairDeviceTitle", IDS_SETTINGS_BLUETOOTH_PAIR_DEVICE_TITLE},
       {"ok", IDS_OK},
       {"cancel", IDS_CANCEL},
       {"close", IDS_CLOSE},
@@ -93,14 +90,8 @@
     : SystemWebDialogDelegate(GURL(chrome::kChromeUIBluetoothPairingURL),
                               /*title=*/std::u16string()),
       dialog_id_(dialog_id) {
-  if (canonical_device_address.has_value()) {
+  if (canonical_device_address.has_value())
     device_data_.SetStringKey("address", canonical_device_address.value());
-  } else {
-    CHECK(ash::features::IsBluetoothRevampEnabled());
-  }
-
-  if (!ash::features::IsBluetoothRevampEnabled())
-    return;
 
   device_data_.SetBoolKey(
       "shouldOmitLinks",
@@ -116,21 +107,12 @@
 
 void BluetoothPairingDialog::AdjustWidgetInitParams(
     views::Widget::InitParams* params) {
-  if (!chromeos::features::IsBluetoothRevampEnabled()) {
-    return;
-  }
-
   params->type = views::Widget::InitParams::Type::TYPE_WINDOW_FRAMELESS;
   params->shadow_type = views::Widget::InitParams::ShadowType::kDrop;
   params->shadow_elevation = wm::kShadowElevationActiveWindow;
 }
 
 void BluetoothPairingDialog::GetDialogSize(gfx::Size* size) const {
-  if (chromeos::features::IsBluetoothRevampEnabled()) {
-    size->SetSize(SystemWebDialogDelegate::kDialogWidth,
-                  kBluetoothPairingDialogHeightWithFlag);
-    return;
-  }
   size->SetSize(SystemWebDialogDelegate::kDialogWidth,
                 kBluetoothPairingDialogHeight);
 }
@@ -149,12 +131,7 @@
       content::WebUIDataSource::Create(chrome::kChromeUIBluetoothPairingHost);
 
   AddBluetoothStrings(source);
-  if (chromeos::features::IsBluetoothRevampEnabled()) {
-    source->AddLocalizedString("title", IDS_BLUETOOTH_PAIRING_PAIR_NEW_DEVICES);
-  } else {
-    source->AddLocalizedString("title",
-                               IDS_SETTINGS_BLUETOOTH_PAIR_DEVICE_TITLE);
-  }
+  source->AddLocalizedString("title", IDS_BLUETOOTH_PAIRING_PAIR_NEW_DEVICES);
 
   webui::SetupWebUIDataSource(
       source,
@@ -172,7 +149,6 @@
 void BluetoothPairingDialogUI::BindInterface(
     mojo::PendingReceiver<ash::bluetooth_config::mojom::CrosBluetoothConfig>
         receiver) {
-  DCHECK(features::IsBluetoothRevampEnabled());
   ash::GetBluetoothConfigService(std::move(receiver));
 }
 
diff --git a/chrome/browser/ui/webui/chromeos/bluetooth_shared_load_time_data_provider.cc b/chrome/browser/ui/webui/chromeos/bluetooth_shared_load_time_data_provider.cc
index 3aea5119..325a00f4 100644
--- a/chrome/browser/ui/webui/chromeos/bluetooth_shared_load_time_data_provider.cc
+++ b/chrome/browser/ui/webui/chromeos/bluetooth_shared_load_time_data_provider.cc
@@ -4,7 +4,6 @@
 
 #include "chrome/browser/ui/webui/chromeos/bluetooth_shared_load_time_data_provider.h"
 
-#include "ash/constants/ash_features.h"
 #include "base/strings/utf_string_conversions.h"
 #include "build/build_config.h"
 #include "chrome/browser/ui/webui/webui_util.h"
@@ -28,11 +27,8 @@
       {"bluetoothNoAvailableDevices",
        IDS_BLUETOOTH_PAIRING_PAIRING_NO_AVAILABLE_DEVICES},
       {"bluetoothDisabled", IDS_BLUETOOTH_PAIRING_PAIRING_BLUETOOTH_DISABLED},
-      {"bluetoothAccept", IDS_BLUETOOTH_PAIRING_ACCEPT_PASSKEY},
       {"bluetoothEnterKey", IDS_BLUETOOTH_PAIRING_ENTER_KEY},
       {"bluetoothPair", IDS_BLUETOOTH_PAIRING_PAIR},
-      {"bluetoothReject", IDS_BLUETOOTH_PAIRING_REJECT_PASSKEY},
-      {"bluetoothStartConnecting", IDS_BLUETOOTH_PAIRING_START_CONNECTING},
       {"bluetoothEnterPin", IDS_BLUETOOTH_PAIRING_ENTER_PIN},
       {"bluetoothPairedDeviceItemBatteryPercentage",
        IDS_BLUETOOTH_DEVICE_ITEM_BATTERY_PERCENTAGE},
@@ -70,48 +66,6 @@
        IDS_BLUETOOTH_PAIRINGS_DEVICE_ITEM_SECONDARY_ERROR_A11Y_LABEL},
       {"bluetoothPairingDeviceItemSecondaryPairingA11YLabel",
        IDS_BLUETOOTH_PAIRINGS_DEVICE_ITEM_SECONDARY_PAIRING_A11Y_LABEL},
-      // Device connecting and pairing.
-      // These ids are generated in JS using 'bluetooth_' + a value from
-      // bluetoothPrivate.PairingEventType (see bluetooth_private.idl).
-      // 'requestAuthorization' has no associated message.
-      {"bluetooth_requestPincode", IDS_BLUETOOTH_PAIRING_REQUEST_PINCODE},
-      {"bluetooth_displayPincode", IDS_BLUETOOTH_PAIRING_DISPLAY_PINCODE},
-      {"bluetooth_requestPasskey", IDS_BLUETOOTH_PAIRING_REQUEST_PASSKEY},
-      {"bluetooth_displayPasskey", IDS_BLUETOOTH_PAIRING_DISPLAY_PASSKEY},
-      {"bluetooth_confirmPasskey", IDS_BLUETOOTH_PAIRING_CONFIRM_PASSKEY},
-      // Also display the IDS_BLUETOOTH_PAIRING_DISPLAY_PASSKEY for the
-      // 'keysEntered' event: continue prompting the user to enter the passkey
-      // as they continue to enter its keys.
-      {"bluetooth_keysEntered", IDS_BLUETOOTH_PAIRING_DISPLAY_PASSKEY},
-      // These ids are generated in JS using 'bluetooth_connect_' + a value from
-      // bluetoothPrivate.ConnectResultType (see bluetooth_private.idl).
-      {"bluetooth_connect_attributeLengthInvalid",
-       IDS_BLUETOOTH_PAIRING_CONNECT_ATTRIBUTE_LENGTH_INVALID},
-      {"bluetooth_connect_authCanceled",
-       IDS_BLUETOOTH_PAIRING_CONNECT_AUTH_CANCELED},
-      {"bluetooth_connect_authFailed",
-       IDS_BLUETOOTH_PAIRING_CONNECT_AUTH_FAILED},
-      {"bluetooth_connect_authRejected",
-       IDS_BLUETOOTH_PAIRING_CONNECT_AUTH_REJECTED},
-      {"bluetooth_connect_authTimeout",
-       IDS_BLUETOOTH_PAIRING_CONNECT_AUTH_TIMEOUT},
-      {"bluetooth_connect_connectionCongested",
-       IDS_BLUETOOTH_PAIRING_CONNECT_CONNECTION_CONGESTED},
-      {"bluetooth_connect_failed", IDS_BLUETOOTH_PAIRING_CONNECT_FAILED},
-      {"bluetooth_connect_inProgress",
-       IDS_BLUETOOTH_PAIRING_CONNECT_IN_PROGRESS},
-      {"bluetooth_connect_insufficientEncryption",
-       IDS_BLUETOOTH_PAIRING_CONNECT_INSUFFICIENT_ENCRYPTION},
-      {"bluetooth_connect_offsetInvalid",
-       IDS_BLUETOOTH_PAIRING_CONNECT_OFFSET_INVALID},
-      {"bluetooth_connect_readNotPermitted",
-       IDS_BLUETOOTH_PAIRING_CONNECT_READ_NOT_PERMITTED},
-      {"bluetooth_connect_requestNotSupported",
-       IDS_BLUETOOTH_PAIRING_CONNECT_REQUEST_NOT_SUPPORTED},
-      {"bluetooth_connect_unsupportedDevice",
-       IDS_BLUETOOTH_PAIRING_CONNECT_UNSUPPORTED_DEVICE},
-      {"bluetooth_connect_writeNotPermitted",
-       IDS_BLUETOOTH_PAIRING_CONNECT_WRITE_NOT_PERMITTED},
   };
   html_source->AddLocalizedStrings(kLocalizedStrings);
   html_source->AddString(
@@ -123,9 +77,6 @@
 
 void AddLoadTimeData(content::WebUIDataSource* html_source) {
   AddLocalizedStrings(html_source);
-
-  html_source->AddBoolean("enableBluetoothRevamp",
-                          chromeos::features::IsBluetoothRevampEnabled());
 }
 
 }  // namespace bluetooth
diff --git a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
index 69b8b32..9db99cef 100644
--- a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
+++ b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
@@ -17,6 +17,7 @@
 #include "base/task/single_thread_task_runner.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "chrome/browser/ash/login/error_screens_histogram_helper.h"
+#include "chrome/browser/ash/login/existing_user_controller.h"
 #include "chrome/browser/ash/login/profile_auth_data.h"
 #include "chrome/browser/ash/login/screens/network_error.h"
 #include "chrome/browser/ash/login/ui/login_display_host.h"
@@ -105,14 +106,10 @@
 }
 
 void SigninScreenHandler::Show() {
-  CHECK(delegate_);
+  CHECK(ash::ExistingUserController::current_controller());
   histogram_helper_->OnScreenShow();
 }
 
-void SigninScreenHandler::SetDelegate(SigninScreenHandlerDelegate* delegate) {
-  delegate_ = delegate;
-}
-
 void SigninScreenHandler::UpdateState(NetworkError::ErrorReason reason) {
   // ERROR_REASON_FRAME_ERROR is an explicit signal from GAIA frame so it shoud
   // force network error UI update.
@@ -134,10 +131,13 @@
                                               bool force_update) {
   // Do nothing once user has signed in or sign in is in progress.
   // TODO(antrim): We will end up here when processing network state
-  // notification but no ShowSigninScreen() was called so delegate_ will be
-  // nullptr. Network state processing logic does not belong here.
-  if (delegate_ &&
-      (delegate_->IsUserSigninCompleted() || delegate_->IsSigninInProgress())) {
+  // notification but no ShowSigninScreen() was called so ExistingUserController
+  // will be nullptr. Network state processing logic does not belong here.
+  auto* existing_user_controller =
+      ash::ExistingUserController::current_controller();
+  if (existing_user_controller &&
+      (existing_user_controller->IsUserSigninCompleted() ||
+       existing_user_controller->IsSigninInProgress())) {
     return;
   }
 
diff --git a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h
index 3e835ab..cbb98fa 100644
--- a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h
+++ b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h
@@ -36,22 +36,6 @@
 
 class GaiaScreenHandler;
 
-// An interface for SigninScreenHandler to call WebUILoginDisplay.
-class SigninScreenHandlerDelegate {
- public:
-  // --------------- Sign in/out methods.
-  // Returns true if sign in is in progress.
-  virtual bool IsSigninInProgress() const = 0;
-
-  // --------------- Rest of the methods.
-
-  // Whether user sign in has completed.
-  virtual bool IsUserSigninCompleted() const = 0;
-
- protected:
-  virtual ~SigninScreenHandlerDelegate() = default;
-};
-
 // A class that handles the WebUI hooks in sign-in screen in OobeUI and
 // LoginDisplay.
 class SigninScreenHandler
@@ -72,10 +56,6 @@
   // Shows the sign in screen.
   void Show();
 
-  // Sets delegate to be used by the handler. It is guaranteed that valid
-  // delegate is set before Show() method will be called.
-  void SetDelegate(SigninScreenHandlerDelegate* delegate);
-
   // NetworkStateInformer::NetworkStateInformerObserver implementation:
   void UpdateState(NetworkError::ErrorReason reason) override;
 
@@ -130,9 +110,6 @@
   // GAIA.
   void OnErrorScreenHide();
 
-  // A delegate that glues this handler with backend LoginDisplay.
-  SigninScreenHandlerDelegate* delegate_ = nullptr;
-
   // Network state informer used to keep signin screen up.
   scoped_refptr<NetworkStateInformer> network_state_informer_;
 
@@ -182,7 +159,6 @@
 // TODO(https://crbug.com/1164001): remove when moved to ash.
 namespace ash {
 using ::chromeos::SigninScreenHandler;
-using ::chromeos::SigninScreenHandlerDelegate;
 }  // namespace ash
 
 #endif  // CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_SIGNIN_SCREEN_HANDLER_H_
diff --git a/chrome/browser/ui/webui/chromeos/network_ui.cc b/chrome/browser/ui/webui/chromeos/network_ui.cc
index 20fb388b..172f7443 100644
--- a/chrome/browser/ui/webui/chromeos/network_ui.cc
+++ b/chrome/browser/ui/webui/chromeos/network_ui.cc
@@ -18,7 +18,7 @@
 #include "base/json/json_reader.h"
 #include "base/memory/weak_ptr.h"
 #include "base/values.h"
-#include "chrome/browser/ash/net/network_health/network_health_service.h"
+#include "chrome/browser/ash/net/network_health/network_health_manager.h"
 #include "chrome/browser/extensions/tab_helper.h"
 #include "chrome/browser/ui/ash/system_tray_client_impl.h"
 #include "chrome/browser/ui/chrome_pages.h"
@@ -978,15 +978,15 @@
 void NetworkUI::BindInterface(
     mojo::PendingReceiver<network_health::mojom::NetworkHealthService>
         receiver) {
-  network_health::NetworkHealthService::GetInstance()->BindHealthReceiver(
+  ash::network_health::NetworkHealthManager::GetInstance()->BindHealthReceiver(
       std::move(receiver));
 }
 
 void NetworkUI::BindInterface(
     mojo::PendingReceiver<
         network_diagnostics::mojom::NetworkDiagnosticsRoutines> receiver) {
-  network_health::NetworkHealthService::GetInstance()->BindDiagnosticsReceiver(
-      std::move(receiver));
+  ash::network_health::NetworkHealthManager::GetInstance()
+      ->BindDiagnosticsReceiver(std::move(receiver));
 }
 
 void NetworkUI::BindInterface(
diff --git a/chrome/browser/ui/webui/chromeos/parent_access/parent_access_dialog.cc b/chrome/browser/ui/webui/chromeos/parent_access/parent_access_dialog.cc
index 60cec3d..d50b99b 100644
--- a/chrome/browser/ui/webui/chromeos/parent_access/parent_access_dialog.cc
+++ b/chrome/browser/ui/webui/chromeos/parent_access/parent_access_dialog.cc
@@ -67,6 +67,15 @@
   return parent_access_params_->Clone();
 }
 
+void ParentAccessDialog::SetResultAndClose(
+    std::unique_ptr<ParentAccessDialog::Result> result) {
+  DCHECK(!result_);
+  result_ = std::move(result);
+  // This will trigger dialog destruction, which will in turn result in the
+  // callback being called.
+  Close();
+}
+
 parent_access_ui::mojom::ParentAccessParams*
 ParentAccessDialog::GetParentAccessParamsForTest() {
   return parent_access_params_.get();
@@ -81,11 +90,10 @@
       callback_(std::move(callback)) {}
 
 ParentAccessDialog::~ParentAccessDialog() {
-  auto result = std::make_unique<ParentAccessDialog::Result>();
-  // TODO(b/241166361) Return correct ParentAccessDialog::Result based
-  // on result of the flow.
-  result->status = ParentAccessDialog::Result::Status::kCancelled;
-  std::move(callback_).Run(std::move(result));
+  std::move(callback_).Run(
+      result_ ? std::move(result_)
+              /* default status is kCancelled */
+              : std::make_unique<ParentAccessDialog::Result>());
 }
 
 }  // namespace chromeos
diff --git a/chrome/browser/ui/webui/chromeos/parent_access/parent_access_dialog.h b/chrome/browser/ui/webui/chromeos/parent_access/parent_access_dialog.h
index 67836563..d0b4af3 100644
--- a/chrome/browser/ui/webui/chromeos/parent_access/parent_access_dialog.h
+++ b/chrome/browser/ui/webui/chromeos/parent_access/parent_access_dialog.h
@@ -9,6 +9,7 @@
 #include <string>
 
 #include "base/callback_forward.h"
+#include "base/time/time.h"
 #include "chrome/browser/ui/webui/chromeos/parent_access/parent_access_ui.mojom.h"
 #include "chrome/browser/ui/webui/chromeos/system_web_dialog_delegate.h"
 
@@ -34,6 +35,9 @@
 
     // The Parent Access Token.  Only set if status is kVerified.
     std::string parent_access_token = "";
+
+    // The UTC timestamp at which the token expires.
+    base::Time parent_access_token_expire_timestamp_;
   };
 
   // Callback for the result of the dialog.
@@ -60,6 +64,10 @@
   // is made, instead of transferring ownership to the caller.
   parent_access_ui::mojom::ParentAccessParamsPtr CloneParentAccessParams();
 
+  // Used by the ParentAccessUI to set the result of the Parent Access
+  // request and close the dialog.
+  void SetResultAndClose(std::unique_ptr<ParentAccessDialog::Result> result);
+
   parent_access_ui::mojom::ParentAccessParams* GetParentAccessParamsForTest();
 
  protected:
@@ -71,6 +79,9 @@
  private:
   parent_access_ui::mojom::ParentAccessParamsPtr parent_access_params_;
   ParentAccessDialogCallback callback_;
+
+  // The Parent Access result.  Set by the ParentAccessUI
+  std::unique_ptr<Result> result_;
 };
 
 }  // namespace chromeos
diff --git a/chrome/browser/ui/webui/chromeos/parent_access/parent_access_dialog_browsertest.cc b/chrome/browser/ui/webui/chromeos/parent_access/parent_access_dialog_browsertest.cc
index 3a34dc7..952f15dd 100644
--- a/chrome/browser/ui/webui/chromeos/parent_access/parent_access_dialog_browsertest.cc
+++ b/chrome/browser/ui/webui/chromeos/parent_access/parent_access_dialog_browsertest.cc
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include <memory>
+
 #include "chrome/browser/ui/webui/chromeos/parent_access/parent_access_dialog.h"
 
 #include "ash/shell.h"
@@ -20,6 +22,14 @@
 #include "ui/gfx/native_widget_types.h"
 #include "url/gurl.h"
 
+namespace {
+bool DialogResultsEqual(const chromeos::ParentAccessDialog::Result& first,
+                        const chromeos::ParentAccessDialog::Result& second) {
+  return first.status == second.status &&
+         first.parent_access_token == second.parent_access_token;
+}
+}  // namespace
+
 namespace chromeos {
 
 using ParentAccessDialogBrowserTest = ParentAccessChildUserBrowserTestBase;
@@ -75,6 +85,46 @@
   run_loop.Run();
 }
 
+// Verify that the dialog is shown and correctly configured.
+IN_PROC_BROWSER_TEST_F(ParentAccessDialogBrowserTest, SetResultAndClose) {
+  base::RunLoop run_loop;
+
+  auto expected_result = std::make_unique<
+      chromeos::ParentAccessDialog::ParentAccessDialog::Result>();
+  expected_result->status =
+      chromeos::ParentAccessDialog::Result::Status::kApproved;
+  expected_result->parent_access_token = "TEST_TOKEN";
+
+  // Create the callback.
+  ParentAccessDialog::ParentAccessDialogCallback callback = base::BindOnce(
+      [](base::OnceClosure closure,
+         const chromeos::ParentAccessDialog::Result* expected_result,
+         std::unique_ptr<
+             chromeos::ParentAccessDialog::ParentAccessDialog::Result> result)
+          -> void {
+        EXPECT_TRUE(DialogResultsEqual(*result, *expected_result));
+        std::move(closure).Run();
+      },
+      run_loop.QuitClosure(), expected_result.get());
+
+  // Show the dialog.
+  ParentAccessDialog::Show(
+      parent_access_ui::mojom::ParentAccessParams::New(
+          parent_access_ui::mojom::ParentAccessParams::FlowType::kWebsiteAccess,
+          parent_access_ui::mojom::FlowTypeParams::NewWebApprovalsParams(
+              parent_access_ui::mojom::WebApprovalsParams::New())),
+      std::move(callback));
+
+  // Set the result.
+  ParentAccessDialog::GetInstance()->SetResultAndClose(
+      std::move(expected_result));
+
+  run_loop.Run();
+
+  // The dialog instance should be gone after SetResult() is called.
+  EXPECT_EQ(ParentAccessDialog::GetInstance(), nullptr);
+}
+
 IN_PROC_BROWSER_TEST_F(ParentAccessDialogBrowserTest,
                        ErrorOnDialogAlreadyVisible) {
   // Show the dialog.
diff --git a/chrome/browser/ui/webui/chromeos/parent_access/parent_access_ui.mojom b/chrome/browser/ui/webui/chromeos/parent_access/parent_access_ui.mojom
index 4113266a..63b30d0 100644
--- a/chrome/browser/ui/webui/chromeos/parent_access/parent_access_ui.mojom
+++ b/chrome/browser/ui/webui/chromeos/parent_access/parent_access_ui.mojom
@@ -75,4 +75,8 @@
 
   // Returns the FlowTypeParams pertinent to the current parent access flow.
   GetParentAccessParams() => (ParentAccessParams params);
+
+  // When called, indicates that the parent has explicitly approved the request
+  // from the ChromeOS flow, which will cause the Parent Access UI to close.
+  OnParentApproved() => ();
 };
diff --git a/chrome/browser/ui/webui/chromeos/parent_access/parent_access_ui_handler_impl.cc b/chrome/browser/ui/webui/chromeos/parent_access/parent_access_ui_handler_impl.cc
index d5526899..a035bfa8 100644
--- a/chrome/browser/ui/webui/chromeos/parent_access/parent_access_ui_handler_impl.cc
+++ b/chrome/browser/ui/webui/chromeos/parent_access/parent_access_ui_handler_impl.cc
@@ -9,6 +9,7 @@
 
 #include "base/base64.h"
 #include "base/notreached.h"
+#include "base/time/time.h"
 #include "chrome/browser/signin/identity_manager_factory.h"
 #include "chrome/browser/ui/webui/chromeos/parent_access/parent_access_callback.pb.h"
 #include "chrome/browser/ui/webui/chromeos/parent_access/parent_access_dialog.h"
@@ -80,6 +81,19 @@
   return;
 }
 
+void ParentAccessUIHandlerImpl::OnParentApproved(
+    OnParentApprovedCallback callback) {
+  DCHECK(parent_access_token_);
+  auto result = std::make_unique<ParentAccessDialog::Result>();
+  result->status = ParentAccessDialog::Result::Status::kApproved;
+  result->parent_access_token = parent_access_token_->token();
+  // Only keep the seconds, not the nanoseconds.
+  result->parent_access_token_expire_timestamp_ =
+      base::Time::FromDoubleT(parent_access_token_->expire_time().seconds());
+  ParentAccessDialog::GetInstance()->SetResultAndClose(std::move(result));
+  std::move(callback).Run();
+}
+
 const kids::platform::parentaccess::client::proto::ParentAccessToken*
 ParentAccessUIHandlerImpl::GetParentAccessTokenForTest() {
   return parent_access_token_.get();
@@ -113,8 +127,6 @@
     return;
   }
 
-  //  TODO(b/200587178): Communicate parsed callback to ChromeOS caller.
-
   switch (parent_access_callback.callback_case()) {
     case kids::platform::parentaccess::client::proto::ParentAccessCallback::
         CallbackCase::kOnParentVerified:
diff --git a/chrome/browser/ui/webui/chromeos/parent_access/parent_access_ui_handler_impl.h b/chrome/browser/ui/webui/chromeos/parent_access/parent_access_ui_handler_impl.h
index 751ba6f..0889de8 100644
--- a/chrome/browser/ui/webui/chromeos/parent_access/parent_access_ui_handler_impl.h
+++ b/chrome/browser/ui/webui/chromeos/parent_access/parent_access_ui_handler_impl.h
@@ -50,6 +50,7 @@
       const std::string& encoded_parent_access_callback_proto,
       OnParentAccessCallbackReceivedCallback callback) override;
   void GetParentAccessParams(GetParentAccessParamsCallback callback) override;
+  void OnParentApproved(OnParentApprovedCallback callback) override;
 
   // Returns nullptr if the parent was not verified.
   const kids::platform::parentaccess::client::proto::ParentAccessToken*
diff --git a/chrome/browser/ui/webui/chromeos/parent_access/parent_access_ui_handler_impl_browsertest.cc b/chrome/browser/ui/webui/chromeos/parent_access/parent_access_ui_handler_impl_browsertest.cc
index 0987997..859ee055 100644
--- a/chrome/browser/ui/webui/chromeos/parent_access/parent_access_ui_handler_impl_browsertest.cc
+++ b/chrome/browser/ui/webui/chromeos/parent_access/parent_access_ui_handler_impl_browsertest.cc
@@ -2,6 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include <memory>
 #include <string>
 
 #include "chrome/browser/ui/webui/chromeos/parent_access/parent_access_ui_handler_impl.h"
@@ -9,6 +10,8 @@
 #include "base/base64.h"
 #include "base/bind.h"
 #include "base/functional/callback_helpers.h"
+#include "base/run_loop.h"
+#include "base/time/time.h"
 #include "chrome/browser/ui/webui/chromeos/parent_access/parent_access_browsertest_base.h"
 #include "chrome/browser/ui/webui/chromeos/parent_access/parent_access_callback.pb.h"
 #include "chrome/browser/ui/webui/chromeos/parent_access/parent_access_dialog.h"
@@ -131,21 +134,6 @@
 // Verifies that the ParentVerified status is handled correctly.
 IN_PROC_BROWSER_TEST_F(ParentAccessUIHandlerImplBrowserTest,
                        ParentVerifiedParsed) {
-  // Show the parent access dialog.
-  ParentAccessDialog::ShowError error =
-      ParentAccessDialog::Show(GetParamsForWebApprovals(), base::DoNothing());
-
-  // Verify dialog is showing.
-  ASSERT_EQ(error, ParentAccessDialog::ShowError::kNone);
-
-  EXPECT_TRUE(content::WaitForLoadStop(GetContents()));
-
-  ParentAccessUIHandlerImpl* handler = static_cast<ParentAccessUIHandlerImpl*>(
-      GetParentAccessUI()->GetHandlerForTest());
-
-  // Make sure the handler isn't null.
-  ASSERT_NE(handler, nullptr);
-
   // Construct the ParentAccessCallback
   kids::platform::parentaccess::client::proto::ParentAccessCallback
       parent_access_callback;
@@ -157,8 +145,37 @@
   kids::platform::parentaccess::client::proto::Timestamp* expire_time =
       pat->mutable_expire_time();
   expire_time->set_seconds(123456);
+  // Nanoseconds will be ignored.
   expire_time->set_nanos(567890);
 
+  // Show the parent access dialog.
+  base::RunLoop show_dialog_run_loop;
+  ParentAccessDialog::ShowError error = ParentAccessDialog::Show(
+      GetParamsForWebApprovals(),
+      base::BindOnce(
+          [](base::OnceClosure quit_closure,
+             std::unique_ptr<chromeos::ParentAccessDialog::Result> result)
+              -> void {
+            // The dialog result should contain the test token and expire
+            // timestamp.
+            EXPECT_EQ("TEST_TOKEN", result->parent_access_token);
+            EXPECT_EQ(base::Time::FromDoubleT(123456),
+                      result->parent_access_token_expire_timestamp_);
+            std::move(quit_closure).Run();
+          },
+          show_dialog_run_loop.QuitClosure()));
+
+  // Verify dialog is showing.
+  ASSERT_EQ(error, ParentAccessDialog::ShowError::kNone);
+
+  EXPECT_TRUE(content::WaitForLoadStop(GetContents()));
+
+  ParentAccessUIHandlerImpl* handler = static_cast<ParentAccessUIHandlerImpl*>(
+      GetParentAccessUI()->GetHandlerForTest());
+
+  // Make sure the handler isn't null.
+  ASSERT_NE(handler, nullptr);
+
   // Encode the proto in base64.
   std::string encoded_parent_access_callback;
   base::Base64Encode(parent_access_callback.SerializeAsString(),
@@ -183,6 +200,23 @@
 
   // Verify the Parent Access Token was stored.
   EXPECT_THAT(*pat, EqualsProto(*(handler->GetParentAccessTokenForTest())));
+
+  // Send the OnParentApproved event.
+  base::RunLoop parent_approved_run_loop;
+  handler->OnParentApproved(base::BindOnce(
+      [](base::OnceClosure quit_closure) -> void {
+        std::move(quit_closure).Run();
+      },
+      parent_approved_run_loop.QuitClosure()));
+
+  parent_approved_run_loop.Run();
+
+  // Wait for the "Show Dialog" callback to complete, which wil test for the
+  // expected result to be shown.
+  show_dialog_run_loop.Run();
+
+  // The dialog should have been closed
+  EXPECT_EQ(nullptr, ParentAccessDialog::GetInstance());
 }
 
 // Verifies that the ConsentDeclined status is ignored.
diff --git a/chrome/browser/ui/webui/chromeos/user_image_source.cc b/chrome/browser/ui/webui/chromeos/user_image_source.cc
index 232aab5..7afcfe1 100644
--- a/chrome/browser/ui/webui/chromeos/user_image_source.cc
+++ b/chrome/browser/ui/webui/chromeos/user_image_source.cc
@@ -134,6 +134,11 @@
   }
 
   if (user) {
+    // After the default avatar images are moved to cloud, the user
+    // should have image bytes when using default images.
+    CHECK(!ash::features::IsAvatarsCloudMigrationEnabled() ||
+          !user->HasDefaultImage() || user->has_image_bytes());
+
     if (user->has_image_bytes()) {
       if (user->image_format() == user_manager::UserImage::FORMAT_PNG) {
         return GetUserImageFrame(user->image_bytes(), user->image_format(),
@@ -150,12 +155,8 @@
       return LoadUserImageFrameForScaleFactor(IDR_LOGIN_DEFAULT_USER, frame,
                                               scale_factor);
     }
-    // After the default avatar images are moved to cloud, the user
-    // will have image bytes when using default images. Therefore, after
-    // the migration, remove this if case.
+    // After the avatar cloud migration, remove this if case.
     if (user->HasDefaultImage()) {
-      if (ash::features::IsAvatarsCloudMigrationEnabled())
-        LOG(ERROR) << "No image bytes found for default user image";
       return LoadUserImageFrameForScaleFactor(
           default_user_image::GetDefaultImageResourceId(user->image_index()),
           frame, scale_factor);
diff --git a/chrome/browser/ui/webui/connectors_internals/connectors_internals.mojom b/chrome/browser/ui/webui/connectors_internals/connectors_internals.mojom
index 4033443f..00a03d56e 100644
--- a/chrome/browser/ui/webui/connectors_internals/connectors_internals.mojom
+++ b/chrome/browser/ui/webui/connectors_internals/connectors_internals.mojom
@@ -38,9 +38,12 @@
   // Key's algorithm, will be UNKNOWN if `is_key_manager_initialized` is not
   // KEY_LOADED.
   KeyType key_type;
+
+  // URL Base64 encoded SHA-256 hash value for the loaded key's SPKI.
+  string encoded_spki_hash;
 };
 
-struct ZeroTrustState {
+struct DeviceTrustState {
   // Whether the connector is enabled or not.
   bool is_enabled;
 
@@ -54,6 +57,6 @@
 // Browser interface for the page. Consists of calls for data and hooks for
 // interactivity.
 interface PageHandler {
-  // Get state information about the Zero Trust connector.
-  GetZeroTrustState() => (ZeroTrustState state);
+  // Get state information about the Device Trust connector.
+  GetDeviceTrustState() => (DeviceTrustState state);
 };
diff --git a/chrome/browser/ui/webui/connectors_internals/connectors_internals_page_handler.cc b/chrome/browser/ui/webui/connectors_internals/connectors_internals_page_handler.cc
index e007e30..1e3fbe3 100644
--- a/chrome/browser/ui/webui/connectors_internals/connectors_internals_page_handler.cc
+++ b/chrome/browser/ui/webui/connectors_internals/connectors_internals_page_handler.cc
@@ -12,7 +12,7 @@
 #include "chrome/browser/enterprise/connectors/device_trust/device_trust_service_factory.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/webui/connectors_internals/connectors_internals.mojom.h"
-#include "chrome/browser/ui/webui/connectors_internals/zero_trust_utils.h"
+#include "chrome/browser/ui/webui/connectors_internals/device_trust_utils.h"
 #include "mojo/public/cpp/bindings/pending_receiver.h"
 #include "mojo/public/cpp/bindings/receiver.h"
 
@@ -27,21 +27,21 @@
 
 ConnectorsInternalsPageHandler::~ConnectorsInternalsPageHandler() = default;
 
-void ConnectorsInternalsPageHandler::GetZeroTrustState(
-    GetZeroTrustStateCallback callback) {
+void ConnectorsInternalsPageHandler::GetDeviceTrustState(
+    GetDeviceTrustStateCallback callback) {
   auto* device_trust_service =
       DeviceTrustServiceFactory::GetForProfile(profile_);
 
   // The factory will not return a service if the profile is off-the-record, or
   // if the current management configuration is not supported.
   if (!device_trust_service) {
-    auto state = connectors_internals::mojom::ZeroTrustState::New(
+    auto state = connectors_internals::mojom::DeviceTrustState::New(
         false,
         connectors_internals::mojom::KeyInfo::New(
             connectors_internals::mojom::KeyManagerInitializedValue::
                 UNSUPPORTED,
             connectors_internals::mojom::KeyTrustLevel::UNSPECIFIED,
-            connectors_internals::mojom::KeyType::UNKNOWN),
+            connectors_internals::mojom::KeyType::UNKNOWN, std::string()),
         std::string());
     std::move(callback).Run(std::move(state));
     return;
@@ -56,13 +56,13 @@
 }
 
 void ConnectorsInternalsPageHandler::OnSignalsCollected(
-    GetZeroTrustStateCallback callback,
+    GetDeviceTrustStateCallback callback,
     bool is_device_trust_enabled,
     const base::Value::Dict signals) {
   std::string signals_json;
   base::JSONWriter::WriteWithOptions(
       signals, base::JSONWriter::OPTIONS_PRETTY_PRINT, &signals_json);
-  auto state = connectors_internals::mojom::ZeroTrustState::New(
+  auto state = connectors_internals::mojom::DeviceTrustState::New(
       is_device_trust_enabled, utils::GetKeyInfo(), signals_json);
   std::move(callback).Run(std::move(state));
 }
diff --git a/chrome/browser/ui/webui/connectors_internals/connectors_internals_page_handler.h b/chrome/browser/ui/webui/connectors_internals/connectors_internals_page_handler.h
index b970502..f4f00d45 100644
--- a/chrome/browser/ui/webui/connectors_internals/connectors_internals_page_handler.h
+++ b/chrome/browser/ui/webui/connectors_internals/connectors_internals_page_handler.h
@@ -33,9 +33,9 @@
 
  private:
   // connectors_internals::mojom::ConnectorsInternalsPageHandler
-  void GetZeroTrustState(GetZeroTrustStateCallback callback) override;
+  void GetDeviceTrustState(GetDeviceTrustStateCallback callback) override;
 
-  void OnSignalsCollected(GetZeroTrustStateCallback callback,
+  void OnSignalsCollected(GetDeviceTrustStateCallback callback,
                           bool is_device_trust_enabled,
                           const base::Value::Dict signals);
 
diff --git a/chrome/browser/ui/webui/connectors_internals/connectors_internals_ui.cc b/chrome/browser/ui/webui/connectors_internals/connectors_internals_ui.cc
index 2748cab..e1aae1f 100644
--- a/chrome/browser/ui/webui/connectors_internals/connectors_internals_ui.cc
+++ b/chrome/browser/ui/webui/connectors_internals/connectors_internals_ui.cc
@@ -29,7 +29,7 @@
   Profile* profile = Profile::FromWebUI(web_ui);
 
   source->AddBoolean("isOtr", profile->IsOffTheRecord());
-  source->AddBoolean("zeroTrustConnectorEnabled",
+  source->AddBoolean("deviceTrustConnectorEnabled",
                      IsDeviceTrustConnectorFeatureEnabled());
 
   webui::SetupWebUIDataSource(
diff --git a/chrome/browser/ui/webui/connectors_internals/zero_trust_utils.cc b/chrome/browser/ui/webui/connectors_internals/device_trust_utils.cc
similarity index 81%
rename from chrome/browser/ui/webui/connectors_internals/zero_trust_utils.cc
rename to chrome/browser/ui/webui/connectors_internals/device_trust_utils.cc
index dd859b5..1013b64e 100644
--- a/chrome/browser/ui/webui/connectors_internals/zero_trust_utils.cc
+++ b/chrome/browser/ui/webui/connectors_internals/device_trust_utils.cc
@@ -2,16 +2,18 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "chrome/browser/ui/webui/connectors_internals/zero_trust_utils.h"
+#include "chrome/browser/ui/webui/connectors_internals/device_trust_utils.h"
 
 #include "build/build_config.h"
 
 #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC)
+#include "base/base64url.h"
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/policy/chrome_browser_policy_connector.h"
 #include "components/enterprise/browser/controller/chrome_browser_cloud_management_controller.h"
 #include "components/enterprise/browser/device_trust/device_trust_key_manager.h"
 #include "components/policy/proto/device_management_backend.pb.h"
+#include "crypto/sha2.h"
 #include "crypto/signature_verifier.h"
 
 using BPKUR = enterprise_management::BrowserPublicKeyUploadRequest;
@@ -48,6 +50,14 @@
   }
 }
 
+std::string HashAndEncodeString(const std::string& spki_bytes) {
+  std::string encoded_string;
+  base::Base64UrlEncode(crypto::SHA256HashString(spki_bytes),
+                        base::Base64UrlEncodePolicy::OMIT_PADDING,
+                        &encoded_string);
+  return encoded_string;
+}
+
 #endif  // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC)
 
 }  // namespace
@@ -63,19 +73,20 @@
       return connectors_internals::mojom::KeyInfo::New(
           connectors_internals::mojom::KeyManagerInitializedValue::KEY_LOADED,
           ParseTrustLevel(metadata->trust_level),
-          AlgorithmToType(metadata->algorithm));
+          AlgorithmToType(metadata->algorithm),
+          HashAndEncodeString(metadata->spki_bytes));
     } else {
       return connectors_internals::mojom::KeyInfo::New(
           connectors_internals::mojom::KeyManagerInitializedValue::NO_KEY,
           connectors_internals::mojom::KeyTrustLevel::UNSPECIFIED,
-          connectors_internals::mojom::KeyType::UNKNOWN);
+          connectors_internals::mojom::KeyType::UNKNOWN, std::string());
     }
   }
 #endif  // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC)
   return connectors_internals::mojom::KeyInfo::New(
       connectors_internals::mojom::KeyManagerInitializedValue::UNSUPPORTED,
       connectors_internals::mojom::KeyTrustLevel::UNSPECIFIED,
-      connectors_internals::mojom::KeyType::UNKNOWN);
+      connectors_internals::mojom::KeyType::UNKNOWN, std::string());
 }
 
 }  // namespace utils
diff --git a/chrome/browser/ui/webui/connectors_internals/zero_trust_utils.h b/chrome/browser/ui/webui/connectors_internals/device_trust_utils.h
similarity index 68%
rename from chrome/browser/ui/webui/connectors_internals/zero_trust_utils.h
rename to chrome/browser/ui/webui/connectors_internals/device_trust_utils.h
index 359c0d74..5f21280 100644
--- a/chrome/browser/ui/webui/connectors_internals/zero_trust_utils.h
+++ b/chrome/browser/ui/webui/connectors_internals/device_trust_utils.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_BROWSER_UI_WEBUI_CONNECTORS_INTERNALS_ZERO_TRUST_UTILS_H_
-#define CHROME_BROWSER_UI_WEBUI_CONNECTORS_INTERNALS_ZERO_TRUST_UTILS_H_
+#ifndef CHROME_BROWSER_UI_WEBUI_CONNECTORS_INTERNALS_DEVICE_TRUST_UTILS_H_
+#define CHROME_BROWSER_UI_WEBUI_CONNECTORS_INTERNALS_DEVICE_TRUST_UTILS_H_
 
 #include "chrome/browser/ui/webui/connectors_internals/connectors_internals.mojom.h"
 
@@ -17,4 +17,4 @@
 }  // namespace utils
 }  // namespace enterprise_connectors
 
-#endif  // CHROME_BROWSER_UI_WEBUI_CONNECTORS_INTERNALS_ZERO_TRUST_UTILS_H_
+#endif  // CHROME_BROWSER_UI_WEBUI_CONNECTORS_INTERNALS_DEVICE_TRUST_UTILS_H_
diff --git a/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.cc b/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.cc
index e0304c1..22ce0bcf 100644
--- a/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.cc
+++ b/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.cc
@@ -137,11 +137,8 @@
       "modulesCartStepOneUseStaticContent",
       commerce::kNtpChromeCartModuleDiscountConsentNtpStepOneUseStaticContent
           .Get());
-  // This does not have a raw string resource.
-  source->AddString(
-      "modulesCartStepOneStaticContent",
-      commerce::kNtpChromeCartModuleDiscountConsentNtpStepOneStaticContent
-          .Get());
+  source->AddLocalizedString("modulesCartStepOneStaticContent",
+                             IDS_NTP_CART_DISCOUNT_STEP_ONE_CONTENT);
 
   AddRawStringOrDefault(
       source, "modulesCartConsentStepOneOneMerchantContent",
@@ -287,6 +284,18 @@
 
       // Lens image search.
       {"lensSearchButtonLabel", IDS_TOOLTIP_LENS_SEARCH},
+      {"lensSearchUploadDialogCloseButtonLabel",
+       IDS_LENS_SEARCH_UPLOAD_DIALOG_CLOSE_BUTTON_LABEL},
+      {"lensSearchUploadDialogTitle", IDS_LENS_SEARCH_UPLOAD_DIALOG_TITLE},
+      {"lensSearchUploadDialogDragTitle",
+       IDS_LENS_SEARCH_UPLOAD_DIALOG_DRAG_TITLE},
+      {"lensSearchUploadDialogUploadFileTitle",
+       IDS_LENS_SEARCH_UPLOAD_DIALOG_UPLOAD_FILE_TITLE},
+      {"lensSearchUploadDialogOrText", IDS_LENS_SEARCH_UPLOAD_DIALOG_OR_TEXT},
+      {"lensSearchUploadDialogTextPlaceholder",
+       IDS_LENS_SEARCH_UPLOAD_DIALOG_TEXT_PLACEHOLDER},
+      {"lensSearchUploadDialogSearchButtonLabel",
+       IDS_LENS_SEARCH_UPLOAD_DIALOG_SEARCH_BUTTON_LABEL},
 
       // Logo/doodle.
       {"copyLink", IDS_NTP_DOODLE_SHARE_DIALOG_COPY_LABEL},
diff --git a/chrome/browser/ui/webui/settings/ash/bluetooth_handler.cc b/chrome/browser/ui/webui/settings/ash/bluetooth_handler.cc
index 40dc431..96963e00 100644
--- a/chrome/browser/ui/webui/settings/ash/bluetooth_handler.cc
+++ b/chrome/browser/ui/webui/settings/ash/bluetooth_handler.cc
@@ -14,7 +14,6 @@
 namespace chromeos {
 namespace {
 
-const char kIsDeviceBlockedByPolicy[] = "isDeviceBlockedByPolicy";
 const char kRequestFastPairDeviceSupport[] =
     "requestFastPairDeviceSupportStatus";
 
@@ -32,10 +31,6 @@
 
 void BluetoothHandler::RegisterMessages() {
   web_ui()->RegisterMessageCallback(
-      kIsDeviceBlockedByPolicy,
-      base::BindRepeating(&BluetoothHandler::HandleIsDeviceBlockedByPolicy,
-                          base::Unretained(this)));
-  web_ui()->RegisterMessageCallback(
       kRequestFastPairDeviceSupport,
       base::BindRepeating(&BluetoothHandler::HandleRequestFastPairDeviceSupport,
                           base::Unretained(this)));
@@ -51,30 +46,6 @@
   bluetooth_adapter_ = std::move(adapter);
 }
 
-void BluetoothHandler::HandleIsDeviceBlockedByPolicy(
-    const base::Value::List& args) {
-  AllowJavascript();
-  CHECK_EQ(2U, args.size());
-  const std::string& callback_id = args[0].GetString();
-  const std::string& address = args[1].GetString();
-
-  if (!bluetooth_adapter_) {
-    BLUETOOTH_LOG(EVENT) << "Bluetooth adapter not available.";
-    ResolveJavascriptCallback(base::Value(callback_id), base::Value(false));
-    return;
-  }
-
-  device::BluetoothDevice* device = bluetooth_adapter_->GetDevice(address);
-  if (!device) {
-    BLUETOOTH_LOG(EVENT) << "No device found for address.";
-    ResolveJavascriptCallback(base::Value(callback_id), base::Value(false));
-    return;
-  }
-
-  ResolveJavascriptCallback(base::Value(callback_id),
-                            base::Value(device->IsBlockedByPolicy()));
-}
-
 void BluetoothHandler::HandleRequestFastPairDeviceSupport(
     const base::Value::List& args) {
   AllowJavascript();
diff --git a/chrome/browser/ui/webui/settings/ash/bluetooth_handler.h b/chrome/browser/ui/webui/settings/ash/bluetooth_handler.h
index c3beec0..f4886dba 100644
--- a/chrome/browser/ui/webui/settings/ash/bluetooth_handler.h
+++ b/chrome/browser/ui/webui/settings/ash/bluetooth_handler.h
@@ -32,7 +32,6 @@
   void BluetoothDeviceAdapterReady(
       scoped_refptr<device::BluetoothAdapter> adapter);
 
-  void HandleIsDeviceBlockedByPolicy(const base::Value::List& args);
   void HandleRequestFastPairDeviceSupport(const base::Value::List& args);
 
   scoped_refptr<device::BluetoothAdapter> bluetooth_adapter_;
diff --git a/chrome/browser/ui/webui/settings/ash/bluetooth_handler_unittest.cc b/chrome/browser/ui/webui/settings/ash/bluetooth_handler_unittest.cc
index f73326c5..bbd48ae1 100644
--- a/chrome/browser/ui/webui/settings/ash/bluetooth_handler_unittest.cc
+++ b/chrome/browser/ui/webui/settings/ash/bluetooth_handler_unittest.cc
@@ -7,7 +7,6 @@
 #include "content/public/test/test_web_ui.h"
 #include "device/bluetooth/bluetooth_adapter_factory.h"
 #include "device/bluetooth/test/mock_bluetooth_adapter.h"
-#include "device/bluetooth/test/mock_bluetooth_device.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -16,8 +15,6 @@
 
 namespace {
 
-const char kDeviceAddress[] = "12:34:56:78:90:12";
-
 class TestBluetoothHandler : public BluetoothHandler {
  public:
   TestBluetoothHandler() : BluetoothHandler() {}
@@ -42,13 +39,6 @@
   void SetUp() override {
     mock_adapter_ = new testing::NiceMock<device::MockBluetoothAdapter>();
     device::BluetoothAdapterFactory::SetAdapterForTesting(mock_adapter_);
-    mock_device_ =
-        std::make_unique<testing::NiceMock<device::MockBluetoothDevice>>(
-            mock_adapter_.get(), /*bluetooth_class=*/0,
-            /*name=*/"Bluetooth 2.0 Mouse", kDeviceAddress, /*paired=*/false,
-            /*connected=*/false);
-    EXPECT_CALL(*mock_adapter_, GetDevice(testing::_))
-        .WillRepeatedly(testing::Return(mock_device_.get()));
 
     test_web_ui_ = std::make_unique<content::TestWebUI>();
     handler_ = std::make_unique<TestBluetoothHandler>();
@@ -62,37 +52,13 @@
     return *test_web_ui_->call_data()[index];
   }
 
-  std::unique_ptr<device::MockBluetoothDevice> mock_device_;
-
  private:
   scoped_refptr<testing::NiceMock<device::MockBluetoothAdapter>> mock_adapter_;
   std::unique_ptr<content::TestWebUI> test_web_ui_;
   std::unique_ptr<TestBluetoothHandler> handler_;
 };
 
-TEST_F(BluetoothHandlerTest, GetIsDeviceBlockedByPolicy) {
-  mock_device_->SetIsBlockedByPolicy(true);
-
-  size_t call_data_count_before_call = test_web_ui()->call_data().size();
-
-  base::Value::List args;
-  args.Append("handlerFunctionName");
-  args.Append(kDeviceAddress);
-  test_web_ui()->HandleReceivedMessage("isDeviceBlockedByPolicy", args);
-
-  ASSERT_EQ(call_data_count_before_call + 1u,
-            test_web_ui()->call_data().size());
-  const content::TestWebUI::CallData& call_data =
-      CallDataAtIndex(call_data_count_before_call);
-  EXPECT_EQ("cr.webUIResponse", call_data.function_name());
-  EXPECT_EQ("handlerFunctionName", call_data.arg1()->GetString());
-  ASSERT_TRUE(call_data.arg2()->GetBool());
-  EXPECT_TRUE(call_data.arg3()->GetBool());
-}
-
 TEST_F(BluetoothHandlerTest, GetRequestFastPairDeviceSupport) {
-  mock_device_->SetIsBlockedByPolicy(true);
-
   size_t call_data_count_before_call = test_web_ui()->call_data().size();
 
   base::Value::List args;
diff --git a/chrome/browser/ui/webui/settings/ash/bluetooth_section.cc b/chrome/browser/ui/webui/settings/ash/bluetooth_section.cc
index b75d193..eab4e845 100644
--- a/chrome/browser/ui/webui/settings/ash/bluetooth_section.cc
+++ b/chrome/browser/ui/webui/settings/ash/bluetooth_section.cc
@@ -85,30 +85,6 @@
   return *tags;
 }
 
-const std::vector<SearchConcept>& GetBluetoothConnectableSearchConcepts() {
-  static const base::NoDestructor<std::vector<SearchConcept>> tags({
-      {IDS_OS_SETTINGS_TAG_BLUETOOTH_CONNECT,
-       mojom::kBluetoothDevicesSubpagePath,
-       mojom::SearchResultIcon::kBluetooth,
-       mojom::SearchResultDefaultRank::kMedium,
-       mojom::SearchResultType::kSetting,
-       {.setting = mojom::Setting::kBluetoothConnectToDevice}},
-  });
-  return *tags;
-}
-
-const std::vector<SearchConcept>& GetBluetoothConnectedSearchConcepts() {
-  static const base::NoDestructor<std::vector<SearchConcept>> tags({
-      {IDS_OS_SETTINGS_TAG_BLUETOOTH_DISCONNECT,
-       mojom::kBluetoothDevicesSubpagePath,
-       mojom::SearchResultIcon::kBluetooth,
-       mojom::SearchResultDefaultRank::kMedium,
-       mojom::SearchResultType::kSetting,
-       {.setting = mojom::Setting::kBluetoothDisconnectFromDevice}},
-  });
-  return *tags;
-}
-
 const std::vector<SearchConcept>& GetBluetoothPairableSearchConcepts() {
   static const base::NoDestructor<std::vector<SearchConcept>> tags({
       {IDS_OS_SETTINGS_TAG_BLUETOOTH_PAIR,
@@ -121,19 +97,6 @@
   return *tags;
 }
 
-const std::vector<SearchConcept>& GetBluetoothPairedSearchConcepts() {
-  static const base::NoDestructor<std::vector<SearchConcept>> tags({
-      {IDS_OS_SETTINGS_TAG_BLUETOOTH_UNPAIR,
-       mojom::kBluetoothDevicesSubpagePath,
-       mojom::SearchResultIcon::kBluetooth,
-       mojom::SearchResultDefaultRank::kMedium,
-       mojom::SearchResultType::kSetting,
-       {.setting = mojom::Setting::kBluetoothUnpairDevice},
-       {IDS_OS_SETTINGS_TAG_BLUETOOTH_UNPAIR_ALT1, SearchConcept::kAltTagEnd}},
-  });
-  return *tags;
-}
-
 const std::vector<SearchConcept>& GetFastPairOffSearchConcepts() {
   static const base::NoDestructor<std::vector<SearchConcept>> tags({
       {IDS_OS_SETTINGS_TAG_FAST_PAIR_TURN_ON,
@@ -195,8 +158,7 @@
                        weak_ptr_factory_.GetWeakPtr()));
   }
 
-  if (chromeos::features::IsBluetoothRevampEnabled() &&
-      ash::features::IsFastPairEnabled()) {
+  if (ash::features::IsFastPairEnabled()) {
     pref_change_registrar_->Init(pref_service_);
     pref_change_registrar_->Add(
         ash::prefs::kFastPairEnabled,
@@ -213,12 +175,7 @@
 void BluetoothSection::AddLoadTimeData(content::WebUIDataSource* html_source) {
   static constexpr webui::LocalizedString kLocalizedStrings[] = {
       {"bluetoothConnected", IDS_SETTINGS_BLUETOOTH_CONNECTED},
-      {"bluetoothConnectedWithBattery",
-       IDS_SETTINGS_BLUETOOTH_CONNECTED_WITH_BATTERY},
       {"bluetoothConnecting", IDS_SETTINGS_BLUETOOTH_CONNECTING},
-      {"bluetoothDeviceListPaired", IDS_SETTINGS_BLUETOOTH_DEVICE_LIST_PAIRED},
-      {"bluetoothDeviceListUnpaired",
-       IDS_SETTINGS_BLUETOOTH_DEVICE_LIST_UNPAIRED},
       {"bluetoothConnect", IDS_SETTINGS_BLUETOOTH_CONNECT},
       {"bluetoothDisconnect", IDS_SETTINGS_BLUETOOTH_DISCONNECT},
       {"bluetoothDeviceDetailConnected",
@@ -282,9 +239,6 @@
        IDS_SETTINGS_BLUETOOTH_TOGGLE_ACCESSIBILITY_LABEL},
       {"bluetoothExpandA11yLabel",
        IDS_SETTINGS_BLUETOOTH_EXPAND_ACCESSIBILITY_LABEL},
-      {"bluetoothNoDevices", IDS_SETTINGS_BLUETOOTH_NO_DEVICES},
-      {"bluetoothNoDevicesFound", IDS_SETTINGS_BLUETOOTH_NO_DEVICES_FOUND},
-      {"bluetoothNotConnected", IDS_SETTINGS_BLUETOOTH_NOT_CONNECTED},
       {"bluetoothPageTitle", IDS_SETTINGS_BLUETOOTH},
       {"bluetoothSummaryPageConnectedA11yOneDevice",
        IDS_SETTINGS_BLUETOOTH_SUMMARY_PAGE_CONNECTED_A11Y_ONE_DEVICE},
@@ -331,8 +285,6 @@
       {"bluetoothA11yDeviceNamedBatteryInfoRightBud",
        IDS_BLUETOOTH_A11Y_DEVICE_NAMED_BATTERY_INFO_RIGHT_BUD},
       {"bluetoothA11yDeviceName", IDS_BLUETOOTH_A11Y_DEVICE_NAME},
-      {"bluetoothPairDevicePageTitle",
-       IDS_SETTINGS_BLUETOOTH_PAIR_DEVICE_TITLE},
       {"bluetoothRemove", IDS_SETTINGS_BLUETOOTH_REMOVE},
       {"bluetoothManaged", IDS_SETTINGS_BLUETOOTH_MANAGED},
       {"enableFastPairLabel", IDS_BLUETOOTH_ENABLE_FAST_PAIR_LABEL},
@@ -355,36 +307,6 @@
       {"bluetoothDevicesDialogTitle", IDS_SETTINGS_FORGET_DEVICE_DIALOG_TITLE},
       {"bluetoothPrimaryUserControlled",
        IDS_SETTINGS_BLUETOOTH_PRIMARY_USER_CONTROLLED},
-      {"bluetoothDeviceWithConnectionStatus",
-       IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_AND_CONNECTION_STATUS},
-      {"bluetoothDeviceType_computer",
-       IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_COMPUTER},
-      {"bluetoothDeviceType_phone",
-       IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_PHONE},
-      {"bluetoothDeviceType_modem",
-       IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_MODEM},
-      {"bluetoothDeviceType_audio",
-       IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_AUDIO},
-      {"bluetoothDeviceType_carAudio",
-       IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_CAR_AUDIO},
-      {"bluetoothDeviceType_video",
-       IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_VIDEO},
-      {"bluetoothDeviceType_peripheral",
-       IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_PERIPHERAL},
-      {"bluetoothDeviceType_joystick",
-       IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_JOYSTICK},
-      {"bluetoothDeviceType_gamepad",
-       IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_GAMEPAD},
-      {"bluetoothDeviceType_keyboard",
-       IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_KEYBOARD},
-      {"bluetoothDeviceType_mouse",
-       IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_MOUSE},
-      {"bluetoothDeviceType_tablet",
-       IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_TABLET},
-      {"bluetoothDeviceType_keyboardMouseCombo",
-       IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_KEYBOARD_MOUSE_COMBO},
-      {"bluetoothDeviceType_unknown",
-       IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_UNKNOWN},
       {"bluetoothDeviceListCurrentlyConnected",
        IDS_BLUETOOTH_DEVICE_LIST_CURRENTLY_CONNECTED},
       {"bluetoothDeviceListPreviouslyConnected",
@@ -456,10 +378,6 @@
       mojom::Setting::kBluetoothOnOff, mojom::Setting::kBluetoothPairDevice,
       mojom::Setting::kBluetoothUnpairDevice, mojom::Setting::kFastPairOnOff,
       mojom::Setting::kFastPairSavedDevices};
-  static constexpr mojom::Setting kBluetoothDevicesSettingsLegacy[] = {
-      mojom::Setting::kBluetoothConnectToDevice,
-      mojom::Setting::kBluetoothDisconnectFromDevice,
-  };
 
   RegisterNestedSettingBulk(mojom::Subpage::kBluetoothDevices,
                             kBluetoothDevicesSettings, generator);
@@ -470,10 +388,6 @@
                                    mojom::SearchResultIcon::kBluetooth,
                                    mojom::SearchResultDefaultRank::kMedium,
                                    mojom::kBluetoothDeviceDetailSubpagePath);
-  RegisterNestedSettingBulk(ash::features::IsBluetoothRevampEnabled()
-                                ? mojom::Subpage::kBluetoothDeviceDetail
-                                : mojom::Subpage::kBluetoothDevices,
-                            kBluetoothDevicesSettingsLegacy, generator);
 
   generator->RegisterNestedSubpage(IDS_SETTINGS_BLUETOOTH_SAVED_DEVICES,
                                    mojom::Subpage::kBluetoothSavedDevices,
@@ -529,18 +443,14 @@
   updater.RemoveSearchTags(GetFastPairOnSearchConcepts());
   updater.RemoveSearchTags(GetFastPairOffSearchConcepts());
   updater.RemoveSearchTags(GetFastPairSavedDevicesSearchConcepts());
-  updater.RemoveSearchTags(GetBluetoothConnectableSearchConcepts());
-  updater.RemoveSearchTags(GetBluetoothConnectedSearchConcepts());
   updater.RemoveSearchTags(GetBluetoothPairableSearchConcepts());
-  updater.RemoveSearchTags(GetBluetoothPairedSearchConcepts());
 
   if (!bluetooth_adapter_->IsPresent())
     return;
 
   updater.AddSearchTags(GetBluetoothSearchConcepts());
 
-  if (ash::features::IsFastPairEnabled() &&
-      ash::features::IsBluetoothRevampEnabled()) {
+  if (ash::features::IsFastPairEnabled()) {
     if (pref_service_->GetBoolean(ash::prefs::kFastPairEnabled)) {
       updater.AddSearchTags(GetFastPairOnSearchConcepts());
     } else {
@@ -558,46 +468,7 @@
   }
 
   updater.AddSearchTags(GetBluetoothOnSearchConcepts());
-
-  // Always include the option to pair devices, but skip any device-specific
-  // search options since we have no way to determine which device the user is
-  // interested in.
-  if (ash::features::IsBluetoothRevampEnabled()) {
-    updater.AddSearchTags(GetBluetoothPairableSearchConcepts());
-    return;
-  }
-
-  // Filter devices so that only those shown in the UI are returned. Note that
-  // passing |max_devices| of 0 indicates that there is no maximum.
-  device::BluetoothAdapter::DeviceList devices =
-      device::FilterBluetoothDeviceList(bluetooth_adapter_->GetDevices(),
-                                        device::BluetoothFilterType::KNOWN,
-                                        /*max_devices=*/0);
-
-  bool connectable_device_exists = false;
-  bool connected_device_exists = false;
-  bool pairable_device_exists = false;
-  bool paired_device_exists = false;
-  for (const device::BluetoothDevice* device : devices) {
-    // Note: Device must be paired to be connectable.
-    if (device->IsPaired() && device->IsConnectable() && !device->IsConnected())
-      connectable_device_exists = true;
-    if (device->IsConnected())
-      connected_device_exists = true;
-    if (device->IsPairable() && !device->IsPaired())
-      pairable_device_exists = true;
-    if (device->IsPaired())
-      paired_device_exists = true;
-  }
-
-  if (connectable_device_exists)
-    updater.AddSearchTags(GetBluetoothConnectableSearchConcepts());
-  if (connected_device_exists)
-    updater.AddSearchTags(GetBluetoothConnectedSearchConcepts());
-  if (pairable_device_exists)
-    updater.AddSearchTags(GetBluetoothPairableSearchConcepts());
-  if (paired_device_exists)
-    updater.AddSearchTags(GetBluetoothPairedSearchConcepts());
+  updater.AddSearchTags(GetBluetoothPairableSearchConcepts());
 }
 
 }  // namespace settings
diff --git a/chrome/browser/ui/webui/settings/ash/os_settings_ui.cc b/chrome/browser/ui/webui/settings/ash/os_settings_ui.cc
index d98bafc..ff61a220 100644
--- a/chrome/browser/ui/webui/settings/ash/os_settings_ui.cc
+++ b/chrome/browser/ui/webui/settings/ash/os_settings_ui.cc
@@ -223,7 +223,6 @@
 void OSSettingsUI::BindInterface(
     mojo::PendingReceiver<ash::bluetooth_config::mojom::CrosBluetoothConfig>
         receiver) {
-  DCHECK(features::IsBluetoothRevampEnabled());
   ash::GetBluetoothConfigService(std::move(receiver));
 }
 
diff --git a/chrome/browser/ui/webui/settings/chromeos/constants/setting.mojom b/chrome/browser/ui/webui/settings/chromeos/constants/setting.mojom
index b78971a..8fbf1e4 100644
--- a/chrome/browser/ui/webui/settings/chromeos/constants/setting.mojom
+++ b/chrome/browser/ui/webui/settings/chromeos/constants/setting.mojom
@@ -42,8 +42,8 @@
 
   // Bluetooth section.
   kBluetoothOnOff = 100,
-  kBluetoothConnectToDevice = 101,
-  kBluetoothDisconnectFromDevice = 102,
+  // [Deprecated] kBluetoothConnectToDevice = 101,
+  // [Deprecated] kBluetoothDisconnectFromDevice = 102,
   kBluetoothPairDevice = 103,
   kBluetoothUnpairDevice = 104,
   kFastPairOnOff = 105,
diff --git a/chrome/browser/ui/webui/settings/site_settings_handler.cc b/chrome/browser/ui/webui/settings/site_settings_handler.cc
index 0efb4f89..7392090 100644
--- a/chrome/browser/ui/webui/settings/site_settings_handler.cc
+++ b/chrome/browser/ui/webui/settings/site_settings_handler.cc
@@ -1595,12 +1595,13 @@
 void SiteSettingsHandler::HandleIgnoreOriginForNotificationPermissionReview(
     const base::Value::List& args) {
   CHECK_EQ(1U, args.size());
-  const std::string& origin = args[0].GetString();
+  const ContentSettingsPattern primary_pattern =
+      ContentSettingsPattern::FromString(args[0].GetString());
 
   auto* service =
       NotificationPermissionsReviewServiceFactory::GetForProfile(profile_);
-  service->AddOriginToNotificationPermissionReviewBlocklist(
-      url::Origin::Create(GURL(origin)));
+  service->AddPatternToNotificationPermissionReviewBlocklist(
+      primary_pattern, ContentSettingsPattern::Wildcard());
 
   FireWebUIListener("notification-permission-review-list-changed",
                     PopulateNotificationPermissionReviewData());
@@ -2076,15 +2077,21 @@
 
   base::Value::List result;
   for (const auto& notification_permission : notification_permissions) {
+    // Converting primary pattern to GURL should always be valid, since
+    // Notification Permission Review list only contains single origins. Those
+    // are filtered in
+    // NotificationPermissionsReviewService::GetNotificationSiteListForReview.
+    GURL url = GURL(notification_permission.primary_pattern.ToString());
+    DCHECK(url.is_valid());
     if (!ShouldAddToNotificationPermissionReviewList(
-            engagement_service, notification_permission.origin.GetURL(),
+            engagement_service, url,
             notification_permission.notification_count)) {
       continue;
     }
 
     base::Value::Dict permission;
     permission.Set(site_settings::kOrigin,
-                   notification_permission.origin.Serialize());
+                   notification_permission.primary_pattern.ToString());
 
     std::string notification_info_string =
         base::UTF16ToUTF8(l10n_util::GetPluralStringFUTF16(
diff --git a/chrome/browser/ui/webui/settings/site_settings_handler_unittest.cc b/chrome/browser/ui/webui/settings/site_settings_handler_unittest.cc
index 7457793a..1b69b1b 100644
--- a/chrome/browser/ui/webui/settings/site_settings_handler_unittest.cc
+++ b/chrome/browser/ui/webui/settings/site_settings_handler_unittest.cc
@@ -3228,16 +3228,17 @@
   // list.
   HostContentSettingsMap* map =
       HostContentSettingsMapFactory::GetForProfile(profile());
-  GURL hosts[] = {GURL("https://google.com/"), GURL("https://www.youtube.com/"),
-                  GURL("https://www.example.com/")};
+  GURL urls[] = {GURL("https://google.com:443"),
+                 GURL("https://www.youtube.com:443"),
+                 GURL("https://www.example.com:443")};
 
-  map->SetContentSettingDefaultScope(hosts[0], GURL(),
+  map->SetContentSettingDefaultScope(urls[0], GURL(),
                                      ContentSettingsType::NOTIFICATIONS,
                                      CONTENT_SETTING_ALLOW);
-  map->SetContentSettingDefaultScope(hosts[1], GURL(),
+  map->SetContentSettingDefaultScope(urls[1], GURL(),
                                      ContentSettingsType::NOTIFICATIONS,
                                      CONTENT_SETTING_ALLOW);
-  map->SetContentSettingDefaultScope(hosts[2], GURL(),
+  map->SetContentSettingDefaultScope(urls[2], GURL(),
                                      ContentSettingsType::NOTIFICATIONS,
                                      CONTENT_SETTING_ALLOW);
 
@@ -3253,37 +3254,37 @@
       site_engagement::SiteEngagementServiceFactory::GetForProfile(profile());
 
   // Set a host to have minimum engagement. This should be in review list.
-  RecordNotification(notification_engagement_service, hosts[0], 1);
+  RecordNotification(notification_engagement_service, urls[0], 1);
   site_engagement::SiteEngagementScore score =
-      site_engagement_service->CreateEngagementScore(hosts[0]);
+      site_engagement_service->CreateEngagementScore(urls[0]);
   score.Reset(0.5, GetReferenceTime());
   score.Commit();
   EXPECT_EQ(blink::mojom::EngagementLevel::MINIMAL,
-            site_engagement_service->GetEngagementLevel(hosts[0]));
+            site_engagement_service->GetEngagementLevel(urls[0]));
 
   // Set a host to have large number of notifications, but low engagement. This
   // should be in review list.
-  RecordNotification(notification_engagement_service, hosts[1], 4);
-  site_engagement_service->AddPointsForTesting(hosts[1], 1.0);
+  RecordNotification(notification_engagement_service, urls[1], 4);
+  site_engagement_service->AddPointsForTesting(urls[1], 1.0);
   EXPECT_EQ(blink::mojom::EngagementLevel::LOW,
-            site_engagement_service->GetEngagementLevel(hosts[1]));
+            site_engagement_service->GetEngagementLevel(urls[1]));
 
   // Set a host to have medium engagement and high notification count. This
   // should not be in review list.
-  RecordNotification(notification_engagement_service, hosts[2], 4);
-  site_engagement_service->AddPointsForTesting(hosts[2], 50.0);
+  RecordNotification(notification_engagement_service, urls[2], 4);
+  site_engagement_service->AddPointsForTesting(urls[2], 50.0);
   EXPECT_EQ(blink::mojom::EngagementLevel::MEDIUM,
-            site_engagement_service->GetEngagementLevel(hosts[2]));
+            site_engagement_service->GetEngagementLevel(urls[2]));
 
   const auto& notification_permissions =
       handler()->PopulateNotificationPermissionReviewData();
   // Check there are 2 notification permissions in the list.
   EXPECT_EQ(2UL, notification_permissions.size());
   // Check minimal engagement item is in the list.
-  EXPECT_EQ("https://google.com",
+  EXPECT_EQ("https://google.com:443",
             *notification_permissions[0].FindStringKey(site_settings::kOrigin));
   // Check low engagement item is in the list.
-  EXPECT_EQ("https://www.youtube.com",
+  EXPECT_EQ("https://www.youtube.com:443",
             *notification_permissions[1].FindStringKey(site_settings::kOrigin));
 }
 }  // namespace settings
diff --git a/chrome/browser/ui/webui/side_panel/read_anything/read_anything_prefs.cc b/chrome/browser/ui/webui/side_panel/read_anything/read_anything_prefs.cc
index f3db09c3..d00226a 100644
--- a/chrome/browser/ui/webui/side_panel/read_anything/read_anything_prefs.cc
+++ b/chrome/browser/ui/webui/side_panel/read_anything/read_anything_prefs.cc
@@ -23,6 +23,10 @@
 const char kAccessibilityReadAnythingColorInfo[] =
     "settings.a11y.read_anything.color_info";
 
+// Int value to represent the user's preferred line spacing setting.
+const char kAccessibilityReadAnythingLineSpacing[] =
+    "settings.a11y.read_anything.line_spacing";
+
 // Int value to represent the user's preferred letter spacing setting.
 const char kAccessibilityReadAnythingLetterSpacing[] =
     "settings.a11y.read_anything.letter_spacing";
@@ -42,8 +46,12 @@
       (int)read_anything::mojom::Colors::kDefaultValue,
       user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
   registry->RegisterIntegerPref(
+      prefs::kAccessibilityReadAnythingLineSpacing,
+      (int)read_anything::mojom::Spacing::kDefault,
+      user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
+  registry->RegisterIntegerPref(
       prefs::kAccessibilityReadAnythingLetterSpacing,
-      (int)read_anything::mojom::Spacing::kDefaultValue,
+      (int)read_anything::mojom::Spacing::kDefault,
       user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
 }
 
diff --git a/chrome/browser/ui/webui/side_panel/read_anything/read_anything_prefs.h b/chrome/browser/ui/webui/side_panel/read_anything/read_anything_prefs.h
index 2f8f131..fed2bd40 100644
--- a/chrome/browser/ui/webui/side_panel/read_anything/read_anything_prefs.h
+++ b/chrome/browser/ui/webui/side_panel/read_anything/read_anything_prefs.h
@@ -19,6 +19,7 @@
 extern const char kAccessibilityReadAnythingFontName[];
 extern const char kAccessibilityReadAnythingFontScale[];
 extern const char kAccessibilityReadAnythingColorInfo[];
+extern const char kAccessibilityReadAnythingLineSpacing[];
 extern const char kAccessibilityReadAnythingLetterSpacing[];
 
 }  // namespace prefs
diff --git a/chrome/browser/unload_browsertest.cc b/chrome/browser/unload_browsertest.cc
index 55c096c2..be6363e 100644
--- a/chrome/browser/unload_browsertest.cc
+++ b/chrome/browser/unload_browsertest.cc
@@ -373,7 +373,15 @@
 
 // Tests closing the browser by BrowserList::CloseAllBrowsersWithProfile, with a
 // beforeunload handler and clicking Stay in the beforeunload confirm dialog.
-IN_PROC_BROWSER_TEST_F(UnloadTest, BrowserListCloseBeforeUnloadCancel) {
+// TODO(crbug.com/1372484): Flaky on Mac.
+#if BUILDFLAG(IS_MAC)
+#define MAYBE_BrowserListCloseBeforeUnloadCancel \
+  DISABLED_BrowserListCloseBeforeUnloadCancel
+#else
+#define MAYBE_BrowserListCloseBeforeUnloadCancel \
+  BrowserListCloseBeforeUnloadCancel
+#endif
+IN_PROC_BROWSER_TEST_F(UnloadTest, MAYBE_BrowserListCloseBeforeUnloadCancel) {
   NavigateToDataURL(BEFORE_UNLOAD_HTML, "beforeunload");
   PrepareForDialog(browser());
 
diff --git a/chrome/browser/usb/chrome_usb_browsertest.cc b/chrome/browser/usb/chrome_usb_browsertest.cc
index 59e424f..a996f63d 100644
--- a/chrome/browser/usb/chrome_usb_browsertest.cc
+++ b/chrome/browser/usb/chrome_usb_browsertest.cc
@@ -43,15 +43,25 @@
 #include "third_party/blink/public/mojom/usb/web_usb_service.mojom.h"
 
 #if BUILDFLAG(ENABLE_EXTENSIONS)
+#include "base/test/test_future.h"
+#include "base/test/values_test_util.h"
 #include "chrome/browser/extensions/extension_browsertest.h"
+#include "chrome/common/chrome_features.h"
+#include "components/content_settings/core/common/pref_names.h"
 #include "extensions/common/extension.h"
 #include "extensions/test/extension_test_message_listener.h"
 #include "extensions/test/result_catcher.h"
 #include "extensions/test/test_extension_dir.h"
+#if BUILDFLAG(IS_CHROMEOS_ASH)
+#include "chrome/browser/ash/login/users/fake_chrome_user_manager.h"
+#include "components/account_id/account_id.h"
+#include "components/user_manager/scoped_user_manager.h"
+#endif  // BUILDFLAG(IS_CHROMEOS_ASH)
 #endif  // BUILDFLAG(ENABLE_EXTENSIONS)
 
 namespace {
 
+using ::base::test::TestFuture;
 using ::testing::Return;
 
 constexpr char kIsolatedAppHost[] = "app.com";
@@ -70,6 +80,11 @@
     }
   })();)";
 
+#if BUILDFLAG(ENABLE_EXTENSIONS) && BUILDFLAG(IS_CHROMEOS_ASH)
+const AccountId kManagedUserAccountId =
+    AccountId::FromUserEmail("example@example.com");
+#endif  // BUILDFLAG(ENABLE_EXTENSIONS) && BUILDFLAG(IS_CHROMEOS_ASH)
+
 class FakeChooserView : public permissions::ChooserController::View {
  public:
   explicit FakeChooserView(
@@ -910,4 +925,198 @@
   EXPECT_EQ("Success", EvalJs(iframe, OpenAndClaimDeviceScript));
 }
 
+#if BUILDFLAG(ENABLE_EXTENSIONS)
+// Base Test fixture with kEnableWebUsbOnExtensionServiceWorker default
+// disabled.
+class WebUsbExtensionBrowserTest : public extensions::ExtensionBrowserTest {
+ public:
+  WebUsbExtensionBrowserTest() = default;
+
+  void SetUpOnMainThread() override {
+    ExtensionBrowserTest::SetUpOnMainThread();
+
+    mojo::PendingRemote<device::mojom::UsbDeviceManager> device_manager;
+    device_manager_.AddReceiver(
+        device_manager.InitWithNewPipeAndPassReceiver());
+
+    // Connect the UsbDeviceManager and ensure we've received the initial
+    // enumeration before continuing.
+    auto* chooser_context = UsbChooserContextFactory::GetForProfile(profile());
+    chooser_context->SetDeviceManagerForTesting(std::move(device_manager));
+    TestFuture<std::vector<device::mojom::UsbDeviceInfoPtr>> devices_future;
+    chooser_context->GetDevices(devices_future.GetCallback());
+    ASSERT_TRUE(devices_future.Get().empty());
+
+#if BUILDFLAG(IS_CHROMEOS_ASH)
+    // Create a user account affiliated with the machine owner.
+    auto fake_user_manager = std::make_unique<ash::FakeChromeUserManager>();
+    fake_user_manager->AddUserWithAffiliation(kManagedUserAccountId, true);
+    fake_user_manager->LoginUser(kManagedUserAccountId);
+    scoped_user_manager_ = std::make_unique<user_manager::ScopedUserManager>(
+        std::move(fake_user_manager));
+#endif  // BUILDFLAG(IS_CHROMEOS_ASH)
+  }
+
+  void TearDownOnMainThread() override {
+#if BUILDFLAG(IS_CHROMEOS_ASH)
+    // Explicitly removing the user is required; otherwise ProfileHelper keeps
+    // a dangling pointer to the User.
+    // TODO(b/208629291): Consider removing all users from ProfileHelper in the
+    // destructor of ash::FakeChromeUserManager.
+    GetFakeUserManager()->RemoveUserFromList(kManagedUserAccountId);
+    scoped_user_manager_.reset();
+#endif  // BUILDFLAG(IS_CHROMEOS_ASH)
+    ExtensionBrowserTest::TearDownOnMainThread();
+  }
+
+#if BUILDFLAG(IS_CHROMEOS_ASH)
+  ash::FakeChromeUserManager* GetFakeUserManager() const {
+    return static_cast<ash::FakeChromeUserManager*>(
+        user_manager::UserManager::Get());
+  }
+#endif  // BUILDFLAG(IS_CHROMEOS_ASH)
+
+  void SetUpPolicy(const extensions::Extension* extension) {
+    // Define a policy to automatically grant permission to access the device
+    // created by AddFakeDevice.
+    constexpr char kPolicyTemplate[] = R"(
+        [
+          {
+            "devices": [{ "vendor_id": 1234, "product_id": 5678 }],
+            "urls": ["%s"]
+          }
+        ])";
+    profile()->GetPrefs()->Set(
+        prefs::kManagedWebUsbAllowDevicesForUrls,
+        base::test::ParseJson(base::StringPrintf(
+            kPolicyTemplate, extension->url().spec().c_str())));
+  }
+
+  void LoadExtensionAndRunTest(base::StringPiece background_js) {
+    constexpr char kManifestTemplate[] =
+        R"({
+              "name": "Test Extension",
+              "version": "0.1",
+              "manifest_version": 3,
+              "background": {
+                "service_worker": "%s"
+              }
+            })";
+
+    extensions::TestExtensionDir test_dir;
+    test_dir.WriteManifest(
+        base::StringPrintf(kManifestTemplate, "background.js"));
+    test_dir.WriteFile(FILE_PATH_LITERAL("background.js"), background_js);
+
+    // Launch the test app.
+    ExtensionTestMessageListener ready_listener("ready",
+                                                ReplyBehavior::kWillReply);
+    extensions::ResultCatcher result_catcher;
+    const extensions::Extension* extension =
+        LoadExtension(test_dir.UnpackedPath());
+
+    // TODO(crbug.com/1336400): Grant permission using requestDevice().
+    // Run the test.
+    SetUpPolicy(extension);
+    EXPECT_TRUE(ready_listener.WaitUntilSatisfied());
+    ready_listener.Reply("ok");
+    EXPECT_TRUE(result_catcher.GetNextResult()) << result_catcher.message();
+  }
+
+  void AddFakeDevice() {
+    device_manager_.CreateAndAddDevice(1234, 5678, "Test Manufacturer",
+                                       "Test Device", "123456");
+  }
+
+ protected:
+  base::test::ScopedFeatureList scoped_feature_list_;
+
+ private:
+  device::FakeUsbDeviceManager device_manager_;
+#if BUILDFLAG(IS_CHROMEOS_ASH)
+  std::unique_ptr<user_manager::ScopedUserManager> scoped_user_manager_;
+#endif  // BUILDFLAG(IS_CHROMEOS_ASH)
+};
+
+// Test fixture with kEnableWebUsbOnExtensionServiceWorker enabled.
+class WebUsbExtensionFeatureEnabledBrowserTest
+    : public WebUsbExtensionBrowserTest {
+ public:
+  WebUsbExtensionFeatureEnabledBrowserTest() {
+    scoped_feature_list_.InitWithFeatures(
+        {features::kEnableWebUsbOnExtensionServiceWorker}, {});
+  }
+};
+
+// Test fixture with kEnableWebUsbOnExtensionServiceWorker disabled.
+class WebUsbExtensionFeatureDisabledBrowserTest
+    : public WebUsbExtensionBrowserTest {
+ public:
+  WebUsbExtensionFeatureDisabledBrowserTest() {
+    scoped_feature_list_.InitWithFeatures(
+        {}, {features::kEnableWebUsbOnExtensionServiceWorker});
+  }
+};
+
+IN_PROC_BROWSER_TEST_F(WebUsbExtensionBrowserTest, FeatureDefaultDisabled) {
+  constexpr base::StringPiece kBackgroundJs = R"(
+    chrome.test.sendMessage("ready", async () => {
+      try {
+        chrome.test.assertEq(navigator.usb, undefined);
+        chrome.test.notifyPass();
+      } catch (e) {
+        chrome.test.fail(e.name + ':' + e.message);
+      }
+    });
+  )";
+  LoadExtensionAndRunTest(kBackgroundJs);
+}
+
+IN_PROC_BROWSER_TEST_F(WebUsbExtensionFeatureDisabledBrowserTest,
+                       FeatureDisabled) {
+  constexpr base::StringPiece kBackgroundJs = R"(
+    chrome.test.sendMessage("ready", async () => {
+      try {
+        chrome.test.assertEq(navigator.usb, undefined);
+        chrome.test.notifyPass();
+      } catch (e) {
+        chrome.test.fail(e.name + ':' + e.message);
+      }
+    });
+  )";
+  LoadExtensionAndRunTest(kBackgroundJs);
+}
+
+IN_PROC_BROWSER_TEST_F(WebUsbExtensionFeatureEnabledBrowserTest, GetDevices) {
+  constexpr base::StringPiece kBackgroundJs = R"(
+    chrome.test.sendMessage("ready", async () => {
+      try {
+        const devices = await navigator.usb.getDevices();
+        chrome.test.assertEq(1, devices.length);
+        chrome.test.notifyPass();
+      } catch (e) {
+        chrome.test.fail(e.name + ':' + e.message);
+      }
+    });
+  )";
+  AddFakeDevice();
+  LoadExtensionAndRunTest(kBackgroundJs);
+}
+
+IN_PROC_BROWSER_TEST_F(WebUsbExtensionFeatureEnabledBrowserTest,
+                       RequestDevice) {
+  constexpr base::StringPiece kBackgroundJs = R"(
+    chrome.test.sendMessage("ready", async () => {
+      try {
+        chrome.test.assertEq(navigator.usb.requestDevice, undefined);
+        chrome.test.notifyPass();
+      } catch (e) {
+        chrome.test.fail(e.name + ':' + e.message);
+      }
+    });
+  )";
+  LoadExtensionAndRunTest(kBackgroundJs);
+}
+#endif  // BUILDFLAG(ENABLE_EXTENSIONS)
+
 }  // namespace
diff --git a/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_url_info.cc b/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_url_info.cc
index ce25940..eac82900 100644
--- a/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_url_info.cc
+++ b/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_url_info.cc
@@ -4,6 +4,7 @@
 
 #include "chrome/browser/web_applications/isolated_web_apps/isolated_web_app_url_info.h"
 
+#include "base/strings/strcat.h"
 #include "base/strings/stringprintf.h"
 #include "base/types/expected.h"
 #include "chrome/browser/web_applications/web_app_helpers.h"
@@ -40,6 +41,16 @@
   return IsolatedWebAppUrlInfo(url);
 }
 
+// static
+base::expected<IsolatedWebAppUrlInfo, std::string>
+IsolatedWebAppUrlInfo::CreateFromSignedWebBundleId(
+    const web_package::SignedWebBundleId& web_bundle_id) {
+  const GURL url =
+      GURL(base::StrCat({chrome::kIsolatedAppScheme,
+                         url::kStandardSchemeSeparator, web_bundle_id.id()}));
+  return IsolatedWebAppUrlInfo::Create(url);
+}
+
 IsolatedWebAppUrlInfo::IsolatedWebAppUrlInfo(const GURL& url)
     : url_(url),
       origin_(url::Origin::Create(url)),
diff --git a/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_url_info.h b/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_url_info.h
index b8386c4..ccc099c2 100644
--- a/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_url_info.h
+++ b/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_url_info.h
@@ -36,6 +36,11 @@
   static base::expected<IsolatedWebAppUrlInfo, std::string> Create(
       const GURL& url);
 
+  // Wraps Create() but accepts a SignedWebBundleId object.
+  static base::expected<IsolatedWebAppUrlInfo, std::string>
+  CreateFromSignedWebBundleId(
+      const web_package::SignedWebBundleId& web_bundle_id);
+
   // Returns the origin of the IWA that this URL refers to.
   const url::Origin& origin() const;
 
diff --git a/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_url_info_unittest.cc b/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_url_info_unittest.cc
index be128f51..fbc2258 100644
--- a/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_url_info_unittest.cc
+++ b/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_url_info_unittest.cc
@@ -59,6 +59,16 @@
   EXPECT_THAT(url_info.error(), Eq("Invalid URL"));
 }
 
+TEST_F(IsolatedWebAppUrlInfoTest,
+       CreateFromSignedWebBundleIdSucceedsWithRandomId) {
+  web_package::SignedWebBundleId random_id =
+      web_package::SignedWebBundleId::CreateRandomForDevelopment();
+  base::expected<IsolatedWebAppUrlInfo, std::string> url_info =
+      IsolatedWebAppUrlInfo::CreateFromSignedWebBundleId(random_id);
+
+  EXPECT_THAT(url_info.has_value(), IsTrue());
+}
+
 TEST_F(IsolatedWebAppUrlInfoTest, ParseSignedWebBundleIdSucceedWithValidUrl) {
   base::expected<IsolatedWebAppUrlInfo, std::string> url_info =
       IsolatedWebAppUrlInfo::Create(GURL(kValidIsolatedAppUrl));
diff --git a/chrome/browser/webauthn/authenticator_request_dialog_model.cc b/chrome/browser/webauthn/authenticator_request_dialog_model.cc
index 0f98100..d72ce071 100644
--- a/chrome/browser/webauthn/authenticator_request_dialog_model.cc
+++ b/chrome/browser/webauthn/authenticator_request_dialog_model.cc
@@ -768,6 +768,13 @@
 }
 
 bool AuthenticatorRequestDialogModel::cable_should_suggest_usb() const {
+  if (base::FeatureList::IsEnabled(
+          device::kWebAuthnNewDiscoverableCredentialsUi)) {
+    // Offer AoA only for linked caBLEv2 authenticators, not caBLEv1.
+    return cable_ui_type_ != CableUIType::CABLE_V1 &&
+           base::Contains(transport_availability_.available_transports,
+                          AuthenticatorTransport::kAndroidAccessory);
+  }
   switch (experiment_server_link_sheet_) {
     case AuthenticatorRequestDialogModel::ExperimentServerLinkSheet::CONTROL:
     case AuthenticatorRequestDialogModel::ExperimentServerLinkSheet::ARM_2:
diff --git a/chrome/browser/webid/federated_identity_account_keyed_permission_context_unittest.cc b/chrome/browser/webid/federated_identity_account_keyed_permission_context_unittest.cc
index 8e3349f..ac7ffa1 100644
--- a/chrome/browser/webid/federated_identity_account_keyed_permission_context_unittest.cc
+++ b/chrome/browser/webid/federated_identity_account_keyed_permission_context_unittest.cc
@@ -12,6 +12,7 @@
 #include "content/public/test/browser_task_environment.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "url/gurl.h"
+#include "url/origin.h"
 
 namespace {
 
diff --git a/chrome/browser/window_management/DEPS b/chrome/browser/window_management/DEPS
new file mode 100644
index 0000000..733ea6c
--- /dev/null
+++ b/chrome/browser/window_management/DEPS
@@ -0,0 +1,14 @@
+specific_include_rules = {
+  "screen_details_browsertest\.cc": [
+    "+content/browser/screen_enumeration/screen_details_test_utils.h",
+  ],
+  "window_management_browsertest\.cc": [
+    "+ash/shell.h",
+  ],
+  "window_management_permission_context_browsertest\.cc": [
+    "+ash/shell.h",
+  ],
+  "window_management_printing_interactive_uitest\.cc": [
+    "+ash/shell.h",
+  ],
+}
diff --git a/chrome/browser/window_placement/DIR_METADATA b/chrome/browser/window_management/DIR_METADATA
similarity index 100%
rename from chrome/browser/window_placement/DIR_METADATA
rename to chrome/browser/window_management/DIR_METADATA
diff --git a/chrome/browser/window_placement/OWNERS b/chrome/browser/window_management/OWNERS
similarity index 100%
rename from chrome/browser/window_placement/OWNERS
rename to chrome/browser/window_management/OWNERS
diff --git a/chrome/browser/window_placement/screen_details_browsertest.cc b/chrome/browser/window_management/screen_details_browsertest.cc
similarity index 100%
rename from chrome/browser/window_placement/screen_details_browsertest.cc
rename to chrome/browser/window_management/screen_details_browsertest.cc
diff --git a/chrome/browser/window_placement/window_placement_browsertest.cc b/chrome/browser/window_management/window_management_browsertest.cc
similarity index 99%
rename from chrome/browser/window_placement/window_placement_browsertest.cc
rename to chrome/browser/window_management/window_management_browsertest.cc
index e802be50..4b13457 100644
--- a/chrome/browser/window_placement/window_placement_browsertest.cc
+++ b/chrome/browser/window_management/window_management_browsertest.cc
@@ -38,7 +38,7 @@
     // Support multiple sites on the test server.
     host_resolver()->AddRule("*", "127.0.0.1");
 
-    // Window placement features are only available on secure contexts, and so
+    // Window management features are only available on secure contexts, and so
     // we need to create an HTTPS test server here to serve those pages rather
     // than using the default https_test_server_.
     https_test_server_ = std::make_unique<net::EmbeddedTestServer>(
diff --git a/chrome/browser/window_placement/window_placement_permission_context_browsertest.cc b/chrome/browser/window_management/window_management_permission_context_browsertest.cc
similarity index 90%
rename from chrome/browser/window_placement/window_placement_permission_context_browsertest.cc
rename to chrome/browser/window_management/window_management_permission_context_browsertest.cc
index aafd0de1..74bf8728 100644
--- a/chrome/browser/window_placement/window_placement_permission_context_browsertest.cc
+++ b/chrome/browser/window_management/window_management_permission_context_browsertest.cc
@@ -2,7 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "base/command_line.h"
 #include "build/build_config.h"
 #include "build/chromeos_buildflags.h"
 #include "chrome/browser/ui/browser.h"
@@ -12,7 +11,6 @@
 #include "components/permissions/permission_request_manager.h"
 #include "content/public/browser/render_frame_host.h"
 #include "content/public/browser/web_contents.h"
-#include "content/public/common/content_switches.h"
 #include "content/public/test/browser_test.h"
 #include "net/dns/mock_host_resolver.h"
 #include "net/test/embedded_test_server/default_handlers.h"
@@ -44,19 +42,14 @@
   })();
 )";
 
-// Tests of WindowPlacementPermissionContext behavior.
-class WindowPlacementPermissionContextTest : public InProcessBrowserTest {
+// Tests of WindowManagementPermissionContext behavior.
+class WindowManagementPermissionContextTest : public InProcessBrowserTest {
  public:
-  void SetUpCommandLine(base::CommandLine* command_line) override {
-    base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
-        switches::kEnableBlinkFeatures, "WindowPlacement");
-  }
-
   void SetUpOnMainThread() override {
     // Support multiple sites on the test server.
     host_resolver()->AddRule("*", "127.0.0.1");
 
-    // Window placement features are only available on secure contexts, and so
+    // Window management features are only available on secure contexts, and so
     // we need to create an HTTPS test server here to serve those pages rather
     // than using the default embedded_test_server().
     https_test_server_ = std::make_unique<net::EmbeddedTestServer>(
@@ -92,13 +85,13 @@
   std::unique_ptr<net::EmbeddedTestServer> https_test_server_;
 };
 
-class MultiscreenWindowPlacementPermissionContextTest
-    : public WindowPlacementPermissionContextTest {
+class MultiscreenWindowManagementPermissionContextTest
+    : public WindowManagementPermissionContextTest {
  public:
   void SetScreenInstance() override {
 #if BUILDFLAG(IS_CHROMEOS_ASH)
     // Use the default, see SetUpOnMainThread.
-    WindowPlacementPermissionContextTest::SetScreenInstance();
+    WindowManagementPermissionContextTest::SetScreenInstance();
 #else
     screen_override_.emplace(&screen_);
     screen_.display_list().AddDisplay({1, gfx::Rect(100, 100, 801, 802)},
@@ -118,7 +111,7 @@
     ASSERT_EQ(2, display::Screen::GetScreen()->GetNumDisplays());
 #endif
 
-    WindowPlacementPermissionContextTest::SetUpOnMainThread();
+    WindowManagementPermissionContextTest::SetUpOnMainThread();
   }
 
  private:
@@ -127,7 +120,7 @@
 };
 
 // Tests gesture requirements (a gesture is only needed to prompt the user).
-IN_PROC_BROWSER_TEST_F(WindowPlacementPermissionContextTest, GestureToPrompt) {
+IN_PROC_BROWSER_TEST_F(WindowManagementPermissionContextTest, GestureToPrompt) {
   const GURL url(https_test_server()->GetURL("a.test", "/empty.html"));
   EXPECT_TRUE(ui_test_utils::NavigateToURL(browser(), url));
   auto* tab = browser()->tab_strip_model()->GetActiveWebContents();
@@ -170,7 +163,7 @@
 #define MAYBE_DismissAndDeny DismissAndDeny
 #endif
 // Tests user activation after dimissing and denying the permission request.
-IN_PROC_BROWSER_TEST_F(WindowPlacementPermissionContextTest,
+IN_PROC_BROWSER_TEST_F(WindowManagementPermissionContextTest,
                        MAYBE_DismissAndDeny) {
   const GURL url(https_test_server()->GetURL("a.test", "/empty.html"));
   EXPECT_TRUE(ui_test_utils::NavigateToURL(browser(), url));
@@ -199,7 +192,7 @@
 }
 
 // Tests user activation after accepting the permission request.
-IN_PROC_BROWSER_TEST_F(WindowPlacementPermissionContextTest, Accept) {
+IN_PROC_BROWSER_TEST_F(WindowManagementPermissionContextTest, Accept) {
   const GURL url(https_test_server()->GetURL("a.test", "/empty.html"));
   EXPECT_TRUE(ui_test_utils::NavigateToURL(browser(), url));
   auto* tab = browser()->tab_strip_model()->GetActiveWebContents();
@@ -217,7 +210,7 @@
   EXPECT_TRUE(tab->GetPrimaryMainFrame()->HasTransientUserActivation());
 }
 
-IN_PROC_BROWSER_TEST_F(WindowPlacementPermissionContextTest,
+IN_PROC_BROWSER_TEST_F(WindowManagementPermissionContextTest,
                        IFrameSameOriginAllow) {
   const GURL url(https_test_server()->GetURL("a.test", "/iframe.html"));
   EXPECT_TRUE(ui_test_utils::NavigateToURL(browser(), url));
@@ -242,7 +235,7 @@
   EXPECT_TRUE(child->GetMainFrame()->HasTransientUserActivation());
 }
 
-IN_PROC_BROWSER_TEST_F(WindowPlacementPermissionContextTest,
+IN_PROC_BROWSER_TEST_F(WindowManagementPermissionContextTest,
                        IFrameCrossOriginDeny) {
   const GURL url(https_test_server()->GetURL("a.test", "/iframe.html"));
   EXPECT_TRUE(ui_test_utils::NavigateToURL(browser(), url));
@@ -259,7 +252,7 @@
   permissions::PermissionRequestManager* permission_request_manager =
       permissions::PermissionRequestManager::FromWebContents(tab);
 
-  // PermissionRequestManager will accept any window placement permission
+  // PermissionRequestManager will accept any window management permission
   // dialogs that appear. However, the window-placement permission is not
   // explicitly allowed on the iframe, so requests made by the child frame will
   // be automatically denied before a prompt might be issued.
@@ -270,7 +263,7 @@
                              content::EXECUTE_SCRIPT_NO_USER_GESTURE));
 }
 
-IN_PROC_BROWSER_TEST_F(WindowPlacementPermissionContextTest,
+IN_PROC_BROWSER_TEST_F(WindowManagementPermissionContextTest,
                        IFrameCrossOriginExplicitAllow) {
   const GURL url(https_test_server()->GetURL("a.test", "/iframe.html"));
   EXPECT_TRUE(ui_test_utils::NavigateToURL(browser(), url));
@@ -310,8 +303,8 @@
 #if !BUILDFLAG(IS_WIN)
 
 // Verify that window.screen.isExtended returns true in a same-origin
-// iframe without the window placement permission policy allowed.
-IN_PROC_BROWSER_TEST_F(MultiscreenWindowPlacementPermissionContextTest,
+// iframe without the window management permission policy allowed.
+IN_PROC_BROWSER_TEST_F(MultiscreenWindowManagementPermissionContextTest,
                        IsExtendedSameOriginAllow) {
   const GURL url(https_test_server()->GetURL("a.test", "/iframe.html"));
   EXPECT_TRUE(ui_test_utils::NavigateToURL(browser(), url));
@@ -327,8 +320,8 @@
 }
 
 // Verify that window.screen.isExtended returns false in a cross-origin
-// iframe without the window placement permission policy allowed.
-IN_PROC_BROWSER_TEST_F(MultiscreenWindowPlacementPermissionContextTest,
+// iframe without the window management permission policy allowed.
+IN_PROC_BROWSER_TEST_F(MultiscreenWindowManagementPermissionContextTest,
                        IsExtendedCrossOriginDeny) {
   const GURL url(https_test_server()->GetURL("a.test", "/iframe.html"));
   EXPECT_TRUE(ui_test_utils::NavigateToURL(browser(), url));
@@ -347,8 +340,8 @@
 }
 
 // Verify that window.screen.isExtended returns true in a cross-origin
-// iframe with the window placement permission policy allowed.
-IN_PROC_BROWSER_TEST_F(MultiscreenWindowPlacementPermissionContextTest,
+// iframe with the window management permission policy allowed.
+IN_PROC_BROWSER_TEST_F(MultiscreenWindowManagementPermissionContextTest,
                        IsExtendedCrossOriginAllow) {
   const GURL url(https_test_server()->GetURL("a.test", "/iframe.html"));
   EXPECT_TRUE(ui_test_utils::NavigateToURL(browser(), url));
diff --git a/chrome/browser/window_placement/window_placement_printing_interactive_uitest.cc b/chrome/browser/window_management/window_management_printing_interactive_uitest.cc
similarity index 96%
rename from chrome/browser/window_placement/window_placement_printing_interactive_uitest.cc
rename to chrome/browser/window_management/window_management_printing_interactive_uitest.cc
index 23a2e7d..50c81b86d 100644
--- a/chrome/browser/window_placement/window_placement_printing_interactive_uitest.cc
+++ b/chrome/browser/window_management/window_management_printing_interactive_uitest.cc
@@ -23,7 +23,7 @@
 #include "ui/display/test/display_manager_test_api.h"  // nogncheck
 #endif  // BUILDFLAG(IS_CHROMEOS_ASH)
 
-class WindowPlacementTest : public InProcessBrowserTest {
+class WindowManagementTest : public InProcessBrowserTest {
  public:
   void SetUp() override {
 #if !BUILDFLAG(IS_CHROMEOS_ASH)
@@ -35,7 +35,7 @@
   }
 
   void SetUpOnMainThread() override {
-    // Window placement features are only available on secure contexts.
+    // Window management features are only available on secure contexts.
     https_test_server_ = std::make_unique<net::EmbeddedTestServer>(
         net::EmbeddedTestServer::TYPE_HTTPS);
     https_test_server_->ServeFilesFromSourceDirectory(GetChromeTestDataDir());
@@ -69,7 +69,7 @@
 // Test that screen change events occurring while an event handler is running
 // a nested event loop (i.e. via window.print()) do not cause a crash.
 // Regression test for crbug.com/1273841
-IN_PROC_BROWSER_TEST_F(WindowPlacementTest,
+IN_PROC_BROWSER_TEST_F(WindowManagementTest,
                        MAYBE_NoCrashOnEventsDuringHandlerPrint) {
   // Update the display configuration to mock display changes.
 #if BUILDFLAG(IS_CHROMEOS_ASH)
diff --git a/chrome/browser/window_placement/DEPS b/chrome/browser/window_placement/DEPS
deleted file mode 100644
index 05fb394e..0000000
--- a/chrome/browser/window_placement/DEPS
+++ /dev/null
@@ -1,14 +0,0 @@
-specific_include_rules = {
-  "screen_details_browsertest\.cc": [
-    "+content/browser/screen_enumeration/screen_details_test_utils.h",
-  ],
-  "window_placement_browsertest\.cc": [
-    "+ash/shell.h",
-  ],
-  "window_placement_permission_context_browsertest\.cc": [
-    "+ash/shell.h",
-  ],
-  "window_placement_printing_interactive_uitest\.cc": [
-    "+ash/shell.h",
-  ],
-}
diff --git a/chrome/build/linux.pgo.txt b/chrome/build/linux.pgo.txt
index 13cd68f..869e12d 100644
--- a/chrome/build/linux.pgo.txt
+++ b/chrome/build/linux.pgo.txt
@@ -1 +1 @@
-chrome-linux-main-1665122034-781bbdb6b3c59ea087989e3e8f6b2df91a5bdb30.profdata
+chrome-linux-main-1665187171-655f27bb7bf5a3b0a1a1bb7693ff3234507d27d3.profdata
diff --git a/chrome/build/mac.pgo.txt b/chrome/build/mac.pgo.txt
index 4797337..dcfbcc5 100644
--- a/chrome/build/mac.pgo.txt
+++ b/chrome/build/mac.pgo.txt
@@ -1 +1 @@
-chrome-mac-main-1665122034-e1f44598c7725908d55b55ae2e47f2ed39be71a8.profdata
+chrome-mac-main-1665187171-4ceffa1eab44308da6fdb7aac8fce38933719d8a.profdata
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt
index 758f5c8f..103f73be 100644
--- a/chrome/build/win32.pgo.txt
+++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@
-chrome-win32-main-1665122034-2c5cb2b803dd4a4445d9622a3ebcc5ac20a1893f.profdata
+chrome-win32-main-1665165571-23dd9cfb0bbf442db0714b0bde05946e84e2b1d8.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt
index d95620b..28837c7 100644
--- a/chrome/build/win64.pgo.txt
+++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@
-chrome-win64-main-1665132952-6d3e8e5b2d995af7223421632e3be31e142edbee.profdata
+chrome-win64-main-1665176377-e2d04b6bfc4bacc5805883b47ea9912f99bf1f3f.profdata
diff --git a/chrome/chrome_cleaner/ipc/sandbox.cc b/chrome/chrome_cleaner/ipc/sandbox.cc
index 3e1514e7..c99aaab2 100644
--- a/chrome/chrome_cleaner/ipc/sandbox.cc
+++ b/chrome/chrome_cleaner/ipc/sandbox.cc
@@ -132,8 +132,8 @@
   sandbox::ResultCode result = broker->Init();
   if (result != sandbox::SBOX_ALL_OK)
     return result;
-  result = broker->CreatePolicy()->CreateAlternateDesktop(
-      sandbox::Desktop::kAlternateWinstation);
+  result =
+      broker->CreateAlternateDesktop(sandbox::Desktop::kAlternateWinstation);
   // Matches Chrome behavior. Silently ignore failures unless we're
   // in a bad state.
   if (result == sandbox::SBOX_ERROR_FAILED_TO_SWITCH_BACK_WINSTATION)
diff --git a/chrome/common/apps/platform_apps/media_galleries_permission_unittest.cc b/chrome/common/apps/platform_apps/media_galleries_permission_unittest.cc
index d2836a6..528d9f66 100644
--- a/chrome/common/apps/platform_apps/media_galleries_permission_unittest.cc
+++ b/chrome/common/apps/platform_apps/media_galleries_permission_unittest.cc
@@ -39,51 +39,52 @@
 
   // access_type + all_detected
   base::Value value(base::Value::Type::LIST);
-  value.Append(MediaGalleriesPermission::kAllAutoDetectedPermission);
-  value.Append(MediaGalleriesPermission::kReadPermission);
+  base::Value::List& value_list = value.GetList();
+  value_list.Append(MediaGalleriesPermission::kAllAutoDetectedPermission);
+  value_list.Append(MediaGalleriesPermission::kReadPermission);
   CheckFromValue(permission.get(), &value, true);
 
-  value.ClearList();
-  value.Append(MediaGalleriesPermission::kAllAutoDetectedPermission);
-  value.Append(MediaGalleriesPermission::kCopyToPermission);
-  value.Append(MediaGalleriesPermission::kReadPermission);
-  value.Append(MediaGalleriesPermission::kDeletePermission);
+  value_list.clear();
+  value_list.Append(MediaGalleriesPermission::kAllAutoDetectedPermission);
+  value_list.Append(MediaGalleriesPermission::kCopyToPermission);
+  value_list.Append(MediaGalleriesPermission::kReadPermission);
+  value_list.Append(MediaGalleriesPermission::kDeletePermission);
   CheckFromValue(permission.get(), &value, true);
 
   // all_detected
-  value.ClearList();
-  value.Append(MediaGalleriesPermission::kAllAutoDetectedPermission);
+  value_list.clear();
+  value_list.Append(MediaGalleriesPermission::kAllAutoDetectedPermission);
   CheckFromValue(permission.get(), &value, true);
 
   // access_type
-  value.ClearList();
-  value.Append(MediaGalleriesPermission::kReadPermission);
+  value_list.clear();
+  value_list.Append(MediaGalleriesPermission::kReadPermission);
   CheckFromValue(permission.get(), &value, true);
 
-  value.ClearList();
-  value.Append(MediaGalleriesPermission::kDeletePermission);
-  value.Append(MediaGalleriesPermission::kReadPermission);
+  value_list.clear();
+  value_list.Append(MediaGalleriesPermission::kDeletePermission);
+  value_list.Append(MediaGalleriesPermission::kReadPermission);
   CheckFromValue(permission.get(), &value, true);
 
-  value.ClearList();
-  value.Append(MediaGalleriesPermission::kCopyToPermission);
-  value.Append(MediaGalleriesPermission::kDeletePermission);
-  value.Append(MediaGalleriesPermission::kReadPermission);
+  value_list.clear();
+  value_list.Append(MediaGalleriesPermission::kCopyToPermission);
+  value_list.Append(MediaGalleriesPermission::kDeletePermission);
+  value_list.Append(MediaGalleriesPermission::kReadPermission);
   CheckFromValue(permission.get(), &value, true);
 
   // Repeats do not make a difference.
-  value.ClearList();
-  value.Append(MediaGalleriesPermission::kAllAutoDetectedPermission);
-  value.Append(MediaGalleriesPermission::kAllAutoDetectedPermission);
+  value_list.clear();
+  value_list.Append(MediaGalleriesPermission::kAllAutoDetectedPermission);
+  value_list.Append(MediaGalleriesPermission::kAllAutoDetectedPermission);
   CheckFromValue(permission.get(), &value, true);
 
-  value.ClearList();
-  value.Append(MediaGalleriesPermission::kAllAutoDetectedPermission);
-  value.Append(MediaGalleriesPermission::kReadPermission);
-  value.Append(MediaGalleriesPermission::kReadPermission);
-  value.Append(MediaGalleriesPermission::kDeletePermission);
-  value.Append(MediaGalleriesPermission::kDeletePermission);
-  value.Append(MediaGalleriesPermission::kDeletePermission);
+  value_list.clear();
+  value_list.Append(MediaGalleriesPermission::kAllAutoDetectedPermission);
+  value_list.Append(MediaGalleriesPermission::kReadPermission);
+  value_list.Append(MediaGalleriesPermission::kReadPermission);
+  value_list.Append(MediaGalleriesPermission::kDeletePermission);
+  value_list.Append(MediaGalleriesPermission::kDeletePermission);
+  value_list.Append(MediaGalleriesPermission::kDeletePermission);
   CheckFromValue(permission.get(), &value, true);
 }
 
@@ -97,38 +98,39 @@
 
   // copyTo and delete without read
   base::Value value(base::Value::Type::LIST);
-  value.Append(MediaGalleriesPermission::kCopyToPermission);
+  base::Value::List& value_list = value.GetList();
+  value_list.Append(MediaGalleriesPermission::kCopyToPermission);
   CheckFromValue(permission.get(), &value, false);
 
-  value.ClearList();
-  value.Append(MediaGalleriesPermission::kDeletePermission);
+  value_list.clear();
+  value_list.Append(MediaGalleriesPermission::kDeletePermission);
   CheckFromValue(permission.get(), &value, false);
 
-  value.ClearList();
-  value.Append(MediaGalleriesPermission::kAllAutoDetectedPermission);
-  value.Append(MediaGalleriesPermission::kCopyToPermission);
-  value.Append(MediaGalleriesPermission::kDeletePermission);
+  value_list.clear();
+  value_list.Append(MediaGalleriesPermission::kAllAutoDetectedPermission);
+  value_list.Append(MediaGalleriesPermission::kCopyToPermission);
+  value_list.Append(MediaGalleriesPermission::kDeletePermission);
   CheckFromValue(permission.get(), &value, false);
 
   // copyTo without delete
-  value.ClearList();
-  value.Append(MediaGalleriesPermission::kAllAutoDetectedPermission);
-  value.Append(MediaGalleriesPermission::kCopyToPermission);
-  value.Append(MediaGalleriesPermission::kReadPermission);
+  value_list.clear();
+  value_list.Append(MediaGalleriesPermission::kAllAutoDetectedPermission);
+  value_list.Append(MediaGalleriesPermission::kCopyToPermission);
+  value_list.Append(MediaGalleriesPermission::kReadPermission);
   CheckFromValue(permission.get(), &value, false);
 
   // Repeats do not make a difference.
-  value.ClearList();
-  value.Append(MediaGalleriesPermission::kCopyToPermission);
-  value.Append(MediaGalleriesPermission::kCopyToPermission);
+  value_list.clear();
+  value_list.Append(MediaGalleriesPermission::kCopyToPermission);
+  value_list.Append(MediaGalleriesPermission::kCopyToPermission);
   CheckFromValue(permission.get(), &value, false);
 
-  value.ClearList();
-  value.Append(MediaGalleriesPermission::kAllAutoDetectedPermission);
-  value.Append(MediaGalleriesPermission::kAllAutoDetectedPermission);
-  value.Append(MediaGalleriesPermission::kCopyToPermission);
-  value.Append(MediaGalleriesPermission::kDeletePermission);
-  value.Append(MediaGalleriesPermission::kDeletePermission);
+  value_list.clear();
+  value_list.Append(MediaGalleriesPermission::kAllAutoDetectedPermission);
+  value_list.Append(MediaGalleriesPermission::kAllAutoDetectedPermission);
+  value_list.Append(MediaGalleriesPermission::kCopyToPermission);
+  value_list.Append(MediaGalleriesPermission::kDeletePermission);
+  value_list.Append(MediaGalleriesPermission::kDeletePermission);
   CheckFromValue(permission.get(), &value, false);
 }
 
@@ -144,8 +146,9 @@
 
   // A good one and an unknown one.
   base::Value value(base::Value::Type::LIST);
-  value.Append(MediaGalleriesPermission::kReadPermission);
-  value.Append("Unknown");
+  base::Value::List& value_list = value.GetList();
+  value_list.Append(MediaGalleriesPermission::kReadPermission);
+  value_list.Append("Unknown");
   EXPECT_TRUE(permission->FromValue(&value, &error, &unhandled));
   EXPECT_TRUE(error.empty());
   EXPECT_EQ(1U, unhandled.size());
@@ -153,9 +156,9 @@
   unhandled.clear();
 
   // Multiple unknown permissions.
-  value.ClearList();
-  value.Append("Unknown1");
-  value.Append("Unknown2");
+  value_list.clear();
+  value_list.Append("Unknown1");
+  value_list.Append("Unknown2");
   EXPECT_TRUE(permission->FromValue(&value, &error, &unhandled));
   EXPECT_TRUE(error.empty());
   EXPECT_EQ(2U, unhandled.size());
@@ -163,8 +166,8 @@
   unhandled.clear();
 
   // Unnknown with a nullptr argument.
-  value.ClearList();
-  value.Append("Unknown1");
+  value_list.clear();
+  value_list.Append("Unknown1");
   EXPECT_FALSE(permission->FromValue(&value, &error, nullptr));
   EXPECT_FALSE(error.empty());
   error.clear();
@@ -181,44 +184,45 @@
       permission_info->CreateAPIPermission());
 
   base::Value value(base::Value::Type::LIST);
-  value.Append(MediaGalleriesPermission::kAllAutoDetectedPermission);
-  value.Append(MediaGalleriesPermission::kReadPermission);
+  base::Value::List& value_list = value.GetList();
+  value_list.Append(MediaGalleriesPermission::kAllAutoDetectedPermission);
+  value_list.Append(MediaGalleriesPermission::kReadPermission);
   ASSERT_TRUE(permission1->FromValue(&value, nullptr, nullptr));
 
-  value.ClearList();
-  value.Append(MediaGalleriesPermission::kReadPermission);
-  value.Append(MediaGalleriesPermission::kAllAutoDetectedPermission);
+  value_list.clear();
+  value_list.Append(MediaGalleriesPermission::kReadPermission);
+  value_list.Append(MediaGalleriesPermission::kAllAutoDetectedPermission);
   ASSERT_TRUE(permission2->FromValue(&value, nullptr, nullptr));
   EXPECT_TRUE(permission1->Equal(permission2.get()));
 
-  value.ClearList();
-  value.Append(MediaGalleriesPermission::kReadPermission);
-  value.Append(MediaGalleriesPermission::kReadPermission);
-  value.Append(MediaGalleriesPermission::kAllAutoDetectedPermission);
+  value_list.clear();
+  value_list.Append(MediaGalleriesPermission::kReadPermission);
+  value_list.Append(MediaGalleriesPermission::kReadPermission);
+  value_list.Append(MediaGalleriesPermission::kAllAutoDetectedPermission);
   ASSERT_TRUE(permission2->FromValue(&value, nullptr, nullptr));
   EXPECT_TRUE(permission1->Equal(permission2.get()));
 
-  value.ClearList();
-  value.Append(MediaGalleriesPermission::kReadPermission);
-  value.Append(MediaGalleriesPermission::kDeletePermission);
+  value_list.clear();
+  value_list.Append(MediaGalleriesPermission::kReadPermission);
+  value_list.Append(MediaGalleriesPermission::kDeletePermission);
   ASSERT_TRUE(permission1->FromValue(&value, nullptr, nullptr));
 
-  value.ClearList();
-  value.Append(MediaGalleriesPermission::kDeletePermission);
-  value.Append(MediaGalleriesPermission::kReadPermission);
+  value_list.clear();
+  value_list.Append(MediaGalleriesPermission::kDeletePermission);
+  value_list.Append(MediaGalleriesPermission::kReadPermission);
   ASSERT_TRUE(permission2->FromValue(&value, nullptr, nullptr));
   EXPECT_TRUE(permission1->Equal(permission2.get()));
 
-  value.ClearList();
-  value.Append(MediaGalleriesPermission::kReadPermission);
-  value.Append(MediaGalleriesPermission::kCopyToPermission);
-  value.Append(MediaGalleriesPermission::kDeletePermission);
+  value_list.clear();
+  value_list.Append(MediaGalleriesPermission::kReadPermission);
+  value_list.Append(MediaGalleriesPermission::kCopyToPermission);
+  value_list.Append(MediaGalleriesPermission::kDeletePermission);
   ASSERT_TRUE(permission1->FromValue(&value, nullptr, nullptr));
 
-  value.ClearList();
-  value.Append(MediaGalleriesPermission::kDeletePermission);
-  value.Append(MediaGalleriesPermission::kCopyToPermission);
-  value.Append(MediaGalleriesPermission::kReadPermission);
+  value_list.clear();
+  value_list.Append(MediaGalleriesPermission::kDeletePermission);
+  value_list.Append(MediaGalleriesPermission::kCopyToPermission);
+  value_list.Append(MediaGalleriesPermission::kReadPermission);
   ASSERT_TRUE(permission2->FromValue(&value, nullptr, nullptr));
   EXPECT_TRUE(permission1->Equal(permission2.get()));
 }
@@ -234,15 +238,16 @@
       permission_info->CreateAPIPermission());
 
   base::Value value(base::Value::Type::LIST);
-  value.Append(MediaGalleriesPermission::kAllAutoDetectedPermission);
-  value.Append(MediaGalleriesPermission::kReadPermission);
+  base::Value::List& value_list = value.GetList();
+  value_list.Append(MediaGalleriesPermission::kAllAutoDetectedPermission);
+  value_list.Append(MediaGalleriesPermission::kReadPermission);
   ASSERT_TRUE(permission1->FromValue(&value, nullptr, nullptr));
 
-  value.ClearList();
-  value.Append(MediaGalleriesPermission::kAllAutoDetectedPermission);
-  value.Append(MediaGalleriesPermission::kReadPermission);
-  value.Append(MediaGalleriesPermission::kDeletePermission);
-  value.Append(MediaGalleriesPermission::kCopyToPermission);
+  value_list.clear();
+  value_list.Append(MediaGalleriesPermission::kAllAutoDetectedPermission);
+  value_list.Append(MediaGalleriesPermission::kReadPermission);
+  value_list.Append(MediaGalleriesPermission::kDeletePermission);
+  value_list.Append(MediaGalleriesPermission::kCopyToPermission);
   ASSERT_TRUE(permission2->FromValue(&value, nullptr, nullptr));
   EXPECT_FALSE(permission1->Equal(permission2.get()));
 }
@@ -258,8 +263,9 @@
       permission_info->CreateAPIPermission());
 
   base::Value value(base::Value::Type::LIST);
-  value.Append(MediaGalleriesPermission::kAllAutoDetectedPermission);
-  value.Append(MediaGalleriesPermission::kReadPermission);
+  base::Value::List& value_list = value.GetList();
+  value_list.Append(MediaGalleriesPermission::kAllAutoDetectedPermission);
+  value_list.Append(MediaGalleriesPermission::kReadPermission);
   ASSERT_TRUE(permission1->FromValue(&value, nullptr, nullptr));
 
   std::unique_ptr<base::Value> vtmp(permission1->ToValue());
@@ -267,10 +273,10 @@
   ASSERT_TRUE(permission2->FromValue(vtmp.get(), nullptr, nullptr));
   EXPECT_TRUE(permission1->Equal(permission2.get()));
 
-  value.ClearList();
-  value.Append(MediaGalleriesPermission::kReadPermission);
-  value.Append(MediaGalleriesPermission::kDeletePermission);
-  value.Append(MediaGalleriesPermission::kCopyToPermission);
+  value_list.clear();
+  value_list.Append(MediaGalleriesPermission::kReadPermission);
+  value_list.Append(MediaGalleriesPermission::kDeletePermission);
+  value_list.Append(MediaGalleriesPermission::kCopyToPermission);
   ASSERT_TRUE(permission1->FromValue(&value, nullptr, nullptr));
 
   vtmp = permission1->ToValue();
@@ -278,9 +284,9 @@
   ASSERT_TRUE(permission2->FromValue(vtmp.get(), nullptr, nullptr));
   EXPECT_TRUE(permission1->Equal(permission2.get()));
 
-  value.ClearList();
-  value.Append(MediaGalleriesPermission::kReadPermission);
-  value.Append(MediaGalleriesPermission::kDeletePermission);
+  value_list.clear();
+  value_list.Append(MediaGalleriesPermission::kReadPermission);
+  value_list.Append(MediaGalleriesPermission::kDeletePermission);
   ASSERT_TRUE(permission1->FromValue(&value, nullptr, nullptr));
 
   vtmp = permission1->ToValue();
@@ -288,7 +294,7 @@
   ASSERT_TRUE(permission2->FromValue(vtmp.get(), nullptr, nullptr));
   EXPECT_TRUE(permission1->Equal(permission2.get()));
 
-  value.ClearList();
+  value_list.clear();
   // without sub-permission
   ASSERT_TRUE(permission1->FromValue(nullptr, nullptr, nullptr));
 
diff --git a/chrome/common/extensions/api/web_authentication_proxy.idl b/chrome/common/extensions/api/web_authentication_proxy.idl
index d2bcc40a..5655392f 100644
--- a/chrome/common/extensions/api/web_authentication_proxy.idl
+++ b/chrome/common/extensions/api/web_authentication_proxy.idl
@@ -49,7 +49,7 @@
     // extension's ID in a directory named
     // `WebAuthenticationProxyRemoteSessionStateChange` inside the [default
     // user data
-    // directory](https://chromium.googlesource.com/chromium/src/+/master/docs/user_data_dir.md#default-location).
+    // directory](https://chromium.googlesource.com/chromium/src/+/main/docs/user_data_dir.md#default-location).
     //
     // The contents of the file should be empty. I.e., it is not necessary to
     // change the contents of the file in order to trigger this event.
diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc
index dd9d1697..2c7ca0d 100644
--- a/chrome/renderer/chrome_content_renderer_client.cc
+++ b/chrome/renderer/chrome_content_renderer_client.cc
@@ -1602,15 +1602,21 @@
     blink::WebRuntimeFeatures::EnablePrerender2RelatedFeatures(true);
   }
 
-#if !BUILDFLAG(IS_ANDROID) && BUILDFLAG(ENABLE_EXTENSIONS)
-  // WebHID on service workers is only available in extension for now with
-  // feature enabled.
-  if (IsStandaloneContentExtensionProcess() &&
-      base::FeatureList::IsEnabled(
-          features::kEnableWebHidOnExtensionServiceWorker)) {
-    blink::WebRuntimeFeatures::EnableWebHIDOnServiceWorkers(true);
+#if BUILDFLAG(ENABLE_EXTENSIONS)
+  // WebHID and WebUSB on service workers is only available in extensions.
+  if (IsStandaloneContentExtensionProcess()) {
+    if (base::FeatureList::IsEnabled(
+            features::kEnableWebUsbOnExtensionServiceWorker)) {
+      blink::WebRuntimeFeatures::EnableWebUSBOnServiceWorkers(true);
+    }
+#if !BUILDFLAG(IS_ANDROID)
+    if (base::FeatureList::IsEnabled(
+            features::kEnableWebHidOnExtensionServiceWorker)) {
+      blink::WebRuntimeFeatures::EnableWebHIDOnServiceWorkers(true);
+    }
+#endif  // !BUILDFLAG(IS_ANDROID)
   }
-#endif
+#endif  // BUILDFLAG(ENABLE_EXTENSIONS)
 }
 
 bool ChromeContentRendererClient::AllowScriptExtensionForServiceWorker(
diff --git a/chrome/services/system_signals/win/win_system_signals_service_unittest.cc b/chrome/services/system_signals/win/win_system_signals_service_unittest.cc
index 45b2028..4ed5fc1 100644
--- a/chrome/services/system_signals/win/win_system_signals_service_unittest.cc
+++ b/chrome/services/system_signals/win/win_system_signals_service_unittest.cc
@@ -235,7 +235,8 @@
 }
 
 // Tests that AV products are retrieved via WMI on Win7.
-TEST_F(WinSystemSignalsServiceTest, GetAntiVirusSignals_Win7_Success) {
+// TODO(crbug.com/1372568): Fix flaky test.
+TEST_F(WinSystemSignalsServiceTest, DISABLED_GetAntiVirusSignals_Win7_Success) {
   device_signals::AvProduct fake_av_product;
   fake_av_product.display_name = "some display name";
   fake_av_product.product_id = "some product id";
@@ -266,7 +267,9 @@
 }
 
 // Tests when a query error occurs when querying AVs from WMI on Win7.
-TEST_F(WinSystemSignalsServiceTest, GetAntiVirusSignals_Win7_QueryError) {
+// TODO(crbug.com/1372568): Fix flaky test.
+TEST_F(WinSystemSignalsServiceTest,
+       DISABLED_GetAntiVirusSignals_Win7_QueryError) {
   device_signals::WmiAvProductsResponse fake_response;
   fake_response.query_error = base::win::WmiError::kFailedToCreateInstance;
 
@@ -292,8 +295,9 @@
 
 // Tests when items and parsing error are returned when querying AVs from WMI on
 // Win7.
+// TODO(crbug.com/1372568): Fix flaky test.
 TEST_F(WinSystemSignalsServiceTest,
-       GetAntiVirusSignals_Win7_MixedParsingErrors) {
+       DISABLED_GetAntiVirusSignals_Win7_MixedParsingErrors) {
   device_signals::AvProduct fake_av_product;
   fake_av_product.display_name = "some display name";
   fake_av_product.product_id = "some product id";
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index 01aadec..6844a8f 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -1844,8 +1844,6 @@
       "../browser/media/test_license_server.h",
       "../browser/media/test_license_server_config.h",
       "../browser/media/unified_autoplay_browsertest.cc",
-      "../browser/media/webrtc/capture_handle_browsertest.cc",
-      "../browser/media/webrtc/conditional_focus_browsertest.cc",
       "../browser/media/webrtc/media_stream_devices_controller_browsertest.cc",
       "../browser/media/webrtc/multi_capture_browsertest.cc",
       "../browser/media/webrtc/region_capture_browsertest.cc",
@@ -2317,9 +2315,9 @@
       "../browser/wake_lock/wake_lock_browsertest.cc",
       "../browser/web_applications/alternative_error_page_override_info_browsertest.cc",
       "../browser/webauthn/chrome_webauthn_browsertest.cc",
-      "../browser/window_placement/screen_details_browsertest.cc",
-      "../browser/window_placement/window_placement_browsertest.cc",
-      "../browser/window_placement/window_placement_permission_context_browsertest.cc",
+      "../browser/window_management/screen_details_browsertest.cc",
+      "../browser/window_management/window_management_browsertest.cc",
+      "../browser/window_management/window_management_permission_context_browsertest.cc",
       "../common/time_format_browsertest.cc",
       "../renderer/accessibility/read_anything_app_controller_browsertest.cc",
       "../renderer/autofill/autofill_renderer_browsertest.cc",
@@ -2411,6 +2409,8 @@
 
         # These tests also run on Lacros, as part of
         # lacros_chrome_browsertests_run_in_series below.
+        "../browser/media/webrtc/capture_handle_browsertest.cc",
+        "../browser/media/webrtc/conditional_focus_browsertest.cc",
         "../browser/media/webrtc/webrtc_getdisplaymedia_browsertest.cc",
         "../browser/ui/views/intent_picker_bubble_view_browsertest.cc",
         "../browser/ui/views/location_bar/intent_chip_button_browsertest.cc",
@@ -3587,6 +3587,7 @@
         "../browser/ash/accessibility/magnification_controller_browsertest.cc",
         "../browser/ash/accessibility/magnification_manager_browsertest.cc",
         "../browser/ash/accessibility/select_to_speak_browsertest.cc",
+        "../browser/ash/accessibility/service/accessibility_service_client_browsertest.cc",
         "../browser/ash/accessibility/spoken_feedback_app_list_browsertest.cc",
         "../browser/ash/accessibility/spoken_feedback_browsertest.cc",
         "../browser/ash/accessibility/spoken_feedback_browsertest.h",
@@ -4821,6 +4822,8 @@
       "../browser/lacros/wallpaper_lacros_browsertest.cc",
       "../browser/lacros/web_contents_can_go_back_observer_browsertest.cc",
       "../browser/lacros/window_lacros_browsertest.cc",
+      "../browser/media/webrtc/capture_handle_browsertest.cc",
+      "../browser/media/webrtc/conditional_focus_browsertest.cc",
       "../browser/media/webrtc/webrtc_getdisplaymedia_browsertest.cc",
       "../browser/metrics/structured/lacros_structured_metrics_recorder_browsertest.cc",
       "../browser/speech/extension_api/tts_extension_api_lacros_browsertest.cc",
@@ -6089,6 +6092,7 @@
       "../browser/install_verification/win/module_verification_test.cc",
       "../browser/install_verification/win/module_verification_test.h",
       "../browser/media/cdm_document_service_impl_test.cc",
+      "../browser/media/media_foundation_service_monitor_unittest.cc",
       "../browser/metrics/antivirus_metrics_provider_win_unittest.cc",
       "../browser/notifications/win/fake_notification_image_retainer.cc",
       "../browser/notifications/win/fake_notification_image_retainer.h",
@@ -10033,7 +10037,7 @@
     }
 
     if (enable_print_preview) {
-      sources += [ "../browser/window_placement/window_placement_printing_interactive_uitest.cc" ]
+      sources += [ "../browser/window_management/window_management_printing_interactive_uitest.cc" ]
     }
 
     # TODO(crbug.com/931218): Ninja cannot handle certain characters appearing
diff --git a/chrome/test/chromedriver/chrome/bidi_tracker.cc b/chrome/test/chromedriver/chrome/bidi_tracker.cc
index 10689c1..4a32bd8 100644
--- a/chrome/test/chromedriver/chrome/bidi_tracker.cc
+++ b/chrome/test/chromedriver/chrome/bidi_tracker.cc
@@ -38,17 +38,16 @@
     return Status(kOk);
   }
 
-  const base::Value* payloadVal = params.FindKey("payload");
-  if (payloadVal == nullptr) {
+  const base::Value::Dict* payload = params.GetDict().FindDict("payload");
+  if (payload == nullptr) {
     return Status(kUnknownError, "Runtime.bindingCalled missing 'payload'");
   }
 
-  std::string payload = payloadVal->GetString();
-  send_bidi_response_.Run(payload);
+  send_bidi_response_.Run(payload->Clone());
 
   return Status(kOk);
 }
 
-void BidiTracker::SetBidiCallback(SendTextFunc on_bidi_message) {
+void BidiTracker::SetBidiCallback(SendBidiPayloadFunc on_bidi_message) {
   send_bidi_response_ = std::move(on_bidi_message);
 }
diff --git a/chrome/test/chromedriver/chrome/bidi_tracker.h b/chrome/test/chromedriver/chrome/bidi_tracker.h
index 7236622..c67c4ec 100644
--- a/chrome/test/chromedriver/chrome/bidi_tracker.h
+++ b/chrome/test/chromedriver/chrome/bidi_tracker.h
@@ -9,6 +9,7 @@
 #include <string>
 
 #include "base/callback.h"
+#include "base/values.h"
 #include "chrome/test/chromedriver/chrome/devtools_event_listener.h"
 
 namespace base {
@@ -17,7 +18,7 @@
 
 class DevToolsClient;
 class Status;
-typedef base::RepeatingCallback<void(const std::string&)> SendTextFunc;
+typedef base::RepeatingCallback<void(base::Value::Dict)> SendBidiPayloadFunc;
 
 // Tracks the state of the DOM and BiDi messages coming from the browser
 class BidiTracker : public DevToolsEventListener {
@@ -35,10 +36,10 @@
                  const std::string& method,
                  const base::DictionaryValue& params) override;
 
-  void SetBidiCallback(SendTextFunc on_bidi_message);
+  void SetBidiCallback(SendBidiPayloadFunc on_bidi_message);
 
  private:
-  SendTextFunc send_bidi_response_;
+  SendBidiPayloadFunc send_bidi_response_;
 };
 
 #endif  // CHROME_TEST_CHROMEDRIVER_CHROME_BIDI_TRACKER_H_
diff --git a/chrome/test/chromedriver/chrome/devtools_client.h b/chrome/test/chromedriver/chrome/devtools_client.h
index 0756208a..10d28e9 100644
--- a/chrome/test/chromedriver/chrome/devtools_client.h
+++ b/chrome/test/chromedriver/chrome/devtools_client.h
@@ -36,6 +36,8 @@
   // Connect to DevTools if the DevToolsClient is disconnected.
   virtual Status ConnectIfNecessary() = 0;
 
+  virtual Status PostBidiCommand(base::Value::Dict command) = 0;
+
   virtual Status SendCommand(const std::string& method,
                              const base::Value::Dict& params) = 0;
 
diff --git a/chrome/test/chromedriver/chrome/devtools_client_impl.cc b/chrome/test/chromedriver/chrome/devtools_client_impl.cc
index bacf3ef..150f028a 100644
--- a/chrome/test/chromedriver/chrome/devtools_client_impl.cc
+++ b/chrome/test/chromedriver/chrome/devtools_client_impl.cc
@@ -45,6 +45,10 @@
 static constexpr int kSessionNotFoundInspectorCode = -32001;
 static constexpr int kCdpMethodNotFoundCode = -32601;
 static constexpr int kInvalidParamsInspectorCode = -32602;
+static constexpr int kReservedChannelCount = 1;
+static constexpr int kUserChannelCount = 1;
+static constexpr int kMaxChannelCount =
+    kReservedChannelCount + kUserChannelCount;
 
 class ScopedIncrementer {
  public:
@@ -77,6 +81,45 @@
   return os << " (session_id=" << ses_manip.session_id_ << ")";
 }
 
+Status IsBidiMessage(const std::string& method,
+                     const base::Value::Dict& params,
+                     bool* is_bidi_message) {
+  *is_bidi_message = false;
+  if (method != "Runtime.bindingCalled") {
+    return Status{kOk};
+  }
+  const std::string* name = params.FindString("name");
+  if (name == nullptr) {
+    return Status{kUnknownError,
+                  "name is missing in the Runtime.bindingCalled params"};
+  }
+  if (*name != "sendBidiResponse") {
+    return Status{kOk};
+  }
+
+  *is_bidi_message = true;
+  return Status{kOk};
+}
+
+Status DeserializePayload(const base::Value::Dict& params,
+                          base::Value::Dict* result) {
+  result->clear();
+  const std::string* payload = params.FindString("payload");
+  if (!payload) {
+    return Status{kUnknownError,
+                  "payload is missing in the Runtime.bindingCalled params"};
+  }
+
+  absl::optional<base::Value> value =
+      base::JSONReader::Read(*payload, base::JSON_PARSE_CHROMIUM_EXTENSIONS);
+  if (!value || !value->is_dict()) {
+    return Status{kUnknownError, "unable to deserialize the BiDi payload"};
+  }
+
+  *result = std::move(value->GetDict());
+  return Status{kOk};
+}
+
 }  // namespace
 
 namespace internal {
@@ -335,6 +378,11 @@
   return Status{kOk};
 }
 
+Status DevToolsClientImpl::PostBidiCommand(base::Value::Dict command) {
+  // kReservedChannelCount means that we use the first user channel
+  return PostBidiCommandInternal(kReservedChannelCount, std::move(command));
+}
+
 Status DevToolsClientImpl::SendCommand(const std::string& method,
                                        const base::Value::Dict& params) {
   return SendCommandWithTimeout(method, params, nullptr);
@@ -497,6 +545,37 @@
   return root->next_id_++;
 }
 
+Status DevToolsClientImpl::PostBidiCommandInternal(int bidi_channel,
+                                                   base::Value::Dict command) {
+  absl::optional<int> maybe_cmd_id = command.FindInt("id");
+  if (!maybe_cmd_id) {
+    return Status{kInvalidArgument, "BiDi command id not found"};
+  }
+  if (bidi_channel < 0 || bidi_channel >= kMaxChannelCount) {
+    return Status{kUnknownError, "BiDi channel id is out of range"};
+  }
+  int cmd_id = *maybe_cmd_id * kMaxChannelCount + bidi_channel;
+  command.Set("id", cmd_id);
+
+  std::string json;
+  Status status = SerializeAsJson(command, &json);
+  if (status.IsError()) {
+    return status;
+  }
+
+  std::string arg;
+  status = SerializeAsJson(json, &arg);
+  if (status.IsError()) {
+    return status;
+  }
+
+  std::string expression = "onBidiMessage(" + arg + ")";
+
+  base::Value::Dict params;
+  params.Set("expression", expression);
+  return SendCommandAndIgnoreResponse("Runtime.evaluate", params);
+}
+
 Status DevToolsClientImpl::SendCommandInternal(const std::string& method,
                                                const base::Value::Dict& params,
                                                base::Value* result,
@@ -888,7 +967,34 @@
     if (!message_dict->GetString("method", &method))
       return false;
     base::DictionaryValue* params = nullptr;
-    message_dict->GetDictionary("params", &params);
+    bool is_bidi_message = false;
+    if (message_dict->GetDictionary("params", &params)) {
+      Status status =
+          IsBidiMessage(method, params->GetDict(), &is_bidi_message);
+      if (status.IsError()) {
+        LOG(WARNING) << status.message();
+        return false;
+      }
+    }
+
+    if (is_bidi_message) {
+      base::Value::Dict payload;
+      Status status = DeserializePayload(params->GetDict(), &payload);
+      if (status.IsError()) {
+        LOG(WARNING) << status.message();
+        return false;
+      }
+      absl::optional<int> maybe_cmd_id = payload.FindInt("id");
+      if (maybe_cmd_id) {  // if we have a command response
+        // The channel is ignored for now but it will be used in the near future
+        // by the CDP over BiDi code.
+        int cmd_id = *maybe_cmd_id / kMaxChannelCount;
+        payload.Set("id", cmd_id);
+      }
+      // Replace the payload string with the deserialized value to avoid
+      // double deserialization in the BidiTracker.
+      params->GetDict().Set("payload", std::move(payload));
+    }
 
     *type = kEventMessageType;
     event->method = method;
diff --git a/chrome/test/chromedriver/chrome/devtools_client_impl.h b/chrome/test/chromedriver/chrome/devtools_client_impl.h
index b3df4a5..3acc616 100644
--- a/chrome/test/chromedriver/chrome/devtools_client_impl.h
+++ b/chrome/test/chromedriver/chrome/devtools_client_impl.h
@@ -115,6 +115,7 @@
   // Precondition: !IsNull()
   // Postcondition: result.IsError() || IsConnected()
   Status ConnectIfNecessary() override;
+  Status PostBidiCommand(base::Value::Dict command) override;
   Status SendCommand(const std::string& method,
                      const base::Value::Dict& params) override;
   Status SendCommandFromWebSocket(const std::string& method,
@@ -179,6 +180,7 @@
     friend class base::RefCounted<ResponseInfo>;
     ~ResponseInfo();
   };
+  Status PostBidiCommandInternal(int bidi_channel, base::Value::Dict command);
   Status SendCommandInternal(const std::string& method,
                              const base::Value::Dict& params,
                              base::Value* result,
diff --git a/chrome/test/chromedriver/chrome/devtools_client_impl_unittest.cc b/chrome/test/chromedriver/chrome/devtools_client_impl_unittest.cc
index 6f22c53..f92b37c 100644
--- a/chrome/test/chromedriver/chrome/devtools_client_impl_unittest.cc
+++ b/chrome/test/chromedriver/chrome/devtools_client_impl_unittest.cc
@@ -149,26 +149,6 @@
   return CreateCdpResponse(cmd_id, std::move(result), std::string(), resp);
 }
 
-Status WrapBidiCommandInCdpCommand(int cdp_cmd_id,
-                                   const base::Value::Dict& bidi_cmd,
-                                   std::string mapper_session_id,
-                                   base::Value::Dict* cmd) {
-  std::string bidi_cmd_str;
-  if (!base::JSONWriter::Write(bidi_cmd, &bidi_cmd_str)) {
-    return Status(kUnknownError, "cannot serialize a BiDi command");
-  }
-  std::string msg;
-  if (!base::JSONWriter::Write(bidi_cmd_str, &msg)) {
-    return Status(kUnknownError,
-                  "cannot serialize the string: " + bidi_cmd_str);
-  }
-  std::string expression = "onBidiMessage(" + msg + ")";
-  base::Value::Dict params;
-  params.Set("expression", expression);
-  return CreateCdpCommand(cdp_cmd_id, "Runtime.evaluate", std::move(params),
-                          std::move(mapper_session_id), cmd);
-}
-
 Status WrapBidiEventInCdpEvent(const base::Value::Dict& bidi_resp,
                                std::string mapper_session_id,
                                base::Value::Dict* evt) {
@@ -2235,25 +2215,14 @@
       return Status{kOk};
     }
 
-    const std::string* payload = params.FindString("payload");
+    const base::Value::Dict* payload = params.FindDict("payload");
     EXPECT_NE(payload, nullptr);
     if (payload == nullptr) {
       return Status{kUnknownError,
                     "payload is missing in the Runtime.bindingCalled params"};
     }
 
-    absl::optional<base::Value> value = base::JSONReader::Read(*payload);
-    EXPECT_TRUE(value);
-    if (!value) {
-      return Status{kUnknownError, "unable to deserialize the event payload"};
-    }
-
-    EXPECT_TRUE(value->is_dict());
-    if (!value->is_dict()) {
-      return Status{kUnknownError, "event payload is not a dictionary"};
-    }
-
-    payload_list.push_back(value->GetDict().Clone());
+    payload_list.push_back(payload->Clone());
 
     return Status(kOk);
   }
@@ -2280,26 +2249,9 @@
   Status status =
       CreateBidiCommand(111, "method", std::move(params), &bidi_cmd);
   ASSERT_TRUE(status.IsOk()) << status.message();
-  base::Value::Dict cmd;
-  status = WrapBidiCommandInCdpCommand(225, bidi_cmd, mapper_session, &cmd);
+  status = red_client.PostBidiCommand(std::move(bidi_cmd));
   ASSERT_TRUE(status.IsOk()) << status.message();
 
-  int cdp_cmd_id;
-  std::string cdp_method;
-  base::Value::Dict cdp_params;
-  std::string cdp_session_id;
-  ASSERT_TRUE(ParseCommand(cmd, &cdp_cmd_id, &cdp_method, &cdp_params,
-                           &cdp_session_id));
-
-  base::Value result;
-  status = red_client.SendCommandAndGetResult(cdp_method, cdp_params, &result);
-  ASSERT_TRUE(status.IsOk()) << status.message();
-  ASSERT_TRUE(result.is_dict());
-  const std::string* result_type =
-      result.GetDict().FindStringByDottedPath("result.type");
-  ASSERT_NE(nullptr, result_type);
-  ASSERT_EQ("undefined", *result_type);
-
   status = red_client.HandleReceivedEvents();
   ASSERT_TRUE(status.IsOk()) << status.message();
 
@@ -2308,3 +2260,34 @@
   ASSERT_EQ(111, payload.FindInt("id").value_or(-1));
   ASSERT_EQ(196, payload.FindIntByDottedPath("result.pong").value_or(-1));
 }
+
+TEST_F(DevToolsClientImplTest, BidiCommandIds) {
+  // DevToolsClientImpl changes command ids internally.
+  // In this test we check that the response ids are restored in accordance to
+  // the original command ids.
+  std::string mapper_session = "mapper_session";
+  SyncWebSocketFactory factory = base::BindRepeating(
+      &CreateMockSyncWebSocket_S<BidiMockSyncWebSocket>, mapper_session);
+  DevToolsClientImpl root_client("root", "root_session", "http://url", factory);
+  DevToolsClientImpl red_client("red_client", mapper_session);
+  BidiEventListener bidi_listener;
+  red_client.AddListener(&bidi_listener);
+  red_client.AttachTo(&root_client);
+  root_client.ConnectIfNecessary();
+  red_client.ConnectIfNecessary();
+
+  for (int cmd_id : {2, 3, 11, 1000021, 1000022, 1000023}) {
+    base::Value::Dict bidi_cmd;
+    Status status =
+        CreateBidiCommand(cmd_id, "method", base::Value::Dict(), &bidi_cmd);
+    ASSERT_TRUE(status.IsOk()) << status.message();
+    status = red_client.PostBidiCommand(std::move(bidi_cmd));
+    ASSERT_TRUE(status.IsOk()) << status.message();
+    status = red_client.HandleReceivedEvents();
+    ASSERT_TRUE(status.IsOk()) << status.message();
+    ASSERT_EQ(static_cast<size_t>(1), bidi_listener.payload_list.size());
+    const base::Value::Dict& payload = bidi_listener.payload_list.front();
+    ASSERT_EQ(cmd_id, payload.FindInt("id").value_or(-1));
+    bidi_listener.payload_list.clear();
+  }
+}
diff --git a/chrome/test/chromedriver/chrome/stub_devtools_client.cc b/chrome/test/chromedriver/chrome/stub_devtools_client.cc
index d838ad7..4f68a338 100644
--- a/chrome/test/chromedriver/chrome/stub_devtools_client.cc
+++ b/chrome/test/chromedriver/chrome/stub_devtools_client.cc
@@ -35,6 +35,10 @@
   return Status(kOk);
 }
 
+Status StubDevToolsClient::PostBidiCommand(base::Value::Dict command) {
+  return Status{kOk};
+}
+
 Status StubDevToolsClient::SendCommand(const std::string& method,
                                        const base::Value::Dict& params) {
   base::Value result;
diff --git a/chrome/test/chromedriver/chrome/stub_devtools_client.h b/chrome/test/chromedriver/chrome/stub_devtools_client.h
index ccfc789..98c0eee7 100644
--- a/chrome/test/chromedriver/chrome/stub_devtools_client.h
+++ b/chrome/test/chromedriver/chrome/stub_devtools_client.h
@@ -25,6 +25,7 @@
   bool IsNull() const override;
   bool WasCrashed() override;
   Status ConnectIfNecessary() override;
+  Status PostBidiCommand(base::Value::Dict command) override;
   Status SendCommand(const std::string& method,
                      const base::Value::Dict& params) override;
   Status SendCommandFromWebSocket(const std::string& method,
diff --git a/chrome/test/chromedriver/chrome/stub_web_view.cc b/chrome/test/chromedriver/chrome/stub_web_view.cc
index 0010276f..61470ca 100644
--- a/chrome/test/chromedriver/chrome/stub_web_view.cc
+++ b/chrome/test/chromedriver/chrome/stub_web_view.cc
@@ -57,6 +57,10 @@
   return Status(kOk);
 }
 
+Status StubWebView::PostBidiCommand(base::Value::Dict command) {
+  return Status{kOk};
+}
+
 Status StubWebView::SendCommand(const std::string& cmd,
                                 const base::Value::Dict& params) {
   return Status(kOk);
diff --git a/chrome/test/chromedriver/chrome/stub_web_view.h b/chrome/test/chromedriver/chrome/stub_web_view.h
index 38b631d..31aff6b 100644
--- a/chrome/test/chromedriver/chrome/stub_web_view.h
+++ b/chrome/test/chromedriver/chrome/stub_web_view.h
@@ -28,6 +28,7 @@
   Status Reload(const Timeout* timeout) override;
   Status Freeze(const Timeout* timeout) override;
   Status Resume(const Timeout* timeout) override;
+  Status PostBidiCommand(base::Value::Dict command) override;
   Status SendCommand(const std::string& cmd,
                      const base::Value::Dict& params) override;
   Status SendCommandFromWebSocket(const std::string& cmd,
diff --git a/chrome/test/chromedriver/chrome/util.cc b/chrome/test/chromedriver/chrome/util.cc
index 1e02bfea..ad300d3 100644
--- a/chrome/test/chromedriver/chrome/util.cc
+++ b/chrome/test/chromedriver/chrome/util.cc
@@ -25,3 +25,7 @@
 Status SerializeAsJson(const base::Value& value, std::string* json) {
   return SerializeAsJsonT(value, json);
 }
+
+Status SerializeAsJson(const std::string& value, std::string* json) {
+  return SerializeAsJsonT(value, json);
+}
diff --git a/chrome/test/chromedriver/chrome/util.h b/chrome/test/chromedriver/chrome/util.h
index 99e1755..bc6fb450 100644
--- a/chrome/test/chromedriver/chrome/util.h
+++ b/chrome/test/chromedriver/chrome/util.h
@@ -14,4 +14,6 @@
 
 Status SerializeAsJson(const base::Value& value, std::string* json);
 
+Status SerializeAsJson(const std::string& value, std::string* json);
+
 #endif  // CHROME_TEST_CHROMEDRIVER_CHROME_UTIL_H_
diff --git a/chrome/test/chromedriver/chrome/web_view.h b/chrome/test/chromedriver/chrome/web_view.h
index c731d6c..21dc4e2 100644
--- a/chrome/test/chromedriver/chrome/web_view.h
+++ b/chrome/test/chromedriver/chrome/web_view.h
@@ -72,6 +72,9 @@
   // Resume the current page.
   virtual Status Resume(const Timeout* timeout) = 0;
 
+  // Send the BiDi command to the BiDiMapper
+  virtual Status PostBidiCommand(base::Value::Dict command) = 0;
+
   // Send a command to the DevTools debugger
   virtual Status SendCommand(const std::string& cmd,
                              const base::Value::Dict& params) = 0;
diff --git a/chrome/test/chromedriver/chrome/web_view_impl.cc b/chrome/test/chromedriver/chrome/web_view_impl.cc
index 71a26d37..fdf572c 100644
--- a/chrome/test/chromedriver/chrome/web_view_impl.cc
+++ b/chrome/test/chromedriver/chrome/web_view_impl.cc
@@ -514,6 +514,10 @@
                                          timeout);
 }
 
+Status WebViewImpl::PostBidiCommand(base::Value::Dict command) {
+  return client_->PostBidiCommand(std::move(command));
+}
+
 Status WebViewImpl::SendCommand(const std::string& cmd,
                                 const base::Value::Dict& params) {
   return client_->SendCommand(cmd, params);
diff --git a/chrome/test/chromedriver/chrome/web_view_impl.h b/chrome/test/chromedriver/chrome/web_view_impl.h
index caa4e6d2..5fb41b8 100644
--- a/chrome/test/chromedriver/chrome/web_view_impl.h
+++ b/chrome/test/chromedriver/chrome/web_view_impl.h
@@ -61,6 +61,7 @@
   Status Reload(const Timeout* timeout) override;
   Status Freeze(const Timeout* timeout) override;
   Status Resume(const Timeout* timeout) override;
+  Status PostBidiCommand(base::Value::Dict command) override;
   Status SendCommand(const std::string& cmd,
                      const base::Value::Dict& params) override;
   Status SendCommandFromWebSocket(const std::string& cmd,
diff --git a/chrome/test/chromedriver/session.cc b/chrome/test/chromedriver/session.cc
index 1a0bef879..e87ea9e 100644
--- a/chrome/test/chromedriver/session.cc
+++ b/chrome/test/chromedriver/session.cc
@@ -164,21 +164,14 @@
   return bidi_mapper_is_launched_;
 }
 
-void Session::OnBidiResponse(const std::string& payload) {
-  absl::optional<base::Value> payload_parsed =
-      base::JSONReader::Read(payload, base::JSON_PARSE_CHROMIUM_EXTENSIONS);
-  if (!payload_parsed || !payload_parsed->is_dict()) {
-    LOG(WARNING) << "BiDi response is not a map: " << payload;
-    return;
-  }
-
-  if (payload_parsed->GetDict().FindBool("launched").value_or(false)) {
+void Session::OnBidiResponse(base::Value::Dict payload) {
+  if (payload.FindBool("launched").value_or(false)) {
     bidi_mapper_is_launched_ = true;
     return;
   }
 
   // If there is no active bidi connections the events will be accumulated.
-  bidi_response_queue_.push(std::move(*payload_parsed));
+  bidi_response_queue_.push(std::move(payload));
   for (; bidi_response_queue_.size() > kBidiQueueCapacity;
        bidi_response_queue_.pop()) {
     LOG(WARNING) << "BiDi response queue overflow, dropping the message: "
@@ -216,7 +209,7 @@
     // connections. The payload will have to be parsed and routed to the
     // appropriate connection. The events will have to be delivered to all
     // connections.
-    base::Value response_parsed = std::move(bidi_response_queue_.front());
+    base::Value::Dict response_parsed = std::move(bidi_response_queue_.front());
     std::string response;
     if (!base::JSONWriter::Write(response_parsed, &response)) {
       LOG(WARNING) << "unable to serialize a BiDi response";
@@ -227,7 +220,7 @@
       // broken we simply ignore this fact as the message cannot be delivered
       // over that connection anyway.
       conn.send_response.Run(response);
-      absl::optional<int> response_id = response_parsed.GetDict().FindInt("id");
+      absl::optional<int> response_id = response_parsed.FindInt("id");
       if (response_id && *response_id == awaited_bidi_response_id) {
         awaited_bidi_response_id = -1;
         // No "id" means that we are dealing with an event
diff --git a/chrome/test/chromedriver/session.h b/chrome/test/chromedriver/session.h
index 211185b..26383a7 100644
--- a/chrome/test/chromedriver/session.h
+++ b/chrome/test/chromedriver/session.h
@@ -103,7 +103,7 @@
   std::vector<WebDriverLog*> GetAllLogs() const;
 
   bool BidiMapperIsLaunched() const;
-  void OnBidiResponse(const std::string& payload);
+  void OnBidiResponse(base::Value::Dict payload);
   void AddBidiConnection(int connection_id,
                          SendTextFunc send_response,
                          CloseFunc close_connection);
@@ -177,7 +177,7 @@
   std::vector<BidiConnection> bidi_connections_;
   // If there is no active connections the messages from Chrome are accumulated
   // in this queue until a connection is created or the queue overflows.
-  std::queue<base::Value> bidi_response_queue_;
+  std::queue<base::Value::Dict> bidi_response_queue_;
 };
 
 Session* GetThreadLocalSession();
diff --git a/chrome/test/chromedriver/session_commands.cc b/chrome/test/chromedriver/session_commands.cc
index b54af3b..9376ab9 100644
--- a/chrome/test/chromedriver/session_commands.cc
+++ b/chrome/test/chromedriver/session_commands.cc
@@ -1452,40 +1452,34 @@
     return status;
   }
 
-  absl::optional<base::Value> dataParsed =
+  absl::optional<base::Value> data_parsed =
       base::JSONReader::Read(data, base::JSON_PARSE_CHROMIUM_EXTENSIONS);
 
-  if (!dataParsed) {
+  if (!data_parsed) {
     return Status(kUnknownError, "cannot parse the BiDi command: " + data);
   }
 
-  if (!dataParsed->is_dict()) {
+  if (!data_parsed->is_dict()) {
     return Status(kUnknownError,
                   "a JSON map is expected as a BiDi command: " + data);
   }
 
-  absl::optional<int> cmd_id = dataParsed->GetDict().FindInt("id");
+  absl::optional<int> cmd_id = data_parsed->GetDict().FindInt("id");
   if (!cmd_id) {
     return Status(kUnknownError, "BiDi command is missing 'id' field: " + data);
   }
 
-  std::string* method = dataParsed->GetDict().FindString("method");
+  std::string* method = data_parsed->GetDict().FindString("method");
   if (!method) {
     return Status(kUnknownError,
                   "BiDi command is missing 'method' field: " + data);
   }
 
-  std::string msg;
-  if (!base::JSONWriter::Write(data, &msg)) {
-    return Status(kUnknownError, "cannot serialize the BiDi command: " + data);
-  }
-  std::string expression = "onBidiMessage(" + msg + ")";
-
   if (*method == "browsingContext.close") {
     // Closing of the context is handled in a blocking way.
     // This simplifies us closing the browser if the last tab was closed.
     session->awaited_bidi_response_id = *cmd_id;
-    status = web_view->EvaluateScript(std::string(), expression, false, value);
+    status = web_view->PostBidiCommand(std::move(data_parsed->GetDict()));
     base::RepeatingCallback<Status(bool*)> bidi_response_is_received =
         base::BindRepeating(
             [](Session* session, int cmd_id, bool* condition_is_met) {
@@ -1522,7 +1516,7 @@
       status = session->chrome->Quit();
     }
   } else {
-    status = web_view->EvaluateScript(std::string(), expression, false, value);
+    status = web_view->PostBidiCommand(std::move(data_parsed->GetDict()));
   }
 
   return status;
diff --git a/chrome/test/data/banners/manifest_with_screenshots.json b/chrome/test/data/banners/manifest_with_screenshots.json
index fff1fd065..c60950e 100644
--- a/chrome/test/data/banners/manifest_with_screenshots.json
+++ b/chrome/test/data/banners/manifest_with_screenshots.json
@@ -6,13 +6,15 @@
       "src": "screenshot1-portrait.jpeg",
       "type": "image/jpeg",
       "sizes": "409x728",
-      "form_factor": "narrow"
+      "form_factor": "narrow",
+      "label": "a narrow screenshot"
     },
     {
       "src": "screenshot1.jpeg",
       "type": "image/jpeg",
       "sizes": "728x409",
-      "form_factor": "wide"
+      "form_factor": "wide",
+      "label": "a wide screenshot"
     },
     {
       "src": "screenshot2.jpeg",
diff --git a/chrome/test/data/pdf/viewport_test.ts b/chrome/test/data/pdf/viewport_test.ts
index 02914bb..1fad1ff 100644
--- a/chrome/test/data/pdf/viewport_test.ts
+++ b/chrome/test/data/pdf/viewport_test.ts
@@ -318,6 +318,25 @@
     chrome.test.succeed();
   },
 
+  function testSetFittingType() {
+    const viewport = getZoomableViewport(
+        new MockElement(400, 500, null), new MockSizer(), 0, 1);
+
+    viewport.setFittingType(FittingType.FIT_TO_PAGE);
+    chrome.test.assertEq(FittingType.FIT_TO_PAGE, viewport.fittingType);
+
+    viewport.setFittingType(FittingType.FIT_TO_WIDTH);
+    chrome.test.assertEq(FittingType.FIT_TO_WIDTH, viewport.fittingType);
+
+    viewport.setFittingType(FittingType.FIT_TO_HEIGHT);
+    chrome.test.assertEq(FittingType.FIT_TO_HEIGHT, viewport.fittingType);
+
+    viewport.setFittingType(FittingType.NONE);
+    chrome.test.assertEq(FittingType.NONE, viewport.fittingType);
+
+    chrome.test.succeed();
+  },
+
   function testFitToWidth() {
     const mockWindow = new MockElement(100, 100, null);
     const mockSizer = new MockSizer();
diff --git a/chrome/test/data/webui/chromeos/os_feedback_ui/feedback_flow_test.js b/chrome/test/data/webui/chromeos/os_feedback_ui/feedback_flow_test.js
index 2c10444..61dd5bea 100644
--- a/chrome/test/data/webui/chromeos/os_feedback_ui/feedback_flow_test.js
+++ b/chrome/test/data/webui/chromeos/os_feedback_ui/feedback_flow_test.js
@@ -472,6 +472,8 @@
         activePage.shadowRoot.querySelector('#assistantLogsContainer');
     assertTrue(!!assistantCheckbox);
     assertFalse(isVisible(assistantCheckbox));
+    // Set the flag back to true.
+    fakeInternalUserFeedbackContext.fromAssistant = true;
   });
 
   // Test the navigation from confirmation page to search page after the
diff --git a/chrome/test/data/webui/chromeos/os_feedback_ui/share_data_page_test.js b/chrome/test/data/webui/chromeos/os_feedback_ui/share_data_page_test.js
index 6a92b51f..d473921 100644
--- a/chrome/test/data/webui/chromeos/os_feedback_ui/share_data_page_test.js
+++ b/chrome/test/data/webui/chromeos/os_feedback_ui/share_data_page_test.js
@@ -439,6 +439,82 @@
     assertEquals(0, report.feedbackContext.traceId);
   });
 
+  /**
+   * Test that when the send button is clicked, an on-continue is fired.
+   * Case 7: Report won't have assistant log flags if isInternalAccount
+   * and fromAssistant flag in feedbackContext is false.
+   */
+  test('ReportWillNotHaveAssistantLogIfFromAssistantSetFalse', async () => {
+    await initializePage();
+    page.feedbackContext = fakeFeedbackContext;
+
+    // The report should not have assistant logs by default.
+    getElement('#assistantLogsContainer').hidden = true;
+    assertTrue(getElement('#assiatantLogsCheckbox').checked);
+    const report = (await clickSendAndWait(page)).report;
+
+    assertFalse(report.feedbackContext.assistantDebugInfoAllowed);
+    assertFalse(report.feedbackContext.fromAssistant);
+  });
+
+  /**
+   * Test that when the send button is clicked, an on-continue is fired.
+   * Case 8: Send assistant log if assistant log checkbox is checked,
+   * the report should show assistant Debug Info allowed.
+   */
+  test('SendAssistantLogWithReport', async () => {
+    await initializePage();
+    page.feedbackContext = fakeInternalUserFeedbackContext;
+
+    assertTrue(!!getElement('#assistantLogsContainer'));
+    getElement('#assistantLogsContainer').hidden = false;
+    getElement('#assiatantLogsCheckbox').checked = true;
+
+    const report = (await clickSendAndWait(page)).report;
+    assertTrue(report.feedbackContext.assistantDebugInfoAllowed);
+    assertTrue(report.feedbackContext.fromAssistant);
+  });
+
+  /**
+   * Test that when the send button is clicked, an on-continue is fired.
+   * Case 9: Don't include assistant log if assistant log checkbox is unchecked,
+   * the report should show assistant Debug Info not allowed.
+   */
+  test('SendAssistantLogWithReport', async () => {
+    await initializePage();
+    page.feedbackContext = fakeInternalUserFeedbackContext;
+
+    assertTrue(!!getElement('#assistantLogsContainer'));
+    getElement('#assistantLogsContainer').hidden = false;
+
+    // Uncheck the assistant logs checkbox.
+    getElement('#assiatantLogsCheckbox').checked = false;
+
+    const report = (await clickSendAndWait(page)).report;
+
+    assertFalse(report.feedbackContext.assistantDebugInfoAllowed);
+    assertTrue(report.feedbackContext.fromAssistant);
+  });
+
+  /**
+   * Case 10: Test when user using internal account but feedback is not called
+   * from Assistant, and the report should not have fromAssistant and
+   * assistantDebugInfoAllowed flags set true.
+   */
+  test('SendReportWithInternalAccountButNotFromAssistant', async () => {
+    await initializePage();
+    page.feedbackContext = fakeInternalUserFeedbackContext;
+    page.feedbackContext.fromAssistant = false;
+
+    assertTrue(isVisible(getElement('#assistantLogsContainer')));
+    assertTrue(getElement('#assiatantLogsCheckbox').checked);
+
+    const report = (await clickSendAndWait(page)).report;
+
+    assertFalse(report.feedbackContext.assistantDebugInfoAllowed);
+    assertFalse(report.feedbackContext.fromAssistant);
+  });
+
   // Test that the send button will be disabled once clicked.
   test('DisableSendButtonAfterClick', async () => {
     await initializePage();
diff --git a/chrome/test/data/webui/cr_components/chromeos/cr_components_chromeos_v3_browsertest.js b/chrome/test/data/webui/cr_components/chromeos/cr_components_chromeos_v3_browsertest.js
index dbbc52cf..c994b1d 100644
--- a/chrome/test/data/webui/cr_components/chromeos/cr_components_chromeos_v3_browsertest.js
+++ b/chrome/test/data/webui/cr_components/chromeos/cr_components_chromeos_v3_browsertest.js
@@ -109,7 +109,6 @@
       return {
         enabled: [
           'chromeos::features::kSimLockPolicy',
-          'ash::features::kBluetoothRevamp',
         ],
       };
     }
diff --git a/chrome/test/data/webui/new_tab_page/BUILD.gn b/chrome/test/data/webui/new_tab_page/BUILD.gn
index 2d1fa2a..2e71a8cb 100644
--- a/chrome/test/data/webui/new_tab_page/BUILD.gn
+++ b/chrome/test/data/webui/new_tab_page/BUILD.gn
@@ -18,6 +18,7 @@
                            "customize_shortcuts_test.ts",
                            "doodle_share_dialog_focus_test.ts",
                            "doodle_share_dialog_test.ts",
+                           "lens_upload_dialog_test.ts",
                            "logo_test.ts",
                            "metrics_test_support.ts",
                            "metrics_utils_test.ts",
diff --git a/chrome/test/data/webui/new_tab_page/app_test.ts b/chrome/test/data/webui/new_tab_page/app_test.ts
index 9a91049a..6d53689 100644
--- a/chrome/test/data/webui/new_tab_page/app_test.ts
+++ b/chrome/test/data/webui/new_tab_page/app_test.ts
@@ -5,7 +5,7 @@
 import 'chrome://webui-test/mojo_webui_test_support.js';
 
 import {counterfactualLoad, Module, ModuleDescriptor, ModuleRegistry} from 'chrome://new-tab-page/lazy_load.js';
-import {$$, AppElement, BackgroundManager, BrowserCommandProxy, CustomizeDialogPage, NewTabPageProxy, NtpElement, VoiceAction, WindowProxy} from 'chrome://new-tab-page/new_tab_page.js';
+import {$$, AppElement, BackgroundManager, BrowserCommandProxy, CustomizeDialogPage, LensUploadDialogElement, NewTabPageProxy, NtpElement, VoiceAction, WindowProxy} from 'chrome://new-tab-page/new_tab_page.js';
 import {PageCallbackRouter, PageHandlerRemote, PageInterface} from 'chrome://new-tab-page/new_tab_page.mojom-webui.js';
 import {Command, CommandHandlerRemote} from 'chrome://resources/js/browser_command/browser_command.mojom-webui.js';
 import {isMac} from 'chrome://resources/js/cr.m.js';
@@ -660,4 +660,34 @@
       assertFalse($$(app, '#customizeButtonContainer')!.hasAttribute('hidden'));
     });
   });
+
+  suite('Lens upload dialog', () => {
+    suiteSetup(() => {
+      loadTimeData.overrideValues({
+        realboxLensSearch: true,
+      });
+    });
+
+    test('realbox is not visible when Lens upload dialog is open', async () => {
+      // Arrange.
+      callbackRouterRemote.setTheme(createTheme());
+      await callbackRouterRemote.$.flushForTesting();
+
+      // Act.
+      $$(app, '#realbox')!.dispatchEvent(new Event('open-lens-search'));
+      await flushTasks();
+
+      // Assert.
+      assertStyle($$(app, '#realbox')!, 'visibility', 'hidden');
+
+      // Act.
+      (app.shadowRoot!.querySelector(LensUploadDialogElement.is) as
+       LensUploadDialogElement)
+          .closeDialog();
+      await flushTasks();
+
+      // Assert.
+      assertStyle($$(app, '#realbox')!, 'visibility', 'visible');
+    });
+  });
 });
diff --git a/chrome/test/data/webui/new_tab_page/lens_upload_dialog_test.ts b/chrome/test/data/webui/new_tab_page/lens_upload_dialog_test.ts
new file mode 100644
index 0000000..3f4b2f7
--- /dev/null
+++ b/chrome/test/data/webui/new_tab_page/lens_upload_dialog_test.ts
@@ -0,0 +1,77 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'chrome://webui-test/mojo_webui_test_support.js';
+import 'chrome://new-tab-page/new_tab_page.js';
+
+import {LensUploadDialogElement} from 'chrome://new-tab-page/new_tab_page.js';
+import {assertFalse, assertTrue} from 'chrome://webui-test/chai_assert.js';
+import {waitAfterNextRender} from 'chrome://webui-test/polymer_test_util.js';
+
+suite('LensUploadDialogTest', () => {
+  let uploadDialog: LensUploadDialogElement;
+  let wrapperElement: HTMLDivElement;
+  let outsideClickTarget: HTMLDivElement;
+
+  setup(() => {
+    document.body.innerHTML = '';
+    // Larger than wrapper so that we can test outside clicks.
+    document.body.style.width = '1000px';
+
+    wrapperElement = document.createElement('div');
+    // Rough approximate size of the realbox.
+    wrapperElement.style.width = '500px';
+    wrapperElement.style.margin = '0 auto';
+    document.body.appendChild(wrapperElement);
+
+    // Click target to test outside clicks.
+    outsideClickTarget = document.createElement('div');
+    outsideClickTarget.style.width = '50px';
+    outsideClickTarget.style.height = '50px';
+    outsideClickTarget.style.border = '1px dashed red';
+    document.body.appendChild(outsideClickTarget);
+
+    uploadDialog = document.createElement('ntp-lens-upload-dialog');
+    wrapperElement.appendChild(uploadDialog);
+  });
+
+  test('hidden be default', () => {
+    // Assert.
+    assertTrue(uploadDialog.$.dialog.hidden);
+  });
+
+  test('shows when openDialog is called', () => {
+    // Act.
+    uploadDialog.openDialog();
+
+    // Assert.
+    assertFalse(uploadDialog.$.dialog.hidden);
+  });
+
+  test('hides when close button is clicked', () => {
+    // Arrange.
+    uploadDialog.openDialog();
+
+    // Act.
+    const closeButton =
+      uploadDialog.shadowRoot!.querySelector('#closeButton') as HTMLElement;
+    closeButton.click();
+
+    // Assert.
+    assertTrue(uploadDialog.$.dialog.hidden);
+  });
+
+  test('clicking outside the upload dialog closes the dialog', async () => {
+    // Arrange.
+    uploadDialog.openDialog();
+
+    await waitAfterNextRender(uploadDialog);
+
+    // Act.
+    outsideClickTarget.click();
+
+    // Assert.
+    assertTrue(uploadDialog.$.dialog.hidden);
+  });
+});
diff --git a/chrome/test/data/webui/new_tab_page/new_tab_page_browsertest.js b/chrome/test/data/webui/new_tab_page/new_tab_page_browsertest.js
index ed03d11..79027c55a 100644
--- a/chrome/test/data/webui/new_tab_page/new_tab_page_browsertest.js
+++ b/chrome/test/data/webui/new_tab_page/new_tab_page_browsertest.js
@@ -64,6 +64,10 @@
   runMochaSuite('NewTabPageAppTest customize chrome side panel');
 });
 
+TEST_F('NewTabPageAppTest', 'LensUploadDialog', function() {
+  runMochaSuite('NewTabPageAppTest Lens upload dialog');
+});
+
 var NewTabPageCustomizeDialogTest = class extends NewTabPageBrowserTest {
   /** @override */
   get browsePreload() {
@@ -141,6 +145,17 @@
   mocha.run();
 });
 
+var NewTabPageLensUploadDialogTest = class extends NewTabPageBrowserTest {
+  /** @override */
+  get browsePreload() {
+    return 'chrome://new-tab-page/test_loader.html?module=new_tab_page/lens_upload_dialog_test.js';
+  }
+};
+
+TEST_F('NewTabPageLensUploadDialogTest', 'All', function() {
+  mocha.run();
+});
+
 var NewTabPageRealboxTest = class extends NewTabPageBrowserTest {
   /** @override */
   get browsePreload() {
diff --git a/chrome/test/data/webui/new_tab_page/realbox/realbox_test.ts b/chrome/test/data/webui/new_tab_page/realbox/realbox_test.ts
index 227c30ed..84b6a9ec9 100644
--- a/chrome/test/data/webui/new_tab_page/realbox/realbox_test.ts
+++ b/chrome/test/data/webui/new_tab_page/realbox/realbox_test.ts
@@ -2454,8 +2454,7 @@
 
     assertEquals(
         pedalEl.querySelector<HTMLImageElement>('#action-icon')!.src,
-        'chrome://theme/current-channel-logo');  // Default Pedal
-                                                 // Icon
+        'chrome://theme/current-channel-logo');  // Default Pedal Icon
 
     const leftClick = new MouseEvent('click', {
       bubbles: true,
@@ -2508,8 +2507,7 @@
 
     assertEquals(
         pedalEl.querySelector<HTMLImageElement>('#action-icon')!.src,
-        'chrome://theme/current-channel-logo');  // Default Pedal
-                                                 // Icon
+        'chrome://theme/current-channel-logo');  // Default Pedal Icon
 
     const leftClick = new MouseEvent('click', {
       bubbles: true,
@@ -2592,7 +2590,32 @@
 
       // Restore.
       loadTimeData.overrideValues({
-        realboxImageSearch: false,
+        realboxLensSearch: false,
+      });
+    });
+
+    test('clicking Lens search button sends Lens search event', async () => {
+      // Arrange.
+      loadTimeData.overrideValues({
+        realboxLensSearch: true,
+      });
+      document.body.innerHTML = '';
+      realbox = document.createElement('ntp-realbox');
+      document.body.appendChild(realbox);
+      const whenOpenLensSearch = eventToPromise('open-lens-search', realbox);
+      await testProxy.callbackRouterRemote.$.flushForTesting();
+
+      // Act.
+      const lensButton =
+        realbox.shadowRoot!.querySelector('#lensSearchButton') as HTMLElement;
+      lensButton.click();
+
+      // Assert.
+      await whenOpenLensSearch;
+
+      // Restore.
+      loadTimeData.overrideValues({
+        realboxLensSearch: false,
       });
     });
   });
diff --git a/chrome/test/data/webui/settings/BUILD.gn b/chrome/test/data/webui/settings/BUILD.gn
index 5d980d6..bfaba09 100644
--- a/chrome/test/data/webui/settings/BUILD.gn
+++ b/chrome/test/data/webui/settings/BUILD.gn
@@ -113,6 +113,7 @@
   "settings_main_test.ts",
   "settings_menu_interactive_ui_test.ts",
   "settings_page_test_util.ts",
+  "settings_performance_menu_test.ts",
   "settings_slider_tests.ts",
   "settings_subpage_test.ts",
   "settings_textarea_tests.ts",
diff --git a/chrome/test/data/webui/settings/chromeos/fake_bluetooth.js b/chrome/test/data/webui/settings/chromeos/fake_bluetooth.js
deleted file mode 100644
index 9608210d..0000000
--- a/chrome/test/data/webui/settings/chromeos/fake_bluetooth.js
+++ /dev/null
@@ -1,174 +0,0 @@
-// Copyright 2015 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import {assert} from 'chrome://resources/js/assert.js';
-import {FakeChromeEvent} from 'chrome://test/fake_chrome_event.js';
-
-/**
- * @fileoverview Fake implementation of chrome.bluetooth for testing.
- */
-/**
- * Fake of the chrome.bluetooth API.
- * @constructor
- * @implements {Bluetooth}
- */
-export function FakeBluetooth() {
-  /** @type {!chrome.bluetooth.AdapterState} */ this.adapterState_ = {
-    address: '00:11:22:33:44:55:66',
-    name: 'Fake Adapter',
-    powered: false,
-    available: true,
-    discovering: false,
-  };
-
-  /** @type {!Array<!chrome.bluetooth.Device>} */ this.devices = [];
-}
-
-FakeBluetooth.prototype = {
-  // Public testing methods.
-
-  /**
-   * @param {!{
-   *    address: (string|undefined),
-   *    name: (string|undefined),
-   *    powered: (boolean|undefined),
-   *    available: (boolean|undefined),
-   *    discovering: (boolean|undefined)
-   *  }} newState
-   */
-  simulateAdapterStateChangedForTest: function(newState) {
-    Object.assign(this.adapterState_, newState);
-    this.onAdapterStateChanged.callListeners(
-        Object.assign({}, this.adapterState_));
-  },
-
-  /** @return {!chrome.bluetooth.AdapterState} */
-  getAdapterStateForTest: function() {
-    return Object.assign({}, this.adapterState_);
-  },
-
-  clearDevicesForTest: function() {
-    this.devices.length = 0;
-  },
-
-  /** @param {!Array<!chrome.bluetooth.Device>} devices */
-  simulateDevicesAddedForTest: function(devices) {
-    const newDevices = devices.slice();
-    // Make sure the new devices don't already exist.
-    for (const d of newDevices) {
-      const found = this.devices.find(element => {
-        return element.address === d.address;
-      });
-      assert(
-          !found,
-          'Device already added. Use ' +
-              'simulateDeviceUpdatedForTest to update existing ' +
-              'devices.');
-    }
-    this.devices.push(...newDevices);
-    // The underlying Bluetooth API always returns the devices sorted by
-    // address.
-    this.devices.sort((d1, d2) => {
-      if (d1.address < d2.address) {
-        return -1;
-      }
-      if (d1.address > d2.address) {
-        return 1;
-      }
-      return 0;
-    });
-
-    for (const newDevice of newDevices) {
-      this.onDeviceAdded.callListeners(newDevice);
-    }
-  },
-
-  /** @param {!Array<!String>} devices */
-  simulateDevicesRemovedForTest: function(deviceAddresses) {
-    for (const deviceAddress of deviceAddresses) {
-      const removedDeviceIndex = this.devices.findIndex(element => {
-        return element.address === deviceAddress;
-      });
-      assert(
-          removedDeviceIndex !== -1, 'Tried to remove a non-existent device.');
-
-      const [removedDevice] = this.devices.splice(removedDeviceIndex, 1);
-      this.onDeviceRemoved.callListeners(removedDevice);
-    }
-  },
-
-  /** @param {!chrome.bluetooth.Device} updateDevice */
-  simulateDeviceUpdatedForTest: function(updatedDevice) {
-    const updatedDeviceIndex = this.devices.findIndex(element => {
-      return element.address === updatedDevice.address;
-    });
-    assert(updatedDeviceIndex !== -1, 'Tried to update a non-existent device.');
-    this.devices[updatedDeviceIndex] = updatedDevice;
-    this.onDeviceChanged.callListeners(updatedDevice);
-  },
-
-  /**
-   * @param {string}
-   * @return {!chrome.bluetooth.Device}
-   */
-  getDeviceForTest: function(address) {
-    return this.devices.find(function(d) {
-      return d.address === address;
-    });
-  },
-
-  // Bluetooth overrides.
-  /** @override */
-  getAdapterState: function(callback) {
-    callback(Object.assign({}, this.adapterState_));
-  },
-
-  /** @override */
-  getDevice: assertNotReached,
-
-  /** @override */
-  getDevices: function(opt_filter, opt_callback) {
-    if (opt_callback) {
-      opt_callback(this.devices.slice());
-    }
-  },
-
-  /** @override */
-  startDiscovery: function(callback) {
-    assertTrue(
-        this.adapterState_.available && this.adapterState_.powered,
-        'Adapter should be available and powered on before discovering.');
-    assertFalse(
-        this.adapterState_.discovering, 'Adapter is already discovering.');
-    this.simulateAdapterStateChangedForTest({
-      available: true,
-      powered: true,
-      discovering: true,
-    });
-    callback();
-  },
-
-  /** @override */
-  stopDiscovery: function(callback) {
-    assertTrue(this.adapterState_.discovering, 'Adapter is not discovering.');
-    this.simulateAdapterStateChangedForTest({
-      available: true,
-      powered: true,
-      discovering: false,
-    });
-    callback();
-  },
-
-  /** @override */
-  onAdapterStateChanged: new FakeChromeEvent(),
-
-  /** @override */
-  onDeviceAdded: new FakeChromeEvent(),
-
-  /** @override */
-  onDeviceChanged: new FakeChromeEvent(),
-
-  /** @override */
-  onDeviceRemoved: new FakeChromeEvent(),
-};
diff --git a/chrome/test/data/webui/settings/chromeos/fake_bluetooth_private.js b/chrome/test/data/webui/settings/chromeos/fake_bluetooth_private.js
deleted file mode 100644
index 6df3f53..0000000
--- a/chrome/test/data/webui/settings/chromeos/fake_bluetooth_private.js
+++ /dev/null
@@ -1,109 +0,0 @@
-// Copyright 2015 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import {FakeChromeEvent} from 'chrome://test/fake_chrome_event.js';
-
-/**
- * @fileoverview Fake implementation of chrome.bluetoothPrivate for testing.
- */
-
-/**
- * Fake of the chrome.bluetooth API.
- * @param {!Bluetooth} bluetoothApi
- * @constructor
- * @implements {BluetoothPrivate}
- */
-export function FakeBluetoothPrivate(bluetoothApi) {
-  /** @private {!Bluetooth} */ this.bluetoothApi_ = bluetoothApi;
-
-  /** @type {!Set<string>} */ this.connectedDevices_ = new Set();
-
-  /** @private {?chrome.bluetoothPrivate.NewAdapterState} */
-  this.lastSetAdapterStateValue_ = null;
-
-  /** @private {?function()} */
-  this.lastSetAdapterStateCallback_ = null;
-
-  /** @type {!Object<!chrome.bluetoothPrivate.SetPairingResponseOptions>} */
-  this.pairingResponses_ = {};
-}
-
-FakeBluetoothPrivate.prototype = {
-  // Public testing methods.
-
-  simulateSuccessfulSetAdapterStateCallForTest: function() {
-    // Swap values here to avoid reentrancy issues when we run the callback.
-    const lastStateValue = this.lastSetAdapterStateValue_;
-    this.lastSetAdapterStateValue_ = null;
-    const callback = this.lastSetAdapterStateCallback_;
-    this.lastSetAdapterStateCallback_ = null;
-
-    // The underlying Bluetooth API runs the SetAdapterState callback before
-    // notifying the that the adapter changed states.
-    //
-    // setAdapterState()'s callback parameter is optional.
-    if (callback) {
-      callback();
-    }
-
-    const newState = Object.assign(
-        this.bluetoothApi_.getAdapterStateForTest(), lastStateValue);
-
-    this.bluetoothApi_.simulateAdapterStateChangedForTest(newState);
-  },
-
-  /** @returns {?chrome.bluetoothPrivate.NewAdapterState} */
-  getLastSetAdapterStateValueForTest: function() {
-    return this.lastSetAdapterStateValue_;
-  },
-
-  /** @override */
-  setAdapterState: function(state, opt_callback) {
-    this.lastSetAdapterStateValue_ = state;
-    if (opt_callback !== undefined) {
-      this.lastSetAdapterStateCallback_ = opt_callback;
-    }
-    // Use simulateSuccessfulSetAdapterStateCallForTest to complete the
-    // action.
-  },
-
-  /** @override */
-  setPairingResponse: function(options, opt_callback) {
-    this.pairingResponses_[options.device.address] = options;
-    if (opt_callback) {
-      opt_callback();
-    }
-  },
-
-  /** @override */
-  disconnectAll: assertNotReached,
-
-  /** @override */
-  forgetDevice: assertNotReached,
-
-  /** @override */
-  setDiscoveryFilter: assertNotReached,
-
-  /** @override */
-  connect: function(address, opt_callback) {
-    let device =
-        this.bluetoothApi_.getDeviceForTest(address) || {address: address};
-    device = Object.assign({}, device);
-    device.paired = true;
-    device.connecting = true;
-    this.bluetoothApi_.simulateDeviceUpdatedForTest(device);
-    if (opt_callback) {
-      opt_callback(chrome.bluetoothPrivate.ConnectResultType.IN_PROGRESS);
-    }
-  },
-
-  /** @override */
-  pair: assertNotReached,
-
-  /** @type {!FakeChromeEvent} */
-  onPairing: new FakeChromeEvent(),
-
-  /** @type {!FakeChromeEvent} */
-  onDeviceAddressChanged: new FakeChromeEvent(),
-};
diff --git a/chrome/test/data/webui/settings/chromeos/os_settings_page_test.js b/chrome/test/data/webui/settings/chromeos/os_settings_page_test.js
index 09daf14a8..9acac12f2 100644
--- a/chrome/test/data/webui/settings/chromeos/os_settings_page_test.js
+++ b/chrome/test/data/webui/settings/chromeos/os_settings_page_test.js
@@ -26,10 +26,6 @@
   let fakeSettings = null;
 
   suiteSetup(async function() {
-    loadTimeData.overrideValues({
-      enableBluetoothRevamp: false,
-    });
-
     fakeContactManager = new FakeContactManager();
     setContactManagerForTesting(fakeContactManager);
     fakeContactManager.setupContactRecords();
@@ -53,6 +49,10 @@
   });
 
   function init() {
+    // Using the real CrosBluetoothConfig will crash due to no
+    // SessionManager.
+    setBluetoothConfigForTesting(new FakeBluetoothConfig());
+
     settingsPage = document.createElement('os-settings-page');
     settingsPage.prefs = prefElement.prefs;
     document.body.appendChild(settingsPage);
@@ -82,42 +82,12 @@
     assert(!!osSettingsPrintingPage);
   });
 
-  test(
-      'Check settings-bluetooth-page exists with' +
-          'enableBluetoothRevamp flag off',
-      async () => {
-        init();
-        const settingsBluetoothPage =
-            settingsPage.shadowRoot.querySelector('settings-bluetooth-page');
-
-        const osSettingsBluetoothPage =
-            settingsPage.shadowRoot.querySelector('os-settings-bluetooth-page');
-        assert(!!settingsBluetoothPage);
-        assertFalse(!!osSettingsBluetoothPage);
-      });
-
-  test(
-      'Check settings-bluetooth-page does not exist with' +
-          'enableBluetoothRevamp flag on',
-      async () => {
-        loadTimeData.overrideValues({
-          enableBluetoothRevamp: true,
-        });
-
-        // Using the real CrosBluetoothConfig will crash due to no
-        // SessionManager.
-        setBluetoothConfigForTesting(new FakeBluetoothConfig());
-
-        init();
-        const settingsBluetoothPage =
-            settingsPage.shadowRoot.querySelector('settings-bluetooth-page');
-
-        const osSettingsBluetoothPage =
-            settingsPage.shadowRoot.querySelector('os-settings-bluetooth-page');
-
-        assertFalse(!!settingsBluetoothPage);
-        assert(!!osSettingsBluetoothPage);
-      });
+  test('Check os-settings-bluetooth-page exists', async () => {
+    init();
+    const osSettingsBluetoothPage =
+        settingsPage.shadowRoot.querySelector('os-settings-bluetooth-page');
+    assert(!!osSettingsBluetoothPage);
+  });
 
   test('Check os-settings-privacy-page exists', async () => {
     init();
diff --git a/chrome/test/data/webui/settings/chromeos/os_settings_v3_browsertest.js b/chrome/test/data/webui/settings/chromeos/os_settings_v3_browsertest.js
index 1fb008f..d8787b5 100644
--- a/chrome/test/data/webui/settings/chromeos/os_settings_v3_browsertest.js
+++ b/chrome/test/data/webui/settings/chromeos/os_settings_v3_browsertest.js
@@ -298,7 +298,6 @@
  ],
  ['AppManagementToggleRow', 'app_management/toggle_row_test.js'],
  ['AppManagementUninstallButton', 'app_management/uninstall_button_test.js'],
- ['BluetoothPage', 'bluetooth_page_tests.js'],
  ['CellularNetworksList', 'cellular_networks_list_test.js'],
  ['CellularRoamingToggleButton', 'cellular_roaming_toggle_button_test.js'],
  ['CellularSetupDialog', 'cellular_setup_dialog_test.js'],
diff --git a/chrome/test/data/webui/settings/cr_settings_browsertest.js b/chrome/test/data/webui/settings/cr_settings_browsertest.js
index 2e80b98..dce5c57 100644
--- a/chrome/test/data/webui/settings/cr_settings_browsertest.js
+++ b/chrome/test/data/webui/settings/cr_settings_browsertest.js
@@ -421,6 +421,27 @@
   mocha.run();
 });
 
+var CrSettingsPerformanceMenuTest = class extends CrSettingsBrowserTest {
+  /** @override */
+  get browsePreload() {
+    return 'chrome://settings/test_loader.html?module=settings/settings_performance_menu_test.js';
+  }
+
+  /** @override */
+  get featureListInternal() {
+    return {
+      enabled: [
+        'performance_manager::features::kHighEfficiencyModeAvailable',
+        'performance_manager::features::kBatterySaverModeAvailable',
+      ],
+    };
+  }
+};
+
+TEST_F('CrSettingsPerformanceMenuTest', 'All', function() {
+  mocha.run();
+});
+
 var CrSettingsPerformancePageTest = class extends CrSettingsBrowserTest {
   /** @override */
   get browsePreload() {
diff --git a/chrome/test/data/webui/settings/languages_page_tests.ts b/chrome/test/data/webui/settings/languages_page_tests.ts
index c375921..e09e5f375 100644
--- a/chrome/test/data/webui/settings/languages_page_tests.ts
+++ b/chrome/test/data/webui/settings/languages_page_tests.ts
@@ -493,8 +493,10 @@
       item.querySelector('cr-icon-button')!.click();
 
       assertTrue(actionMenu.open);
-      const removeMenuItem = getMenuItem('removeLanguage');
-      assertTrue(removeMenuItem.hidden);
+      const removeMenuItem = getMenuItem<HTMLButtonElement>('removeLanguage');
+      // Remove button should be disabled
+      assertFalse(removeMenuItem.hidden);
+      assertTrue(removeMenuItem.disabled);
     });
 
     test('remove language when starting with 2 languages', function() {
diff --git a/chrome/test/data/webui/settings/settings_menu_test.ts b/chrome/test/data/webui/settings/settings_menu_test.ts
index 4ab99039..8b7c894 100644
--- a/chrome/test/data/webui/settings/settings_menu_test.ts
+++ b/chrome/test/data/webui/settings/settings_menu_test.ts
@@ -7,15 +7,10 @@
 // clang-format off
 import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 import {pageVisibility, Router, routes, SettingsMenuElement} from 'chrome://settings/settings.js';
-import {assertEquals, assertFalse, assertTrue} from 'chrome://webui-test/chai_assert.js';
-import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
+import {assertEquals, assertFalse} from 'chrome://webui-test/chai_assert.js';
 
 // clang-format on
 
-function getPerformanceMenuItem(settingsMenu: SettingsMenuElement) {
-  return settingsMenu.shadowRoot!.querySelector<HTMLElement>('#performance');
-}
-
 suite('SettingsMenu', function() {
   let settingsMenu: SettingsMenuElement;
 
@@ -50,47 +45,9 @@
   });
 
   test('performanceFeatureNotAvailableTest', function() {
-    // performance menu item should not exist when high efficiency mode and
-    // battery saver mode features are not available
-    assertFalse(!!getPerformanceMenuItem(settingsMenu));
-  });
-});
-
-suite('SettingsMenuPerformance', function() {
-  let settingsMenu: SettingsMenuElement;
-
-  setup(function() {
-    loadTimeData.overrideValues({
-      highEfficiencyModeAvailable: true,
-      batterySaverModeAvailable: true,
-    });
-    document.body.innerHTML = '';
-    settingsMenu = document.createElement('settings-menu');
-    settingsMenu.pageVisibility = pageVisibility;
-    document.body.appendChild(settingsMenu);
-    flush();
-  });
-
-  teardown(function() {
-    settingsMenu.remove();
-  });
-
-  test('performanceFeatureAvailableTest', function() {
-    // performance menu item should exist when high efficiency mode and battery
-    // saver mode features are available
-    assertTrue(!!getPerformanceMenuItem(settingsMenu));
-  });
-
-  test('performanceVisibilityTestDefault', function() {
-    // performance menu item should not be hidden under default pageVisibility
-    assertFalse(getPerformanceMenuItem(settingsMenu)!.hidden);
-  });
-
-  test('performanceVisibilityTestFalse', function() {
-    // performance menu item should be hidden when pageVisibility is false
-    settingsMenu.pageVisibility =
-        Object.assign(settingsMenu.pageVisibility || {}, {performance: false});
-    assertTrue(getPerformanceMenuItem(settingsMenu)!.hidden);
+    assertFalse(
+        !!settingsMenu.shadowRoot!.querySelector<HTMLElement>('#performance'),
+        'performance menu item should not exist when features are unavailable');
   });
 });
 
diff --git a/chrome/test/data/webui/settings/settings_performance_menu_test.ts b/chrome/test/data/webui/settings/settings_performance_menu_test.ts
new file mode 100644
index 0000000..233bcb1
--- /dev/null
+++ b/chrome/test/data/webui/settings/settings_performance_menu_test.ts
@@ -0,0 +1,57 @@
+// Copyright 2022 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+/** @fileoverview Runs tests for the settings performance menu item. */
+
+import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {pageVisibility, Router, routes, SettingsMenuElement} from 'chrome://settings/settings.js';
+import {assertEquals, assertFalse, assertTrue} from 'chrome://webui-test/chai_assert.js';
+
+suite('SettingsMenuPerformance', function() {
+  let settingsMenu: SettingsMenuElement;
+
+  function getPerformanceMenuItem() {
+    return settingsMenu.shadowRoot!.querySelector<HTMLElement>('#performance');
+  }
+
+  setup(function() {
+    document.body.innerHTML = '';
+    Router.getInstance().navigateTo(routes.PERFORMANCE, undefined);
+    settingsMenu = document.createElement('settings-menu');
+    settingsMenu.pageVisibility = pageVisibility;
+    document.body.appendChild(settingsMenu);
+    flush();
+  });
+
+  test('navigateToPerformanceSection', function() {
+    const menu = settingsMenu.$.menu;
+
+    assertTrue(
+        !!menu.selected,
+        'a menu item should be selected when directly navigating to the ' +
+            'performance route');
+    const path = new window.URL(menu.selected.toString()).pathname;
+    assertEquals(
+        '/performance', path,
+        'the selected menu item should be for the performance settings');
+  });
+
+  test('performanceMenuItemExistsAndVisible', function() {
+    const menuItem = getPerformanceMenuItem();
+    assertTrue(
+        !!menuItem,
+        'performance menu item should exist when features are available');
+    assertFalse(
+        menuItem.hidden,
+        'performance menu item should be visible under default pageVisibility');
+  });
+
+  test('performanceMenuItemHidden', function() {
+    settingsMenu.pageVisibility =
+        Object.assign(settingsMenu.pageVisibility || {}, {performance: false});
+    assertTrue(
+        getPerformanceMenuItem()!.hidden,
+        'performance menu item should be hidden when pageVisibility is false');
+  });
+});
\ No newline at end of file
diff --git a/chrome/updater/BUILD.gn b/chrome/updater/BUILD.gn
index b372281..4b6eb0a 100644
--- a/chrome/updater/BUILD.gn
+++ b/chrome/updater/BUILD.gn
@@ -870,6 +870,7 @@
       deps += [ "//chrome/installer/util:with_no_strings" ]
       data_deps = [
         ":test_service_files",
+        "//chrome/updater/win:updater_test",
         "//third_party/updater:old_updater",
       ]
     }
@@ -903,6 +904,7 @@
       deps += [ "//chrome/installer/util:with_no_strings" ]
       data_deps += [
         ":test_service_files",
+        "//chrome/updater/win:updater_test",
         "//third_party/updater:old_updater",
       ]
     }
diff --git a/chromecast/app/BUILD.gn b/chromecast/app/BUILD.gn
index f7e0d3f..741cbc1 100644
--- a/chromecast/app/BUILD.gn
+++ b/chromecast/app/BUILD.gn
@@ -22,6 +22,7 @@
     "//chromecast/common",
     "//chromecast/common:resource_delegate",
     "//chromecast/gpu",
+    "//chromecast/renderer",
     "//chromecast/utility",
     "//components/crash/core/common:crash_key",
     "//content/public/app",
@@ -30,12 +31,6 @@
     "//ui/base",
   ]
 
-  if (enable_cast_media_runtime) {
-    deps += [ "//chromecast/renderer:renderer_base" ]
-  } else {
-    deps += [ "//chromecast/renderer" ]
-  }
-
   if (!is_fuchsia) {
     # TODO(crbug.com/1226159): Complete crash reporting integration on Fuchsia.
     deps += [ "//components/crash/core/app" ]
diff --git a/chromecast/browser/BUILD.gn b/chromecast/browser/BUILD.gn
index ec27abc..58623dd 100644
--- a/chromecast/browser/BUILD.gn
+++ b/chromecast/browser/BUILD.gn
@@ -97,11 +97,7 @@
   ]
 }
 
-group("browser") {
-  public_deps = [ ":browser_base" ]
-}
-
-cast_source_set("browser_base") {
+cast_source_set("browser") {
   sources = [
     "application_media_info_manager.cc",
     "application_media_info_manager.h",
@@ -431,13 +427,13 @@
 cast_source_set("simple_main_parts") {
   sources = [ "cast_browser_main_parts_simple.cc" ]
 
-  public_deps = [ ":browser_base" ]
+  public_deps = [ ":browser" ]
 }
 
 cast_source_set("simple_client") {
   sources = [ "cast_content_browser_client_simple.cc" ]
 
-  public_deps = [ ":browser_base" ]
+  public_deps = [ ":browser" ]
 
   deps = [
     "//base",
diff --git a/chromecast/browser/android/BUILD.gn b/chromecast/browser/android/BUILD.gn
index 229ae8d..b164b88 100644
--- a/chromecast/browser/android/BUILD.gn
+++ b/chromecast/browser/android/BUILD.gn
@@ -249,6 +249,7 @@
     "//chromecast/base:base_java",
     "//chromecast/base:cast_base_test_utils_java",
     "//content/public/android:content_java",
+    "//testing/android/junit:junit_test_support",
     "//third_party/androidx:androidx_localbroadcastmanager_localbroadcastmanager_java",
     "//third_party/hamcrest:hamcrest_java",
   ]
diff --git a/chromecast/browser/android/junit/src/org/chromium/chromecast/shell/LogcatElisionUnitTest.java b/chromecast/browser/android/junit/src/org/chromium/chromecast/shell/LogcatElisionUnitTest.java
index 0458d54..5ecbd6c 100644
--- a/chromecast/browser/android/junit/src/org/chromium/chromecast/shell/LogcatElisionUnitTest.java
+++ b/chromecast/browser/android/junit/src/org/chromium/chromecast/shell/LogcatElisionUnitTest.java
@@ -8,12 +8,13 @@
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.junit.runners.BlockJUnit4ClassRunner;
+
+import org.chromium.testing.local.LocalRobolectricTestRunner;
 
 /**
  * junit tests for {@link LogcatExtractor}.
  */
-@RunWith(BlockJUnit4ClassRunner.class)
+@RunWith(LocalRobolectricTestRunner.class)
 public class LogcatElisionUnitTest {
     private static final int MAX_LINES = 5;
 
diff --git a/chromecast/cast_core/BUILD.gn b/chromecast/cast_core/BUILD.gn
index 2eb9cf0..b6a16f7 100644
--- a/chromecast/cast_core/BUILD.gn
+++ b/chromecast/cast_core/BUILD.gn
@@ -16,7 +16,7 @@
     "//chromecast/base:default_create_sys_info",
     "//chromecast/browser",
     "//chromecast/cast_core/runtime/browser:browser_simple",
-    "//chromecast/cast_core/runtime/renderer",
+    "//chromecast/cast_core/runtime/renderer:renderer_simple",
   ]
 }
 
diff --git a/chromecast/cast_core/runtime/browser/BUILD.gn b/chromecast/cast_core/runtime/browser/BUILD.gn
index 86107613..470fc938 100644
--- a/chromecast/cast_core/runtime/browser/BUILD.gn
+++ b/chromecast/cast_core/runtime/browser/BUILD.gn
@@ -64,7 +64,7 @@
     "//chromecast/base",
     "//chromecast/base:chromecast_switches",
     "//chromecast/base:default_create_sys_info",
-    "//chromecast/browser:browser_base",
+    "//chromecast/browser",
     "//net",
     "//third_party/blink/public/common:headers",
     "//third_party/grpc:grpc++",
@@ -181,7 +181,7 @@
     ":grpc_webui",
     ":runtime_application",
     "//base",
-    "//chromecast/browser:browser_base",
+    "//chromecast/browser",
     "//chromecast/common:feature_constants",
     "//components/cast_receiver/browser",
     "//components/cast_receiver/common",
@@ -227,7 +227,7 @@
     ":runtime_application",
     ":runtime_application_dispatcher",
     "//base",
-    "//chromecast/browser:browser_base",
+    "//chromecast/browser",
     "//chromecast/common:feature_constants",
     "//components/cast_receiver/browser",
     "//components/cast_receiver/browser:page_state_observer",
@@ -272,7 +272,7 @@
     ":runtime_application_dispatcher",
     ":runtime_application_dispatcher_grpc",
     "//base",
-    "//chromecast/browser:browser_base",
+    "//chromecast/browser",
     "//chromecast/cast_core:cast_core_switches",
     "//chromecast/metrics:cast_event_builder_simple",
     "//chromecast/service",
@@ -300,7 +300,7 @@
 
   public_deps = [
     ":runtime_application_dispatcher",
-    "//chromecast/browser:browser_base",
+    "//chromecast/browser",
     "//components/cast_receiver/browser",
   ]
 
diff --git a/chromecast/cast_core/runtime/renderer/BUILD.gn b/chromecast/cast_core/runtime/renderer/BUILD.gn
index dcf7d4f..77b4e59 100644
--- a/chromecast/cast_core/runtime/renderer/BUILD.gn
+++ b/chromecast/cast_core/runtime/renderer/BUILD.gn
@@ -11,19 +11,16 @@
   ]
 
   deps = [
-    "//base",
-    "//chromecast/cast_core/runtime/common:cors_exempt_headers",
-    "//components/cast_streaming/public",
     "//components/cast_streaming/renderer",
-    "//media",
   ]
 
   public_deps = [
-    "//chromecast/renderer:renderer_base",
-    "//third_party/blink/public/common:headers",
+    "//chromecast/renderer",
   ]
+}
 
-  if (enable_cast_media_runtime) {
-    sources += [ "cast_content_renderer_client_factory.cc" ]
-  }
+cast_source_set("renderer_simple") {
+  sources = [ "cast_runtime_content_renderer_client_simple.cc" ]
+
+  deps = [ ":renderer" ]
 }
diff --git a/chromecast/cast_core/runtime/renderer/cast_runtime_content_renderer_client.cc b/chromecast/cast_core/runtime/renderer/cast_runtime_content_renderer_client.cc
index 3accf42..14e2347 100644
--- a/chromecast/cast_core/runtime/renderer/cast_runtime_content_renderer_client.cc
+++ b/chromecast/cast_core/runtime/renderer/cast_runtime_content_renderer_client.cc
@@ -4,15 +4,8 @@
 
 #include "chromecast/cast_core/runtime/renderer/cast_runtime_content_renderer_client.h"
 
-#include "base/bind.h"
-#include "chromecast/cast_core/runtime/common/cors_exempt_headers.h"
-#include "chromecast/renderer/cast_url_loader_throttle_provider.h"
 #include "components/cast_streaming/renderer/public/resource_provider.h"
 #include "components/cast_streaming/renderer/public/resource_provider_factory.h"
-#include "content/public/renderer/render_frame.h"
-#include "content/public/renderer/render_frame_media_playback_options.h"
-#include "media/base/demuxer.h"
-#include "third_party/blink/public/common/associated_interfaces/associated_interface_registry.h"
 
 namespace chromecast {
 
@@ -20,14 +13,6 @@
 
 CastRuntimeContentRendererClient::~CastRuntimeContentRendererClient() = default;
 
-std::unique_ptr<blink::URLLoaderThrottleProvider>
-CastRuntimeContentRendererClient::CreateURLLoaderThrottleProvider(
-    blink::URLLoaderThrottleProviderType type) {
-  return std::make_unique<CastURLLoaderThrottleProvider>(
-      type, /*url_filter_manager=*/nullptr, this,
-      base::BindRepeating(&IsHeaderCorsExempt));
-}
-
 std::unique_ptr<cast_streaming::ResourceProvider>
 CastRuntimeContentRendererClient::CreateCastStreamingResourceProvider() {
   return cast_streaming::CreateResourceProvider();
diff --git a/chromecast/cast_core/runtime/renderer/cast_runtime_content_renderer_client.h b/chromecast/cast_core/runtime/renderer/cast_runtime_content_renderer_client.h
index cfa4eee9..16d4fc1f8 100644
--- a/chromecast/cast_core/runtime/renderer/cast_runtime_content_renderer_client.h
+++ b/chromecast/cast_core/runtime/renderer/cast_runtime_content_renderer_client.h
@@ -7,9 +7,7 @@
 
 #include <memory>
 
-#include "base/containers/flat_map.h"
 #include "chromecast/renderer/cast_content_renderer_client.h"
-#include "chromecast/renderer/url_rewrite_rules_provider.h"
 
 namespace cast_streaming {
 class ResourceProvider;
@@ -32,9 +30,6 @@
       CastRuntimeContentRendererClient&&) = delete;
 
   // content::ContentRendererClient overrides.
-  std::unique_ptr<blink::URLLoaderThrottleProvider>
-  CreateURLLoaderThrottleProvider(
-      blink::URLLoaderThrottleProviderType type) override;
   std::unique_ptr<cast_streaming::ResourceProvider>
   CreateCastStreamingResourceProvider() override;
 
diff --git a/chromecast/cast_core/runtime/renderer/cast_content_renderer_client_factory.cc b/chromecast/cast_core/runtime/renderer/cast_runtime_content_renderer_client_simple.cc
similarity index 88%
rename from chromecast/cast_core/runtime/renderer/cast_content_renderer_client_factory.cc
rename to chromecast/cast_core/runtime/renderer/cast_runtime_content_renderer_client_simple.cc
index 2a81c642..89dccc7a 100644
--- a/chromecast/cast_core/runtime/renderer/cast_content_renderer_client_factory.cc
+++ b/chromecast/cast_core/runtime/renderer/cast_runtime_content_renderer_client_simple.cc
@@ -1,4 +1,4 @@
-// Copyright 2021 The Chromium Authors
+// Copyright 2021 The Chromium Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
diff --git a/chromecast/media/cma/base/decoder_config_adapter.cc b/chromecast/media/cma/base/decoder_config_adapter.cc
index 0e9f9790..9644150 100644
--- a/chromecast/media/cma/base/decoder_config_adapter.cc
+++ b/chromecast/media/cma/base/decoder_config_adapter.cc
@@ -59,6 +59,7 @@
     case ::media::kSampleFormatDts:
     case ::media::kSampleFormatDtsxP2:
     case ::media::kSampleFormatMpegHAudio:
+    case ::media::kSampleFormatIECDts:
       return kUnknownSampleFormat;
     case ::media::kSampleFormatU8:
       return kSampleFormatU8;
diff --git a/chromecast/renderer/BUILD.gn b/chromecast/renderer/BUILD.gn
index b2ec9bc..655edf8f 100644
--- a/chromecast/renderer/BUILD.gn
+++ b/chromecast/renderer/BUILD.gn
@@ -5,15 +5,7 @@
 import("//chromecast/chromecast.gni")
 import("//tools/grit/grit_rule.gni")
 
-group("renderer") {
-  public_deps = [ ":renderer_base" ]
-
-  if (chromecast_branding == "public") {
-    public_deps += [ ":simple_client" ]
-  }
-}
-
-cast_source_set("renderer_base") {
+cast_source_set("renderer") {
   sources = [
     "activity_filtering_websocket_handshake_throttle.cc",
     "activity_filtering_websocket_handshake_throttle.h",
@@ -102,7 +94,7 @@
   sources = [ "cast_content_renderer_client_simple.cc" ]
 
   public_deps = [
-    ":renderer_base",
+    ":renderer",
     "//base",
   ]
 }
diff --git a/chromeos/ash/components/BUILD.gn b/chromeos/ash/components/BUILD.gn
index 6338b011..46756e3 100644
--- a/chromeos/ash/components/BUILD.gn
+++ b/chromeos/ash/components/BUILD.gn
@@ -43,6 +43,7 @@
     "//chromeos/ash/components/timezone:unit_tests",
     "//chromeos/ash/components/tpm:unit_tests",
     "//chromeos/ash/components/trash_service:unit_tests",
+    "//chromeos/ash/components/trial_group:unit_tests",
     "//chromeos/components/sensors:ash_unit_tests",
   ]
 
diff --git a/chromeos/ash/components/cryptohome/auth_factor_conversions.cc b/chromeos/ash/components/cryptohome/auth_factor_conversions.cc
index f3103ed..f509264 100644
--- a/chromeos/ash/components/cryptohome/auth_factor_conversions.cc
+++ b/chromeos/ash/components/cryptohome/auth_factor_conversions.cc
@@ -173,6 +173,14 @@
     type = fallback_type;
   } else {
     type = ConvertFactorTypeFromProto(proto.type());
+    // TODO(b/243808147): Remove this hack after fixing cryptohome to return
+    // `AUTH_FACTOR_TYPE_UNSPECIFIED` for legacy kiosk keysets.
+    if (fallback_type == cryptohome::AuthFactorType::kKiosk &&
+        type != cryptohome::AuthFactorType::kKiosk) {
+      LOG(WARNING) << "Fixup kiosk key type for " << proto.label() << " "
+                   << proto.type();
+      type = cryptohome::AuthFactorType::kKiosk;
+    }
   }
   AuthFactorRef ref(type, KeyLabel{proto.label()});
   AuthFactorCommonMetadata common_metadata;
diff --git a/chromeos/ash/components/network/cellular_connection_handler.cc b/chromeos/ash/components/network/cellular_connection_handler.cc
index 0ba6c4c..12aa36f 100644
--- a/chromeos/ash/components/network/cellular_connection_handler.cc
+++ b/chromeos/ash/components/network/cellular_connection_handler.cc
@@ -75,9 +75,6 @@
 }  // namespace
 
 // static
-const base::TimeDelta CellularConnectionHandler::kWaitingForAutoConnectTimeout =
-    base::Minutes(2);
-
 absl::optional<std::string> CellularConnectionHandler::ResultToErrorString(
     PrepareCellularConnectionResult result) {
   switch (result) {
@@ -219,8 +216,7 @@
 }
 
 void CellularConnectionHandler::CompleteConnectionAttempt(
-    PrepareCellularConnectionResult result,
-    bool auto_connected) {
+    PrepareCellularConnectionResult result) {
   DCHECK(state_ != ConnectionState::kIdle);
   DCHECK(!request_queue_.empty());
 
@@ -248,7 +244,7 @@
     std::move(metadata->error_callback)
         .Run(service_path, NetworkConnectionHandler::kErrorNotFound);
   } else {
-    std::move(metadata->success_callback).Run(service_path, auto_connected);
+    std::move(metadata->success_callback).Run(service_path);
   }
 
   ProcessRequestQueue();
@@ -326,16 +322,14 @@
     NET_LOG(ERROR) << "Could not find network for ICCID "
                    << *request_queue_.front()->iccid;
     CompleteConnectionAttempt(
-        PrepareCellularConnectionResult::kCouldNotFindNetworkWithIccid,
-        /*auto_connected=*/false);
+        PrepareCellularConnectionResult::kCouldNotFindNetworkWithIccid);
     return;
   }
 
   if (CanInitiateShillConnection(network_state)) {
     NET_LOG(USER) << "Cellular service with ICCID " << iccid
                   << " is connectable";
-    CompleteConnectionAttempt(PrepareCellularConnectionResult::kSuccess,
-                              /*auto_connected=*/false);
+    CompleteConnectionAttempt(PrepareCellularConnectionResult::kSuccess);
     return;
   }
 
@@ -368,8 +362,7 @@
 
   if (!inhibit_lock) {
     NET_LOG(ERROR) << "eSIM connection flow failed to inhibit scan";
-    CompleteConnectionAttempt(PrepareCellularConnectionResult::kInhibitFailed,
-                              /*auto_connected=*/false);
+    CompleteConnectionAttempt(PrepareCellularConnectionResult::kInhibitFailed);
     return;
   }
 
@@ -385,8 +378,7 @@
   if (!euicc_path) {
     NET_LOG(ERROR) << "eSIM connection flow could not find relevant EUICC";
     CompleteConnectionAttempt(
-        PrepareCellularConnectionResult::kCouldNotFindRelevantEuicc,
-        /*auto_connected=*/false);
+        PrepareCellularConnectionResult::kCouldNotFindRelevantEuicc);
     return;
   }
 
@@ -404,8 +396,7 @@
   if (!inhibit_lock) {
     NET_LOG(ERROR) << "eSIM connection flow failed to request profiles";
     CompleteConnectionAttempt(
-        PrepareCellularConnectionResult::kRefreshProfilesFailed,
-        /*auto_connected=*/false);
+        PrepareCellularConnectionResult::kRefreshProfilesFailed);
     return;
   }
 
@@ -421,8 +412,7 @@
   if (!profile_path) {
     NET_LOG(ERROR) << "eSIM connection flow could not find profile";
     CompleteConnectionAttempt(
-        PrepareCellularConnectionResult::kCouldNotFindRelevantESimProfile,
-        /*auto_connected=*/false);
+        PrepareCellularConnectionResult::kCouldNotFindRelevantESimProfile);
     return;
   }
 
@@ -446,14 +436,10 @@
   if (!success) {
     NET_LOG(ERROR) << "eSIM connection flow failed to enable profile";
     CompleteConnectionAttempt(
-        PrepareCellularConnectionResult::kEnableProfileFailed,
-        /*auto_connected=*/false);
+        PrepareCellularConnectionResult::kEnableProfileFailed);
     return;
   }
 
-  // kErrorAlreadyEnabled implies that the SIM profile was already enabled.
-  request_queue_.front()->did_connection_require_enabling_profile =
-      status == HermesResponseStatus::kSuccess;
   // Reset the inhibit_lock so that the device will be uninhibited
   // automatically.
   request_queue_.front()->inhibit_lock.reset();
@@ -466,23 +452,12 @@
     CheckForConnectable();
 }
 
-void CellularConnectionHandler::NetworkConnectionStateChanged(
-    const NetworkState* network) {
-  if (state_ == ConnectionState::kWaitingForShillAutoConnect)
-    CheckForAutoConnected();
-}
-
 void CellularConnectionHandler::CheckForConnectable() {
   DCHECK_EQ(state_, ConnectionState::kWaitingForConnectable);
 
   const NetworkState* network_state = GetNetworkStateForCurrentOperation();
   if (network_state && CanInitiateShillConnection(network_state)) {
-    if (!request_queue_.front()->did_connection_require_enabling_profile) {
-      CompleteConnectionAttempt(PrepareCellularConnectionResult::kSuccess,
-                                /*auto_connected=*/false);
-    } else {
-      StartWaitingForShillAutoConnect();
-    }
+    CompleteConnectionAttempt(PrepareCellularConnectionResult::kSuccess);
     return;
   }
 
@@ -502,45 +477,7 @@
   NET_LOG(ERROR) << "Cellular connection timed out waiting for network to "
                     "become connectable";
   CompleteConnectionAttempt(
-      PrepareCellularConnectionResult::kTimeoutWaitingForConnectable,
-      /*auto_connected=*/false);
-}
-
-void CellularConnectionHandler::StartWaitingForShillAutoConnect() {
-  // Stop the timer that wait for the network to become connectable.
-  if (timer_.IsRunning())
-    timer_.Stop();
-
-  TransitionToConnectionState(ConnectionState::kWaitingForShillAutoConnect);
-  CheckForAutoConnected();
-}
-
-void CellularConnectionHandler::CheckForAutoConnected() {
-  CHECK_EQ(state_, ConnectionState::kWaitingForShillAutoConnect);
-
-  const NetworkState* network_state = GetNetworkStateForCurrentOperation();
-  if (network_state && network_state->IsConnectedState()) {
-    CompleteConnectionAttempt(PrepareCellularConnectionResult::kSuccess,
-                              /*auto_connected=*/true);
-    return;
-  }
-
-  // If network hasn't autoconnected by Shill yet, start a timer and wait for
-  // the network to become connected.
-  if (!timer_.IsRunning()) {
-    timer_.Start(
-        FROM_HERE, kWaitingForAutoConnectTimeout,
-        base::BindOnce(&CellularConnectionHandler::OnWaitForAutoConnectTimeout,
-                       weak_ptr_factory_.GetWeakPtr()));
-  }
-}
-
-void CellularConnectionHandler::OnWaitForAutoConnectTimeout() {
-  DCHECK_EQ(state_, ConnectionState::kWaitingForShillAutoConnect);
-  NET_LOG(ERROR) << "Cellular connection timed out waiting for network to "
-                    "become auto connected";
-  CompleteConnectionAttempt(PrepareCellularConnectionResult::kSuccess,
-                            /*auto_connected=*/false);
+      PrepareCellularConnectionResult::kTimeoutWaitingForConnectable);
 }
 
 std::ostream& operator<<(
@@ -566,10 +503,6 @@
     case CellularConnectionHandler::ConnectionState::kWaitingForConnectable:
       stream << "[Waiting for network to become connectable]";
       break;
-    case CellularConnectionHandler::ConnectionState::
-        kWaitingForShillAutoConnect:
-      stream << "[Waiting for network to become auto-connected]";
-      break;
   }
   return stream;
 }
diff --git a/chromeos/ash/components/network/cellular_connection_handler.h b/chromeos/ash/components/network/cellular_connection_handler.h
index 733afb1..f05d9dfa 100644
--- a/chromeos/ash/components/network/cellular_connection_handler.h
+++ b/chromeos/ash/components/network/cellular_connection_handler.h
@@ -21,10 +21,6 @@
 
 namespace ash {
 
-namespace cellular_setup {
-class ESimTestBase;
-}
-
 class CellularESimProfileHandler;
 class CellularInhibitor;
 class NetworkState;
@@ -50,7 +46,6 @@
 //   (4) Enable the relevant profile.
 //   (5) Uninhibit cellular scans.
 //   (6) Wait until the associated NetworkState becomes connectable.
-//   (7) Wait until Shill auto connected if the sim slot is switched.
 //
 // Note that if this class receives multiple connection requests, it processes
 // them in FIFO order.
@@ -67,10 +62,8 @@
             CellularInhibitor* cellular_inhibitor,
             CellularESimProfileHandler* cellular_esim_profile_handler);
 
-  // Success callback which receives the network's service path as the first
-  // parameter and a boolean indicates whether the network is autoconnected
-  // as the second parameter.
-  typedef base::OnceCallback<void(const std::string&, bool)> SuccessCallback;
+  // Success callback which receives the network's service path as a parameter.
+  typedef base::OnceCallback<void(const std::string&)> SuccessCallback;
 
   // Error callback which receives the network's service path as the first
   // parameter and an error name as the second parameter. If no service path is
@@ -100,11 +93,6 @@
 
  private:
   friend class CellularConnectionHandlerTest;
-  friend class CellularESimInstallerTest;
-  friend class CellularPolicyHandlerTest;
-  friend class ManagedNetworkConfigurationHandlerTest;
-  friend class cellular_setup::ESimTestBase;
-
   FRIEND_TEST_ALL_PREFIXES(CellularConnectionHandlerTest, NoService);
   FRIEND_TEST_ALL_PREFIXES(CellularConnectionHandlerTest,
                            ServiceAlreadyConnectable);
@@ -116,10 +104,7 @@
                            TimeoutWaitingForConnectable_ESim);
   FRIEND_TEST_ALL_PREFIXES(CellularConnectionHandlerTest,
                            TimeoutWaitingForConnectable_PSim);
-  FRIEND_TEST_ALL_PREFIXES(CellularConnectionHandlerTest,
-                           Success_AutoConnected);
-  FRIEND_TEST_ALL_PREFIXES(CellularConnectionHandlerTest,
-                           Success_TimeoutAutoConnected);
+  FRIEND_TEST_ALL_PREFIXES(CellularConnectionHandlerTest, Success);
   FRIEND_TEST_ALL_PREFIXES(CellularConnectionHandlerTest,
                            Success_AlreadyEnabled);
   FRIEND_TEST_ALL_PREFIXES(CellularConnectionHandlerTest, ConnectToStub);
@@ -142,9 +127,6 @@
     absl::optional<dbus::ObjectPath> euicc_path;
     absl::optional<dbus::ObjectPath> profile_path;
     std::unique_ptr<CellularInhibitor::InhibitLock> inhibit_lock;
-    // A boolean indicating that if the connection switches the SIM profile and
-    // requires enabling the profile first.
-    bool did_connection_require_enabling_profile = false;
     SuccessCallback success_callback;
     ErrorCallback error_callback;
   };
@@ -155,8 +137,7 @@
     kInhibitingScans,
     kRequestingProfilesBeforeEnabling,
     kEnablingProfile,
-    kWaitingForConnectable,
-    kWaitingForShillAutoConnect,
+    kWaitingForConnectable
   };
   friend std::ostream& operator<<(std::ostream& stream,
                                   const ConnectionState& step);
@@ -174,10 +155,6 @@
     kTimeoutWaitingForConnectable = 7,
     kMaxValue = kTimeoutWaitingForConnectable
   };
-
-  // Timeout waiting for a cellular network to auto connect after switch
-  // profile.
-  static const base::TimeDelta kWaitingForAutoConnectTimeout;
   static absl::optional<std::string> ResultToErrorString(
       PrepareCellularConnectionResult result);
 
@@ -188,15 +165,12 @@
                                      const std::string& new_service_path,
                                      const std::string& old_guid,
                                      const std::string& new_guid) override;
-  void NetworkConnectionStateChanged(const NetworkState* network) override;
 
   void ProcessRequestQueue();
   void TransitionToConnectionState(ConnectionState state);
 
-  // Invokes the success or error callback, depending on |result| and
-  // |auto_connected|.
-  void CompleteConnectionAttempt(PrepareCellularConnectionResult result,
-                                 bool auto_connected);
+  // Invokes the success or error callback, depending on |result|.
+  void CompleteConnectionAttempt(PrepareCellularConnectionResult result);
 
   const NetworkState* GetNetworkStateForCurrentOperation() const;
   absl::optional<dbus::ObjectPath> GetEuiccPathForCurrentOperation() const;
@@ -219,9 +193,6 @@
   void HandleNetworkPropertiesUpdate();
   void CheckForConnectable();
   void OnWaitForConnectableTimeout();
-  void StartWaitingForShillAutoConnect();
-  void CheckForAutoConnected();
-  void OnWaitForAutoConnectTimeout();
 
   base::OneShotTimer timer_;
 
diff --git a/chromeos/ash/components/network/cellular_connection_handler_unittest.cc b/chromeos/ash/components/network/cellular_connection_handler_unittest.cc
index e97ec23a..49bd5a60 100644
--- a/chromeos/ash/components/network/cellular_connection_handler_unittest.cc
+++ b/chromeos/ash/components/network/cellular_connection_handler_unittest.cc
@@ -114,13 +114,6 @@
     base::RunLoop().RunUntilIdle();
   }
 
-  void SetCellularServiceConnected(int profile_num) {
-    helper_.service_test()->SetServiceProperty(
-        CreateTestServicePath(profile_num), shill::kStateProperty,
-        base::Value(shill::kStateOnline));
-    base::RunLoop().RunUntilIdle();
-  }
-
   void ExpectServiceConnectable(int profile_num) {
     const NetworkState* network_state =
         helper_.network_state_handler()->GetNetworkState(
@@ -201,10 +194,8 @@
   }
 
   void ExpectSuccess(const std::string& expected_service_path,
-                     base::RunLoop* run_loop,
-                     bool auto_connected) {
+                     base::RunLoop* run_loop) {
     expected_service_path_ = expected_service_path;
-    expected_auto_connected_ = auto_connected;
     on_success_callback_ = run_loop->QuitClosure();
   }
 
@@ -245,9 +236,8 @@
   }
 
  private:
-  void OnSuccess(const std::string& service_path, bool auto_connected) {
+  void OnSuccess(const std::string& service_path) {
     EXPECT_EQ(expected_service_path_, service_path);
-    EXPECT_EQ(expected_auto_connected_, auto_connected);
     std::move(on_success_callback_).Run();
   }
 
@@ -270,7 +260,6 @@
   base::OnceClosure on_success_callback_;
   base::OnceClosure on_failure_callback_;
   std::string expected_service_path_;
-  bool expected_auto_connected_;
   std::string expected_error_name_;
 };
 
@@ -294,8 +283,7 @@
   SetServiceConnectable(/*profile_num=*/1);
 
   base::RunLoop run_loop;
-  ExpectSuccess(CreateTestServicePath(/*profile_num=*/1), &run_loop,
-                /*auto_connected=*/false);
+  ExpectSuccess(CreateTestServicePath(/*profile_num=*/1), &run_loop);
   CallPrepareExistingCellularNetworkForConnection(/*profile_num=*/1);
   run_loop.Run();
 
@@ -409,7 +397,7 @@
                    kTimeoutWaitingForConnectable);
 }
 
-TEST_F(CellularConnectionHandlerTest, Success_AutoConnected) {
+TEST_F(CellularConnectionHandlerTest, Success) {
   AddCellularDevice();
   AddEuicc(/*euicc_num=*/1);
   AddProfile(/*profile_num=*/1, /*euicc_num=*/1);
@@ -417,29 +405,7 @@
   SetServiceIccid(/*profile_num=*/1);
 
   base::RunLoop run_loop;
-  ExpectSuccess(CreateTestServicePath(/*profile_num=*/1), &run_loop,
-                /*auto_connected=*/true);
-  CallPrepareExistingCellularNetworkForConnection(/*profile_num=*/1);
-  // Simulate the cellular network get connected after 10 seconds.
-  AdvanceClock(base::Seconds(10));
-  SetCellularServiceConnected(/*profile_num=*/1);
-  run_loop.Run();
-
-  ExpectServiceConnectable(/*profile_num=*/1);
-  ExpectResult(
-      CellularConnectionHandler::PrepareCellularConnectionResult::kSuccess);
-}
-
-TEST_F(CellularConnectionHandlerTest, Success_TimeoutAutoConnected) {
-  AddCellularDevice();
-  AddEuicc(/*euicc_num=*/1);
-  AddProfile(/*profile_num=*/1, /*euicc_num=*/1);
-  SetServiceEid(/*profile_num=*/1, /*euicc_num=*/1);
-  SetServiceIccid(/*profile_num=*/1);
-
-  base::RunLoop run_loop;
-  ExpectSuccess(CreateTestServicePath(/*profile_num=*/1), &run_loop,
-                /*auto_connected=*/false);
+  ExpectSuccess(CreateTestServicePath(/*profile_num=*/1), &run_loop);
   CallPrepareExistingCellularNetworkForConnection(/*profile_num=*/1);
   run_loop.Run();
 
@@ -459,8 +425,7 @@
   SetServiceIccid(/*profile_num=*/1);
 
   base::RunLoop run_loop;
-  ExpectSuccess(CreateTestServicePath(/*profile_num=*/1), &run_loop,
-                /*auto_connected=*/false);
+  ExpectSuccess(CreateTestServicePath(/*profile_num=*/1), &run_loop);
   CallPrepareExistingCellularNetworkForConnection(/*profile_num=*/1);
   SetServiceConnectable(/*profile_num=*/1);
   run_loop.Run();
@@ -480,8 +445,7 @@
   base::RunLoop run_loop;
   // Expect that by the end, we will connect to a "real" (i.e., non-stub)
   // service path.
-  ExpectSuccess(CreateTestServicePath(/*profile_num=*/1), &run_loop,
-                /*auto_connected=*/false);
+  ExpectSuccess(CreateTestServicePath(/*profile_num=*/1), &run_loop);
   CallPrepareExistingCellularNetworkForConnection(/*profile_num=*/1);
   base::RunLoop().RunUntilIdle();
 
@@ -509,8 +473,7 @@
   SetServiceIccid(/*profile_num=*/2);
 
   base::RunLoop run_loop1;
-  ExpectSuccess(CreateTestServicePath(/*profile_num=*/1), &run_loop1,
-                /*auto_connected=*/false);
+  ExpectSuccess(CreateTestServicePath(/*profile_num=*/1), &run_loop1);
 
   // Start both operations.
   CallPrepareExistingCellularNetworkForConnection(/*profile_num=*/1);
@@ -521,8 +484,7 @@
   ExpectServiceConnectable(/*profile_num=*/1);
 
   base::RunLoop run_loop2;
-  ExpectSuccess(CreateTestServicePath(/*profile_num=*/2), &run_loop2,
-                /*auto_connected=*/false);
+  ExpectSuccess(CreateTestServicePath(/*profile_num=*/2), &run_loop2);
 
   // Verify that the second service becomes connectable.
   run_loop2.Run();
@@ -539,10 +501,9 @@
   AddProfile(/*profile_num=*/1, /*euicc_num=*/1);
 
   base::RunLoop run_loop;
-  ExpectSuccess(CreateTestServicePath(/*profile_num=*/1), &run_loop,
-                /*auto_connected=*/false);
-  CallPrepareNewlyInstalledCellularNetworkForConnection(/*profile_num=*/1,
-                                                        /*euicc_num=*/1);
+  ExpectSuccess(CreateTestServicePath(/*profile_num=*/1), &run_loop);
+  CallPrepareNewlyInstalledCellularNetworkForConnection(/*euicc_num=*/1,
+                                                        /*profile_num=*/1);
 
   // Verify that service corresponding to new profile becomes
   // connectable.
diff --git a/chromeos/ash/components/network/cellular_esim_installer.cc b/chromeos/ash/components/network/cellular_esim_installer.cc
index 7b027c0..0a87fed 100644
--- a/chromeos/ash/components/network/cellular_esim_installer.cc
+++ b/chromeos/ash/components/network/cellular_esim_installer.cc
@@ -298,8 +298,7 @@
 void CellularESimInstaller::OnPrepareCellularNetworkForConnectionSuccess(
     const dbus::ObjectPath& profile_path,
     InstallProfileFromActivationCodeCallback callback,
-    const std::string& service_path,
-    bool auto_connected) {
+    const std::string& service_path) {
   NET_LOG(EVENT) << "Successfully enabled installed profile on service path: "
                  << service_path;
   const NetworkState* network_state =
diff --git a/chromeos/ash/components/network/cellular_esim_installer.h b/chromeos/ash/components/network/cellular_esim_installer.h
index e60c328..68ff439 100644
--- a/chromeos/ash/components/network/cellular_esim_installer.h
+++ b/chromeos/ash/components/network/cellular_esim_installer.h
@@ -96,8 +96,6 @@
                            InstallProfileConnectFailure);
   FRIEND_TEST_ALL_PREFIXES(CellularESimInstallerTest, InstallProfileSuccess);
   FRIEND_TEST_ALL_PREFIXES(CellularESimInstallerTest,
-                           InstallProfileAutoConnect);
-  FRIEND_TEST_ALL_PREFIXES(CellularESimInstallerTest,
                            InstallProfileViaQrCodeSuccess);
   FRIEND_TEST_ALL_PREFIXES(CellularESimInstallerTest,
                            InstallProfileAlreadyConnected);
@@ -155,8 +153,7 @@
   void OnPrepareCellularNetworkForConnectionSuccess(
       const dbus::ObjectPath& profile_path,
       InstallProfileFromActivationCodeCallback callback,
-      const std::string& service_path,
-      bool auto_connected);
+      const std::string& service_path);
   void OnPrepareCellularNetworkForConnectionFailure(
       const dbus::ObjectPath& profile_path,
       InstallProfileFromActivationCodeCallback callback,
diff --git a/chromeos/ash/components/network/cellular_esim_installer_unittest.cc b/chromeos/ash/components/network/cellular_esim_installer_unittest.cc
index 8872070..a9f3f206 100644
--- a/chromeos/ash/components/network/cellular_esim_installer_unittest.cc
+++ b/chromeos/ash/components/network/cellular_esim_installer_unittest.cc
@@ -43,7 +43,6 @@
 
 const char kTestEuiccPath[] = "/org/chromium/Hermes/Euicc/0";
 const char kTestEid[] = "12345678901234567890123456789012";
-const char kTestCellularServicePath[] = "/service/cellular101";
 const char kInstallViaQrCodeHistogram[] =
     "Network.Cellular.ESim.InstallViaQrCode.Result";
 
@@ -149,8 +148,7 @@
       bool wait_for_connect,
       bool fail_connect,
       bool is_initial_install = true,
-      bool is_install_via_qr_code = false,
-      bool auto_connected = false) {
+      bool is_install_via_qr_code = false) {
     HermesResponseStatus out_install_result;
     absl::optional<dbus::ObjectPath> out_esim_profile_path;
     absl::optional<std::string> out_service_path;
@@ -173,23 +171,15 @@
     FastForwardProfileRefreshDelay();
 
     if (wait_for_connect) {
-      if (auto_connected) {
-        ShillServiceClient::Get()->GetTestInterface()->SetServiceProperty(
-            kTestCellularServicePath, shill::kStateProperty,
-            base::Value(shill::kStateOnline));
+      base::RunLoop().RunUntilIdle();
+      EXPECT_LE(1u, network_connection_handler_->connect_calls().size());
+      if (fail_connect) {
+        network_connection_handler_->connect_calls().back().InvokeErrorCallback(
+            "fake_error_name");
       } else {
-        FastForwardAutoConnectWaiting();
-        base::RunLoop().RunUntilIdle();
-        EXPECT_LE(1u, network_connection_handler_->connect_calls().size());
-        if (fail_connect) {
-          network_connection_handler_->connect_calls()
-              .back()
-              .InvokeErrorCallback("fake_error_name");
-        } else {
-          network_connection_handler_->connect_calls()
-              .back()
-              .InvokeSuccessCallback();
-        }
+        network_connection_handler_->connect_calls()
+            .back()
+            .InvokeSuccessCallback();
       }
     }
 
@@ -281,11 +271,6 @@
     task_environment_.FastForwardBy(2 * kProfileRefreshCallbackDelay);
   }
 
-  void FastForwardAutoConnectWaiting() {
-    task_environment_.FastForwardBy(
-        CellularConnectionHandler::kWaitingForAutoConnectTimeout);
-  }
-
   base::HistogramTester* HistogramTesterPtr() { return &histogram_tester_; }
 
  private:
@@ -432,32 +417,7 @@
       /*euicc_path=*/dbus::ObjectPath(kTestEuiccPath),
       /*new_shill_properties=*/base::Value(base::Value::Type::DICTIONARY),
       /*wait_for_connect=*/true, /*fail_connect=*/false,
-      /*is_initial_install=*/true, /*is_install_via_qr_code=*/true);
-  CheckInstallSuccess(result_tuple);
-
-  HistogramTesterPtr()->ExpectTotalCount(kESimProfileDownloadLatencyHistogram,
-                                         1);
-  CheckESimInstallHistograms(
-      /*expected_count=*/1, HermesResponseStatus::kSuccess,
-      CellularESimInstaller::InstallESimProfileResult::kSuccess);
-  CheckDetailedESimInstallHistograms(
-      CellularESimInstaller::InstallESimProfileResult::kSuccess,
-      /*is_managed=*/false, /*is_retry=*/false,
-      /*is_install_via_qr_code=*/true);
-}
-
-TEST_F(CellularESimInstallerTest, InstallProfileAutoConnect) {
-  // Verify that install succeeds when valid activation code is passed.
-  InstallResultTuple result_tuple = InstallProfileFromActivationCode(
-      HermesEuiccClient::Get()
-          ->GetTestInterface()
-          ->GenerateFakeActivationCode(),
-      /*confirmation_code=*/std::string(),
-      /*euicc_path=*/dbus::ObjectPath(kTestEuiccPath),
-      /*new_shill_properties=*/base::Value(base::Value::Type::DICTIONARY),
-      /*wait_for_connect=*/true, /*fail_connect=*/false,
-      /*is_initial_install=*/true, /*is_install_via_qr_code=*/true,
-      /*auto_connected=*/true);
+      /*is_initial_install=*/true, /*install_via_qr_code=*/true);
   CheckInstallSuccess(result_tuple);
 
   HistogramTesterPtr()->ExpectTotalCount(kESimProfileDownloadLatencyHistogram,
diff --git a/chromeos/ash/components/network/cellular_policy_handler_unittest.cc b/chromeos/ash/components/network/cellular_policy_handler_unittest.cc
index 3e74dc94..28db9c5 100644
--- a/chromeos/ash/components/network/cellular_policy_handler_unittest.cc
+++ b/chromeos/ash/components/network/cellular_policy_handler_unittest.cc
@@ -212,8 +212,6 @@
     base::RunLoop().RunUntilIdle();
 
     if (expect_install_success) {
-      FastForwardAutoConnectWaiting();
-      base::RunLoop().RunUntilIdle();
       EXPECT_LE(1u, network_connection_handler_->connect_calls().size());
       network_connection_handler_->connect_calls()
           .back()
@@ -243,11 +241,6 @@
     FastForwardBy(2 * kProfileRefreshCallbackDelay);
   }
 
-  void FastForwardAutoConnectWaiting() {
-    task_environment_.FastForwardBy(
-        CellularConnectionHandler::kWaitingForAutoConnectTimeout);
-  }
-
   void FastForwardBy(base::TimeDelta delay) {
     task_environment_.FastForwardBy(delay);
   }
@@ -325,7 +318,6 @@
   ShillDeviceClient::Get()->GetTestInterface()->AddDevice(
       "/device/cellular1", shill::kTypeCellular, "TestCellular");
   FastForwardProfileRefreshDelay();
-  FastForwardAutoConnectWaiting();
   base::RunLoop().RunUntilIdle();
   CheckShillConfiguration(/*is_installed=*/true);
 }
@@ -346,7 +338,6 @@
   CheckShillConfiguration(/*is_installed=*/false);
   SetupEuicc();
   FastForwardProfileRefreshDelay();
-  FastForwardAutoConnectWaiting();
   base::RunLoop().RunUntilIdle();
   CheckShillConfiguration(/*is_installed=*/true);
   CheckIccidSmdpPairInPref(/*is_installed=*/true);
diff --git a/chromeos/ash/components/network/managed_network_configuration_handler_unittest.cc b/chromeos/ash/components/network/managed_network_configuration_handler_unittest.cc
index efc1e79..66355c8 100644
--- a/chromeos/ash/components/network/managed_network_configuration_handler_unittest.cc
+++ b/chromeos/ash/components/network/managed_network_configuration_handler_unittest.cc
@@ -356,11 +356,6 @@
     task_environment_.FastForwardBy(2 * kProfileRefreshCallbackDelay);
   }
 
-  void FastForwardAutoConnectWaiting() {
-    task_environment_.FastForwardBy(
-        CellularConnectionHandler::kWaitingForAutoConnectTimeout);
-  }
-
   ProhibitedTechnologiesHandler* prohibited_technologies_handler() {
     return prohibited_technologies_handler_.get();
   }
@@ -617,7 +612,6 @@
   SetPolicy(::onc::ONC_SOURCE_DEVICE_POLICY, std::string(),
             "policy/policy_cellular.onc");
   FastForwardProfileRefreshDelay();
-  FastForwardAutoConnectWaiting();
   base::RunLoop().RunUntilIdle();
 
   std::string service_path = GetShillServiceClient()->FindServiceMatchingGUID(
diff --git a/chromeos/ash/components/network/network_connection_handler_impl.cc b/chromeos/ash/components/network/network_connection_handler_impl.cc
index 5d44d405..686db07 100644
--- a/chromeos/ash/components/network/network_connection_handler_impl.cc
+++ b/chromeos/ash/components/network/network_connection_handler_impl.cc
@@ -426,8 +426,7 @@
     // connection. Prepare the network for connection before proceeding.
     cellular_connection_handler_->PrepareExistingCellularNetworkForConnection(
         cellular_network_iccid,
-        base::BindOnce(&NetworkConnectionHandlerImpl::
-                           OnPrepareCellularNetworkForConnectionSuccess,
+        base::BindOnce(&NetworkConnectionHandlerImpl::CallShillConnect,
                        AsWeakPtr()),
         base::BindOnce(&NetworkConnectionHandlerImpl::
                            OnPrepareCellularNetworkForConnectionFailure,
@@ -449,18 +448,6 @@
                      AsWeakPtr(), check_error_state));
 }
 
-void NetworkConnectionHandlerImpl::OnPrepareCellularNetworkForConnectionSuccess(
-    const std::string& service_path,
-    bool auto_connected) {
-  // If the cellular network is auto-connected by Shill, there is no need to
-  // call Shill connect.
-  if (auto_connected) {
-    HandleShillConnectSuccess(service_path);
-    return;
-  }
-  CallShillConnect(service_path);
-}
-
 void NetworkConnectionHandlerImpl::DisconnectNetwork(
     const std::string& service_path,
     base::OnceClosure success_callback,
diff --git a/chromeos/ash/components/network/network_connection_handler_impl.h b/chromeos/ash/components/network/network_connection_handler_impl.h
index 4785653..e51e684e 100644
--- a/chromeos/ash/components/network/network_connection_handler_impl.h
+++ b/chromeos/ash/components/network/network_connection_handler_impl.h
@@ -99,12 +99,6 @@
   ConnectRequest* GetPendingRequest(const std::string& service_path);
   bool HasPendingCellularRequest() const;
 
-  // Callback when PrepareExistingCellularNetworkForConnection succeeded.
-  void OnPrepareCellularNetworkForConnectionSuccess(
-      const std::string& service_path,
-      bool auto_connected);
-
-  // Callback when PrepareExistingCellularNetworkForConnection failed.
   void OnPrepareCellularNetworkForConnectionFailure(
       const std::string& service_path,
       const std::string& error_name);
diff --git a/chromeos/ash/components/network/network_connection_handler_impl_unittest.cc b/chromeos/ash/components/network/network_connection_handler_impl_unittest.cc
index 1f9e8c35..63b4dd6a 100644
--- a/chromeos/ash/components/network/network_connection_handler_impl_unittest.cc
+++ b/chromeos/ash/components/network/network_connection_handler_impl_unittest.cc
@@ -701,8 +701,7 @@
 TEST_F(NetworkConnectionHandlerImplTest, IgnoreConnectInProgressError_Fails) {
   Init();
 
-  AddNonConnectablePSimService();
-  SetCellularServiceConnectable();
+  AddCellularServiceWithESimProfile();
   SetShillConnectError(shill::kErrorResultInProgress);
   Connect(kTestCellularServicePath);
   EXPECT_TRUE(GetResultAndReset().empty());
@@ -1170,8 +1169,7 @@
   EXPECT_EQ(kSuccessResult, GetResultAndReset());
 }
 
-TEST_F(NetworkConnectionHandlerImplTest,
-       ESimProfile_EnableProfileAndWaitForAutoconnect) {
+TEST_F(NetworkConnectionHandlerImplTest, ESimProfile_EnableProfile) {
   Init();
   AddCellularServiceWithESimProfile();
 
@@ -1179,24 +1177,6 @@
   // connection is initiated, we attempt to enable the profile via Hermes.
   Connect(kTestCellularServicePath);
   SetCellularServiceConnectable();
-  // Set cellular service to connected state.
-  SetCellularServiceState(shill::kStateOnline);
-  EXPECT_EQ(kSuccessResult, GetResultAndReset());
-}
-
-TEST_F(NetworkConnectionHandlerImplTest,
-       ESimProfile_EnableProfileAndAutoconnectTimeout) {
-  const base::TimeDelta kCellularAutoConnectTimeout = base::Seconds(120);
-  Init();
-  AddCellularServiceWithESimProfile();
-
-  // Do not set the service to be connectable before trying to connect. When a
-  // connection is initiated, we attempt to enable the profile via Hermes.
-  Connect(kTestCellularServicePath);
-  SetCellularServiceConnectable();
-  EXPECT_TRUE(GetResultAndReset().empty());
-
-  AdvanceClock(kCellularAutoConnectTimeout);
   EXPECT_EQ(kSuccessResult, GetResultAndReset());
 }
 
@@ -1211,8 +1191,6 @@
   // Now, create a non-stub service and make it connectable.
   AddNonConnectableESimService();
   SetCellularServiceConnectable();
-  // Set cellular service to connected state.
-  SetCellularServiceState(shill::kStateOnline);
 
   EXPECT_EQ(kSuccessResult, GetResultAndReset());
 
diff --git a/ash/components/trial_group/BUILD.gn b/chromeos/ash/components/trial_group/BUILD.gn
similarity index 85%
rename from ash/components/trial_group/BUILD.gn
rename to chromeos/ash/components/trial_group/BUILD.gn
index 13c2331..9a2aac29 100644
--- a/ash/components/trial_group/BUILD.gn
+++ b/chromeos/ash/components/trial_group/BUILD.gn
@@ -20,14 +20,12 @@
     "//url",
   ]
 
-  defines = [ "IS_TRIAL_GROUP_CHECKER_IMPL" ]
+  defines = [ "IS_CHROMEOS_ASH_COMPONENTS_TRIAL_GROUP_IMPL" ]
 }
 
 source_set("unit_tests") {
   testonly = true
-  sources = [
-    "trial_group_checker_unittest.cc",
-  ]
+  sources = [ "trial_group_checker_unittest.cc" ]
 
   deps = [
     ":trial_group",
diff --git a/ash/components/trial_group/OWNERS b/chromeos/ash/components/trial_group/OWNERS
similarity index 100%
rename from ash/components/trial_group/OWNERS
rename to chromeos/ash/components/trial_group/OWNERS
diff --git a/ash/components/trial_group/trial_group_checker.cc b/chromeos/ash/components/trial_group/trial_group_checker.cc
similarity index 97%
rename from ash/components/trial_group/trial_group_checker.cc
rename to chromeos/ash/components/trial_group/trial_group_checker.cc
index da1821e4..c5b151a 100644
--- a/ash/components/trial_group/trial_group_checker.cc
+++ b/chromeos/ash/components/trial_group/trial_group_checker.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 "ash/components/trial_group/trial_group_checker.h"
+#include "chromeos/ash/components/trial_group/trial_group_checker.h"
 
 #include "base/bind.h"
 #include "base/json/json_reader.h"
diff --git a/ash/components/trial_group/trial_group_checker.h b/chromeos/ash/components/trial_group/trial_group_checker.h
similarity index 88%
rename from ash/components/trial_group/trial_group_checker.h
rename to chromeos/ash/components/trial_group/trial_group_checker.h
index fa1fbd4..0720b62 100644
--- a/ash/components/trial_group/trial_group_checker.h
+++ b/chromeos/ash/components/trial_group/trial_group_checker.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 ASH_COMPONENTS_TRIAL_GROUP_TRIAL_GROUP_CHECKER_H_
-#define ASH_COMPONENTS_TRIAL_GROUP_TRIAL_GROUP_CHECKER_H_
+#ifndef CHROMEOS_ASH_COMPONENTS_TRIAL_GROUP_TRIAL_GROUP_CHECKER_H_
+#define CHROMEOS_ASH_COMPONENTS_TRIAL_GROUP_TRIAL_GROUP_CHECKER_H_
 
 #include <string>
 
@@ -25,7 +25,7 @@
 // this request for users that have a dogfood finch experiment flag set.
 // |group_id| contains the integer corresponding to the dogfood trial. Only one
 // |group_id| per instance. To check another |group_id| use another instance.
-class COMPONENT_EXPORT(TRIAL_GROUP_CHECKER) TrialGroupChecker {
+class COMPONENT_EXPORT(CHROMEOS_ASH_COMPONENTS_TRIAL_GROUP) TrialGroupChecker {
  public:
   enum GroupId {
     INVALID_GROUP = 0,
@@ -74,4 +74,4 @@
 }  // namespace trial_group
 }  // namespace ash
 
-#endif  // ASH_COMPONENTS_TRIAL_GROUP_TRIAL_GROUP_CHECKER_H_
+#endif  // CHROMEOS_ASH_COMPONENTS_TRIAL_GROUP_TRIAL_GROUP_CHECKER_H_
diff --git a/ash/components/trial_group/trial_group_checker_unittest.cc b/chromeos/ash/components/trial_group/trial_group_checker_unittest.cc
similarity index 97%
rename from ash/components/trial_group/trial_group_checker_unittest.cc
rename to chromeos/ash/components/trial_group/trial_group_checker_unittest.cc
index 41d52ed..40bcfd6 100644
--- a/ash/components/trial_group/trial_group_checker_unittest.cc
+++ b/chromeos/ash/components/trial_group/trial_group_checker_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 "ash/components/trial_group/trial_group_checker.h"
+#include "chromeos/ash/components/trial_group/trial_group_checker.h"
 
 #include "base/test/task_environment.h"
 #include "net/test/embedded_test_server/embedded_test_server.h"
diff --git a/chromeos/ash/services/bluetooth_config/bluetooth_power_controller_impl.cc b/chromeos/ash/services/bluetooth_config/bluetooth_power_controller_impl.cc
index efaa044..57597c4 100644
--- a/chromeos/ash/services/bluetooth_config/bluetooth_power_controller_impl.cc
+++ b/chromeos/ash/services/bluetooth_config/bluetooth_power_controller_impl.cc
@@ -4,7 +4,6 @@
 
 #include "chromeos/ash/services/bluetooth_config/bluetooth_power_controller_impl.h"
 
-#include "ash/constants/ash_features.h"
 #include "ash/constants/ash_pref_names.h"
 #include "chromeos/ash/services/bluetooth_config/public/cpp/cros_bluetooth_config_util.h"
 #include "components/device_event_log/device_event_log.h"
@@ -32,23 +31,15 @@
 // static
 void BluetoothPowerControllerImpl::RegisterLocalStatePrefs(
     PrefRegistrySimple* registry) {
-  // If this flag is off, this pref is registered by
-  // ash::BluetoothPowerController.
-  if (features::IsBluetoothRevampEnabled()) {
-    registry->RegisterBooleanPref(prefs::kSystemBluetoothAdapterEnabled,
-                                  /*default_value=*/false);
-  }
+  registry->RegisterBooleanPref(prefs::kSystemBluetoothAdapterEnabled,
+                                /*default_value=*/false);
 }
 
 // static
 void BluetoothPowerControllerImpl::RegisterProfilePrefs(
     PrefRegistrySimple* registry) {
-  // If this flag is off, this pref is registered by
-  // ash::BluetoothPowerController.
-  if (features::IsBluetoothRevampEnabled()) {
-    registry->RegisterBooleanPref(prefs::kUserBluetoothAdapterEnabled,
-                                  /*default_value=*/false);
-  }
+  registry->RegisterBooleanPref(prefs::kUserBluetoothAdapterEnabled,
+                                /*default_value=*/false);
 }
 
 BluetoothPowerControllerImpl::BluetoothPowerControllerImpl(
diff --git a/chromeos/ash/services/bluetooth_config/bluetooth_power_controller_impl_unittest.cc b/chromeos/ash/services/bluetooth_config/bluetooth_power_controller_impl_unittest.cc
index 3d9b7537..eed5057 100644
--- a/chromeos/ash/services/bluetooth_config/bluetooth_power_controller_impl_unittest.cc
+++ b/chromeos/ash/services/bluetooth_config/bluetooth_power_controller_impl_unittest.cc
@@ -4,9 +4,7 @@
 
 #include "chromeos/ash/services/bluetooth_config/bluetooth_power_controller_impl.h"
 
-#include "ash/constants/ash_features.h"
 #include "ash/constants/ash_pref_names.h"
-#include "base/test/scoped_feature_list.h"
 #include "base/test/task_environment.h"
 #include "chromeos/ash/services/bluetooth_config/fake_adapter_state_controller.h"
 #include "components/session_manager/core/session_manager.h"
@@ -35,8 +33,6 @@
 
   // testing::Test:
   void SetUp() override {
-    feature_list_.InitAndEnableFeature(features::kBluetoothRevamp);
-
     BluetoothPowerControllerImpl::RegisterLocalStatePrefs(
         local_state()->registry());
     BluetoothPowerControllerImpl::RegisterProfilePrefs(
@@ -112,7 +108,6 @@
 
  private:
   base::test::TaskEnvironment task_environment_;
-  base::test::ScopedFeatureList feature_list_;
   std::unique_ptr<session_manager::SessionManager> session_manager_;
   user_manager::FakeUserManager* fake_user_manager_;
   std::unique_ptr<user_manager::ScopedUserManager> scoped_user_manager_;
diff --git a/chromeos/ash/services/bluetooth_config/cros_bluetooth_config_unittest.cc b/chromeos/ash/services/bluetooth_config/cros_bluetooth_config_unittest.cc
index aa6ba0e..7f91e12 100644
--- a/chromeos/ash/services/bluetooth_config/cros_bluetooth_config_unittest.cc
+++ b/chromeos/ash/services/bluetooth_config/cros_bluetooth_config_unittest.cc
@@ -6,9 +6,7 @@
 
 #include <memory>
 
-#include "ash/constants/ash_features.h"
 #include "base/test/bind.h"
-#include "base/test/scoped_feature_list.h"
 #include "base/test/task_environment.h"
 #include "chromeos/ash/services/bluetooth_config/bluetooth_power_controller_impl.h"
 #include "chromeos/ash/services/bluetooth_config/device_name_manager_impl.h"
@@ -43,8 +41,6 @@
 
   // testing::Test:
   void SetUp() override {
-    feature_list_.InitAndEnableFeature(features::kBluetoothRevamp);
-
     DeviceNameManagerImpl::RegisterLocalStatePrefs(
         test_pref_service_.registry());
     BluetoothPowerControllerImpl::RegisterLocalStatePrefs(
@@ -87,7 +83,6 @@
 
  private:
   base::test::TaskEnvironment task_environment_;
-  base::test::ScopedFeatureList feature_list_;
   user_manager::FakeUserManager* fake_user_manager_;
   std::unique_ptr<user_manager::ScopedUserManager> scoped_user_manager_;
   session_manager::SessionManager session_manager_;
diff --git a/chromeos/ash/services/bluetooth_config/device_operation_handler_impl_unittest.cc b/chromeos/ash/services/bluetooth_config/device_operation_handler_impl_unittest.cc
index f6c0dd7..8b842573 100644
--- a/chromeos/ash/services/bluetooth_config/device_operation_handler_impl_unittest.cc
+++ b/chromeos/ash/services/bluetooth_config/device_operation_handler_impl_unittest.cc
@@ -107,10 +107,10 @@
             mock_adapter_.get(), kTestBluetoothClass, kTestBluetoothName,
             address, /*paired=*/false, /*connected=*/false);
 
-    ON_CALL(*mock_device, ConnectClassic_(testing::_, testing::_))
+    ON_CALL(*mock_device, ConnectClassic(testing::_, testing::_))
         .WillByDefault(testing::Invoke(
             [this](device::BluetoothDevice::PairingDelegate* pairing_delegate,
-                   device::BluetoothDevice::ConnectCallback& callback) {
+                   device::BluetoothDevice::ConnectCallback callback) {
               EXPECT_FALSE(connect_callback_);
               connect_callback_ = std::move(callback);
             }));
diff --git a/chromeos/ash/services/bluetooth_config/device_pairing_handler_impl_unittest.cc b/chromeos/ash/services/bluetooth_config/device_pairing_handler_impl_unittest.cc
index f0c5b8e..cd1bd33e 100644
--- a/chromeos/ash/services/bluetooth_config/device_pairing_handler_impl_unittest.cc
+++ b/chromeos/ash/services/bluetooth_config/device_pairing_handler_impl_unittest.cc
@@ -138,11 +138,11 @@
             address, /*paired=*/false, /*connected=*/false);
 
     device::BluetoothDevice* device = mock_device.get();
-    ON_CALL(*mock_device, Connect_(testing::_, testing::_))
+    ON_CALL(*mock_device, Connect(testing::_, testing::_))
         .WillByDefault(testing::Invoke(
             [this, auth_type, device, passkey](
                 device::BluetoothDevice::PairingDelegate* pairing_delegate,
-                device::BluetoothDevice::ConnectCallback& callback) {
+                device::BluetoothDevice::ConnectCallback callback) {
               EXPECT_FALSE(connect_callback_);
               connect_callback_ = std::move(callback);
 
diff --git a/chromeos/ash/services/bluetooth_config/in_process_instance.cc b/chromeos/ash/services/bluetooth_config/in_process_instance.cc
index 4635bf13..66e71fc3 100644
--- a/chromeos/ash/services/bluetooth_config/in_process_instance.cc
+++ b/chromeos/ash/services/bluetooth_config/in_process_instance.cc
@@ -56,7 +56,6 @@
 
 void Initialize(FastPairDelegate* delegate) {
   BLUETOOTH_LOG(EVENT) << "Beginning CrosBluetoothConfig initialization";
-  CHECK(features::IsBluetoothRevampEnabled());
   CHECK(!g_instance);
   DCHECK_EQ(features::IsFastPairEnabled(), static_cast<bool>(delegate));
 
@@ -68,7 +67,6 @@
 
 void Shutdown() {
   BLUETOOTH_LOG(EVENT) << "Shutting down CrosBluetoothConfig";
-  CHECK(features::IsBluetoothRevampEnabled());
   if (g_instance) {
     delete g_instance;
     g_instance = nullptr;
@@ -94,7 +92,6 @@
 void BindToInProcessInstance(
     mojo::PendingReceiver<mojom::CrosBluetoothConfig> pending_receiver) {
   BLUETOOTH_LOG(DEBUG) << "Binding to CrosBluetoothConfig";
-  CHECK(features::IsBluetoothRevampEnabled());
   DCHECK_EQ(features::IsFastPairEnabled(),
             static_cast<bool>(g_fast_pair_delegate));
   device::BluetoothAdapterFactory::Get()->GetAdapter(
diff --git a/chromeos/ash/services/cellular_setup/esim_profile.cc b/chromeos/ash/services/cellular_setup/esim_profile.cc
index af0b11a..7aba281 100644
--- a/chromeos/ash/services/cellular_setup/esim_profile.cc
+++ b/chromeos/ash/services/cellular_setup/esim_profile.cc
@@ -391,8 +391,7 @@
               weak_ptr_factory_.GetWeakPtr()));
 }
 
-void ESimProfile::OnNewProfileEnableSuccess(const std::string& service_path,
-                                            bool auto_connected) {
+void ESimProfile::OnNewProfileEnableSuccess(const std::string& service_path) {
   const NetworkState* network_state =
       esim_manager_->network_state_handler()->GetNetworkState(service_path);
   if (!network_state) {
diff --git a/chromeos/ash/services/cellular_setup/esim_profile.h b/chromeos/ash/services/cellular_setup/esim_profile.h
index b4961d8..ac54149 100644
--- a/chromeos/ash/services/cellular_setup/esim_profile.h
+++ b/chromeos/ash/services/cellular_setup/esim_profile.h
@@ -94,8 +94,7 @@
   void OnPendingProfileInstallResult(
       std::unique_ptr<CellularInhibitor::InhibitLock> inhibit_lock,
       HermesResponseStatus status);
-  void OnNewProfileEnableSuccess(const std::string& service_path,
-                                 bool auto_connected);
+  void OnNewProfileEnableSuccess(const std::string& service_path);
   void OnPrepareCellularNetworkForConnectionFailure(
       const std::string& service_path,
       const std::string& error_name);
diff --git a/chromeos/ash/services/cellular_setup/esim_profile_unittest.cc b/chromeos/ash/services/cellular_setup/esim_profile_unittest.cc
index 2c13dd5..bb1f777 100644
--- a/chromeos/ash/services/cellular_setup/esim_profile_unittest.cc
+++ b/chromeos/ash/services/cellular_setup/esim_profile_unittest.cc
@@ -139,7 +139,6 @@
             }));
 
     FastForwardProfileRefreshDelay();
-    FastForwardAutoConnectWaiting();
 
     if (wait_for_connect) {
       base::RunLoop().RunUntilIdle();
diff --git a/chromeos/ash/services/cellular_setup/esim_test_base.cc b/chromeos/ash/services/cellular_setup/esim_test_base.cc
index ffb9affb..527d7ca 100644
--- a/chromeos/ash/services/cellular_setup/esim_test_base.cc
+++ b/chromeos/ash/services/cellular_setup/esim_test_base.cc
@@ -139,9 +139,4 @@
   task_environment()->FastForwardBy(2 * kProfileRefreshCallbackDelay);
 }
 
-void ESimTestBase::FastForwardAutoConnectWaiting() {
-  task_environment_.FastForwardBy(
-      CellularConnectionHandler::kWaitingForAutoConnectTimeout);
-}
-
 }  // namespace ash::cellular_setup
diff --git a/chromeos/ash/services/cellular_setup/esim_test_base.h b/chromeos/ash/services/cellular_setup/esim_test_base.h
index 38aaad4..f82f2b6 100644
--- a/chromeos/ash/services/cellular_setup/esim_test_base.h
+++ b/chromeos/ash/services/cellular_setup/esim_test_base.h
@@ -52,7 +52,6 @@
   ~ESimTestBase() override;
 
   void FastForwardProfileRefreshDelay();
-  void FastForwardAutoConnectWaiting();
 
   ESimManager* esim_manager() { return esim_manager_.get(); }
   ESimManagerTestObserver* observer() { return observer_.get(); }
diff --git a/chromeos/ash/services/cellular_setup/euicc_unittest.cc b/chromeos/ash/services/cellular_setup/euicc_unittest.cc
index feb005d..a33856a9 100644
--- a/chromeos/ash/services/cellular_setup/euicc_unittest.cc
+++ b/chromeos/ash/services/cellular_setup/euicc_unittest.cc
@@ -94,7 +94,6 @@
     FastForwardProfileRefreshDelay();
 
     if (wait_for_connect) {
-      FastForwardAutoConnectWaiting();
       base::RunLoop().RunUntilIdle();
       EXPECT_LE(1u, network_connection_handler()->connect_calls().size());
       if (fail_connect) {
diff --git a/chromeos/dbus/dlp/dlp_client.cc b/chromeos/dbus/dlp/dlp_client.cc
index 415aa54..19572d29 100644
--- a/chromeos/dbus/dlp/dlp_client.cc
+++ b/chromeos/dbus/dlp/dlp_client.cc
@@ -98,7 +98,7 @@
   }
 
   void GetFilesSources(const dlp::GetFilesSourcesRequest request,
-                       GetFilesSourcesCallback callback) const override {
+                       GetFilesSourcesCallback callback) override {
     dbus::MethodCall method_call(dlp::kDlpInterface,
                                  dlp::kGetFilesSourcesMethod);
     dbus::MessageWriter writer(&method_call);
@@ -119,7 +119,7 @@
   }
 
   void CheckFilesTransfer(const dlp::CheckFilesTransferRequest request,
-                          CheckFilesTransferCallback callback) const override {
+                          CheckFilesTransferCallback callback) override {
     dbus::MethodCall method_call(dlp::kDlpInterface,
                                  dlp::kCheckFilesTransferMethod);
     dbus::MessageWriter writer(&method_call);
diff --git a/chromeos/dbus/dlp/dlp_client.h b/chromeos/dbus/dlp/dlp_client.h
index 40f8c8e4..4420a23 100644
--- a/chromeos/dbus/dlp/dlp_client.h
+++ b/chromeos/dbus/dlp/dlp_client.h
@@ -83,10 +83,9 @@
   virtual void AddFile(const dlp::AddFileRequest request,
                        AddFileCallback callback) = 0;
   virtual void GetFilesSources(const dlp::GetFilesSourcesRequest request,
-                               GetFilesSourcesCallback callback) const = 0;
-  virtual void CheckFilesTransfer(
-      const dlp::CheckFilesTransferRequest request,
-      CheckFilesTransferCallback callback) const = 0;
+                               GetFilesSourcesCallback callback) = 0;
+  virtual void CheckFilesTransfer(const dlp::CheckFilesTransferRequest request,
+                                  CheckFilesTransferCallback callback) = 0;
   virtual void RequestFileAccess(const dlp::RequestFileAccessRequest request,
                                  RequestFileAccessCallback callback) = 0;
 
diff --git a/chromeos/dbus/dlp/fake_dlp_client.cc b/chromeos/dbus/dlp/fake_dlp_client.cc
index ff10c9f..cdf481f 100644
--- a/chromeos/dbus/dlp/fake_dlp_client.cc
+++ b/chromeos/dbus/dlp/fake_dlp_client.cc
@@ -49,7 +49,7 @@
 }
 
 void FakeDlpClient::GetFilesSources(const dlp::GetFilesSourcesRequest request,
-                                    GetFilesSourcesCallback callback) const {
+                                    GetFilesSourcesCallback callback) {
   dlp::GetFilesSourcesResponse response;
   for (const auto& file_inode : request.files_inodes()) {
     auto file_itr = files_database_.find(file_inode);
@@ -65,7 +65,7 @@
 
 void FakeDlpClient::CheckFilesTransfer(
     const dlp::CheckFilesTransferRequest request,
-    CheckFilesTransferCallback callback) const {
+    CheckFilesTransferCallback callback) {
   dlp::CheckFilesTransferResponse response;
   if (check_files_transfer_response_.has_value())
     response = check_files_transfer_response_.value();
diff --git a/chromeos/dbus/dlp/fake_dlp_client.h b/chromeos/dbus/dlp/fake_dlp_client.h
index 7ab77fd..f8b9ab43 100644
--- a/chromeos/dbus/dlp/fake_dlp_client.h
+++ b/chromeos/dbus/dlp/fake_dlp_client.h
@@ -29,9 +29,9 @@
   void AddFile(const dlp::AddFileRequest request,
                AddFileCallback callback) override;
   void GetFilesSources(const dlp::GetFilesSourcesRequest request,
-                       GetFilesSourcesCallback callback) const override;
+                       GetFilesSourcesCallback callback) override;
   void CheckFilesTransfer(const dlp::CheckFilesTransferRequest request,
-                          CheckFilesTransferCallback callback) const override;
+                          CheckFilesTransferCallback callback) override;
   void RequestFileAccess(const dlp::RequestFileAccessRequest request,
                          RequestFileAccessCallback callback) override;
   bool IsAlive() const override;
diff --git a/chromeos/dbus/power/fake_power_manager_client.cc b/chromeos/dbus/power/fake_power_manager_client.cc
index 119bc8b..d55fe6d 100644
--- a/chromeos/dbus/power/fake_power_manager_client.cc
+++ b/chromeos/dbus/power/fake_power_manager_client.cc
@@ -151,7 +151,9 @@
 
 void FakePowerManagerClient::DecreaseKeyboardBrightness() {}
 
-void FakePowerManagerClient::IncreaseKeyboardBrightness() {}
+void FakePowerManagerClient::IncreaseKeyboardBrightness() {
+  ++num_increase_keyboard_brightness_calls_;
+}
 
 void FakePowerManagerClient::GetKeyboardBrightnessPercent(
     DBusMethodCallback<double> callback) {
diff --git a/chromeos/dbus/power/fake_power_manager_client.h b/chromeos/dbus/power/fake_power_manager_client.h
index b75413c..c4ff0f9 100644
--- a/chromeos/dbus/power/fake_power_manager_client.h
+++ b/chromeos/dbus/power/fake_power_manager_client.h
@@ -58,6 +58,9 @@
   int num_wake_notification_calls() const {
     return num_wake_notification_calls_;
   }
+  int num_increase_keyboard_brightness_calls() const {
+    return num_increase_keyboard_brightness_calls_;
+  }
   int num_pending_suspend_readiness_callbacks() const {
     return num_pending_suspend_readiness_callbacks_;
   }
@@ -252,6 +255,7 @@
   int num_set_is_projecting_calls_ = 0;
   int num_set_backlights_forced_off_calls_ = 0;
   int num_wake_notification_calls_ = 0;
+  int num_increase_keyboard_brightness_calls_ = 0;
 
   // Number of pending suspend readiness callbacks.
   int num_pending_suspend_readiness_callbacks_ = 0;
diff --git a/chromeos/services/network_config/OWNERS b/chromeos/services/network_config/OWNERS
index a27b710e..2abc848 100644
--- a/chromeos/services/network_config/OWNERS
+++ b/chromeos/services/network_config/OWNERS
@@ -1,2 +1,5 @@
-stevenjb@chromium.org
+azeemarshad@chromium.org
+chadduffin@chromium.org
+jiajunz@google.com
 khorimoto@chromium.org
+stevenjb@chromium.org
diff --git a/chromeos/strings/chromeos_strings_ja.xtb b/chromeos/strings/chromeos_strings_ja.xtb
index f36f6623..4393cc83 100644
--- a/chromeos/strings/chromeos_strings_ja.xtb
+++ b/chromeos/strings/chromeos_strings_ja.xtb
@@ -250,6 +250,7 @@
 <translation id="3484914941826596830">ファームウェアのアップデート中、この外部デバイスを電源から外したり、パソコンをシャットダウンしたりしないでください。このウィンドウは最小化できます。アップデートには数分かかることがあります。その間、外部デバイスは動作しない可能性があります。</translation>
 <translation id="3486220673238053218">定義</translation>
 <translation id="3488065109653206955">一部有効</translation>
+<translation id="3510890413042482857"><ph name="BEGIN_LINK1" />パフォーマンス追跡データ<ph name="END_LINK1" />を送信する</translation>
 <translation id="3517001332549868749">ChromeOS の更新</translation>
 <translation id="3527036260304016759">失敗 - 不明なエラー</translation>
 <translation id="3532980081107202182">残り時間: 約 <ph name="MIN_REMAINING" /> 分</translation>
diff --git a/chromeos/strings/chromeos_strings_no.xtb b/chromeos/strings/chromeos_strings_no.xtb
index 0972860..81aff90 100644
--- a/chromeos/strings/chromeos_strings_no.xtb
+++ b/chromeos/strings/chromeos_strings_no.xtb
@@ -258,13 +258,13 @@
 <translation id="3565064564551103223">Tillatte IP-adresser</translation>
 <translation id="3569407787324516067">Skjermsparer</translation>
 <translation id="3577473026931028326">Noe gikk galt. Prøv på nytt.</translation>
-<translation id="357889014807611375">Wi-Fi med datamåling</translation>
-<translation id="3583278742022654445">Svakt signal. Prøv å flytte deg nærmere Wi-Fi-signalkilden.</translation>
+<translation id="357889014807611375">Wifi med datamåling</translation>
+<translation id="3583278742022654445">Svakt signal. Prøv å flytte deg nærmere Wifi-signalkilden.</translation>
 <translation id="3595596368722241419">Batteriet er fullt</translation>
 <translation id="3600339377155080675">Skjermspeiling</translation>
 <translation id="3603829704940252505">Brukerbilde</translation>
 <translation id="3604713164406837697">Endre bakgrunn</translation>
-<translation id="360565022852130722">Wi-Fi-nettverket er sikret med den svake protokollen WEP 802.1x</translation>
+<translation id="360565022852130722">Wifi-nettverket er sikret med den svake protokollen WEP 802.1x</translation>
 <translation id="3606583719724308068">Høy tidsforsinkelse til HTTPS-nettsteder</translation>
 <translation id="361575905210396100">Takk for tilbakemeldingen</translation>
 <translation id="3621202678540785336">Inndata</translation>
@@ -362,7 +362,7 @@
 <translation id="4609350030397390689">Tastaturlysstyrke ned</translation>
 <translation id="4627232916386272576"><ph name="DOCUMENT_TITLE" />, <ph name="PRINTER_NAME" />, <ph name="CREATION_TIME" />, <ph name="PRINTED_PAGE_NUMBER" /> av <ph name="TOTAL_PAGE_NUMBER" />. Trykk på Enter for å avbryte utskriftsjobben.</translation>
 <translation id="463791356324567266">Avbryter skanningen …</translation>
-<translation id="4646949265910132906">Sikker Wi-Fi-tilkobling</translation>
+<translation id="4646949265910132906">Sikker Wifi-tilkobling</translation>
 <translation id="4650608062294027130">Høyre Shift</translation>
 <translation id="4654549501020883054">Endre daglig</translation>
 <translation id="4665014895760275686">Produsent</translation>
@@ -452,7 +452,7 @@
 <translation id="5333530671332546086">Ukjent portaltilstand</translation>
 <translation id="5346687412805619883">Lokalt nettverk</translation>
 <translation id="5358174242040570474">Noe gikk galt. Prøv å velge en bakgrunn igjen eller åpne appen på nytt.</translation>
-<translation id="5372659122375744710">Wi-Fi-nettverket er ikke sikkert</translation>
+<translation id="5372659122375744710">Wifi-nettverket er ikke sikkert</translation>
 <translation id="5376354385557966694">Automatisk lys modus</translation>
 <translation id="5389159777326897627">Bakgrunn og stil</translation>
 <translation id="5389224261615877010">Regnbue</translation>
@@ -574,7 +574,7 @@
 <translation id="650266656685499220">For å opprette album, gå til Google Foto</translation>
 <translation id="6516990319416533844">For å teste ladehastigheten til batteriet, la det tappes i en kort periode</translation>
 <translation id="6517239166834772319">Utforsk</translation>
-<translation id="6527081081771465939">Ukjent Wi-Fi-sikkerhetsprotokoll</translation>
+<translation id="6527081081771465939">Ukjent Wifi-sikkerhetsprotokoll</translation>
 <translation id="6535178685492749208">Du er uten nett. Tilbakemeldingen blir sendt senere.</translation>
 <translation id="65587193855025101">Planskanner</translation>
 <translation id="6564646048574748301">Mislykket – skriveren kan ikke nås</translation>
@@ -756,7 +756,7 @@
 <translation id="844521431886043384">DNS er ikke konfigurert</translation>
 <translation id="8456761643544401578">Automatisk mørk modus</translation>
 <translation id="8461329675984532579">Navn på leverandøren for hjemmeenheten</translation>
-<translation id="8475690821716466388">Wi-Fi-nettverket er sikret med den svake protokollen WEP PSK</translation>
+<translation id="8475690821716466388">Wifi-nettverket er sikret med den svake protokollen WEP PSK</translation>
 <translation id="8477551185774834963">DNS-forsinkelsen er noe høyere enn den tillatte grenseverdien</translation>
 <translation id="8483248364096924578">IP-adresse</translation>
 <translation id="8491311378305535241">Kan ikke koble til HTTP-nettsteder fra Android-apper gjennom brannmuren</translation>
@@ -786,7 +786,7 @@
 <translation id="879568662008399081">Det kan hende dette nettverket har en obligatorisk side</translation>
 <translation id="8798099450830957504">Standard</translation>
 <translation id="8798441408945964110">Leverandørnavn</translation>
-<translation id="8814190375133053267">Wi-Fi</translation>
+<translation id="8814190375133053267">Wifi</translation>
 <translation id="8818152010000655963">Bakgrunn</translation>
 <translation id="8834539327799336565">Tilkoblet nå</translation>
 <translation id="8845001906332463065">Få hjelp</translation>
diff --git a/chromeos/tast_control.gni b/chromeos/tast_control.gni
index 8f4c2e7..489cb27 100644
--- a/chromeos/tast_control.gni
+++ b/chromeos/tast_control.gni
@@ -12,6 +12,10 @@
   # crbug.com/1364499
   "documentscanapi.Scan",
 
+  # b/251833060
+  "graphics.KmsvncConnect",
+  "graphics.Smoke.chrome",
+
   # crbug.com/1364560
   "inputs.InputMethodShelfInputs",
 
@@ -23,6 +27,16 @@
   "inputs.PhysicalKeyboardAutocorrectAccentKey",
   "inputs.PhysicalKeyboardKoreanTyping",
 
+  # b/251833060
+  "peripherals.LaunchAppFromGuestSession.diagnostics",
+
+  # b/251877133
+  "policy.DisableScreenshotsHotkey",
+  "policy.DeveloperToolsAvailability",
+
+  # b/251877700
+  "policy.DefaultSearchProviderEnabled",
+
   # https://crbug.com/1252352
   "quicksettings.SignInScreen.battery",
   "quicksettings.SignInScreen.noaudio_nobattery",
@@ -31,6 +45,9 @@
   # crbug.com/1263234
   "quicksettings.ManagedDeviceInfo",
 
+  # b/251833060
+  "ui.GuestModeExtension",
+
   # crbug.com/1259127
   "ui.TabletOperations",
 
diff --git a/components/autofill/content/renderer/password_autofill_agent.cc b/components/autofill/content/renderer/password_autofill_agent.cc
index 4e1f2e6..328c757 100644
--- a/components/autofill/content/renderer/password_autofill_agent.cc
+++ b/components/autofill/content/renderer/password_autofill_agent.cc
@@ -388,15 +388,21 @@
          std::string::npos;
 }
 
-// Whether any of the fields in |form| is a password or username field.
-bool FormHasPasswordOrUsernameField(const FormData& form) {
-  for (const auto& field : form.fields) {
-    if (field.IsPasswordInputElement() ||
-        FieldHasUsernameAutocompleteAttribute(field)) {
-      return true;
-    }
-  }
-  return false;
+// Whether field has an autocomplete="webauthn" attribute.
+bool FieldHasWebAuthnAutocompleteAttribute(const FormFieldData& field) {
+  return field.autocomplete_attribute.find(
+             password_manager::constants::kAutocompleteWebAuthn) !=
+         std::string::npos;
+}
+
+// Whether any of the fields in |form| suggest the need to autofill credentials.
+bool IsCredentialForm(const FormData& form) {
+  return std::any_of(form.fields.begin(), form.fields.end(),
+                     [](const auto& field) {
+                       return field.IsPasswordInputElement() ||
+                              FieldHasUsernameAutocompleteAttribute(field) ||
+                              FieldHasWebAuthnAutocompleteAttribute(field);
+                     });
 }
 
 void AnnotateFieldWithParsingResult(WebDocument doc,
@@ -1287,7 +1293,7 @@
     }
 
     std::unique_ptr<FormData> form_data(GetFormDataFromWebForm(form));
-    if (!form_data || !FormHasPasswordOrUsernameField(*form_data))
+    if (!form_data || !IsCredentialForm(*form_data))
       continue;
 
     if (logger)
@@ -1327,7 +1333,7 @@
 
   if (add_unowned_inputs) {
     std::unique_ptr<FormData> form_data(GetFormDataFromUnownedInputElements());
-    if (form_data && FormHasPasswordOrUsernameField(*form_data)) {
+    if (form_data && IsCredentialForm(*form_data)) {
       if (logger) {
         logger->LogFormData(Logger::STRING_FORM_IS_PASSWORD, *form_data);
       }
@@ -1774,7 +1780,7 @@
   if (!form_data)
     return;
 
-  if (!FormHasPasswordOrUsernameField(*form_data))
+  if (!IsCredentialForm(*form_data))
     return;
 
   GetPasswordManagerDriver().InformAboutUserInput(*form_data);
diff --git a/components/autofill/core/browser/BUILD.gn b/components/autofill/core/browser/BUILD.gn
index 4802727..f0f2ffc4 100644
--- a/components/autofill/core/browser/BUILD.gn
+++ b/components/autofill/core/browser/BUILD.gn
@@ -137,6 +137,8 @@
     "data_model/autofill_structured_address_regex_provider.h",
     "data_model/autofill_structured_address_utils.cc",
     "data_model/autofill_structured_address_utils.h",
+    "data_model/autofill_wallet_usage_data.cc",
+    "data_model/autofill_wallet_usage_data.h",
     "data_model/autofillable_data.cc",
     "data_model/autofillable_data.h",
     "data_model/birthdate.cc",
@@ -909,6 +911,7 @@
     "webdata/autofill_wallet_metadata_sync_bridge_unittest.cc",
     "webdata/autofill_wallet_offer_sync_bridge_unittest.cc",
     "webdata/autofill_wallet_sync_bridge_unittest.cc",
+    "webdata/autofill_wallet_usage_data_sync_bridge_unittest.cc",
     "webdata/web_data_service_unittest.cc",
   ]
 
diff --git a/components/autofill/core/browser/autofill_test_utils.cc b/components/autofill/core/browser/autofill_test_utils.cc
index efea2774..fb29663 100644
--- a/components/autofill/core/browser/autofill_test_utils.cc
+++ b/components/autofill/core/browser/autofill_test_utils.cc
@@ -765,6 +765,18 @@
       promo_code);
 }
 
+AutofillWalletUsageData GetAutofillWalletUsageDataForVirtualCard() {
+  VirtualCardUsageData virtual_card_usage_data;
+  virtual_card_usage_data.instrument_id =
+      VirtualCardUsageData::InstrumentId(12345);
+  virtual_card_usage_data.virtual_card_last_four = "1234";
+  virtual_card_usage_data.merchant_origin =
+      url::Origin::Create(GURL("https://www.google.com"));
+  virtual_card_usage_data.merchant_app_package = "google";
+
+  return AutofillWalletUsageData::ForVirtualCard(virtual_card_usage_data);
+}
+
 void SetProfileInfo(AutofillProfile* profile,
                     const char* first_name,
                     const char* middle_name,
diff --git a/components/autofill/core/browser/autofill_test_utils.h b/components/autofill/core/browser/autofill_test_utils.h
index 14a4b58..a46ccc1 100644
--- a/components/autofill/core/browser/autofill_test_utils.h
+++ b/components/autofill/core/browser/autofill_test_utils.h
@@ -12,6 +12,7 @@
 #include "components/autofill/core/browser/autofill_field.h"
 #include "components/autofill/core/browser/data_model/autofill_offer_data.h"
 #include "components/autofill/core/browser/data_model/autofill_profile.h"
+#include "components/autofill/core/browser/data_model/autofill_wallet_usage_data.h"
 #include "components/autofill/core/browser/data_model/credit_card.h"
 #include "components/autofill/core/browser/data_model/credit_card_cloud_token_data.h"
 #include "components/autofill/core/browser/data_model/iban.h"
@@ -322,6 +323,10 @@
     bool is_expired = false,
     int64_t offer_id = 333);
 
+// Return an Autofill Wallet Usage Data with dummy info specifically for a
+// Virtual Card.
+AutofillWalletUsageData GetAutofillWalletUsageDataForVirtualCard();
+
 // A unit testing utility that is common to a number of the Autofill unit
 // tests.  |SetProfileInfo| provides a quick way to populate a profile with
 // c-strings.
diff --git a/components/autofill/core/browser/data_model/autofill_wallet_usage_data.cc b/components/autofill/core/browser/data_model/autofill_wallet_usage_data.cc
new file mode 100644
index 0000000..09add32
--- /dev/null
+++ b/components/autofill/core/browser/data_model/autofill_wallet_usage_data.cc
@@ -0,0 +1,40 @@
+// Copyright 2022 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/autofill_wallet_usage_data.h"
+
+namespace autofill {
+
+VirtualCardUsageData::VirtualCardUsageData() = default;
+
+VirtualCardUsageData::VirtualCardUsageData(const VirtualCardUsageData&) =
+    default;
+
+VirtualCardUsageData& VirtualCardUsageData::operator=(
+    const VirtualCardUsageData&) = default;
+
+VirtualCardUsageData::~VirtualCardUsageData() = default;
+
+// static
+AutofillWalletUsageData AutofillWalletUsageData::ForVirtualCard(
+    const VirtualCardUsageData& virtual_card_usage_data) {
+  return AutofillWalletUsageData(UsageDataType::kVirtualCard,
+                                 virtual_card_usage_data);
+}
+
+AutofillWalletUsageData::AutofillWalletUsageData(
+    const AutofillWalletUsageData&) = default;
+
+AutofillWalletUsageData& AutofillWalletUsageData::operator=(
+    const AutofillWalletUsageData&) = default;
+
+AutofillWalletUsageData::~AutofillWalletUsageData() = default;
+
+AutofillWalletUsageData::AutofillWalletUsageData(
+    UsageDataType usage_data_type,
+    const VirtualCardUsageData& virtual_card_usage_data)
+    : usage_data_type_(usage_data_type),
+      virtual_card_usage_data_(virtual_card_usage_data) {}
+
+}  // namespace autofill
diff --git a/components/autofill/core/browser/data_model/autofill_wallet_usage_data.h b/components/autofill/core/browser/data_model/autofill_wallet_usage_data.h
new file mode 100644
index 0000000..46cf3ecd
--- /dev/null
+++ b/components/autofill/core/browser/data_model/autofill_wallet_usage_data.h
@@ -0,0 +1,84 @@
+// Copyright 2022 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_AUTOFILL_WALLET_USAGE_DATA_H_
+#define COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_AUTOFILL_WALLET_USAGE_DATA_H_
+
+#include <string>
+#include <vector>
+
+#include "base/types/strong_alias.h"
+#include "url/origin.h"
+
+namespace autofill {
+
+// Usage data information related to a virtual card.
+struct VirtualCardUsageData {
+ public:
+  // Represents the unique identifier for the actual card hat the virtual card
+  // is linked to. Used to access more information regarding the actual and
+  // virtual card from Payments server. Originally generated in the Payments
+  // server.
+  using InstrumentId = base::StrongAlias<class InstrumentIdTag, int64_t>;
+
+  VirtualCardUsageData();
+  VirtualCardUsageData(const VirtualCardUsageData&);
+  VirtualCardUsageData& operator=(const VirtualCardUsageData&);
+  ~VirtualCardUsageData();
+
+  InstrumentId instrument_id = InstrumentId(0);
+
+  // The last four digits of the virtual card.
+  std::string virtual_card_last_four;
+
+  // The origin of the merchant url the virtual card was retrieved on. May not
+  // be set if accessed from an Android application. Example:
+  // https://www.walmart.com.
+  url::Origin merchant_origin;
+
+  // The app package on Android OS the virtual card was retrieved on. May not be
+  // set if accessed from Chrome browser. Example: com.walmart.android.
+  std::string merchant_app_package;
+};
+
+// Contains various information related to the usages of a specific payment
+// method on a individual merchant website or app. Wallet highlights that this
+// class is only relevant to payment data.
+class AutofillWalletUsageData {
+ public:
+  enum class UsageDataType {
+    // Default value, should not be used.
+    kUnknown = 0,
+    // Usage data is linked to a virtual card.
+    kVirtualCard = 1,
+  };
+
+  static AutofillWalletUsageData ForVirtualCard(
+      const VirtualCardUsageData& virtual_card_usage_data);
+
+  AutofillWalletUsageData(const AutofillWalletUsageData&);
+  AutofillWalletUsageData& operator=(const AutofillWalletUsageData&);
+  ~AutofillWalletUsageData();
+
+  const VirtualCardUsageData& virtual_card_usage_data() const {
+    return virtual_card_usage_data_;
+  }
+
+  UsageDataType usage_data_type() const { return usage_data_type_; }
+
+ private:
+  AutofillWalletUsageData(UsageDataType usage_data_type,
+                          const VirtualCardUsageData& virtual_card_usage_data);
+
+  // The type of payment that the usage data is linked to.
+  UsageDataType usage_data_type_ = UsageDataType::kUnknown;
+
+  // Contains additional information about the virtual card. Only set if usage
+  // data is originates from a virtual card.
+  VirtualCardUsageData virtual_card_usage_data_;
+};
+
+}  // namespace autofill
+
+#endif  // COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_AUTOFILL_WALLET_USAGE_DATA_H_
diff --git a/components/autofill/core/browser/payments/card_unmask_challenge_option.h b/components/autofill/core/browser/payments/card_unmask_challenge_option.h
index 3dce6ec..5fdca11 100644
--- a/components/autofill/core/browser/payments/card_unmask_challenge_option.h
+++ b/components/autofill/core/browser/payments/card_unmask_challenge_option.h
@@ -15,7 +15,21 @@
   kUnknownType = 0,
   // SMS OTP authentication.
   kSmsOtp = 1,
-  kMaxValue = kSmsOtp,
+  // CVC authentication.
+  kCvc = 2,
+  kMaxValue = kCvc,
+};
+
+// Indicates the position of the CVC, for example the front or back of the
+// user's card.
+enum class CvcPosition {
+  // Default value, should never be used.
+  kUnknown = 0,
+  // The CVC is on the front of the user's card.
+  kFrontOfCard = 1,
+  // The CVC is on the front of the user's card.
+  kBackOfCard = 2,
+  kMaxValue = kBackOfCard,
 };
 
 // The struct used by Autofill components to represent a card unmask challenge
@@ -32,8 +46,11 @@
   // option, such as the masked phone number that will receive an SMS, etc.
   std::u16string challenge_info = std::u16string();
 
-  // The predetermined length of the OTP value.
-  size_t otp_length = 0U;
+  // The predetermined length of the input of the challenge.
+  size_t challenge_input_length = 0U;
+
+  // The position of the CVC. Only present if `type` is `kCvc`.
+  CvcPosition cvc_position = CvcPosition::kUnknown;
 };
 
 }  // namespace autofill
diff --git a/components/autofill/core/browser/payments/credit_card_otp_authenticator.cc b/components/autofill/core/browser/payments/credit_card_otp_authenticator.cc
index 9a08fbd4..16a36329 100644
--- a/components/autofill/core/browser/payments/credit_card_otp_authenticator.cc
+++ b/components/autofill/core/browser/payments/credit_card_otp_authenticator.cc
@@ -207,7 +207,8 @@
   }
 
   autofill_client_->ShowCardUnmaskOtpInputDialog(
-      selected_challenge_option_.otp_length, weak_ptr_factory_.GetWeakPtr());
+      selected_challenge_option_.challenge_input_length,
+      weak_ptr_factory_.GetWeakPtr());
 }
 
 void CreditCardOtpAuthenticator::OnDidGetUnmaskRiskData(
diff --git a/components/autofill/core/browser/payments/payments_client_unittest.cc b/components/autofill/core/browser/payments/payments_client_unittest.cc
index c5aba5e2..ea65cb4a 100644
--- a/components/autofill/core/browser/payments/payments_client_unittest.cc
+++ b/components/autofill/core/browser/payments/payments_client_unittest.cc
@@ -698,7 +698,10 @@
   EXPECT_EQ(AutofillClient::PaymentsRpcResult::kPermanentFailure, result_);
 }
 
-TEST_F(PaymentsClientTest, VirtualCardRiskBasedYellowPathResponse) {
+TEST_F(PaymentsClientTest, VirtualCardRiskBasedYellowPathResponse_CvcFlagOff) {
+  base::test::ScopedFeatureList scoped_feature_list;
+  scoped_feature_list.InitAndDisableFeature(
+      features::kAutofillEnableCvcForVcnYellowPath);
   StartUnmasking(CardUnmaskOptions().with_virtual_card_risk_based());
   IssueOAuthToken();
   ReturnResponse(
@@ -709,7 +712,9 @@
       "\"fake_challenge_id_1\", \"masked_phone_number\": \"(***)-***-1234\" } "
       "}, { \"sms_otp_challenge_option\": { \"challenge_id\": "
       "\"fake_challenge_id_2\", \"masked_phone_number\": \"(***)-***-5678\" } "
-      "}] }");
+      "}, { \"cvc_challenge_option\": { \"challenge_id\": "
+      "\"fake_challenge_id_3\", \"cvc_length\": 3, \"cvc_position\": "
+      "\"CVC_POSITION_BACK\"}}]}");
 
   // Ensure that it's not treated as failure when no pan is returned.
   EXPECT_EQ(AutofillClient::PaymentsRpcResult::kSuccess, result_);
@@ -720,7 +725,7 @@
                 "challenge"));
   // Verify the two idv challenge options are both sms challenge and fields can
   // be correctly parsed.
-  EXPECT_EQ(2u, unmask_response_details_->card_unmask_challenge_options.size());
+  ASSERT_EQ(2u, unmask_response_details_->card_unmask_challenge_options.size());
   const CardUnmaskChallengeOption& challenge_option_1 =
       unmask_response_details_->card_unmask_challenge_options[0];
   EXPECT_EQ(CardUnmaskChallengeOptionType::kSmsOtp, challenge_option_1.type);
@@ -733,6 +738,53 @@
   EXPECT_EQ(u"(***)-***-5678", challenge_option_2.challenge_info);
 }
 
+TEST_F(PaymentsClientTest, VirtualCardRiskBasedYellowPathResponse_CvcFlagOn) {
+  base::test::ScopedFeatureList scoped_feature_list;
+  scoped_feature_list.InitAndEnableFeature(
+      features::kAutofillEnableCvcForVcnYellowPath);
+  StartUnmasking(CardUnmaskOptions().with_virtual_card_risk_based());
+  IssueOAuthToken();
+  ReturnResponse(
+      net::HTTP_OK,
+      "{ \"fido_request_options\": { \"challenge\": \"fake_fido_challenge\" }, "
+      "\"context_token\": \"fake_context_token\", \"idv_challenge_options\": "
+      "[{ \"sms_otp_challenge_option\": { \"challenge_id\": "
+      "\"fake_challenge_id_1\", \"masked_phone_number\": \"(***)-***-1234\" } "
+      "}, { \"sms_otp_challenge_option\": { \"challenge_id\": "
+      "\"fake_challenge_id_2\", \"masked_phone_number\": \"(***)-***-5678\" } "
+      "}, { \"cvc_challenge_option\": { \"challenge_id\": "
+      "\"fake_challenge_id_3\", \"cvc_length\": 3, \"cvc_position\": "
+      "\"CVC_POSITION_BACK\"}}]}");
+
+  // Ensure that it's not treated as failure when no pan is returned.
+  EXPECT_EQ(AutofillClient::PaymentsRpcResult::kSuccess, result_);
+  EXPECT_EQ("fake_context_token", unmask_response_details_->context_token);
+  // Verify the FIDO request challenge is correctly parsed.
+  EXPECT_EQ("fake_fido_challenge",
+            *unmask_response_details_->fido_request_options->FindStringKey(
+                "challenge"));
+  // Verify the three challenge options are two sms challenge options and one
+  // cvc challenge option, and fields can be correctly parsed.
+  ASSERT_EQ(3u, unmask_response_details_->card_unmask_challenge_options.size());
+  const CardUnmaskChallengeOption& challenge_option_1 =
+      unmask_response_details_->card_unmask_challenge_options[0];
+  EXPECT_EQ(CardUnmaskChallengeOptionType::kSmsOtp, challenge_option_1.type);
+  EXPECT_EQ("fake_challenge_id_1", challenge_option_1.id);
+  EXPECT_EQ(u"(***)-***-1234", challenge_option_1.challenge_info);
+  const CardUnmaskChallengeOption& challenge_option_2 =
+      unmask_response_details_->card_unmask_challenge_options[1];
+  EXPECT_EQ(CardUnmaskChallengeOptionType::kSmsOtp, challenge_option_2.type);
+  EXPECT_EQ("fake_challenge_id_2", challenge_option_2.id);
+  EXPECT_EQ(u"(***)-***-5678", challenge_option_2.challenge_info);
+  const CardUnmaskChallengeOption& challenge_option_3 =
+      unmask_response_details_->card_unmask_challenge_options[2];
+  EXPECT_EQ(CardUnmaskChallengeOptionType::kCvc, challenge_option_3.type);
+  EXPECT_EQ("fake_challenge_id_3", challenge_option_3.id);
+  EXPECT_TRUE(challenge_option_3.challenge_info.empty());
+  EXPECT_EQ(3u, challenge_option_3.challenge_input_length);
+  EXPECT_EQ(CvcPosition::kBackOfCard, challenge_option_3.cvc_position);
+}
+
 TEST_F(PaymentsClientTest,
        VirtualCardRiskBasedYellowPathResponseWithUnknownType) {
   StartUnmasking(CardUnmaskOptions().with_virtual_card_risk_based());
diff --git a/components/autofill/core/browser/payments/payments_requests/unmask_card_request.cc b/components/autofill/core/browser/payments/payments_requests/unmask_card_request.cc
index 4655ba5..fc6d3615 100644
--- a/components/autofill/core/browser/payments/payments_requests/unmask_card_request.cc
+++ b/components/autofill/core/browser/payments/payments_requests/unmask_card_request.cc
@@ -32,36 +32,98 @@
     "&s7e_263_otp=%s";
 
 constexpr size_t kDefaultOtpLength = 6U;
+constexpr size_t kDefaultCvcLength = 3U;
+
+// Parses the `defined_challenge_option` as an SMS OTP challenge option, and
+// sets the appropriate fields in `parsed_challenge_option`.
+void ParseAsSmsOtpChallengeOption(
+    const base::Value* defined_challenge_option,
+    CardUnmaskChallengeOption* parsed_challenge_option) {
+  parsed_challenge_option->type = CardUnmaskChallengeOptionType::kSmsOtp;
+  const auto* challenge_id =
+      defined_challenge_option->FindStringKey("challenge_id");
+  DCHECK(challenge_id);
+  parsed_challenge_option->id = *challenge_id;
+
+  // For SMS OTP challenge, masked phone number is the challenge_info for
+  // display.
+  const auto* masked_phone_number =
+      defined_challenge_option->FindStringKey("masked_phone_number");
+  DCHECK(masked_phone_number);
+  parsed_challenge_option->challenge_info =
+      base::UTF8ToUTF16(*masked_phone_number);
+
+  // Get the OTP length for this challenge. This will be displayed to the user
+  // in the OTP input dialog so that the user knows how many digits the OTP
+  // should be.
+  absl::optional<int> otp_length =
+      defined_challenge_option->FindIntKey("otp_length");
+  parsed_challenge_option->challenge_input_length =
+      otp_length ? *otp_length : kDefaultOtpLength;
+}
+
+// Parses the `defined_challenge_option` as a CVC challenge option, and sets the
+// appropriate fields in `parsed_challenge_option`.
+void ParseAsCvcChallengeOption(
+    const base::Value* defined_challenge_option,
+    CardUnmaskChallengeOption* parsed_challenge_option) {
+  parsed_challenge_option->type = CardUnmaskChallengeOptionType::kCvc;
+
+  // Get the challenge id, which is the unique identifier of this challenge
+  // option. The payments server will need this challenge id to know which
+  // challenge option was selected.
+  const auto* challenge_id =
+      defined_challenge_option->FindStringKey("challenge_id");
+  DCHECK(challenge_id);
+  parsed_challenge_option->id = *challenge_id;
+
+  // Get the length of the CVC on the card. In most cases this is 3 digits,
+  // but it is possible for this to be 4 digits, for example in the case of
+  // the Card Identification Number on the front of an American Express card.
+  absl::optional<int> cvc_length =
+      defined_challenge_option->FindIntKey("cvc_length");
+  parsed_challenge_option->challenge_input_length =
+      cvc_length ? *cvc_length : kDefaultCvcLength;
+
+  // Get the position of the CVC on the card. In most cases it will be on the
+  // back of the card, but it is possible for it to be on the front, for
+  // example in the case of the Card Identification Number on the front of an
+  // American Express card.
+  const auto* cvc_position =
+      defined_challenge_option->FindStringKey("cvc_position");
+  parsed_challenge_option->cvc_position =
+      cvc_position && (*cvc_position == "CVC_POSITION_FRONT")
+          ? CvcPosition::kFrontOfCard
+          : CvcPosition::kBackOfCard;
+}
 
 CardUnmaskChallengeOption ParseCardUnmaskChallengeOption(
     const base::Value& challenge_option) {
-  CardUnmaskChallengeOption card_unmask_challenge_option;
+  const base::Value* defined_challenge_option;
+  CardUnmaskChallengeOption parsed_challenge_option;
 
-  // Check if it's SMS OTP challenge option.
-  const base::Value* sms_challenge_option = challenge_option.FindKeyOfType(
-      "sms_otp_challenge_option", base::Value::Type::DICTIONARY);
-  if (sms_challenge_option) {
-    card_unmask_challenge_option.type = CardUnmaskChallengeOptionType::kSmsOtp;
-    const auto* challenge_id =
-        sms_challenge_option->FindStringKey("challenge_id");
-    DCHECK(challenge_id);
-    card_unmask_challenge_option.id = *challenge_id;
-    // For SMS OTP challenge, masked phone number is the challenge_info for
-    // display.
-    const auto* masked_phone_number =
-        sms_challenge_option->FindStringKey("masked_phone_number");
-    DCHECK(masked_phone_number);
-    card_unmask_challenge_option.challenge_info =
-        base::UTF8ToUTF16(*masked_phone_number);
-    absl::optional<int> otp_length =
-        sms_challenge_option->FindIntKey("otp_length");
-    if (otp_length.has_value())
-      card_unmask_challenge_option.otp_length = *otp_length;
-    else
-      card_unmask_challenge_option.otp_length = kDefaultOtpLength;
+  // Check if it's an SMS OTP challenge option, and if it is, set
+  // `defined_challenge_option` to the defined challenge option found, parse the
+  // challenge option, and return it.
+  if ((defined_challenge_option = challenge_option.FindKeyOfType(
+           "sms_otp_challenge_option", base::Value::Type::DICTIONARY))) {
+    ParseAsSmsOtpChallengeOption(defined_challenge_option,
+                                 &parsed_challenge_option);
+  }
+  // Check if it's a CVC challenge option, and if it is, set
+  // `defined_challenge_option` to the defined challenge option found, parse the
+  // challenge option, and return it.
+  else if (base::FeatureList::IsEnabled(
+               features::kAutofillEnableCvcForVcnYellowPath) &&
+           (defined_challenge_option = challenge_option.FindKeyOfType(
+                "cvc_challenge_option", base::Value::Type::DICTIONARY))) {
+    ParseAsCvcChallengeOption(defined_challenge_option,
+                              &parsed_challenge_option);
   }
 
-  return card_unmask_challenge_option;
+  // If it is not a challenge option type that we can parse, return an empty
+  // challenge option.
+  return parsed_challenge_option;
 }
 }  // namespace
 
diff --git a/components/autofill/core/browser/webdata/autofill_sync_bridge_util.cc b/components/autofill/core/browser/webdata/autofill_sync_bridge_util.cc
index 55a9ab1..1e122fa 100644
--- a/components/autofill/core/browser/webdata/autofill_sync_bridge_util.cc
+++ b/components/autofill/core/browser/webdata/autofill_sync_bridge_util.cc
@@ -12,6 +12,7 @@
 #include "components/autofill/core/browser/autofill_data_util.h"
 #include "components/autofill/core/browser/data_model/autofill_offer_data.h"
 #include "components/autofill/core/browser/data_model/autofill_profile.h"
+#include "components/autofill/core/browser/data_model/autofill_wallet_usage_data.h"
 #include "components/autofill/core/browser/data_model/credit_card.h"
 #include "components/autofill/core/browser/data_model/credit_card_cloud_token_data.h"
 #include "components/autofill/core/browser/payments/payments_customer_data.h"
@@ -337,6 +338,34 @@
       cloud_token_data.instrument_token);
 }
 
+void SetAutofillWalletUsageSpecificsFromAutofillWalletUsageData(
+    const AutofillWalletUsageData& wallet_usage_data,
+    sync_pb::AutofillWalletUsageSpecifics* wallet_usage_specifics) {
+  if (wallet_usage_data.usage_data_type() ==
+      AutofillWalletUsageData::UsageDataType::kVirtualCard) {
+    // Ensure the Virtual Card Usage Data fields are set before transferring to
+    // `wallet_usage_specifics`.
+    DCHECK(
+        IsVirtualCardUsageDataSet(wallet_usage_data.virtual_card_usage_data()));
+
+    wallet_usage_specifics->mutable_virtual_card_usage_data()
+        ->set_instrument_id(
+            wallet_usage_data.virtual_card_usage_data().instrument_id.value());
+
+    wallet_usage_specifics->mutable_virtual_card_usage_data()
+        ->set_virtual_card_last_four(
+            wallet_usage_data.virtual_card_usage_data().virtual_card_last_four);
+
+    wallet_usage_specifics->mutable_virtual_card_usage_data()->set_merchant_url(
+        wallet_usage_data.virtual_card_usage_data()
+            .merchant_origin.Serialize());
+
+    wallet_usage_specifics->mutable_virtual_card_usage_data()
+        ->set_merchant_app_package(
+            wallet_usage_data.virtual_card_usage_data().merchant_app_package);
+  }
+}
+
 void SetAutofillOfferSpecificsFromOfferData(
     const AutofillOfferData& offer_data,
     sync_pb::AutofillOfferSpecifics* offer_specifics) {
@@ -642,4 +671,15 @@
          has_promo_code;
 }
 
+bool IsVirtualCardUsageDataSet(
+    const VirtualCardUsageData& virtual_card_usage_data) {
+  // Check for all fields except instrument_id as the integer value can be
+  // anything. Last four and either the merchant_origin or merchant_app_package
+  // must be present.
+  return virtual_card_usage_data.instrument_id.value() != 0 &&
+         !virtual_card_usage_data.virtual_card_last_four.empty() &&
+         (!virtual_card_usage_data.merchant_origin.opaque() ||
+          !virtual_card_usage_data.merchant_app_package.empty());
+}
+
 }  // namespace autofill
diff --git a/components/autofill/core/browser/webdata/autofill_sync_bridge_util.h b/components/autofill/core/browser/webdata/autofill_sync_bridge_util.h
index 2ff45676..f4bc8e72 100644
--- a/components/autofill/core/browser/webdata/autofill_sync_bridge_util.h
+++ b/components/autofill/core/browser/webdata/autofill_sync_bridge_util.h
@@ -13,11 +13,13 @@
 namespace autofill {
 
 class AutofillOfferData;
+class AutofillWalletUsageData;
 class AutofillProfile;
 class AutofillTable;
 class CreditCard;
 struct CreditCardCloudTokenData;
 struct PaymentsCustomerData;
+struct VirtualCardUsageData;
 
 // Returns the specified |id| encoded in / decoded from base 64.
 std::string GetBase64EncodedId(const std::string& id);
@@ -56,6 +58,12 @@
     sync_pb::AutofillWalletSpecifics* wallet_specifics,
     bool enforce_utf8 = false);
 
+// Sets the field of the `wallet_usage_specifics` based on the specified
+// `wallet_usage_data`.
+void SetAutofillWalletUsageSpecificsFromAutofillWalletUsageData(
+    const AutofillWalletUsageData& wallet_usage_data,
+    sync_pb::AutofillWalletUsageSpecifics* wallet_usage_specifics);
+
 // Sets the fields of the |offer_specifics| based on the specified |offer_data|.
 void SetAutofillOfferSpecificsFromOfferData(
     const AutofillOfferData& offer_data,
@@ -100,6 +108,11 @@
 // Returns whether the Wallet Offer |specifics| is valid data.
 bool IsOfferSpecificsValid(const sync_pb::AutofillOfferSpecifics specifics);
 
+// Returns whether the fields of VirtualCardUsageData `virtual_card_usage_data`
+// were initialized and set.
+bool IsVirtualCardUsageDataSet(
+    const VirtualCardUsageData& virtual_card_usage_data);
+
 }  // namespace autofill
 
 #endif  // COMPONENTS_AUTOFILL_CORE_BROWSER_WEBDATA_AUTOFILL_SYNC_BRIDGE_UTIL_H_
diff --git a/components/autofill/core/browser/webdata/autofill_sync_bridge_util_unittest.cc b/components/autofill/core/browser/webdata/autofill_sync_bridge_util_unittest.cc
index 898f8478..f3b8866 100644
--- a/components/autofill/core/browser/webdata/autofill_sync_bridge_util_unittest.cc
+++ b/components/autofill/core/browser/webdata/autofill_sync_bridge_util_unittest.cc
@@ -6,11 +6,13 @@
 
 #include <vector>
 
+#include "base/strings/string_number_conversions.h"
 #include "base/strings/utf_string_conversions.h"
 #include "build/build_config.h"
 #include "components/autofill/core/browser/autofill_test_utils.h"
 #include "components/autofill/core/browser/data_model/autofill_offer_data.h"
 #include "components/autofill/core/browser/data_model/autofill_profile.h"
+#include "components/autofill/core/browser/data_model/autofill_wallet_usage_data.h"
 #include "components/autofill/core/browser/data_model/credit_card.h"
 #include "components/autofill/core/browser/data_model/credit_card_cloud_token_data.h"
 #include "components/autofill/core/browser/payments/payments_customer_data.h"
@@ -21,6 +23,7 @@
 #include "components/sync/base/client_tag_hash.h"
 #include "components/sync/protocol/autofill_offer_specifics.pb.h"
 #include "components/sync/protocol/autofill_specifics.pb.h"
+#include "components/sync/protocol/autofill_wallet_usage_specifics.pb.h"
 #include "components/sync/protocol/entity_data.h"
 #include "components/sync/protocol/entity_specifics.pb.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -419,5 +422,24 @@
   EXPECT_FALSE(IsOfferSpecificsValid(specifics));
 }
 
+// Test to ensure that Wallet Usage Data for virtual card retrieval is correctly
+// converted to AutofillWalletUsageSpecifics.
+TEST_F(AutofillSyncBridgeUtilTest, WalletUsageSpecificsFromWalletUsageData) {
+  sync_pb::AutofillWalletUsageSpecifics usage_specifics;
+  AutofillWalletUsageData usage_data =
+      test::GetAutofillWalletUsageDataForVirtualCard();
+  SetAutofillWalletUsageSpecificsFromAutofillWalletUsageData(usage_data,
+                                                             &usage_specifics);
+
+  EXPECT_EQ(usage_specifics.virtual_card_usage_data().instrument_id(),
+            usage_data.virtual_card_usage_data().instrument_id.value());
+  EXPECT_EQ(usage_specifics.virtual_card_usage_data().virtual_card_last_four(),
+            usage_data.virtual_card_usage_data().virtual_card_last_four);
+  EXPECT_EQ(usage_specifics.virtual_card_usage_data().merchant_url(),
+            usage_data.virtual_card_usage_data().merchant_origin.Serialize());
+  EXPECT_EQ(usage_specifics.virtual_card_usage_data().merchant_app_package(),
+            usage_data.virtual_card_usage_data().merchant_app_package);
+}
+
 }  // namespace
 }  // namespace autofill
diff --git a/components/autofill/core/browser/webdata/autofill_table.cc b/components/autofill/core/browser/webdata/autofill_table.cc
index 9d9749ba..2d8e645 100644
--- a/components/autofill/core/browser/webdata/autofill_table.cc
+++ b/components/autofill/core/browser/webdata/autofill_table.cc
@@ -3095,7 +3095,8 @@
           model_type == syncer::AUTOFILL_PROFILE ||
           model_type == syncer::AUTOFILL_WALLET_DATA ||
           model_type == syncer::AUTOFILL_WALLET_METADATA ||
-          model_type == syncer::AUTOFILL_WALLET_OFFER);
+          model_type == syncer::AUTOFILL_WALLET_OFFER ||
+          model_type == syncer::AUTOFILL_WALLET_USAGE);
 }
 
 int AutofillTable::GetKeyValueForModelType(syncer::ModelType model_type) const {
diff --git a/components/autofill/core/browser/webdata/autofill_wallet_usage_data_sync_bridge.cc b/components/autofill/core/browser/webdata/autofill_wallet_usage_data_sync_bridge.cc
index 0c4d69a..6c15d87 100644
--- a/components/autofill/core/browser/webdata/autofill_wallet_usage_data_sync_bridge.cc
+++ b/components/autofill/core/browser/webdata/autofill_wallet_usage_data_sync_bridge.cc
@@ -6,6 +6,8 @@
 
 #include <utility>
 
+#include "base/strings/string_util.h"
+#include "components/autofill/core/browser/data_model/autofill_wallet_usage_data.h"
 #include "components/autofill/core/browser/webdata/autofill_webdata_service.h"
 #include "components/sync/model/client_tag_based_model_type_processor.h"
 
@@ -16,6 +18,9 @@
 // Address to this variable used as the user data key.
 const int kAutofillWalletUsageDataSyncBridgeUserDataKey = 0;
 
+// Prefix used as the client tag for Virtual Card Usage Data.
+constexpr char kVirtualCardUsageDataClientTagPrefix[] = "VirtualCardUsageData";
+
 }  // namespace
 
 // static
@@ -85,14 +90,25 @@
 
 std::string AutofillWalletUsageDataSyncBridge::GetClientTag(
     const syncer::EntityData& entity_data) {
-  NOTIMPLEMENTED();
-  return "";
+  DCHECK(entity_data.specifics.has_autofill_wallet_usage());
+  sync_pb::AutofillWalletUsageSpecifics::VirtualCardUsageData
+      virtual_card_usage_data = entity_data.specifics.autofill_wallet_usage()
+                                    .virtual_card_usage_data();
+
+  return base::JoinString(
+      {kVirtualCardUsageDataClientTagPrefix,
+       base::NumberToString(virtual_card_usage_data.instrument_id()),
+       virtual_card_usage_data.merchant_url(),
+       virtual_card_usage_data.merchant_app_package()},
+      "|");
 }
 
 std::string AutofillWalletUsageDataSyncBridge::GetStorageKey(
     const syncer::EntityData& entity_data) {
-  NOTIMPLEMENTED();
-  return "";
+  DCHECK(entity_data.specifics.has_autofill_wallet_usage());
+
+  // Use client tag as the storage key.
+  return GetClientTag(entity_data);
 }
 
 void AutofillWalletUsageDataSyncBridge::ApplyStopSyncChanges(
diff --git a/components/autofill/core/browser/webdata/autofill_wallet_usage_data_sync_bridge.h b/components/autofill/core/browser/webdata/autofill_wallet_usage_data_sync_bridge.h
index c3dbf77..8e69c5e 100644
--- a/components/autofill/core/browser/webdata/autofill_wallet_usage_data_sync_bridge.h
+++ b/components/autofill/core/browser/webdata/autofill_wallet_usage_data_sync_bridge.h
@@ -19,14 +19,14 @@
 class AutofillWebDataBackend;
 class AutofillWebDataService;
 
-// Sync bridge responsible for applying remote changes of autofill wallet susage
-// data to the local database.
+// Sync bridge responsible for applying remote changes of usage data to the
+// local database.
 class AutofillWalletUsageDataSyncBridge : public base::SupportsUserData::Data,
                                           public syncer::ModelTypeSyncBridge {
  public:
   // Factory method that hides dealing with change_processor and also stores the
-  // created bridge within |web_data_service|. This method should only be
-  // called on |web_data_service|'s DB thread.
+  // created bridge within `web_data_service`. This method should only be
+  // called on `web_data_service`'s DB thread.
   static void CreateForWebDataServiceAndBackend(
       AutofillWebDataBackend* webdata_backend,
       AutofillWebDataService* web_data_service);
@@ -62,8 +62,8 @@
                                 delete_metadata_change_list) override;
 
  private:
-  // AutofillWalletUsageSyncBridge is owned by |web_data_backend_| through
-  // SupportsUserData, so it's guaranteed to outlive |this|.
+  // AutofillWalletUsageSyncBridge is owned by `web_data_backend_` through
+  // SupportsUserData, so it's guaranteed to outlive `this`.
   const raw_ptr<AutofillWebDataBackend> web_data_backend_;
 };
 
diff --git a/components/autofill/core/browser/webdata/autofill_wallet_usage_data_sync_bridge_unittest.cc b/components/autofill/core/browser/webdata/autofill_wallet_usage_data_sync_bridge_unittest.cc
new file mode 100644
index 0000000..1775572
--- /dev/null
+++ b/components/autofill/core/browser/webdata/autofill_wallet_usage_data_sync_bridge_unittest.cc
@@ -0,0 +1,141 @@
+// Copyright 2022 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/webdata/autofill_wallet_usage_data_sync_bridge.h"
+
+#include <stddef.h>
+
+#include <memory>
+#include <utility>
+
+#include "base/files/scoped_temp_dir.h"
+#include "base/strings/string_number_conversions.h"
+#include "base/test/task_environment.h"
+#include "components/autofill/core/browser/autofill_test_utils.h"
+#include "components/autofill/core/browser/geo/country_names.h"
+#include "components/autofill/core/browser/test_autofill_clock.h"
+#include "components/autofill/core/browser/webdata/autofill_sync_bridge_util.h"
+#include "components/autofill/core/browser/webdata/autofill_table.h"
+#include "components/autofill/core/browser/webdata/autofill_webdata_backend.h"
+#include "components/autofill/core/browser/webdata/mock_autofill_webdata_backend.h"
+#include "components/autofill/core/common/autofill_constants.h"
+#include "components/sync/base/hash_util.h"
+#include "components/sync/model/client_tag_based_model_type_processor.h"
+#include "components/sync/model/sync_data.h"
+#include "components/sync/protocol/autofill_specifics.pb.h"
+#include "components/sync/protocol/entity_data.h"
+#include "components/sync/protocol/sync.pb.h"
+#include "components/sync/test/mock_model_type_change_processor.h"
+#include "components/webdata/common/web_database.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace autofill {
+
+namespace {
+
+using base::ScopedTempDir;
+using sync_pb::AutofillWalletUsageSpecifics;
+using sync_pb::ModelTypeState;
+using syncer::EntityData;
+using syncer::MockModelTypeChangeProcessor;
+using testing::NiceMock;
+using testing::Return;
+
+const char kLocaleString[] = "en-US";
+const char kDefaultCacheGuid[] = "CacheGuid";
+const std::string kExpectedClientTagAndStorageKey =
+    "VirtualCardUsageData|12345|https://www.google.com|google";
+
+}  // namespace
+
+class AutofillWalletUsageDataSyncBridgeTest : public testing::Test {
+ public:
+  AutofillWalletUsageDataSyncBridgeTest() = default;
+  ~AutofillWalletUsageDataSyncBridgeTest() override = default;
+  AutofillWalletUsageDataSyncBridgeTest(
+      const AutofillWalletUsageDataSyncBridgeTest&) = delete;
+  AutofillWalletUsageDataSyncBridgeTest& operator=(
+      const AutofillWalletUsageDataSyncBridgeTest&) = delete;
+
+  void SetUp() override {
+    CountryNames::SetLocaleString(kLocaleString);
+    ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
+    db_.AddTable(&table_);
+    db_.Init(temp_dir_.GetPath().AppendASCII("SyncTestWebDatabase"));
+    ON_CALL(backend_, GetDatabase()).WillByDefault(Return(&db_));
+    ResetProcessor();
+    // Fake that initial sync has been done (so that the bridge immediately
+    // records metrics).
+    ResetBridge(/*initial_sync_done=*/true);
+  }
+
+  void ResetProcessor() {
+    real_processor_ =
+        std::make_unique<syncer::ClientTagBasedModelTypeProcessor>(
+            syncer::AUTOFILL_WALLET_USAGE, /*dump_stack=*/base::DoNothing());
+    mock_processor_.DelegateCallsByDefaultTo(real_processor_.get());
+  }
+
+  void ResetBridge(bool initial_sync_done) {
+    ModelTypeState model_type_state;
+    model_type_state.set_initial_sync_done(initial_sync_done);
+    model_type_state.mutable_progress_marker()->set_data_type_id(
+        GetSpecificsFieldNumberFromModelType(syncer::AUTOFILL_WALLET_USAGE));
+    model_type_state.set_cache_guid(kDefaultCacheGuid);
+    EXPECT_TRUE(table()->UpdateModelTypeState(syncer::AUTOFILL_WALLET_USAGE,
+                                              model_type_state));
+    bridge_ = std::make_unique<AutofillWalletUsageDataSyncBridge>(
+        mock_processor_.CreateForwardingProcessor(), &backend_);
+  }
+
+  EntityData SpecificsToEntity(const AutofillWalletUsageSpecifics& specifics) {
+    EntityData data;
+    *data.specifics.mutable_autofill_wallet_usage() = specifics;
+    data.client_tag_hash = syncer::ClientTagHash::FromUnhashed(
+        syncer::AUTOFILL_WALLET_USAGE, bridge()->GetClientTag(data));
+    return data;
+  }
+
+  AutofillTable* table() { return &table_; }
+
+  AutofillWalletUsageDataSyncBridge* bridge() { return bridge_.get(); }
+
+ private:
+  ScopedTempDir temp_dir_;
+  base::test::SingleThreadTaskEnvironment task_environment_;
+  NiceMock<MockAutofillWebDataBackend> backend_;
+  AutofillTable table_;
+  WebDatabase db_;
+  NiceMock<MockModelTypeChangeProcessor> mock_processor_;
+  std::unique_ptr<syncer::ClientTagBasedModelTypeProcessor> real_processor_;
+  std::unique_ptr<AutofillWalletUsageDataSyncBridge> bridge_;
+};
+
+TEST_F(AutofillWalletUsageDataSyncBridgeTest, VerifyGetClientTag) {
+  AutofillWalletUsageSpecifics specifics;
+  AutofillWalletUsageData data =
+      test::GetAutofillWalletUsageDataForVirtualCard();
+  SetAutofillWalletUsageSpecificsFromAutofillWalletUsageData(data, &specifics);
+
+  sync_pb::AutofillWalletUsageSpecifics::VirtualCardUsageData
+      virtual_card_usage_data = specifics.virtual_card_usage_data();
+
+  EXPECT_EQ(bridge()->GetClientTag(SpecificsToEntity(specifics)),
+            kExpectedClientTagAndStorageKey);
+}
+
+TEST_F(AutofillWalletUsageDataSyncBridgeTest, VerifyGetStorageKey) {
+  AutofillWalletUsageSpecifics specifics;
+  AutofillWalletUsageData data =
+      test::GetAutofillWalletUsageDataForVirtualCard();
+  SetAutofillWalletUsageSpecificsFromAutofillWalletUsageData(data, &specifics);
+
+  sync_pb::AutofillWalletUsageSpecifics::VirtualCardUsageData
+      virtual_card_usage_data = specifics.virtual_card_usage_data();
+
+  EXPECT_EQ(bridge()->GetStorageKey(SpecificsToEntity(specifics)),
+            kExpectedClientTagAndStorageKey);
+}
+
+}  // namespace autofill
diff --git a/components/autofill_assistant/browser/startup_util_unittest.cc b/components/autofill_assistant/browser/startup_util_unittest.cc
index 19dbc39..12ad45b4 100644
--- a/components/autofill_assistant/browser/startup_util_unittest.cc
+++ b/components/autofill_assistant/browser/startup_util_unittest.cc
@@ -4,7 +4,7 @@
 
 #include "components/autofill_assistant/browser/startup_util.h"
 
-#include <array>
+#include <iterator>
 #include <memory>
 #include <ostream>
 
@@ -59,7 +59,7 @@
 };
 
 // Shorthand for the full set of relevant features.
-const std::array<base::Feature, 5> kFullFeatureSet = {
+const base::test::FeatureRef kFullFeatureSet[] = {
     kAutofillAssistant, kAutofillAssistantProactiveHelp,
     kAutofillAssistantChromeEntry, kAutofillAssistantLoadDFMForTriggerScripts,
     kAutofillAssistantGetTriggerScriptsByHashPrefix};
@@ -101,7 +101,7 @@
     {{kAutofillAssistant, kAutofillAssistantChromeEntry,
       kAutofillAssistantProactiveHelp}},
     // All features are enabled.
-    {{kFullFeatureSet.begin(), kFullFeatureSet.end()}}};
+    {{std::begin(kFullFeatureSet), std::end(kFullFeatureSet)}}};
 
 // Custom output operator overloads to provide human-readable test outputs.
 std::ostream& operator<<(std::ostream& out,
@@ -153,7 +153,7 @@
     StartupUtilTest::SetUp();
     std::vector<base::test::FeatureRef> disabled_features;
     for (const auto& feature : kFullFeatureSet) {
-      if (!IsFeatureEnabled(feature)) {
+      if (!IsFeatureEnabled(*feature)) {
         disabled_features.emplace_back(feature);
       }
     }
diff --git a/components/autofill_assistant/browser/trigger_scripts/trigger_script_coordinator_unittest.cc b/components/autofill_assistant/browser/trigger_scripts/trigger_script_coordinator_unittest.cc
index e3f28f7..959708f 100644
--- a/components/autofill_assistant/browser/trigger_scripts/trigger_script_coordinator_unittest.cc
+++ b/components/autofill_assistant/browser/trigger_scripts/trigger_script_coordinator_unittest.cc
@@ -57,7 +57,7 @@
 using ::testing::WithArg;
 
 std::unique_ptr<base::test::ScopedFeatureList> CreateScopedFeatureList(
-    base::Feature feature,
+    const base::Feature& feature,
     bool feature_enabled) {
   auto scoped_feature_list = std::make_unique<base::test::ScopedFeatureList>();
   scoped_feature_list->InitWithFeatureState(feature, feature_enabled);
diff --git a/components/autofill_assistant/browser/web/web_controller_browsertest.cc b/components/autofill_assistant/browser/web/web_controller_browsertest.cc
index be9ea70..c654adfa 100644
--- a/components/autofill_assistant/browser/web/web_controller_browsertest.cc
+++ b/components/autofill_assistant/browser/web/web_controller_browsertest.cc
@@ -2719,7 +2719,9 @@
   GetFieldsValue({selector}, {"received"});
 }
 
-IN_PROC_BROWSER_TEST_F(WebControllerBrowserTest, WaitForElementToBecomeStable) {
+// Extremely flaky: https://crbug.com/1372516
+IN_PROC_BROWSER_TEST_F(WebControllerBrowserTest,
+                       DISABLED_WaitForElementToBecomeStable) {
   ClientStatus element_status;
   ElementFinderResult element;
   FindElement(Selector({"#touch_area_one"}), &element_status, &element);
@@ -2745,8 +2747,9 @@
       WaitUntilElementIsStable(element, 10, base::Milliseconds(100)).ok());
 }
 
+// Extremely flaky: https://crbug.com/1372516
 IN_PROC_BROWSER_TEST_F(WebControllerBrowserTest,
-                       WaitForElementToBecomeStableForEmptyBoxModel) {
+                       DISABLED_WaitForElementToBecomeStableForEmptyBoxModel) {
   ClientStatus element_status;
 
   // The element has an empty box model.
@@ -2766,8 +2769,9 @@
                 .proto_status());
 }
 
+// Extremely flaky: https://crbug.com/1372516
 IN_PROC_BROWSER_TEST_F(WebControllerBrowserTest,
-                       WaitForElementToBecomeStableDevtoolsFailure) {
+                       DISABLED_WaitForElementToBecomeStableDevtoolsFailure) {
   // This makes the devtools action fail.
   ElementFinderResult element;
   element.SetNodeFrameId("doesnotexist");
diff --git a/components/breadcrumbs/core/breadcrumb_manager.cc b/components/breadcrumbs/core/breadcrumb_manager.cc
index 696c245..18e420d 100644
--- a/components/breadcrumbs/core/breadcrumb_manager.cc
+++ b/components/breadcrumbs/core/breadcrumb_manager.cc
@@ -76,7 +76,7 @@
   event_buckets_.back().events.push_back(event_log);
 
   for (auto& observer : observers_) {
-    observer.EventAdded(this, event_log);
+    observer.EventAdded(event_log);
   }
 
   DropOldEvents();
@@ -114,7 +114,7 @@
 
   if (old_buckets_dropped) {
     for (auto& observer : observers_) {
-      observer.OldEventsRemoved(this);
+      observer.OldEventsRemoved();
     }
   }
 }
diff --git a/components/breadcrumbs/core/breadcrumb_manager_observer.h b/components/breadcrumbs/core/breadcrumb_manager_observer.h
index dd80f8f..8388945 100644
--- a/components/breadcrumbs/core/breadcrumb_manager_observer.h
+++ b/components/breadcrumbs/core/breadcrumb_manager_observer.h
@@ -19,15 +19,13 @@
   BreadcrumbManagerObserver& operator=(const BreadcrumbManagerObserver&) =
       delete;
 
-  // Called when a new |event| has been added to |manager|. Similar to
-  // |BreadcrumbManager::GetEvents|, |event| will have the timestamp at which it
-  // was logged prepended to the string which was passed to
-  // |BreadcrumbManager::AddEvent|.
-  virtual void EventAdded(BreadcrumbManager* manager,
-                          const std::string& event) {}
+  // Called when a new `event` has been added to the BreadcrumbManager. Similar
+  // to `BreadcrumbManager::GetEvents()`, `event` has the timestamp when it was
+  // logged prepended to the string passed to `BreadcrumbManager::AddEvent()`.
+  virtual void EventAdded(const std::string& event) {}
 
   // Called when old events have been removed.
-  virtual void OldEventsRemoved(BreadcrumbManager* manager) {}
+  virtual void OldEventsRemoved() {}
 
  protected:
   BreadcrumbManagerObserver();
diff --git a/components/breadcrumbs/core/breadcrumb_manager_observer_unittest.cc b/components/breadcrumbs/core/breadcrumb_manager_observer_unittest.cc
index 3f22c7d..1ec9e34 100644
--- a/components/breadcrumbs/core/breadcrumb_manager_observer_unittest.cc
+++ b/components/breadcrumbs/core/breadcrumb_manager_observer_unittest.cc
@@ -27,21 +27,17 @@
       const FakeBreadcrumbManagerObserver&) = delete;
 
   // BreadcrumbManagerObserver
-  void EventAdded(BreadcrumbManager* manager,
-                  const std::string& event) override {
-    event_added_last_received_manager_ = manager;
+  void EventAdded(const std::string& event) override {
+    event_added_count_++;
     event_added_last_received_event_ = event;
   }
 
-  void OldEventsRemoved(BreadcrumbManager* manager) override {
-    old_events_removed_last_received_manager_ = manager;
-  }
+  void OldEventsRemoved() override { old_events_removed_count_++; }
 
-  raw_ptr<BreadcrumbManager> event_added_last_received_manager_ = nullptr;
+  size_t event_added_count_ = 0u;
   std::string event_added_last_received_event_;
 
-  raw_ptr<BreadcrumbManager> old_events_removed_last_received_manager_ =
-      nullptr;
+  size_t old_events_removed_count_ = 0u;
 };
 
 }  // namespace
@@ -56,26 +52,25 @@
   FakeBreadcrumbManagerObserver observer_;
 };
 
-// Tests that |BreadcrumbManagerObserver::EventAdded| is called when an event to
-// added to |manager_|.
+// Tests that `BreadcrumbManagerObserver::EventAdded` is called when an event to
+// added to the BreadcrumbManager.
 TEST_F(BreadcrumbManagerObserverTest, EventAdded) {
-  ASSERT_FALSE(observer_.event_added_last_received_manager_);
+  ASSERT_EQ(0u, observer_.event_added_count_);
   ASSERT_TRUE(observer_.event_added_last_received_event_.empty());
 
   const std::string event = "event";
   BreadcrumbManager::GetInstance().AddEvent(event);
 
-  EXPECT_EQ(&BreadcrumbManager::GetInstance(),
-            observer_.event_added_last_received_manager_);
-  // A timestamp will be prepended to the event passed to |AddEvent|.
+  EXPECT_EQ(1u, observer_.event_added_count_);
+  // A timestamp will be prepended to the event passed to `AddEvent`.
   EXPECT_NE(std::string::npos,
             observer_.event_added_last_received_event_.find(event));
 }
 
-// Tests that |BreadcumbManager::OldEventsRemoved| is called when old events are
-// dropped from |manager_|.
+// Tests that `BreadcumbManager::OldEventsRemoved` is called when old events are
+// dropped from the BreadcrumbManager.
 TEST_F(BreadcrumbManagerObserverTest, OldEventsRemoved) {
-  ASSERT_FALSE(observer_.old_events_removed_last_received_manager_);
+  ASSERT_EQ(0u, observer_.old_events_removed_count_);
 
   const std::string event = "event";
   BreadcrumbManager::GetInstance().AddEvent(event);
@@ -84,8 +79,7 @@
   task_env_.FastForwardBy(base::Hours(1));
   BreadcrumbManager::GetInstance().AddEvent(event);
 
-  EXPECT_EQ(&BreadcrumbManager::GetInstance(),
-            observer_.old_events_removed_last_received_manager_);
+  EXPECT_EQ(1u, observer_.old_events_removed_count_);
 }
 
 }  // namespace breadcrumbs
diff --git a/components/breadcrumbs/core/breadcrumb_persistent_storage_manager.cc b/components/breadcrumbs/core/breadcrumb_persistent_storage_manager.cc
index 0bb40ca..a8a1f8e 100644
--- a/components/breadcrumbs/core/breadcrumb_persistent_storage_manager.cc
+++ b/components/breadcrumbs/core/breadcrumb_persistent_storage_manager.cc
@@ -250,8 +250,7 @@
   pending_breadcrumbs_.clear();
 }
 
-void BreadcrumbPersistentStorageManager::EventAdded(BreadcrumbManager* manager,
-                                                    const std::string& event) {
+void BreadcrumbPersistentStorageManager::EventAdded(const std::string& event) {
   pending_breadcrumbs_ += event + kEventSeparator;
   WriteEvents();
 }
@@ -316,8 +315,7 @@
   ++write_counter_;
 }
 
-void BreadcrumbPersistentStorageManager::OldEventsRemoved(
-    BreadcrumbManager* manager) {
+void BreadcrumbPersistentStorageManager::OldEventsRemoved() {
   RewriteAllExistingBreadcrumbs();
 }
 
diff --git a/components/breadcrumbs/core/breadcrumb_persistent_storage_manager.h b/components/breadcrumbs/core/breadcrumb_persistent_storage_manager.h
index af91f52..e698359 100644
--- a/components/breadcrumbs/core/breadcrumb_persistent_storage_manager.h
+++ b/components/breadcrumbs/core/breadcrumb_persistent_storage_manager.h
@@ -76,9 +76,8 @@
   void WritePendingBreadcrumbs();
 
   // BreadcrumbManagerObserver
-  void EventAdded(BreadcrumbManager* manager,
-                  const std::string& event) override;
-  void OldEventsRemoved(BreadcrumbManager* manager) override;
+  void EventAdded(const std::string& event) override;
+  void OldEventsRemoved() override;
 
   // Individual breadcrumbs that have not yet been written to disk.
   std::string pending_breadcrumbs_;
diff --git a/components/breadcrumbs/core/crash_reporter_breadcrumb_observer.cc b/components/breadcrumbs/core/crash_reporter_breadcrumb_observer.cc
index d989c70..f2f8a323 100644
--- a/components/breadcrumbs/core/crash_reporter_breadcrumb_observer.cc
+++ b/components/breadcrumbs/core/crash_reporter_breadcrumb_observer.cc
@@ -45,8 +45,7 @@
   breadcrumbs_.clear();
 }
 
-void CrashReporterBreadcrumbObserver::EventAdded(BreadcrumbManager* manager,
-                                                 const std::string& event) {
+void CrashReporterBreadcrumbObserver::EventAdded(const std::string& event) {
   breadcrumbs_.push_back(event);
   UpdateBreadcrumbEventsCrashKey();
 }
diff --git a/components/breadcrumbs/core/crash_reporter_breadcrumb_observer.h b/components/breadcrumbs/core/crash_reporter_breadcrumb_observer.h
index c606ebc..6b611a0b 100644
--- a/components/breadcrumbs/core/crash_reporter_breadcrumb_observer.h
+++ b/components/breadcrumbs/core/crash_reporter_breadcrumb_observer.h
@@ -41,8 +41,7 @@
   ~CrashReporterBreadcrumbObserver() override;
 
   // BreadcrumbObserver:
-  void EventAdded(BreadcrumbManager* manager,
-                  const std::string& event) override;
+  void EventAdded(const std::string& event) override;
 
   // Updates the breadcrumbs stored in the crash log.
   void UpdateBreadcrumbEventsCrashKey();
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_am.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_am.xtb
index ec10bcf..45cd56a8 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_am.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_am.xtb
@@ -263,6 +263,7 @@
 <translation id="6554732001434021288">ለመጨረሻ ጊዜ የተጎበኘው ከ<ph name="NUM_DAYS" /> ቀናት በፊት ነው</translation>
 <translation id="6561560012278703671">ይበልጥ ጸጥ ያለ መልዕክት አላላክ ይጠቀሙ (ማሳወቂያ ጥያቄዎች እርስዎን እንዳያቋርጡ ያግዳል)</translation>
 <translation id="6593061639179217415">የዴስክቶፕ ጣቢያ</translation>
+<translation id="6608211702542341247">ይህ ጣቢያ በቡድኑ ውስጥ ያለዎትን እንቅስቃሴ ማየት በሚችሉ የ<ph name="FPS_OWNER" /> የጣቢያዎች ቡድን ውስጥ ነው</translation>
 <translation id="6608650720463149374"><ph name="GIGABYTES" /> ጊባ</translation>
 <translation id="6612358246767739896">ጥበቃ የሚደረግለት ይዘት</translation>
 <translation id="662080504995468778">ቆይ</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_as.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_as.xtb
index 9c2b774..f5d24585 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_as.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_as.xtb
@@ -263,6 +263,7 @@
 <translation id="6554732001434021288"><ph name="NUM_DAYS" /> দিনৰ পূৰ্বে শেষবাৰ চাইছিল</translation>
 <translation id="6561560012278703671">নীৰৱ বাৰ্তা আদান-প্ৰদানৰ সুবিধা ব্যৱহাৰ কৰক (জাননীৰ প্ৰম্প্‌টসমূহে আপোনাৰ বাবে ব্যাঘাত সৃষ্টি কৰিব নোৱৰাকৈ সেইবোৰ অৱৰোধ কৰে)</translation>
 <translation id="6593061639179217415">ডেস্কটপৰ ছাইট</translation>
+<translation id="6608211702542341247">এই ছাইটটো <ph name="FPS_OWNER" />ৰ ছাইটসমূহৰ গোটত আছে, যি গোটটোত আপোনাৰ কাৰ্যকলাপ চাব পাৰে</translation>
 <translation id="6608650720463149374"><ph name="GIGABYTES" /> জিবি</translation>
 <translation id="6612358246767739896">সুৰক্ষিত সমল</translation>
 <translation id="662080504995468778">ইয়াতে থাকক</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_be.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_be.xtb
index a8d9883..90750cd 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_be.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_be.xtb
@@ -263,6 +263,7 @@
 <translation id="6554732001434021288">Апошняе наведванне: <ph name="NUM_DAYS" /> сут таму</translation>
 <translation id="6561560012278703671">Забараніць сайтам адцягваць вашу ўвагу запытамі дазволу на паказ апавяшчэнняў. Паказваць замест іх індыкатар блакіроўкі ў адрасным радку</translation>
 <translation id="6593061639179217415">Версія для ПК</translation>
+<translation id="6608211702542341247">Гэты сайт належыць да групы сайтаў у дамене <ph name="FPS_OWNER" /> з доступам да звестак пра вашы дзеянні ў групе</translation>
 <translation id="6608650720463149374"><ph name="GIGABYTES" /> ГБ</translation>
 <translation id="6612358246767739896">Абароненае змесціва</translation>
 <translation id="662080504995468778">Застацца</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_bn.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_bn.xtb
index 09b3794..69b62736 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_bn.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_bn.xtb
@@ -263,6 +263,7 @@
 <translation id="6554732001434021288"><ph name="NUM_DAYS" /> দিন আগে শেষবার দেখেছেন</translation>
 <translation id="6561560012278703671">আওয়াজ ছাড়া বিজ্ঞপ্তি (বিজ্ঞপ্তির ক্ষেত্রে আওয়াজ সহ প্রম্পট ব্লক করা হয়, যাতে কাজের সময় ব্যাঘাত না ঘটে)</translation>
 <translation id="6593061639179217415">ডেস্কটপ সাইট</translation>
+<translation id="6608211702542341247">এই সাইটটি <ph name="FPS_OWNER" />-এর সাইটগুলির গ্রুপে রয়েছে যেগুলি গ্রুপে আপনার অ্যাক্টিভিটি দেখতে পারে</translation>
 <translation id="6608650720463149374"><ph name="GIGABYTES" /> জিবি</translation>
 <translation id="6612358246767739896">সুরক্ষিত কন্টেন্ট</translation>
 <translation id="662080504995468778">থাকুন</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ca.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ca.xtb
index 807ce49..e71a8f31 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_ca.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ca.xtb
@@ -263,6 +263,7 @@
 <translation id="6554732001434021288">Darrera visita: fa <ph name="NUM_DAYS" /> dies</translation>
 <translation id="6561560012278703671">Utilitza missatges més discrets (bloqueja les sol·licituds de notificacions per evitar interrupcions)</translation>
 <translation id="6593061639179217415">Lloc web per a ordinador</translation>
+<translation id="6608211702542341247">Aquest lloc web forma part del grup de llocs web de <ph name="FPS_OWNER" /> que poden veure la teva activitat al grup</translation>
 <translation id="6608650720463149374"><ph name="GIGABYTES" /> GB</translation>
 <translation id="6612358246767739896">Contingut protegit</translation>
 <translation id="662080504995468778">No surtis</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_et.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_et.xtb
index f54f330..28c12e0 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_et.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_et.xtb
@@ -263,6 +263,7 @@
 <translation id="6554732001434021288">Viimati külastati <ph name="NUM_DAYS" /> päeva tagasi</translation>
 <translation id="6561560012278703671">Kasuta vaiksemat sõnumsidet (märguandeviibad blokeeritakse)</translation>
 <translation id="6593061639179217415">Arvutisait</translation>
+<translation id="6608211702542341247">See sait kuulub teenuse <ph name="FPS_OWNER" /> saitide gruppi, mis näevad teie tegevusi grupis</translation>
 <translation id="6608650720463149374"><ph name="GIGABYTES" /> GB</translation>
 <translation id="6612358246767739896">Kaitstud sisu</translation>
 <translation id="662080504995468778">Jää siia</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_fa.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_fa.xtb
index b067380..0430a96 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_fa.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_fa.xtb
@@ -263,6 +263,7 @@
 <translation id="6554732001434021288">آخرین بازدید: <ph name="NUM_DAYS" /> روز پیش</translation>
 <translation id="6561560012278703671">استفاده از پیام‌رسانی کم‌صداتر (درخواست‌های اعلان را مسدود می‌کند تا مزاحمتان نشود)</translation>
 <translation id="6593061639179217415">سایت مخصوص رایانه</translation>
+<translation id="6608211702542341247">این سایت در گروه سایت‌های <ph name="FPS_OWNER" /> قرار دارد که می‌توانند فعالیت شما را در گروه ببینند</translation>
 <translation id="6608650720463149374"><ph name="GIGABYTES" /> گیگابایت</translation>
 <translation id="6612358246767739896">محتوای محافظت‌شده</translation>
 <translation id="662080504995468778">ماندن</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_fi.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_fi.xtb
index 1b9c81d0..2afdd4b8 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_fi.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_fi.xtb
@@ -263,6 +263,7 @@
 <translation id="6554732001434021288">Viimeksi avattu <ph name="NUM_DAYS" /> päivää sitten</translation>
 <translation id="6561560012278703671">Hiljaisemmat viestit (estää ilmoituksia häiritsemästä sinua)</translation>
 <translation id="6593061639179217415">Tietokonesivusto</translation>
+<translation id="6608211702542341247">Tämä sivusto kuuluu käyttäjän <ph name="FPS_OWNER" /> ryhmään, joka voi nähdä toimintasi ryhmässä</translation>
 <translation id="6608650720463149374"><ph name="GIGABYTES" /> Gt</translation>
 <translation id="6612358246767739896">Suojattu sisältö</translation>
 <translation id="662080504995468778">Jää</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_gu.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_gu.xtb
index 7f368e8..874e5c6 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_gu.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_gu.xtb
@@ -263,6 +263,7 @@
 <translation id="6554732001434021288">છેલ્લે <ph name="NUM_DAYS" /> દિવસ પહેલાં મુલાકાત લીધી</translation>
 <translation id="6561560012278703671">ગુપચુપ મેસેજિંગનો ઉપયોગ કરો (તમને ખલેલ પહોંચાડે તેવા નોટિફિકેશન સંકેતોને બ્લૉક કરે છે)</translation>
 <translation id="6593061639179217415">ડેસ્કટૉપ સાઇટ</translation>
+<translation id="6608211702542341247">આ સાઇટ, <ph name="FPS_OWNER" />ની સાઇટના ગ્રૂપમાં આવેલી છે, જે ગ્રૂપમાંની તમારી પ્રવૃત્તિ જોઈ શકે છે</translation>
 <translation id="6608650720463149374"><ph name="GIGABYTES" /> GB</translation>
 <translation id="6612358246767739896">સુરક્ષિત કન્ટેન્ટ</translation>
 <translation id="662080504995468778">પૃષ્ઠ પર રહો</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_is.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_is.xtb
index d36da1a..98b953d 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_is.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_is.xtb
@@ -263,6 +263,7 @@
 <translation id="6554732001434021288">Síðast opnað fyrir <ph name="NUM_DAYS" /> dögum</translation>
 <translation id="6561560012278703671">Nota hljóðlátari skilaboð (útilokar truflun af tilkynningum)</translation>
 <translation id="6593061639179217415">Tölvuvefsvæði</translation>
+<translation id="6608211702542341247">Þetta vefsvæði er í hópi vefsvæða <ph name="FPS_OWNER" /> sem geta séð virkni þína í hópnum</translation>
 <translation id="6608650720463149374"><ph name="GIGABYTES" /> GB</translation>
 <translation id="6612358246767739896">Varið efni</translation>
 <translation id="662080504995468778">Vera áfram</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_it.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_it.xtb
index 6307d0db..e7cec52 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_it.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_it.xtb
@@ -263,6 +263,7 @@
 <translation id="6554732001434021288">Ultima visita: <ph name="NUM_DAYS" /> giorni fa</translation>
 <translation id="6561560012278703671">Usa messaggi più discreti (impedisce alle notifiche di disturbarti)</translation>
 <translation id="6593061639179217415">Sito desktop</translation>
+<translation id="6608211702542341247">Questo sito fa parte del gruppo di siti di <ph name="FPS_OWNER" /> che possono vedere la tua attività nel gruppo</translation>
 <translation id="6608650720463149374"><ph name="GIGABYTES" /> GB</translation>
 <translation id="6612358246767739896">Contenuti protetti</translation>
 <translation id="662080504995468778">Rimani</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_km.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_km.xtb
index 7b73bc27..3b79d27 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_km.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_km.xtb
@@ -263,6 +263,7 @@
 <translation id="6554732001434021288">បានចូលមើល​លើកចុងក្រោយ​កាលពី <ph name="NUM_DAYS" /> ថ្ងៃមុន</translation>
 <translation id="6561560012278703671">ប្រើ​ការផ្ញើសារ​ស្ងាត់​ជាងមុន (ទប់ស្កាត់​សារ​ជូនដំណឹង​មិនឱ្យ​រំខាន​អ្នក)</translation>
 <translation id="6593061639179217415">ទំព័រ​អេក្រង់​កុំព្យូទ័រ</translation>
+<translation id="6608211702542341247">គេហទំព័រ​នេះ​ស្ថិតក្នុង​ក្រុម​នៃគេហទំព័រ​របស់ <ph name="FPS_OWNER" /> ដែល​អាច​មើលឃើញ​សកម្មភាព​របស់អ្នក​នៅក្នុង​ក្រុម</translation>
 <translation id="6608650720463149374"><ph name="GIGABYTES" /> GB</translation>
 <translation id="6612358246767739896">មាតិកាដែលបានការពារ</translation>
 <translation id="662080504995468778">នៅដដែល</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_kn.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_kn.xtb
index f7525eab..a8578b9 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_kn.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_kn.xtb
@@ -263,6 +263,7 @@
 <translation id="6554732001434021288">ಕೊನೆಯದಾಗಿ <ph name="NUM_DAYS" /> ದಿನಗಳ ಹಿಂದೆ ಭೇಟಿ ನೀಡಲಾಗಿದೆ</translation>
 <translation id="6561560012278703671">ನಿಶ್ಯಬ್ದ ಸಂದೇಶ ಕಳುಹಿಸುವಿಕೆಯನ್ನು ಬಳಸಿ (ನಿಮಗೆ ಅಡಚಣೆ ಉಂಟುಮಾಡುವ ಅಧಿಸೂಚನೆಯ ಪ್ರಾಂಪ್ಟ್‌ಗಳನ್ನು ನಿರ್ಬಂಧಿಸಿ)</translation>
 <translation id="6593061639179217415">ಡೆಸ್ಕ್‌ಟಾಪ್‌ ಸೈಟ್‌</translation>
+<translation id="6608211702542341247">ಈ ಸೈಟ್ <ph name="FPS_OWNER" /> ನ ಸೈಟ್‌ಗಳ ಗುಂಪಿನಲ್ಲಿದ್ದು, ಅದು ಗುಂಪಿನಲ್ಲಿ ನಿಮ್ಮ ಚಟುವಟಿಕೆಯನ್ನು ನೋಡಬಹುದು</translation>
 <translation id="6608650720463149374"><ph name="GIGABYTES" /> GB</translation>
 <translation id="6612358246767739896">ಸಂರಕ್ಷಿಸಿದ ವಿಷಯ</translation>
 <translation id="662080504995468778">ಉಳಿಯಿರಿ</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ko.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ko.xtb
index 8313833..0e5b5a0c 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_ko.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ko.xtb
@@ -263,6 +263,7 @@
 <translation id="6554732001434021288">최근 방문: <ph name="NUM_DAYS" />일 전</translation>
 <translation id="6561560012278703671">조용한 메시지 사용(방해가 되지 않도록 알림 메시지 차단)</translation>
 <translation id="6593061639179217415">데스크톱 사이트</translation>
+<translation id="6608211702542341247">이 사이트는 <ph name="FPS_OWNER" />의 사이트 그룹에 있으며, 여기에서는 그룹 내 활동을 볼 수 있습니다.</translation>
 <translation id="6608650720463149374"><ph name="GIGABYTES" />GB</translation>
 <translation id="6612358246767739896">보호된 콘텐츠</translation>
 <translation id="662080504995468778">머무르기</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ky.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ky.xtb
index 8f0094ca..9d170b5 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_ky.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ky.xtb
@@ -263,6 +263,7 @@
 <translation id="6554732001434021288">Акыркы жолу <ph name="NUM_DAYS" /> күн мурун кирген</translation>
 <translation id="6561560012278703671">Даректер тилкесинде көрсөтүлгөн билдирмелерди колдонуңуз (сизди алаксыткан билдирмелерди бөгөттөйт)</translation>
 <translation id="6593061639179217415">Компьютер версиясы</translation>
+<translation id="6608211702542341247">Бул сайт топто жасаган аракеттериңизди көрө турган сайттардын тобуна (<ph name="FPS_OWNER" />) кирет</translation>
 <translation id="6608650720463149374"><ph name="GIGABYTES" /> Гб</translation>
 <translation id="6612358246767739896">Корголгон мазмун</translation>
 <translation id="662080504995468778">Калуу</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_lo.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_lo.xtb
index 4b333ef8..cda322f 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_lo.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_lo.xtb
@@ -263,6 +263,7 @@
 <translation id="6554732001434021288">ເຂົ້າເບິ່ງຫຼ້າສຸດ <ph name="NUM_DAYS" /> ມື້ກ່ອນ</translation>
 <translation id="6561560012278703671">ໃຊ້ການສົ່ງຂໍ້ຄວາມທີ່ງຽບກວ່າ (ບລັອກບໍ່ໃຫ້ການແຈ້ງເຕືອນຂັດຈັງຫວະທ່ານ)</translation>
 <translation id="6593061639179217415">ເວັບໄຊສຳລັບເດັສທັອບ</translation>
+<translation id="6608211702542341247">ເວັບໄຊນີ້ຢູ່ໃນກຸ່ມຂອງ <ph name="FPS_OWNER" /> ທີ່ສາມາດເຫັນການເຄື່ອນໄຫວຂອງທ່ານໃນກຸ່ມໄດ້</translation>
 <translation id="6608650720463149374"><ph name="GIGABYTES" /> GB</translation>
 <translation id="6612358246767739896">ເນື້ອ​ໃນ​ທີ່ຖືກ​ປົກ​ປ້ອງ</translation>
 <translation id="662080504995468778">ຢູ່ຕໍ່</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_lt.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_lt.xtb
index 85c11b5..338c271 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_lt.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_lt.xtb
@@ -263,6 +263,7 @@
 <translation id="6554732001434021288">Paskutinį kartą lankytasi prieš <ph name="NUM_DAYS" /> d.</translation>
 <translation id="6561560012278703671">Naudoti tylesnio susirašinėjimo funkcijas (blokuojami pranešimų įspėjimai, kad jūsų neblaškytų)</translation>
 <translation id="6593061639179217415">Svetainė kompiuteriams</translation>
+<translation id="6608211702542341247">Ši svetainė priklauso grupei <ph name="FPS_OWNER" /> svetainių, kurios gali peržiūrėti jūsų veiklą grupėje</translation>
 <translation id="6608650720463149374"><ph name="GIGABYTES" /> GB</translation>
 <translation id="6612358246767739896">Apsaugotas turinys</translation>
 <translation id="662080504995468778">Likti</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ml.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ml.xtb
index 2c88ab9..b1e192f6 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_ml.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ml.xtb
@@ -263,6 +263,7 @@
 <translation id="6554732001434021288">അവസാനം സന്ദർശിച്ചത് <ph name="NUM_DAYS" /> ദിവസം മുമ്പായിരുന്നു</translation>
 <translation id="6561560012278703671">നിശബ്ദമായ സന്ദേശമയയ്ക്കൽ ഉപയോഗിക്കുക (നിങ്ങളെ തടസ്സപ്പെടുത്തുന്നതിൽ നിന്ന് അറിയിപ്പ് നിർദ്ദേശങ്ങളെ ബ്ലോക്ക് ചെയ്യുന്നു)</translation>
 <translation id="6593061639179217415">ഡെസ്‌ക്‌ടോപ്പ് സൈറ്റ്</translation>
+<translation id="6608211702542341247">ഈ സൈറ്റ് <ph name="FPS_OWNER" /> എന്നതിന്റെ സൈറ്റുകളുടെ ഗ്രൂപ്പിലുണ്ട്, അതിന് ഗ്രൂപ്പിലെ നിങ്ങളുടെ ആക്റ്റിവിറ്റി കാണാം</translation>
 <translation id="6608650720463149374"><ph name="GIGABYTES" /> GB</translation>
 <translation id="6612358246767739896">പരിരക്ഷിത ഉള്ളടക്കം</translation>
 <translation id="662080504995468778">തുടരുക</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_mn.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_mn.xtb
index 526e8be4..d8d1e2f 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_mn.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_mn.xtb
@@ -263,6 +263,7 @@
 <translation id="6554732001434021288">Хамгийн сүүлд <ph name="NUM_DAYS" /> хоногийн өмнө зочилсон</translation>
 <translation id="6561560012278703671">Илүү чимээгүй мессежийг ашиглах (мэдэгдлийн сануулгад танд саад болохыг хориглодог)</translation>
 <translation id="6593061639179217415">Дэлгэцийн сайт</translation>
+<translation id="6608211702542341247">Энэ сайт нь таны бүлэг дэх үйл ажиллагааг харах боломжтой <ph name="FPS_OWNER" />-н сайтуудын бүлэгт байна</translation>
 <translation id="6608650720463149374"><ph name="GIGABYTES" /> ГБ</translation>
 <translation id="6612358246767739896">Хамгаалагдсан агуулга</translation>
 <translation id="662080504995468778">Үлдэх</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ms.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ms.xtb
index a8a3d7c6..7d6413b 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_ms.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ms.xtb
@@ -263,6 +263,7 @@
 <translation id="6554732001434021288">Terakhir dilawati <ph name="NUM_DAYS" /> hari yang lalu</translation>
 <translation id="6561560012278703671">Gunakan pemesejan yang lebih senyap (menyekat gesaan pemberitahuan daripada mengganggu anda)</translation>
 <translation id="6593061639179217415">Tapak desktop</translation>
+<translation id="6608211702542341247">Laman ini berada dalam kumpulan laman <ph name="FPS_OWNER" /> yang boleh melihat aktiviti anda dalam kumpulan</translation>
 <translation id="6608650720463149374"><ph name="GIGABYTES" /> GB</translation>
 <translation id="6612358246767739896">Kandungan yang dilindungi</translation>
 <translation id="662080504995468778">Kekal di sini</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ne.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ne.xtb
index 6cf95ee..ae477863 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_ne.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ne.xtb
@@ -263,6 +263,7 @@
 <translation id="6554732001434021288">पछिल्लो पटक <ph name="NUM_DAYS" /> दिनअघि खोलिएको</translation>
 <translation id="6561560012278703671">सुटुक्क सन्देश पठाउने सुविधा प्रयोग गर्नुहोस् (यसले सूचनाका प्रम्प्टलाई आफूलाई बाधा पुर्‍याउनबाट रोक लगाउँछ)</translation>
 <translation id="6593061639179217415">डेस्कटप साइट</translation>
+<translation id="6608211702542341247">यो साइट <ph name="FPS_OWNER" /> को समूहअन्तर्गत पर्दछ र यसले सो समूहमा तपाईंका गतिविधि हेर्न सक्छ</translation>
 <translation id="6608650720463149374"><ph name="GIGABYTES" /> जि.बि.</translation>
 <translation id="6612358246767739896">संरक्षित सामग्री</translation>
 <translation id="662080504995468778">यहीँ रहनुहोस्</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_pl.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_pl.xtb
index 83f658b..6b980ad 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_pl.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_pl.xtb
@@ -263,6 +263,7 @@
 <translation id="6554732001434021288">Ostatnio używano <ph name="NUM_DAYS" /> dni temu</translation>
 <translation id="6561560012278703671">Pokazuj wiadomości dyskretnie (blokuje powiadomienia, by Ci nie przeszkadzały)</translation>
 <translation id="6593061639179217415">Wersja na komputer</translation>
+<translation id="6608211702542341247">Ta strona znajduje się w grupie witryn należących do <ph name="FPS_OWNER" />, które mają dostęp do danych o Twojej aktywności w tej grupie</translation>
 <translation id="6608650720463149374"><ph name="GIGABYTES" /> GB</translation>
 <translation id="6612358246767739896">Treść chroniona</translation>
 <translation id="662080504995468778">Zostań</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_sl.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_sl.xtb
index 78e01afc..616b71f 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_sl.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_sl.xtb
@@ -263,6 +263,7 @@
 <translation id="6554732001434021288">Nazadnje obiskano pred toliko dnevi: <ph name="NUM_DAYS" /></translation>
 <translation id="6561560012278703671">Uporaba manj vsiljivih sporočil (preprečuje, da bi vas motili pozivi za pošiljanje obvestil)</translation>
 <translation id="6593061639179217415">Mesto za namizne račun.</translation>
+<translation id="6608211702542341247">To spletno mesto je v skupini spletnih mest <ph name="FPS_OWNER" />, ki si lahko ogledajo vašo dejavnost v skupini.</translation>
 <translation id="6608650720463149374"><ph name="GIGABYTES" /> GB</translation>
 <translation id="6612358246767739896">Zaščitena vsebina</translation>
 <translation id="662080504995468778">Ostani</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_sv.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_sv.xtb
index f56e64b..9440125 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_sv.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_sv.xtb
@@ -263,6 +263,7 @@
 <translation id="6554732001434021288">Besöktes senast för <ph name="NUM_DAYS" /> dagar sedan</translation>
 <translation id="6561560012278703671">Få mer diskreta meddelanden (blockera störande aviseringar)</translation>
 <translation id="6593061639179217415">Datoranpassad webbplats</translation>
+<translation id="6608211702542341247">Den här webbplatsen finns i gruppen med webbplatser som tillhör <ph name="FPS_OWNER" />, som kan se din aktivitet i gruppen</translation>
 <translation id="6608650720463149374"><ph name="GIGABYTES" /> GB</translation>
 <translation id="6612358246767739896">Skyddat innehåll</translation>
 <translation id="662080504995468778">Stanna kvar</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_sw.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_sw.xtb
index 2a28e3e..a006320 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_sw.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_sw.xtb
@@ -263,6 +263,7 @@
 <translation id="6554732001434021288">Ilitembelewa mara ya mwisho siku <ph name="NUM_DAYS" /> zilizopita</translation>
 <translation id="6561560012278703671">Tumia kipengele cha kutuma na kupokea ujumbe bila sauti (huzuia vidokezo vya arifa visikusumbue)</translation>
 <translation id="6593061639179217415">Tovuti ya kompyuta ya mezani</translation>
+<translation id="6608211702542341247">Tovuti hii ipo kwenye kundi la tovuti la <ph name="FPS_OWNER" /> ambalo linaweza kuona shughuli zako kwenye kundi hilo</translation>
 <translation id="6608650720463149374">GB <ph name="GIGABYTES" /></translation>
 <translation id="6612358246767739896">Maudhui yanayolindwa</translation>
 <translation id="662080504995468778">Usiondoke</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_te.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_te.xtb
index c45d5e3..a6cfaa3 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_te.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_te.xtb
@@ -263,6 +263,7 @@
 <translation id="6554732001434021288"><ph name="NUM_DAYS" /> రోజుల క్రితం చివరిగా సందర్శించారు</translation>
 <translation id="6561560012278703671">నిశ్శబ్ద మెసేజ్‌లను ఉపయోగించండి (మీకు అంతరాయం కలిగించకుండా నోటిఫికేషన్ ప్రాంప్ట్‌లను బ్లాక్ చేస్తుంది)</translation>
 <translation id="6593061639179217415">డెస్క్‌టాప్ సైట్</translation>
+<translation id="6608211702542341247"><ph name="FPS_OWNER" />‌కు సంబంధించిన ఏ సైట్‌ల గ్రూప్ అయితే మీ యాక్టివిటీని చూడగలవో, ఆ గ్రూప్‌లో ఈ సైట్ ఉంది</translation>
 <translation id="6608650720463149374"><ph name="GIGABYTES" /> GB</translation>
 <translation id="6612358246767739896">రక్షిత కంటెంట్</translation>
 <translation id="662080504995468778">ఇందులోనే ఉంచు</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_tr.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_tr.xtb
index 73ba33e..79be250 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_tr.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_tr.xtb
@@ -263,6 +263,7 @@
 <translation id="6554732001434021288">En son <ph name="NUM_DAYS" /> gün önce ziyaret edildi</translation>
 <translation id="6561560012278703671">Bildirim daha sessiz yapılsın (bildirim istemlerinin sizi rahatsız etmesini engeller)</translation>
 <translation id="6593061639179217415">Masaüstü sitesi</translation>
+<translation id="6608211702542341247">Bu site, <ph name="FPS_OWNER" /> site grubunda yer almaktadır ve gruptaki etkinliğinizi görebilir</translation>
 <translation id="6608650720463149374"><ph name="GIGABYTES" /> GB</translation>
 <translation id="6612358246767739896">Korunan içerik</translation>
 <translation id="662080504995468778">Kal</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_uk.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_uk.xtb
index 388d80e..7c9c400 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_uk.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_uk.xtb
@@ -263,6 +263,7 @@
 <translation id="6554732001434021288">Останнє відвідування: <ph name="NUM_DAYS" /> дн. тому</translation>
 <translation id="6561560012278703671">Показувати лише значок повідомлення (блокувати сповіщення)</translation>
 <translation id="6593061639179217415">Версія для комп’ютера</translation>
+<translation id="6608211702542341247">Цей сайт належить до групи сайтів <ph name="FPS_OWNER" />, які можуть переглядати ваші дії в групі</translation>
 <translation id="6608650720463149374"><ph name="GIGABYTES" /> ГБ</translation>
 <translation id="6612358246767739896">Захищений контент</translation>
 <translation id="662080504995468778">Залишитися</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ur.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ur.xtb
index f6e345d..a0b589a 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_ur.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ur.xtb
@@ -263,6 +263,7 @@
 <translation id="6554732001434021288">سائٹ آخری بار <ph name="NUM_DAYS" /> دن پہلے ملاحظہ کی گئی</translation>
 <translation id="6561560012278703671">پر سکون پیغام رسانی کا استعمال کریں (اطلاع کی پرامپٹس کو آپ کو خلل ڈالنے سے مسدود کرتا ہے)</translation>
 <translation id="6593061639179217415">ڈیسک ٹاپ سائٹ</translation>
+<translation id="6608211702542341247">یہ سائٹ <ph name="FPS_OWNER" /> کے سائٹس کے گروپ میں ہے جو گروپ میں آپ کی سرگرمی کو دیکھ سکتا ہے</translation>
 <translation id="6608650720463149374"><ph name="GIGABYTES" /> GB</translation>
 <translation id="6612358246767739896">تحفظ یافتہ مواد</translation>
 <translation id="662080504995468778">رکیں</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_zh-HK.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_zh-HK.xtb
index de4ac17..53e9494 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_zh-HK.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_zh-HK.xtb
@@ -263,6 +263,7 @@
 <translation id="6554732001434021288">上次瀏覽日期:<ph name="NUM_DAYS" /> 天前</translation>
 <translation id="6561560012278703671">使用靜態訊息功能 (免受通知提示干擾)</translation>
 <translation id="6593061639179217415">桌面版網站</translation>
+<translation id="6608211702542341247">這個網站屬於 <ph name="FPS_OWNER" /> 的網站群組,因此可以查看你在群組中的活動</translation>
 <translation id="6608650720463149374"><ph name="GIGABYTES" /> GB</translation>
 <translation id="6612358246767739896">受保護內容</translation>
 <translation id="662080504995468778">不離開</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_zh-TW.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_zh-TW.xtb
index 5b045231..a360387 100644
--- a/components/browser_ui/strings/android/translations/browser_ui_strings_zh-TW.xtb
+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_zh-TW.xtb
@@ -263,6 +263,7 @@
 <translation id="6554732001434021288">上次造訪日期:<ph name="NUM_DAYS" /> 天前</translation>
 <translation id="6561560012278703671">使用低擾式通知 (禁止網站顯示通知,以免干擾)</translation>
 <translation id="6593061639179217415">電腦版網站</translation>
+<translation id="6608211702542341247">這個網站屬於 <ph name="FPS_OWNER" /> 的網站群組,因此可以查看你在群組中的活動</translation>
 <translation id="6608650720463149374"><ph name="GIGABYTES" /> GB</translation>
 <translation id="6612358246767739896">受保護內容</translation>
 <translation id="662080504995468778">不離開</translation>
diff --git a/components/certificate_transparency/data/log_list.json b/components/certificate_transparency/data/log_list.json
index 8779205..5a21ae9 100644
--- a/components/certificate_transparency/data/log_list.json
+++ b/components/certificate_transparency/data/log_list.json
@@ -1,6 +1,6 @@
 {
-  "version": "13.7",
-  "log_list_timestamp": "2022-10-06T12:55:30Z",
+  "version": "13.8",
+  "log_list_timestamp": "2022-10-07T12:55:48Z",
   "operators": [
     {
       "name": "Google",
diff --git a/components/commerce/core/account_checker.cc b/components/commerce/core/account_checker.cc
index a705145..161b5f7 100644
--- a/components/commerce/core/account_checker.cc
+++ b/components/commerce/core/account_checker.cc
@@ -223,10 +223,15 @@
   if (pref_service_ && is_waiting_for_pref_fetch_completion_ &&
       result.has_value() && result->is_dict()) {
     if (auto* preferences_map = result->FindKey(kPreferencesKey)) {
-      if (auto price_email_pref =
+      if (absl::optional<bool> price_email_pref =
               preferences_map->FindBoolKey(kPriceTrackEmailPref)) {
-        pref_service_->SetBoolean(kPriceEmailNotificationsEnabled,
-                                  *price_email_pref);
+        // Only set the pref value when necessary since it could affect
+        // PrefService::Preference::IsDefaultValue().
+        if (pref_service_->GetBoolean(kPriceEmailNotificationsEnabled) !=
+            *price_email_pref) {
+          pref_service_->SetBoolean(kPriceEmailNotificationsEnabled,
+                                    *price_email_pref);
+        }
       }
     }
   }
diff --git a/components/commerce/core/commerce_feature_list.cc b/components/commerce/core/commerce_feature_list.cc
index 7d99fee3..b899bba9 100644
--- a/components/commerce/core/commerce_feature_list.cc
+++ b/components/commerce/core/commerce_feature_list.cc
@@ -125,7 +125,7 @@
 // Params use for Discount Consent v2.
 BASE_FEATURE(kDiscountConsentV2,
              "DiscountConsentV2",
-             base::FEATURE_DISABLED_BY_DEFAULT);
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 BASE_FEATURE(kCommerceHintAndroid,
              "CommerceHintAndroid",
@@ -140,7 +140,7 @@
     "discount-consent-ntp-variation";
 const base::FeatureParam<int> kNtpChromeCartModuleDiscountConsentNtpVariation{
     &commerce::kDiscountConsentV2,
-    kNtpChromeCartModuleDiscountConsentNtpVariationParam, 0};
+    kNtpChromeCartModuleDiscountConsentNtpVariationParam, 4};
 const char kNtpChromeCartModuleDiscountConsentReshowTimeParam[] =
     "discount-consent-ntp-reshow-time";
 const base::FeatureParam<base::TimeDelta>
@@ -177,7 +177,7 @@
     kNtpChromeCartModuleDiscountConsentNtpStepOneUseStaticContent{
         &commerce::kDiscountConsentV2,
         kNtpChromeCartModuleDiscountConsentNtpStepOneUseStaticContentParam,
-        false};
+        true};
 const char kNtpChromeCartModuleDiscountConsentNtpStepOneStaticContentParam[] =
     "step-one-static-content";
 const base::FeatureParam<std::string>
diff --git a/components/commerce/core/pref_names.cc b/components/commerce/core/pref_names.cc
index 1f4ca65..e4e3008f 100644
--- a/components/commerce/core/pref_names.cc
+++ b/components/commerce/core/pref_names.cc
@@ -25,7 +25,7 @@
   registry->RegisterBooleanPref(kWebAndAppActivityEnabledForShopping, true);
 
   registry->RegisterBooleanPref(
-      kPriceEmailNotificationsEnabled, true,
+      kPriceEmailNotificationsEnabled, false,
       user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
 
   registry->RegisterTimePref(kCommerceDailyMetricsLastUpdateTime, base::Time());
diff --git a/components/commerce/core/price_tracking_utils.cc b/components/commerce/core/price_tracking_utils.cc
index 8bbd3de9..453525b7 100644
--- a/components/commerce/core/price_tracking_utils.cc
+++ b/components/commerce/core/price_tracking_utils.cc
@@ -10,10 +10,12 @@
 #include "base/time/time.h"
 #include "components/bookmarks/browser/bookmark_model.h"
 #include "components/bookmarks/browser/bookmark_node.h"
+#include "components/commerce/core/pref_names.h"
 #include "components/commerce/core/shopping_service.h"
 #include "components/commerce/core/subscriptions/commerce_subscription.h"
 #include "components/power_bookmarks/core/power_bookmark_utils.h"
 #include "components/power_bookmarks/core/proto/shopping_specifics.pb.h"
+#include "components/prefs/pref_service.h"
 
 namespace commerce {
 
@@ -254,4 +256,14 @@
   return changed;
 }
 
+void MaybeEnableEmailNotifications(PrefService* pref_service) {
+  if (pref_service) {
+    const PrefService::Preference* email_pref =
+        pref_service->FindPreference(kPriceEmailNotificationsEnabled);
+    if (email_pref && email_pref->IsDefaultValue()) {
+      pref_service->SetBoolean(kPriceEmailNotificationsEnabled, true);
+    }
+  }
+}
+
 }  // namespace commerce
diff --git a/components/commerce/core/price_tracking_utils.h b/components/commerce/core/price_tracking_utils.h
index 4853c5f..7fcb9dc 100644
--- a/components/commerce/core/price_tracking_utils.h
+++ b/components/commerce/core/price_tracking_utils.h
@@ -14,6 +14,8 @@
 #include "components/bookmarks/browser/bookmark_model.h"
 #include "components/power_bookmarks/core/proto/power_bookmark_meta.pb.h"
 
+class PrefService;
+
 namespace bookmarks {
 class BookmarkModel;
 class BookmarkNode;
@@ -71,6 +73,11 @@
     power_bookmarks::PowerBookmarkMeta* out_meta,
     const ProductInfo& info);
 
+// Attempts to enable price email notifications for users. This will only set
+// the setting to true if it is the first time being called, after that this is
+// a noop.
+void MaybeEnableEmailNotifications(PrefService* pref_service);
+
 }  // namespace commerce
 
 #endif  // COMPONENTS_COMMERCE_CORE_PRICE_TRACKING_UTILS_H_
diff --git a/components/commerce/core/price_tracking_utils_unittest.cc b/components/commerce/core/price_tracking_utils_unittest.cc
index ddf00a1..d67cb64 100644
--- a/components/commerce/core/price_tracking_utils_unittest.cc
+++ b/components/commerce/core/price_tracking_utils_unittest.cc
@@ -10,11 +10,13 @@
 #include "components/bookmarks/browser/bookmark_model.h"
 #include "components/bookmarks/test/test_bookmark_client.h"
 #include "components/commerce/core/mock_shopping_service.h"
+#include "components/commerce/core/pref_names.h"
 #include "components/commerce/core/price_tracking_utils.h"
 #include "components/commerce/core/test_utils.h"
 #include "components/power_bookmarks/core/power_bookmark_utils.h"
 #include "components/power_bookmarks/core/proto/power_bookmark_meta.pb.h"
 #include "components/power_bookmarks/core/proto/shopping_specifics.pb.h"
+#include "components/prefs/testing_pref_service.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "url/gurl.h"
 
@@ -26,10 +28,13 @@
   void SetUp() override {
     bookmark_model_ = bookmarks::TestBookmarkClient::CreateModel();
     shopping_service_ = std::make_unique<MockShoppingService>();
+    pref_service_ = std::make_unique<TestingPrefServiceSimple>();
+    RegisterPrefs(pref_service_->registry());
   }
 
   std::unique_ptr<bookmarks::BookmarkModel> bookmark_model_;
   std::unique_ptr<MockShoppingService> shopping_service_;
+  std::unique_ptr<TestingPrefServiceSimple> pref_service_;
   base::test::TaskEnvironment task_environment_;
 };
 
@@ -362,5 +367,23 @@
   EXPECT_EQ(title, meta.shopping_specifics().title());
 }
 
+TEST_F(PriceTrackingUtilsTest, MaybeEnableEmailNotifications) {
+  // Verify the initial pref values.
+  ASSERT_EQ(false, pref_service_->GetBoolean(kPriceEmailNotificationsEnabled));
+
+  MaybeEnableEmailNotifications(pref_service_.get());
+
+  // Verify the updated pref values.
+  ASSERT_EQ(true, pref_service_->GetBoolean(kPriceEmailNotificationsEnabled));
+
+  // Mock that user has customized the email pref setting, in which case we
+  // shouldn't auto enable it.
+  pref_service_->SetBoolean(kPriceEmailNotificationsEnabled, false);
+
+  MaybeEnableEmailNotifications(pref_service_.get());
+
+  ASSERT_EQ(false, pref_service_->GetBoolean(kPriceEmailNotificationsEnabled));
+}
+
 }  // namespace
 }  // namespace commerce
\ No newline at end of file
diff --git a/components/commerce_strings.grdp b/components/commerce_strings.grdp
index f4fac93..17ed687 100644
--- a/components/commerce_strings.grdp
+++ b/components/commerce_strings.grdp
@@ -3,6 +3,7 @@
   <!-- Desktop only -->
   <if expr="not is_android and not is_ios">
     <!-- Discount consent strings -->
+    <!-- TODO(crbug.com/1368330): Delete the following strings. -->
     <message name="IDS_DISCOUNT_CONTEXTUAL_CONSENT_TITLE" desc="The title shown on the consent bubble for getting discount.">
       Get discount on <ph name="MERCHANT_NAME">$1</ph> and more
     </message>
@@ -24,17 +25,22 @@
     <message name="IDS_DISCOUNT_CONTEXTUAL_CONSENT_ACCEPTED_CONFIRMATION_DONE" desc="The text shown on the consent confirmation bubble bubble. User can click this button to close the bubble.">
       Done
     </message>
-    <!-- TODO(meiliang@): Use the final approved strings and remove the translateable tag. -->
-    <!-- These strings can skip translation because the feature is targeted en-us locale. Only the
-         en-us user can access the feature UI. -->
-    <message name="IDS_NATIVE_NTP_CART_DISCOUNT_CONSENT_ACCEPT_BUTTON" translateable="false" desc="Text shown on the accept button of the consent dialog. By clicking this button, users has chosen to accept the consent.">
+    <!-- Discount consent strings -->
+    <message name="IDS_NATIVE_NTP_CART_DISCOUNT_CONSENT_ACCEPT_BUTTON" desc="Text shown on the accept button of the consent dialog. By clicking this button, users has chosen to accept the consent to let Google find discounts for your carts.">
       Yes, I'm in
     </message>
-    <message name="IDS_NATIVE_NTP_CART_DISCOUNT_CONSENT_TITLE" translateable="false" desc="The title shown on the native consent dialog for getting discount. Note: This is intentionally left blank. No translation is required.">
-      Get discounts on your carts&#13; &amp; when you shop online
+    <!-- This string can skip translation because the feature is targeted en-us locale. Only the
+         en-us user can access the feature UI. -->
+    <!-- TODO(crbug.com/1372493): Remove the special character and enable translation. -->
+    <message name="IDS_NATIVE_NTP_CART_DISCOUNT_CONSENT_TITLE" translateable="false" desc="The title shown on the native consent dialog for getting discount.">
+      Let Google help you find&#13;discounts for your carts
     </message>
-    <message name="IDS_NATIVE_NTP_CART_DISCOUNT_CONSENT_BODY" translateable="false" desc="The actual consent descrition that shows in the native consent dialog. Note: This is intentionally left blank. No translation is required.">
-      Let Google find personalized discounts on your carts and on online stores you visit. When available, discounts will automatically show up on your carts and on sites.
+    
+    <message name="IDS_NATIVE_NTP_CART_DISCOUNT_CONSENT_BODY" desc="The actual consent descrition that shows in the native consent dialog.">
+      Let Google use your carts to search for personalized discounts. When available, discounts will automatically show up on your carts.
+    </message>
+    <message name="IDS_NTP_CART_DISCOUNT_STEP_ONE_CONTENT" desc="Text shown in the consent card within the cart module. This is the first step of the discount consent flow.">
+      Let Google help you find discounts for your carts
     </message>
 
     <!-- For Desktop Price Tracking -->
diff --git a/components/commerce_strings_grdp/IDS_NATIVE_NTP_CART_DISCOUNT_CONSENT_ACCEPT_BUTTON.png.sha1 b/components/commerce_strings_grdp/IDS_NATIVE_NTP_CART_DISCOUNT_CONSENT_ACCEPT_BUTTON.png.sha1
new file mode 100644
index 0000000..aba059f
--- /dev/null
+++ b/components/commerce_strings_grdp/IDS_NATIVE_NTP_CART_DISCOUNT_CONSENT_ACCEPT_BUTTON.png.sha1
@@ -0,0 +1 @@
+fe8df36aafa46daddbbb72714f5e274853f52057
\ No newline at end of file
diff --git a/components/commerce_strings_grdp/IDS_NATIVE_NTP_CART_DISCOUNT_CONSENT_BODY.png.sha1 b/components/commerce_strings_grdp/IDS_NATIVE_NTP_CART_DISCOUNT_CONSENT_BODY.png.sha1
new file mode 100644
index 0000000..5f8b8a2
--- /dev/null
+++ b/components/commerce_strings_grdp/IDS_NATIVE_NTP_CART_DISCOUNT_CONSENT_BODY.png.sha1
@@ -0,0 +1 @@
+fe8df36aafa46daddbbb72714f5e274853f52057
diff --git a/components/commerce_strings_grdp/IDS_NATIVE_NTP_CART_DISCOUNT_CONSENT_TITLE.png.sha1 b/components/commerce_strings_grdp/IDS_NATIVE_NTP_CART_DISCOUNT_CONSENT_TITLE.png.sha1
new file mode 100644
index 0000000..5f8b8a2
--- /dev/null
+++ b/components/commerce_strings_grdp/IDS_NATIVE_NTP_CART_DISCOUNT_CONSENT_TITLE.png.sha1
@@ -0,0 +1 @@
+fe8df36aafa46daddbbb72714f5e274853f52057
diff --git a/components/commerce_strings_grdp/IDS_NTP_CART_DISCOUNT_STEP_ONE_CONTENT.png.sha1 b/components/commerce_strings_grdp/IDS_NTP_CART_DISCOUNT_STEP_ONE_CONTENT.png.sha1
new file mode 100644
index 0000000..af69834
--- /dev/null
+++ b/components/commerce_strings_grdp/IDS_NTP_CART_DISCOUNT_STEP_ONE_CONTENT.png.sha1
@@ -0,0 +1 @@
+2b0a4f33c7dac6aeee0f6edc0315cb590df15dc3
\ No newline at end of file
diff --git a/components/components_strings.grd b/components/components_strings.grd
index 5b017f3..ac435e0 100644
--- a/components/components_strings.grd
+++ b/components/components_strings.grd
@@ -485,6 +485,9 @@
       <message name="IDS_ACCNAME_OPEN" desc="The accessible name for the Open button.">
         Open
       </message>
+      <message name="IDS_ACCNAME_OPEN_IN_NEW_TAB" desc="The accessible name for the Open in New Tab button.">
+        Open in new tab
+      </message>
       <message name="IDS_ACCNAME_PREVIOUS" desc="The accessible name for the previous button.">
         Previous
       </message>
diff --git a/components/components_strings_grd/IDS_ACCNAME_OPEN_IN_NEW_TAB.png.sha1 b/components/components_strings_grd/IDS_ACCNAME_OPEN_IN_NEW_TAB.png.sha1
new file mode 100644
index 0000000..b6cd22a
--- /dev/null
+++ b/components/components_strings_grd/IDS_ACCNAME_OPEN_IN_NEW_TAB.png.sha1
@@ -0,0 +1 @@
+faea0f033c4a894e1143f0e337dc1df9a929cbf7
\ No newline at end of file
diff --git a/components/content_capture/android/junit/src/org/chromium/components/content_capture/PlatformContentCaptureControllerTest.java b/components/content_capture/android/junit/src/org/chromium/components/content_capture/PlatformContentCaptureControllerTest.java
index 9978fe7..dc829ec8 100644
--- a/components/content_capture/android/junit/src/org/chromium/components/content_capture/PlatformContentCaptureControllerTest.java
+++ b/components/content_capture/android/junit/src/org/chromium/components/content_capture/PlatformContentCaptureControllerTest.java
@@ -32,7 +32,7 @@
  * Unit test for PlatformContentCaptureController.
  */
 @RunWith(BaseRobolectricTestRunner.class)
-@Config(manifest = Config.NONE)
+@Config(manifest = Config.NONE, sdk = Build.VERSION_CODES.Q)
 @RequiresApi(Build.VERSION_CODES.Q)
 public class PlatformContentCaptureControllerTest {
     private ContentCaptureManager mContentCaptureManager;
diff --git a/components/content_settings/core/common/content_settings_constraints.h b/components/content_settings/core/common/content_settings_constraints.h
index e4c74a67..f038603 100644
--- a/components/content_settings/core/common/content_settings_constraints.h
+++ b/components/content_settings/core/common/content_settings_constraints.h
@@ -35,6 +35,8 @@
   SessionModel session_model = SessionModel::Durable;
   // Set to true to keep track of the last visit to the origin of this
   // permission.
+  // This is used for the Safety check permission module and unrelated to the "expiration" keyword
+  // above.
   bool track_last_visit_for_autoexpiration = false;
 };
 
diff --git a/components/device_signals/core/browser/metrics_utils.cc b/components/device_signals/core/browser/metrics_utils.cc
index a42b038..63eb631 100644
--- a/components/device_signals/core/browser/metrics_utils.cc
+++ b/components/device_signals/core/browser/metrics_utils.cc
@@ -24,6 +24,14 @@
 constexpr char kCollectionFailureHistogram[] =
     "Enterprise.DeviceSignals.Collection.Failure";
 
+constexpr char kCollectionSuccessLatencyHistogramFormat[] =
+    "Enterprise.DeviceSignals.Collection.Success.%s.Latency";
+constexpr char kCollectionFailureLatencyHistogramFormat[] =
+    "Enterprise.DeviceSignals.Collection.Failure.%s.Latency";
+constexpr char kCollectionRequestItemsSizeHistogramFormat[] =
+    "Enterprise.DeviceSignals.Collection.Request.%s.Items";
+constexpr char kCollectionItemsSizeDeltaHistogramFormat[] =
+    "Enterprise.DeviceSignals.Collection.%s.Delta";
 constexpr char kCollectionSuccessSizeHistogramFormat[] =
     "Enterprise.DeviceSignals.Collection.Success.%s.Items";
 constexpr char kCollectionSpecificFailureHistogramFormat[] =
@@ -58,11 +66,25 @@
   base::UmaHistogramEnumeration(kCollectionRequestHistogram, signal_name);
 }
 
+void LogSignalCollectionRequestedWithItems(SignalName signal_name,
+                                           size_t number_of_items) {
+  base::UmaHistogramExactLinear(
+      base::StringPrintf(kCollectionRequestItemsSizeHistogramFormat,
+                         GetHistogramVariant(signal_name).c_str()),
+      number_of_items, kMaxSampleValue);
+}
+
 void LogSignalCollectionFailed(SignalName signal_name,
+                               base::TimeTicks start_time,
                                SignalCollectionError error,
                                bool is_top_level_error) {
   base::UmaHistogramEnumeration(kCollectionFailureHistogram, signal_name);
 
+  base::UmaHistogramTimes(
+      base::StringPrintf(kCollectionFailureLatencyHistogramFormat,
+                         GetHistogramVariant(signal_name).c_str()),
+      base::TimeTicks::Now() - start_time);
+
   base::UmaHistogramEnumeration(
       base::StringPrintf(
           kCollectionSpecificFailureHistogramFormat,
@@ -70,16 +92,31 @@
       error);
 }
 
-void LogSignalCollectionSucceeded(
-    SignalName signal_name,
-    absl::optional<size_t> signal_collection_size) {
+void LogSignalCollectionSucceeded(SignalName signal_name,
+                                  base::TimeTicks start_time,
+                                  absl::optional<size_t> signal_collection_size,
+                                  absl::optional<size_t> signal_request_size) {
   base::UmaHistogramEnumeration(kCollectionSuccessHistogram, signal_name);
 
+  const std::string histogram_variant = GetHistogramVariant(signal_name);
+  base::UmaHistogramTimes(
+      base::StringPrintf(kCollectionSuccessLatencyHistogramFormat,
+                         histogram_variant.c_str()),
+      base::TimeTicks::Now() - start_time);
+
   if (signal_collection_size.has_value()) {
     base::UmaHistogramExactLinear(
         base::StringPrintf(kCollectionSuccessSizeHistogramFormat,
-                           GetHistogramVariant(signal_name).c_str()),
+                           histogram_variant.c_str()),
         signal_collection_size.value(), kMaxSampleValue);
+
+    if (signal_request_size.has_value()) {
+      base::UmaHistogramExactLinear(
+          base::StringPrintf(kCollectionItemsSizeDeltaHistogramFormat,
+                             histogram_variant.c_str()),
+          signal_request_size.value() - signal_collection_size.value(),
+          kMaxSampleValue);
+    }
   }
 }
 
diff --git a/components/device_signals/core/browser/metrics_utils.h b/components/device_signals/core/browser/metrics_utils.h
index 282d3dd..feea954e 100644
--- a/components/device_signals/core/browser/metrics_utils.h
+++ b/components/device_signals/core/browser/metrics_utils.h
@@ -5,6 +5,7 @@
 #ifndef COMPONENTS_DEVICE_SIGNALS_CORE_BROWSER_METRICS_UTILS_H_
 #define COMPONENTS_DEVICE_SIGNALS_CORE_BROWSER_METRICS_UTILS_H_
 
+#include "base/time/time.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
 
 namespace device_signals {
@@ -19,19 +20,30 @@
 // Records that a request to collect `signal_name` was received.
 void LogSignalCollectionRequested(SignalName signal_name);
 
+// Records that a request to collect the parameterized signal named
+// `signal_name` was received with `number_of_items` parameters.
+void LogSignalCollectionRequestedWithItems(SignalName signal_name,
+                                           size_t number_of_items);
+
 // Records that the collection of the signal `signal_name` failed with `error`,
 // which, based on `is_top_level_error`, is either a top-level aggregation
-// error, or a collection-level error.
+// error, or a collection-level error. `start_time` is the time at which the
+// signal collection request was received.
 void LogSignalCollectionFailed(SignalName signal_name,
+                               base::TimeTicks start_time,
                                SignalCollectionError error,
                                bool is_top_level_error);
 
 // Records that the collection of the signal `signal_name` was successful.
 // If applicable, will also record the number of items collected as given by
-// `signal_collection_size`.
+// `signal_collection_size`. `start_time` is the time at which the
+// signal collection request was received. `signal_request_size` is the number
+// of items that were part of the signal collection request.
 void LogSignalCollectionSucceeded(
     SignalName signal_name,
-    absl::optional<size_t> signal_collection_size);
+    base::TimeTicks start_time,
+    absl::optional<size_t> signal_collection_size,
+    absl::optional<size_t> signal_request_size = absl::nullopt);
 
 }  // namespace device_signals
 
diff --git a/components/device_signals/test/BUILD.gn b/components/device_signals/test/BUILD.gn
index aac23d8..d804659d 100644
--- a/components/device_signals/test/BUILD.gn
+++ b/components/device_signals/test/BUILD.gn
@@ -5,9 +5,14 @@
 source_set("test_support") {
   testonly = true
   sources = [
+    "signals_contract.cc",
+    "signals_contract.h",
     "test_constants.cc",
     "test_constants.h",
   ]
 
-  deps = [ "//base" ]
+  deps = [
+    "//base",
+    "//components/device_signals/core/common",
+  ]
 }
diff --git a/components/device_signals/test/signals_contract.cc b/components/device_signals/test/signals_contract.cc
new file mode 100644
index 0000000..480435b
--- /dev/null
+++ b/components/device_signals/test/signals_contract.cc
@@ -0,0 +1,185 @@
+// Copyright 2022 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/device_signals/test/signals_contract.h"
+
+#include "base/bind.h"
+#include "base/callback.h"
+#include "build/build_config.h"
+#include "components/device_signals/core/common/signals_constants.h"
+
+namespace device_signals::test {
+
+namespace {
+
+#if BUILDFLAG(IS_WIN)
+// Only return false if the value is set to something other than a string.
+bool VerifyOptionalString(const std::string& signal_name,
+                          const base::Value::Dict& signals) {
+  if (!signals.Find(signal_name)) {
+    return true;
+  }
+
+  return signals.FindString(signal_name);
+}
+#endif  // BUILDFLAG(IS_WIN)
+
+bool VerifyIsString(const std::string& signal_name,
+                    const base::Value::Dict& signals) {
+  return signals.FindString(signal_name);
+}
+
+bool VerifyIsBoolean(const std::string& signal_name,
+                     const base::Value::Dict& signals) {
+  return signals.FindBool(signal_name).has_value();
+}
+
+// `min_value` and `max_value` are inclusive.
+bool VerifyIsIntegerWithRange(const std::string& signal_name,
+                              int32_t min_value,
+                              int32_t max_value,
+                              const base::Value::Dict& signals) {
+  auto int_value = signals.FindInt(signal_name);
+  if (!int_value) {
+    return false;
+  }
+
+  return int_value >= min_value && int_value <= max_value;
+}
+
+bool VerifyIsSettingInteger(const std::string& signal_name,
+                            const base::Value::Dict& signals) {
+  // Verify the value is in the valid enum values range.
+  // Enum defined at:
+  // //chrome/browser/enterprise/signals/signals_common.h
+  return VerifyIsIntegerWithRange(signal_name, 0, 2, signals);
+}
+
+// `enforce_value` can be set to true when we definitely expect a value to be
+// set in the array.
+bool VerifyIsStringArray(const std::string& signal_name,
+                         bool enforce_value,
+                         const base::Value::Dict& signals) {
+  const auto* list_value = signals.FindList(signal_name);
+  if (!list_value) {
+    return false;
+  }
+
+  if (list_value->empty()) {
+    return !enforce_value;
+  }
+
+  for (const auto& value : *list_value) {
+    if (!value.is_string()) {
+      return false;
+    }
+  }
+
+  return true;
+}
+
+bool VerifyUnset(const std::string& signal_name,
+                 const base::Value::Dict& signals) {
+  return !signals.Find(signal_name);
+}
+
+}  // namespace
+
+base::flat_map<std::string,
+               base::RepeatingCallback<bool(const base::Value::Dict&)>>
+GetSignalsContract() {
+  base::flat_map<std::string,
+                 base::RepeatingCallback<bool(const base::Value::Dict&)>>
+      contract;
+
+  // Common signals.
+  contract[names::kOs] = base::BindRepeating(VerifyIsString, names::kOs);
+  contract[names::kOsVersion] =
+      base::BindRepeating(VerifyIsString, names::kOsVersion);
+  contract[names::kDisplayName] =
+      base::BindRepeating(VerifyIsString, names::kDisplayName);
+  contract[names::kBrowserVersion] =
+      base::BindRepeating(VerifyIsString, names::kBrowserVersion);
+  contract[names::kDeviceModel] =
+      base::BindRepeating(VerifyIsString, names::kDeviceModel);
+  contract[names::kDeviceManufacturer] =
+      base::BindRepeating(VerifyIsString, names::kDeviceManufacturer);
+  contract[names::kDeviceAffiliationIds] =
+      base::BindRepeating(VerifyIsStringArray, names::kDeviceAffiliationIds,
+                          /*enforce_value=*/true);
+  contract[names::kProfileAffiliationIds] =
+      base::BindRepeating(VerifyIsStringArray, names::kProfileAffiliationIds,
+                          /*enforce_value=*/true);
+  contract[names::kRealtimeUrlCheckMode] = base::BindRepeating(
+      VerifyIsIntegerWithRange, names::kRealtimeUrlCheckMode, 0, 1);
+  contract[names::kSafeBrowsingProtectionLevel] = base::BindRepeating(
+      VerifyIsIntegerWithRange, names::kSafeBrowsingProtectionLevel, 0, 2);
+  contract[names::kSiteIsolationEnabled] =
+      base::BindRepeating(VerifyIsBoolean, names::kSiteIsolationEnabled);
+  contract[names::kPasswordProtectionWarningTrigger] = base::BindRepeating(
+      VerifyIsIntegerWithRange, names::kPasswordProtectionWarningTrigger, 0, 3);
+  contract[names::kChromeRemoteDesktopAppBlocked] = base::BindRepeating(
+      VerifyIsBoolean, names::kChromeRemoteDesktopAppBlocked);
+  contract[names::kBuiltInDnsClientEnabled] =
+      base::BindRepeating(VerifyIsBoolean, names::kBuiltInDnsClientEnabled);
+  contract[names::kOsFirewall] =
+      base::BindRepeating(VerifyIsSettingInteger, names::kOsFirewall);
+  contract[names::kSystemDnsServers] = base::BindRepeating(
+      VerifyIsStringArray, names::kSystemDnsServers, /*enforce_value=*/true);
+
+  // Signals added for both CrOS and Browser but from different collection
+  // locations.
+  contract[names::kDeviceEnrollmentDomain] =
+      base::BindRepeating(VerifyIsString, names::kDeviceEnrollmentDomain);
+  contract[names::kDiskEncrypted] =
+      base::BindRepeating(VerifyIsSettingInteger, names::kDiskEncrypted);
+  contract[names::kSerialNumber] =
+      base::BindRepeating(VerifyIsString, names::kSerialNumber);
+  contract[names::kDeviceHostName] =
+      base::BindRepeating(VerifyIsString, names::kDeviceHostName);
+  contract[names::kMacAddresses] = base::BindRepeating(
+      VerifyIsStringArray, names::kMacAddresses, /*enforce_value=*/false);
+
+#if BUILDFLAG(IS_WIN)
+  contract[names::kChromeCleanupEnabled] =
+      base::BindRepeating(VerifyIsBoolean, names::kChromeCleanupEnabled);
+  contract[names::kWindowsMachineDomain] =
+      base::BindRepeating(VerifyOptionalString, names::kWindowsMachineDomain);
+  contract[names::kWindowsUserDomain] =
+      base::BindRepeating(VerifyOptionalString, names::kWindowsUserDomain);
+  contract[names::kSecureBootEnabled] =
+      base::BindRepeating(VerifyIsSettingInteger, names::kSecureBootEnabled);
+#else
+  // Windows-only signals that shouldn't be set on other platforms.
+  contract[names::kChromeCleanupEnabled] =
+      base::BindRepeating(VerifyUnset, names::kChromeCleanupEnabled);
+  contract[names::kWindowsMachineDomain] =
+      base::BindRepeating(VerifyUnset, names::kWindowsMachineDomain);
+  contract[names::kWindowsUserDomain] =
+      base::BindRepeating(VerifyUnset, names::kWindowsUserDomain);
+  contract[names::kSecureBootEnabled] =
+      base::BindRepeating(VerifyUnset, names::kSecureBootEnabled);
+#endif
+
+#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
+  contract[names::kScreenLockSecured] =
+      base::BindRepeating(VerifyIsSettingInteger, names::kScreenLockSecured);
+
+  contract[names::kAllowScreenLock] =
+      base::BindRepeating(VerifyUnset, names::kAllowScreenLock);
+  contract[names::kImei] = base::BindRepeating(VerifyUnset, names::kImei);
+  contract[names::kMeid] = base::BindRepeating(VerifyUnset, names::kMeid);
+#else
+  // Chrome OS Signals.
+  contract[names::kAllowScreenLock] =
+      base::BindRepeating(VerifyIsBoolean, names::kAllowScreenLock);
+
+  contract[names::kScreenLockSecured] =
+      base::BindRepeating(VerifyUnset, names::kScreenLockSecured);
+#endif  // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
+
+  return contract;
+}
+
+}  // namespace device_signals::test
diff --git a/components/device_signals/test/signals_contract.h b/components/device_signals/test/signals_contract.h
new file mode 100644
index 0000000..f39cb99
--- /dev/null
+++ b/components/device_signals/test/signals_contract.h
@@ -0,0 +1,23 @@
+// Copyright 2022 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_DEVICE_SIGNALS_TEST_SIGNALS_CONTRACT_H_
+#define COMPONENTS_DEVICE_SIGNALS_TEST_SIGNALS_CONTRACT_H_
+
+#include "base/callback_forward.h"
+#include "base/containers/flat_map.h"
+#include "base/values.h"
+
+namespace device_signals::test {
+
+// Returns a map from a signal name to a predicate which evaluates an
+// expectation based on a given signals dictionary.
+// This represents the inline flow contract.
+base::flat_map<std::string,
+               base::RepeatingCallback<bool(const base::Value::Dict&)>>
+GetSignalsContract();
+
+}  // namespace device_signals::test
+
+#endif  // COMPONENTS_DEVICE_SIGNALS_TEST_SIGNALS_CONTRACT_H_
diff --git a/components/enterprise/browser/device_trust/device_trust_key_manager.h b/components/enterprise/browser/device_trust/device_trust_key_manager.h
index e0e0cd2..69247e6 100644
--- a/components/enterprise/browser/device_trust/device_trust_key_manager.h
+++ b/components/enterprise/browser/device_trust/device_trust_key_manager.h
@@ -23,8 +23,9 @@
 
   struct KeyMetadata {
     enterprise_management::BrowserPublicKeyUploadRequest::KeyTrustLevel
-        trust_level;
-    crypto::SignatureVerifier::SignatureAlgorithm algorithm;
+        trust_level{};
+    crypto::SignatureVerifier::SignatureAlgorithm algorithm{};
+    std::string spki_bytes{};
   };
 
   enum class KeyRotationResult {
diff --git a/components/enterprise/common/proto/connectors.proto b/components/enterprise/common/proto/connectors.proto
index 14fcff3..c5167845 100644
--- a/components/enterprise/common/proto/connectors.proto
+++ b/components/enterprise/common/proto/connectors.proto
@@ -135,6 +135,13 @@
   // until a response from the agent is received.
   optional int64 expires_at = 15;
 
+  // ID for keeping track of analysis requests that belong to the same user
+  // action.
+  optional string user_action_id = 16;
+
+  // Count of analysis requests that belong to the same user action.
+  optional int64 user_action_requests_count = 17;
+
   // Reserved to make sure there is no overlap with DeepScanningClientRequest.
   reserved 3, 4, 6 to 8;
 }
diff --git a/components/feature_engagement/public/feature_configurations.cc b/components/feature_engagement/public/feature_configurations.cc
index 8473d57..e7f0b3ac 100644
--- a/components/feature_engagement/public/feature_configurations.cc
+++ b/components/feature_engagement/public/feature_configurations.cc
@@ -134,7 +134,7 @@
     config->trigger = EventConfig("battery_saver_info_triggered",
                                   Comparator(EQUAL, 0), 360, 360);
     config->used =
-        EventConfig("battery_saver_info_shown", Comparator(EQUAL, 0), 360, 360);
+        EventConfig("battery_saver_info_shown", Comparator(EQUAL, 0), 7, 360);
     return config;
   }
 
@@ -143,11 +143,12 @@
     config->valid = true;
     config->availability = Comparator(ANY, 0);
     config->session_rate = Comparator(ANY, 0);
-    // Show the promo once a year if the page action chip was not opened.
+    // Show the promo once a year if the page action chip was not opened
+    // within the last week
     config->trigger = EventConfig("high_efficiency_info_trigger",
                                   Comparator(EQUAL, 0), 360, 360);
-    config->used = EventConfig("high_efficiency_info_shown",
-                               Comparator(EQUAL, 0), 360, 360);
+    config->used =
+        EventConfig("high_efficiency_info_shown", Comparator(EQUAL, 0), 7, 360);
     return config;
   }
 
diff --git a/components/feedback/feedback_report.cc b/components/feedback/feedback_report.cc
index 3d7c7c0..c57c8eb 100644
--- a/components/feedback/feedback_report.cc
+++ b/components/feedback/feedback_report.cc
@@ -102,6 +102,10 @@
 const char FeedbackReport::kMemUsageWithTabTitlesKey[] = "mem_usage_with_title";
 
 // static
+const char FeedbackReport::kFeedbackUserCtlConsentKey[] =
+    "feedbackUserCtlConsent";
+
+// static
 void FeedbackReport::LoadReportsAndQueue(const base::FilePath& user_dir,
                                          const QueueCallback& callback) {
   if (user_dir.empty())
diff --git a/components/feedback/feedback_report.h b/components/feedback/feedback_report.h
index 43df3ef..495829c 100644
--- a/components/feedback/feedback_report.h
+++ b/components/feedback/feedback_report.h
@@ -56,6 +56,11 @@
   // mem_usage entries with tab names.
   static const char kMemUsageWithTabTitlesKey[];
 
+  // The ID of the product specific data indicating whether the users want to be
+  // contacted back with any additional questions or updates about the issue
+  // they are reporting.
+  static const char kFeedbackUserCtlConsentKey[];
+
   // Loads the reports still on disk and queues then using the given callback.
   // This call blocks on the file reads.
   static void LoadReportsAndQueue(const base::FilePath& user_dir,
diff --git a/components/feedback/feedback_util.cc b/components/feedback/feedback_util.cc
index 2a9af20..eb12e8324 100644
--- a/components/feedback/feedback_util.cc
+++ b/components/feedback/feedback_util.cc
@@ -62,6 +62,12 @@
       continue;
     }
 
+    if (key == feedback::FeedbackReport::kFeedbackUserCtlConsentKey) {
+      // Avoid adding user consent to the system_logs.txt file. It just needs to
+      // be in the product specific data.
+      continue;
+    }
+
     std::string value = iter.second;
     base::TrimString(value, "\n ", &value);
     if (value.find("\n") != std::string::npos) {
diff --git a/components/feedback/feedback_util_unittest.cc b/components/feedback/feedback_util_unittest.cc
index c8205592..30737b6 100644
--- a/components/feedback/feedback_util_unittest.cc
+++ b/components/feedback/feedback_util_unittest.cc
@@ -10,6 +10,7 @@
 #include "base/files/scoped_file.h"
 #include "base/files/scoped_temp_dir.h"
 #include "base/rand_util.h"
+#include "components/feedback/feedback_report.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace feedback_util {
@@ -124,4 +125,17 @@
   EXPECT_EQ(test_data.substr(test_size - 175, 175), read_data);
 }
 
+TEST_F(FeedbackUtilTest, LogsToStringShouldSkipFeedbackUserCtlConsentKey) {
+  FeedbackCommon::SystemLogsMap sys_info;
+  sys_info[feedback::FeedbackReport::kFeedbackUserCtlConsentKey] = "true";
+
+  std::string logs = feedback_util::LogsToString(sys_info);
+  EXPECT_TRUE(logs.empty());
+
+  // Now add a fake key expected to be in system_logs.
+  sys_info["fake_key"] = "fake_value";
+  logs = feedback_util::LogsToString(sys_info);
+  EXPECT_EQ("fake_key=fake_value\n", logs);
+}
+
 }  // namespace feedback_util
diff --git a/components/global_media_controls/DIR_METADATA b/components/global_media_controls/DIR_METADATA
new file mode 100644
index 0000000..5655fca0
--- /dev/null
+++ b/components/global_media_controls/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "Internals>Media>UI"
+}
+team_email: "media-dev@chromium.org"
diff --git a/components/metrics/structured/BUILD.gn b/components/metrics/structured/BUILD.gn
index 41bff84..b243bf36 100644
--- a/components/metrics/structured/BUILD.gn
+++ b/components/metrics/structured/BUILD.gn
@@ -29,6 +29,7 @@
   deps = [
     ":storage",
     ":structured_events",
+    ":structured_metrics_validator",
     "//base",
     "//components/metrics",
     "//components/metrics/structured/mojom",
@@ -73,8 +74,6 @@
 # Sources used by all static libraries in this BUILD file.
 source_set("common") {
   sources = [
-    "event_base.cc",
-    "event_base.h",
     "histogram_util.cc",
     "histogram_util.h",
     "recorder.cc",
@@ -208,7 +207,6 @@
 source_set("unit_tests") {
   testonly = true
   sources = [
-    "event_base_unittest.cc",
     "external_metrics_unittest.cc",
     "key_data_unittest.cc",
     "persistent_proto_unittest.cc",
diff --git a/components/metrics/structured/event.cc b/components/metrics/structured/event.cc
index 65d6eead..6f2c288 100644
--- a/components/metrics/structured/event.cc
+++ b/components/metrics/structured/event.cc
@@ -53,8 +53,19 @@
   return false;
 }
 
+Event Event::Clone() const {
+  auto clone = Event(project_name_, event_name_);
+  for (const auto& metric : metric_values()) {
+    const Event::MetricValue& metric_value = metric.second;
+    clone.AddMetric(metric.first, metric_value.type,
+                    metric_value.value.Clone());
+  }
+  clone.SetRecordedTimeSinceBoot(recorded_time_since_boot_);
+
+  return clone;
+}
+
 void Event::Record() {
-  recorded_time_since_boot_ = base::SysInfo::Uptime();
   StructuredMetricsClient::Get()->Record(std::move(*this));
 }
 
@@ -107,4 +118,8 @@
   return pair.second;
 }
 
+void Event::SetRecordedTimeSinceBoot(base::TimeDelta recorded_time_since_boot) {
+  recorded_time_since_boot_ = recorded_time_since_boot;
+}
+
 }  // namespace metrics::structured
diff --git a/components/metrics/structured/event.h b/components/metrics/structured/event.h
index 10f4d53..f1d8a9b 100644
--- a/components/metrics/structured/event.h
+++ b/components/metrics/structured/event.h
@@ -11,14 +11,11 @@
 
 #include "base/time/time.h"
 #include "base/values.h"
+#include "components/metrics/structured/enums.h"
 
 // Builder classes for sending events are generated in
 // //components/metrics/structured/structured_events.h based on XML
 // configuration.
-//
-// Note that |EventBase| is only be used by the central service to record
-// events. TODO(jongahn): Investigate whether it's even necessary to convert to
-// EventBase when persisting events.
 
 namespace metrics::structured {
 
@@ -64,6 +61,8 @@
 
   virtual bool IsCrOSEvent() const;
 
+  Event Clone() const;
+
   // Records |this|. Once this method is called, |this| will be unsafe to
   // access.
   void Record();
@@ -86,6 +85,9 @@
   std::string event_name_;
   std::map<std::string, MetricValue> metric_values_;
 
+  // Explicitly set the system uptime.
+  void SetRecordedTimeSinceBoot(base::TimeDelta recorded_time_since_boot);
+
   // System uptime for which the event was recorded.
   base::TimeDelta recorded_time_since_boot_;
 };
diff --git a/components/metrics/structured/event_base.cc b/components/metrics/structured/event_base.cc
deleted file mode 100644
index 4dbfb54f1..0000000
--- a/components/metrics/structured/event_base.cc
+++ /dev/null
@@ -1,140 +0,0 @@
-// Copyright 2019 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/metrics/structured/event_base.h"
-
-#include "base/logging.h"
-#include "base/notreached.h"
-#include "base/strings/string_number_conversions.h"
-#include "components/metrics/structured/enums.h"
-#include "components/metrics/structured/event.h"
-#include "components/metrics/structured/event_validator.h"
-#include "components/metrics/structured/project_validator.h"
-#include "components/metrics/structured/recorder.h"
-#include "components/metrics/structured/structured_metrics_client.h"
-#include "components/metrics/structured/structured_metrics_validator.h"
-#include "third_party/abseil-cpp/absl/types/optional.h"
-
-namespace metrics {
-namespace structured {
-
-EventBase::EventBase(uint64_t event_name_hash,
-                     uint64_t project_name_hash,
-                     IdType id_type,
-                     IdScope id_scope,
-                     StructuredEventProto_EventType event_type,
-                     int key_rotation_period)
-    : event_name_hash_(event_name_hash),
-      project_name_hash_(project_name_hash),
-      id_type_(id_type),
-      id_scope_(id_scope),
-      event_type_(event_type),
-      key_rotation_period_(key_rotation_period) {}
-EventBase::EventBase(const EventBase& other) = default;
-EventBase::~EventBase() = default;
-
-absl::optional<int> EventBase::LastKeyRotation() {
-  return Recorder::GetInstance()->LastKeyRotation(project_name_hash_);
-}
-
-void EventBase::AddHmacMetric(uint64_t name_hash, const std::string& value) {
-  Metric metric(name_hash, MetricType::kHmac);
-  metric.hmac_value = value;
-  metrics_.push_back(metric);
-}
-
-void EventBase::AddIntMetric(uint64_t name_hash, int64_t value) {
-  Metric metric(name_hash, MetricType::kInt);
-  metric.int_value = value;
-  metrics_.push_back(metric);
-}
-
-void EventBase::AddRawStringMetric(uint64_t name_hash,
-                                   const std::string& value) {
-  Metric metric(name_hash, MetricType::kRawString);
-  metric.string_value = value;
-  metrics_.push_back(metric);
-}
-
-EventBase::Metric::Metric(uint64_t name_hash, MetricType type)
-    : name_hash(name_hash), type(type) {}
-EventBase::Metric::~Metric() = default;
-
-bool EventBase::Metric::operator==(const EventBase::Metric& other) const {
-  // Terminate early to avoid accessing irrelevant values.
-  if (name_hash != other.name_hash || type != other.type)
-    return false;
-
-  switch (type) {
-    case MetricType::kHmac:
-      return hmac_value == other.hmac_value;
-    case MetricType::kInt:
-      return int_value == other.int_value;
-    case MetricType::kRawString:
-      return string_value == other.string_value;
-  }
-
-  NOTREACHED();
-}
-
-// static
-absl::optional<EventBase> EventBase::FromEvent(const Event& event) {
-  auto project_validator = validator::GetProjectValidator(event.project_name());
-  if (!project_validator.has_value())
-    return absl::nullopt;
-
-  const auto event_validator =
-      project_validator.value()->GetEventValidator(event.event_name());
-  if (!event_validator.has_value())
-    return absl::nullopt;
-
-  EventBase event_base(event_validator.value()->event_hash(),
-                       project_validator.value()->project_hash(),
-                       project_validator.value()->id_type(),
-                       project_validator.value()->id_scope(),
-                       project_validator.value()->event_type(),
-                       project_validator.value()->key_rotation_period());
-
-  for (const auto& metric_value : event.metric_values()) {
-    // Validate that both name and metric type are valid structured metrics.
-    absl::optional<EventValidator::MetricMetadata> metric_metadata =
-        event_validator.value()->GetMetricMetadata(metric_value.first);
-    if (!metric_metadata.has_value() ||
-        metric_metadata.value().metric_type != metric_value.second.type) {
-      return absl::nullopt;
-    }
-
-    const auto& value = metric_value.second.value;
-    switch (metric_value.second.type) {
-      case Event::MetricType::kHmac:
-        event_base.AddHmacMetric(metric_metadata.value().metric_name_hash,
-                                 value.GetString());
-        break;
-      case Event::MetricType::kLong:
-        int64_t long_value;
-        base::StringToInt64(value.GetString(), &long_value);
-        event_base.AddIntMetric(metric_metadata.value().metric_name_hash,
-                                long_value);
-        break;
-      case Event::MetricType::kInt:
-        event_base.AddIntMetric(metric_metadata.value().metric_name_hash,
-                                value.GetInt());
-        break;
-      case Event::MetricType::kRawString:
-        event_base.AddRawStringMetric(metric_metadata.value().metric_name_hash,
-                                      value.GetString());
-        break;
-      // TODO(jongahn): Support these types.
-      case Event::MetricType::kBoolean:
-      case Event::MetricType::kDouble:
-        VLOG(1) << "Metric type not supported";
-        NOTREACHED();
-        break;
-    }
-  }
-  return event_base;
-}
-
-}  // namespace structured
-}  // namespace metrics
diff --git a/components/metrics/structured/event_base.h b/components/metrics/structured/event_base.h
deleted file mode 100644
index f85220f..0000000
--- a/components/metrics/structured/event_base.h
+++ /dev/null
@@ -1,137 +0,0 @@
-// Copyright 2019 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_METRICS_STRUCTURED_EVENT_BASE_H_
-#define COMPONENTS_METRICS_STRUCTURED_EVENT_BASE_H_
-
-#include <string>
-#include <utility>
-#include <vector>
-
-#include "components/metrics/structured/enums.h"
-#include "components/metrics/structured/event.h"
-#include "third_party/abseil-cpp/absl/types/optional.h"
-#include "third_party/metrics_proto/structured_data.pb.h"
-
-namespace metrics {
-namespace structured {
-
-// All events must be converted to EventBase to be recorded and persisted to
-// disk.
-//
-// TODO(jongahn): Write directly from Event to disk without making this
-// conversion.
-class EventBase {
- public:
-  EventBase(const EventBase& other);
-  virtual ~EventBase();
-
-  // Specifies which value type a Metric object holds.
-  enum class MetricType {
-    kHmac = 0,
-    kInt = 1,
-    kRawString = 2,
-  };
-
-  // Stores all information about a single metric: name hash, value, and a
-  // specifier of the value type.
-  struct Metric {
-    Metric(uint64_t name_hash, MetricType type);
-    ~Metric();
-
-    bool operator==(const Metric& other) const;
-
-    // First 8 bytes of the MD5 hash of the metric name, as defined in
-    // structured.xml. This is calculated by
-    // tools/metrics/structured/codegen.py.
-    uint64_t name_hash;
-    MetricType type;
-
-    // TODO(crbug.com/10116655): Replace this with a base::Value.
-    // All possible value types a metric can take. Exactly one of these should
-    // be set. If |hmac_value| is set (with |type| as MetricType::kHmac),
-    // only the HMAC digest will be reported, so it is safe to put any value
-    // here. If |raw_string_value| is set (with |type| as MetricType::kString),
-    // the unprocessed string will be reported.
-    std::string hmac_value;
-    int64_t int_value = 0;
-    std::string string_value;
-  };
-
-  // Returns when the key for |project_name_hash| was last rotated, in days
-  // since epoch. Returns nullopt if the information is not available.
-  absl::optional<int> LastKeyRotation();
-
-  std::vector<Metric> metrics() const { return metrics_; }
-
-  uint64_t name_hash() const { return event_name_hash_; }
-
-  uint64_t project_name_hash() const { return project_name_hash_; }
-
-  IdType id_type() const { return id_type_; }
-
-  IdScope id_scope() const { return id_scope_; }
-
-  EventType event_type() const { return event_type_; }
-
-  int key_rotation_period() const { return key_rotation_period_; }
-
-  // Converts an unhashed,raw |event| into an EventBase. If |event| is
-  // malformatted (ie wrong metric name or metric vlaue type) or is not
-  // registered within structured.xml, then returns absl::nullopt.
-  static absl::optional<EventBase> FromEvent(const Event& event);
-
- protected:
-  EventBase(uint64_t event_name_hash,
-            uint64_t project_name_hash,
-            IdType id_type,
-            IdScope id_scope,
-            EventType event_type,
-            int max_key_rotation_period);
-
-  void AddHmacMetric(uint64_t name_hash, const std::string& value);
-
-  void AddIntMetric(uint64_t name_hash, int64_t value);
-
-  void AddRawStringMetric(uint64_t name_hash, const std::string& value);
-
- private:
-  // First 8 bytes of the MD5 hash of the event name, as defined in
-  // structured.xml. This is calculated by tools/metrics/structured/codegen.py.
-  uint64_t event_name_hash_;
-
-  // The project name hash is used to to determine which key to use for hashing
-  // events. The project name comes from this event's definition in
-  // structured.xml, and is decided by the rules:
-  //
-  //  - if this event references a project, eg. <event name="..."
-  //    project="...">, use that project's name.
-  //
-  //  - otherwise, use the event's name.
-  //
-  // |project_name_hash_| is the first 8 bytes of the MD5 hash of the project
-  // name.
-  uint64_t project_name_hash_;
-
-  // See enum definition.
-  IdType id_type_;
-
-  // See enum definition.
-  IdScope id_scope_;
-
-  // Specifies the type of an event, which determines how it is treated after
-  // upload. See /third_party/metrics_proto/structured_data.proto for more
-  // information.
-  EventType event_type_;
-
-  // Key rotation period for this event.
-  int key_rotation_period_;
-
-  std::vector<Metric> metrics_;
-};
-
-}  // namespace structured
-}  // namespace metrics
-
-#endif  // COMPONENTS_METRICS_STRUCTURED_EVENT_BASE_H_
diff --git a/components/metrics/structured/event_base_unittest.cc b/components/metrics/structured/event_base_unittest.cc
deleted file mode 100644
index e139710..0000000
--- a/components/metrics/structured/event_base_unittest.cc
+++ /dev/null
@@ -1,121 +0,0 @@
-// Copyright 2021 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/metrics/structured/event_base.h"
-
-#include <cstdio>
-#include <string>
-
-#include "base/values.h"
-#include "components/metrics/structured/enums.h"
-#include "components/metrics/structured/event.h"
-#include "testing/gmock/include/gmock/gmock.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-namespace metrics {
-namespace structured {
-
-namespace {
-
-using testing::AllOf;
-using testing::Eq;
-using testing::Property;
-using testing::UnorderedElementsAre;
-
-// These project, event, and metric names are used for testing. This test metric
-// is defined in //tools/metrics/structured/structured.xml. The constants below
-// are from the project defined in structured.xml.
-//
-// - project: TestProjectOne
-//   - event: TestEventOne
-//     - metric: TestMetricOne
-//     - metric: TestMetricTwo
-
-constexpr uint64_t kProjectOneHash = UINT64_C(16881314472396226433);
-constexpr char kProjectOneName[] = "TestProjectOne";
-
-constexpr uint64_t kEventOneHash = UINT64_C(13593049295042080097);
-constexpr char kEventOneName[] = "TestEventOne";
-
-constexpr uint64_t kMetricOneHash = UINT64_C(637929385654885975);
-constexpr char kMetricOneName[] = "TestMetricOne";
-
-constexpr uint64_t kMetricTwoHash = UINT64_C(14083999144141567134);
-constexpr char kMetricTwoName[] = "TestMetricTwo";
-
-constexpr IdScope kProjectOneIdScope = IdScope::kPerProfile;
-constexpr IdType kProjectOneIdType = IdType::kProjectId;
-constexpr EventType kProjectOneEventType =
-    EventType::StructuredEventProto_EventType_REGULAR;
-
-}  // namespace
-
-TEST(EventBaseTest, FromEventConvertsValidEventToEventBase) {
-  const std::string kHmacValue = "hmac-value";
-  const std::string kLongValue = "12345";  // No long in base::Value.
-
-  Event test_event(kProjectOneName, kEventOneName);
-  test_event.AddMetric(kMetricOneName, Event::MetricType::kHmac,
-                       base::Value(kHmacValue));
-  test_event.AddMetric(kMetricTwoName, Event::MetricType::kLong,
-                       base::Value(kLongValue));
-
-  EventBase::Metric expected_metric1(kMetricOneHash,
-                                     EventBase::MetricType::kHmac);
-  expected_metric1.hmac_value = kHmacValue;
-  EventBase::Metric expected_metric2(kMetricTwoHash,
-                                     EventBase::MetricType::kInt);
-  expected_metric2.int_value = 12345;  // kLongValue.
-
-  auto event_base = EventBase::FromEvent(test_event);
-  ASSERT_TRUE(event_base.has_value());
-
-  EXPECT_THAT(
-      event_base.value(),
-      AllOf(
-          Property(&EventBase::project_name_hash, Eq(kProjectOneHash)),
-          Property(&EventBase::name_hash, Eq(kEventOneHash)),
-          Property(&EventBase::id_type, Eq(kProjectOneIdType)),
-          Property(&EventBase::id_scope, Eq(kProjectOneIdScope)),
-          Property(&EventBase::event_type, Eq(kProjectOneEventType)),
-          Property(&EventBase::metrics,
-                   UnorderedElementsAre(expected_metric1, expected_metric2))));
-}
-
-TEST(EventBaseTest, FromEventWithInvalidMetricNameIsEmpty) {
-  const std::string kHmacValue = "hmac-value";
-
-  Event test_event(kProjectOneName, kEventOneName);
-  test_event.AddMetric("fake-metric", Event::MetricType::kHmac,
-                       base::Value(kHmacValue));
-
-  auto event_base = EventBase::FromEvent(test_event);
-  ASSERT_FALSE(event_base.has_value());
-}
-
-TEST(EventBaseTest, FromEventWithInvalidEventNameIsEmpty) {
-  const std::string kHmacValue = "hmac-value";
-
-  Event test_event(kProjectOneName, "fake-event-name");
-  test_event.AddMetric(kMetricOneName, Event::MetricType::kHmac,
-                       base::Value(kHmacValue));
-
-  auto event_base = EventBase::FromEvent(test_event);
-  ASSERT_FALSE(event_base.has_value());
-}
-
-TEST(EventBaseTest, FromEventWithInvalidMetricTypeIsEmpty) {
-  const double kDoubleValue = 123.45;
-
-  Event test_event(kProjectOneName, kEventOneName);
-  // Metric should be of type kHmac.
-  test_event.AddMetric(kMetricOneName, Event::MetricType::kDouble,
-                       base::Value(kDoubleValue));
-
-  auto event_base = EventBase::FromEvent(test_event);
-  ASSERT_FALSE(event_base.has_value());
-}
-
-}  // namespace structured
-}  // namespace metrics
diff --git a/components/metrics/structured/key_data_unittest.cc b/components/metrics/structured/key_data_unittest.cc
index ecf5c615..d3bc377 100644
--- a/components/metrics/structured/key_data_unittest.cc
+++ b/components/metrics/structured/key_data_unittest.cc
@@ -20,7 +20,6 @@
 #include "base/test/scoped_mock_clock_override.h"
 #include "base/test/task_environment.h"
 #include "base/values.h"
-#include "components/metrics/structured/event_base.h"
 #include "components/metrics/structured/histogram_util.h"
 #include "components/metrics/structured/recorder.h"
 #include "components/metrics/structured/storage.pb.h"
diff --git a/components/metrics/structured/neutrino_logging.cc b/components/metrics/structured/neutrino_logging.cc
index f00a23e..1dd235e 100644
--- a/components/metrics/structured/neutrino_logging.cc
+++ b/components/metrics/structured/neutrino_logging.cc
@@ -5,7 +5,7 @@
 #include "components/metrics/structured/neutrino_logging.h"
 
 #include "base/time/time.h"
-#include "components/metrics/structured/event_base.h"
+#include "components/metrics/structured/recorder.h"
 #include "components/metrics/structured/structured_events.h"
 
 namespace {
@@ -67,14 +67,14 @@
     int64_t metrics_reporting_enabled_timestamp,
     NeutrinoDevicesLocation location) {
   events::v2::neutrino_devices::ClientIdChanged client_id_changed;
-  auto event_base = EventBase::FromEvent(client_id_changed);
 
   if (!initial_client_id.empty())
     client_id_changed.SetInitialClientId(initial_client_id);
   if (!client_id.empty())
     client_id_changed.SetFinalClientId(client_id);
 
-  const absl::optional<int> last_key_rotation = event_base->LastKeyRotation();
+  const absl::optional<int> last_key_rotation =
+      Recorder::GetInstance()->LastKeyRotation(client_id_changed);
 
   if (last_key_rotation.has_value()) {
     int days_since_rotation =
diff --git a/components/metrics/structured/recorder.cc b/components/metrics/structured/recorder.cc
index b16170b..665a6c7 100644
--- a/components/metrics/structured/recorder.cc
+++ b/components/metrics/structured/recorder.cc
@@ -6,13 +6,11 @@
 
 #include <utility>
 
-#include "base/bind.h"
-#include "base/feature_list.h"
 #include "base/no_destructor.h"
 #include "base/task/current_thread.h"
-#include "components/metrics/structured/event_base.h"
 #include "components/metrics/structured/histogram_util.h"
 #include "components/metrics/structured/structured_metrics_features.h"
+#include "components/metrics/structured/structured_metrics_validator.h"
 
 namespace metrics {
 namespace structured {
@@ -25,7 +23,7 @@
   return recorder.get();
 }
 
-void Recorder::Record(EventBase&& event) {
+void Recorder::RecordEvent(Event&& event) {
   // All calls to StructuredMetricsProvider (the observer) must be on the UI
   // sequence, so re-call Record if needed. If a UI task runner hasn't been set
   // yet, ignore this Record.
@@ -36,14 +34,17 @@
 
   if (!ui_task_runner_->RunsTasksInCurrentSequence()) {
     ui_task_runner_->PostTask(
-        FROM_HERE,
-        base::BindOnce(&Recorder::Record, base::Unretained(this), event));
+        FROM_HERE, base::BindOnce(&Recorder::RecordEvent,
+                                  base::Unretained(this), std::move(event)));
     return;
   }
 
   DCHECK(base::CurrentUIThread::IsSet());
+
+  // Make a copy of an event that all observers can share.
+  const auto event_clone = event.Clone();
   for (auto& observer : observers_)
-    observer.OnRecord(event);
+    observer.OnEventRecord(event_clone);
 
   if (observers_.empty()) {
     // Other values of EventRecordingState are recorded in
@@ -62,7 +63,13 @@
     observer.OnProfileAdded(profile_path);
 }
 
-absl::optional<int> Recorder::LastKeyRotation(uint64_t project_name_hash) {
+absl::optional<int> Recorder::LastKeyRotation(const Event& event) {
+  auto project_validator = validator::GetProjectValidator(event.project_name());
+  if (!project_validator.has_value())
+    return absl::nullopt;
+
+  auto project_name_hash = project_validator.value()->project_hash();
+
   absl::optional<int> result;
   // |observers_| will contain at most one observer, despite being an
   // ObserverList.
diff --git a/components/metrics/structured/recorder.h b/components/metrics/structured/recorder.h
index c65581b..7e484b7 100644
--- a/components/metrics/structured/recorder.h
+++ b/components/metrics/structured/recorder.h
@@ -11,7 +11,7 @@
 #include "base/observer_list.h"
 #include "base/observer_list_types.h"
 #include "base/task/sequenced_task_runner.h"
-#include "components/metrics/structured/event_base.h"
+#include "components/metrics/structured/event.h"
 #include "components/metrics/structured/structured_metrics_client.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
 
@@ -43,7 +43,7 @@
   class RecorderImpl : public base::CheckedObserver {
    public:
     // Called on a call to Record.
-    virtual void OnRecord(const EventBase& event) = 0;
+    virtual void OnEventRecord(const Event& event) = 0;
     // Called on a call to ProfileAdded.
     virtual void OnProfileAdded(const base::FilePath& profile_path) = 0;
     // Called on a call to OnReportingStateChanged.
@@ -61,7 +61,7 @@
 
   // This signals to StructuredMetricsProvider that the event should be
   // recorded.
-  void Record(EventBase&& event);
+  void RecordEvent(Event&& event);
 
   // Notifies the StructuredMetricsProvider that a profile has been added with
   // path |profile_path|. The first call to ProfileAdded initializes the
@@ -72,9 +72,9 @@
   // investigate whether initialization can be simplified for Chrome.
   void ProfileAdded(const base::FilePath& profile_path);
 
-  // Returns when the key for |project_name_hash| was last rotated, in days
-  // since epoch. Returns nullopt if the information is not available.
-  absl::optional<int> LastKeyRotation(uint64_t project_name_hash);
+  // Returns when the key for |event| was last rotated, in days since epoch.
+  // Returns nullopt if the information is not available.
+  absl::optional<int> LastKeyRotation(const Event& event);
 
   // Notifies observers that metrics reporting has been enabled or disabled.
   void OnReportingStateChanged(bool enabled);
diff --git a/components/metrics/structured/structured_metrics_provider.cc b/components/metrics/structured/structured_metrics_provider.cc
index 04a66770..a3634890 100644
--- a/components/metrics/structured/structured_metrics_provider.cc
+++ b/components/metrics/structured/structured_metrics_provider.cc
@@ -15,6 +15,7 @@
 #include "components/metrics/structured/histogram_util.h"
 #include "components/metrics/structured/storage.pb.h"
 #include "components/metrics/structured/structured_metrics_features.h"
+#include "components/metrics/structured/structured_metrics_validator.h"
 #include "third_party/metrics_proto/chrome_user_metrics_extension.pb.h"
 
 namespace metrics {
@@ -125,7 +126,6 @@
   events_->Purge();
   profile_key_data_->Purge();
   device_key_data_->Purge();
-  unhashed_events_.clear();
 }
 
 void StructuredMetricsProvider::OnProfileAdded(
@@ -178,7 +178,7 @@
   }
 }
 
-void StructuredMetricsProvider::OnRecord(const EventBase& event) {
+void StructuredMetricsProvider::OnEventRecord(const Event& event) {
   DCHECK(base::CurrentUIThread::IsSet());
 
   // One more state for the EventRecordingState exists: kMetricsProviderMissing.
@@ -200,7 +200,7 @@
   DCHECK(profile_key_data_->is_initialized());
   DCHECK(device_key_data_->is_initialized());
 
-  RecordEventFromEventBase(event);
+  RecordEvent(event);
 
   events_->QueueWrite();
 }
@@ -381,18 +381,30 @@
 }
 
 void StructuredMetricsProvider::RecordEventBeforeInitialization(
-    const EventBase& event) {
-  DCHECK(init_state_ != InitState::kInitialized);
-  unhashed_events_.emplace_back(event);
+    const Event& event) {
+  DCHECK_NE(init_state_, InitState::kInitialized);
+  unhashed_events_.emplace_back(event.Clone());
 }
 
-void StructuredMetricsProvider::RecordEventFromEventBase(
-    const EventBase& event) {
-  // TODO(crbug.com/1148168): We are transitioning to new upload behaviour for
-  // non-client_id-identified metrics. See structured_metrics_features.h for
-  // more information. If IsIndependentMetricsUploadEnabled below returns false,
-  // this reverts to the old behaviour. The call can be removed once we are
-  // confident with the change.
+void StructuredMetricsProvider::RecordEvent(const Event& event) {
+  // Validates the event. If valid, retrieve the metadata associated
+  // with the event.
+  auto maybe_project_validator =
+      validator::GetProjectValidator(event.project_name());
+
+  DCHECK(maybe_project_validator.has_value());
+  if (!maybe_project_validator.has_value()) {
+    return;
+  }
+  const auto* project_validator = maybe_project_validator.value();
+
+  const auto maybe_event_validator =
+      project_validator->GetEventValidator(event.event_name());
+  DCHECK(maybe_event_validator.has_value());
+  if (!maybe_event_validator.has_value()) {
+    return;
+  }
+  const auto* event_validator = maybe_event_validator.value();
 
   // The |events_| persistent proto contains two repeated fields, uma_events
   // and non_uma_events. uma_events is added to the ChromeUserMetricsExtension
@@ -405,16 +417,18 @@
   // kUmaId events should go in the UMA upload, and all others in the non-UMA
   // upload.
   StructuredEventProto* event_proto;
-  if (event.id_type() == IdType::kUmaId ||
+  if (project_validator->id_type() == IdType::kUmaId ||
       !IsIndependentMetricsUploadEnabled()) {
     event_proto = events_.get()->get()->add_uma_events();
   } else {
     event_proto = events_.get()->get()->add_non_uma_events();
   }
 
+  event_proto->set_project_name_hash(project_validator->project_hash());
+
   // Choose which KeyData to use for this event.
   KeyData* key_data;
-  switch (event.id_scope()) {
+  switch (project_validator->id_scope()) {
     case IdScope::kPerProfile:
       key_data = profile_key_data_.get();
       break;
@@ -427,10 +441,11 @@
   }
 
   // Set the ID for this event, if any.
-  switch (event.id_type()) {
+  switch (project_validator->id_type()) {
     case IdType::kProjectId:
       event_proto->set_profile_event_id(
-          key_data->Id(event.project_name_hash(), event.key_rotation_period()));
+          key_data->Id(project_validator->project_hash(),
+                       project_validator->key_rotation_period()));
       break;
     case IdType::kUmaId:
       // TODO(crbug.com/1148168): Unimplemented.
@@ -446,36 +461,61 @@
 
   // Set the event type. Do this with a switch statement to catch when the event
   // type is UNKNOWN or uninitialized.
-  switch (event.event_type()) {
+  switch (project_validator->event_type()) {
     case StructuredEventProto_EventType_REGULAR:
     case StructuredEventProto_EventType_RAW_STRING:
-      event_proto->set_event_type(event.event_type());
+      event_proto->set_event_type(project_validator->event_type());
       break;
     default:
       NOTREACHED();
       break;
   }
 
-  // Set the event name hash and project name hash
-  event_proto->set_event_name_hash(event.name_hash());
-  event_proto->set_project_name_hash(event.project_name_hash());
+  event_proto->set_event_name_hash(event_validator->event_hash());
 
   // Set each metric's name hash and value.
-  for (const auto& metric : event.metrics()) {
-    StructuredEventProto::Metric* metric_proto = event_proto->add_metrics();
-    metric_proto->set_name_hash(metric.name_hash);
+  for (const auto& metric : event.metric_values()) {
+    const std::string& metric_name = metric.first;
+    const Event::MetricValue& metric_value = metric.second;
 
-    switch (metric.type) {
-      case EventBase::MetricType::kHmac:
+    // Validate that both name and metric type are valid structured metrics. If
+    // a metric is invalid, then ignore the metric so that other valid metrics
+    // are added to the proto.
+    absl::optional<EventValidator::MetricMetadata> metadata =
+        event_validator->GetMetricMetadata(metric_name);
+
+    // Checks that the metrics defined are valid. If not valid, then the metric
+    // will be ignored.
+    bool is_valid =
+        metadata.has_value() && metadata->metric_type == metric_value.type;
+    DCHECK(is_valid);
+    if (!is_valid) {
+      continue;
+    }
+
+    StructuredEventProto::Metric* metric_proto = event_proto->add_metrics();
+    int64_t metric_name_hash = metadata->metric_name_hash;
+    metric_proto->set_name_hash(metric_name_hash);
+
+    const auto& value = metric_value.value;
+    switch (metadata->metric_type) {
+      case Event::MetricType::kHmac:
         metric_proto->set_value_hmac(key_data->HmacMetric(
-            event.project_name_hash(), metric.name_hash, metric.hmac_value,
-            event.key_rotation_period()));
+            project_validator->project_hash(), metric_name_hash,
+            value.GetString(), project_validator->key_rotation_period()));
         break;
-      case EventBase::MetricType::kInt:
-        metric_proto->set_value_int64(metric.int_value);
+      case Event::MetricType::kLong:
+        int64_t long_value;
+        base::StringToInt64(value.GetString(), &long_value);
+        metric_proto->set_value_int64(long_value);
         break;
-      case EventBase::MetricType::kRawString:
-        metric_proto->set_value_string(metric.string_value);
+      case Event::MetricType::kRawString:
+        metric_proto->set_value_string(value.GetString());
+        break;
+      // Not supported yet.
+      case Event::MetricType::kInt:
+      case Event::MetricType::kDouble:
+      case Event::MetricType::kBoolean:
         break;
     }
   }
@@ -484,10 +524,10 @@
 void StructuredMetricsProvider::HashUnhashedEventsAndPersist() {
   LogNumEventsRecordedBeforeInit(unhashed_events_.size());
 
-  for (const EventBase& event : unhashed_events_) {
-    RecordEventFromEventBase(event);
+  while (!unhashed_events_.empty()) {
+    RecordEvent(unhashed_events_.front());
+    unhashed_events_.pop_front();
   }
-  unhashed_events_.clear();
 }
 
 }  // namespace structured
diff --git a/components/metrics/structured/structured_metrics_provider.h b/components/metrics/structured/structured_metrics_provider.h
index 3bcdbcc6..3702359 100644
--- a/components/metrics/structured/structured_metrics_provider.h
+++ b/components/metrics/structured/structured_metrics_provider.h
@@ -5,17 +5,16 @@
 #ifndef COMPONENTS_METRICS_STRUCTURED_STRUCTURED_METRICS_PROVIDER_H_
 #define COMPONENTS_METRICS_STRUCTURED_STRUCTURED_METRICS_PROVIDER_H_
 
+#include <deque>
 #include <memory>
 
 #include "base/files/file_path.h"
-#include "base/memory/scoped_refptr.h"
 #include "base/memory/weak_ptr.h"
 #include "base/time/time.h"
 #include "components/metrics/metrics_provider.h"
-#include "components/metrics/structured/event_base.h"
+#include "components/metrics/structured/event.h"
 #include "components/metrics/structured/key_data.h"
 #include "components/metrics/structured/recorder.h"
-#include "third_party/abseil-cpp/absl/types/optional.h"
 
 namespace metrics {
 namespace structured {
@@ -49,7 +48,7 @@
 //
 // After initialization, this class accepts events to record from
 // StructuredMetricsProvider::OnRecord via Recorder::Record via
-// EventBase::Record. These events are not uploaded immediately, and are cached
+// Event::Record. These events are not uploaded immediately, and are cached
 // in ready-to-upload form.
 //
 // On a call to ProvideCurrentSessionData, the cache of unsent logs is added to
@@ -88,7 +87,7 @@
 
   // Recorder::RecorderImpl:
   void OnProfileAdded(const base::FilePath& profile_path) override;
-  void OnRecord(const EventBase& event) override;
+  void OnEventRecord(const Event& event) override;
   void OnReportingStateChanged(bool enabled) override;
   void OnSystemProfileInitialized() override;
   absl::optional<int> LastKeyRotation(uint64_t project_name_hash) override;
@@ -108,10 +107,10 @@
   void SetDeviceKeyDataPathForTest(const base::FilePath& path);
 
   // Records events before |init_state_| is kInitialized.
-  void RecordEventBeforeInitialization(const EventBase& event);
+  void RecordEventBeforeInitialization(const Event& event);
 
-  // Hashes data from |event| to be persisted to disk and eventually sent.
-  void RecordEventFromEventBase(const EventBase& event);
+  // Records |event| to persistent disk to be eventually sent.
+  void RecordEvent(const Event& event);
 
   // Hashes events and persists the events to disk. Should be called once |this|
   // has been initialized.
@@ -183,7 +182,7 @@
   std::unique_ptr<PersistentProto<EventsProto>> events_;
 
   // Store for events that were recorded before user/device keys are loaded.
-  std::vector<EventBase> unhashed_events_;
+  std::deque<Event> unhashed_events_;
 
   // Storage for all event's keys, and hashing logic for values. This stores
   // keys on disk. |profile_key_data_| stores keys for per-profile projects,
diff --git a/components/metrics/structured/structured_metrics_provider_unittest.cc b/components/metrics/structured/structured_metrics_provider_unittest.cc
index 134b2077..298d63a 100644
--- a/components/metrics/structured/structured_metrics_provider_unittest.cc
+++ b/components/metrics/structured/structured_metrics_provider_unittest.cc
@@ -6,21 +6,14 @@
 
 #include "base/files/file_path.h"
 #include "base/files/file_util.h"
-#include "base/files/important_file_writer.h"
 #include "base/files/scoped_temp_dir.h"
-#include "base/json/json_reader.h"
-#include "base/logging.h"
-#include "base/run_loop.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/test/bind.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/scoped_feature_list.h"
-#include "base/test/scoped_mock_clock_override.h"
 #include "base/test/task_environment.h"
 #include "base/threading/scoped_blocking_call.h"
-#include "base/values.h"
 #include "components/metrics/structured/event.h"
-#include "components/metrics/structured/event_base.h"
 #include "components/metrics/structured/recorder.h"
 #include "components/metrics/structured/storage.pb.h"
 #include "components/metrics/structured/structured_events.h"
@@ -111,9 +104,7 @@
   ~TestRecorder() override = default;
 
   void RecordEvent(Event&& event) override {
-    auto event_base = EventBase::FromEvent(std::move(event));
-    if (event_base.has_value())
-      Recorder::GetInstance()->Record(std::move(event_base.value()));
+    Recorder::GetInstance()->RecordEvent(std::move(event));
   }
 
   bool IsReadyToRecord() const override { return true; }
@@ -974,13 +965,13 @@
   Init();
 
   events::v2::test_project_one::TestEventOne event;
-  auto event_base = EventBase::FromEvent(event);
 
   // Record a metric so that the key is created.
   event.Record();
 
   const int today = (base::Time::Now() - base::Time::UnixEpoch()).InDays();
-  const absl::optional<int> last_rotation = event_base->LastKeyRotation();
+  const absl::optional<int> last_rotation =
+      Recorder::GetInstance()->LastKeyRotation(event);
 
   // The last rotation should be a random day between today and 90 days in the
   // past, ie. the rotation period for this project.
diff --git a/components/mirroring/service/remoting_sender.cc b/components/mirroring/service/remoting_sender.cc
index 6c8e32d..a6a725e 100644
--- a/components/mirroring/service/remoting_sender.cc
+++ b/components/mirroring/service/remoting_sender.cc
@@ -12,8 +12,10 @@
 #include "base/threading/thread_task_runner_handle.h"
 #include "base/time/default_tick_clock.h"
 #include "base/time/time.h"
+#include "base/trace_event/trace_event.h"
 #include "media/base/media_switches.h"
 #include "media/cast/common/openscreen_conversion_helpers.h"
+#include "media/cast/common/rtp_time.h"
 #include "media/cast/common/sender_encoded_frame.h"
 #include "media/cast/constants.h"
 #include "media/cast/sender/openscreen_frame_sender.h"
@@ -196,16 +198,24 @@
 
   // Ensure each successive frame's RTP timestamp is unique, but otherwise just
   // base it on the reference time.
-  remoting_frame->rtp_timestamp =
+  const media::cast::RtpTimeTicks rtp_timestamp =
       last_frame_rtp_timestamp +
       std::max(media::cast::RtpTimeDelta::FromTicks(1),
                ToRtpTimeDelta(
                    remoting_frame->reference_time - last_frame_reference_time,
                    media::cast::kRemotingRtpTimebase));
+  remoting_frame->rtp_timestamp = rtp_timestamp;
   remoting_frame->data.swap(next_frame_data_);
 
-  frame_sender_->EnqueueFrame(std::move(remoting_frame));
-  next_frame_id_++;
+  if (frame_sender_->EnqueueFrame(std::move(remoting_frame))) {
+    // Only increment if we successfully enqueued.
+    next_frame_id_++;
+  } else {
+    TRACE_EVENT_INSTANT2("cast.stream", "Remoting Frame Drop",
+                         TRACE_EVENT_SCOPE_THREAD, "rtp_timestamp",
+                         rtp_timestamp.lower_32_bits(), "reason",
+                         "openscreen sender did not accept the frame");
+  }
   OnInputTaskComplete();
 }
 
diff --git a/components/omnibox/browser/BUILD.gn b/components/omnibox/browser/BUILD.gn
index 0f35f84..2d08dc3 100644
--- a/components/omnibox/browser/BUILD.gn
+++ b/components/omnibox/browser/BUILD.gn
@@ -446,6 +446,7 @@
       "//components/query_tiles:query_tile_java",
       "//components/security_state/core:security_state_enums_java",
       "//content/public/android:content_java",
+      "//third_party/android_deps:protobuf_lite_runtime_java",
       "//third_party/androidx:androidx_annotation_annotation_java",
       "//third_party/androidx:androidx_collection_collection_java",
       "//third_party/androidx:androidx_core_core_java",
@@ -453,6 +454,8 @@
       "//url:gurl_java",
     ]
 
+    public_deps = [ "//third_party/omnibox_proto:omnibox_proto_java" ]
+
     srcjar_deps = [ ":browser_java_enums_srcjar" ]
     annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
   }
diff --git a/components/omnibox/browser/android/java/src/org/chromium/components/omnibox/AutocompleteMatch.java b/components/omnibox/browser/android/java/src/org/chromium/components/omnibox/AutocompleteMatch.java
index c2f034e..2950b43 100644
--- a/components/omnibox/browser/android/java/src/org/chromium/components/omnibox/AutocompleteMatch.java
+++ b/components/omnibox/browser/android/java/src/org/chromium/components/omnibox/AutocompleteMatch.java
@@ -15,6 +15,7 @@
 import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.browser.omnibox.MatchClassificationStyle;
 import org.chromium.chrome.browser.omnibox.OmniboxSuggestionType;
+import org.chromium.components.omnibox.GroupsProto.GroupId;
 import org.chromium.components.omnibox.action.OmniboxPedal;
 import org.chromium.components.query_tiles.QueryTile;
 import org.chromium.url.GURL;
@@ -29,7 +30,7 @@
  * Container class with information about each omnibox suggestion item.
  */
 public class AutocompleteMatch {
-    public static final int INVALID_GROUP = -1;
+    public static final int INVALID_GROUP = GroupId.GROUP_INVALID_VALUE;
     public static final int INVALID_TYPE = -1;
 
     /**
diff --git a/components/omnibox/browser/android/java/src/org/chromium/components/omnibox/AutocompleteResult.java b/components/omnibox/browser/android/java/src/org/chromium/components/omnibox/AutocompleteResult.java
index 60bed76..99711d2b 100644
--- a/components/omnibox/browser/android/java/src/org/chromium/components/omnibox/AutocompleteResult.java
+++ b/components/omnibox/browser/android/java/src/org/chromium/components/omnibox/AutocompleteResult.java
@@ -4,7 +4,6 @@
 
 package org.chromium.components.omnibox;
 
-import android.text.TextUtils;
 import android.util.SparseArray;
 
 import androidx.annotation.IntDef;
@@ -13,9 +12,13 @@
 import androidx.annotation.VisibleForTesting;
 import androidx.core.util.ObjectsCompat;
 
+import com.google.protobuf.InvalidProtocolBufferException;
+
 import org.chromium.base.annotations.CalledByNative;
 import org.chromium.base.annotations.NativeMethods;
 import org.chromium.build.annotations.MockedInTests;
+import org.chromium.components.omnibox.GroupsProto.GroupConfig;
+import org.chromium.components.omnibox.GroupsProto.GroupsInfo;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
@@ -28,36 +31,6 @@
  */
 @MockedInTests
 public class AutocompleteResult {
-    /** Describes details of the Suggestions group. */
-    public static class GroupDetails {
-        // Title of the group, that will be shown to the user.
-        public final String title;
-        // Default/recommended group collapsed state.
-        public final boolean collapsedByDefault;
-
-        public GroupDetails(String title, boolean collapsedByDefault) {
-            this.title = title;
-            this.collapsedByDefault = collapsedByDefault;
-        }
-
-        @Override
-        public int hashCode() {
-            int hash = title != null ? title.hashCode() : 0;
-            hash ^= (collapsedByDefault ? 0x3ff : 0);
-            return hash;
-        }
-
-        @Override
-        public boolean equals(Object otherObj) {
-            if (otherObj == this) return true;
-            if (!(otherObj instanceof GroupDetails)) return false;
-
-            GroupDetails other = (GroupDetails) otherObj;
-            return (collapsedByDefault == other.collapsedByDefault)
-                    && TextUtils.equals(title, other.title);
-        }
-    };
-
     @IntDef({VerificationPoint.INVALID, VerificationPoint.SELECT_MATCH,
             VerificationPoint.UPDATE_MATCH, VerificationPoint.DELETE_MATCH,
             VerificationPoint.GROUP_BY_SEARCH_VS_URL_BEFORE,
@@ -77,8 +50,10 @@
             new AutocompleteResult(0, Collections.emptyList(), null);
     /** A special value indicating that action has no particular index associated. */
     public static final int NO_SUGGESTION_INDEX = -1;
+    /** Initial capacity of the mGroupsDetails SparseArray. */
+    private static final int GROUPS_DETAILS_INIT_CAPACITY = 5;
 
-    private final @NonNull SparseArray<GroupDetails> mGroupsDetails;
+    private final @NonNull SparseArray<GroupConfig> mGroupsDetails;
     private final @NonNull List<AutocompleteMatch> mSuggestions;
     private final boolean mIsFromCachedResult;
     private long mNativeAutocompleteResult;
@@ -94,7 +69,7 @@
      */
     @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
     AutocompleteResult(long nativeResult, @Nullable List<AutocompleteMatch> suggestions,
-            @Nullable SparseArray<GroupDetails> groupsDetails) {
+            @Nullable SparseArray<GroupConfig> groupsDetails) {
         // Consider all locally constructed AutocompleteResult objects as coming from Cache.
         // These results do not have a native counterpart, meaning there's no corresponding C++
         // structure describing the same AutocompleteResult.
@@ -118,7 +93,7 @@
      * @return AutocompleteResult object encompassing supplied information.
      */
     public static AutocompleteResult fromCache(@Nullable List<AutocompleteMatch> suggestions,
-            @Nullable SparseArray<GroupDetails> groupsDetails) {
+            @Nullable SparseArray<GroupConfig> groupsDetails) {
         return new AutocompleteResult(0, suggestions, groupsDetails);
     }
 
@@ -141,15 +116,16 @@
     @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
     @CalledByNative
     static AutocompleteResult fromNative(long nativeAutocompleteResult,
-            @NonNull AutocompleteMatch[] suggestions, @NonNull int[] groupIds,
-            @NonNull String[] groupNames, @NonNull boolean[] groupCollapsedStates) {
-        assert groupIds.length == groupNames.length;
-        assert groupIds.length == groupCollapsedStates.length;
+            @NonNull AutocompleteMatch[] suggestions, @NonNull byte[] groupDefinitions) {
+        var groupsDetails = new SparseArray<GroupConfig>(GROUPS_DETAILS_INIT_CAPACITY);
 
-        SparseArray<GroupDetails> groupsDetails = new SparseArray<>(groupIds.length);
-        for (int index = 0; index < groupIds.length; index++) {
-            groupsDetails.put(groupIds[index],
-                    new GroupDetails(groupNames[index], groupCollapsedStates[index]));
+        try {
+            var groupsInfo = GroupsInfo.parseFrom(groupDefinitions);
+            var groupsMap = groupsInfo.getGroupConfigsMap();
+            for (var entry : groupsMap.entrySet()) {
+                groupsDetails.put(entry.getKey(), entry.getValue());
+            }
+        } catch (InvalidProtocolBufferException e) {
         }
 
         AutocompleteResult result =
@@ -179,10 +155,10 @@
     }
 
     /**
-     * @return Map of Group ID to GroupDetails objects.
+     * @return Map of Group ID to GroupConfig objects.
      */
     @NonNull
-    public SparseArray<GroupDetails> getGroupsDetails() {
+    public SparseArray<GroupConfig> getGroupsDetails() {
         return mGroupsDetails;
     }
 
@@ -224,7 +200,7 @@
         AutocompleteResult other = (AutocompleteResult) otherObj;
         if (!mSuggestions.equals(other.mSuggestions)) return false;
 
-        final SparseArray<GroupDetails> otherGroupsDetails = other.mGroupsDetails;
+        final SparseArray<GroupConfig> otherGroupsDetails = other.mGroupsDetails;
         if (mGroupsDetails.size() != otherGroupsDetails.size()) return false;
         for (int index = 0; index < mGroupsDetails.size(); index++) {
             if (mGroupsDetails.keyAt(index) != otherGroupsDetails.keyAt(index)) return false;
diff --git a/components/omnibox/browser/android/java/src/org/chromium/components/omnibox/AutocompleteResultUnitTest.java b/components/omnibox/browser/android/java/src/org/chromium/components/omnibox/AutocompleteResultUnitTest.java
index eef71bf..4e65e141 100644
--- a/components/omnibox/browser/android/java/src/org/chromium/components/omnibox/AutocompleteResultUnitTest.java
+++ b/components/omnibox/browser/android/java/src/org/chromium/components/omnibox/AutocompleteResultUnitTest.java
@@ -13,7 +13,7 @@
 
 import org.chromium.base.test.BaseRobolectricTestRunner;
 import org.chromium.chrome.browser.omnibox.OmniboxSuggestionType;
-import org.chromium.components.omnibox.AutocompleteResult.GroupDetails;
+import org.chromium.components.omnibox.GroupsProto.GroupConfig;
 import org.chromium.url.ShadowGURL;
 
 import java.util.ArrayList;
@@ -33,6 +33,14 @@
                 .build();
     }
 
+    private GroupConfig buildGroupConfig(String headerText, boolean isHidden) {
+        return GroupConfig.newBuilder()
+                .setHeaderText(headerText)
+                .setVisibility(isHidden ? GroupConfig.Visibility.HIDDEN
+                                        : GroupConfig.Visibility.DEFAULT_VISIBLE)
+                .build();
+    }
+
     @Test
     public void autocompleteResult_sameContentsAreEqual() {
         List<AutocompleteMatch> list1 = Arrays.asList(
@@ -51,14 +59,14 @@
         list1.get(2).getSubtypes().add(4);
         list2.get(2).getSubtypes().add(4);
 
-        SparseArray<GroupDetails> groupsDetails1 = new SparseArray<>();
-        SparseArray<GroupDetails> groupsDetails2 = new SparseArray<>();
+        SparseArray<GroupConfig> groupsDetails1 = new SparseArray<>();
+        SparseArray<GroupConfig> groupsDetails2 = new SparseArray<>();
 
-        groupsDetails1.put(10, new GroupDetails("Hello", false));
-        groupsDetails1.put(20, new GroupDetails("Test", true));
+        groupsDetails1.put(10, buildGroupConfig("Hello", false));
+        groupsDetails1.put(20, buildGroupConfig("Test", true));
 
-        groupsDetails2.put(10, new GroupDetails("Hello", false));
-        groupsDetails2.put(20, new GroupDetails("Test", true));
+        groupsDetails2.put(10, buildGroupConfig("Hello", false));
+        groupsDetails2.put(20, buildGroupConfig("Test", true));
 
         AutocompleteResult res1 = AutocompleteResult.fromCache(list1, groupsDetails1);
         AutocompleteResult res2 = AutocompleteResult.fromCache(list2, groupsDetails2);
@@ -74,14 +82,14 @@
         List<AutocompleteMatch> list2 = Arrays.asList(
                 buildSuggestionForIndex(2), buildSuggestionForIndex(1), buildSuggestionForIndex(3));
 
-        SparseArray<GroupDetails> groupsDetails1 = new SparseArray<>();
-        SparseArray<GroupDetails> groupsDetails2 = new SparseArray<>();
+        SparseArray<GroupConfig> groupsDetails1 = new SparseArray<>();
+        SparseArray<GroupConfig> groupsDetails2 = new SparseArray<>();
 
-        groupsDetails1.put(10, new GroupDetails("Hello", false));
-        groupsDetails1.put(20, new GroupDetails("Test", true));
+        groupsDetails1.put(10, buildGroupConfig("Hello", false));
+        groupsDetails1.put(20, buildGroupConfig("Test", true));
 
-        groupsDetails2.put(10, new GroupDetails("Hello", false));
-        groupsDetails2.put(20, new GroupDetails("Test", true));
+        groupsDetails2.put(10, buildGroupConfig("Hello", false));
+        groupsDetails2.put(20, buildGroupConfig("Test", true));
 
         AutocompleteResult res1 = AutocompleteResult.fromCache(list1, groupsDetails1);
         AutocompleteResult res2 = AutocompleteResult.fromCache(list2, groupsDetails2);
@@ -97,13 +105,13 @@
         List<AutocompleteMatch> list2 = Arrays.asList(
                 buildSuggestionForIndex(1), buildSuggestionForIndex(2), buildSuggestionForIndex(3));
 
-        SparseArray<GroupDetails> groupsDetails1 = new SparseArray<>();
-        SparseArray<GroupDetails> groupsDetails2 = new SparseArray<>();
+        SparseArray<GroupConfig> groupsDetails1 = new SparseArray<>();
+        SparseArray<GroupConfig> groupsDetails2 = new SparseArray<>();
 
-        groupsDetails1.put(10, new GroupDetails("Hello", true));
-        groupsDetails1.put(20, new GroupDetails("Test", false));
+        groupsDetails1.put(10, buildGroupConfig("Hello", true));
+        groupsDetails1.put(20, buildGroupConfig("Test", false));
 
-        groupsDetails2.put(10, new GroupDetails("Hello", true));
+        groupsDetails2.put(10, buildGroupConfig("Hello", true));
 
         AutocompleteResult res1 = AutocompleteResult.fromCache(list1, groupsDetails1);
         AutocompleteResult res2 = AutocompleteResult.fromCache(list2, groupsDetails2);
@@ -119,14 +127,14 @@
         List<AutocompleteMatch> list2 = Arrays.asList(
                 buildSuggestionForIndex(1), buildSuggestionForIndex(2), buildSuggestionForIndex(3));
 
-        SparseArray<GroupDetails> groupsDetails1 = new SparseArray<>();
-        SparseArray<GroupDetails> groupsDetails2 = new SparseArray<>();
+        SparseArray<GroupConfig> groupsDetails1 = new SparseArray<>();
+        SparseArray<GroupConfig> groupsDetails2 = new SparseArray<>();
 
-        groupsDetails1.put(10, new GroupDetails("Hello", false));
-        groupsDetails1.put(20, new GroupDetails("Test", true));
+        groupsDetails1.put(10, buildGroupConfig("Hello", false));
+        groupsDetails1.put(20, buildGroupConfig("Test", true));
 
-        groupsDetails2.put(10, new GroupDetails("Hello", false));
-        groupsDetails2.put(20, new GroupDetails("Test", false));
+        groupsDetails2.put(10, buildGroupConfig("Hello", false));
+        groupsDetails2.put(20, buildGroupConfig("Test", false));
 
         AutocompleteResult res1 = AutocompleteResult.fromCache(list1, groupsDetails1);
         AutocompleteResult res2 = AutocompleteResult.fromCache(list2, groupsDetails2);
@@ -142,15 +150,15 @@
         List<AutocompleteMatch> list2 = Arrays.asList(
                 buildSuggestionForIndex(1), buildSuggestionForIndex(2), buildSuggestionForIndex(3));
 
-        SparseArray<GroupDetails> groupsDetails1 = new SparseArray<>();
-        SparseArray<GroupDetails> groupsDetails2 = new SparseArray<>();
+        SparseArray<GroupConfig> groupsDetails1 = new SparseArray<>();
+        SparseArray<GroupConfig> groupsDetails2 = new SparseArray<>();
 
-        groupsDetails1.put(10, new GroupDetails("Hello", false));
-        groupsDetails1.put(20, new GroupDetails("Test", false));
+        groupsDetails1.put(10, buildGroupConfig("Hello", false));
+        groupsDetails1.put(20, buildGroupConfig("Test", false));
 
-        groupsDetails2.put(10, new GroupDetails("Hello", false));
-        groupsDetails2.put(20, new GroupDetails("Test", false));
-        groupsDetails2.put(30, new GroupDetails("Yikes", false));
+        groupsDetails2.put(10, buildGroupConfig("Hello", false));
+        groupsDetails2.put(20, buildGroupConfig("Test", false));
+        groupsDetails2.put(30, buildGroupConfig("Yikes", false));
 
         AutocompleteResult res1 = AutocompleteResult.fromCache(list1, groupsDetails1);
         AutocompleteResult res2 = AutocompleteResult.fromCache(list2, groupsDetails2);
@@ -178,18 +186,18 @@
         List<AutocompleteMatch> list = Arrays.asList(
                 buildSuggestionForIndex(1), buildSuggestionForIndex(2), buildSuggestionForIndex(3));
 
-        SparseArray<GroupDetails> groupsDetails1 = new SparseArray<>();
-        SparseArray<GroupDetails> groupsDetails2 = new SparseArray<>();
-        SparseArray<GroupDetails> groupsDetails3 = new SparseArray<>();
+        SparseArray<GroupConfig> groupsDetails1 = new SparseArray<>();
+        SparseArray<GroupConfig> groupsDetails2 = new SparseArray<>();
+        SparseArray<GroupConfig> groupsDetails3 = new SparseArray<>();
 
-        groupsDetails1.put(10, new GroupDetails("Hello", false));
-        groupsDetails1.put(20, new GroupDetails("Test", false));
+        groupsDetails1.put(10, buildGroupConfig("Hello", false));
+        groupsDetails1.put(20, buildGroupConfig("Test", false));
 
-        groupsDetails2.put(10, new GroupDetails("Hello", false));
-        groupsDetails2.put(15, new GroupDetails("Test", false));
+        groupsDetails2.put(10, buildGroupConfig("Hello", false));
+        groupsDetails2.put(15, buildGroupConfig("Test", false));
 
-        groupsDetails3.put(10, new GroupDetails("Hello", false));
-        groupsDetails3.put(20, new GroupDetails("Test 2", false));
+        groupsDetails3.put(10, buildGroupConfig("Hello", false));
+        groupsDetails3.put(20, buildGroupConfig("Test 2", false));
 
         AutocompleteResult res1 = AutocompleteResult.fromCache(list, groupsDetails1);
         AutocompleteResult res2 = AutocompleteResult.fromCache(list, groupsDetails2);
@@ -287,8 +295,7 @@
         res.notifyNativeDestroyed();
         Assert.assertFalse(res.isFromCachedResult());
 
-        res = AutocompleteResult.fromNative(
-                0xfedcba98, new AutocompleteMatch[0], new int[0], new String[0], new boolean[0]);
+        res = AutocompleteResult.fromNative(0xfedcba98, new AutocompleteMatch[0], new byte[0]);
         Assert.assertFalse(res.isFromCachedResult());
         res.notifyNativeDestroyed();
         Assert.assertFalse(res.isFromCachedResult());
diff --git a/components/omnibox/browser/autocomplete_result_android.cc b/components/omnibox/browser/autocomplete_result_android.cc
index 77f26cef..5fb2ff1 100644
--- a/components/omnibox/browser/autocomplete_result_android.cc
+++ b/components/omnibox/browser/autocomplete_result_android.cc
@@ -24,8 +24,8 @@
 
 using base::android::JavaParamRef;
 using base::android::ScopedJavaLocalRef;
-using base::android::ToJavaArrayOfStrings;
 using base::android::ToJavaBooleanArray;
+using base::android::ToJavaByteArray;
 using base::android::ToJavaIntArray;
 
 namespace {
@@ -94,28 +94,22 @@
   const size_t groups_count = suggestion_groups_map().size();
 
   std::vector<int> group_ids(groups_count);
-  std::vector<std::u16string> group_names(groups_count);
-  bool group_collapsed_states[groups_count];
+  omnibox::GroupsInfo groups_info;
+  std::string serialized_groups_info;
 
-  size_t index = 0;
   for (const auto& suggestion_group : suggestion_groups_map()) {
-    group_ids[index] = suggestion_group.first;
-    group_names[index] =
-        base::UTF8ToUTF16(suggestion_group.second.header_text());
-    group_collapsed_states[index] = suggestion_group.second.visibility() ==
-                                    omnibox::GroupConfig_Visibility_HIDDEN;
-    ++index;
+    (*groups_info.mutable_group_configs())[suggestion_group.first] =
+        suggestion_group.second;
+  }
+  if (!groups_info.SerializeToString(&serialized_groups_info)) {
+    serialized_groups_info.clear();
   }
 
   ScopedJavaLocalRef<jintArray> j_group_ids = ToJavaIntArray(env, group_ids);
-  ScopedJavaLocalRef<jbooleanArray> j_group_collapsed_states =
-      ToJavaBooleanArray(env, group_collapsed_states, groups_count);
-  ScopedJavaLocalRef<jobjectArray> j_group_names =
-      ToJavaArrayOfStrings(env, group_names);
 
   java_result_ = Java_AutocompleteResult_fromNative(
-      env, reinterpret_cast<intptr_t>(this), BuildJavaMatches(env), j_group_ids,
-      j_group_names, j_group_collapsed_states);
+      env, reinterpret_cast<intptr_t>(this), BuildJavaMatches(env),
+      ToJavaByteArray(env, serialized_groups_info));
 
   return ScopedJavaLocalRef<jobject>(java_result_);
 }
diff --git a/components/omnibox/browser/clipboard_provider.cc b/components/omnibox/browser/clipboard_provider.cc
index 2f3e42c..e94a60e 100644
--- a/components/omnibox/browser/clipboard_provider.cc
+++ b/components/omnibox/browser/clipboard_provider.cc
@@ -42,9 +42,9 @@
 
 const size_t kMaxClipboardSuggestionShownNumTimesSimpleSize = 20;
 
-// Clipboard suggestion is placed in a dedicated SECTION_MOBILE_VERBATIM
-// The section is shared with Verbatim Match, and Clipboard should be
-// placed directly below, so its relative relevance score must be lower.
+// Clipboard suggestion is placed in a dedicated SECTION_MOBILE_CLIPBOARD.
+// It is the only occupant of this section, making its relevance score not
+// important.
 const int kClipboardMatchRelevanceScore = 1;
 
 bool IsMatchDeletionEnabled() {
@@ -124,7 +124,7 @@
 // suggestions.
 omnibox::GroupConfig BuildGroupConfig() {
   omnibox::GroupConfig group_config;
-  group_config.set_section(omnibox::SECTION_MOBILE_VERBATIM);
+  group_config.set_section(omnibox::SECTION_MOBILE_CLIPBOARD);
   return group_config;
 }
 }  // namespace
diff --git a/components/omnibox/browser/clipboard_provider_unittest.cc b/components/omnibox/browser/clipboard_provider_unittest.cc
index 1fbaf1b..aaf744b 100644
--- a/components/omnibox/browser/clipboard_provider_unittest.cc
+++ b/components/omnibox/browser/clipboard_provider_unittest.cc
@@ -246,8 +246,7 @@
 
 TEST_F(ClipboardProviderTest, CreateBlankURLMatchOnStart) {
   base::test::ScopedFeatureList feature_list;
-  base::Feature feature = omnibox::kClipboardSuggestionContentHidden;
-  feature_list.InitAndEnableFeature(feature);
+  feature_list.InitAndEnableFeature(omnibox::kClipboardSuggestionContentHidden);
 
   SetClipboardUrl(GURL(kClipboardURL));
   auto template_url_service = std::make_unique<TemplateURLService>(
@@ -266,8 +265,7 @@
 
 TEST_F(ClipboardProviderTest, CreateBlankTextMatchOnStart) {
   base::test::ScopedFeatureList feature_list;
-  base::Feature feature = omnibox::kClipboardSuggestionContentHidden;
-  feature_list.InitAndEnableFeature(feature);
+  feature_list.InitAndEnableFeature(omnibox::kClipboardSuggestionContentHidden);
 
   auto template_url_service = std::make_unique<TemplateURLService>(
       /*initializers=*/nullptr, /*count=*/0);
@@ -287,8 +285,7 @@
 
 TEST_F(ClipboardProviderTest, CreateBlankImageMatchOnStart) {
   base::test::ScopedFeatureList feature_list;
-  base::Feature feature = omnibox::kClipboardSuggestionContentHidden;
-  feature_list.InitAndEnableFeature(feature);
+  feature_list.InitAndEnableFeature(omnibox::kClipboardSuggestionContentHidden);
 
   auto template_url_service =
       std::make_unique<TemplateURLService>(/*initializers=*/nullptr,
@@ -308,8 +305,7 @@
 
 TEST_F(ClipboardProviderTest, SkipImageMatchGivenWantAsynchronousMatchesFalse) {
   base::test::ScopedFeatureList feature_list;
-  base::Feature feature = omnibox::kClipboardSuggestionContentHidden;
-  feature_list.InitAndEnableFeature(feature);
+  feature_list.InitAndEnableFeature(omnibox::kClipboardSuggestionContentHidden);
 
   auto template_url_service =
       std::make_unique<TemplateURLService>(/*initializers=*/nullptr,
diff --git a/components/omnibox/browser/zero_suggest_verbatim_match_provider.cc b/components/omnibox/browser/zero_suggest_verbatim_match_provider.cc
index f34b1f0e..c0bb04fb3 100644
--- a/components/omnibox/browser/zero_suggest_verbatim_match_provider.cc
+++ b/components/omnibox/browser/zero_suggest_verbatim_match_provider.cc
@@ -14,9 +14,9 @@
 #include "components/url_formatter/url_formatter.h"
 
 namespace {
-// Verbatim Match is placed in a dedicated SECTION_MOBILE_VERBATIM
-// This section may be occupied only by Clipboard suggestion on
-// so the relevance score here must outrank this of the Clipboard.
+// Verbatim Match is placed in a dedicated SECTION_MOBILE_VERBATIM.
+// There are no other occupants of this section, making the Relevance score
+// unimportant.
 const int kVerbatimMatchRelevanceScore = 2;
 
 // Returns whether specific context is eligible for a verbatim match.
diff --git a/components/optimization_guide/content/browser/page_content_annotations_service.cc b/components/optimization_guide/content/browser/page_content_annotations_service.cc
index abdd00d2..1a1394b 100644
--- a/components/optimization_guide/content/browser/page_content_annotations_service.cc
+++ b/components/optimization_guide/content/browser/page_content_annotations_service.cc
@@ -17,7 +17,6 @@
 #include "components/optimization_guide/content/browser/page_content_annotations_validator.h"
 #include "components/optimization_guide/core/entity_metadata.h"
 #include "components/optimization_guide/core/local_page_entities_metadata_provider.h"
-#include "components/optimization_guide/core/noisy_metrics_recorder.h"
 #include "components/optimization_guide/core/optimization_guide_enums.h"
 #include "components/optimization_guide/core/optimization_guide_features.h"
 #include "components/optimization_guide/core/optimization_guide_logger.h"
@@ -25,11 +24,6 @@
 #include "components/optimization_guide/core/optimization_guide_switches.h"
 #include "content/public/browser/navigation_entry.h"
 #include "content/public/browser/web_contents.h"
-#include "services/metrics/public/cpp/metrics_utils.h"
-#include "services/metrics/public/cpp/ukm_builders.h"
-#include "services/metrics/public/cpp/ukm_recorder.h"
-#include "services/metrics/public/cpp/ukm_source.h"
-#include "services/metrics/public/cpp/ukm_source_id.h"
 
 #if BUILDFLAG(BUILD_WITH_TFLITE_LIB)
 #include "components/optimization_guide/content/browser/page_content_annotations_model_manager.h"
@@ -74,40 +68,6 @@
       status);
 }
 
-#if BUILDFLAG(BUILD_WITH_TFLITE_LIB)
-// Record the visibility score of the provided visit as a RAPPOR-style record to
-// UKM.
-void MaybeRecordVisibilityUKM(
-    const HistoryVisit& visit,
-    const absl::optional<history::VisitContentModelAnnotations>&
-        content_annotations) {
-  if (!content_annotations)
-    return;
-
-  if (content_annotations->visibility_score < 0)
-    return;
-
-  int64_t score =
-      static_cast<int64_t>(100 * content_annotations->visibility_score);
-  // We want 2^|num_bits| buckets, linearly spaced.
-  uint32_t num_buckets =
-      std::pow(2, optimization_guide::features::NumBitsForRAPPORMetrics());
-  DCHECK_GT(num_buckets, 0u);
-  float bucket_size = 100.0 / num_buckets;
-  uint32_t bucketed_score = static_cast<uint32_t>(floor(score / bucket_size));
-  DCHECK_LE(bucketed_score, num_buckets);
-  uint32_t noisy_score = NoisyMetricsRecorder().GetNoisyMetric(
-      optimization_guide::features::NoiseProbabilityForRAPPORMetrics(),
-      bucketed_score, optimization_guide::features::NumBitsForRAPPORMetrics());
-  ukm::SourceId ukm_source_id = ukm::ConvertToSourceId(
-      visit.navigation_id, ukm::SourceIdType::NAVIGATION_ID);
-
-  ukm::builders::PageContentAnnotations(ukm_source_id)
-      .SetVisibilityScore(static_cast<int64_t>(noisy_score))
-      .Record(ukm::UkmRecorder::Get());
-}
-#endif /* BUILDFLAG(BUILD_WITH_TFLITE_LIB) */
-
 }  // namespace
 
 PageContentAnnotationsService::PageContentAnnotationsService(
@@ -423,8 +383,6 @@
     }
   }
 
-  MaybeRecordVisibilityUKM(visit, content_annotations);
-
   if (!features::ShouldWriteContentAnnotationsToHistoryService())
     return;
 
diff --git a/components/optimization_guide/core/bert_model_executor_unittest.cc b/components/optimization_guide/core/bert_model_executor_unittest.cc
index 9ea7a45..ead9995 100644
--- a/components/optimization_guide/core/bert_model_executor_unittest.cc
+++ b/components/optimization_guide/core/bert_model_executor_unittest.cc
@@ -70,13 +70,8 @@
   std::unique_ptr<BertModelHandler> model_handler_;
 };
 
-// TODO(crbug.com/1337687): Test is timing out on certain platforms.
-#if BUILDFLAG(IS_WIN) && defined(ARCH_CPU_64_BITS)
-#define MAYBE_ValidBertModel DISABLED_ValidBertModel
-#else
-#define MAYBE_ValidBertModel ValidBertModel
-#endif
-TEST_F(BertModelExecutorTest, MAYBE_ValidBertModel) {
+// TODO(crbug.com/1337687): Test is timing out on many platforms.
+TEST_F(BertModelExecutorTest, DISABLED_ValidBertModel) {
   CreateModelHandler();
 
   PushModelFileToModelExecutor(/*is_valid=*/true);
diff --git a/components/password_manager/core/browser/fake_password_store_backend.cc b/components/password_manager/core/browser/fake_password_store_backend.cc
index 4c78f45..afc563b 100644
--- a/components/password_manager/core/browser/fake_password_store_backend.cc
+++ b/components/password_manager/core/browser/fake_password_store_backend.cc
@@ -4,10 +4,14 @@
 
 #include "components/password_manager/core/browser/fake_password_store_backend.h"
 
+#include <utility>
+
+#include "base/functional/bind.h"
+#include "base/functional/callback.h"
+#include "base/memory/scoped_refptr.h"
 #include "base/notreached.h"
 #include "base/ranges/algorithm.h"
 #include "base/task/sequenced_task_runner.h"
-#include "base/threading/sequenced_task_runner_handle.h"
 #include "components/password_manager/core/browser/password_form.h"
 #include "components/password_manager/core/browser/psl_matching_helper.h"
 #include "components/sync/model/proxy_model_type_controller_delegate.h"
@@ -17,17 +21,28 @@
 FakePasswordStoreBackend::FakePasswordStoreBackend() = default;
 
 FakePasswordStoreBackend::FakePasswordStoreBackend(
-    IsAccountStore is_account_store)
-    : FakePasswordStoreBackend(is_account_store, UpdateAlwaysSucceeds(false)) {}
+    IsAccountStore is_account_store,
+    scoped_refptr<base::SequencedTaskRunner> task_runner)
+    : FakePasswordStoreBackend(is_account_store,
+                               UpdateAlwaysSucceeds(false),
+                               std::move(task_runner)) {}
 
 FakePasswordStoreBackend::FakePasswordStoreBackend(
     IsAccountStore is_account_store,
-    UpdateAlwaysSucceeds update_always_succeeds)
+    UpdateAlwaysSucceeds update_always_succeeds,
+    scoped_refptr<base::SequencedTaskRunner> task_runner)
     : is_account_store_(is_account_store),
-      update_always_succeeds_(update_always_succeeds) {}
+      update_always_succeeds_(update_always_succeeds),
+      task_runner_(std::move(task_runner)) {}
 
 FakePasswordStoreBackend::~FakePasswordStoreBackend() = default;
 
+const scoped_refptr<base::SequencedTaskRunner>&
+FakePasswordStoreBackend::GetTaskRunner() const {
+  return task_runner_ ? task_runner_
+                      : base::SequencedTaskRunner::GetCurrentDefault();
+}
+
 void FakePasswordStoreBackend::Clear() {
   stored_passwords_.clear();
 }
@@ -36,19 +51,18 @@
     RemoteChangesReceived remote_form_changes_received,
     base::RepeatingClosure sync_enabled_or_disabled_cb,
     base::OnceCallback<void(bool)> completion) {
-  base::SequencedTaskRunnerHandle::Get()->PostTask(
+  GetTaskRunner()->PostTask(
       FROM_HERE, base::BindOnce(std::move(completion), /*success=*/true));
 }
 
 void FakePasswordStoreBackend::Shutdown(base::OnceClosure shutdown_completed) {
   // Ensure that the shutdown is only completed after any other backend task on
   // the same task runner concluded. The backend always uses the same runner.
-  base::SequencedTaskRunnerHandle::Get()->PostTask(
-      FROM_HERE, std::move(shutdown_completed));
+  GetTaskRunner()->PostTask(FROM_HERE, std::move(shutdown_completed));
 }
 
 void FakePasswordStoreBackend::GetAllLoginsAsync(LoginsOrErrorReply callback) {
-  base::SequencedTaskRunnerHandle::Get()->PostTaskAndReplyWithResult(
+  GetTaskRunner()->PostTaskAndReplyWithResult(
       FROM_HERE,
       base::BindOnce(&FakePasswordStoreBackend::GetAllLoginsInternal,
                      base::Unretained(this)),
@@ -57,7 +71,7 @@
 
 void FakePasswordStoreBackend::GetAutofillableLoginsAsync(
     LoginsOrErrorReply callback) {
-  base::SequencedTaskRunnerHandle::Get()->PostTaskAndReplyWithResult(
+  GetTaskRunner()->PostTaskAndReplyWithResult(
       FROM_HERE,
       base::BindOnce(&FakePasswordStoreBackend::GetAutofillableLoginsInternal,
                      base::Unretained(this)),
@@ -74,7 +88,7 @@
     LoginsOrErrorReply callback,
     bool include_psl,
     const std::vector<PasswordFormDigest>& forms) {
-  base::SequencedTaskRunnerHandle::Get()->PostTaskAndReplyWithResult(
+  GetTaskRunner()->PostTaskAndReplyWithResult(
       FROM_HERE,
       base::BindOnce(&FakePasswordStoreBackend::FillMatchingLoginsInternal,
                      base::Unretained(this), forms, include_psl),
@@ -84,7 +98,7 @@
 void FakePasswordStoreBackend::AddLoginAsync(
     const PasswordForm& form,
     PasswordChangesOrErrorReply callback) {
-  base::SequencedTaskRunnerHandle::Get()->PostTaskAndReplyWithResult(
+  GetTaskRunner()->PostTaskAndReplyWithResult(
       FROM_HERE,
       base::BindOnce(&FakePasswordStoreBackend::AddLoginInternal,
                      base::Unretained(this), form),
@@ -94,7 +108,7 @@
 void FakePasswordStoreBackend::UpdateLoginAsync(
     const PasswordForm& form,
     PasswordChangesOrErrorReply callback) {
-  base::SequencedTaskRunnerHandle::Get()->PostTaskAndReplyWithResult(
+  GetTaskRunner()->PostTaskAndReplyWithResult(
       FROM_HERE,
       base::BindOnce(&FakePasswordStoreBackend::UpdateLoginInternal,
                      base::Unretained(this), form),
@@ -104,7 +118,7 @@
 void FakePasswordStoreBackend::RemoveLoginAsync(
     const PasswordForm& form,
     PasswordChangesOrErrorReply callback) {
-  base::SequencedTaskRunnerHandle::Get()->PostTaskAndReplyWithResult(
+  GetTaskRunner()->PostTaskAndReplyWithResult(
       FROM_HERE,
       base::BindOnce(&FakePasswordStoreBackend::RemoveLoginInternal,
                      base::Unretained(this), form),
@@ -130,7 +144,7 @@
 void FakePasswordStoreBackend::DisableAutoSignInForOriginsAsync(
     const base::RepeatingCallback<bool(const GURL&)>& origin_filter,
     base::OnceClosure completion) {
-  base::SequencedTaskRunnerHandle::Get()->PostTaskAndReply(
+  GetTaskRunner()->PostTaskAndReply(
       FROM_HERE,
       base::BindOnce(
           &FakePasswordStoreBackend::DisableAutoSignInForOriginsInternal,
diff --git a/components/password_manager/core/browser/fake_password_store_backend.h b/components/password_manager/core/browser/fake_password_store_backend.h
index 83b6b8b5..96fde41 100644
--- a/components/password_manager/core/browser/fake_password_store_backend.h
+++ b/components/password_manager/core/browser/fake_password_store_backend.h
@@ -5,11 +5,20 @@
 #ifndef COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_FAKE_PASSWORD_STORE_BACKEND_H_
 #define COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_FAKE_PASSWORD_STORE_BACKEND_H_
 
+#include <map>
 #include <memory>
+#include <utility>
+#include <vector>
 
+#include "base/functional/callback.h"
+#include "base/memory/scoped_refptr.h"
 #include "components/password_manager/core/browser/password_store.h"
 #include "components/password_manager/core/browser/password_store_backend.h"
 
+namespace base {
+class SequencedTaskRunner;
+}  // namespace base
+
 namespace password_manager {
 
 struct PasswordForm;
@@ -31,9 +40,13 @@
   // "upsert" mechanism to create non-existing credentials, use the constructor
   // that allows to pass `UpdateAlwaysSucceeds(true)`.
   FakePasswordStoreBackend();
-  explicit FakePasswordStoreBackend(IsAccountStore is_account_store);
-  FakePasswordStoreBackend(IsAccountStore is_account_store,
-                           UpdateAlwaysSucceeds update_always_succeeds);
+  explicit FakePasswordStoreBackend(
+      IsAccountStore is_account_store,
+      scoped_refptr<base::SequencedTaskRunner> task_runner = nullptr);
+  FakePasswordStoreBackend(
+      IsAccountStore is_account_store,
+      UpdateAlwaysSucceeds update_always_succeeds,
+      scoped_refptr<base::SequencedTaskRunner> task_runner = nullptr);
   ~FakePasswordStoreBackend() override;
 
   void Clear();
@@ -81,6 +94,10 @@
   void ClearAllLocalPasswords() override;
   void OnSyncServiceInitialized(syncer::SyncService* sync_service) override;
 
+  // Returns the task runner. Defaults to
+  // `base::SequencedTaskRunner::GetCurrentDefault` if none is injected.
+  const scoped_refptr<base::SequencedTaskRunner>& GetTaskRunner() const;
+
   LoginsResult GetAllLoginsInternal();
   LoginsResult GetAutofillableLoginsInternal();
   LoginsResult FillMatchingLoginsInternal(
@@ -98,6 +115,7 @@
   const UpdateAlwaysSucceeds update_always_succeeds_{false};
 
   PasswordMap stored_passwords_;
+  scoped_refptr<base::SequencedTaskRunner> task_runner_;
 };
 
 }  // namespace password_manager
diff --git a/components/password_manager/core/browser/form_parsing/form_parser.cc b/components/password_manager/core/browser/form_parsing/form_parser.cc
index 9dc0438..e83216b1 100644
--- a/components/password_manager/core/browser/form_parsing/form_parser.cc
+++ b/components/password_manager/core/browser/form_parsing/form_parser.cc
@@ -958,7 +958,8 @@
     ValueElementVector all_possible_usernames,
     const absl::optional<FormPredictions>& form_predictions) {
   if (!significant_fields.HasPasswords() &&
-      !significant_fields.is_single_username) {
+      !significant_fields.is_single_username &&
+      !significant_fields.accepts_webauthn_credentials) {
     return nullptr;
   }
 
diff --git a/components/password_manager/core/browser/form_parsing/form_parser_unittest.cc b/components/password_manager/core/browser/form_parsing/form_parser_unittest.cc
index 0fe0bce..c2e209f6 100644
--- a/components/password_manager/core/browser/form_parsing/form_parser_unittest.cc
+++ b/components/password_manager/core/browser/form_parsing/form_parser_unittest.cc
@@ -14,7 +14,6 @@
 #include "base/memory/raw_ptr.h"
 #include "base/ranges/algorithm.h"
 #include "base/strings/string_number_conversions.h"
-#include "base/strings/utf_string_conversions.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/scoped_feature_list.h"
 #include "build/build_config.h"
@@ -51,7 +50,9 @@
   USERNAME,
   CURRENT_PASSWORD,
   NEW_PASSWORD,
-  CONFIRMATION_PASSWORD
+  CONFIRMATION_PASSWORD,
+  // Used for fields tagged only for webauthn autocomplete.
+  WEBAUTHN,
 };
 
 // Expected FormFieldData are constructed based on these descriptions.
@@ -125,10 +126,12 @@
   autofill::FieldRendererId password_id;
   autofill::FieldRendererId new_password_id;
   autofill::FieldRendererId confirmation_password_id;
+  std::vector<autofill::FieldRendererId> webauthn_ids;
 
   bool IsEmpty() const {
     return username_id.is_null() && password_id.is_null() &&
-           new_password_id.is_null() && confirmation_password_id.is_null();
+           new_password_id.is_null() && confirmation_password_id.is_null() &&
+           webauthn_ids.empty();
   }
 };
 
@@ -145,6 +148,9 @@
       DCHECK(result->username_id.is_null());
       result->username_id = id;
       break;
+    case ElementRole::WEBAUTHN:
+      result->webauthn_ids.push_back(id);
+      break;
     case ElementRole::CURRENT_PASSWORD:
       DCHECK(result->password_id.is_null());
       result->password_id = id;
@@ -2930,6 +2936,27 @@
   });
 }
 
+// Tests that if there is a single field marked as autofill="webauthn" then the
+// form is parsed and the `accepts_webauthn_credentials` flag is set.
+// Regression test for crbug.com/1366006.
+TEST(FormParserTest, SingleFieldAcceptsWebAuthnCredentials) {
+  CheckTestData({
+      {
+          .description_for_logging =
+              "Single field tagged with autofill=\"webauthn\"",
+          .fields =
+              {
+                  {.role_filling = ElementRole::WEBAUTHN,
+                   .autocomplete_attribute = "webauthn",
+                   .value = u"rosalina",
+                   .name = u"username",
+                   .form_control_type = "text"},
+              },
+          .accepts_webauthn_credentials = true,
+      },
+  });
+}
+
 // Tests that if a field is marked as autofill="username webauthn" then the
 // `accepts_webauthn_credentials` flag is set.
 TEST(FormParserTest, AcceptsUsernameWebAuthnCredentials) {
diff --git a/components/password_manager/core/browser/password_store_proxy_backend.cc b/components/password_manager/core/browser/password_store_proxy_backend.cc
index 5de99a6..b2fa36d 100644
--- a/components/password_manager/core/browser/password_store_proxy_backend.cc
+++ b/components/password_manager/core/browser/password_store_proxy_backend.cc
@@ -101,10 +101,8 @@
   switch (error.recovery_type) {
     case PasswordStoreBackendErrorRecoveryType::kUnrecoverable:
     case PasswordStoreBackendErrorRecoveryType::kUnspecified:
-    // TODO(http://crbug.com/1362464): Do not fallback on retriable errors
-    // once retrying is implemented.
-    case PasswordStoreBackendErrorRecoveryType::kRetriable:
       return true;
+    case PasswordStoreBackendErrorRecoveryType::kRetriable:
     case PasswordStoreBackendErrorRecoveryType::kRecoverable:
       return false;
   }
diff --git a/components/password_manager/core/browser/saved_passwords_capabilities_fetcher.cc b/components/password_manager/core/browser/saved_passwords_capabilities_fetcher.cc
index 957aff91..ec56fc902 100644
--- a/components/password_manager/core/browser/saved_passwords_capabilities_fetcher.cc
+++ b/components/password_manager/core/browser/saved_passwords_capabilities_fetcher.cc
@@ -118,6 +118,11 @@
 
 void SavedPasswordsCapabilitiesFetcher::OnSavedPasswordsChanged(
     SavedPasswordsPresenter::SavedPasswordsView passwords) {
+  // If there is still a pending update from the `SavedPasswordsPresenter`,
+  // return early and perform the updates once that is in.
+  if (saved_passwords_presenter_->IsWaitingForPasswordStore())
+    return;
+
   if (is_cache_initialized_) {
     // Request an update only if the updated set of passwords origins differ
     // from the ones in cache.
diff --git a/components/password_manager/core/browser/saved_passwords_capabilities_fetcher_unittest.cc b/components/password_manager/core/browser/saved_passwords_capabilities_fetcher_unittest.cc
index 2dd4d57..66bdc016 100644
--- a/components/password_manager/core/browser/saved_passwords_capabilities_fetcher_unittest.cc
+++ b/components/password_manager/core/browser/saved_passwords_capabilities_fetcher_unittest.cc
@@ -5,6 +5,7 @@
 #include "components/password_manager/core/browser/saved_passwords_capabilities_fetcher.h"
 
 #include "base/callback.h"
+#include "base/memory/scoped_refptr.h"
 #include "base/ranges/algorithm.h"
 #include "base/test/gmock_callback_support.h"
 #include "base/test/gmock_move_support.h"
@@ -12,10 +13,12 @@
 #include "base/test/mock_callback.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/test/task_environment.h"
+#include "base/test/test_mock_time_task_runner.h"
 #include "base/values.h"
 #include "components/password_manager/core/browser/capabilities_service.h"
+#include "components/password_manager/core/browser/fake_password_store_backend.h"
 #include "components/password_manager/core/browser/password_form.h"
-#include "components/password_manager/core/browser/test_password_store.h"
+#include "components/password_manager/core/browser/password_store.h"
 #include "components/password_manager/core/browser/ui/saved_passwords_presenter.h"
 #include "components/password_manager/core/common/password_manager_features.h"
 #include "testing/gmock/include/gmock/gmock.h"
@@ -38,6 +41,7 @@
 constexpr char kOriginWithScript1[] = "https://example.com";
 constexpr char kOriginWithScript2[] = "https://mobile.example.com";
 constexpr char kOriginWithScript3[] = "https://test.com";
+constexpr char kOriginWithScript4[] = "https://test.co.uk";
 constexpr char kOriginWithoutScript[] = "https://no-script.com";
 constexpr char kExampleApp[] = "android://hash@com.example.app";
 constexpr char kHttpOriginWithScript[] = "http://scheme-example.com";
@@ -62,6 +66,10 @@
   return url::Origin::Create(GURL(kOriginWithScript3));
 }
 
+url::Origin GetOriginWithScript4() {
+  return url::Origin::Create(GURL(kOriginWithScript4));
+}
+
 url::Origin GetOriginWithoutScript() {
   return url::Origin::Create(GURL(kOriginWithoutScript));
 }
@@ -111,52 +119,79 @@
 class SavedPasswordsCapabilitiesFetcherTest : public ::testing::Test {
  public:
   SavedPasswordsCapabilitiesFetcherTest() {
-    store_->Init(/*prefs=*/nullptr, /*affiliated_match_helper=*/nullptr);
-    FillPasswordStore();
+    profile_store_ = base::MakeRefCounted<PasswordStore>(
+        std::make_unique<FakePasswordStoreBackend>(IsAccountStore(false)));
+    profile_store_->Init(/*prefs=*/nullptr,
+                         /*affiliated_match_helper=*/nullptr);
+
+    // The account store is on its own task runner to allow simulating delays.
+    account_store_ = base::MakeRefCounted<PasswordStore>(
+        std::make_unique<FakePasswordStoreBackend>(
+            IsAccountStore(true), account_store_backend_runner()));
+    account_store_->Init(/*prefs=*/nullptr,
+                         /*affiliated_match_helper=*/nullptr);
+    FillProfileStore();
+    FillAccountStore();
+    CreateFetcher();
+  }
+
+  ~SavedPasswordsCapabilitiesFetcherTest() override {
+    account_store_->ShutdownOnUIThread();
+    profile_store_->ShutdownOnUIThread();
+    RunUntilAllThreadsIdle();
+  }
+
+  void CreateFetcher(bool use_account_store = false) {
     auto capabilities_service =
         std::make_unique<NiceMock<MockCapabilitiesService>>();
     mock_capabilities_service_ = capabilities_service.get();
     fetcher_ = std::make_unique<SavedPasswordsCapabilitiesFetcher>(
         std::move(capabilities_service),
-        std::make_unique<SavedPasswordsPresenter>(store_));
+        std::make_unique<SavedPasswordsPresenter>(
+            profile_store_, use_account_store ? account_store_ : nullptr));
     RunUntilIdle();
   }
 
-  ~SavedPasswordsCapabilitiesFetcherTest() override {
-    store_->ShutdownOnUIThread();
-    task_env_.RunUntilIdle();
-  }
-
-  void FillPasswordStore() {
-    store_->AddLogin(
+  void FillProfileStore() {
+    profile_store_->AddLogin(
         MakeSavedPassword(kOriginWithScript1, kUsername1, kPassword1));
-    store_->AddLogin(
+    profile_store_->AddLogin(
         MakeSavedPassword(kOriginWithScript2, kUsername1, kPassword2));
-    store_->AddLogin(
+    profile_store_->AddLogin(
         MakeSavedPassword(kOriginWithScript3, kUsername2, kPassword3));
-    store_->AddLogin(
+    profile_store_->AddLogin(
         MakeSavedPassword(kOriginWithoutScript, kUsername2, kPassword4));
-    store_->AddLogin(MakeSavedAndroidPassword(kExampleApp, kUsername2,
-                                              "Example App", kOriginWithScript1,
-                                              kPassword1));
+    profile_store_->AddLogin(
+        MakeSavedAndroidPassword(kExampleApp, kUsername2, "Example App",
+                                 kOriginWithScript1, kPassword1));
     // Set http url. Should not be made part of the cache.
-    store_->AddLogin(
+    profile_store_->AddLogin(
         MakeSavedPassword(kHttpOriginWithScript, kUsername2, kPassword3));
 
     RunUntilIdle();
   }
 
+  void FillAccountStore() {
+    account_store_->AddLogin(
+        MakeSavedPassword(kOriginWithScript4, kUsername1, kPassword2));
+    RunUntilAllThreadsIdle();
+  }
+
   void RunUntilIdle() { task_env_.RunUntilIdle(); }
+  void RunUntilAllThreadsIdle() {
+    account_store_backend_runner()->RunUntilIdle();
+    RunUntilIdle();
+  }
 
   void CheckScriptAvailabilityDefaultResults() {
-    EXPECT_TRUE(fetcher_->IsScriptAvailable(GetOriginWithScript1()));
-    EXPECT_TRUE(fetcher_->IsScriptAvailable(GetOriginWithScript2()));
-    EXPECT_TRUE(fetcher_->IsScriptAvailable(GetOriginWithScript3()));
-    EXPECT_FALSE(fetcher_->IsScriptAvailable(GetOriginWithoutScript()));
+    EXPECT_TRUE(fetcher()->IsScriptAvailable(GetOriginWithScript1()));
+    EXPECT_TRUE(fetcher()->IsScriptAvailable(GetOriginWithScript2()));
+    EXPECT_TRUE(fetcher()->IsScriptAvailable(GetOriginWithScript3()));
+    EXPECT_FALSE(fetcher()->IsScriptAvailable(GetOriginWithoutScript()));
   }
 
   void RequestSingleScriptAvailability(const url::Origin& origin) {
-    fetcher_->FetchScriptAvailability(
+    fetcher()->FetchScriptAvailability(
         origin,
         base::BindOnce(&SavedPasswordsCapabilitiesFetcherTest::RecordResponse,
                        base::Unretained(this), origin));
@@ -185,13 +220,28 @@
             GetOriginWithScript3()}));
   }
 
+  const scoped_refptr<base::TestMockTimeTaskRunner>&
+  account_store_backend_runner() {
+    return account_store_backend_runner_;
+  }
+
+  SavedPasswordsCapabilitiesFetcher* fetcher() {
+    if (!fetcher_)
+      CreateFetcher();
+    return fetcher_.get();
+  }
+
  protected:
   base::test::SingleThreadTaskEnvironment task_env_{
       base::test::TaskEnvironment::TimeSource::MOCK_TIME};
+  // Used to simulate delayed responses by the account store.
+  scoped_refptr<base::TestMockTimeTaskRunner> account_store_backend_runner_ =
+      base::MakeRefCounted<base::TestMockTimeTaskRunner>();
+
   base::flat_map<url::Origin, bool> recorded_responses_;
   raw_ptr<NiceMock<MockCapabilitiesService>> mock_capabilities_service_;
-  scoped_refptr<TestPasswordStore> store_ =
-      base::MakeRefCounted<TestPasswordStore>();
+  scoped_refptr<PasswordStore> profile_store_ = nullptr;
+  scoped_refptr<PasswordStore> account_store_ = nullptr;
   std::unique_ptr<SavedPasswordsCapabilitiesFetcher> fetcher_;
 };
 
@@ -200,33 +250,33 @@
   EXPECT_CALL(*mock_capabilities_service_,
               QueryPasswordChangeScriptAvailability)
       .WillOnce(RunOnceCallback<1>(std::set<url::Origin>()));
-  fetcher_->RefreshScriptsIfNecessary(base::DoNothing());
-  EXPECT_FALSE(fetcher_->IsScriptAvailable(GetOriginWithScript1()));
-  EXPECT_FALSE(fetcher_->IsScriptAvailable(GetOriginWithScript2()));
-  EXPECT_FALSE(fetcher_->IsScriptAvailable(GetOriginWithScript3()));
-  EXPECT_FALSE(fetcher_->IsScriptAvailable(GetOriginWithoutScript()));
+  fetcher()->RefreshScriptsIfNecessary(base::DoNothing());
+  EXPECT_FALSE(fetcher()->IsScriptAvailable(GetOriginWithScript1()));
+  EXPECT_FALSE(fetcher()->IsScriptAvailable(GetOriginWithScript2()));
+  EXPECT_FALSE(fetcher()->IsScriptAvailable(GetOriginWithScript3()));
+  EXPECT_FALSE(fetcher()->IsScriptAvailable(GetOriginWithoutScript()));
 }
 
 TEST_F(SavedPasswordsCapabilitiesFetcherTest, PrewarmCache) {
   base::HistogramTester histogram_tester;
   ExpectCacheRefresh();
-  EXPECT_TRUE(fetcher_->IsCacheStale());
-  fetcher_->PrewarmCache();
-  EXPECT_FALSE(fetcher_->IsCacheStale());
+  EXPECT_TRUE(fetcher()->IsCacheStale());
+  fetcher()->PrewarmCache();
+  EXPECT_FALSE(fetcher()->IsCacheStale());
 
   // The cache is not stale yet. No new request is expected.
   EXPECT_CALL(*mock_capabilities_service_,
               QueryPasswordChangeScriptAvailability)
       .Times(0);
 
-  fetcher_->RefreshScriptsIfNecessary(base::DoNothing());
-  EXPECT_FALSE(fetcher_->IsCacheStale());
+  fetcher()->RefreshScriptsIfNecessary(base::DoNothing());
+  EXPECT_FALSE(fetcher()->IsCacheStale());
   CheckScriptAvailabilityDefaultResults();
 
   // Make cache stale again.
   RunUntilIdle();
   task_env_.AdvanceClock(base::Minutes(10));
-  EXPECT_TRUE(fetcher_->IsCacheStale());
+  EXPECT_TRUE(fetcher()->IsCacheStale());
   EXPECT_CALL(*mock_capabilities_service_,
               QueryPasswordChangeScriptAvailability(
                   UnorderedElementsAre(
@@ -234,8 +284,8 @@
                       GetOriginWithScript3(), GetOriginWithoutScript()),
                   _))
       .WillOnce(RunOnceCallback<1>(std::set<url::Origin>()));
-  fetcher_->PrewarmCache();
-  EXPECT_FALSE(fetcher_->IsCacheStale());
+  fetcher()->PrewarmCache();
+  EXPECT_FALSE(fetcher()->IsCacheStale());
 
   histogram_tester.ExpectUniqueSample(
       "PasswordManager.SavedPasswordsCapabilitiesFetcher.CacheState",
@@ -246,11 +296,42 @@
       2u);
 }
 
+TEST_F(SavedPasswordsCapabilitiesFetcherTest, RefreshScriptsWithTwoStores) {
+  // Explicitly force the fetcher creation to ensure it has an account store.
+  CreateFetcher(/*use_account_store=*/true);
+  EXPECT_TRUE(fetcher()->IsCacheStale());
+
+  base::MockCallback<base::OnceClosure> callback;
+  fetcher()->RefreshScriptsIfNecessary(callback.Get());
+  // The cache remains stale while the account store has not answered.
+  RunUntilIdle();
+  EXPECT_TRUE(fetcher()->IsCacheStale());
+
+  EXPECT_CALL(
+      *mock_capabilities_service_,
+      QueryPasswordChangeScriptAvailability(
+          UnorderedElementsAre(GetOriginWithScript1(), GetOriginWithScript2(),
+                               GetOriginWithScript3(), GetOriginWithoutScript(),
+                               GetOriginWithScript4()),
+          _))
+      .WillOnce(RunOnceCallback<1>(
+          std::set<url::Origin>{GetOriginWithScript1(), GetOriginWithScript2(),
+                                GetOriginWithScript3()}));
+  EXPECT_CALL(callback, Run);
+  RunUntilAllThreadsIdle();
+  EXPECT_FALSE(fetcher()->IsCacheStale());
+
+  // The cache is not stale anymore. No new request is expected.
+  EXPECT_CALL(*mock_capabilities_service_,
+              QueryPasswordChangeScriptAvailability)
+      .Times(0);
+}
+
 TEST_F(SavedPasswordsCapabilitiesFetcherTest, NoPrewarmCache) {
   base::HistogramTester histogram_tester;
   // Run bulk check with no cache prewarming. Expect necessary full refresh.
   ExpectCacheRefresh();
-  fetcher_->RefreshScriptsIfNecessary(base::DoNothing());
+  fetcher()->RefreshScriptsIfNecessary(base::DoNothing());
   CheckScriptAvailabilityDefaultResults();
 
   histogram_tester.ExpectUniqueSample(
@@ -275,14 +356,14 @@
                   _))
       .WillOnce(MoveArg<1>(&callback));
 
-  fetcher_->PrewarmCache();
+  fetcher()->PrewarmCache();
 
   // Bulk check started before server's prewarming response. No new request
   // should be triggered if the cache is |kWaiting|.
   EXPECT_CALL(*mock_capabilities_service_,
               QueryPasswordChangeScriptAvailability)
       .Times(0);
-  fetcher_->RefreshScriptsIfNecessary(base::DoNothing());
+  fetcher()->RefreshScriptsIfNecessary(base::DoNothing());
 
   // Resolve prewarming callback.
   std::move(callback).Run(std::set<url::Origin>{
@@ -304,13 +385,13 @@
       .Times(0);
   // |IsScriptAvailable| does not trigger any network requests and returns the
   // default value (false).
-  EXPECT_FALSE(fetcher_->IsScriptAvailable(GetOriginWithScript1()));
-  EXPECT_FALSE(fetcher_->IsScriptAvailable(GetOriginWithScript2()));
-  EXPECT_FALSE(fetcher_->IsScriptAvailable(GetOriginWithScript3()));
-  EXPECT_FALSE(fetcher_->IsScriptAvailable(GetOriginWithoutScript()));
+  EXPECT_FALSE(fetcher()->IsScriptAvailable(GetOriginWithScript1()));
+  EXPECT_FALSE(fetcher()->IsScriptAvailable(GetOriginWithScript2()));
+  EXPECT_FALSE(fetcher()->IsScriptAvailable(GetOriginWithScript3()));
+  EXPECT_FALSE(fetcher()->IsScriptAvailable(GetOriginWithoutScript()));
 
   ExpectCacheRefresh();
-  fetcher_->RefreshScriptsIfNecessary(base::DoNothing());
+  fetcher()->RefreshScriptsIfNecessary(base::DoNothing());
 
   // Cache is ready.
   CheckScriptAvailabilityDefaultResults();
@@ -322,10 +403,10 @@
   // Make cache stale again.
   task_env_.AdvanceClock(base::Minutes(10));
   // |IsScriptAvailable| does not trigger refetching and returns false.
-  EXPECT_FALSE(fetcher_->IsScriptAvailable(GetOriginWithScript1()));
-  EXPECT_FALSE(fetcher_->IsScriptAvailable(GetOriginWithScript2()));
-  EXPECT_FALSE(fetcher_->IsScriptAvailable(GetOriginWithScript3()));
-  EXPECT_FALSE(fetcher_->IsScriptAvailable(GetOriginWithoutScript()));
+  EXPECT_FALSE(fetcher()->IsScriptAvailable(GetOriginWithScript1()));
+  EXPECT_FALSE(fetcher()->IsScriptAvailable(GetOriginWithScript2()));
+  EXPECT_FALSE(fetcher()->IsScriptAvailable(GetOriginWithScript3()));
+  EXPECT_FALSE(fetcher()->IsScriptAvailable(GetOriginWithoutScript()));
 
   histogram_tester.ExpectUniqueSample(
       "PasswordManager.SavedPasswordsCapabilitiesFetcher.CacheState",
@@ -340,10 +421,10 @@
        EnablePasswordDomainCapabilitiesFlag) {
   // |kEnablePasswordDomainCapabilities| flag is disabled, |IsScriptAvailable|
   // returns the default value (false).
-  EXPECT_FALSE(fetcher_->IsScriptAvailable(GetOriginWithScript1()));
-  EXPECT_FALSE(fetcher_->IsScriptAvailable(GetOriginWithScript2()));
-  EXPECT_FALSE(fetcher_->IsScriptAvailable(GetOriginWithScript3()));
-  EXPECT_FALSE(fetcher_->IsScriptAvailable(GetOriginWithoutScript()));
+  EXPECT_FALSE(fetcher()->IsScriptAvailable(GetOriginWithScript1()));
+  EXPECT_FALSE(fetcher()->IsScriptAvailable(GetOriginWithScript2()));
+  EXPECT_FALSE(fetcher()->IsScriptAvailable(GetOriginWithScript3()));
+  EXPECT_FALSE(fetcher()->IsScriptAvailable(GetOriginWithoutScript()));
 
   base::test::ScopedFeatureList features;
   features.InitAndEnableFeature(
@@ -351,37 +432,37 @@
 
   // |kEnablePasswordDomainCapabilities| is enabled and all scripts should have
   // capabilities enabled.
-  EXPECT_TRUE(fetcher_->IsScriptAvailable(GetOriginWithScript1()));
-  EXPECT_TRUE(fetcher_->IsScriptAvailable(GetOriginWithScript2()));
-  EXPECT_TRUE(fetcher_->IsScriptAvailable(GetOriginWithScript3()));
-  EXPECT_TRUE(fetcher_->IsScriptAvailable(GetOriginWithoutScript()));
+  EXPECT_TRUE(fetcher()->IsScriptAvailable(GetOriginWithScript1()));
+  EXPECT_TRUE(fetcher()->IsScriptAvailable(GetOriginWithScript2()));
+  EXPECT_TRUE(fetcher()->IsScriptAvailable(GetOriginWithScript3()));
+  EXPECT_TRUE(fetcher()->IsScriptAvailable(GetOriginWithoutScript()));
 
   ExpectCacheRefresh();
-  fetcher_->RefreshScriptsIfNecessary(base::DoNothing());
+  fetcher()->RefreshScriptsIfNecessary(base::DoNothing());
 
   // Cache is ready.
   // All scripts should have capabilities regardless of the server response.
-  EXPECT_TRUE(fetcher_->IsScriptAvailable(GetOriginWithScript1()));
-  EXPECT_TRUE(fetcher_->IsScriptAvailable(GetOriginWithScript2()));
-  EXPECT_TRUE(fetcher_->IsScriptAvailable(GetOriginWithScript3()));
-  EXPECT_TRUE(fetcher_->IsScriptAvailable(GetOriginWithoutScript()));
+  EXPECT_TRUE(fetcher()->IsScriptAvailable(GetOriginWithScript1()));
+  EXPECT_TRUE(fetcher()->IsScriptAvailable(GetOriginWithScript2()));
+  EXPECT_TRUE(fetcher()->IsScriptAvailable(GetOriginWithScript3()));
+  EXPECT_TRUE(fetcher()->IsScriptAvailable(GetOriginWithoutScript()));
 
   // Make cache stale again.
   task_env_.AdvanceClock(base::Minutes(10));
-  EXPECT_TRUE(fetcher_->IsScriptAvailable(GetOriginWithScript1()));
-  EXPECT_TRUE(fetcher_->IsScriptAvailable(GetOriginWithScript2()));
-  EXPECT_TRUE(fetcher_->IsScriptAvailable(GetOriginWithScript3()));
-  EXPECT_TRUE(fetcher_->IsScriptAvailable(GetOriginWithoutScript()));
+  EXPECT_TRUE(fetcher()->IsScriptAvailable(GetOriginWithScript1()));
+  EXPECT_TRUE(fetcher()->IsScriptAvailable(GetOriginWithScript2()));
+  EXPECT_TRUE(fetcher()->IsScriptAvailable(GetOriginWithScript3()));
+  EXPECT_TRUE(fetcher()->IsScriptAvailable(GetOriginWithoutScript()));
 }
 
 TEST_F(SavedPasswordsCapabilitiesFetcherTest, PasswordStoreUpdate) {
   ExpectCacheRefresh();
-  fetcher_->PrewarmCache();
+  fetcher()->PrewarmCache();
 
   // Add a new login to the store. Cache should go stale.
   PasswordForm password_form =
       MakeSavedPassword("https://foo.com", kUsername1, kPassword1);
-  store_->AddLogin(password_form);
+  profile_store_->AddLogin(password_form);
   RunUntilIdle();
 
   // Expect refresh of stored creentials including the new one.
@@ -393,17 +474,17 @@
                                url::Origin::Create(GURL("https://foo.com"))),
           _))
       .WillOnce(RunOnceCallback<1>(std::set<url::Origin>()));
-  fetcher_->PrewarmCache();
+  fetcher()->PrewarmCache();
 
   // Updated a credential, cache should *not* go stale.
   password_form.password_value = kPassword2;
-  store_->UpdateLogin(password_form);
+  profile_store_->UpdateLogin(password_form);
   RunUntilIdle();
 
   EXPECT_CALL(*mock_capabilities_service_,
               QueryPasswordChangeScriptAvailability)
       .Times(0);
-  fetcher_->PrewarmCache();
+  fetcher()->PrewarmCache();
 }
 
 TEST_F(SavedPasswordsCapabilitiesFetcherTest,
@@ -419,7 +500,7 @@
                   _))
       .WillOnce(MoveArg<1>(&callback));
 
-  fetcher_->PrewarmCache();
+  fetcher()->PrewarmCache();
 
   // FetchScriptAvailability before server's prewarming response. No new request
   // should be triggered if the cache is |kWaiting|. Requests should be answered
@@ -453,13 +534,13 @@
   base::HistogramTester histogram_tester;
 
   ExpectCacheRefresh();
-  fetcher_->PrewarmCache();
+  fetcher()->PrewarmCache();
 
   // Add a new login to the store. Cache should go stale and
   // FetchScriptAvailability should trigger single origin requests.
   PasswordForm password_form =
       MakeSavedPassword("https://foo.com", kUsername1, kPassword1);
-  store_->AddLogin(password_form);
+  profile_store_->AddLogin(password_form);
   RunUntilIdle();
 
   url::Origin foo_origin = url::Origin::Create(GURL("https://foo.com"));
@@ -512,7 +593,7 @@
 
   // Refresh full cache.
   ExpectCacheRefresh();
-  fetcher_->PrewarmCache();
+  fetcher()->PrewarmCache();
 
   // The cache is not stale. No new request is expected.
   EXPECT_CALL(*mock_capabilities_service_,
@@ -556,7 +637,7 @@
 }
 
 TEST_F(SavedPasswordsCapabilitiesFetcherTest, DebugInformationForInternals) {
-  base::Value::Dict debug_info = fetcher_->GetDebugInformationForInternals();
+  base::Value::Dict debug_info = fetcher()->GetDebugInformationForInternals();
   const std::string* engine = debug_info.FindString("engine");
   EXPECT_TRUE(engine);
   EXPECT_EQ("hash-prefix-based lookup", *engine);
@@ -567,9 +648,9 @@
   EXPECT_EQ("stale", *cache_state);
 
   ExpectCacheRefresh();
-  fetcher_->PrewarmCache();
+  fetcher()->PrewarmCache();
 
-  debug_info = fetcher_->GetDebugInformationForInternals();
+  debug_info = fetcher()->GetDebugInformationForInternals();
   cache_state = debug_info.FindString("cache state");
   EXPECT_TRUE(cache_state);
   EXPECT_EQ("ready", *cache_state);
@@ -578,7 +659,7 @@
   RunUntilIdle();
   task_env_.AdvanceClock(base::Minutes(10));
 
-  debug_info = fetcher_->GetDebugInformationForInternals();
+  debug_info = fetcher()->GetDebugInformationForInternals();
   cache_state = debug_info.FindString("cache state");
   EXPECT_TRUE(cache_state);
   EXPECT_EQ("stale", *cache_state);
@@ -593,8 +674,8 @@
                   _))
       .WillOnce(MoveArg<1>(&callback));
 
-  fetcher_->PrewarmCache();
-  debug_info = fetcher_->GetDebugInformationForInternals();
+  fetcher()->PrewarmCache();
+  debug_info = fetcher()->GetDebugInformationForInternals();
   cache_state = debug_info.FindString("cache state");
   EXPECT_TRUE(cache_state);
   EXPECT_EQ("waiting", *cache_state);
@@ -606,10 +687,10 @@
 
 TEST_F(SavedPasswordsCapabilitiesFetcherTest, CheckCacheEntries) {
   ExpectCacheRefresh();
-  fetcher_->PrewarmCache();
+  fetcher()->PrewarmCache();
 
   // Cache should now contain four entries.
-  base::Value::List cache_entries = fetcher_->GetCacheEntries();
+  base::Value::List cache_entries = fetcher()->GetCacheEntries();
   EXPECT_EQ(cache_entries.size(), 4u);
 
   std::vector<std::string> urls;
@@ -633,7 +714,7 @@
   features.InitAndEnableFeature(
       password_manager::features::kForceEnablePasswordDomainCapabilities);
   // Now all domains should return available scripts.
-  cache_entries = fetcher_->GetCacheEntries();
+  cache_entries = fetcher()->GetCacheEntries();
   EXPECT_EQ(cache_entries.size(), 4u);
   EXPECT_TRUE(base::ranges::all_of(
       cache_entries.cbegin(), cache_entries.cend(),
diff --git a/components/password_manager/core/browser/ui/saved_passwords_presenter.cc b/components/password_manager/core/browser/ui/saved_passwords_presenter.cc
index 8e55fc7..3e1fa34 100644
--- a/components/password_manager/core/browser/ui/saved_passwords_presenter.cc
+++ b/components/password_manager/core/browser/ui/saved_passwords_presenter.cc
@@ -141,14 +141,20 @@
 }
 
 void SavedPasswordsPresenter::Init() {
+  pending_store_updates++;
   profile_store_->GetAllLoginsWithAffiliationAndBrandingInformation(
       weak_ptr_factory_.GetWeakPtr());
   if (account_store_) {
+    pending_store_updates++;
     account_store_->GetAllLoginsWithAffiliationAndBrandingInformation(
         weak_ptr_factory_.GetWeakPtr());
   }
 }
 
+bool SavedPasswordsPresenter::IsWaitingForPasswordStore() const {
+  return pending_store_updates != 0;
+}
+
 void SavedPasswordsPresenter::RemoveObservers() {
   if (account_store_)
     account_store_->RemoveObserver(this);
@@ -469,6 +475,7 @@
 void SavedPasswordsPresenter::OnLoginsChanged(
     PasswordStoreInterface* store,
     const PasswordStoreChangeList& changes) {
+  pending_store_updates++;
   store->GetAllLoginsWithAffiliationAndBrandingInformation(
       weak_ptr_factory_.GetWeakPtr());
 }
@@ -476,6 +483,7 @@
 void SavedPasswordsPresenter::OnLoginsRetained(
     PasswordStoreInterface* store,
     const std::vector<PasswordForm>& retained_passwords) {
+  pending_store_updates++;
   store->GetAllLoginsWithAffiliationAndBrandingInformation(
       weak_ptr_factory_.GetWeakPtr());
 }
@@ -492,6 +500,8 @@
     PasswordStoreInterface* store,
     std::vector<std::unique_ptr<PasswordForm>> results) {
   bool is_account_store = store == account_store_.get();
+  pending_store_updates--;
+  DCHECK_GE(pending_store_updates, 0);
 
   // Remove cached credentials for current store.
   base::EraseIf(sort_key_to_password_forms_,
diff --git a/components/password_manager/core/browser/ui/saved_passwords_presenter.h b/components/password_manager/core/browser/ui/saved_passwords_presenter.h
index 000e75d..77a579e3 100644
--- a/components/password_manager/core/browser/ui/saved_passwords_presenter.h
+++ b/components/password_manager/core/browser/ui/saved_passwords_presenter.h
@@ -106,6 +106,9 @@
   // saved passwords.
   void Init();
 
+  // Returns whether there are ongoing fetch requests to credential stores.
+  bool IsWaitingForPasswordStore() const;
+
   // Removes the credential and all its duplicates from the store.
   bool RemoveCredential(const CredentialUIEntry& credential);
 
@@ -208,6 +211,9 @@
   scoped_refptr<PasswordStoreInterface> profile_store_;
   scoped_refptr<PasswordStoreInterface> account_store_;
 
+  // The number of stores from which no updates have been received yet.
+  int pending_store_updates = 0;
+
   std::unique_ptr<PasswordUndoHelper> undo_helper_;
 
   // Cache of the most recently obtained saved passwords.
diff --git a/components/password_manager/core/browser/ui/saved_passwords_presenter_unittest.cc b/components/password_manager/core/browser/ui/saved_passwords_presenter_unittest.cc
index 29b53ee1..48ef3187 100644
--- a/components/password_manager/core/browser/ui/saved_passwords_presenter_unittest.cc
+++ b/components/password_manager/core/browser/ui/saved_passwords_presenter_unittest.cc
@@ -5,6 +5,7 @@
 #include "components/password_manager/core/browser/ui/saved_passwords_presenter.h"
 
 #include <string>
+#include <utility>
 
 #include "base/containers/flat_map.h"
 #include "base/memory/scoped_refptr.h"
@@ -15,9 +16,12 @@
 #include "base/test/mock_callback.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/test/task_environment.h"
+#include "base/test/test_mock_time_task_runner.h"
 #include "base/time/time.h"
+#include "components/password_manager/core/browser/fake_password_store_backend.h"
 #include "components/password_manager/core/browser/password_form.h"
 #include "components/password_manager/core/browser/password_manager_metrics_util.h"
+#include "components/password_manager/core/browser/password_store.h"
 #include "components/password_manager/core/browser/test_password_store.h"
 #include "components/password_manager/core/browser/ui/credential_ui_entry.h"
 #include "components/password_manager/core/common/password_manager_features.h"
@@ -29,6 +33,7 @@
 
 namespace {
 
+using ::testing::Contains;
 using ::testing::ElementsAre;
 using ::testing::ElementsAreArray;
 using ::testing::IsEmpty;
@@ -1673,4 +1678,129 @@
   EXPECT_THAT(presenter().GetSavedCredentials(), ElementsAre(credential));
 }
 
+namespace {
+
+class SavedPasswordsPresenterInitializationTest : public ::testing::Test {
+ protected:
+  SavedPasswordsPresenterInitializationTest() {
+    profile_store_ = base::MakeRefCounted<PasswordStore>(
+        std::make_unique<FakePasswordStoreBackend>(
+            IsAccountStore(false), profile_store_backend_runner()));
+    profile_store_->Init(/*prefs=*/nullptr,
+                         /*affiliated_match_helper=*/nullptr);
+
+    account_store_ = base::MakeRefCounted<PasswordStore>(
+        std::make_unique<FakePasswordStoreBackend>(
+            IsAccountStore(true), account_store_backend_runner()));
+    account_store_->Init(/*prefs=*/nullptr,
+                         /*affiliated_match_helper=*/nullptr);
+  }
+
+  ~SavedPasswordsPresenterInitializationTest() override {
+    account_store_->ShutdownOnUIThread();
+    profile_store_->ShutdownOnUIThread();
+
+    ProcessBackendTasks(account_store_backend_runner());
+    ProcessBackendTasks(profile_store_backend_runner());
+  }
+
+  void ProcessBackendTasks(scoped_refptr<base::TestMockTimeTaskRunner> runner) {
+    runner->RunUntilIdle();
+    task_env_.RunUntilIdle();
+  }
+
+  scoped_refptr<PasswordStore> profile_store() { return profile_store_; }
+  scoped_refptr<PasswordStore> account_store() { return account_store_; }
+
+  const scoped_refptr<base::TestMockTimeTaskRunner>&
+  profile_store_backend_runner() {
+    return profile_store_backend_runner_;
+  }
+  const scoped_refptr<base::TestMockTimeTaskRunner>&
+  account_store_backend_runner() {
+    return account_store_backend_runner_;
+  }
+
+ private:
+  // `TestMockTimeTaskRunner` is used to simulate different response times
+  // between stores.
+  base::test::SingleThreadTaskEnvironment task_env_{
+      base::test::TaskEnvironment::TimeSource::MOCK_TIME};
+  scoped_refptr<base::TestMockTimeTaskRunner> profile_store_backend_runner_ =
+      base::MakeRefCounted<base::TestMockTimeTaskRunner>();
+  scoped_refptr<base::TestMockTimeTaskRunner> account_store_backend_runner_ =
+      base::MakeRefCounted<base::TestMockTimeTaskRunner>();
+
+  scoped_refptr<PasswordStore> profile_store_ = nullptr;
+  scoped_refptr<PasswordStore> account_store_ = nullptr;
+};
+
+}  // namespace
+
+TEST_F(SavedPasswordsPresenterInitializationTest, InitWithTwoStores) {
+  SavedPasswordsPresenter presenter{profile_store(), account_store()};
+
+  // As long as no `Init` is called, there are no pending requests.
+  EXPECT_FALSE(presenter.IsWaitingForPasswordStore());
+
+  presenter.Init();
+  EXPECT_TRUE(presenter.IsWaitingForPasswordStore());
+  ProcessBackendTasks(profile_store_backend_runner());
+  EXPECT_TRUE(presenter.IsWaitingForPasswordStore());
+  ProcessBackendTasks(account_store_backend_runner());
+  EXPECT_FALSE(presenter.IsWaitingForPasswordStore());
+}
+
+TEST_F(SavedPasswordsPresenterInitializationTest, InitWithOneStore) {
+  SavedPasswordsPresenter presenter{profile_store(), nullptr};
+
+  EXPECT_FALSE(presenter.IsWaitingForPasswordStore());
+
+  presenter.Init();
+  EXPECT_TRUE(presenter.IsWaitingForPasswordStore());
+  ProcessBackendTasks(profile_store_backend_runner());
+  EXPECT_FALSE(presenter.IsWaitingForPasswordStore());
+}
+
+TEST_F(SavedPasswordsPresenterInitializationTest, PendingUpdatesProfileStore) {
+  SavedPasswordsPresenter presenter{profile_store(), account_store()};
+  presenter.Init();
+  ProcessBackendTasks(profile_store_backend_runner());
+  ProcessBackendTasks(account_store_backend_runner());
+  EXPECT_FALSE(presenter.IsWaitingForPasswordStore());
+
+  // Adding a new credential to the profile store will cause new pending
+  // updates.
+  PasswordForm form =
+      CreateTestPasswordForm(PasswordForm::Store::kProfileStore);
+  EXPECT_THAT(presenter.GetSavedPasswords(), IsEmpty());
+
+  profile_store()->AddLogin(form);
+  ProcessBackendTasks(profile_store_backend_runner());
+  EXPECT_TRUE(presenter.IsWaitingForPasswordStore());
+  EXPECT_THAT(presenter.GetSavedPasswords(), IsEmpty());
+  ProcessBackendTasks(profile_store_backend_runner());
+  EXPECT_FALSE(presenter.IsWaitingForPasswordStore());
+  EXPECT_THAT(presenter.GetSavedPasswords(), Contains(form));
+}
+
+TEST_F(SavedPasswordsPresenterInitializationTest, PendingUpdatesAccountStore) {
+  SavedPasswordsPresenter presenter{profile_store(), account_store()};
+  presenter.Init();
+  ProcessBackendTasks(profile_store_backend_runner());
+  ProcessBackendTasks(account_store_backend_runner());
+  EXPECT_FALSE(presenter.IsWaitingForPasswordStore());
+
+  PasswordForm form =
+      CreateTestPasswordForm(PasswordForm::Store::kAccountStore);
+  EXPECT_THAT(presenter.GetSavedPasswords(), IsEmpty());
+  account_store()->AddLogin(form);
+  ProcessBackendTasks(account_store_backend_runner());
+  EXPECT_TRUE(presenter.IsWaitingForPasswordStore());
+  EXPECT_THAT(presenter.GetSavedPasswords(), IsEmpty());
+  ProcessBackendTasks(account_store_backend_runner());
+  EXPECT_FALSE(presenter.IsWaitingForPasswordStore());
+  EXPECT_THAT(presenter.GetSavedPasswords(), Contains(form));
+}
+
 }  // namespace password_manager
diff --git a/components/password_manager/core/common/password_manager_features.cc b/components/password_manager/core/common/password_manager_features.cc
index dc12218d..4c5a1d8 100644
--- a/components/password_manager/core/common/password_manager_features.cc
+++ b/components/password_manager/core/common/password_manager_features.cc
@@ -302,49 +302,6 @@
 extern const base::FeatureParam<int> kMigrationVersion = {
     &kUnifiedPasswordManagerAndroid, "migration_version", 1};
 
-// Current version of the GMS Core API errors lists. Users save this value on
-// eviction due to error and will only be re-enrolled to the experiment if the
-// configured version is greater than the saved one.
-extern const base::FeatureParam<int> kGmsApiErrorListVersion = {
-    &kUnifiedPasswordManagerAndroid, "api_error_list_version", 0};
-
-// Current list of the GMS Core API error codes that should be ignored and not
-// result in user eviction.
-// Codes DEVELOPER_ERROR=10, BAD_REQUEST=11008 are ignored to keep the default
-// pre-M107 behaviour.
-extern const base::FeatureParam<std::string> kIgnoredGmsApiErrors = {
-    &kUnifiedPasswordManagerAndroid, "ignored_api_errors", "10,11008"};
-
-// Current list of the GMS Core API error codes considered retriable.
-// User could still be evicted if retries do not resolve the error.
-extern const base::FeatureParam<std::string> kRetriableGmsApiErrors = {
-    &kUnifiedPasswordManagerAndroid, "retriable_api_errors", ""};
-
-// Enables fallback to the Chrome built-in backend if the operation executed on
-// the GMS Core backend returns with error. Errors listed in the
-// |kIgnoredGmsApiErrors| will not fallback and will be directly returned to the
-// caller to be addressed in a specific way.
-
-// Fallback on AddLogin and UpdateLogin operations. This is default behaviour
-// since M103.
-extern const base::FeatureParam<bool> kFallbackOnModifyingOperations = {
-    &kUnifiedPasswordManagerAndroid, "fallback_on_modifying_operations", true};
-// Fallback on RemoveLogin* operations.
-extern const base::FeatureParam<bool> kFallbackOnRemoveOperations = {
-    &kUnifiedPasswordManagerAndroid, "fallback_on_remove_operations", false};
-// Fallback on FillMatchingLogins which is needed to perform autofill and could
-// affect user experience.
-extern const base::FeatureParam<bool> kFallbackOnUserAffectingReadOperations = {
-    &kUnifiedPasswordManagerAndroid,
-    "fallback_on_user_affecting_read_operations", false};
-// Fallback on GetAllLogins* and GetAutofillableLogins operations which are
-// needed for certain features (e.g. PhishGuard) but do not affect the core
-// experience.
-extern const base::FeatureParam<bool>
-    kFallbackOnNonUserAffectingReadOperations = {
-        &kUnifiedPasswordManagerAndroid,
-        "fallback_on_non_user_affecting_read_operations", false};
-
 // The maximum possible number of reenrollments into the UPM. Needed to avoid a
 // patchy experience for users who experience errors in communication with
 // Google Mobile Services on a regular basis.
diff --git a/components/password_manager/core/common/password_manager_features.h b/components/password_manager/core/common/password_manager_features.h
index 932926b..97bf188 100644
--- a/components/password_manager/core/common/password_manager_features.h
+++ b/components/password_manager/core/common/password_manager_features.h
@@ -99,13 +99,52 @@
 
 #if BUILDFLAG(IS_ANDROID)
 extern const base::FeatureParam<int> kMigrationVersion;
-extern const base::FeatureParam<int> kGmsApiErrorListVersion;
-extern const base::FeatureParam<std::string> kIgnoredGmsApiErrors;
-extern const base::FeatureParam<std::string> kRetriableGmsApiErrors;
-extern const base::FeatureParam<bool> kFallbackOnModifyingOperations;
-extern const base::FeatureParam<bool> kFallbackOnRemoveOperations;
-extern const base::FeatureParam<bool> kFallbackOnUserAffectingReadOperations;
-extern const base::FeatureParam<bool> kFallbackOnNonUserAffectingReadOperations;
+
+// Current version of the GMS Core API errors lists. Users save this value on
+// eviction due to error and will only be re-enrolled to the experiment if the
+// configured version is greater than the saved one.
+constexpr base::FeatureParam<int> kGmsApiErrorListVersion = {
+    &kUnifiedPasswordManagerAndroid, "api_error_list_version", 0};
+
+// Current list of the GMS Core API error codes that should be ignored and not
+// result in user eviction.
+// Codes DEVELOPER_ERROR=10, BAD_REQUEST=11008 are ignored to keep the default
+// pre-M107 behaviour.
+constexpr base::FeatureParam<std::string> kIgnoredGmsApiErrors = {
+    &kUnifiedPasswordManagerAndroid, "ignored_api_errors", "10,11008"};
+
+// Current list of the GMS Core API error codes considered retriable.
+// User could still be evicted if retries do not resolve the error.
+constexpr base::FeatureParam<std::string> kRetriableGmsApiErrors = {
+    &kUnifiedPasswordManagerAndroid, "retriable_api_errors", ""};
+
+// Enables fallback to the Chrome built-in backend if the operation executed on
+// the GMS Core backend returns with error. Errors listed in the
+// |kIgnoredGmsApiErrors| will not fallback and will be directly returned to the
+// caller to be addressed in a specific way.
+
+// Fallback on AddLogin and UpdateLogin operations. This is default behaviour
+// since M103.
+constexpr base::FeatureParam<bool> kFallbackOnModifyingOperations = {
+    &kUnifiedPasswordManagerAndroid, "fallback_on_modifying_operations", true};
+
+// Fallback on RemoveLogin* operations.
+constexpr base::FeatureParam<bool> kFallbackOnRemoveOperations = {
+    &kUnifiedPasswordManagerAndroid, "fallback_on_remove_operations", false};
+
+// Fallback on FillMatchingLogins which is needed to perform autofill and could
+// affect user experience.
+constexpr base::FeatureParam<bool> kFallbackOnUserAffectingReadOperations = {
+    &kUnifiedPasswordManagerAndroid,
+    "fallback_on_user_affecting_read_operations", false};
+
+// Fallback on GetAllLogins* and GetAutofillableLogins operations which are
+// needed for certain features (e.g. PhishGuard) but do not affect the core
+// experience.
+constexpr base::FeatureParam<bool> kFallbackOnNonUserAffectingReadOperations = {
+    &kUnifiedPasswordManagerAndroid,
+    "fallback_on_non_user_affecting_read_operations", false};
+
 constexpr base::FeatureParam<UpmExperimentVariation>::Option
     kUpmExperimentVariationOption[] = {
         {UpmExperimentVariation::kEnableForSyncingUsers, "0"},
diff --git a/components/permissions/BUILD.gn b/components/permissions/BUILD.gn
index ce949ddc..06739ea 100644
--- a/components/permissions/BUILD.gn
+++ b/components/permissions/BUILD.gn
@@ -55,8 +55,8 @@
     "contexts/wake_lock_permission_context.h",
     "contexts/webxr_permission_context.cc",
     "contexts/webxr_permission_context.h",
-    "contexts/window_placement_permission_context.cc",
-    "contexts/window_placement_permission_context.h",
+    "contexts/window_management_permission_context.cc",
+    "contexts/window_management_permission_context.h",
     "notification_permission_review_service.cc",
     "notification_permission_review_service.h",
     "notifications_engagement_service.cc",
diff --git a/components/permissions/contexts/window_placement_permission_context.cc b/components/permissions/contexts/window_management_permission_context.cc
similarity index 81%
rename from components/permissions/contexts/window_placement_permission_context.cc
rename to components/permissions/contexts/window_management_permission_context.cc
index 0ef2ac5..b6d5d8d 100644
--- a/components/permissions/contexts/window_placement_permission_context.cc
+++ b/components/permissions/contexts/window_management_permission_context.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/permissions/contexts/window_placement_permission_context.h"
+#include "components/permissions/contexts/window_management_permission_context.h"
 
 #include "components/content_settings/core/common/content_settings_types.h"
 #include "components/permissions/permission_request_id.h"
@@ -12,17 +12,18 @@
 
 namespace permissions {
 
-WindowPlacementPermissionContext::WindowPlacementPermissionContext(
+WindowManagementPermissionContext::WindowManagementPermissionContext(
     content::BrowserContext* browser_context)
     : PermissionContextBase(
           browser_context,
           ContentSettingsType::WINDOW_MANAGEMENT,
           blink::mojom::PermissionsPolicyFeature::kWindowPlacement) {}
 
-WindowPlacementPermissionContext::~WindowPlacementPermissionContext() = default;
+WindowManagementPermissionContext::~WindowManagementPermissionContext() =
+    default;
 
 #if BUILDFLAG(IS_ANDROID)
-ContentSetting WindowPlacementPermissionContext::GetPermissionStatusInternal(
+ContentSetting WindowManagementPermissionContext::GetPermissionStatusInternal(
     content::RenderFrameHost* render_frame_host,
     const GURL& requesting_origin,
     const GURL& embedding_origin) const {
@@ -32,11 +33,11 @@
 }
 #endif  // IS_ANDROID
 
-bool WindowPlacementPermissionContext::IsRestrictedToSecureOrigins() const {
+bool WindowManagementPermissionContext::IsRestrictedToSecureOrigins() const {
   return true;
 }
 
-void WindowPlacementPermissionContext::UserMadePermissionDecision(
+void WindowManagementPermissionContext::UserMadePermissionDecision(
     const PermissionRequestID& id,
     const GURL& requesting_origin,
     const GURL& embedding_origin,
diff --git a/components/permissions/contexts/window_placement_permission_context.h b/components/permissions/contexts/window_management_permission_context.h
similarity index 62%
rename from components/permissions/contexts/window_placement_permission_context.h
rename to components/permissions/contexts/window_management_permission_context.h
index 6051842..4ca2ed8 100644
--- a/components/permissions/contexts/window_placement_permission_context.h
+++ b/components/permissions/contexts/window_management_permission_context.h
@@ -2,24 +2,24 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef COMPONENTS_PERMISSIONS_CONTEXTS_WINDOW_PLACEMENT_PERMISSION_CONTEXT_H_
-#define COMPONENTS_PERMISSIONS_CONTEXTS_WINDOW_PLACEMENT_PERMISSION_CONTEXT_H_
+#ifndef COMPONENTS_PERMISSIONS_CONTEXTS_WINDOW_MANAGEMENT_PERMISSION_CONTEXT_H_
+#define COMPONENTS_PERMISSIONS_CONTEXTS_WINDOW_MANAGEMENT_PERMISSION_CONTEXT_H_
 
 #include "build/build_config.h"
 #include "components/permissions/permission_context_base.h"
 
 namespace permissions {
 
-class WindowPlacementPermissionContext : public PermissionContextBase {
+class WindowManagementPermissionContext : public PermissionContextBase {
  public:
-  explicit WindowPlacementPermissionContext(
+  explicit WindowManagementPermissionContext(
       content::BrowserContext* browser_context);
-  ~WindowPlacementPermissionContext() override;
+  ~WindowManagementPermissionContext() override;
 
-  WindowPlacementPermissionContext(const WindowPlacementPermissionContext&) =
+  WindowManagementPermissionContext(const WindowManagementPermissionContext&) =
       delete;
-  WindowPlacementPermissionContext& operator=(
-      const WindowPlacementPermissionContext&) = delete;
+  WindowManagementPermissionContext& operator=(
+      const WindowManagementPermissionContext&) = delete;
 
  protected:
   // PermissionContextBase:
@@ -38,4 +38,4 @@
 
 }  // namespace permissions
 
-#endif  // COMPONENTS_PERMISSIONS_CONTEXTS_WINDOW_PLACEMENT_PERMISSION_CONTEXT_H_
+#endif  // COMPONENTS_PERMISSIONS_CONTEXTS_WINDOW_MANAGEMENT_PERMISSION_CONTEXT_H_
diff --git a/components/permissions/notification_permission_review_service.cc b/components/permissions/notification_permission_review_service.cc
index 1908d4d..e9bd51f6 100644
--- a/components/permissions/notification_permission_review_service.cc
+++ b/components/permissions/notification_permission_review_service.cc
@@ -86,9 +86,13 @@
 
 }  // namespace
 
-NotificationPermissions::NotificationPermissions(const url::Origin& origin,
-                                                 int notification_count)
-    : origin(origin), notification_count(notification_count) {}
+NotificationPermissions::NotificationPermissions(
+    const ContentSettingsPattern& primary_pattern,
+    const ContentSettingsPattern& secondary_pattern,
+    int notification_count)
+    : primary_pattern(primary_pattern),
+      secondary_pattern(secondary_pattern),
+      notification_count(notification_count) {}
 NotificationPermissions::~NotificationPermissions() = default;
 
 NotificationPermissionsReviewService::NotificationPermissionsReviewService(
@@ -136,21 +140,22 @@
       continue;
 
     int notification_count = notification_count_map[pair];
-    auto origin = url::Origin::Create(GURL(item.primary_pattern.ToString()));
-    notification_permissions_list.emplace_back(origin, notification_count);
+    notification_permissions_list.emplace_back(
+        item.primary_pattern, item.secondary_pattern, notification_count);
   }
 
   return notification_permissions_list;
 }
 
 void NotificationPermissionsReviewService::
-    AddOriginToNotificationPermissionReviewBlocklist(
-        const url::Origin& origin) {
+    AddPatternToNotificationPermissionReviewBlocklist(
+        const ContentSettingsPattern& primary_pattern,
+        const ContentSettingsPattern& secondary_pattern) {
   base::Value::Dict permission_dict;
   permission_dict.Set(kExcludedKey, base::Value(true));
 
-  hcsm_->SetWebsiteSettingDefaultScope(
-      origin.GetURL(), GURL(),
+  hcsm_->SetWebsiteSettingCustomScope(
+      primary_pattern, secondary_pattern,
       ContentSettingsType::NOTIFICATION_PERMISSION_REVIEW,
       base::Value(std::move(permission_dict)));
 }
diff --git a/components/permissions/notification_permission_review_service.h b/components/permissions/notification_permission_review_service.h
index 45bf398..8f4ed418 100644
--- a/components/permissions/notification_permission_review_service.h
+++ b/components/permissions/notification_permission_review_service.h
@@ -10,15 +10,17 @@
 #include "components/content_settings/core/browser/host_content_settings_map.h"
 #include "components/content_settings/core/common/content_settings_pattern.h"
 #include "components/keyed_service/core/keyed_service.h"
-#include "url/origin.h"
 
 namespace permissions {
 
 struct NotificationPermissions {
-  url::Origin origin;
+  ContentSettingsPattern primary_pattern;
+  ContentSettingsPattern secondary_pattern;
   int notification_count;
 
-  NotificationPermissions(const url::Origin& origin, int notification_count);
+  NotificationPermissions(const ContentSettingsPattern& primary_pattern,
+                          const ContentSettingsPattern& secondary_pattern,
+                          int notification_count);
   ~NotificationPermissions();
 };
 
@@ -42,11 +44,12 @@
   // Returns a list containing the sites that send a lot of notifications.
   std::vector<NotificationPermissions> GetNotificationSiteListForReview();
 
-  // Add given origin to the blocklist for review notification permissions
-  // feature. The origins in blocklist will not be suggested to be reviewed to
+  // Add given pattern pair to the blocklist for review notification permissions
+  // feature. The patterns in blocklist will not be suggested to be reviewed to
   // user again.
-  void AddOriginToNotificationPermissionReviewBlocklist(
-      const url::Origin& origin);
+  void AddPatternToNotificationPermissionReviewBlocklist(
+      const ContentSettingsPattern& primary_pattern,
+      const ContentSettingsPattern& secondary_pattern);
 
  private:
   // Used to update the notification permissions per URL.
diff --git a/components/permissions/permission_manager.cc b/components/permissions/permission_manager.cc
index 9f74544..2ad089e 100644
--- a/components/permissions/permission_manager.cc
+++ b/components/permissions/permission_manager.cc
@@ -402,7 +402,7 @@
       result.content_setting);
 }
 
-bool PermissionManager::IsPermissionOverridableByDevTools(
+bool PermissionManager::IsPermissionOverridable(
     PermissionType permission,
     const absl::optional<url::Origin>& origin) {
   ContentSettingsType type =
diff --git a/components/permissions/permission_manager.h b/components/permissions/permission_manager.h
index 35a1d4e2..2eba71c 100644
--- a/components/permissions/permission_manager.h
+++ b/components/permissions/permission_manager.h
@@ -145,7 +145,7 @@
       blink::PermissionType permission,
       content::RenderProcessHost* render_process_host,
       const GURL& worker_origin) override;
-  bool IsPermissionOverridableByDevTools(
+  bool IsPermissionOverridable(
       blink::PermissionType permission,
       const absl::optional<url::Origin>& origin) override;
   SubscriptionId SubscribePermissionStatusChange(
diff --git a/components/permissions/permission_manager_unittest.cc b/components/permissions/permission_manager_unittest.cc
index 12f901d..52b29d2f 100644
--- a/components/permissions/permission_manager_unittest.cc
+++ b/components/permissions/permission_manager_unittest.cc
@@ -33,6 +33,7 @@
 #include "third_party/blink/public/common/permissions/permission_utils.h"
 #include "third_party/blink/public/common/permissions_policy/origin_with_possible_wildcards.h"
 #include "third_party/blink/public/mojom/permissions_policy/permissions_policy.mojom.h"
+#include "url/origin.h"
 
 #if BUILDFLAG(IS_ANDROID)
 #include "base/android/build_info.h"
@@ -226,11 +227,9 @@
     GetPermissionManager()->UnsubscribePermissionStatusChange(subscription_id);
   }
 
-  bool IsPermissionOverridableByDevTools(
-      PermissionType permission,
-      const absl::optional<url::Origin>& origin) {
-    return GetPermissionManager()->IsPermissionOverridableByDevTools(permission,
-                                                                     origin);
+  bool IsPermissionOverridable(PermissionType permission,
+                               const absl::optional<url::Origin>& origin) {
+    return GetPermissionManager()->IsPermissionOverridable(permission, origin);
   }
 
   void ResetPermission(PermissionType permission,
@@ -741,28 +740,27 @@
       url::Origin::Create(GURL("http://example.com/geolocation"));
   const url::Origin kSecureOrigin =
       url::Origin::Create(GURL("https://example.com/geolocation"));
-  EXPECT_FALSE(IsPermissionOverridableByDevTools(PermissionType::GEOLOCATION,
-                                                 kInsecureOrigin));
-  EXPECT_TRUE(IsPermissionOverridableByDevTools(PermissionType::GEOLOCATION,
-                                                kSecureOrigin));
+  EXPECT_FALSE(
+      IsPermissionOverridable(PermissionType::GEOLOCATION, kInsecureOrigin));
+  EXPECT_TRUE(
+      IsPermissionOverridable(PermissionType::GEOLOCATION, kSecureOrigin));
 }
 
 TEST_F(PermissionManagerTest, MissingContextIsNotOverridable) {
   // Permissions that are not implemented should be denied overridability.
 #if !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_ANDROID)
-  EXPECT_FALSE(IsPermissionOverridableByDevTools(
-      PermissionType::PROTECTED_MEDIA_IDENTIFIER,
-      url::Origin::Create(GURL("http://localhost"))));
+  EXPECT_FALSE(
+      IsPermissionOverridable(PermissionType::PROTECTED_MEDIA_IDENTIFIER,
+                              url::Origin::Create(GURL("http://localhost"))));
 #endif
-  EXPECT_TRUE(IsPermissionOverridableByDevTools(
-      PermissionType::MIDI_SYSEX,
-      url::Origin::Create(GURL("http://localhost"))));
+  EXPECT_TRUE(
+      IsPermissionOverridable(PermissionType::MIDI_SYSEX,
+                              url::Origin::Create(GURL("http://localhost"))));
 }
 
 TEST_F(PermissionManagerTest, KillSwitchOnIsNotOverridable) {
   const url::Origin kLocalHost = url::Origin::Create(GURL("http://localhost"));
-  EXPECT_TRUE(IsPermissionOverridableByDevTools(PermissionType::GEOLOCATION,
-                                                kLocalHost));
+  EXPECT_TRUE(IsPermissionOverridable(PermissionType::GEOLOCATION, kLocalHost));
 
   // Turn on kill switch for GEOLOCATION.
   std::map<std::string, std::string> params;
@@ -775,8 +773,8 @@
   base::FieldTrialList::CreateFieldTrial(
       PermissionContextBase::kPermissionsKillSwitchFieldStudy, "TestGroup");
 
-  EXPECT_FALSE(IsPermissionOverridableByDevTools(PermissionType::GEOLOCATION,
-                                                 kLocalHost));
+  EXPECT_FALSE(
+      IsPermissionOverridable(PermissionType::GEOLOCATION, kLocalHost));
 }
 
 TEST_F(PermissionManagerTest, ResetPermission) {
diff --git a/components/permissions/permission_request.cc b/components/permissions/permission_request.cc
index 81ad529..2835380 100644
--- a/components/permissions/permission_request.cc
+++ b/components/permissions/permission_request.cc
@@ -226,7 +226,7 @@
     case RequestType::kVrSession:
       message_id = IDS_VR_PERMISSION_FRAGMENT;
       break;
-    case RequestType::kWindowPlacement:
+    case RequestType::kWindowManagement:
       message_id = IDS_WINDOW_MANAGEMENT_PERMISSION_FRAGMENT;
       break;
   }
diff --git a/components/permissions/permission_uma_util.cc b/components/permissions/permission_uma_util.cc
index 84b36f9d..8d61cf9 100644
--- a/components/permissions/permission_uma_util.cc
+++ b/components/permissions/permission_uma_util.cc
@@ -106,8 +106,8 @@
     case RequestType::kVrSession:
       return RequestTypeForUma::PERMISSION_VR;
 #if !BUILDFLAG(IS_ANDROID)
-    case RequestType::kWindowPlacement:
-      return RequestTypeForUma::PERMISSION_WINDOW_PLACEMENT;
+    case RequestType::kWindowManagement:
+      return RequestTypeForUma::PERMISSION_WINDOW_MANAGEMENT;
 #endif
   }
 }
@@ -152,7 +152,7 @@
       return "StorageAccess";
     case RequestTypeForUma::PERMISSION_CAMERA_PAN_TILT_ZOOM:
       return "CameraPanTiltZoom";
-    case RequestTypeForUma::PERMISSION_WINDOW_PLACEMENT:
+    case RequestTypeForUma::PERMISSION_WINDOW_MANAGEMENT:
       return "WindowPlacement";
     case RequestTypeForUma::PERMISSION_LOCAL_FONTS:
       return "LocalFonts";
diff --git a/components/permissions/permission_uma_util.h b/components/permissions/permission_uma_util.h
index 0a599ea..7362151 100644
--- a/components/permissions/permission_uma_util.h
+++ b/components/permissions/permission_uma_util.h
@@ -65,7 +65,7 @@
   PERMISSION_AR = 22,
   PERMISSION_STORAGE_ACCESS = 23,
   PERMISSION_CAMERA_PAN_TILT_ZOOM = 24,
-  PERMISSION_WINDOW_PLACEMENT = 25,
+  PERMISSION_WINDOW_MANAGEMENT = 25,
   PERMISSION_LOCAL_FONTS = 26,
   PERMISSION_IDLE_DETECTION = 27,
   PERMISSION_FILE_HANDLING = 28,
diff --git a/components/permissions/request_type.cc b/components/permissions/request_type.cc
index ebb57af..a0babb2 100644
--- a/components/permissions/request_type.cc
+++ b/components/permissions/request_type.cc
@@ -106,7 +106,7 @@
       return kUsbSecurityKeyIcon;
     case RequestType::kStorageAccess:
       return vector_icons::kCookieIcon;
-    case RequestType::kWindowPlacement:
+    case RequestType::kWindowManagement:
       return vector_icons::kSelectWindowIcon;
   }
   NOTREACHED();
@@ -183,7 +183,7 @@
       return RequestType::kVrSession;
 #if !BUILDFLAG(IS_ANDROID)
     case ContentSettingsType::WINDOW_MANAGEMENT:
-      return RequestType::kWindowPlacement;
+      return RequestType::kWindowManagement;
 #endif
     default:
       return absl::nullopt;
@@ -246,7 +246,7 @@
     case RequestType::kVrSession:
       return ContentSettingsType::VR;
 #if !BUILDFLAG(IS_ANDROID)
-    case RequestType::kWindowPlacement:
+    case RequestType::kWindowManagement:
       return ContentSettingsType::WINDOW_MANAGEMENT;
 #endif
     default:
@@ -340,7 +340,7 @@
     case permissions::RequestType::kVrSession:
       return "vr_session";
 #if !BUILDFLAG(IS_ANDROID)
-    case permissions::RequestType::kWindowPlacement:
+    case permissions::RequestType::kWindowManagement:
       return "window_placement";
 #endif
   }
diff --git a/components/permissions/request_type.h b/components/permissions/request_type.h
index 1da5686..ae61d49 100644
--- a/components/permissions/request_type.h
+++ b/components/permissions/request_type.h
@@ -53,8 +53,8 @@
 #endif
   kVrSession,
 #if !BUILDFLAG(IS_ANDROID)
-  kWindowPlacement,
-  kMaxValue = kWindowPlacement
+  kWindowManagement,
+  kMaxValue = kWindowManagement
 #else
   kMaxValue = kVrSession
 #endif
diff --git a/components/permissions/test/permission_test_util.cc b/components/permissions/test/permission_test_util.cc
index 32a8cf0..cbfba0a 100644
--- a/components/permissions/test/permission_test_util.cc
+++ b/components/permissions/test/permission_test_util.cc
@@ -5,7 +5,7 @@
 #include "components/permissions/test/permission_test_util.h"
 
 #include "components/content_settings/core/common/content_settings_types.h"
-#include "components/permissions/contexts/window_placement_permission_context.h"
+#include "components/permissions/contexts/window_management_permission_context.h"
 #include "components/permissions/permission_manager.h"
 #include "content/public/browser/browser_context.h"
 #include "third_party/blink/public/mojom/permissions_policy/permissions_policy.mojom.h"
@@ -76,7 +76,7 @@
           blink::mojom::PermissionsPolicyFeature::kEncryptedMedia);
 #endif
   permission_contexts[ContentSettingsType::WINDOW_MANAGEMENT] =
-      std::make_unique<WindowPlacementPermissionContext>(browser_context);
+      std::make_unique<WindowManagementPermissionContext>(browser_context);
   return permission_contexts;
 }
 
diff --git a/components/policy/resources/policy_templates.json b/components/policy/resources/policy_templates.json
index dfcc1ab5..bb8726f 100644
--- a/components/policy/resources/policy_templates.json
+++ b/components/policy/resources/policy_templates.json
@@ -23723,6 +23723,16 @@
         'dynamic_refresh': True,
         'per_profile': False,
       },
+      'items': [
+        {
+          'value': True,
+          'caption': 'Allow port forwarding into Linux virtual machines',
+        },
+        {
+          'value': False,
+          'caption': 'Do not allow port forwarding into Linux virtual machines',
+        },
+      ],
       'example_value': False,
       'id': 716,
       'caption': '''Allow users to [enable/configure] Crostini port forwarding''',
@@ -23871,6 +23881,21 @@
         'dynamic_refresh': True,
         'per_profile': True,
       },
+      'items': [
+        {
+          'value': True,
+          'caption': 'Enable reporting of system information and page content to help improve Safe Browsing',
+        },
+        {
+          'value': False,
+          'caption': 'Disable reporting of system information and page content to help improve Safe Browsing',
+        },
+        {
+          'value': None,
+          'caption': 'Allow the user to decide',
+        },
+      ],
+      'default': None,
       'example_value': True,
       'id': 429,
       'tags': ['google-sharing'],
@@ -23940,6 +23965,16 @@
         'per_profile': False,
         'platform_only': True,
       },
+      'items': [
+        {
+          'value': True,
+          'caption': 'Prevent Chrome from launching if not enrolled into Chrome Browser Cloud Management',
+        },
+        {
+          'value': False,
+          'caption': 'Allow Chrome to launch if not enrolled into Chrome Browser Cloud Management',
+        },
+      ],
       'example_value': True,
       'id': 505,
       'caption': '''Enable mandatory cloud management enrollment''',
@@ -23961,6 +23996,16 @@
         'dynamic_refresh': True,
         'per_profile': True,
       },
+      'items': [
+        {
+          'value': True,
+          'caption': 'Allow Chrome to autoplay media',
+        },
+        {
+          'value': False,
+          'caption': 'Do not allow Chrome to autoplay media',
+        },
+      ],
       'example_value': True,
       'id': 430,
       'caption': '''Allow media autoplay''',
@@ -24072,6 +24117,16 @@
         'dynamic_refresh': True,
         'per_profile': True,
       },
+      'items': [
+        {
+          'value': True,
+          'caption': 'Allow users to add, configure, and print from non-enterprise printers',
+        },
+        {
+          'value': False,
+          'caption': 'Do not allow users to add, configure, and print from non-enterprise printers',
+        },
+      ],
       'example_value': False,
       'id': 768,
       'caption': '''Allow access to CUPS printers''',
@@ -24093,6 +24148,16 @@
         'dynamic_refresh': False,
         'per_profile': False,
       },
+      'items': [
+        {
+          'value': True,
+          'caption': 'Allow Chrome Cleanup to periodically scan the system and allow manual scans',
+        },
+        {
+          'value': False,
+          'caption': 'Prevent Chrome Cleanup from periodically scanning the system and disable manual scans',
+        },
+      ],
       'example_value': True,
       'id': 441,
       'caption': '''Enable Chrome Cleanup on Windows''',
@@ -24113,6 +24178,21 @@
         'dynamic_refresh': True,
         'per_profile': False,
       },
+      'items': [
+        {
+          'value': True,
+          'caption': 'Results from a Chrome Cleanup cleanup are always shared with Google',
+        },
+        {
+          'value': False,
+          'caption': 'Results from a Chrome Cleanup cleanup are never shared with Google',
+        },
+        {
+          'value': None,
+          'caption': 'Users may choose to share results from a Chrome Cleanup cleanup with Google',
+        },
+      ],
+      'default': None,
       'example_value': True,
       'id': 442,
       'caption': '''Control how Chrome Cleanup reports data to Google''',
@@ -24186,6 +24266,16 @@
         'dynamic_refresh': True,
         'per_profile': True,
       },
+      'items': [
+        {
+          'value': True,
+          'caption': 'Android app install event logs are shared with Google',
+        },
+        {
+          'value': False,
+          'caption': 'Android app install event logs are not shared with Google',
+        },
+      ],
       'example_value': True,
       'id': 447,
       'caption': '''Log events for Android app installs''',
diff --git a/components/policy/resources/policy_templates_es.xtb b/components/policy/resources/policy_templates_es.xtb
index 8520eb0..c690887 100644
--- a/components/policy/resources/policy_templates_es.xtb
+++ b/components/policy/resources/policy_templates_es.xtb
@@ -653,7 +653,7 @@
 
       Si esta política se inhabilita o no se define, se mostrarán advertencias en sistemas no compatibles.</translation>
 <translation id="1634989431648355062">Permitir el complemento <ph name="FLASH_PLUGIN_NAME" /> en estos sitios web</translation>
-<translation id="1635748761015837179">Permitir la escritura en dispositivos de memoria externa</translation>
+<translation id="1635748761015837179">Permitir la escritura en dispositivos de almacenamiento externo</translation>
 <translation id="1639468541408865385">Habilitar la caché de autenticación de HTTP con alcance global</translation>
 <translation id="1641394008743444477">Te permite establecer una lista con funciones de <ph name="PRODUCT_OS_NAME" /> para inhabilitarlas.
 
@@ -1224,7 +1224,7 @@
       Si se establece la opción <ph name="CRITICAL_VARIATIONS_ONLY_OPTION_NAME" /> (valor 1), solo se permitirá que se apliquen a <ph name="PRODUCT_OS_NAME" /> las variaciones que se consideren correcciones críticas de seguridad o de estabilidad.
 
       Si se establece la opción <ph name="VARIATIONS_DISABLED_OPTION_NAME" /> (valor 2), no se permitirá aplicar ninguna variación al navegador en la pantalla de inicio de sesión. Ten en cuenta que este modo puede evitar que los desarrolladores de <ph name="PRODUCT_OS_NAME" /> proporcionen correcciones críticas de seguridad a su debido tiempo y, por lo tanto, no se recomienda su uso.</translation>
-<translation id="2217931577484185673">Si se habilita esta política, Navegación segura confiará en los dominios que indiques. No comprobará si contienen recursos peligrosos, como suplantación de identidad, software malicioso o software no deseado. El servicio de protección de descargas de Navegación segura no comprobará las descargas alojadas en estos dominios. Su servicio de protección de contraseñas no comprobará si se reutilizan contraseñas.
+<translation id="2217931577484185673">Si se habilita esta política, Navegación segura confiará en los dominios que indiques. No comprobará si contienen recursos peligrosos, como suplantación de identidad, malware o software no deseado. El servicio de protección de descargas de Navegación segura no comprobará las descargas alojadas en estos dominios. Su servicio de protección de contraseñas no comprobará si se reutilizan contraseñas.
 
       Si no se define la política, se aplicará la protección predeterminada de Navegación segura a todos los recursos.
 
@@ -1564,7 +1564,7 @@
       Si se inhabilita la política o se deja sin definir, la configuración de restauración completa determinará qué debe abrirse al iniciar sesión.</translation>
 <translation id="2517466659416174529">Permite inmovilizar las pestañas que están en segundo plano</translation>
 <translation id="2518231489509538392">Permitir reproducción de audio</translation>
-<translation id="2519578205567666653">Permitir dispositivos de memoria externa</translation>
+<translation id="2519578205567666653">Permitir dispositivos de almacenamiento externo</translation>
 <translation id="2520551905471951523">Utiliza la prioridad alta para el proceso de audio</translation>
 <translation id="2521581787935130926">Mostrar el acceso directo de aplicaciones en la barra de marcadores</translation>
 <translation id="2522304491589804974">Configura la lista de extensiones de instalación permitidas</translation>
@@ -3207,7 +3207,7 @@
 <translation id="4138655880188755661">Límite de tiempo</translation>
 <translation id="4147818922357566987">Habilitar variaciones referentes solo a correcciones críticas</translation>
 <translation id="4150201353443180367">Pantalla</translation>
-<translation id="4154221011709068799">No permitir dispositivos de memoria externa</translation>
+<translation id="4154221011709068799">No permitir dispositivos de almacenamiento externo</translation>
 <translation id="415445772247959702">Web Store (compatible a partir de la versión 89)</translation>
 <translation id="4157003184375321727">Informar de la versión del firmware y del sistema operativo</translation>
 <translation id="4157594634940419685">Permitir el acceso a impresoras CUPS nativas</translation>
@@ -4499,7 +4499,7 @@
 <translation id="5526184558582921522">Permitir que se realicen consultas a Quirks Server y que potencialmente se descarguen archivos de configuración de hardware concreto</translation>
 <translation id="5526701598901867718">Todos (no seguro)</translation>
 <translation id="5534079385061985566">Habilitar la función de restauración completa</translation>
-<translation id="5534235660122271432">No permitir la escritura en dispositivos de memoria externa</translation>
+<translation id="5534235660122271432">No permitir la escritura en dispositivos de almacenamiento externo</translation>
 <translation id="5535256585099022933">Definir el intervalo de tiempo para el reinicio</translation>
 <translation id="5535973522252703021">Lista de admisión de servidores de delegación Kerberos</translation>
 <translation id="553806128266843748">Un indicador booleano que especifica si las limitaciones de ancho de banda están habilitadas.</translation>
@@ -5649,7 +5649,7 @@
 <translation id="6704445641918520643">Habilita la carga en diferido de la WebUI de inicio de sesión.</translation>
 <translation id="6704515759227307131">Esta política está obsoleta y se ha sustituido por la política AdvancedProtectionAllowed.
 
-      Esta política controla si a los usuarios registrados en el Programa de Protección Avanzada se les permite enviar a Google el contenido descargado para realizar un análisis de software malicioso. Si se asigna el valor "True" a esta política o no se le asigna ningún valor, se le pedirá al usuario que envíe los archivos descargados a Google para realizar un análisis profundo. Si el usuario selecciona "Analizar", los archivos descargados se enviarán a Google. Si se le asigna el valor "False", no se le pedirá nada al usuario y los archivos descargados no se enviarán a Google.</translation>
+      Esta política controla si a los usuarios registrados en el Programa de Protección Avanzada se les permite enviar a Google el contenido descargado para realizar un análisis de malware. Si se asigna el valor "True" a esta política o no se le asigna ningún valor, se le pedirá al usuario que envíe los archivos descargados a Google para realizar un análisis profundo. Si el usuario selecciona "Analizar", los archivos descargados se enviarán a Google. Si se le asigna el valor "False", no se le pedirá nada al usuario y los archivos descargados no se enviarán a Google.</translation>
 <translation id="6704994003174661159">Esta política controla el tratamiento de formularios no seguros (formularios que se envían mediante HTTP) insertados en sitios web seguros (HTTPS) en el navegador.
        Si se habilita esta política o no se le asigna ningún valor, se mostrará una advertencia a pantalla completa cuando se envíe un formulario no seguro. Además, aparecerá un cuadro de advertencia al lado de los campos del formulario cuando estén seleccionados y se inhabilitará la función Autocompletar en dichos formularios.
        Si se inhabilita esta política, no se mostrará ninguna advertencia en los formularios no seguros y la opción Autocompletar funcionará con normalidad.</translation>
@@ -5710,7 +5710,7 @@
 
       Si no se asigna ningún valor a <ph name="DEFAULT_SEARCH_PROVIDER_SEARCH_URL_POST_PARAMS_POLICY_NAME" />, las solicitudes de búsqueda se enviarán mediante el método GET.</translation>
 <translation id="6757613329154374267">Copia de seguridad y restauración habilitada</translation>
-<translation id="6758659208493449452">Esta política controla si los usuarios registrados en el Programa de Protección Avanzada tienen acceso a funciones de protección adicionales. Puede que algunas de estas funciones impliquen compartir datos con Google (por ejemplo, los usuarios de Protección Avanzada podrán enviar sus descargas a Google para que realice un análisis de software malicioso). Si se asigna el valor "True" a esta política o no se le asigna ningún valor, los usuarios registrados tendrán acceso a funciones de protección adicionales. Si se le asigna el valor "False", los usuarios de Protección Avanzada solo tendrán acceso a las funciones estándar.</translation>
+<translation id="6758659208493449452">Esta política controla si los usuarios registrados en el Programa de Protección Avanzada tienen acceso a funciones de protección adicionales. Puede que algunas de estas funciones impliquen compartir datos con Google (por ejemplo, los usuarios de Protección Avanzada podrán enviar sus descargas a Google para que realice un análisis de malware). Si se asigna el valor "True" a esta política o no se le asigna ningún valor, los usuarios registrados tendrán acceso a funciones de protección adicionales. Si se le asigna el valor "False", los usuarios de Protección Avanzada solo tendrán acceso a las funciones estándar.</translation>
 <translation id="6763023079133439068">Permitir certificados que no tengan una extensión subjectAlternativeName cuando los emitan anclas de confianza locales</translation>
 <translation id="6766216162565713893">Permitir que los sitios le pidan permiso al usuario para acceder a dispositivos Bluetooth cercanos</translation>
 <translation id="6770454900105963262">Informar sobre sesiones del kiosco activas</translation>
@@ -5951,7 +5951,7 @@
 <translation id="6986172482189158664">Ajustes del periodo de vida de los datos de navegación</translation>
 <translation id="6986838929449128437">Esta política está obsoleta. Usa <ph name="SAFE_BROWSING_ALLOWLIST_DOMAINS_POLICY_NAME" /> en su lugar.
 
-      Si se habilita esta política, Navegación segura confiará en los dominios que indiques. No comprobará si los recursos son peligrosos (por ejemplo, si incluyen suplantación de identidad, software malicioso o software no deseado). El servicio de protección de descargas de Navegación segura no comprobará las descargas alojadas en estos dominios. Su servicio de protección de contraseñas no comprobará si se reutilizan contraseñas.
+      Si se habilita esta política, Navegación segura confiará en los dominios que indiques. No comprobará si los recursos son peligrosos (por ejemplo, si incluyen suplantación de identidad, malware o software no deseado). El servicio de protección de descargas de Navegación segura no comprobará las descargas alojadas en estos dominios. Su servicio de protección de contraseñas no comprobará si se reutilizan contraseñas.
 
       Si se inhabilita la política o se deja sin definir, se aplicará la protección predeterminada de Navegación segura a todos los recursos.
 
@@ -6100,7 +6100,7 @@
 
       Si se habilita la política, la función Navegación segura de Chrome permanecerá activada. Si la política se inhabilita, Navegación segura seguirá desactivada.
 
-      Si se define esta política, los usuarios no podrán cambiarla ni anular el ajuste "Habilitar protección contra phishing y software malicioso" en Chrome. Si no se define, se asignará el valor "True" a "Habilitar protección contra phishing y software malicioso", pero el usuario podrá cambiarlo.
+      Si se define esta política, los usuarios no podrán cambiarla ni anular el ajuste "Habilitar protección contra phishing y malware" en Chrome. Si no se define, se asignará el valor "True" a "Habilitar protección contra phishing y malware", pero el usuario podrá cambiarlo.
 
       Consulta más información sobre Navegación segura en la siguiente página: https://developers.google.com/safe-browsing .
 
@@ -7075,7 +7075,7 @@
       Las solicitudes para unirse a diferentes hosts mediante conexiones que utilizan certificados de cliente pueden dar lugar a problemas de seguridad y privacidad, ya que la autoridad de certificación se vinculará a todas las solicitudes, aunque el usuario no lo autorice de forma explícita. Esta política es temporal y se retirará en versiones posteriores. Consulta https://crbug.com/855690
 
       Si no se establece esta política, se realizará la acción predeterminada: no permitir la unión de ninguna conexión HTTP/2 en conexiones que utilicen certificados de cliente.</translation>
-<translation id="8197373549462388216">Si se habilita esta política, se evita que los usuarios puedan pasar de la página de advertencia que muestra el servicio Navegación segura antes de acceder a un sitio web malicioso. Esta política solo evita que los usuarios continúen si aparece una advertencia de Navegación segura (por ejemplo, por software malicioso o suplantación de identidad), pero no si se trata de un problema relacionado con un certificado SSL (por ejemplo, si no es válido o ha caducado).
+<translation id="8197373549462388216">Si se habilita esta política, se evita que los usuarios puedan pasar de la página de advertencia que muestra el servicio Navegación segura antes de acceder a un sitio web malicioso. Esta política solo evita que los usuarios continúen si aparece una advertencia de Navegación segura (por ejemplo, por malware o suplantación de identidad), pero no si se trata de un problema relacionado con un certificado SSL (por ejemplo, si no es válido o ha caducado).
 
       Si se inhabilita o no se le asigna ningún valor, los usuarios podrán decidir si quieren acceder al sitio web denunciado después de ver la advertencia.
 
@@ -7130,7 +7130,7 @@
 <translation id="8257863622304579015">Habilitar el entorno aislado del servicio de red</translation>
 <translation id="8259375588339409826">Tanto Chromium como Google Chrome admiten el mismo conjunto de políticas. Ten en cuenta que en este documento se pueden incluir políticas no publicadas (es decir, cuya entrada "Compatible con" hace referencia a una versión no publicada de <ph name="PRODUCT_NAME" />), que pueden modificarse o retirarse sin previo aviso y que no tienen ningún tipo de garantía, ni siquiera las referentes a las propiedades de privacidad y seguridad.
 
-Estas políticas están destinadas exclusivamente a la configuración de instancias de <ph name="PRODUCT_NAME" /> internas de tu organización. El uso de estas políticas fuera de tu organización (por ejemplo, en un programa distribuido públicamente) se considera software malicioso y es probable que Google y los proveedores de antivirus lo designen como tal.
+Estas políticas están destinadas exclusivamente a la configuración de instancias de <ph name="PRODUCT_NAME" /> internas de tu organización. El uso de estas políticas fuera de tu organización (por ejemplo, en un programa distribuido públicamente) se considera malware y es probable que Google y los proveedores de antivirus lo designen como tal.
 
 No es necesario configurar estas opciones manualmente. En la página <ph name="POLICY_TEMPLATE_DOWNLOAD_URL" />, puedes encontrar plantillas fáciles de utilizar para Windows, Mac y Linux.
 
diff --git a/components/policy/resources/policy_templates_id.xtb b/components/policy/resources/policy_templates_id.xtb
index cc1868f..81402f6f 100644
--- a/components/policy/resources/policy_templates_id.xtb
+++ b/components/policy/resources/policy_templates_id.xtb
@@ -102,6 +102,7 @@
       Device Attributes API adalah daftar API web; harap lihat https://wicg.github.io/WebApiDevice/device_attributes. API ini hanya tersedia untuk asal yang sesuai dengan aplikasi web yang diinstal otomatis melalui <ph name="WEB_APP_INSTALL_FORCE_LIST_POLICY_NAME" /> atau aplikasi web yang dikonfigurasi dalam sesi Kios.</translation>
 <translation id="1079801999187584280">Larang penggunaan Developer Tools</translation>
 <translation id="1082802595100075771">Izinkan pengguna memilih menggunakan layanan Google anonim untuk memberikan deskripsi otomatis untuk gambar tanpa label</translation>
+<translation id="1087057100912843460">Izinkan update</translation>
 <translation id="1087437665304381368">Kebijakan ini hanya mengontrol mode developer<ph name="PRODUCT_OS_NAME" />. Jika ingin mencegah akses ke Opsi Developer Android, Anda perlu menetapkan kebijakan <ph name="DEVELOPER_TOOLS_DISABLED_POLICY_NAME" />.</translation>
 <translation id="1087707496788636333">Daftar kebijakan Chrome Enterprise berpindah! Update bookmark ke <ph name="POLICY_DOCUMENTATION_URL" />.</translation>
 <translation id="1089150222292592899">Mengisi otomatis nama pengguna di halaman IdP SAML</translation>
@@ -270,6 +271,7 @@
       Kebijakan ini tidak berlaku untuk pengguna kios.
 
       Peringatan: Wipe dan MinimalMigrate akan menghapus data lokal.</translation>
+<translation id="1248955696540150266">Izinkan download update otomatis peer to peer</translation>
 <translation id="1250597158212586309">Jika kebijakan disetel ke Aktif atau tidak disetel, pengguna akan memiliki opsi untuk menutup/memulihkan notifikasi sandi yang telah dibobol.
 
       Jika Anda menonaktifkan setelan ini, pengguna tidak akan dapat menutup notifikasi sandi yang telah dibobol. Jika Anda mengaktifkan setelan ini, pengguna akan dapat menutup notifikasi sandi yang telah dibobol.</translation>
@@ -501,6 +503,7 @@
 
       Catatan: Pisahkan beberapa nama server dengan koma. Karakter pengganti, <ph name="WILDCARD_VALUE" />, diizinkan.</translation>
 <translation id="1488724823347505879">Mengaktifkan berbagi dari aplikasi Android ke aplikasi Web</translation>
+<translation id="1494138678487405397">Nonaktifkan kontras tinggi di layar login</translation>
 <translation id="1502843533062797703">Aktifkan pemblokiran injeksi software pihak ketiga</translation>
 <translation id="1503969899251962413">Menyetel kebijakan akan menentukan kunci lisensi <ph name="PLUGIN_VM_NAME" /> untuk perangkat ini.
 
@@ -928,6 +931,7 @@
       Sebelum peluncuran, kebijakan perusahaan ini tidak akan berlaku. Setelah peluncuran, ketika kebijakan perusahaan ini diaktifkan, kebijakan perujuk default Chrome akan disetel ke nilai sebelumnya, yaitu no-referrer-when-downgrade.
 
       Kebijakan perusahaan ini dinonaktifkan secara default.</translation>
+<translation id="1947848925128084608">Nonaktifkan kontras tinggi di layar login dan izinkan pengguna mengaktifkannya untuk sementara</translation>
 <translation id="1949584741547056205">Jawaban Instan</translation>
 <translation id="1951288262199783797">Anda dapat mengaktifkan kebijakan ini untuk membuat kamus ekstensi jenis file beserta daftar domain yang sesuai yang tidak akan muncul di peringatan download berbasis ekstensi jenis file. Kebijakan ini memungkinkan administrator perusahaan memblokir peringatan download berbasis ekstensi jenis file untuk file yang dikaitkan dengan domain yang tercantum. Misalnya, jika ekstensi "jnlp" dikaitkan dengan "website1.com", pengguna tidak akan melihat peringatan saat mendownload file "jnlp" dari "website1.com", tetapi akan melihat peringatan download saat mendownload file "jnlp" dari "website2.com".
 
@@ -953,6 +957,7 @@
       Perhatikan bahwa jika contoh sebelumnya menunjukkan penekanan pada peringatan download berbasis ekstensi jenis file untuk file "swf" bagi semua domain, sebaiknya Anda tidak menerapkan penekanan pada peringatan tersebut bagi semua domain untuk ekstensi jenis file berbahaya demi alasan keamanan. Contoh ini diberikan hanya untuk mendemonstrasikan bahwa hal tersebut dapat dilakukan.
 
       Jika kebijakan ini diaktifkan bersama <ph name="DOWNLOAD_RESTRICTIONS_POLICY_NAME" /> dan DownloadRestrictions disetel untuk memblokir jenis file berbahaya, pemblokiran download yang ditentukan oleh DownloadRestrictions akan diprioritaskan. Misalnya, jika kebijakan ini disetel untuk mengizinkan download ekstensi "exe" dari "website1.com", dan DownloadRestrictions disetel untuk memblokir download dan jenis file berbahaya, download ekstensi "exe" akan tetap diblokir di semua domain. Jika DownloadRestrictions tidak disetel untuk memblokir jenis file berbahaya, jenis file yang ditentukan di kebijakan ini tidak akan muncul di peringatan download berbasis ekstensi jenis file pada domain yang ditentukan. Baca selengkapnya tentang DownloadRestrictions (https://chromeenterprise.google/policies/?policy=DownloadRestrictions).</translation>
+<translation id="1954612656043024615">Aktifkan fitur papan klip bersama</translation>
 <translation id="1960416154405676350">Aktifkan penelusuran region <ph name="GOOGLE_LENS_PRODUCT_NAME" />.</translation>
 <translation id="1961091374249454164">Kebijakan ini hanya berlaku untuk sesi tamu terkelola.
       Menyetel kebijakan akan menentukan daftar ID ekstensi yang dikecualikan dari prosedur pembersihan sesi tamu terkelola yang dibatasi (lihat <ph name="DEVICE_RESTRICTED_MANAGED_GUEST_SESSION_ENABLED_POLICY_NAME" />).
@@ -1018,6 +1023,7 @@
 <translation id="2004382785802837840">Nonaktifkan penutupan notifikasi sandi yang telah dibobol</translation>
 <translation id="2005506794355327448">Tindakan yang harus diambil saat penutup ditutup.</translation>
 <translation id="2006530844219044261">Pengelolaan daya</translation>
+<translation id="2006954055163088863">Anggap pengguna sebagai tidak ada aktivitas saat video diputar</translation>
 <translation id="2008514891623783266">Kebijakan penanganan IP WebRTC</translation>
 <translation id="2013285471046373727">Menentukan bagaimana aplikasi diinstal. OPTIONAL: Aplikasi tidak otomatis diinstal, tetapi pengguna dapat menginstalnya. Ini adalah setelan default jika kebijakan tidak ditentukan. PRELOAD: Aplikasi otomatis diinstal, tetapi pengguna dapat meng-uninstal. FORCE_INSTALLED: Aplikasi otomatis diinstal dan pengguna tidak dapat meng-uninstal. BLOCKED: Aplikasi diblokir dan tidak dapat diinstal. Jika aplikasi diinstal berdasarkan kebijakan sebelumnya, aplikasi akan di-uninstal.</translation>
 <translation id="2014757022750736514">Mengontrol perilaku layar login tempat pengguna login ke akun. Setelan mencakup siapa saja yang dapat login, jenis akun yang diizinkan, metode autentikasi yang harus digunakan, serta aksesibilitas umum, metode masukan, dan setelan lokal.</translation>
@@ -1151,6 +1157,7 @@
       Jika kebijakan ini ditetapkan, browser akan mulai menghapus tab untuk menghemat memori setelah melampaui batas. Namun, tidak ada jaminan bahwa browser selalu berjalan di bawah batas. Setiap nilai yang kurang dari 1024 akan dibulatkan ke 1024.
 
       Jika kebijakan ini tidak ditetapkan, browser hanya akan mulai mencoba menghemat memori setelah mendeteksi bahwa perangkatnya memiliki jumlah memori fisik yang rendah.</translation>
+<translation id="2161348910646846717">Izinkan pengguna mengubah saluran rilis</translation>
 <translation id="2165567959657265531">Cookie yang disetel untuk domain yang sesuai dengan pola ini akan kembali ke perilaku <ph name="ATTRIBUTE_SAMESITE_NAME" /> lama. Pengembalian ke perilaku lama akan menyebabkan cookie yang tidak menentukan atribut <ph name="ATTRIBUTE_SAMESITE_NAME" /> dianggap sebagai "<ph name="ATTRIBUTE_VALUE_SAMESITE_NONE" />", menghapus persyaratan bagi cookie "<ph name="ATTRIBUTE_VALUE_SAMESITE_NONE" />" untuk membawa atribut "<ph name="ATTRIBUTE_SECURE_NAME" />", dan melewati perbandingan skema saat evaluasi jika dua situs adalah situs yang sama. Lihat penjelasan lengkapnya di https://www.chromium.org/administrators/policy-list-3/cookie-legacy-samesite-policies.
 
           Untuk cookie pada domain yang tidak tercakup oleh pola yang ditentukan di sini, atau untuk semua cookie jika kebijakan ini tidak disetel, nilai default global-nya adalah konfigurasi pribadi pengguna.
@@ -1316,6 +1323,7 @@
       Catatan: Untuk Android, gunakan kebijakan <ph name="SITE_PER_PROCESS_ANDROID_POLICY_NAME" />.</translation>
 <translation id="2306505001667207184">Minta pengguna memilih sertifikat klien setiap kali kebijakan pemilihan otomatis cocok dengan beberapa sertifikat.</translation>
 <translation id="2307496301287881990">Melaporkan status tampilan dan grafis</translation>
+<translation id="2309284543927494965">Blokir update</translation>
 <translation id="2309341709647905294">Jangan laporkan informasi tentang periferal yang dicolokkan ke perangkat</translation>
 <translation id="2309390639296060546">Setelan geolokasi default</translation>
 <translation id="2331354174913096226">Template URI pada resolver DNS-over-HTTPS yang diinginkan. Untuk menentukan beberapa resolver DNS-over-HTTPS, pisahkan template URI terkait dengan spasi.
@@ -1359,6 +1367,7 @@
       Dukungan untuk penyetelan kebijakan ini ke "tls1" atau "tls1.1" dihapus di versi 91. Menyembunyikan peringatan TLS 1.0/1.1 tidak lagi didukung.</translation>
 <translation id="2364639863953745682">Mode pengalaman aktivasi Asisten</translation>
 <translation id="2366301887862414321">Izinkan host pesan native tingkat pengguna dan tingkat sistem</translation>
+<translation id="2376134474855349829">Nonaktifkan keyboard virtual di layar login dan izinkan pengguna mengaktifkannya untuk sementara</translation>
 <translation id="2382672620906337383">setTimeout() JavaScript tidak akan dikunci hingga batas bertingkat yang lebih tinggi.</translation>
 <translation id="2384233438419344179">Jika kebijakan disetel ke Aktif, elemen halaman web yang tidak berasal dari domain di kolom URL browser tidak dapat menyetel cookie. Jika kebijakan disetel ke Nonaktif, elemen tersebut akan dapat menyetel cookie dan pengguna tidak dapat mengubah setelan ini.
 
@@ -1422,6 +1431,7 @@
 Jika kebijakan ini ditetapkan, pengguna tidak dapat mengganti nilainya.
 
 Jika kebijakan ini tidak ditetapkan, layar privasi mula-mula akan dinonaktifkan tetapi dapat dikontrol oleh pengguna.</translation>
+<translation id="2413899611035194909">Tampilkan opsi aksesibilitas di menu baki sistem layar login</translation>
 <translation id="2415715982424988916">Jelajahi (didukung sejak versi 91)</translation>
 <translation id="2421677964966613267">Kebijakan ini tidak digunakan lagi di M88, Flash tidak lagi didukung oleh Chrome. Jika kebijakan disetel, Anda akan dapat menetapkan daftar pola URL yang menentukan situs yang tidak dapat menjalankan plugin <ph name="FLASH_PLUGIN_NAME" />.
 
@@ -1481,6 +1491,10 @@
       Jika Anda menonaktifkan setelan ini, <ph name="PRODUCT_NAME" /> tidak akan mendeteksi saat jendela tertutup oleh jendela lain.
 
       Jika kebijakan ini tidak disetel, deteksi penghalangan akan diaktifkan.</translation>
+<translation id="2462606868915618110">Mulai M108, semua metode <ph name="FILE_SYSTEM_SYNC_ACCESS_HANDLE" /> akan dipanggil secara sinkron.
+      Hingga M110, kebijakan ini akan mengaktifkan kembali pemanggilan metode <ph name="FILE_SYSTEM_SYNC_ACCESS_HANDLE" /> asinkron.
+      Jika kebijakan ini disetel ke Aktif, metode <ph name="FILE_SYSTEM_SYNC_ACCESS_HANDLE" /> akan dipanggil secara asinkron.
+      Jika kebijakan ini disetel ke Nonaktif atau tidak disetel, semua metode <ph name="FILE_SYSTEM_SYNC_ACCESS_HANDLE" /> akan dipanggil secara sinkron.</translation>
 <translation id="2463034609187171371">Mengaktifkan paket penyandian DHE di TLS</translation>
 <translation id="2463365186486772703">Lokal aplikasi</translation>
 <translation id="2463832514638083341">Kebijakan ini mengontrol jangka waktu penyimpanan metadata pekerjaan cetak di perangkat, dalam hari.
@@ -1550,6 +1564,7 @@
 <translation id="2520551905471951523">Gunakan prioritas tinggi untuk proses audio</translation>
 <translation id="2521581787935130926">Tampilkan pintasan aplikasi di bilah bookmark</translation>
 <translation id="2522304491589804974">Mengonfigurasi daftar penginstalan ekstensi yang diizinkan</translation>
+<translation id="2523511232831599126">Aktifkan pintasan aksesibilitas di layar login</translation>
 <translation id="2529880111512635313">Mengonfigurasi daftar aplikasi dan ekstensi yang dipasang secara paksa</translation>
 <translation id="253135976343875019">Menunda peringatan waktu menganggur saat menggunakan daya AC</translation>
 <translation id="2535370400681639351">Jika kebijakan disetel ke Aktif, permintaan autentikasi gnubby akan diteruskan lewat proxy di seluruh koneksi host jarak jauh.
@@ -1600,6 +1615,7 @@
 
       Jika kebijakan tidak disetel, <ph name="PRODUCT_NAME" /> akan memuat semua host pesan native yang terinstal.</translation>
 <translation id="2568488785376704318">Kebijakan ini tidak digunakan lagi. Sebagai gantinya, gunakan <ph name="REMOTE_ACCESS_HOST_DOMAIN_LIST_POLICY_NAME" />.</translation>
+<translation id="2570059561924004903">Nonaktifkan respons lisan</translation>
 <translation id="2575198840408498393">Nonaktifkan pembuatan profil roaming</translation>
 <translation id="2576324725151524912">Mengizinkan Mode Developer Aplikasi Terisolasi.</translation>
 <translation id="257788512393330403">Sandi harus dimasukkan setiap enam jam</translation>
@@ -1694,6 +1710,7 @@
 <translation id="2706708761587205154">Hanya izinkan pencetakan dengan PIN</translation>
 <translation id="2707873794476722903">Safe Browsing aktif dalam mode standar.</translation>
 <translation id="2709516037105925701">Isi otomatis</translation>
+<translation id="2713977837384407666">Selalu kirim metrik ke Google</translation>
 <translation id="2714359695399346815">Jika kebijakan disetel ke Aktif atau tidak disetel, penggunaan server STUN akan diizinkan sehingga klien jarak jauh dapat menemukan serta terhubung ke perangkat ini, meskipun dipisahkan oleh firewall.
 
       Jika kebijakan disetel ke Nonaktif saat koneksi UDP keluar difilter oleh firewall, perangkat hanya akan mengizinkan koneksi dari perangkat klien dalam jaringan lokal.</translation>
@@ -1735,6 +1752,7 @@
 
       Kebijakan ini memerlukan penyiapan tambahan agar dapat berlaku. Buka https://support.google.com/chrome/a?p=chrome_enterprise_connector_policies_setting untuk informasi selengkapnya.</translation>
 <translation id="2731627323327011390">Menonaktifkan penggunaan sertifikat <ph name="PRODUCT_OS_NAME" /> untuk aplikasi ARC</translation>
+<translation id="2737917415184832294">Gunakan HTTPS untuk download update</translation>
 <translation id="2742843273354638707">Menyembunyikan aplikasi Chrome Webstore serta link footer dari Halaman Tab Baru dan peluncur aplikasi <ph name="PRODUCT_OS_NAME" />.
 
       Jika kebijakan ini disetel ke true, ikon akan disembunyikan.
@@ -1765,6 +1783,7 @@
 
       Jika kebijakan ini disetel ke salah (false), penampil PDF tidak akan dapat menganotasi PDF.</translation>
 <translation id="2769952903507981510">Mengonfigurasi nama domain yang dibutuhkan untuk hosting akses jarak jauh</translation>
+<translation id="2772231477628401250">Gunakan HTTP untuk download update</translation>
 <translation id="2772650717382565415">Menyetel kebijakan akan menentukan daftar aplikasi web yang diinstal otomatis, tanpa interaksi pengguna, dan yang tidak dapat di-uninstal atau dinonaktifkan pengguna.
 
       Setiap item daftar kebijakan adalah objek yang berisi satu elemen wajib:
@@ -1864,8 +1883,10 @@
 <translation id="2835686964326214400">Menyetel jadwal kustom untuk memulai ulang perangkat</translation>
 <translation id="2838830882081735096">Jangan izinkan migrasi data dan ARC</translation>
 <translation id="2839294585867804686">Pengaturan Berbagi File Jaringan</translation>
+<translation id="2841911109921764691">Tombol kanan menjadi tombol utama di layar login</translation>
 <translation id="284288632677954003">URL file XML yang berisi URL yang tidak akan memicu pengalihan browser.</translation>
 <translation id="2846689894646472396">Interval pemeriksaan aktivitas jaringan dalam milidetik.</translation>
+<translation id="2849275596224278787">Sembunyikan opsi aksesibilitas di menu baki sistem layar login</translation>
 <translation id="2853649500575897584">Jangan blokir titik ekstensi lama dalam Proses browser</translation>
 <translation id="285480231336205327">Aktifkan mode kontras tinggi</translation>
 <translation id="285627849510728211">Menetapkan konfigurasi hari mode pengisian daya baterai lanjutan</translation>
@@ -2162,6 +2183,7 @@
       Untuk informasi selengkapnya tentang pola <ph name="URL_LABEL" /> yang valid, lihat https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns.  Kebijakan ini hanya mencocokkan berdasarkan asal, sehingga jalur apa pun di pola URL akan diabaikan.</translation>
 <translation id="3118552207903834734">Mengizinkan pengguna mengonfigurasi nama host perangkatnya</translation>
 <translation id="3122082892722698079">Mengontrol penggunaan pengecualian konten tidak aman</translation>
+<translation id="3126748868885248792">Tombol kanan menjadi tombol utama</translation>
 <translation id="3128072319047570212">Setelan keygen</translation>
 <translation id="3131703464330936425">Jangan izinkan roaming data seluler</translation>
 <translation id="3135820765957090754">Jika setelan ini diaktifkan, pengguna akan diizinkan untuk menyinkronkan konfigurasi jaringan Wi-Fi antara perangkat <ph name="PRODUCT_OS_NAME" /> dan ponsel Android yang terhubung. Sebelum konfigurasi jaringan Wi-Fi dapat disinkronkan, pengguna harus secara eksplisit memilih untuk menggunakan fitur ini dengan menyelesaikan alur penyiapan.
@@ -2279,6 +2301,7 @@
 <translation id="3211426942294667684">Setelan login browser</translation>
 <translation id="3219421230122020860">Mode samaran tersedia</translation>
 <translation id="3220624000494482595">Jika aplikasi kios adalah aplikasi Android, aplikasi tersebut tidak akan memiliki kontrol terhadap versi <ph name="PRODUCT_OS_NAME" />, meski kebijakan ini disetel ke <ph name="TRUE" />.</translation>
+<translation id="3222088741899353813">Tombol kiri menjadi tombol utama di layar login</translation>
 <translation id="322359555555487980">Menentukan ketersediaan variasi di <ph name="PRODUCT_OS_NAME" /></translation>
 <translation id="3229163415739929305">Jika kebijakan disetel ke Aktif atau tidak disetel, pengambilan metadata pemuatan halaman dan model machine learning yang meningkatkan pengalaman penjelajahan akan diaktifkan.
       Jika kebijakan disetel ke Nonaktif, beberapa fitur mungkin tidak berfungsi dengan benar.</translation>
@@ -2358,6 +2381,7 @@
       Jika <ph name="PRODUCT_NAME" /> tidak ditutup dengan benar (misalnya, browser atau OS mengalami error), data penjelajahan akan dihapus saat berikutnya profil dimuat.</translation>
 <translation id="3264793472749429012">Penyandiaksaraan penyedia penelusuran default</translation>
 <translation id="3273221114520206906">Setelan JavaScript default</translation>
+<translation id="3278042410658310805">Nonaktifkan respons lisan di layar login dan izinkan pengguna mengaktifkannya untuk sementara</translation>
 <translation id="3282240846541032181">Kebijakan ini memungkinkan admin menentukan aplikasi yang bertindak sebagai pengendali default untuk setiap ekstensi file di <ph name="PRODUCT_OS_NAME" /> yang tidak dapat diubah pengguna.
       Untuk semua ekstensi file yang tidak ditentukan dalam kebijakan, pengguna bebas menetapkan setelan default mereka sendiri sesuai dengan alur kerja biasa.
 
@@ -2453,6 +2477,7 @@
       Lihat https://support.google.com/chrome/a?p=Supported_directory_variables untuk mengetahui daftar variabel yang dapat digunakan.
 
       Jika kebijakan ini tidak disetel, jalur profil default akan digunakan dan pengguna akan dapat menggantinya dengan tanda command line '--user-data-dir'.</translation>
+<translation id="338149029069528354">Jangan hapus data pengguna lokal</translation>
 <translation id="3381968327636295719">Gunakan browser host jika tidak diubah</translation>
 <translation id="3387211681524224831">Jika kebijakan disetel ke Aktif, histori penjelajahan tidak akan disimpan, sinkronisasi tab akan dinonaktifkan, dan pengguna tidak dapat mengubah setelan ini.
 
@@ -2638,6 +2663,7 @@
 
           Jika kebijakan ini tidak ditetapkan, fitur klik untuk diucapkan mula-mula dinonaktifkan, tetapi dapat diaktifkan oleh pengguna kapan saja.</translation>
 <translation id="3587482841069643663">Semua</translation>
+<translation id="3587766503874071316">Nonaktifkan pintasan aksesibilitas</translation>
 <translation id="3589193811812796052">Cegah modul WebAssembly dikirim lintas asal</translation>
 <translation id="3591527072193107424">Mengaktifkan fitur Dukungan Browser Lama.</translation>
 <translation id="3591584750136265240">Mengonfigurasi perilaku autentikasi proses masuk</translation>
@@ -2983,6 +3009,7 @@
           Jika kebijakan ini tidak ditetapkan, tombol lekat mula-mula akan dinonaktifkan di layar login, tetapi dapat diaktifkan oleh pengguna kapan saja.</translation>
 <translation id="3927291637826333102">Mengizinkan tangkapan Desktop, Jendela, dan Tab berdasarkan asal berikut</translation>
 <translation id="3928726028264020458">Aktifkan pelaporan info VPD perangkat</translation>
+<translation id="3941289958028934630">Nonaktifkan respons lisan di layar login</translation>
 <translation id="3943930334592166130">Kebijakan ini mengontrol apakah pengguna akan diminta memilih sertifikat klien saat lebih dari satu sertifikat cocok dengan <ph name="AUTO_SELECT_CERTIFICATE_FOR_URLS_POLICY_NAME" />.
       Jika kebijakan ini disetel ke Aktif, pengguna akan diminta memilih sertifikat klien setiap kali kebijakan pemilihan otomatis cocok dengan beberapa sertifikat.
       Jika kebijakan ini disetel ke Nonaktif atau tidak disetel, pengguna mungkin hanya diminta saat tidak ada sertifikat yang cocok dengan pemilihan otomatis.</translation>
@@ -3070,6 +3097,7 @@
       Jika kebijakan tidak disetel, Chrome akan menggunakan direktori download default, dan pengguna dapat mengubahnya.
 
       Catatan: Lihat daftar variabel yang dapat Anda gunakan ( https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables ).</translation>
+<translation id="4030152268425532846">Nonaktifkan pembatalan login otomatis</translation>
 <translation id="4041577849977347218">Jika kebijakan ini disetel ke Aktif atau tidak disetel, file yang didownload akan dikirim untuk dianalisis oleh Safe Browsing, meskipun jika file berasal dari sumber tepercaya.
 
       Jika kebijakan disetel ke Nonaktif, file yang didownload tidak akan dikirim untuk dianalisis oleh Safe Browsing jika file berasal dari sumber tepercaya.
@@ -3081,6 +3109,7 @@
 <translation id="4051723201852944592">Mengaktifkan Penghalangan Jendela</translation>
 <translation id="4052529125939620019">Memuat ekstensi komponen CryptoToken saat browser dimulai</translation>
 <translation id="4053157306171963473">Nonaktifkan pelaporan waktu aktivitas perangkat</translation>
+<translation id="4053612967614057854">Nonaktifkan keyboard virtual</translation>
 <translation id="4056910949759281379">Nonaktifkan protokol SPDY</translation>
 <translation id="4061107397839125009">Menyetel kebijakan memungkinkan Anda menetapkan daftar pola URL yang menentukan situs yang tidak dapat menampilkan notifikasi.
 
@@ -3088,6 +3117,7 @@
 
       Untuk informasi selengkapnya tentang pola <ph name="URL_LABEL" /> yang valid, lihat https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns.  <ph name="WILDCARD_VALUE" /> bukanlah nilai yang diterima untuk kebijakan ini.</translation>
 <translation id="4061590579642538878">Laporkan informasi tentang laporan kerusakan.</translation>
+<translation id="4072225853834793549">Nonaktifkan pintasan aksesibilitas di layar login</translation>
 <translation id="4075675819066819571">Posisikan rak di sisi kiri layar</translation>
 <translation id="408029843066770167">Izinkan kueri ke layanan waktu Google</translation>
 <translation id="408076456549153854">Aktifkan login browser</translation>
@@ -3257,6 +3287,7 @@
 <translation id="4203879074082863035">Hanya printer yang diizinkan yang ditampilkan kepada pengguna</translation>
 <translation id="4204327073692415353">Jangan minta pengguna memilih sertifikat klien di layar login</translation>
 <translation id="4205316772333487392">Paksa penggunaan SafeSearch di Google Penelusuran</translation>
+<translation id="4206464220361823768">Nonaktifkan kursor besar di layar login</translation>
 <translation id="4209297478239988291">Mengaktifkan fitur aksesibilitas klik otomatis.
 
           Fitur ini berfungsi untuk mengklik tanpa perlu menekan mouse atau touchpad secara langsung, cukup arahkan kursor ke objek yang ingin Anda klik.
@@ -3340,6 +3371,7 @@
       Kebijakan ini akan diabaikan dan notifikasi akan selalu ditampilkan jika perangkat tidak dikelola atau hanya terdapat satu pengguna.
 
       Jika terdapat beberapa akun pengguna di perangkat terkelola, notifikasi hanya akan ditampilkan saat kebijakan ini diaktifkan.</translation>
+<translation id="4303167373847512281">Izinkan mode developer</translation>
 <translation id="4311195029067684288">Penuh</translation>
 <translation id="4313767483634435271">Alamat MAC dok yang ditetapkan untuk perangkat</translation>
 <translation id="4314538398999793073">Nonaktifkan pencarian CNAME selama autentikasi Kerberos</translation>
@@ -3378,6 +3410,7 @@
 <translation id="4369307906396795087">Skrip untuk pekerja (Pekerja Web, Pekerja Layanan, dll.) menggunakan pemeriksaan jenis MIME longgar. Skrip pekerja dengan jenis MIME lama, seperti <ph name="MIMETYPE_TEXT_ASCII" />, akan berfungsi.</translation>
 <translation id="4370937370030117032">Nonaktifkan pengiriman nama pengguna dan nama file ke printer native</translation>
 <translation id="4372704773119750918">Jangan izinkan pengguna perusahaan untuk menjadi bagian dari multiprofil (primer atau sekunder)</translation>
+<translation id="4373332965635821723">Aktifkan pintasan aksesibilitas</translation>
 <translation id="4377599627073874279">Izinkan semua situs menampilkan semua gambar</translation>
 <translation id="437791893267799639">Kebijakan tidak disetel, jangan izinkan migrasi data dan ARC</translation>
 <translation id="4380159792986204036">Mengizinkan Kios Web membuka lebih dari satu jendela browser di layar mana pun</translation>
@@ -3722,6 +3755,7 @@
 
       Jika Anda menetapkan kebijakan, pengguna tidak dapat mengubahnya. Jika tidak ditetapkan, pengguna akan menentukan untuk menyembunyikan rak secara otomatis atau tidak.</translation>
 <translation id="4812714598405913256">Mengonfigurasi pesan batas akhir update otomatis untuk kebijakan DeviceMinimumVersion</translation>
+<translation id="4815581264328351694">Tampilkan opsi aksesibilitas di menu baki sistem</translation>
 <translation id="4816674326202173458">Memungkinkan pengguna perusahaan menjadi primer dan sekunder (Perilaku default untuk pengguna yang tidak dikelola)</translation>
 <translation id="4820432864264617413">Cegah <ph name="BOREALIS_NAME" /> berjalan untuk pengguna</translation>
 <translation id="4821987881803903281">Memblokir izin Penempatan Jendela di situs ini</translation>
@@ -4198,6 +4232,7 @@
 <translation id="5293044154216294358">Jika kebijakan ditetapkan ke Benar (True), pengguna akan diizinkan untuk memainkan game dinosaurus. Jika kebijakan ditetapkan ke Salah (False), pengguna tidak dapat memainkan game dinosaurus sebagai fitur tersembunyi saat perangkat offline.
 
       Jika kebijakan tidak ditetapkan, pengguna tidak dapat memainkan game di <ph name="PRODUCT_OS_NAME" /> yang terdaftar, tetapi dapat memainkannya dalam kondisi lain.</translation>
+<translation id="5293285950307241933">Hapus semua data pengguna lokal</translation>
 <translation id="529457411593078576">Menampilkan Persyaratan Layanan (ToS) saat CCT pertama kali dijalankan</translation>
 <translation id="5297948043665200363">Izinkan pengguna tetap login setelah akunnya menjadi tidak terautentikasi</translation>
 <translation id="5298949392804966105">Tidak ada batasan di akun terkelola</translation>
@@ -4208,8 +4243,10 @@
 <translation id="5306186200045823863">Mengaktifkan kepercayaan pada Infrastruktur IKP Lama milik Symantec Corporation</translation>
 <translation id="5307432759655324440">Ketersediaan mode samaran</translation>
 <translation id="5308551343115571396">Setelah <ph name="LACROS_NAME" /> dinonaktifkan, kami akan mencoba menyimpan data pengguna sebanyak mungkin, sekaligus menghapus semua data browser.</translation>
+<translation id="530949964068726932">Sembunyikan opsi aksesibilitas di menu baki sistem</translation>
 <translation id="5311275381462687162">Setelan default perilaku cookie <ph name="ATTRIBUTE_SAMESITE_NAME" /> lama</translation>
 <translation id="5312253627576569499">Persentase yang digunakan untuk menskalakan penundaan peredupan layar ketika terdapat aktivitas pengguna saat layar redup atau segera setelah layar dimatikan.</translation>
+<translation id="5316856058059940708">Nonaktifkan kursor besar</translation>
 <translation id="5317852436044398288">Menyetel kebijakan memungkinkan Anda menetapkan daftar pola URL yang dapat menggunakan Tangkapan Jendela dan Tab.
 
       Jika kebijakan tidak disetel, situs tidak akan dianggap sebagai penggantian pada tingkat Tangkapan ini.
@@ -4221,11 +4258,13 @@
       Untuk informasi selengkapnya tentang pola <ph name="URL_LABEL" /> yang valid, lihat https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns.  Kebijakan ini hanya mencocokkan berdasarkan asal, sehingga jalur apa pun di pola URL akan diabaikan.</translation>
 <translation id="5318185076587284965">Aktifkan penggunaan server relay oleh hosting akses jarak jauh</translation>
 <translation id="5323200200131319468">Mengaktifkan respons lisan di layar login</translation>
+<translation id="5323355956693037267">Aktifkan keyboard virtual di layar login</translation>
 <translation id="532848608876725157">Aktifkan DNS-over-HTTPS dengan fallback yang tidak aman</translation>
 <translation id="5328965694451556034">Melaporkan login/logout</translation>
 <translation id="5329018127554115226">Mode Efisiensi Tinggi akan dinonaktifkan.</translation>
 <translation id="5330684698007383292">Izinkan <ph name="PRODUCT_FRAME_NAME" /> menangani jenis konten berikut</translation>
 <translation id="5331746669335642668">Kebijakan cloud <ph name="PRODUCT_NAME" /> menggantikan kebijakan Platform.</translation>
+<translation id="5334501839642146593">Jangan pernah kirim metrik ke Google</translation>
 <translation id="5346587320074666194">Memblokir akses ke sensor di situs ini</translation>
 <translation id="5357039649371478544">Mengonfigurasi daftar aturan untuk mencegah kebocoran data di <ph name="PRODUCT_OS_NAME" />.
       Kebocoran data dapat terjadi dengan menyalin dan menempelkan data, mentransfer file, mencetak, berbagi layar, atau mengambil screenshot ...dll.
@@ -4270,6 +4309,7 @@
 <translation id="5371152055157582429">Pengguna dapat menyesuaikan latar belakang halaman Tab Baru</translation>
 <translation id="5377606826822211923">Mengontrol penggunaan aplikasi Android dari sumber yang tidak tepercaya untuk pengguna</translation>
 <translation id="537786648513450280">Mengontrol penggunaan aplikasi Android dari sumber yang tidak tepercaya untuk perangkat</translation>
+<translation id="5378885577701865339">Nonaktifkan fitur papan klip bersama</translation>
 <translation id="5379858577608862519">Menentukan apakah penerusan port ke penampung Crostini diizinkan.
 
       Jika kebijakan ini disetel ke Benar (True) atau tidak disetel, pengguna akan dapat mengonfigurasi port penerusan ke penampung Crostini.
@@ -4469,6 +4509,7 @@
 
       Jika tidak ditentukan, tidak akan mengubah URL bibit Variasi.</translation>
 <translation id="5561811616825571914">Memilih sertifikat klien untuk situs ini secara otomatis di layar login</translation>
+<translation id="5561893881195372931">Nonaktifkan kontras tinggi</translation>
 <translation id="5563240289883266691">Aktifkan pelaporan penggunaan aplikasi Linux</translation>
 <translation id="5565178130821694365">Sandi harus dimasukkan setiap dua hari (48 jam)</translation>
 <translation id="5566210228171064229">Izinkan pencetakan dengan dan tanpa PIN</translation>
@@ -4501,6 +4542,7 @@
 
       Jika kebijakan ini tidak ditetapkan, tindakan defaultnya adalah tidak diizinkan untuk pengguna yang dikelola perusahaan dan diizinkan untuk pengguna yang tidak dikelola.</translation>
 <translation id="5584132346604748282">Mengontrol layanan lokasi Google di Android</translation>
+<translation id="5584609869321980122">Mulai penundaan pengelolaan daya dan batas durasi sesi setelah aktivitas awal pengguna</translation>
 <translation id="5586942249556966598">Tidak melakukan apa-apa</translation>
 <translation id="5598417829613725146">Canvas (didukung sejak versi 90)</translation>
 <translation id="5599461642204007579">Setelan pengelolaan <ph name="MS_AD_NAME" /></translation>
@@ -4688,6 +4730,7 @@
 <translation id="5776485039795852974">Tanyakan setiap kali situs ingin menampilkan pemberitahuan desktop</translation>
 <translation id="5783009211970309878">Cetak Header dan Footer</translation>
 <translation id="5790763087505467169">Mengurangi Notifikasi otomatis untuk sesi tamu terkelola</translation>
+<translation id="5800329278018669527">Nonaktifkan perintah konfigurasi jaringan saat offline</translation>
 <translation id="5802931736499687181">Nonaktifkan Pipeline Pelaporan Terenkripsi</translation>
 <translation id="5806128552675651249">Izinkan pencetakan hanya tanpa grafis latar belakang</translation>
 <translation id="5809210507920527553">Mengontrol setelan untuk container Linux (Crostini).</translation>
@@ -4699,6 +4742,7 @@
 <translation id="5830196507442186669">Izinkan perangkat untuk menggunakan <ph name="BOREALIS_NAME" /> di <ph name="PRODUCT_OS_NAME" /></translation>
 <translation id="5831286647961890695">Aktifkan model pengisian daya adaptif di <ph name="PRODUCT_OS_NAME" /></translation>
 <translation id="5832274826894536455">Kebijakan yang tidak digunakan lagi</translation>
+<translation id="5834583755928064072">Cegah pengguna mengubah saluran rilis</translation>
 <translation id="5835253272509953988">Jika kebijakan disetel ke Aktif, pengguna dapat membuat <ph name="PRODUCT_NAME" /> memeriksa apakah nama pengguna dan sandi yang dimasukkan adalah bagian dari kebocoran.
 
       Jika kebijakan disetel, pengguna tidak dapat mengubahnya di <ph name="PRODUCT_NAME" />. Jika tidak disetel, pemeriksaan kebocoran kredensial akan diizinkan, tetapi pengguna dapat menonaktifkannya. 
@@ -4824,6 +4868,11 @@
 <translation id="5958746038080720143">Aktifkan pengoptimalan Web Proxy Auto-Discovery (WPAD)</translation>
 <translation id="5961137303188584693">Alamat MAC NIC bawaan perangkat</translation>
 <translation id="5963752574792883406">port 990 (blokir dapat dibatalkan hingga 01/02/2022)</translation>
+<translation id="5964583455815172553">Menyetel kebijakan ini akan menentukan daftar aplikasi web terisolasi (IWA) yang diinstal secara otomatis.
+      IWA adalah aplikasi yang memiliki properti keamanan yang berguna dan tidak tersedia untuk halaman web normal. Aplikasi tersebut dikemas dalam Paket Web Bertanda Tangan. Kunci publik Paket Web Bertanda Tangan digunakan untuk membuat ID Paket Web yang mengidentifikasi IWA.
+      Sejauh ini, kebijakan ini hanya berfungsi untuk Sesi Tamu Terkelola.
+
+      Setiap item daftar kebijakan merupakan objek dengan <ph name="URL_LABEL" /> manifes update dan ID Paket Web Aplikasi Web Terisolasi. Kedua kolom wajib diisi.</translation>
 <translation id="5966615072639944554">Ekstensi yang diizinkan untuk menggunakan API pengesahan jarak jauh</translation>
 <translation id="596732417280023843">Nama profil sertifikat.</translation>
 <translation id="5972538402066550344">Izinkan kontrol pelaporan terperinci</translation>
@@ -4879,6 +4928,7 @@
 <translation id="6046615715547751255">Jangan izinkan kontrol pelaporan terperinci</translation>
 <translation id="6048199181629830227">Mengaktifkan fitur manajemen pengaktifan daya baterai</translation>
 <translation id="6049117606554031363">Aktifkan pelaporan status board perangkat</translation>
+<translation id="6050796253724099706">Aktifkan respons lisan di layar login</translation>
 <translation id="6053681087509103368">Izinkan WebRTC menggunakan versi protokol TLS/DTLS yang usang</translation>
 <translation id="6058879286588763839">Menyetel <ph name="DEVICE_BATTERY_CHARGE_MODE_POLICY_NAME" /> akan menentukan kebijakan pengelolaan daya mode pengisian daya baterai (jika didukung di perangkat), kecuali <ph name="DEVICE_ADVANCED_BATTERY_CHARGE_MODE_ENABLED_POLICY_NAME" /> yang menggantikan <ph name="DEVICE_BATTERY_CHARGE_MODE_POLICY_NAME" /> ditentukan. Untuk memperpanjang masa pakai baterai, kebijakan secara dinamis mengontrol pengisian daya baterai dengan meminimalkan ketegangan dan keausan.
 
@@ -5200,6 +5250,7 @@
 
       Jika kebijakan ini tidak disetel atau daftar kosong, semua skema akan dapat diakses di <ph name="PRODUCT_NAME" />.</translation>
 <translation id="6338982178236723271">Melaporkan info sistem</translation>
+<translation id="6339355882150329269">Jangan menganggap pengguna sebagai tidak ada aktivitas saat video diputar</translation>
 <translation id="6352714113109004581">Menyetel kebijakan memungkinkan Anda menetapkan daftar pola URL yang menentukan situs mana yang dapat meminta izin kepada pengguna untuk mengakses perangkat HID.
 
       Tidak menyetel kebijakan berarti <ph name="DEFAULT_WEB_HID_GUARD_SETTING_POLICY_NAME" /> akan berlaku untuk semua situs, jika disetel. Jika tidak, setelan pribadi pengguna akan berlaku.
@@ -5715,6 +5766,7 @@
 <translation id="6841254611279513739">Menyetel kebijakan pencetakan ke hanya warna, hanya monokrom, atau tanpa batasan mode warna. Jika kebijakan tidak disetel, artinya tidak ada batasan.</translation>
 <translation id="6843008643303282259">Kecepatan upload yang diinginkan dalam kbit/dtk.</translation>
 <translation id="6843296367238757293">Kebijakan ini tidak digunakan lagi. Penggunaannya tidak disarankan. Baca selengkapnya di https://support.google.com/chrome/a/answer/7643500</translation>
+<translation id="6845162369344636241">Nonaktifkan keyboard virtual di layar login</translation>
 <translation id="6846126863870444592">Kebijakan ini menentukan ekstensi yang diizinkan untuk melewati dialog konfirmasi tugas pencetakan ketika menggunakan fungsi <ph name="PRINTING_API" /> <ph name="SUBMIT_JOB_FUNCTION" /> untuk mengirimkan tugas pencetakan.
 
       Jika ekstensi tidak ada dalam daftar, atau daftar tidak ditetapkan, dialog konfirmasi tugas pencetakan akan ditampilkan ke pengguna untuk setiap panggilan fungsi <ph name="SUBMIT_JOB_FUNCTION" />.
@@ -6217,6 +6269,7 @@
       Jika kebijakan ini disetel ke 'RemoveLRUIfDormant', pembersihan otomatis akan tetap membuang pengguna yang tidak melakukan proses masuk minimal selama 3 bulan dalam urutan yang paling lama tidak diakses hingga terdapat ruang kosong yang memadai.
 
       Jika kebijakan ini tidak disetel, pembersihan otomatis menggunakan strategi yang tertanam secara default. Saat ini, itu adalah strategi 'RemoveLRUIfDormant'.</translation>
+<translation id="733381360015511815">Mengonfigurasi daftar Aplikasi Web Terisolasi yang diinstal otomatis</translation>
 <translation id="7334517274921831425">Mengizinkan pengguna untuk menggunakan <ph name="BOREALIS_NAME" /> di <ph name="PRODUCT_OS_NAME" /></translation>
 <translation id="7336785017449297672">Mengontrol setelan jam dan zona waktu.</translation>
 <translation id="7336878834592315572">Menyimpan cookie selama durasi sesi</translation>
@@ -6673,6 +6726,7 @@
           Jika kebijakan ini diaktifkan, fungsi Kerberos akan diaktifkan. Akun Kerberos dapat ditambahkan melalui kebijakan 'Konfigurasikan akun Kerberos' atau melalui Setelan akun Kerberos di halaman setelan Kerberos.
 
           Jika kebijakan ini dinonaktifkan atau tidak disetel, Setelan akun Kerberos akan dinonaktifkan. Tidak ada akun Kerberos yang dapat ditambahkan dan autentikasi Kerberos tidak dapat digunakan. Semua akun Kerberos yang ada dan sandi yang disimpan telah dihapus.</translation>
+<translation id="7853140303943875314">Aktifkan pembatalan login otomatis</translation>
 <translation id="7863947545897944083">Mengaktifkan fitur aksesibilitas kontras tinggi di layar login.
 
           Jika kebijakan ini ditetapkan ke true, kontras tinggi akan selalu diaktifkan di layar login.
@@ -6869,6 +6923,12 @@
 <translation id="8078297389450285582">Jika kebijakan disetel ke Aktif atau tidak disetel, model redup smart akan diaktifkan dan dapat memperpanjang waktu hingga layar diredupkan. Jika model tersebut menunda waktu peredupan, penundaan penonaktifan layar, penguncian layar, dan tidak ada aktivitas akan disesuaikan untuk mempertahankan jarak waktu yang sama dari penundaan peredupan layar seperti yang disetel sebelumnya.
 
       Jika kebijakan disetel ke Nonaktif, model redup smart tidak akan memengaruhi peredupan layar.</translation>
+<translation id="8079544387901313374">Perlu diperhatikan bahwa kebijakan ini tidak digunakan lagi dan dihapus di <ph name="PRODUCT_OS_NAME" /> versi 88. Sesi publik tidak lagi didukung. Sebagai gantinya, gunakan <ph name="DEVICE_LOCAL_ACCOUNTS_POLICY_NAME" /> untuk mengonfigurasi sesi tamu terkelola.
+      Jika kebijakan ini disetel ke salah (false), sesi tamu terkelola akan berperilaku seperti yang didokumentasikan di https://support.google.com/chrome/a/answer/3017014 - "Sesi Publik" standar.
+
+      Jika kebijakan ini disetel ke benar (true) atau tidak disetel, sesi tamu terkelola akan melakukan perilaku "Sesi Terkelola" yang menghilangkan banyak batasan yang berlaku untuk "Sesi Publik" reguler.
+
+      Jika kebijakan ini disetel, pengguna tidak dapat mengubah atau menggantinya.</translation>
 <translation id="8080200590486938727">Nonaktifkan pencari plugin</translation>
 <translation id="8089200718228084417">Aktifkan pencetakan privet yang tidak digunakan lagi</translation>
 <translation id="8089236320223488328">Gunakan perilaku default saat menentukan apakah situs yang tidak aman dapat membuat permintaan ke endpoint jaringan mana pun</translation>
@@ -6906,6 +6966,7 @@
 <translation id="8133152694354699657">Jika kebijakan ditetapkan ke Benar (True) atau tidak ditetapkan, fitur Sentuh untuk Menelusuri akan tersedia bagi pengguna, dan mereka dapat mengaktifkan atau menonaktifkannya.
 
       Jika kebijakan ditetapkan ke Salah (False), fitur Sentuh untuk Menelusuri akan dinonaktifkan sepenuhnya.</translation>
+<translation id="81354521512895891">Aktifkan kontras tinggi di layar login</translation>
 <translation id="8136345780578030573">Mengaktifkan Set Pihak Pertama.</translation>
 <translation id="8136906469922284163">Jika kebijakan disetel ke Benar (True), halaman akan menampilkan pop-up saat halaman menghapus muatan.
 
@@ -6960,8 +7021,10 @@
 
       Jika kebijakan disetel ke Nonaktif atau tidak disetel, paket tidak akan dikirim.</translation>
 <translation id="8169452762291746260">Nonaktifkan pemantauan kondisi perangkat</translation>
+<translation id="8171262216089271568">Aktifkan kursor besar di layar login</translation>
 <translation id="8171924760436219650">Mengalihkan tombol mouse utama ke tombol kanan pada layar login</translation>
 <translation id="8173864651667424191">Opsi Cetak sebagai gambar akan disetel sebagai default untuk pratinjau cetak dokumen PDF jika tersedia.</translation>
+<translation id="8175922758834816585">Aktifkan respons lisan di layar login dan izinkan pengguna menonaktifkannya untuk sementara</translation>
 <translation id="8176035528522326671">Memungkinkan pengguna perusahaan menjadi pengguna banyak profil primer saja (Perilaku default untuk pengguna yang dikelola perusahaan)</translation>
 <translation id="8179161412673077784">Cegah situs dengan pengalaman yang menyesatkan pengguna untuk membuka jendela atau tab baru</translation>
 <translation id="8183108371184777472">Sembunyikan peluncuran jendela browser</translation>
@@ -7399,6 +7462,7 @@
           Jika kebijakan ini tidak ditetapkan, durasi waktu default akan digunakan.
 
           Nilai kebijakan harus ditentukan dalam milidetik.</translation>
+<translation id="859937827887158048">Jangan izinkan download update otomatis peer to peer</translation>
 <translation id="8603454805657060638">Menyetel kebijakan memungkinkan administrator mengubah alamat MAC (kontrol akses media) saat menghubungkan perangkat ke dok. Jika dok dihubungkan ke beberapa model perangkat, alamat MAC dok yang ditetapkan untuk perangkat akan membantu mengidentifikasi perangkat di Ethernet secara default.
 
       Jika 'DeviceDockMacAddress' dipilih atau kebijakan ini tidak disetel, alamat MAC dok yang ditetapkan untuk perangkat akan digunakan.
@@ -7447,6 +7511,7 @@
 <translation id="8656110680728938054">Aktifkan fitur klik untuk diucapkan</translation>
 <translation id="8659843732895043951">Mengizinkan papan klip di situs ini</translation>
 <translation id="8661297125441579970">Jangan izinkan migrasi data dan ARC.</translation>
+<translation id="8661980316738569557">Aktifkan kontras tinggi</translation>
 <translation id="8664285601317301180">Kebijakan ini mengontrol nilai <ph name="IPP_ATTRIBUTE" /> <ph name="CLIENT_INFO_IPP_ATTRIBUTE" /> <ph name="IPP_PROTOCOL" /> (<ph name="INTERNET_PRINTING_PROTOCOL" />) dalam tugas pencetakan.
 
       Menyetel kebijakan ke string akan mengakibatkan penambahan item <ph name="CLIENT_INFO_IPP_ATTRIBUTE" /> tambahan ke setiap tugas pencetakan. Anggota <ph name="CLIENT_NAME_IPP_ATTRIBUTE" /> dari item <ph name="CLIENT_INFO_IPP_ATTRIBUTE" /> yang ditambahkan akan disetel ke nilai kebijakan setelah substitusi variabel.
@@ -7512,6 +7577,7 @@
 
       Jika kebijakan ditetapkan ke salah (false) atau tidak ditetapkan, informasi tidak akan dilaporkan.
       Jika ditetapkan ke benar (true), informasi Bluetooth perangkat akan dilaporkan.</translation>
+<translation id="8700633400000170881">Tombol kiri menjadi tombol utama</translation>
 <translation id="8703378568562190813">Menyetel kebijakan memungkinkan Anda menetapkan daftar pola URL yang menentukan aplikasi web mana yang diberikan akses ke berbagai jenis file.
 
       Tidak menyetel kebijakan berarti <ph name="DEFAULT_FILE_HANDLING_GUARD_SETTING_POLICY_NAME" /> akan berlaku untuk semua aplikasi web, jika disetel. Jika tidak, setelan pribadi pengguna akan digunakan.
@@ -7543,6 +7609,7 @@
       "http://notexample.com/", "http://example.com.invalid.com/", "http://example.comabc/" hanya cocok dalam mode 'Default'.
 
       "http://acme.com/ABC" hanya cocok dalam mode 'IESiteListMode'.</translation>
+<translation id="8734543507835977857">Mulai penundaan pengelolaan daya dan batas durasi sesi pada awal sesi</translation>
 <translation id="8736538322216687231">Memaksa Mode Terbatas YouTube minimum</translation>
 <translation id="8744844164152340112">Mengontrol tema yang digunakan untuk merender UI selama OOBE dan dalam sesi (gelap/terang/otomatis).
       Mode otomatis akan mengubah tema antara gelap dan terang secara otomatis saat matahari terbit dan tenggelam.
@@ -7679,6 +7746,7 @@
 <translation id="8880294585549584028">Izinkan akses tulis ke file dan direktori di situs ini</translation>
 <translation id="8882006618241293596">Blokir plugin <ph name="FLASH_PLUGIN_NAME" /> di situs ini</translation>
 <translation id="8882255181490012651">Melarang pengguna yang telah mengizinkan Phone Hub mengakses foto dan video yang terakhir diambil di ponselnya</translation>
+<translation id="8882307005437314052">Aktifkan keyboard virtual di layar login dan izinkan pengguna menonaktifkannya untuk sementara</translation>
 <translation id="8887709920496070892">Durasi waktu tanpa input pengguna sebelum dialog peringatan ditampilkan, dalam milidetik.</translation>
 <translation id="8890438048579188548">Sembunyikan peringatan <ph name="CLOUD_PRINT_NAME" /> tidak digunakan lagi</translation>
 <translation id="8891334958985336685">Nonaktifkan pelaporan info sistem perangkat</translation>
@@ -7955,6 +8023,7 @@
 
       Kebijakan ini adalah tindakan sementara dan akan dihapus di <ph name="PRODUCT_NAME" /> versi mendatang. Setelah kebijakan dihapus, <ph name="PRODUCT_NAME" /> akan dapat mengkueri jenis DNS tambahan kapan saja.</translation>
 <translation id="9167719789236691545">Nonaktifkan Drive di aplikasi File <ph name="PRODUCT_OS_NAME" /></translation>
+<translation id="9185963199234034321">Aktifkan kontras tinggi di layar login dan izinkan pengguna menonaktifkannya untuk sementara</translation>
 <translation id="9187743794267626640">Menonaktifkan pemasangan penyimpanan eksternal</translation>
 <translation id="9190456586252617675">Kebijakan ini mengontrol mode pengalaman aktivasi Asisten.
 
diff --git a/components/policy/resources/policy_templates_it.xtb b/components/policy/resources/policy_templates_it.xtb
index 559bf8b..ec9a12b 100644
--- a/components/policy/resources/policy_templates_it.xtb
+++ b/components/policy/resources/policy_templates_it.xtb
@@ -152,6 +152,7 @@
 
       L'impostazione di <ph name="CHROME_OS_RELEASE_CHANNEL_POLICY_NAME" /> ha effetto solo se <ph name="CHROME_OS_RELEASE_CHANNEL_DELEGATED_POLICY_NAME" /> è impostato su False.</translation>
 <translation id="1147732569915511430">L'hash SHA-256 dell'immagine dell'avatar.</translation>
+<translation id="1148415065145333943">Disattiva la modalità di ricarica avanzata della batteria</translation>
 <translation id="1151353063931113432">Consenti immagini su questi siti</translation>
 <translation id="1151987132434751822">Gli schemi di autenticazione per i quali è possibile applicare le credenziali del criterio. È possibile impostare uno dei seguenti valori:
             * basic
@@ -170,6 +171,7 @@
 <translation id="1160479894929412407">Consenti protocollo QUIC</translation>
 <translation id="1160939557934457296">Disattiva procedendo dalla pagina di avviso Navigazione sicura</translation>
 <translation id="1163080558183062209">Disattiva tipi di stampanti nell'elenco di tipi non consentiti</translation>
+<translation id="1165923723751466821">Consenti gli accessi come ospite al browser e gli accessi ai profili</translation>
 <translation id="117059611145966538">Server di stampa esterni</translation>
 <translation id="117080706484659953">Consenti il rilevamento dell'ambito dei criteri su <ph name="MAC_OS_NAME" /></translation>
 <translation id="1171106901454883937">Attiva i report sulle informazioni relative alla versione del dispositivo</translation>
@@ -222,6 +224,7 @@
 <translation id="120937472976628837">Segnala informazioni sulla ventola</translation>
 <translation id="1212233008927724662">Disattiva il caricamento lento di WebUI di accesso.</translation>
 <translation id="1216919699175573511">Attiva il supporto per Signed HTTP Exchange (SXG)</translation>
+<translation id="1219027971768347970">Utilizza la configurazione predefinita per la sandbox audio</translation>
 <translation id="1219695476179627719">Consente di specificare se il dispositivo deve eseguire il rollback alla versione impostata da <ph name="DEVICE_TARGET_VERSION_PREFIX_POLICY_NAME" /> nel caso in cui sia già in esecuzione una versione successiva.
 
       L'impostazione predefinita è RollbackDisabled.</translation>
@@ -490,6 +493,7 @@
 
       Le estensioni esterne e la relativa installazione sono illustrate all'indirizzo https://developer.chrome.com/apps/external_extensions.
       </translation>
+<translation id="1484190167468437592">Disattiva l'audio in formato mono</translation>
 <translation id="1486021504508098388">Segnala informazioni sulla retroilluminazione</translation>
 <translation id="1486469502848499602">Modifica la configurazione suggerita <ph name="KRB5_CONFIG" /> per i nuovi ticket creati manualmente.
 
@@ -502,6 +506,7 @@
 
       Nota: se ci sono più server, separane i nomi utilizzando virgole. I caratteri jolly (<ph name="WILDCARD_VALUE" />) sono consentiti.</translation>
 <translation id="1488724823347505879">Attiva la condivisione dalle app Android alle app web</translation>
+<translation id="1501644502684303995">Applica in modo forzato gli accessi online soltanto nella schermata di accesso</translation>
 <translation id="1502843533062797703">Attiva blocco inserimento da software di terze parti</translation>
 <translation id="1503969899251962413">La configurazione del criterio consente di specificare il codice licenza <ph name="PLUGIN_VM_NAME" /> per il dispositivo.
 
@@ -645,6 +650,7 @@
 
       Se il criterio viene impostato su Disattivato o se non viene configurato, sui sistemi non supportati vengono visualizzati degli avvisi.</translation>
 <translation id="1634989431648355062">Consenti il plug-in <ph name="FLASH_PLUGIN_NAME" /> su questi siti</translation>
+<translation id="1635748761015837179">Consenti la scrittura su dispositivi di archiviazione esterni</translation>
 <translation id="1639468541408865385">Attiva cache di autenticazione HTTP con ambito globale</translation>
 <translation id="1641394008743444477">Consente di impostare un elenco di funzionalità di <ph name="PRODUCT_OS_NAME" /> da disattivare.
 
@@ -660,6 +666,7 @@
 
       Se il criterio non viene configurato, vengono utilizzate le dimensioni della cache predefinite e gli utenti possono apportare modifiche con il flag --media-cache-size.</translation>
 <translation id="1648816843164517573">Elenco di nomi che eviteranno il controllo dei criteri HSTS</translation>
+<translation id="1651197070942919276">Non consentire al dispositivo di eseguire macchine virtuali</translation>
 <translation id="1654087023995670109">Applica modalità ospite del browser</translation>
 <translation id="1655229863189977773">Imposta le dimensioni della cache su disco in byte</translation>
 <translation id="165769015320654523">Concedi automaticamente a questi siti l'autorizzazione di connessione a dispositivi HID con gli ID fornitore e prodotto forniti.</translation>
@@ -718,6 +725,7 @@
 
       Nota: per esempi più dettagliati, consulta la pagina The Chromium Projects (https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett).</translation>
 <translation id="1700811900332333712">Consenti al dispositivo di richiedere il powerwash</translation>
+<translation id="1705215165572785706">Imposta i tasti della fila superiore come tasti multimediali, ma consenti la modifica da parte degli utenti</translation>
 <translation id="1708496595873025510">Imposta la limitazione sul recupero del numero di inizializzazione delle varianti</translation>
 <translation id="1709154322133526432">Attiva il controllo del browser predefinito all'avvio</translation>
 <translation id="1713829924716792485">Se il criterio viene impostato su Attivato o se non viene configurato, gli utenti connessi a un host di accesso remoto possono trasferire file dal client all'host e viceversa. Questo criterio non si applica alle connessioni di assistenza remota, che non supportano il trasferimento di file.
@@ -890,6 +898,7 @@
       Se il criterio è impostato su false o non viene configurato, <ph name="PRODUCT_NAME" /> non eseguirà i controlli delle revoche online in <ph name="PRODUCT_NAME" /> 19 e versioni successive.
 
       Nota: i controlli di <ph name="OCSP_CRL_LABEL" /> non forniscono vantaggi efficaci per la sicurezza.</translation>
+<translation id="1905061765326052857">Non consentire agli utenti non affiliati di usare le macchine virtuali necessarie per supportare le app Linux</translation>
 <translation id="1910704279188129272">Consente di impostare limiti di utilizzo per app.
         I limiti di utilizzo possono essere applicati alle app installate su <ph name="PRODUCT_OS_NAME" /> per l'utente in questione.
         I limiti devono essere impostati tramite un elenco |app_limits|. È consentita una sola voce per app. Le app non incluse nell'elenco non hanno limiti.
@@ -911,11 +920,14 @@
 <translation id="1920772397574801429">La configurazione del criterio consente di specificare il tipo di account, tra quelli forniti dall'app di autenticazione Android, che supporta l'autenticazione <ph name="HTTP_NEGOTIATE" />, ad esempio Kerberos. Queste informazioni dovrebbero essere messe a disposizione dal fornitore dell'app di autenticazione. Per i dettagli, consulta la pagina I progetti di Chromium ( https://goo.gl/hajyfN )
 
       Se il criterio non viene configurato, l'autenticazione <ph name="HTTP_NEGOTIATE" /> su Android viene disattivata.</translation>
+<translation id="1923704782248889851">Attiva la dettatura</translation>
 <translation id="1925529914257504750">Aggiornamento automatico P2P attivo</translation>
+<translation id="1930094135927166199">Disattiva USB PowerShare</translation>
 <translation id="1930127294345368978">Numero massimo consentito di fogli da utilizzare per un singolo processo di stampa</translation>
 <translation id="193259052151668190">Whitelist di dispositivi USB scollegabili</translation>
 <translation id="1933378685401357864">Immagine di sfondo</translation>
 <translation id="1942626390957213764">Disattiva hub di condivisione desktop</translation>
+<translation id="194407941132272412">Disattiva l'isolamento dei siti per tutti i siti web, ma consenti agli utenti di attivarlo</translation>
 <translation id="1945994447126139909">Questo criterio aziendale è finalizzato al periodo di transizione e verrà rimosso nella versione 88 di <ph name="PRODUCT_NAME" />.
 
       Il criterio relativo al referrer predefinito di Chrome sarà rafforzato passando dal relativo valore corrente no-referrer-when-downgrade al più sicuro strict-origin-when-cross-origin tramite un rilascio graduale della release stabile di Chrome 85.
@@ -1017,8 +1029,10 @@
 <translation id="2013285471046373727">Consente di specificare la modalità di installazione di un'app. OPTIONAL: l'app non viene installata automaticamente, ma può essere installata dall'utente. Si tratta del comportamento predefinito se questo criterio non viene specificato. PRELOAD: l'app viene installata automaticamente, ma l'utente può disinstallarla. FORCE_INSTALLED: l'app viene installata automaticamente è l'utente non può disinstallarla. BLOCKED: l'app è bloccata e non può essere installata. Se l'app è stata installata in base a un criterio precedente, verrà disinstallata.</translation>
 <translation id="2014757022750736514">Consente di stabilire il comportamento della schermata di accesso, da cui gli utenti possono accedere ai propri account. Le impostazioni consentono di decidere chi può accedere, che tipi di account sono consentiti, quali metodi di autenticazione devono essere usati. Sono disponibili anche impostazioni generali relative ad accessibilità, metodo di immissione e lingue.</translation>
 <translation id="201557587962247231">Frequenza dei caricamenti del rapporto sullo stato del dispositivo</translation>
+<translation id="2016031354108680330">Attiva l'accesso root alle macchine virtuali Linux</translation>
 <translation id="2017301949684549118">URL per abb web da installare automaticamente.</translation>
 <translation id="2017459564744167827">Vedi <ph name="REFERENCE_URL" /> per ulteriori informazioni su schema e formattazione.</translation>
+<translation id="2018425641414671849">Non consentire agli utenti di riprodurre contenuti multimediali quando il dispositivo è bloccato</translation>
 <translation id="2024476116966025075">Configura il nome di dominio richiesto per i client di accesso remoto</translation>
 <translation id="2029985289397958781">Viene disattivata la ricerca tramite fotocamera con <ph name="GOOGLE_LENS_PRODUCT_NAME" /> per gli utenti Enterprise</translation>
 <translation id="2030905906517501646">Parola chiave del provider di ricerca predefinito</translation>
@@ -1354,6 +1368,7 @@
       Il supporto dell'impostazione dei valori "tls1" o "tls1.1" per questo criterio è stato rimosso nella versione 91. L'eliminazione dell'avviso relativo a TLS 1.0/1.1 non è più supportata.</translation>
 <translation id="2364639863953745682">Modalità dell'esperienza di onboarding dell'assistente</translation>
 <translation id="2366301887862414321">Consenti gli host di messaggi nativi a livello di sistema e a livello di utente</translation>
+<translation id="2373014700224092497">Consenti agli utenti di aggiungere account Kerberos</translation>
 <translation id="2382672620906337383">Il valore JavaScript setTimeout() non verrà bloccato finché non viene raggiunta una soglia di nidificazione superiore.</translation>
 <translation id="2384233438419344179">Se il criterio è impostato su Attivato, gli elementi della pagina web che non provengono dal dominio presente nella barra degli indirizzi del browser non possono impostare i cookie. Se il criterio è impostato su Disattivato, tali elementi possono impostare i cookie e gli utenti non possono modificare l'impostazione.
 
@@ -1501,6 +1516,7 @@
       Se questo criterio non viene impostato, la funzionalità Click-to-call sarà attiva per impostazione predefinita.</translation>
 <translation id="2482676533225429905">Messaggi nativi</translation>
 <translation id="2483146640187052324">Prevedi le azioni di rete su qualsiasi connessione di rete</translation>
+<translation id="2489558694350871332">Consenti al dispositivo di eseguire macchine virtuali</translation>
 <translation id="2496180316473517155">Cronologia di navigazione</translation>
 <translation id="2497751676088107779">Script utente</translation>
 <translation id="2497965601277442929">Non consentire agli utenti di attivare la Modalità solo HTTPS</translation>
@@ -1542,6 +1558,7 @@
       Se il criterio viene impostato su Disattivato o se non viene configurato, gli elementi da avviare al momento dell'accesso verranno determinati dalle impostazioni di ripristino completo.</translation>
 <translation id="2517466659416174529">Consenti il blocco delle schede in secondo piano</translation>
 <translation id="2518231489509538392">Consenti riproduzione audio</translation>
+<translation id="2519578205567666653">Consenti dispositivi di archiviazione esterni</translation>
 <translation id="2520551905471951523">Viene usata la priorità elevata per il processo audio</translation>
 <translation id="2521581787935130926">Mostra la scorciatoia per le app nella barra dei Preferiti</translation>
 <translation id="2522304491589804974">Configura la lista consentita per l'installazione delle estensioni</translation>
@@ -1597,6 +1614,7 @@
 <translation id="2568488785376704318">Questo criterio è deprecato. Usa il criterio <ph name="REMOTE_ACCESS_HOST_DOMAIN_LIST_POLICY_NAME" />.</translation>
 <translation id="2575198840408498393">Disattiva la creazione di profili di roaming</translation>
 <translation id="2576324725151524912">Consenti la modalità sviluppatore per app isolate</translation>
+<translation id="257717978573041245">Attiva l'accelerazione hardware</translation>
 <translation id="257788512393330403">Richiedi inserimento della password ogni sei ore</translation>
 <translation id="2580757713966614760">La configurazione del criterio consente di determinare quale criterio di accesso applicare per la configurazione collettiva delle stampanti, al fine di stabilire quali stampanti del criterio <ph name="DEVICE_PRINTERS_POLICY_NAME" /> mettere a disposizione degli utenti.
 
@@ -1619,6 +1637,7 @@
       * L'azione predefinita compiuta in caso di inattività durante l'utilizzo della corrente CA è l'arresto.
 
       Se il criterio o una qualsiasi delle relative impostazioni non vengono configurati, vengono utilizzati i valori predefiniti per le diverse impostazioni relative all'alimentazione.</translation>
+<translation id="2591775699187375408">Limita sempre il processo audio tramite sandbox</translation>
 <translation id="2592091433672667839">Durata inattività prima della visualizzazione del salvaschermo nella schermata di accesso in modalità retail</translation>
 <translation id="259289618675490104">Se il criterio viene impostato su "All" (valore 0) o se non viene configurato, gli utenti possono gestire i certificati. Se viene impostato su "None" (valore 2), gli utenti possono soltanto visualizzare i certificati, ma non possono gestirli.
 
@@ -1829,6 +1848,7 @@
 <translation id="283478052049914107">Se il criterio viene impostato su Attivato e se viene inserita una porta non standard (in altre parole una porta diversa da 80 o 443), questa viene inclusa nel Kerberos SPN generato.
 
       Se il criterio viene impostato su Disattivato o se non viene configurato, il Kerberos SPN generato non include una porta.</translation>
+<translation id="2834965199373338033">Attiva la modalità in background</translation>
 <translation id="2835686964326214400">Impostare una programmazione personalizzata per il riavvio dei dispositivi</translation>
 <translation id="2838830882081735096">Non consentire migrazione dei dati e ARC</translation>
 <translation id="2839294585867804686">Impostazioni di Condivisioni file di rete</translation>
@@ -1841,6 +1861,7 @@
 <translation id="2866619962692161453">Tipo di metacriterio</translation>
 <translation id="2866726566162790531">Elenco delle origini che consentono tutte le autenticazioni HTTP</translation>
 <translation id="2869762730352628426">Attiva la funzione di clic automatico nella schermata di accesso</translation>
+<translation id="2872098849906555324">Disattiva la sincronizzazione Google Drive</translation>
 <translation id="2872961005593481000">Spegni</translation>
 <translation id="2874209944580848064">Nota per i dispositivi <ph name="PRODUCT_OS_NAME" /> che supportano le app Android:</translation>
 <translation id="2875192972412983412">Consente di specificare il sottoinsieme di server di stampa a cui verranno inviate query sulle stampanti.
@@ -1881,6 +1902,7 @@
       Se viene impostato su Falso, non viene creata alcuna finestra nascosta prima dell'avvio di ARC. Le app ARC vengono ripristinate dopo l'avvio di ARC</translation>
 <translation id="2899002520262095963">Le app Android possono utilizzare le configurazioni di rete e i certificati CA impostati tramite questa norma ma non hanno accesso ad alcune opzioni di configurazione.</translation>
 <translation id="2899213072616346687">Consente di limitare la modalità di stampa delle immagini di sfondo. Se il criterio non viene impostato non vengono applicate limitazioni.</translation>
+<translation id="2899640611559504158">Disattiva l'accesso alla riga di comando delle macchine virtuali</translation>
 <translation id="290002216614278247">Questa norma consente di bloccare la sessione dell'utente in base al tempo del client o alla quota di utilizzo del giorno.
 
           |time_window_limit| consente di specificare un periodo giornaliero in cui la sessione dell'utente deve essere bloccata. Supportiamo solo una regola per ogni giorno della settimana, quindi la matrice |entries| potrebbe variare da 0 a 7. |starts_at| e |ends_at| corrispondono all'inizio e alla fine del limite del periodo. Quando |ends_at| è inferiore a |starts_at| significa che il periodo |time_limit_window| termina il giorno successivo. |last_updated_millis| è il timestamp UTC relativo all'ultimo aggiornamento della voce in questione, che viene inviato sotto forma di stringa perché non si adatta a un numero intero.
@@ -1955,6 +1977,7 @@
 <translation id="2960128438010718932">Il programma di gestione temporanea per l'applicazione di nuovi aggiornamenti</translation>
 <translation id="2960691910306063964">Consente di attivare o disattivare l'autenticazione senza PIN per gli host di accesso remoto</translation>
 <translation id="2962972237615992440">Viene disattivato il proxy <ph name="CLOUD_PRINT_NAME" /></translation>
+<translation id="2963292398266537394">Disattiva la dettatura</translation>
 <translation id="2964056138564883247">Consente di gestire la disponibilità di <ph name="BOREALIS_NAME" /> per questo utente.
 
       Se il criterio viene impostato su falso, <ph name="BOREALIS_NAME" /> non sarà disponibile. In caso contrario (se il criterio non viene configurato o se viene impostato su vero) <ph name="BOREALIS_NAME" /> sarà disponibile soltanto se non viene disattivato da altri criteri o impostazioni.</translation>
@@ -2058,6 +2081,7 @@
       Se il criterio viene impostato su False, i suggerimenti di contenuti generati automaticamente non vengono visualizzati nella pagina Nuova scheda.</translation>
 <translation id="3046192273793919231">Invia pacchetti di rete al server di gestione per monitorare lo stato online</translation>
 <translation id="3047732214002457234">Consente di stabilire la modalità di segnalazione dei dati di Chrome Software Cleaner a Google</translation>
+<translation id="3047864383610708617">Disattiva i tasti permanenti</translation>
 <translation id="3048744057455266684">Se questa norma viene impostata e un URL di ricerca suggerito dalla omnibox contiene questo parametro nella stringa di ricerca o nell'identificatore del frammento, il suggerimento visualizzerà i termini di ricerca e il fornitore del servizio di ricerca anziché l'URL di ricerca non elaborato.
 
 Questa norma è facoltativa. Se non viene impostata, non verrà effettuata alcuna sostituzione dei termini di ricerca.
@@ -2131,6 +2155,7 @@
       Per informazioni dettagliate sui pattern <ph name="URL_LABEL" /> validi, visita la pagina https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns.  Questo criterio ha corrispondenze basate soltanto sull'origine, pertanto qualsiasi percorso nel pattern URL viene ignorato.</translation>
 <translation id="3118552207903834734">Consente a un utente di configurare il nome host del suo dispositivo</translation>
 <translation id="3122082892722698079">Controlla l'utilizzo delle eccezioni per i contenuti non sicuri</translation>
+<translation id="3125472566440502628">Disattiva Seleziona per ascoltare</translation>
 <translation id="3128072319047570212">Impostazioni keygen</translation>
 <translation id="3131703464330936425">Non consentire il roaming dei dati mobili</translation>
 <translation id="3135820765957090754">Se questa impostazione viene attivata, gli utenti potranno sincronizzare le configurazioni di reti Wi-Fi tra i loro dispositivi <ph name="PRODUCT_OS_NAME" /> e un telefono Android collegato. Per poter sincronizzare le configurazioni di reti Wi-Fi, gli utenti devono attivare esplicitamente questa funzionalità svolgendo una procedura di configurazione.
@@ -2271,6 +2296,8 @@
       Se il criterio non viene configurato, la visualizzazione dell'aggiornamento del firmware <ph name="TPM_FIRMWARE_UPDATE_TPM" /> non è disponibile.</translation>
 <translation id="3232563711929146405">Disattiva la sandbox del servizio di rete</translation>
 <translation id="3232691106293445015">Per le connessioni HTTP non sicure non è possibile usare l'autenticazione <ph name="BASIC_AUTH" />; sono richieste connessioni HTTPS</translation>
+<translation id="3234753491625248216">Disattiva l'accelerazione hardware</translation>
+<translation id="3234773866678260466">Consenti l'aggiunta di nuovi profili</translation>
 <translation id="3234863952320884611">Consente di richiamare i metodi <ph name="FILE_SYSTEM_SYNC_ACCESS_HANDLE" /> in modo asincrono.</translation>
 <translation id="3235085623859932253"> Se questo criterio viene disattivato, l'utente non potrà collegare completamente il proprio dispositivo periferico Thunderbolt/USB4 tramite tunneling PCIe.
 
@@ -2430,6 +2457,7 @@
 
       Se il criterio <ph name="DEVICE_LOCAL_ACCOUNT_AUTO_LOGIN_ID_POLICY_NAME" /> non viene configurato, questo criterio non ha alcun effetto.</translation>
 <translation id="3397883909301547525">Non mostrare consigli delle app in Avvio app di <ph name="PRODUCT_OS_NAME" /></translation>
+<translation id="3398051852031115795">Comportamento predefinito del sistema (dipende dalle dimensioni dello schermo)</translation>
 <translation id="3399859571630358395">Viene forzata la disattivazione della funzionalità Accoppiamento rapido (accoppiamento rapido tramite Bluetooth)</translation>
 <translation id="3404681701763345449">Attiva integrazione di <ph name="GOOGLE_CALENDAR_NAME" />.</translation>
 <translation id="3408078762098350617">Consente di controllare l'esperienza utente delle funzionalità disattivate elencate nel criterio <ph name="SYSTEM_FEATURES_DISABLE_LIST_POLICY_NAME" />.
@@ -2482,6 +2510,7 @@
 <translation id="3442269905344976871">Se il criterio viene impostato su Attivato quando sul dispositivo è disponibile il controller DTC (Diagnostics and Telemetry Controller) <ph name="WILCO_NAME" />, vengono attivati la raccolta, l'elaborazione e la segnalazione di dati telemetrici e diagnostici.
 
       Se il criterio viene impostato su Disattivato o se non viene configurato, viene disattivato il controller DTC e non sarà possibile raccogliere, elaborare o segnalare dati telemetrici e diagnostici del dispositivo.</translation>
+<translation id="3442589735857147823">Consenti agli utenti di usare le macchine virtuali necessarie per supportare le app Linux</translation>
 <translation id="3450649825886735618">Non usare servizi web di Google per correggere gli errori ortografici</translation>
 <translation id="3451422488938880786"> Consente l'attivazione o la disattivazione delle nuove mappature delle scorciatoie da tastiera internazionali</translation>
 <translation id="3451901387456196887">L'utente avrà la possibilità di selezionare dispositivi di trasmissione nel menu di <ph name="PRODUCT_NAME" /> usando un codice di accesso o scansionando un codice QR.</translation>
@@ -2523,6 +2552,7 @@
 
        Per impostazione predefinita, tutte le estensioni sono consentite. Se invece non hai consentito estensioni tramite criterio, utilizza l'elenco delle estensioni consentite per modificare il criterio.</translation>
 <translation id="3501606938635483637">Le scorciatoie da tastiera internazionali sono mappate al glifo dei tasti e non alla posizione del tasto sulla tastiera.</translation>
+<translation id="3502438748205582075">Disattiva Kerberos</translation>
 <translation id="3502555714327823858">Consenti tutte le modalità fronte/retro</translation>
 <translation id="350443680860256679">Configura ARC</translation>
 <translation id="350797926066071931">Abilita traduzione</translation>
@@ -2606,6 +2636,7 @@
 <translation id="3589193811812796052">Impedisci che i moduli WebAssembly vengano inviati tra origini</translation>
 <translation id="3591527072193107424">Attiva la funzionalità Supporto dei browser precedenti.</translation>
 <translation id="3591584750136265240">Configura il comportamento di autenticazione dell'accesso</translation>
+<translation id="3596112486106491038">Attiva l'accesso alla riga di comando delle macchine virtuali</translation>
 <translation id="3603469950773500315">Consente di attivare le mitigazioni dei controlli <ph name="CORS" /> nella nuova implementazione <ph name="CORS" />, consentendo alle estensioni di mantenere un comportamento compatibile e a <ph name="PRODUCT_NAME" /> di inviare le intestazioni specificate senza controlli <ph name="CORS" />.
 
       Se questo elenco viene lasciato vuoto, <ph name="PRODUCT_NAME" /> prova a eseguire le estensioni in modalità compatibili e non introduce modifiche <ph name="API" /> per la versione 79 di <ph name="PRODUCT_NAME" />, come spiegato all'indirizzo <ph name="WEB_REQUEST_API_MANUAL" />.
@@ -2640,6 +2671,7 @@
       Se viene configurato, gli utenti non possono modificarlo. Se non viene configurato, il riavvio tramite CA viene disattivato e gli utenti non possono modificare questa impostazione.</translation>
 <translation id="3660562134618097814">Trasferisci i cookie dell'IdP SAML durante l'accesso</translation>
 <translation id="3665437376055221832">Richiedi la selezione da parte dell'utente quando nessun certificato corrisponde alla selezione automatica.</translation>
+<translation id="3671773704245936868">Disattiva l'evidenziazione dell'elemento attivo tramite tastiera</translation>
 <translation id="3674010627788940405">Le intestazioni delle richieste CORS senza caratteri jolly non sono supportate.</translation>
 <translation id="3675303748198647471">setTimeout(…, 0) viene comunemente utilizzato per suddividere le attività JavaScript di lunga durata.
           Se il criterio viene impostato su Enabled, i valori di setTimeouts e setIntervals con un intervallo inferiore a 4 ms non vengono limitati in modo aggressivo.
@@ -2709,6 +2741,7 @@
 <translation id="3733014427925403568">Giorno della settimana dell'intervallo.</translation>
 <translation id="3736879847913515635">Attiva la funzione Aggiungi persona in Gestione utenti</translation>
 <translation id="3749259744154402564">Opzione non supportata</translation>
+<translation id="3749511622128647337">Disattiva l'output audio</translation>
 <translation id="3750220015372671395">Blocca la generazione di chiavi su questi siti</translation>
 <translation id="3753959315989102457">Disattiva la segnalazione della posizione del dispositivo</translation>
 <translation id="3755237588083934849">Questo criterio consente di stabilire la frequenza di invio, in millisecondi, dei caricamenti dello stato del dispositivo. Il valore minimo consentito è 60 secondi.
@@ -2868,6 +2901,7 @@
 
       Ogni voce dell'elenco contiene un dizionario che deve includere l'ID dell'estensione nel campo "extension-id" e il relativo URL di aggiornamento nel campo "update-url".</translation>
 <translation id="3869180930654347954">Disattiva First-Party Sets per tutti gli utenti interessati</translation>
+<translation id="3870035799352372700">Blocca l'accesso dell'Assistente Google al contesto dello schermo durante le interazioni</translation>
 <translation id="3870059789954671543">Consente di attivare la funzione di accessibilità di evidenziazione dell'elemento attivo tramite tastiera nella schermata di accesso.
 
           Questa funzione consente di evidenziare l'elemento attivo impostato tramite tastiera.
@@ -2895,6 +2929,7 @@
 
       Se la norma non viene impostata, il protocollo SPDY sarà disponibile.</translation>
 <translation id="3887529334667818189">I percorsi saranno visibili in chrome://history/journeys per impostazione predefinita e gli utenti potranno modificare la visibilità di tali percorsi.</translation>
+<translation id="3891175633496805812">Disattiva il controller DTC (Diagnostics and Telemetry Controller) wilco</translation>
 <translation id="3891357445869647828">Abilita JavaScript</translation>
 <translation id="3891769546914233112">Stampa PDF come immagine disponibile</translation>
 <translation id="3897218615484393758">Limita il tempo per cui un utente autenticato tramite SAML può accedere offline nella schermata di blocco</translation>
@@ -3004,6 +3039,10 @@
 Se questa norma non viene configurata o viene impostata su False, i dispositivi <ph name="PRODUCT_OS_NAME" /> controllano automaticamente la disponibilità di aggiornamenti.
 
 Avviso. È consigliabile mantenere attivati gli aggiornamenti automatici per consentire agli utenti di ricevere gli aggiornamenti software e le correzioni di sicurezza fondamentali. Disattivare gli aggiornamenti automatici potrebbe mettere a rischio gli utenti.</translation>
+<translation id="4015799413391577485">Questo criterio è stato rimosso da M97 dopo la rimozione di 3DES da <ph name="PRODUCT_NAME" />.
+
+      Se il criterio viene impostato su True, le suite di crittografia 3DES in TLS verranno attivate. Se viene impostato su False, verranno disattivate. Se il criterio non viene configurato, le suite di crittografia 3DES sono disattivate per impostazione predefinita. Questo criterio potrebbe essere usato per mantenere momentaneamente la compatibilità con un server obsoleto. Si tratta di una misura temporanea ed è necessario riconfigurare il server.
+      </translation>
 <translation id="4016367078069682737">Questo criterio è stato rimosso da M61.
 
       Consente di specificare il comportamento di un dispositivo con ecryptfs e richiede la transizione alla crittografia ext4.
@@ -3137,9 +3176,11 @@
 <translation id="4138655880188755661">Limite di tempo</translation>
 <translation id="4147818922357566987">Attiva solo le varianti relative alle correzioni critiche</translation>
 <translation id="4150201353443180367">Display</translation>
+<translation id="4154221011709068799">Non consentire dispositivi di archiviazione esterni</translation>
 <translation id="415445772247959702">Web Store (supportato dalla versione 89)</translation>
 <translation id="4157003184375321727">Indica versione sistema operativo e firmware</translation>
 <translation id="4157594634940419685">Consenti l'accesso a stampanti CUPS native</translation>
+<translation id="4158531549614162499">Attiva la sincronizzazione Google Drive tramite reti cellulari</translation>
 <translation id="4160962198980004898">Origine dell'indirizzo MAC del dispositivo quando inserito nel dock</translation>
 <translation id="4161589119744364846">Questo criterio consente di configurare l'URL predefinito della pagina Nuova scheda e impedisce agli utenti di modificarlo.
 
@@ -3230,6 +3271,7 @@
       Se il criterio viene impostato su Disattivato o se non viene configurato, gli utenti potranno trasferire i file su Drive tramite la connessione a una rete cellulare.</translation>
 <translation id="4248277954659222481">Consenti la riproduzione automatica dei contenuti multimediali per una lista consentita di pattern URL</translation>
 <translation id="4250680216510889253">No</translation>
+<translation id="4252522848899331223">Consenti agli utenti di bypassare l'avviso di Navigazione sicura</translation>
 <translation id="4259636715493757956">Ti consente di specificare le configurazioni per gli URL di autenticazione in <ph name="WEBVIEW_PRODUCT_NAME" />.
 
       Questi URL di autenticazione vengono trattati in modo speciale da <ph name="WEBVIEW_PRODUCT_NAME" /> in modo che, quando durante l'autenticazione una pagina web in <ph name="WEBVIEW_PRODUCT_NAME" /> indirizza agli URL di autenticazione, venga avviata l'app di autenticazione dei provider di identità corrispondente che può gestire l'URL di autenticazione in questione.
@@ -3289,7 +3331,9 @@
       Se il dispositivo non è gestito o se è presente un solo utente, il criterio viene ignorato e la notifica viene sempre visualizzata.
 
       Se sono presenti diversi account utente su un dispositivo gestito, la notifica viene visualizzata soltanto se il criterio è stato attivato.</translation>
+<translation id="4309091698378414920">Attiva l'evidenziazione del cursore</translation>
 <translation id="4311195029067684288">Full</translation>
+<translation id="4311662690937656540">Applica in modo forzato gli accessi online nelle schermate di accesso e di blocco</translation>
 <translation id="4313767483634435271">Indirizzo MAC designato del dock del dispositivo</translation>
 <translation id="4314538398999793073">Disattiva ricerca CNAME durante l'autenticazione Kerberos</translation>
 <translation id="4320592646346933548">Wi-Fi</translation>
@@ -3383,6 +3427,7 @@
 <translation id="4427173305799125784">Il visualizzatore PDF non può aggiungere annotazioni nei PDF</translation>
 <translation id="4432762137771104529">Attiva rapporti estesi su Navigazione sicura</translation>
 <translation id="443454694385851356">Precedente (non sicuro)</translation>
+<translation id="4435032708588431506">Consenti QUIC</translation>
 <translation id="443665821428652897">Cancella i dati del sito alla chiusura del browser (obsoleta)</translation>
 <translation id="4436941175475497595">Disattiva anteprima di stampa</translation>
 <translation id="4439336120285389675">Consente di specificare un elenco di funzioni ritirate della piattaforma web da riattivare temporaneamente.
@@ -3425,6 +3470,7 @@
       Per informazioni dettagliate sui pattern <ph name="URL_LABEL" /> validi, visita la pagina https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. <ph name="WILDCARD_VALUE" /> non è un valore accettato per questo criterio.</translation>
 <translation id="4480694116501920047">Forza SafeSearch</translation>
 <translation id="4481202456143946404">La versione valida dei Termini di servizio recuperata da Google3 CL che ha introdotto la nuova versione dei Termini.</translation>
+<translation id="4481952213163895432">Disattiva l'hotword per l'Assistente Google</translation>
 <translation id="4483120730995943109">La funzione JavaScript setTimeout() con un timeout di 0 ms non verrà impostata su 1 ms.</translation>
 <translation id="4483649828988077221">Disattiva l'aggiornamento automatico</translation>
 <translation id="4484515651939984695">Specifica per quanto tempo (in secondi) un dispositivo di trasmissione selezionato con un codice di accesso o un codice QR rimane nell'elenco del menu di <ph name="PRODUCT_NAME" /> dei dispositivi di trasmissione.</translation>
@@ -3492,6 +3538,7 @@
       Per una spiegazione completa, visita la pagina https://www.chromestatus.com/feature/5675755719622656.
       Se questo criterio viene attivato, sarà possibile contemporaneamente navigare nei siti e aprire nuove finestre/schede.
       Se questo criterio viene disattivato o se non viene configurato, non sarà possibile contemporaneamente navigare nei siti e aprire nuove finestre/schede.</translation>
+<translation id="4572577129745420844">Non consentire agli utenti di aggiungere account Kerberos</translation>
 <translation id="457430673056611745">Criterio di configurazione per il connettore OnPrint <ph name="PRODUCT_NAME" /> Enterprise</translation>
 <translation id="4578265298946081589">Non riavviare all'uscita dell'utente.</translation>
 <translation id="4581507927311097234">Il periodo di tempo, in millisecondi, senza input dell'utente trascorso il quale lo schermo viene disattivato.</translation>
@@ -3547,6 +3594,7 @@
 <translation id="4617338332148204752">Salta il controllo dei metatag in <ph name="PRODUCT_FRAME_NAME" /></translation>
 <translation id="4624417808625504735">Impedisci a JavaScript di utilizzare JIT su questi siti</translation>
 <translation id="4625915093043961294">Configura la whitelist per l'installazione delle estensioni</translation>
+<translation id="46321462262887935">Imposta i tasti della fila superiore come tasti funzione, ma consenti la modifica da parte degli utenti</translation>
 <translation id="4632343302005518762">Consenti a <ph name="PRODUCT_FRAME_NAME" /> di gestire i tipi di contenuti elencati</translation>
 <translation id="4632566332417930481">Non consentire l'utilizzo degli Strumenti per sviluppatori per le estensioni installate in base a norme aziendali; consenti l'utilizzo degli Strumenti per sviluppatori in altri contesti</translation>
 <translation id="4635284822166984665">L'ora in cui iniziare la ricarica del dispositivo, nel fuso orario locale del dispositivo.</translation>
@@ -3627,6 +3675,7 @@
 <translation id="4723829699367336876">Abilita attraversamento firewall da client di accesso remoto</translation>
 <translation id="4725528134735324213">Attiva Android Backup Service</translation>
 <translation id="4725801978265372736">Richiedi la corrispondenza tra il nome dell'utente locale e il proprietario dell'host di accesso remoto</translation>
+<translation id="4726228171190098009">Non consentire al dispositivo di richiedere il Powerwash</translation>
 <translation id="4733471537137819387">Norme relative all'autenticazione HTTP integrata.</translation>
 <translation id="4735099388031364207">Se il criterio viene impostato su Attivato, l'attestazione da remoto è consentita per il dispositivo. Un certificato viene generato e caricato automaticamente sul Server di gestione del dispositivo.
 
@@ -3705,6 +3754,7 @@
       Se il criterio è impostato su false o non viene impostato, le informazioni sull'aggiornamento del sistema operativo non verranno
       segnalate. Se è impostato su true, le informazioni sull'aggiornamento del sistema operativo verranno segnalate.</translation>
 <translation id="4858735034935305895">Consenti modalità a schermo intero</translation>
+<translation id="486146220825734683">Non consentire agli utenti di memorizzare le password Kerberos</translation>
 <translation id="4861767323695239729">Configura i metodi di immissione consentiti in una sessione utente</translation>
 <translation id="4873380469296842901">Se questa impostazione viene attivata, gli utenti che hanno già attivato Phone Hub possono inviare e ricevere notifiche del loro telefono su Chrome OS.
 
@@ -4115,6 +4165,7 @@
 <translation id="5255162913209987122">Può essere consigliata</translation>
 <translation id="525543707238275321">Disattiva i report sulle informazioni relative alla CPU del dispositivo</translation>
 <translation id="5257395339965216304">Dati app ospitate</translation>
+<translation id="5258445772095084618">Consenti agli utenti non affiliati di usare le macchine virtuali necessarie per supportare le app Linux</translation>
 <translation id="5262320080678421295">Disattiva attendibilità nei certificati emessi dall'Infrastruttura a chiave pubblica precedente di Symantec Corporation</translation>
 <translation id="5266173014392157048">Questo criterio è deprecato. Utilizza il criterio "<ph name="AUTH_NEGOTIATE_DELEGATE_ALLOWLIST_POLICY_NAME" />".
 
@@ -4258,6 +4309,7 @@
 
       Per informazioni dettagliate sui pattern <ph name="URL_LABEL" /> validi, visita la pagina https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. <ph name="WILDCARD_VALUE" /> non è un valore accettato per questo criterio.</translation>
 <translation id="5393009997533871906">Agli utenti vengono mostrate soltanto le stampanti indicate nella lista consentita</translation>
+<translation id="5398387276166014955">Consenti l'inserimento di codice di terze parti in Chrome</translation>
 <translation id="5401696449591951427">Attiva <ph name="CHROME_DEVICES_LINK" /></translation>
 <translation id="5405289061476885481">Consente di configurare i layout da tastiera consentiti nella schermata di accesso di <ph name="PRODUCT_OS_NAME" />.
 
@@ -4386,6 +4438,7 @@
       Se il criterio viene impostato su Disattivato o se non viene configurato, all'utente non verrà mai richiesto di selezionare un certificato client nella schermata di accesso.
       Nota: in genere questo criterio non è consigliato, poiché impone dei potenziali rischi per la privacy (nel caso in cui vengano usati certificati basati su TPM a livello del dispositivo) e presenta un'esperienza utente di scarsa qualità.</translation>
 <translation id="55057839818162162">Consenti la ricerca tramite fotocamera con <ph name="GOOGLE_LENS_PRODUCT_NAME" /></translation>
+<translation id="55057971769693300">Disattiva l'evidenziazione del cursore</translation>
 <translation id="5508307164752647432">Attiva la funzionalità Kerberos</translation>
 <translation id="5511702823008968136">Attiva barra dei Preferiti</translation>
 <translation id="5512418063782665071">URL pagina iniziale</translation>
@@ -4405,6 +4458,7 @@
 <translation id="5526184558582921522">Consenti le query a Quirks Server e il download di file di configurazione specifici per l'hardware</translation>
 <translation id="5526701598901867718">Tutto (non sicuro)</translation>
 <translation id="5534079385061985566">Attiva la funzionalità di ripristino completo.</translation>
+<translation id="5534235660122271432">Non consentire la scrittura su dispositivi di archiviazione esterni</translation>
 <translation id="5535256585099022933">Imposta l'intervallo di tempo per il riavvio</translation>
 <translation id="5535973522252703021">Whitelist server di delega Kerberos</translation>
 <translation id="553806128266843748">Un flag booleano che indica se la limitazione è attiva o meno.</translation>
@@ -4413,6 +4467,7 @@
 <translation id="555022085242359084">Attiva l'alto contrasto nella schermata di accesso</translation>
 <translation id="555077880566103058">Consenti l'esecuzione automatica del plug-in <ph name="FLASH_PLUGIN_NAME" /> in tutti i siti</translation>
 <translation id="5556607617517096419">Borealis</translation>
+<translation id="5558394213067608844">Attiva il controller DTC (Diagnostics and Telemetry Controller) wilco</translation>
 <translation id="5559079916187891399">Questa norma non influisce sulle app Android.</translation>
 <translation id="5560039246134246593">Aggiungi un parametro al recupero del numero di inizializzazione delle varianti in <ph name="PRODUCT_NAME" />.
 
@@ -4516,6 +4571,7 @@
 <translation id="5676740747107495269">Mostra le opzioni di accessibilità nel menu della barra delle applicazioni nella schermata di accesso</translation>
 <translation id="5679540979548648200">Impedisci agli utenti di questo dispositivo di utilizzare il processo sideload ADB e forza la funzione Powerwash del dispositivo se tale processo è stato attivato in precedenza</translation>
 <translation id="5681258683432554972">Impostazione popup predefiniti</translation>
+<translation id="5684501593989438324">Attiva l'hotword per l'Assistente Google</translation>
 <translation id="5689430183304951538">Dimensioni predefinite delle pagine di stampa</translation>
 <translation id="5691637243722588222">La configurazione del criterio consente di specificare quali schemi di autenticazione HTTP sono supportati da <ph name="PRODUCT_NAME" />.
 
@@ -4553,6 +4609,7 @@
       Se il criterio viene impostato su Disattivato, i file PDF vengono aperti con il plug-in di PDF, a meno che disattivato dagli utenti.
 
       Se il criterio viene impostato, gli utenti non possono modificarlo in <ph name="PRODUCT_NAME" />. Se non viene impostato, gli utenti possono scegliere se aprire o meno i file PDF esternamente.</translation>
+<translation id="5705055136345677598">Disattiva la modalità in background</translation>
 <translation id="5705828032077475554">Segnala sessioni CRD</translation>
 <translation id="5708969689202733975">Configura le modalità di sblocco rapido consentite</translation>
 <translation id="5714563837055244378">Attiva la condivisione da Android alle app web.</translation>
@@ -4634,6 +4691,7 @@
 <translation id="5814301096961727113">Impostazione stato predefinito della lettura vocale nella schermata di accesso</translation>
 <translation id="5815129011704381141">Riavvia automaticamente dopo l'aggiornamento</translation>
 <translation id="5815990343032461023">Comportamento precedente: le app di Chrome Kiosk verranno aggiornate dal sistema di estensione utilizzando l'URL di aggiornamento dal manifest dell'estensione, nonché memorizzando nella cache il gestore usando l'URL di aggiornamento dal criterio</translation>
+<translation id="5828008775808363753">Non aprire il browser all'avvio</translation>
 <translation id="582857022372205358">Attiva la stampa fronte/retro su lato corto</translation>
 <translation id="5830196507442186669">Consenti ai dispositivi di usare <ph name="BOREALIS_NAME" /> su <ph name="PRODUCT_OS_NAME" /></translation>
 <translation id="5831286647961890695">Attiva il modello di ricarica adattiva su <ph name="PRODUCT_OS_NAME" /></translation>
@@ -4651,6 +4709,7 @@
       Se il criterio viene impostato su Disattivato o se non viene configurato, la modalità di ricarica avanzata della batteria rimane disabilitata.
 
       Gli utenti non possono modificare questa impostazione.</translation>
+<translation id="5838452040629810808">Attiva l'evidenziazione del puntatore</translation>
 <translation id="5848438019586925019">L'algoritmo per la generazione di coppie di chiavi.</translation>
 <translation id="5851248808417680865">Usa il tema scuro</translation>
 <translation id="585270638818921943">Impedisci all'utente di usare app Android di fonti non attendibili</translation>
@@ -4737,6 +4796,7 @@
 
       Se viene impostato su Disattivato, non è consentito utilizzare il protocollo QUIC.</translation>
 <translation id="5921713479449475707">Permetti download di aggiornamento automatico tramite HTTP</translation>
+<translation id="5927903236543424081">Obbliga gli utenti ad accedere prima di utilizzare il browser</translation>
 <translation id="5928633129285224981">Controlla se <ph name="PRODUCT_NAME" /> rende l'opzione Stampa come immagine da impostare per impostazione predefinita per la stampa di un PDF.
 
       Se questo criterio viene impostato su Attivato, <ph name="PRODUCT_NAME" /> imposterà per impostazione predefinita l'opzione Stampa come immagine nella finestra Anteprima di stampa per la stampa di un PDF.
@@ -4744,6 +4804,13 @@
       Se questo criterio è impostato su Disattivato o non viene impostato, in <ph name="PRODUCT_NAME" /> la selezione dell'utente per l'opzione Stampa come immagine sarà inizialmente non impostata.  L'utente potrà selezionarla per ogni singolo processo di stampa PDF, se l'opzione è disponibile.
 
       Per <ph name="MS_WIN_NAME" /> o <ph name="MAC_OS_NAME" /> questo criterio ha un solo effetto se è selezionato anche <ph name="PRINT_PDF_AS_IMAGE_AVAILABILITY_POLICY_NAME" />.</translation>
+<translation id="5932383301001325587">Questo criterio è stato rimosso da M53 dopo la rimozione del fallback della versione TLS da <ph name="PRODUCT_NAME" />.
+
+      Se un handshake TLS non va a buon fine, <ph name="PRODUCT_NAME" /> riproverà a stabilire la connessione con una versione precedente di TLS per risolvere i bug nei server HTTPS. Questa impostazione consente di configurare la versione in cui verrà interrotto questo processo di fallback. Se un server esegue correttamente la negoziazione della versione (cioè senza interrompere la connessione), questa impostazione non viene applicata. In ogni caso, la connessione risultante deve essere conforme a SSLVersionMin.
+
+      Se questo criterio non viene configurato o se viene impostato su "tls1.2", <ph name="PRODUCT_NAME" /> non eseguirà più il fallback. Il supporto per le versioni precedenti di TLS non viene disattivato, solo se <ph name="PRODUCT_NAME" /> eviterà i server che presentano errori e che non sono in grado di negoziare correttamente le versioni.
+
+      In caso contrario, se è necessario mantenere la compatibilità con un server con errori, è possibile impostare questo criterio su "tls1.1". Si tratta di una misura temporanea ed è necessario sistemare rapidamente il server.</translation>
 <translation id="5932767795525445337">Questa policy può essere utilizzata anche per bloccare app per Android.</translation>
 <translation id="5936193585187054065">Encrypted ClientHello (ECH) è un'estensione TLS per criptare i campi sensibili di ClientHello e aumentare la privacy.
 
@@ -4818,6 +4885,7 @@
 <translation id="6046615715547751255">Non consentire i controlli di reporting granulare</translation>
 <translation id="6048199181629830227">Attiva la gestione della variazione dei picchi energetici</translation>
 <translation id="6049117606554031363">Attiva i report sullo stato della scheda del dispositivo</translation>
+<translation id="605132676434455096">Non consentire l'aggiunta di nuovi profili</translation>
 <translation id="6053681087509103368">Consenti a WebRTC di usare versioni obsolete del protocollo TLS/DTLS</translation>
 <translation id="6058879286588763839">A meno che <ph name="DEVICE_ADVANCED_BATTERY_CHARGE_MODE_ENABLED_POLICY_NAME" /> non venga specificato, sovrascrivendo <ph name="DEVICE_BATTERY_CHARGE_MODE_POLICY_NAME" />, la configurazione di <ph name="DEVICE_BATTERY_CHARGE_MODE_POLICY_NAME" /> consente di specificare il criterio di gestione della modalità di ricarica della batteria (se supportato dal dispositivo). Per estendere la durata della batteria, il criterio controlla dinamicamente la ricarica della batteria riducendo al minimo l'usura e preservandone l'efficienza.
 
@@ -4873,12 +4941,18 @@
       4: Blocca i file dannosi segnalati dal server di Navigazione sicura, non blocca i tipi di file pericolosi (opzione consigliata).
 
       Nota: tali limitazioni vengono applicate ai download attivati dai contenuti delle pagine web, nonché all'opzione di menu "Salva link con nome…". Non vengono applicate al download della pagina attualmente visualizzata né al salvataggio in formato PDF tramite le opzioni di stampa. Scopri di più sulla funzionalità Navigazione sicura (https://developers.google.com/safe-browsing).</translation>
+<translation id="6119207979839638596">Questo criterio è stato rimosso da M75 dopo la rimozione del criterio della versione TLS massima da <ph name="PRODUCT_NAME" />.
+
+      Se questo criterio non viene configurato, <ph name="PRODUCT_NAME" /> utilizza la versione massima predefinita.
+
+      In caso contrario, il criterio potrebbe essere impostato su uno dei seguenti valori: "tls1.2" o "tls1.3". Se viene impostato, <ph name="PRODUCT_NAME" /> non utilizzerà versioni di SSL/TLS successive alla versione specificata. Un valore non riconosciuto verrà ignorato.</translation>
 <translation id="6123052603197028610">Non consentire query ai server Google per recuperare i timestamp</translation>
 <translation id="6130229425991722726">Se il criterio viene impostato su 0 (valore predefinito), è possibile accedere agli strumenti per sviluppatori e alla console JavaScript, ma non se ci sono estensioni installate in base ai criteri aziendali. Se il criterio viene impostato su 1, è possibile accedere agli strumenti per sviluppatori e alla console JavaScript in ogni caso, anche se ci sono estensioni installate in base ai criteri aziendali. Se il criterio viene impostato su 2, non è possibile accedere agli strumenti per sviluppatori, né esaminare gli elementi dei siti web.
 
       Questa impostazione disattiva anche le scorciatoie da tastiera e le voci dei menu o dei menu contestuali per aprire gli strumenti per sviluppatori o la console JavaScript.
 
       A partire dalla versione 99 di <ph name="PRODUCT_NAME" />, questa impostazione consente anche di controllare i punti di ingresso per la funzionalità "Visualizza sorgente pagina". Se imposti questo criterio su "DeveloperToolsDisallowed" (valore 2), gli utenti non possono accedere alla visualizzazione del codice sorgente tramite scorciatoia da tastiera o il menu contestuale. Per bloccare completamente la visualizzazione del codice sorgente, devi anche aggiungere "view-source:*" al criterio <ph name="URL_BLOCKLIST_POLICY_NAME" />.</translation>
+<translation id="6131803221304830537">Disattiva l'integrità del codice del renderer</translation>
 <translation id="6132506775968708399">Blocca cookie di terze parti</translation>
 <translation id="6133088669883929098">Consenti a tutti i siti di utilizzare la generazione di chiavi</translation>
 <translation id="6135398260575578389">Navigazione sicura è attiva in modalità potenziata. Questa modalità fornisce maggior sicurezza, ma non richiede la condivisione di ulteriori dati di navigazione con Google.</translation>
@@ -4900,6 +4974,7 @@
 
       Questo criterio richiede una configurazione aggiuntiva per essere applicato. Visita https://support.google.com/chrome/a?p=chrome_enterprise_connector_policies_setting per maggiori informazioni.</translation>
 <translation id="6141402445226505817">Utilizza sempre il rilevamento approssimativo del fuso orario</translation>
+<translation id="6141944295566709543">Consenti agli utenti di riprodurre contenuti multimediali quando il dispositivo è bloccato</translation>
 <translation id="6142501278956229253">DPI stampa PDF con rasterizzazione</translation>
 <translation id="6144046700495610112">Se il criterio viene impostato su Attivato, i dati di compilazione automatica dei moduli nel precedente browser predefinito verranno importati alla prima esecuzione. Se il criterio viene impostato su Disattivato o se non viene configurato, nessun dato di compilazione automatica dei moduli verrà importato alla prima esecuzione.
 
@@ -4971,6 +5046,7 @@
 
       Nota: il criterio ha effetto su tutti gli output audio, incluse le funzioni di accessibilità audio. Non disattivare il criterio se un utente richiede uno screen reader.</translation>
 <translation id="6221175752766085998">Consenti i certificati privi dell'estensione subjectAlternativeName emessi dai trust anchor locali</translation>
+<translation id="6224070048795197148">Consenti agli utenti di usare il browser senza accedere</translation>
 <translation id="6224304369267200483">URL/domini per cui è consentita automaticamente l'attestazione diretta dei token di sicurezza</translation>
 <translation id="6230442621691161858">Questa funzionalità consente di attivare suggerimenti relativi a nuovi contenuti da esplorare. Sono incluse app, pagine web e altro.
       Se questo criterio viene impostato su True, i suggerimenti relativi a nuovi contenuti da esplorare vengono attivati.
@@ -4995,11 +5071,13 @@
       Lo scopo di questo criterio è fornire alle imprese la flessibilità di disattivare la sandbox dell'audio qualora interferisca con le configurazioni software di sicurezza utilizzate.</translation>
 <translation id="624818583115864448">porta 554 (può essere sbloccata fino al 15/10/2021)</translation>
 <translation id="6252773211180267325">È consentita l'esecuzione di <ph name="BOREALIS_NAME" /> per un utente</translation>
+<translation id="6254498834449523938">Non consentire agli utenti di bypassare l'avviso di Navigazione sicura</translation>
 <translation id="625580680776945310">La modalità ad alta efficienza verrà attivata.</translation>
 <translation id="6258658183356534534">Controlla la funzionalità di aggiornamento User-Agent Client Hints GREASE.</translation>
 <translation id="6261643884958898336">Segnala informazioni di identificazione dei computer</translation>
 <translation id="6265892395051519509">Consenti l'accesso ai sensori su questi siti</translation>
 <translation id="6266043141694454734">Determina se verranno utilizzati Chrome Root Store e lo strumento di verifica dei certificati integrato per verificare i certificati del server</translation>
+<translation id="6270791075656665237">Non consentire QUIC</translation>
 <translation id="6273015149273504999">
       Consente di specificare un elenco di app ed estensioni che vengono installate automaticamente nella schermata di accesso, senza l'interazione dell'utente, e che non possono essere disinstallate o disattivate dall'utente.
 
@@ -5208,6 +5286,7 @@
       </translation>
 <translation id="6438972408080276697">Se il criterio è impostato su True, vengono inviati rapporti degli eventi principali di installazione delle app Android attivati dal criterio. Se il criterio è impostato su False, non viene acquisito alcun evento.</translation>
 <translation id="6440051664870270040">Consenti ai siti di navigare e aprire popup contemporaneamente</translation>
+<translation id="6446366416439249472">Disattiva la sincronizzazione Google Drive tramite reti cellulari</translation>
 <translation id="6447948611083700881">Backup e ripristino disabilitati</translation>
 <translation id="6449476513004303784">Non consentire agli utenti di gestire i certificati
 </translation>
@@ -5571,6 +5650,7 @@
 <translation id="6763023079133439068">Consenti i certificati privi di un'estensione subjectAlternativeName se sono stati emessi da trust anchor locali</translation>
 <translation id="6766216162565713893">Consenti ai siti di chiedere all'utente di concedere l'accesso a un dispositivo Bluetooth nelle vicinanze.</translation>
 <translation id="6770454900105963262">Segnala informazioni sulle sessioni kiosk attive</translation>
+<translation id="6774132787348495175">Non consentire agli utenti di usare le macchine virtuali necessarie per supportare le app Linux</translation>
 <translation id="6782331708811245959">Attiva report sulla modalità di avvio dispositivo</translation>
 <translation id="6782977971207381602">Se il criterio viene impostato su Attivato, al dispositivo viene consentito di eseguire macchine virtuali su <ph name="PRODUCT_OS_NAME" />. I criteri <ph name="VIRTUAL_MACHINES_ALLOWED_POLICY_NAME" /> e <ph name="CROSTINI_ALLOWED_POLICY_NAME" /> devono essere impostati su Attivato per utilizzare <ph name="PRODUCT_CROSTINI_NAME" />. Se il criterio viene impostato su Disattivato, significa che il dispositivo non può eseguire macchine virtuali. Impostando il criterio su Disattivato, questo viene applicato all'avvio di nuove macchine virtuali, non a quelle già in esecuzione.
 
@@ -5630,6 +5710,7 @@
 
           Se il criterio viene impostato su un elenco vuoto o se non viene configurato, nessun URL può rimanere in modalità a schermo intero senza mostrare una notifica.</translation>
 <translation id="6833988859168635883">Avvio, pagina iniziale e pagina Nuova scheda</translation>
+<translation id="6835254082476223414">Attiva backup e ripristino di macchine virtuali Linux</translation>
 <translation id="6835883744948188639">Mostra all'utente un messaggio ricorrente che indica che è consigliato eseguire un riavvio</translation>
 <translation id="683688607121170501">Questa impostazione consente agli utenti di passare da un Account Google a un altro all'interno dell'area dei contenuti della finestra del browser e nelle applicazioni Android, dopo avere eseguito l'accesso al dispositivo <ph name="PRODUCT_OS_NAME" />.
 
@@ -5832,6 +5913,7 @@
 <translation id="7007283257527015835">Un flag booleano che indica se il gestore di protocollo deve essere impostato o meno come predefinito.</translation>
 <translation id="7008308728445338159">Controlli intercettazione DNS attivi</translation>
 <translation id="7010006999849135962">Attiva l'autenticazione senza PIN per l'host di accesso remoto</translation>
+<translation id="7013484314513229844">Attiva l'avvio tramite CA</translation>
 <translation id="7016587686120059767">Disattiva la modalità ospite</translation>
 <translation id="7016736684656067099">Se il criterio è impostato su 1, tutti i siti web possono mostrare immagini. Se il criterio è impostato su 2, la visualizzazione delle immagini viene negata.
 
@@ -5880,6 +5962,7 @@
 <translation id="7039815268521168329">Mostrare il flusso Voice Match dell'Assistente Google durante la configurazione iniziale</translation>
 <translation id="7040229947030068419">Valore di esempio:</translation>
 <translation id="7044883996351280650">Controlla il servizio backup e ripristino di Android</translation>
+<translation id="7046997898355294677">Mostra le notifiche sulla privacy finché non vengono ignorate dagli utenti</translation>
 <translation id="7047495632846973438">Specifica se i criteri relativi alle autorizzazioni dell'acquisizione del display vengono controllati o saltati.</translation>
 <translation id="7055022222176591388">Non consentire il plug-in <ph name="FLASH_PLUGIN_NAME" /> obsoleto</translation>
 <translation id="7066292150801784098">Disattiva l'interazione degli utenti remoti con finestre con privilegi più elevati nelle sessioni di assistenza remota</translation>
@@ -5962,6 +6045,7 @@
       Su <ph name="MS_WIN_NAME" />, questa funzionalità è disponibile soltanto sulle istanze che fanno parte di un dominio <ph name="MS_AD_NAME" />, sono in esecuzione su Windows 10 Pro o sono registrate in <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />. Su <ph name="MAC_OS_NAME" />, questa funzionalità è disponibile soltanto nelle istanze gestite tramite MDM o aggiunte a un dominio tramite MCX.</translation>
 <translation id="7138678301420049075">Altro</translation>
 <translation id="7138762292550697459">Controlla il timeout minimo della funzione JavaScript setTimeout().</translation>
+<translation id="714219487865269980">Attiva l'evidenziazione dell'elemento attivo tramite tastiera</translation>
 <translation id="7145335384492396213">Modalità di stampa PIN predefinita</translation>
 <translation id="7146198347561863646">Se il criterio viene impostato su Attivato o se non viene configurato, sono consentiti wakelock per la gestione dell'alimentazione. Le estensioni possono richiedere wakelock tramite l'API dell'estensione di gestione dell'alimentazione e le app ARC.
 
@@ -6016,6 +6100,7 @@
 <translation id="7193489339723768342">Se il criterio viene configurato, verrà specificato l'elenco di URL i cui pattern vengono confrontati con l'origine di sicurezza dell'URL richiedente. Una corrispondenza assicura l'accesso ai dispositivi di acquisizione audio senza richieste
 
 Per informazioni dettagliate sui pattern <ph name="URL_LABEL" /> validi, visita la pagina https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns.</translation>
+<translation id="719398790886719721">Disattiva l'accesso root alle macchine virtuali Linux</translation>
 <translation id="7194407337890404814">Nome del provider di ricerca predefinito</translation>
 <translation id="7198134478421755850">Estensione</translation>
 <translation id="7199304109870655950">Configura le opzioni di accesso remoto nell'host Chrome Remote Desktop.
@@ -6204,6 +6289,7 @@
 <translation id="7412456346709338637">Attiva accesso ai dati per le periferiche Thunderbolt/USB4</translation>
 <translation id="7417438464912687020">Consenti le connessioni di accesso remoto a questo computer</translation>
 <translation id="7417972229667085380">Percentuale di regolazione del ritardo di inattività in modalità di presentazione (obsoleta)</translation>
+<translation id="7421230730436851224">Non limitare mai il processo audio tramite sandbox</translation>
 <translation id="7421483919690710988">Imposta le dimensioni della cache su disco multimediale in byte</translation>
 <translation id="7424751532654212117">Elenco delle eccezioni all'elenco dei plug-in disattivati</translation>
 <translation id="7426112309807051726">Consente di specificare se disattivare o meno l'ottimizzazione <ph name="TLS_FALSE_START" />. Il nome di questa norma è DisableSSLRecordSplitting per motivi storici.
@@ -6223,6 +6309,7 @@
 <translation id="7458437477941640506">Non eseguire il rollback alla versione target se la versione del sistema operativo è più nuova del target. Anche gli aggiornamenti sono disattivati.</translation>
 <translation id="7459601923199346224">Consente di controllare i criteri relativi agli utenti e ai dispositivi per la gestione dei certificati.</translation>
 <translation id="7459633275230216698">Consenti finestre di dialogo per la selezione di file</translation>
+<translation id="7463055558720530430">Consenti agli utenti di memorizzare le password Kerberos</translation>
 <translation id="7464058117970792805">Attiva anteprima di stampa</translation>
 <translation id="7464991223784276288">Limita i cookie degli URL corrispondenti alla sessione corrente</translation>
 <translation id="7468182772656807573">Questo criterio consente di stabilire la frequenza di invio, in millisecondi, dei pacchetti di rete di monitoraggio. Gli intervalli sono compresi tra 30 secondi e 24 ore. I valori che non rientrano in questo intervallo verranno fatti rientrare nei limiti.
@@ -6308,8 +6395,12 @@
 
       https://blog.chromium.org/2021/09/user-agent-reduction-origin-trial-and-dates.html
       </translation>
+<translation id="7515953732107149296">Questo criterio è stato rimosso da M53 dopo la rimozione di RC4 da <ph name="PRODUCT_NAME" />.
+
+      Se il criterio non viene configurato o se viene impostato su False, le suite di crittografia RC4 in TLS non verranno attivate. In caso contrario, potrebbe essere impostato su True per mantenere la compatibilità con un server obsoleto. Si tratta di una misura temporanea ed è necessario riconfigurare il server.</translation>
 <translation id="7519218194072744342">L'URL del gestore di protocollo.</translation>
 <translation id="7519251620064708155">Consenti la generazione di chiavi su questi siti</translation>
+<translation id="7521864460386999758">Impedisci l'inserimento di codici di terze parti in Chrome</translation>
 <translation id="7529144158022474049">Fattore di dispersione aggiornamento automatico</translation>
 <translation id="7529332889403151669">Specifica se mostrare l'avviso di schermo intero quando il dispositivo disattiva la sospensione o lo schermo scuro.
 
@@ -6391,6 +6482,7 @@
 <translation id="7613115815080726221">Il periodo di tempo, in millisecondi, senza input dell'utente trascorso il quale viene compiuta l'azione stabilita per l'inattività.</translation>
 <translation id="7614663184588396421">Elenco degli schemi di protocollo disabilitati</translation>
 <translation id="7616631530432070402">Le suite di crittografia 3DES saranno attivate in TLS</translation>
+<translation id="761788785484453836">Richiedi l'isolamento dei siti per tutti i siti web</translation>
 <translation id="7620869951155758729">Questa norma consente di specificare la configurazione utilizzata per generare e verificare il codice di accesso genitori.
 
       La configurazione |current_config| viene sempre utilizzata per generare un codice di accesso e deve essere utilizzata per convalidare il codice di accesso solo quando non può essere convalidato con |future_config|.
@@ -6469,6 +6561,11 @@
 <translation id="7701341006446125684">Imposta le dimensioni della cache di app ed estensioni (in byte)</translation>
 <translation id="770339941914297201">Nuovo comportamento: le app di Chrome Kiosk verranno aggiornate solo utilizzando l'URL di aggiornamento dal criterio</translation>
 <translation id="7703737669292992839">Blocca finestre di dialogo per la selezione di file</translation>
+<translation id="7708934468069982537">Questo criterio è stato rimosso da M58 dopo la rimozione di DHE da <ph name="PRODUCT_NAME" />.
+
+      Se il criterio non viene configurato o se viene impostato su False, le suite di crittografia DHE in TLS non verranno attivate. In caso contrario, potrebbe essere impostato su True per attivare le suite di crittografia DHE e mantenere la compatibilità con un server obsoleto. Si tratta di una misura temporanea ed è necessario riconfigurare il server.
+
+      È consigliabile eseguire la migrazione dei server alle suite di crittografia ECDHE. Se non sono disponibili, assicurati che sia attiva una suite di crittografia che utilizza lo scambio di chiavi RSA.</translation>
 <translation id="7709470712369261710">Non usare i servizi Google per fornire le descrizioni immagini automatiche</translation>
 <translation id="7712109699186360774">Chiedi ogni volta che un sito vuole accedere alla fotocamera e/o al microfono</translation>
 <translation id="7713608076604149344">Limitazioni dei download</translation>
@@ -6586,12 +6683,15 @@
 <translation id="782661371433719637">Non consentire a nessun sito di richiedere l'accesso di lettura di file e directory tramite l'API file system</translation>
 <translation id="7827127381981620448">App della piattaforma</translation>
 <translation id="7833148823006528332">Identificatore dell'app Android, ad esempio "com.google.android.gm" per Gmail.</translation>
+<translation id="7835218570504220753">Disattiva i clic automatici</translation>
 <translation id="7839180815400079700">Se il criterio <ph name="DEVICE_POWER_PEAK_SHIFT_ENABLED_POLICY_NAME" /> viene impostato su Attivato, la configurazione di <ph name="DEVICE_POWER_PEAK_SHIFT_DAY_CONFIG_POLICY_NAME" /> consente di impostare la variazione giornaliera dei picchi energetici.
 
       Se il criterio non viene configurato, la variazione dei picchi energetici rimane disabilitata.
 
       I valori validi per il campo <ph name="MINUTE_FIELD_NAME" /> in <ph name="START_TIME_FIELD_NAME" />, <ph name="END_TIME_FIELD_NAME" /> e <ph name="CHARGE_START_TIME_FIELD_NAME" /> sono 0, 15, 30 e 45.</translation>
+<translation id="7840258755683573560">Attiva i clic automatici</translation>
 <translation id="7841880500990419427">Versione TLS minima a cui retrocedere</translation>
+<translation id="7845130996290850593">Attiva Kerberos</translation>
 <translation id="7846952520291088817">URL per cui vengono esposti IP locali nei candidati ICE WebRTC</translation>
 <translation id="7848641140449742406">Impostazioni del sistema operativo</translation>
 <translation id="7850846808758624237">Se il criterio viene impostato su Attivato, la home page del precedente browser predefinito verrà importata alla prima esecuzione. Se il criterio viene impostato su Disattivato o se non viene configurato, la home page non verrà importata alla prima esecuzione.
@@ -6884,12 +6984,14 @@
           Se imposti questo criterio, gli utenti non potranno modificarlo o ignorarlo.
 
           Se questo criterio non viene impostato, inizialmente l'evidenziazione del cursore è disattivata, ma l'utente può attivarla in qualsiasi momento.</translation>
+<translation id="8160572976152509481">Consenti agli utenti di spegnere il dispositivo soltanto con il tasto di accensione fisico</translation>
 <translation id="8164144100557223371">Disattiva il punto di ingresso nella barra degli strumenti delle funzionalità sperimentali del browser</translation>
 <translation id="8164687848393015214">Se il criterio viene impostato su Attivato, i pacchetti di rete di monitoraggio (<ph name="HEARTBEATS_TERM" />) vengono inviati al server di gestione per monitorare lo stato online e consentire al server di rilevare se il dispositivo è offline.
 
       Se il criterio viene impostato su Disattivato o se non viene configurato, i pacchetti non vengono inviati.</translation>
 <translation id="8169452762291746260">Disattiva il monitoraggio dello stato di integrità del dispositivo</translation>
 <translation id="8171924760436219650">Imposta il pulsante destro come pulsante principale del mouse nella schermata di accesso</translation>
+<translation id="81724933026241365">Consenti agli utenti di spegnere il dispositivo con l'icona di arresto o il tasto di accensione fisico</translation>
 <translation id="8173864651667424191">L'opzione Stampa come immagine è impostata per impostazione predefinita per le anteprime di stampa dei documenti PDF quando è disponibile.</translation>
 <translation id="8176035528522326671">Consenti all'utente aziendale di essere solo l'utente multiprofilo principale (comportamento predefinito per gli utenti gestiti dall'azienda)</translation>
 <translation id="8179161412673077784">Impedisci ai siti con esperienze intrusive di aprirsi in nuove schede o finestre</translation>
@@ -7086,6 +7188,7 @@
 <translation id="8337961007759352651">Gli script worker (web worker, service worker ecc.) richiedono un tipo MIME JavaScript, ad esempio <ph name="MIMETYPE_TEXT_JAVASCRIPT" />. Gli script worker con tipi MIME precedenti, come <ph name="MIMETYPE_TEXT_ASCII" />, verranno rifiutati.</translation>
 <translation id="8339089771335211509">WebRTC utilizzerà l'interfaccia solo se si connette a una rete pubblica, ma non potrà connettersi utilizzando indirizzi IP privati.</translation>
 <translation id="8339420913453596618">Autenticazione a due fattori disattivata</translation>
+<translation id="8341175887542205077">Disattiva backup e ripristino di macchine virtuali Linux</translation>
 <translation id="8344454543174932833">Importa Preferiti dal browser predefinito alla prima esecuzione</translation>
 <translation id="8347993687936322631">Tieni presente che questo criterio è obsoleto e verrà rimosso nella versione 85 di <ph name="PRODUCT_OS_NAME" />. Usa il criterio <ph name="POWER_MANAGEMENT_IDLE_SETTINGS_POLICY_NAME" />.
 
@@ -7102,6 +7205,7 @@
 <translation id="8367209241899435947">Attiva Chrome Software Cleaner su Windows</translation>
 <translation id="8367473200119029349">Reporting su cloud</translation>
 <translation id="8367488518695804749">Non consentire la visualizzazione di popup nei siti</translation>
+<translation id="8369359426872560378">Disattiva l'avvio tramite CA</translation>
 <translation id="8369602308428138533">Ritardo disattivazione schermo in caso di utilizzo di CA</translation>
 <translation id="8371178326720637170">Consente alle estensioni gestite di utilizzare l'API Enterprise Hardware Platform</translation>
 <translation id="8373176843640227330">Disattiva i report sulle informazioni Bluetooth del dispositivo</translation>
@@ -7253,6 +7357,7 @@
       Se utilizzato insieme a <ph name="DEVICE_ROLLBACK_TO_TARGET_VERSION_POLICY_NAME" />, la versione del dispositivo può essere ripristinata a una versione precedente specifica.
 
       Avviso: è sconsigliato configurare delle limitazioni della versione, poiché potrebbero impedire agli utenti di ricevere aggiornamenti software e correzioni critiche per la sicurezza. Gli aggiornamenti con limitazioni a una versione specifica potrebbero esporre gli utenti a dei rischi.</translation>
+<translation id="8519617069657262768">Attiva la sincronizzazione Google Drive</translation>
 <translation id="8520064498689833152">Viene forzato l'uso almeno del livello medio di SafeSearch nella Ricerca Google e nella Modalità con restrizioni di YouTube</translation>
 <translation id="8524334245528364388">URL per un file JSON con un elenco di server di stampa.</translation>
 <translation id="8525526490824335042">Container Linux</translation>
@@ -7277,6 +7382,7 @@
 
           Se il criterio non viene configurato per un sito, il criterio di <ph name="DEFAULT_JAVA_SCRIPT_JIT_SETTING_POLICY_NAME" /> viene applicato al sito, se configurato, altrimenti JIT di JavaScript viene attivato per il sito.</translation>
 <translation id="8543108307976719751">Impedisci le connessioni di accesso remoto a questo computer</translation>
+<translation id="8543975123557636331">Attiva l'output audio</translation>
 <translation id="8544375438507658205">Renderer HTML predefinito per <ph name="PRODUCT_FRAME_NAME" /></translation>
 <translation id="8544465954173828789">Consente la sincronizzazione di messaggi SMS dal telefono al Chromebook</translation>
 <translation id="8549906780629620346">Attiva recupero dell'account</translation>
@@ -7351,6 +7457,7 @@
       Se viene impostato su disabled, gli utenti non possono accedere a queste funzionalità.
       Se non viene configurato, per impostazione predefinita le funzionalità non sono consentite per gli utenti gestiti a livello aziendale su Chrome OS, mentre sono consentite per tutti gli altri utenti e sistemi operativi.</translation>
 <translation id="8626826495474944836">Richiedi isolamento dei siti per ogni sito</translation>
+<translation id="8631314130868563649">Disattiva la gestione della variazione dei picchi energetici</translation>
 <translation id="8631434304112909927">fino alla versione <ph name="UNTIL_VERSION" /></translation>
 <translation id="8631437968147930597">L'elenco delle app per scrivere note consentite nella schermata di blocco di <ph name="PRODUCT_OS_NAME" /></translation>
 <translation id="8633550872001751090">Consenti l'inclusione dei dati di <ph name="PRODUCT_NAME" /> nei backup</translation>
@@ -7531,6 +7638,7 @@
 <translation id="8816370949847593408">Potrebbe non essere consentita l'esecuzione delle app di Chrome, in base allo stato del ritiro graduale.</translation>
 <translation id="8818768076343557335">Prevedi sempre le azioni di rete su ogni rete non cellulare.
           (obsoleto nella versione 50, rimosso nella 52. Dopo la versione 52, se viene impostato il valore 1, viene gestito come 0; prevedi le azioni di rete su qualsiasi connessione di rete).</translation>
+<translation id="8820434908768990758">Attiva l'isolamento dei siti per tutti i siti web, ma consenti agli utenti di disattivarlo</translation>
 <translation id="8821678641132607468">Se il criterio viene impostato su Attivato, la cronologia di navigazione del precedente browser predefinito verrà importata alla prima esecuzione. Se il criterio viene impostato su Disattivato o se non viene configurato, la cronologia di navigazione non verrà importata alla prima esecuzione.
 
       Gli utenti possono attivare una finestra di dialogo per l'importazione e la casella di controllo della cronologia di navigazione verrà selezionata o deselezionata in modo che corrisponda al valore del criterio.</translation>
@@ -7628,6 +7736,7 @@
 <translation id="8919100556245407184">Il periodo di tempo, in giorni, dopo il post di scadenza dell'aggiornamento automatico trascorso il quale l'utente viene disconnesso dall'account se la versione di <ph name="PRODUCT_OS_NAME" /> è precedente a quella specificata nel criterio <ph name="CHROMEOS_VERSION_PROPERTY_NAME" />.</translation>
 <translation id="8919369436496201075">Consenti al dispositivo di ricevere aggiornamenti LTS</translation>
 <translation id="8921669704201370845">Attiva reporting su cloud di <ph name="PRODUCT_NAME" /> per profilo gestito</translation>
+<translation id="8922231993239705844">Disattiva l'evidenziazione del puntatore</translation>
 <translation id="8922494933893518624">Forza l'attivazione di WebSQL in contesti non sicuri.</translation>
 <translation id="8930064580550462145">Durante l'accesso tramite la schermata di blocco, <ph name="PRODUCT_OS_NAME" /> può eseguire l'autenticazione con un server (online) o utilizzando una password memorizzata nella cache (offline).
 
@@ -7675,6 +7784,7 @@
 <translation id="8983539044126123594">Attiva l'accesso con Account Google aggiuntivi</translation>
 <translation id="8985219286836584291">Attiva i report sulle informazioni di sistema del dispositivo</translation>
 <translation id="8992176907758534924">Non consentire la visualizzazione di immagini nei siti</translation>
+<translation id="8994850249590725417">Non mostrare notifiche sulla privacy</translation>
 <translation id="8994954504552592260">Consente di attivare la migrazione dei dispositivi gestiti <ph name="MS_AD_NAME" /> nella gestione del cloud. Questo criterio consente di avviare da remoto una migrazione touchless di più dispositivi di una società. Inoltre, la migrazione sarà il più trasparente possibile per gli utenti finali.
 
       Se questo criterio viene attivato e l'ID di registrazione è già stato caricato su DMServer, verrà attivato il Powerwash da remoto del dispositivo.
@@ -7877,6 +7987,7 @@
       Questo criterio è una misura temporanea e verrà rimosso nelle future versioni di <ph name="PRODUCT_NAME" />. Dopo la rimozione del criterio, <ph name="PRODUCT_NAME" /> potrà sempre eseguire query su tipi DNS aggiuntivi.</translation>
 <translation id="9167719789236691545">Disattiva Drive nell'app File di <ph name="PRODUCT_OS_NAME" /></translation>
 <translation id="9187743794267626640">Disabilita il montaggio di una memoria esterna</translation>
+<translation id="9190022798664427644">Attiva l'audio in formato mono</translation>
 <translation id="9190456586252617675">Questo criterio consente di stabilire la modalità dell'esperienza di onboarding dell'assistente.
 
       Se il criterio non viene impostato o viene impostato su <ph name="ASSISTANT_ONBOARDING_MODE_DEFAULT" />, viene usata la modalità predefinita dell'esperienza di onboarding dell'assistente.
@@ -7916,6 +8027,7 @@
       Se il criterio non viene impostato, è attivato per <ph name="PRODUCT_NAME" /> da 73 a 75 e disattivato per <ph name="PRODUCT_NAME" /> 76 e 77.</translation>
 <translation id="93985900824506396">Le suite di crittografia 3DES saranno disattivate in TLS</translation>
 <translation id="940706688964479124">Elenco dei tipi di file che dovrebbero essere aperti automaticamente al termine del download</translation>
+<translation id="942977875497446094">Apri automaticamente il browser all'avvio</translation>
 <translation id="943865157632139008">Consente di configurare il renderer HTML predefinito quando è installato <ph name="PRODUCT_FRAME_NAME" />.
       Per impostazione predefinita, l'host browser esegue il rendering, ma in alternativa è possibile sostituire questa impostazione e far sì che <ph name="PRODUCT_FRAME_NAME" /> esegua il rendering delle pagine HTML per impostazione predefinita.</translation>
 <translation id="944817693306670849">Imposta dimensioni cache su disco</translation>
@@ -7945,6 +8057,7 @@
 <translation id="981346395360763138">Servizi di geolocalizzazione di Google disabilitati</translation>
 <translation id="982497069985795632">Attiva il controllo ortografico</translation>
 <translation id="983256325512298435">Definisci un elenco di protocolli che possono lanciare un'applicazione esterna dalle origini elencate senza chiedere conferma all'utente</translation>
+<translation id="987261962216071510">Consenti solo gli accessi come ospite al browser</translation>
 <translation id="991560005425213776">Invia nome utente e nome file alle stampanti native</translation>
 <translation id="99202634486128833">Se il criterio è impostato su CopyCaCerts, per le app ARC sono disponibili tutti i certificati CA installati su ONC con <ph name="WEB_TRUSTED_BIT" />.
 
diff --git a/components/policy/resources/policy_templates_ja.xtb b/components/policy/resources/policy_templates_ja.xtb
index a1a848e..c00b23b8 100644
--- a/components/policy/resources/policy_templates_ja.xtb
+++ b/components/policy/resources/policy_templates_ja.xtb
@@ -209,6 +209,7 @@
       このポリシーを未設定のままにした場合、<ph name="DEFAULT_POPUPS_SETTING_POLICY_NAME" /> が設定されていればその設定がすべてのサイトで使用され、設定されていなければユーザーの個人設定が適用されます。
 
       有効な <ph name="URL_LABEL" /> パターンについて詳しくは、https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns をご覧ください。このポリシーの値に「<ph name="WILDCARD_VALUE" />」は使用できません。</translation>
+<translation id="1209096923317019235">指定したファイル拡張子のデフォルト ハンドラとしてアプリを割り当てます</translation>
 <translation id="120937472976628837">ファン情報を報告する</translation>
 <translation id="1212233008927724662">ログイン WebUI の遅延読み込みを無効にする。</translation>
 <translation id="1216919699175573511">Signed HTTP Exchange(SXG)のサポートを有効にします</translation>
@@ -695,6 +696,7 @@
 <translation id="1700811900332333712">デバイスに Powerwash のリクエストを許可する</translation>
 <translation id="1708496595873025510">バリエーション シードの取得に制限を設定する</translation>
 <translation id="1709154322133526432">起動時のデフォルト ブラウザ チェックを有効にする</translation>
+<translation id="1710245398478550276">Desk API の使用を許可するサードパーティのドメインリストを指定します</translation>
 <translation id="1713829924716792485">このポリシーを有効に設定するか未設定のままにした場合、リモート アクセス ホストに接続しているユーザーは、クライアントとホスト間でファイルを転送できます。これは、ファイル転送がサポートされていないリモート サポート接続には適用されません。
 
       このポリシーを無効に設定した場合、ファイル転送は許可されません。</translation>
@@ -2203,6 +2205,15 @@
       <ph name="PRODUCT_NAME" /> が正常に終了しなかった場合(ブラウザや OS がクラッシュした場合など)は、次回プロファイルが読み込まれたときに閲覧データが削除されます。</translation>
 <translation id="3264793472749429012">デフォルトの検索プロバイダのエンコード</translation>
 <translation id="3273221114520206906">デフォルトのJavaScript 設定</translation>
+<translation id="3282240846541032181">このポリシーでは、<ph name="PRODUCT_OS_NAME" /> で各ファイル拡張子のデフォルト ハンドラとして動作するアプリを指定できます。ユーザーはこの動作を変更できません。
+      このポリシーで指定されていないファイル拡張子については、ユーザーが通常のワークフローに合わせて独自のデフォルトをすべて設定できます。
+
+      Chrome アプリの場合は ID(<ph name="DEFAULT_HANDLERS_FOR_FILE_EXTENSIONS_POLICY_CHROME_APP_EXAMPLE" /> など)、ウェブアプリの場合は <ph name="WEB_APP_INSTALL_FORCE_LIST_POLICY_NAME" /> で使用する URL(<ph name="DEFAULT_HANDLERS_FOR_FILE_EXTENSIONS_POLICY_WEB_APP_EXAMPLE" /> など)を指定します。
+
+      なお、ポリシーの項目を機能させるには、マニフェストで該当のファイル拡張子に対してアプリをファイル ハンドラとして宣言する必要があります(このポリシーは既存のアプリ機能を拡張するものではありません)。
+
+      ポリシーを未設定のままにした場合、<ph name="PRODUCT_OS_NAME" /> は内部ロジックに沿ってデフォルト ハンドラを選択します。
+      </translation>
 <translation id="328347261792478720">デフォルトでは、ブラウザはユーザーに合わせてパーソナライズされたおすすめメディアを表示します。このポリシーを無効に設定すると、ユーザーに対するおすすめは表示されません。このポリシーを有効にするか、未設定のままにすると、おすすめメディアがユーザーに表示されます。</translation>
 <translation id="3284094172359247914">WebUSB API の使用を管理する</translation>
 <translation id="3288595667065905535">リリース チャンネル</translation>
@@ -3959,6 +3970,37 @@
 <translation id="5330684698007383292">次のコンテンツ タイプの処理を <ph name="PRODUCT_FRAME_NAME" /> に対して許可する</translation>
 <translation id="5331746669335642668"><ph name="PRODUCT_NAME" /> のクラウド ポリシーはプラットフォーム ポリシーに優先します。</translation>
 <translation id="5346587320074666194">センサーへのアクセスをブロックするサイトを指定します</translation>
+<translation id="5357039649371478544"><ph name="PRODUCT_OS_NAME" /> でデータ漏洩を防止するルールのリストを設定します。
+      データ漏洩は、データのコピーと貼り付け、ファイルの転送、印刷、画面の共有、スクリーンショットの撮影などで起こる可能性があります。
+
+      ルールは次の項目で構成されます。
+      - 参照元の URL のリスト。データを機密として扱い、制限を適用する参照元を指定します。
+      - 参照先の URL またはコンポーネントのリスト。機密データの共有を許可または禁止する参照先を指定します。
+      - 参照元のデータに適用する制限のリスト。
+
+      ルールでは次の項目を管理できます。
+      - 参照元と参照先の間で共有するクリップボード データ。
+      - 参照元のデータのスクリーンショット撮影。
+      - 参照元のデータの印刷。
+      - 参照元のデータが表示されるプライバシー画面。
+      - 参照元のデータの画面共有。
+      - 参照先に転送する際に参照元からダウンロードできるファイル。<ph name="PRODUCT_OS_NAME" /> バージョン 108 以降でサポートされます。
+
+      制限レベルは「BLOCK」、「ALLOW」、「REPORT」、「WARN」に設定できます。
+      - 制限レベルを「BLOCK」に設定した場合、該当の項目は許可されません。
+      <ph name="DATA_LEAK_PREVENTION_REPORTING_ENABLED" /> を True に設定した場合、ブロックされた項目操作は管理者に報告されます。
+      - 制限レベルを「ALLOW」に設定した場合、該当の項目が許可されます。
+
+      - 制限レベルを「REPORT」に設定し、<ph name="DATA_LEAK_PREVENTION_REPORTING_ENABLED" /> を True に設定した場合、該当の項目は管理者に報告されます。
+      - 制限レベルを「WARN」に設定した場合、警告が表示され、項目によっては、実行するかキャンセルするか選択を求められます。<ph name="DATA_LEAK_PREVENTION_REPORTING_ENABLED" />を True に設定した場合、警告の表示が管理者に報告されます。該当の項目を実行した場合も報告されます。
+
+      注:
+      - 「PRIVACY_SCREEN」の制限を設定しても、プライバシー画面はオンにできますが、制限クラスを「BLOCK」に設定した場合はオンにできなくなります。
+      - 「CLIPBOARD」または「FILES」の制限を設定した場合、参照先を空白にすることはできませんが、他の制限については参照先を空白にできます。
+      - 「DRIVE」と「USB」の参照先は「CLIPBOARD」の制限では無視されます。
+      - URL のパターンは https://www.chromium.org/administrators/url-blocklist-filter-format の形式で指定します。
+
+      ポリシーを未設定のままにした場合、制限は適用されません。</translation>
 <translation id="5362531528507578966">背景のグラフィックのデフォルト印刷モードをオーバーライドします。</translation>
 <translation id="5365476955714838841">代替ブラウザに渡すコマンドラインのパラメータ。</translation>
 <translation id="5365946944967967336">ツールバーにホーム ボタンを表示する</translation>
@@ -6358,6 +6400,7 @@
 
           このポリシーの値はミリ秒単位とし、アイドル待ちの時間と同じかそれより短い時間を指定できます。</translation>
 <translation id="7992613144342460685">ウィンドウの配置に関する権限を許可するサイトを指定する</translation>
+<translation id="7994034037344330969">Desk API を使用して ChromeOS のデスクを管理できるサードパーティのウェブ アプリケーションのドメインリストを指定します。URL のパターンは、https://developer.chrome.com/docs/extensions/mv3/manifest/externally_connectable/#reference の「matches」プロパティで定義されている形式で指定する必要があります。</translation>
 <translation id="7995610550667275367">スキャン(バージョン 87 以降でサポート)</translation>
 <translation id="7999023147219236247">アプリへの権限付与のリクエストに関するポリシーです。PERMISSION_POLICY_UNSPECIFIED: ポリシーを指定しません。権限に関するポリシーがどのレベルでも指定されていなければ、デフォルトで「PROMPT」の動作が適用されます。PROMPT: 権限を付与するよう促すメッセージをユーザーに表示します。GRANT: 自動的に権限を付与します。DENY: 自動的に権限の付与を拒否します。</translation>
 <translation id="7999336306414770162">デバイスの VPD 情報レポートを無効にする</translation>
diff --git a/components/policy/resources/policy_templates_ko.xtb b/components/policy/resources/policy_templates_ko.xtb
index d45399d..3f8f9da 100644
--- a/components/policy/resources/policy_templates_ko.xtb
+++ b/components/policy/resources/policy_templates_ko.xtb
@@ -151,6 +151,7 @@
 
       <ph name="CHROME_OS_RELEASE_CHANNEL_POLICY_NAME" /> 설정은 <ph name="CHROME_OS_RELEASE_CHANNEL_DELEGATED_POLICY_NAME" />를 False로 설정하는 경우에만 적용됩니다.</translation>
 <translation id="1147732569915511430">아바타 이미지의 SHA-256 해시입니다.</translation>
+<translation id="1148415065145333943">고급 배터리 충전 모드 사용 중지</translation>
 <translation id="1151353063931113432">이 사이트에서 이미지 허용</translation>
 <translation id="1151987132434751822">정책 사용자 인증 정보가 적용될 수 있는 인증 스키마입니다. 다음 중 하나일 수 있습니다.
             * basic
@@ -169,6 +170,7 @@
 <translation id="1160479894929412407">QUIC 프로토콜 허용</translation>
 <translation id="1160939557934457296">세이프 브라우징 경고 페이지 사용 중지</translation>
 <translation id="1163080558183062209">거부 목록에 있는 프린터 유형 사용 중지</translation>
+<translation id="1165923723751466821">게스트 브라우저 로그인 및 프로필 로그인 허용</translation>
 <translation id="117059611145966538">외부 인쇄 서버</translation>
 <translation id="117080706484659953"><ph name="MAC_OS_NAME" />에서 정책 범위 감지 허용</translation>
 <translation id="1171106901454883937">기기 버전 정보 보고 사용 설정</translation>
@@ -221,6 +223,7 @@
 <translation id="120937472976628837">팬 정보 보고</translation>
 <translation id="1212233008927724662">Lazy Login WebUI 로딩을 사용 중지합니다.</translation>
 <translation id="1216919699175573511">서명된 HTTP 교환(SXG) 지원 사용 설정</translation>
+<translation id="1219027971768347970">오디오 샌드박스에 기본 구성 사용</translation>
 <translation id="1219695476179627719">기기가 이미 이후 버전을 실행하는 경우 기기를 <ph name="DEVICE_TARGET_VERSION_PREFIX_POLICY_NAME" />에 설정된 버전으로 롤백할지 여부를 지정합니다.
 
       기본값은 RollbackDisabled입니다.</translation>
@@ -490,6 +493,7 @@
 
       외부 확장 프로그램 및 설치 관련 문서는 다음 페이지에서 확인하세요. https://developer.chrome.com/apps/external_extensions
       </translation>
+<translation id="1484190167468437592">모노 오디오 사용 중지</translation>
 <translation id="1486021504508098388">백라이트 정보 보고</translation>
 <translation id="1486469502848499602">수동으로 생성된 새 티켓의 <ph name="KRB5_CONFIG" /> 추천 구성을 변경합니다.
 
@@ -502,6 +506,7 @@
 
       참고: 서로 다른 서버 이름은 쉼표로 구분하세요. 와일드 카드(<ph name="WILDCARD_VALUE" />)를 사용할 수 있습니다.</translation>
 <translation id="1488724823347505879">Android 앱에서 웹 앱으로의 공유를 사용 설정합니다.</translation>
+<translation id="1501644502684303995">로그인 화면에 온라인 로그인만 시행</translation>
 <translation id="1502843533062797703">타사 소프트웨어 삽입 차단 사용</translation>
 <translation id="1503969899251962413">정책을 설정하면 이 기기의 <ph name="PLUGIN_VM_NAME" /> 라이선스 키가 지정됩니다.
 
@@ -649,6 +654,7 @@
 
       정책을 사용 안함으로 설정하거나 설정하지 않으면 지원되지 않는 시스템에서 경고가 표시됩니다.</translation>
 <translation id="1634989431648355062">이 사이트에서 <ph name="FLASH_PLUGIN_NAME" /> 플러그인 허용</translation>
+<translation id="1635748761015837179">외부 저장소 기기에 쓰기 허용</translation>
 <translation id="1639468541408865385">전역적으로 범위가 지정된 HTTP 인증 캐시 사용 설정</translation>
 <translation id="1641394008743444477">사용 중지할 <ph name="PRODUCT_OS_NAME" /> 기능 목록을 설정할 수 있습니다.
 
@@ -664,6 +670,7 @@
 
       정책을 설정하지 않으면 기본 캐시 크기가 사용되지만 사용자가 --media-cache-size 플래그로 이를 변경할 수 있습니다.</translation>
 <translation id="1648816843164517573">HSTS 정책 검사를 우회할 이름 목록입니다.</translation>
+<translation id="1651197070942919276">기기에서 가상 머신을 실행하도록 허용 안함</translation>
 <translation id="1654087023995670109">브라우저 게스트 모드 시행</translation>
 <translation id="1655229863189977773">디스크 캐시 크기 설정(바이트)</translation>
 <translation id="165769015320654523">다음 사이트가 주어진 공급업체 및 제품 ID를 사용해 HID 기기에 연결할 수 있는 권한을 자동으로 부여합니다.</translation>
@@ -722,6 +729,7 @@
 
       참고: 자세한 예시를 보려면 Chromium 프로젝트(https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett)를 참고하세요.</translation>
 <translation id="1700811900332333712">기기가 파워워시를 요청하도록 허용</translation>
+<translation id="1705215165572785706">맨 위 키를 미디어 키로 사용하지만 사용자가 변경하도록 허용</translation>
 <translation id="1708496595873025510">버전 시드 가져오기 제한 설정</translation>
 <translation id="1709154322133526432">시작 시 기본 브라우저 확인 사용 설정</translation>
 <translation id="1713829924716792485">정책을 사용 설정하거나 설정하지 않으면 원격 액세스 호스트에 연결된 사용자가 클라이언트와 호스트 사이에 파일을 전송할 수 있습니다. 이 정책은 파일 전송을 지원하지 않는 원격 지원 연결에는 적용되지 않습니다.
@@ -893,6 +901,7 @@
       정책을 False로 설정하거나 설정하지 않으면 <ph name="PRODUCT_NAME" />에서 <ph name="PRODUCT_NAME" /> 19 이후에는 온라인 해지 확인 검사를 진행하지 않습니다.
 
       참고: <ph name="OCSP_CRL_LABEL" /> 검사는 보안상 실질적인 이점이 없습니다.</translation>
+<translation id="1905061765326052857">제휴되지 않은 사용자가 Linux 앱을 지원하는 데 필요한 가상 머신을 사용하도록 허용 안 함</translation>
 <translation id="1910704279188129272">앱별 사용 제한을 설정하도록 허용합니다.
         사용 제한은 특정 사용자를 위해 <ph name="PRODUCT_OS_NAME" />에 설치된 앱에 적용될 수 있습니다.
         제한은 |app_limits| 목록으로 전달되어야 합니다. 앱당 하나의 항목만 허용됩니다. 목록에 포함되지 않은 앱에는 제한이 없습니다.
@@ -915,11 +924,14 @@
 <translation id="1920772397574801429">정책을 설정하면 Kerberos 인증과 같은 <ph name="HTTP_NEGOTIATE" /> 인증을 지원하는 Android 인증 앱에서 제공된 계정 유형이 지정됩니다. 이 정보는 인증 앱 공급업체에서 제공해야 합니다. 자세한 정보는 Chromium 프로젝트(https://goo.gl/hajyfN)를 참고하세요.
 
       정책을 설정하지 않으면 Android에서 <ph name="HTTP_NEGOTIATE" /> 인증이 사용 중지됩니다.</translation>
+<translation id="1923704782248889851">음성기록 사용 설정</translation>
 <translation id="1925529914257504750">P2P 자동 업데이트 사용</translation>
+<translation id="1930094135927166199">USB 전력 공유 사용 중지</translation>
 <translation id="1930127294345368978">단일 인쇄 작업에 사용할 수 있는 최대 시트 수</translation>
 <translation id="193259052151668190">USB 분리 가능 기기 허용 목록</translation>
 <translation id="1933378685401357864">배경화면 이미지</translation>
 <translation id="1942626390957213764">데스크톱 공유 허브 사용 중지</translation>
+<translation id="194407941132272412">모든 웹사이트에 사이트 격리를 사용 중지하되 사용자에게 사용 설정 허용</translation>
 <translation id="1945994447126139909">이 기업 정책은 단기적인 적응을 위해 마련되었으며 <ph name="PRODUCT_NAME" /> 버전 88에서 삭제될 예정입니다.
 
       Chrome의 기본 리퍼러 정책은 Chrome 85 공개 버전을 대상으로 하는 점진적 출시를 통해 현재 값인 no-referrer-when-downgrade에서 더욱 안전한 strict-origin-when-cross-origin으로 강화되는 중입니다.
@@ -1021,8 +1033,10 @@
 <translation id="2013285471046373727">앱 설치 방법을 지정합니다. OPTIONAL: 앱이 자동으로 설치되지 않으나 사용자가 설치할 수 있습니다. 정책을 지정하지 않을 경우 기본값으로 사용됩니다. PRELOAD: 앱이 자동으로 설치되나 사용자가 제거할 수 있습니다. FORCE_INSTALLED: 앱이 자동으로 설치되며 사용자가 제거할 수 없습니다. BLOCKED: 앱이 차단되어 설치할 수 없습니다. 이전 정책에서 앱이 설치된 경우 제거됩니다.</translation>
 <translation id="2014757022750736514">사용자가 계정에 로그인하는 로그인 화면의 동작을 제어합니다. 설정에는 로그인할 수 있는 사용자, 허용되는 계정 유형, 사용할 인증 수단뿐 아니라 일반 접근성, 입력 방법, 언어 설정이 포함됩니다.</translation>
 <translation id="201557587962247231">기기 상태 보고서 업로드 빈도</translation>
+<translation id="2016031354108680330">Linux 가상 머신에 대한 루트 액세스 권한 사용 설정</translation>
 <translation id="2017301949684549118">웹 앱 URL이 자동으로 설치됨</translation>
 <translation id="2017459564744167827">스키마 및 포맷에 관한 자세한 내용은 <ph name="REFERENCE_URL" /> 페이지를 참조하세요.</translation>
+<translation id="2018425641414671849">기기가 잠겨 있을 때 사용자가 미디어 재생을 하도록 허용 안함</translation>
 <translation id="2024476116966025075">원격 액세스 클라이언트에게 필요한 도메인 이름 설정</translation>
 <translation id="2029985289397958781">기업 사용자용 <ph name="GOOGLE_LENS_PRODUCT_NAME" /> 카메라 지원 검색 사용 중지</translation>
 <translation id="2030905906517501646">기본 검색 공급자 키워드</translation>
@@ -1358,6 +1372,7 @@
       "tls1" 또는 "tls1.1" 설정 지원은 버전 91부터 삭제되었습니다. TLS 1.0/1.1 경고 숨김은 더 이상 지원되지 않습니다.</translation>
 <translation id="2364639863953745682">어시스턴트 온보딩 환경 모드</translation>
 <translation id="2366301887862414321">사용자 수준과 시스템 수준의 기본 메시지 호스트 둘 다 허용</translation>
+<translation id="2373014700224092497">사용자가 Kerberos 계정을 추가하도록 허용</translation>
 <translation id="2382672620906337383">자바스크립트 setTimeout()은 중첩 기준점이 높아질 때까지 고정되지 않습니다.</translation>
 <translation id="2384233438419344179">정책을 사용으로 설정하면 브라우저의 주소 표시줄에 있는 도메인이 출처가 아닌 웹페이지 요소가 쿠키를 설정할 수 없습니다. 사용 안함으로 설정하면 이러한 요소가 쿠키를 설정하도록 허용하고 사용자가 설정을 변경할 수 없습니다.
 
@@ -1505,6 +1520,7 @@
       정책을 설정하지 않으면 클릭 투 콜 기능이 기본적으로 사용 설정됩니다.</translation>
 <translation id="2482676533225429905">기본 메시지</translation>
 <translation id="2483146640187052324">모든 네트워크 연결의 네트워크 활동 예측</translation>
+<translation id="2489558694350871332">기기에서 가상 머신을 실행하도록 허용</translation>
 <translation id="2496180316473517155">인터넷 사용 기록</translation>
 <translation id="2497751676088107779">사용자 스크립트</translation>
 <translation id="2497965601277442929">사용자가 HTTPS 전용 모드를 사용 설정하도록 허용하지 않음</translation>
@@ -1546,6 +1562,7 @@
       정책을 사용 안함으로 설정하거나 설정하지 않은 채로 두면 전체 복원 설정에 따라 로그인 시 실행할 항목이 결정됩니다.</translation>
 <translation id="2517466659416174529">백그라운드 탭 중단 허용</translation>
 <translation id="2518231489509538392">오디오 재생 허용</translation>
+<translation id="2519578205567666653">외부 저장소 기기 허용</translation>
 <translation id="2520551905471951523">오디오 프로세스에 높은 우선순위 사용</translation>
 <translation id="2521581787935130926">북마크바에 앱 단축키 표시</translation>
 <translation id="2522304491589804974">확장 프로그램 설치 허용 목록 구성</translation>
@@ -1601,6 +1618,7 @@
 <translation id="2568488785376704318">지원 중단된 정책입니다. 대신 <ph name="REMOTE_ACCESS_HOST_DOMAIN_LIST_POLICY_NAME" /> 정책을 사용하세요.</translation>
 <translation id="2575198840408498393">로밍 프로필 생성 사용 안함</translation>
 <translation id="2576324725151524912">분리된 앱 개발자 모드를 허용합니다.</translation>
+<translation id="257717978573041245">하드웨어 가속 사용 설정</translation>
 <translation id="257788512393330403">6시간마다 비밀번호를 입력해야 합니다.</translation>
 <translation id="2580757713966614760">정책을 설정하면 일괄 프린터 설정에 적용할 액세스 정책이 지정되므로 사용자에게 제공할 <ph name="DEVICE_PRINTERS_POLICY_NAME" />의 프린터를 제어할 수 있습니다.
 
@@ -1623,6 +1641,7 @@
       * AC 전원으로 구동 중일 때 유휴 상태에서 실행되는 기본 작업은 종료입니다.
 
       정책 또는 설정을 설정하지 않으면 다양한 전원 설정에 기본 값이 사용됩니다.</translation>
+<translation id="2591775699187375408">오디오 처리를 항상 샌드박스로 실행함</translation>
 <translation id="2592091433672667839">판매 모드의 로그인 화면에 화면 보호기가 표시되기 전에 비활성화 상태의 지속 시간</translation>
 <translation id="259289618675490104">정책을 'All'(값 0)로 설정하거나 설정하지 않으면 사용자가 인증서를 관리할 수 있습니다. 정책을 'None'(값 2)으로 설정하면 사용자가 인증서를 볼 수 있지만 관리할 수는 없습니다.
 
@@ -1857,6 +1876,7 @@
 <translation id="283478052049914107">정책을 사용으로 설정하고 비표준 포트(즉, 80 또는 443이 아닌 포트)를 입력하면 생성된 Kerberos SPN에 포트가 포함됩니다.
 
       정책을 사용 안함으로 설정하거나 설정하지 않으면 생성된 Kerberos SPN에 포트가 포함되지 않습니다.</translation>
+<translation id="2834965199373338033">백그라운드 모드 사용 설정</translation>
 <translation id="2835686964326214400">기기를 재부팅할 맞춤 일정 설정</translation>
 <translation id="2838830882081735096">데이터 이전 및 ARC 허용 안함</translation>
 <translation id="2839294585867804686">네트워크 파일 공유 설정</translation>
@@ -1869,6 +1889,7 @@
 <translation id="2866619962692161453">메타 정책 유형</translation>
 <translation id="2866726566162790531">모든 HTTP 인증을 허용하는 출처 목록</translation>
 <translation id="2869762730352628426">로그인 화면에서 자동 클릭 사용</translation>
+<translation id="2872098849906555324">Google Drive 동기화 사용 중지</translation>
 <translation id="2872961005593481000">종료</translation>
 <translation id="2874209944580848064">Android 앱을 지원하는 <ph name="PRODUCT_OS_NAME" /> 기기 관련 주의사항:</translation>
 <translation id="2875192972412983412">서버 프린터를 검색할 프린트 서버의 하위 집합을 지정합니다.
@@ -1909,6 +1930,7 @@
       정책을 False로 설정하면 ARC 부팅 전에 고스트 창이 생성되지 않습니다. ARC 부팅 후 ARC 앱이 복원됩니다.</translation>
 <translation id="2899002520262095963">Android 앱은 이 정책을 통해 설정된 네트워크 구성 및 CA 인증서를 사용할 수 있지만 일부 구성 옵션에는 액세스할 권한이 없습니다.</translation>
 <translation id="2899213072616346687">배경 그래픽 인쇄 모드를 제한합니다. 정책이 설정되지 않으면 제한이 없는 것으로 간주됩니다.</translation>
+<translation id="2899640611559504158">가상 머신 명령줄 액세스 권한 사용 중지</translation>
 <translation id="290002216614278247">클라이언트 시간 또는 그날의 사용 할당량에 따라 사용자의 세션을 잠글 수 있습니다.
 
           |time_window_limit|은 사용자의 세션을 잠글 일별 시간대를 지정합니다. Google에서는 요일당 하나의 규칙만 지원하므로, |entries| 배열의 크기는 0부터 7까지로 지정할 수 있습니다. |starts_at| 및 |ends_at|은 시간대의 시작과 끝이며, |ends_at|이 |starts_at|보다 작은 경우 |time_limit_window|가 다음 날 종료된다는 의미입니다. |last_updated_millis|는 이 항목이 마지막으로 업데이트된 시간의 UTC 타임스탬프로, 타임스탬프는 정수 형식에 맞지 않으므로 문자열로 전송됩니다.
@@ -1983,6 +2005,7 @@
 <translation id="2960128438010718932">신규 업데이트를 적용하기 위한 스테이징 일정</translation>
 <translation id="2960691910306063964">원격 액세스 호스트에서 PIN을 사용하지 않는 인증을 사용 또는 사용 중지합니다.</translation>
 <translation id="2962972237615992440"><ph name="CLOUD_PRINT_NAME" /> 프록시 사용 안함</translation>
+<translation id="2963292398266537394">음성기록 사용 중지</translation>
 <translation id="2964056138564883247">사용자가 <ph name="BOREALIS_NAME" />를 사용하도록 허용할지 선택합니다.
 
       정책이 False로 설정되면 <ph name="BOREALIS_NAME" />를 사용할 수 없습니다. 그렇지 않은 경우(정책이 설정되지 않거나 True로 설정됨) 다른 정책 또는 설정에서 사용 중지하지 않는 이상 <ph name="BOREALIS_NAME" />를 사용할 수 있습니다.</translation>
@@ -2086,6 +2109,7 @@
       정책을 False로 설정하면 자동 생성된 콘텐츠 추천이 새 탭 페이지에 표시되지 않습니다.</translation>
 <translation id="3046192273793919231">온라인 상태를 모니터링하기 위해 관리 서버에 네트워크 패킷을 전송합니다.</translation>
 <translation id="3047732214002457234">Chrome 정리도구가 Google에 데이터를 보고하는 방식 관리</translation>
+<translation id="3047864383610708617">고정키 사용 중지</translation>
 <translation id="3048744057455266684">이 정책이 설정되어 있고 검색주소창에서 제안된 검색 URL의 검색 문자열 또는 일부 식별자에 이 매개변수가 포함되어 있으면 추천 검색어가 원시 검색 URL 대신 검색어 및 검색 공급자를 표시합니다.
 
           이 정책은 선택사항입니다. 설정하지 않으면 검색어가 대체됩니다.
@@ -2159,6 +2183,7 @@
       유효한 <ph name="URL_LABEL" /> 패턴에 관해 자세히 알아보려면 https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns를 참고하세요.  이 정책은 출처만 기준으로 일치 여부를 판단하므로 URL 패턴의 경로는 무시됩니다.</translation>
 <translation id="3118552207903834734">사용자가 기기 호스트 이름을 구성하도록 허용</translation>
 <translation id="3122082892722698079">안전하지 않은 콘텐츠 예외 사용 제어</translation>
+<translation id="3125472566440502628">텍스트 읽어주기 사용 중지</translation>
 <translation id="3128072319047570212">키 생성기 설정</translation>
 <translation id="3131703464330936425">모바일 데이터 로밍 허용 안함</translation>
 <translation id="3135820765957090754">설정을 사용하면 사용자가 <ph name="PRODUCT_OS_NAME" /> 기기 및 연결된 Android 휴대전화 간에 Wi-Fi 네트워크 구성을 동기화할 수 있습니다. Wi-Fi 네트워크 구성을 동기화하려면 사용자가 설정 절차를 완료하여 이 기능을 명시적으로 선택해야 합니다.
@@ -2300,6 +2325,8 @@
       정책을 설정하지 않으면 <ph name="TPM_FIRMWARE_UPDATE_TPM" /> 펌웨어 업데이트가 제공되지 않습니다.</translation>
 <translation id="3232563711929146405">네트워크 서비스 샌드박스 사용 중지</translation>
 <translation id="3232691106293445015">비보안 HTTP 연결에는 <ph name="BASIC_AUTH" /> 인증 사용이 허용되지 않고 HTTPS 연결이 요구됨</translation>
+<translation id="3234753491625248216">하드웨어 가속 사용 중지</translation>
+<translation id="3234773866678260466">새 프로필 추가 허용</translation>
 <translation id="3234863952320884611"><ph name="FILE_SYSTEM_SYNC_ACCESS_HANDLE" /> 메서드가 비동기식으로 호출되도록 사용 설정합니다.</translation>
 <translation id="3235085623859932253"> 이 정책을 사용 중지하면 사용자는 PCIe 터널링을 통해 Thunderbolt/USB4 주변기기를 완전히 연결할 수 없습니다.
 
@@ -2458,6 +2485,7 @@
 
       <ph name="DEVICE_LOCAL_ACCOUNT_AUTO_LOGIN_ID_POLICY_NAME" /> 정책이 설정되어 있지 않으면 이 정책이 적용되지 않습니다.</translation>
 <translation id="3397883909301547525"><ph name="PRODUCT_OS_NAME" /> 런처에 추천 앱 표시 안함</translation>
+<translation id="3398051852031115795">기본 시스템 동작(화면 크기에 따라 다름)</translation>
 <translation id="3399859571630358395">빠른 페어링(빠른 블루투스 페어링)이 사용 중지되도록 강제 적용</translation>
 <translation id="3404681701763345449"><ph name="GOOGLE_CALENDAR_NAME" /> 통합을 사용 설정합니다.</translation>
 <translation id="3408078762098350617"><ph name="SYSTEM_FEATURES_DISABLE_LIST_POLICY_NAME" /> 목록에 있는 사용 중지된 기능의 사용자 환경을 제어합니다.
@@ -2511,6 +2539,7 @@
 <translation id="3442269905344976871">정책을 사용 설정하면 기기에서 <ph name="WILCO_NAME" /> DTC(진단 및 텔레메트리 컨트롤러)를 사용할 수 있는 경우 텔레메트리 및 진단 데이터의 수집, 처리, 보고가 사용 설정됩니다.
 
       정책을 사용 중지하거나 설정하지 않으면 DTC가 사용 중지됩니다. 기기에서 텔레메트리 및 진단 데이터를 수집, 처리 또는 보고할 수 없습니다.</translation>
+<translation id="3442589735857147823">사용자가 Linux 앱을 지원하는 데 필요한 가상 머신을 사용하도록 허용</translation>
 <translation id="3450649825886735618">맞춤법 오류를 해결하는 데 도움이 되는 Google 웹 서비스 사용 안함</translation>
 <translation id="3451422488938880786"> 국제 키보드 단축키 재매핑 사용/사용 안함 허용</translation>
 <translation id="3451901387456196887">사용자에게 <ph name="PRODUCT_NAME" /> 메뉴에서 액세스 코드를 사용하거나 QR 코드를 스캔하여 Cast 기기를 선택하는 옵션 제공</translation>
@@ -2552,6 +2581,7 @@
 
        기본적으로 모든 확장 프로그램이 허용됩니다. 그러나 정책으로 확장 프로그램을 금지한 경우 정책을 변경하려면 허용되는 확장 프로그램 목록을 사용합니다.</translation>
 <translation id="3501606938635483637">국제 키보드 단축키가 키보드 내 키 위치가 아닌 키의 글리프에 매핑됩니다.</translation>
+<translation id="3502438748205582075">Kerberos 사용 중지</translation>
 <translation id="3502555714327823858">모든 양면 모드 허용</translation>
 <translation id="350443680860256679">ARC 설정</translation>
 <translation id="350797926066071931">Google 번역 사용</translation>
@@ -2637,6 +2667,7 @@
 <translation id="3589193811812796052">WebAssembly 모듈이 출처 간에 전송되는 것을 방지</translation>
 <translation id="3591527072193107424">이전 브라우저 지원 기능을 사용 설정합니다.</translation>
 <translation id="3591584750136265240">로그인 인증 동작 설정</translation>
+<translation id="3596112486106491038">가상 머신 명령줄 액세스 권한 사용 설정</translation>
 <translation id="3603469950773500315">새로운 <ph name="CORS" /> 구현에서 <ph name="CORS" /> 확인 완화를 사용 설정하여 확장 프로그램이 호환되는 동작을 유지하도록 허용하고 <ph name="PRODUCT_NAME" />에서 <ph name="CORS" /> 확인 없이 지정된 헤더를 전송하도록 허용합니다.
 
       목록이 빈 상태로 설정되어 있으면 <ph name="PRODUCT_NAME" />은 호환되는 방식으로 확장 프로그램을 실행하도록 시도하고 <ph name="WEB_REQUEST_API_MANUAL" />에 설명된 것처럼 <ph name="PRODUCT_NAME" /> 79의 <ph name="API" /> 변경사항을 적용하지 않습니다.
@@ -2671,6 +2702,7 @@
       이 정책을 설정하면 사용자가 이를 변경할 수 없습니다. 정책을 설정하지 않으면 AC로 부팅이 사용 중지되며 사용자가 사용 설정할 수 없습니다.</translation>
 <translation id="3660562134618097814">로그인 중 SAML IdP 쿠키 전송</translation>
 <translation id="3665437376055221832">자동 선택과 일치하는 인증서가 없을 때만 사용자에게 메시지 표시</translation>
+<translation id="3671773704245936868">키보드 포커스 강조표시 사용 중지</translation>
 <translation id="3674010627788940405">와일드카드가 아닌 CORS 요청 헤더는 지원되지 않습니다.</translation>
 <translation id="3675303748198647471">setTimeout(…, 0)은 흔히 시간이 오래 걸리는 자바스크립트 작업을 세분화하는 데 사용됩니다.
           정책을 사용으로 설정하면 간격이 4ms 미만인 setTimeout 및 setInterval이 제대로 고정되지 않으므로
@@ -2740,6 +2772,7 @@
 <translation id="3733014427925403568">간격에 사용할 요일입니다.</translation>
 <translation id="3736879847913515635">사용자 관리자에서 사용자 추가 허용</translation>
 <translation id="3749259744154402564">지원되지 않음</translation>
+<translation id="3749511622128647337">오디오 출력 사용 중지</translation>
 <translation id="3750220015372671395">이 사이트에서 키 생성 차단</translation>
 <translation id="3753959315989102457">기기 위치 보고 사용 중지</translation>
 <translation id="3755237588083934849">정책을 설정하면 기기 상태 업로드를 전송할 빈도를 밀리초 단위로 결정할 수 있습니다. 허용된 최솟값은 60초입니다.
@@ -2899,6 +2932,7 @@
 
       각 목록 항목에는 '확장 프로그램 ID' 입력란에 확장 프로그램 ID를, 'url 업데이트' 입력란에 업데이트 URL을 포함해야 하는 사전이 포함됩니다.</translation>
 <translation id="3869180930654347954">영향을 받는 모든 사용자에 대해 First-Party Sets 사용 중지</translation>
+<translation id="3870035799352372700">상호 작용 중 Google 어시스턴트의 화면 컨텍스트 액세스를 차단</translation>
 <translation id="3870059789954671543">로그인 화면에서 키보드 포커스 강조표시 접근성 기능을 사용 설정합니다.
 
           이 기능은 키보드가 초점을 맞추고 있는 객체를 강조표시합니다.
@@ -2926,6 +2960,7 @@
 
       이 정책을 설정하지 않으면 SPDY를 사용할 수 있습니다.</translation>
 <translation id="3887529334667818189">탐색 여정이 기본적으로 chrome://history/journeys에 표시되며 사용자가 표시 여부를 변경할 수 있습니다.</translation>
+<translation id="3891175633496805812">Wilco 진단 및 텔레메트리 컨트롤러 사용 중지</translation>
 <translation id="3891357445869647828">자바스크립트 사용</translation>
 <translation id="3891769546914233112">PDF를 이미지로 인쇄 가능</translation>
 <translation id="3897218615484393758">SAML을 통해 인증된 사용자가 잠금 화면에서 오프라인으로 로그인할 수 있는 기간 제한</translation>
@@ -3036,6 +3071,10 @@
       <ph name="PRODUCT_OS_NAME" /> 기기는 설정이 구성되지 않거나 False로 설정된 경우 자동으로 업데이트를 확인합니다.
 
       경고: 자동 업데이트를 사용 설정해야 사용자가 소프트웨어 업데이트나 주요 보안 수정사항을 받을 수 있으므로 사용하도록 설정하는 것이 좋습니다. 자동 업데이트를 사용 중지하면 사용자가 위험에 처할 수 있습니다.</translation>
+<translation id="4015799413391577485">이 정책은 <ph name="PRODUCT_NAME" />에서 3DES가 삭제된 후 M97에서 삭제되었습니다.
+
+      정책이 true로 설정되면 TLS의 3DES 암호화 스위트가 사용 설정됩니다. false로 설정되면 사용 중지됩니다. 설정되지 않으면 3DES 암호화 스위트가 기본적으로 사용 중지됩니다. 정책은 오래된 서버와 일시적으로 호환성을 유지하는 데 사용될 수 있습니다. 임시방편이므로 서버를 다시 구성해야 합니다.
+      </translation>
 <translation id="4016367078069682737">이 정책은 M61에서 삭제되었습니다.
 
       ecryptfs가 포함되어 배송된 기기의 작동 방식을 지정하며 ext4 암호화로 전환해야 합니다.
@@ -3168,9 +3207,11 @@
 <translation id="4138655880188755661">시간 제한</translation>
 <translation id="4147818922357566987">중요한 수정사항과 관련된 변형만 사용</translation>
 <translation id="4150201353443180367">디스플레이</translation>
+<translation id="4154221011709068799">외부 저장소 기기 차단</translation>
 <translation id="415445772247959702">웹 스토어(버전 89부터 지원됨)</translation>
 <translation id="4157003184375321727">OS 및 펌웨어 버전을 보고합니다.</translation>
 <translation id="4157594634940419685">자체 CUPS 프린터 액세스 허용</translation>
+<translation id="4158531549614162499">모바일 데이터 연결을 통한 Google Drive 동기화 사용 설정</translation>
 <translation id="4160962198980004898">도킹 시 기기 MAC 주소의 소스입니다.</translation>
 <translation id="4161589119744364846">정책을 설정하면 새 탭 페이지의 기본 URL을 구성하고 사용자가 변경하지 못하게 차단할 수 있습니다.
 
@@ -3273,6 +3314,7 @@
       정책을 '사용 안함'으로 설정하거나 설정하지 않으면 모바일 데이터에 연결되어 있을 때도 사용자가 드라이브로 파일을 전송하도록 허용합니다.</translation>
 <translation id="4248277954659222481">URL 패턴의 허용 목록에서 미디어 자동 재생 허용</translation>
 <translation id="4250680216510889253">아니요</translation>
+<translation id="4252522848899331223">사용자가 세이프 브라우징 경고를 무시하도록 허용</translation>
 <translation id="4259636715493757956"><ph name="WEBVIEW_PRODUCT_NAME" />에서 인증 URL 구성을 지정할 수 있습니다.
 
       이러한 인증 URL은 <ph name="WEBVIEW_PRODUCT_NAME" />에 의해 특별하게 처리됩니다. 즉, 인증 과정 중 <ph name="WEBVIEW_PRODUCT_NAME" />에 표시되는 웹페이지에서 인증 URL로 리디렉션되면 이 인증 URL을 처리할 수 있는 해당 ID 공급업체의 OTP 앱이 실행됩니다.
@@ -3332,7 +3374,9 @@
       기기가 관리되지 않거나 사용자가 1명인 경우 이 정책은 무시되고 항상 알림이 표시됩니다.
 
       관리 기기에 여러 개의 사용자 계정이 있으면 이 정책이 사용 설정되어 있는 경우에만 알림이 표시됩니다.</translation>
+<translation id="4309091698378414920">캐럿 강조표시 사용 설정</translation>
 <translation id="4311195029067684288">Full</translation>
+<translation id="4311662690937656540">로그인 및 잠금 화면에 온라인 로그인 시행</translation>
 <translation id="4313767483634435271">기기에서 지정된 도크 MAC 주소</translation>
 <translation id="4314538398999793073">Kerberos 인증 시 CNAME 검색 사용 안함</translation>
 <translation id="4320592646346933548">Wi-Fi</translation>
@@ -3426,6 +3470,7 @@
 <translation id="4427173305799125784">PDF 뷰어에서 PDF에 주석 작성 불가능</translation>
 <translation id="4432762137771104529">세이프 브라우징 확장 보고 사용 설정</translation>
 <translation id="443454694385851356">이전(안전하지 않음)</translation>
+<translation id="4435032708588431506">QUIC 허용</translation>
 <translation id="443665821428652897">브라우저 종료 시 사이트 데이터 지우기(지원 중단)</translation>
 <translation id="4436941175475497595">인쇄 미리보기 사용 안함</translation>
 <translation id="4439336120285389675">지원 중단된 웹 플랫폼 기능 중 일시적으로 다시 사용 설정할 기능을 지정합니다.
@@ -3468,6 +3513,7 @@
       유효한 <ph name="URL_LABEL" /> 패턴에 관해 자세히 알아보려면 https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns를 참고하세요. <ph name="WILDCARD_VALUE" />는 이 정책에 허용되는 값이 아닙니다.</translation>
 <translation id="4480694116501920047">세이프서치 강제 사용</translation>
 <translation id="4481202456143946404">새로운 약관 버전이 적용된 Google3 CL에서 파생된 유효한 서비스 약관 버전입니다.</translation>
+<translation id="4481952213163895432">Google 어시스턴트 핫워드 사용 중지</translation>
 <translation id="4483120730995943109">시간 초과가 0ms인 자바스크립트 setTimeout()이 1ms로 클램프되지 않습니다.</translation>
 <translation id="4483649828988077221">자동 업데이트 사용 안함</translation>
 <translation id="4484515651939984695">액세스 코드 또는 QR 코드로 선택된 Cast 기기가 <ph name="PRODUCT_NAME" /> 메뉴의 Cast 기기 목록에 표시되는 기간 지정(단위: 초)</translation>
@@ -3534,6 +3580,7 @@
       자세한 내용은 https://www.chromestatus.com/feature/5675755719622656 페이지를 참고하시기 바랍니다.
       이 정책을 사용 설정하면 사이트에서 새로운 창/탭을 동시에 탐색하고 열 수 있습니다.
       이 정책을 사용 중지하거나 설정하지 않으면 사이트에서 새로운 창/탭을 동시에 탐색하고 열 수 없습니다.</translation>
+<translation id="4572577129745420844">사용자가 Kerberos 계정을 추가하도록 허용 안함</translation>
 <translation id="457430673056611745">OnPrint <ph name="PRODUCT_NAME" /> Enterprise 커넥터 설정 정책</translation>
 <translation id="4578265298946081589">사용자 로그아웃 시 재부팅하지 않습니다.</translation>
 <translation id="4581507927311097234">사용자 입력이 없어서 화면이 꺼지기까지 걸리는 시간(밀리초)입니다.</translation>
@@ -3589,6 +3636,7 @@
 <translation id="4617338332148204752"><ph name="PRODUCT_FRAME_NAME" />에서 메타 태그 검사 건너뛰기</translation>
 <translation id="4624417808625504735">자바스크립트가 다음 사이트에서 JIT를 사용하지 못하도록 차단</translation>
 <translation id="4625915093043961294">확장 프로그램 설치 허용목록 설정</translation>
+<translation id="46321462262887935">맨 위 키를 기능 키로 사용하지만 사용자가 변경하도록 허용</translation>
 <translation id="4632343302005518762"><ph name="PRODUCT_FRAME_NAME" />이(가) 목록에 있는 콘텐츠 유형을 처리하도록 허용</translation>
 <translation id="4632566332417930481">엔터프라이즈 정책에 의해 설치된 확장 프로그램에서는 Developer Tools 사용 금지, 다른 컨텍스트에서는 Developer Tools 사용 허용</translation>
 <translation id="4635284822166984665">기기의 충전을 시작할 시간으로, 기기의 현지 시간대로 변환됩니다.</translation>
@@ -3668,6 +3716,7 @@
 <translation id="4723829699367336876">원격 액세스 클라이언트의 방화벽 통과 허용</translation>
 <translation id="4725528134735324213">Android Backup Service 사용</translation>
 <translation id="4725801978265372736">로컬 사용자의 이름과 원격 액세스 호스트 소유자가 일치해야 함</translation>
+<translation id="4726228171190098009">기기에서 파워워시를 요청하도록 허용 안함</translation>
 <translation id="4733471537137819387">통합 HTTP 인증과 관련된 정책입니다.</translation>
 <translation id="4735099388031364207">정책을 사용 설정하면 기기의 원격 증명이 허용됩니다. 인증서가 자동으로 생성되고 기기 관리 서버에 업로드됩니다.
 
@@ -3746,6 +3795,7 @@
       정책이 False로 설정되거나 설정되지 않으면 OS 업데이트 정보가
       보고되지 않습니다. True로 설정되면 OS 업데이트 정보가 보고됩니다.</translation>
 <translation id="4858735034935305895">전체 화면 모드 허용</translation>
+<translation id="486146220825734683">사용자가 Kerberos 비밀번호를 기억하도록 허용 안함</translation>
 <translation id="4861767323695239729">사용자 세션에서 허용되는 입력 수단을 구성합니다.</translation>
 <translation id="4873380469296842901">이 설정을 켜면 이미 휴대전화 허브 사용을 선택한 사용자가 ChromeOS에서 휴대전화 알림을 보내고 받을 수 있게 됩니다.
 
@@ -4154,6 +4204,7 @@
 <translation id="5255162913209987122">권장 가능</translation>
 <translation id="525543707238275321">기기 CPU 정보 보고 사용 중지</translation>
 <translation id="5257395339965216304">호스팅된 앱 데이터</translation>
+<translation id="5258445772095084618">제휴되지 않은 사용자가 Linux 앱을 지원하는 데 필요한 가상 머신을 사용하도록 허용</translation>
 <translation id="5262320080678421295">Symantec Corporation의 이전 PKI에서 발급된 인증서에 대한 트러스트 사용 중지</translation>
 <translation id="5266173014392157048">이 정책은 지원 중단되었으므로 ‘<ph name="AUTH_NEGOTIATE_DELEGATE_ALLOWLIST_POLICY_NAME" />’ 정책을 대신 사용하세요.
 
@@ -4297,6 +4348,7 @@
 
       유효한 <ph name="URL_LABEL" /> 패턴에 관해 자세히 알아보려면 https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns를 참고하세요. <ph name="WILDCARD_VALUE" />는 이 정책에 허용되는 값이 아닙니다.</translation>
 <translation id="5393009997533871906">허용 목록에 있는 프린터만 사용자에게 표시됨</translation>
+<translation id="5398387276166014955">서드 파티 코드가 Chrome에 삽입되도록 허용</translation>
 <translation id="5401696449591951427"><ph name="CHROME_DEVICES_LINK" /> 사용 설정</translation>
 <translation id="5405289061476885481"><ph name="PRODUCT_OS_NAME" /> 로그인 화면에서 허용되는 키보드 레이아웃을 구성합니다.
 
@@ -4425,6 +4477,7 @@
       정책을 사용 안함으로 설정하거나 설정하지 않으면 로그인 화면에서 사용자에게 클라이언트 인증서를 선택하라는 메시지가 표시되지 않습니다.
       참고: 일반적인 경우 이 정책은 권장되지 않습니다. 이 정책을 사용하면 개인 정보 보호와 관련된 위험이 발생할 수 있으며(기기 전체에서 TPM 지원 인증서가 사용되는 경우) 품질이 낮은 사용자 환경이 제공되기 때문입니다.</translation>
 <translation id="55057839818162162"><ph name="GOOGLE_LENS_PRODUCT_NAME" /> 카메라 지원 검색 허용</translation>
+<translation id="55057971769693300">캐럿 강조표시 사용 중지</translation>
 <translation id="5508307164752647432">Kerberos 기능 사용</translation>
 <translation id="5511702823008968136">북마크바 사용</translation>
 <translation id="5512418063782665071">홈페이지 URL</translation>
@@ -4444,6 +4497,7 @@
 <translation id="5526184558582921522">Quirks 서버로 쿼리 및 잠재적인 하드웨어별 구성 파일 다운로드 허용</translation>
 <translation id="5526701598901867718">모두(안전하지 않음)</translation>
 <translation id="5534079385061985566">전체 복원 기능 사용함</translation>
+<translation id="5534235660122271432">외부 저장소 기기에 쓰기 허용 안함</translation>
 <translation id="5535256585099022933">다시 실행될 시간 간격 설정</translation>
 <translation id="5535973522252703021">Kerberos 위임 서버 허용목록</translation>
 <translation id="553806128266843748">제한을 사용 설정할지 나타내는 부울 플래그입니다.</translation>
@@ -4452,6 +4506,7 @@
 <translation id="555022085242359084">로그인 화면에서 고대비 사용 설정</translation>
 <translation id="555077880566103058">모든 사이트에서 <ph name="FLASH_PLUGIN_NAME" /> 플러그인을 자동으로 실행하도록 허용</translation>
 <translation id="5556607617517096419">Borealis</translation>
+<translation id="5558394213067608844">Wilco 진단 및 텔레메트리 컨트롤러 사용 설정</translation>
 <translation id="5559079916187891399">이 정책은 Android 앱에 아무런 영향을 미치지 않습니다.</translation>
 <translation id="5560039246134246593"><ph name="PRODUCT_NAME" />에서 버전 시드 가져오기에 대한 매개변수를 추가합니다.
 
@@ -4556,6 +4611,7 @@
 <translation id="5676740747107495269">로그인 화면 작업 표시줄 메뉴에 접근성 옵션 표시</translation>
 <translation id="5679540979548648200">기기의 사용자가 ADB 사이드로드를 사용하지 못하게 하고 이전에 사이드로드가 사용 설정된 경우 기기 파워워시를 강제 시행</translation>
 <translation id="5681258683432554972">기본 팝업 설정</translation>
+<translation id="5684501593989438324">Google 어시스턴트 핫워드 사용 설정</translation>
 <translation id="5689430183304951538">기본 인쇄 페이지 크기</translation>
 <translation id="5691637243722588222">정책을 설정하면 <ph name="PRODUCT_NAME" />에서 지원하는 HTTP 인증 스키마가 지정됩니다.
 
@@ -4593,6 +4649,7 @@
       정책을 Disabled로 설정하면 사용자가 PDF 플러그인을 사용 중지하지 않는 한 PDF 플러그인에서 PDF 파일을 엽니다.
 
       정책을 설정하면 사용자가 <ph name="PRODUCT_NAME" />에서 정책을 변경할 수 없습니다. 설정하지 않으면 사용자가 외부에서 PDF를 열지를 선택할 수 있습니다.</translation>
+<translation id="5705055136345677598">백그라운드 모드 사용 중지</translation>
 <translation id="5705828032077475554">CRD 세션 보고</translation>
 <translation id="5708969689202733975">허용된 빠른 잠금 해제 모드를 설정합니다.</translation>
 <translation id="5714563837055244378">Android에서 웹 앱 공유를 사용 설정합니다.</translation>
@@ -4684,6 +4741,7 @@
 <translation id="5814301096961727113">로그인 화면에서 음성 피드백의 기본 상태를 설정</translation>
 <translation id="5815129011704381141">업데이트 후 자동 재부팅</translation>
 <translation id="5815990343032461023">이전 행동: 키오스크 Chrome 앱이 확장 프로그램 매니페스트의 업데이트 URL을 사용하는 확장 프로그램 시스템 및 정책의 업데이트 URL을 사용하는 캐싱 관리자에 의해 업데이트됨</translation>
+<translation id="5828008775808363753">시작 시 브라우저를 실행하지 않음</translation>
 <translation id="582857022372205358">짧은 쪽 양면 인쇄 사용 설정</translation>
 <translation id="5830196507442186669">기기가 <ph name="PRODUCT_OS_NAME" />에서 <ph name="BOREALIS_NAME" />를 사용하도록 허용</translation>
 <translation id="5831286647961890695"><ph name="PRODUCT_OS_NAME" />에서 자동 조절 충전 모델 사용</translation>
@@ -4701,6 +4759,7 @@
       정책을 사용 중지하거나 설정하지 않으면 고급 배터리 충전 모드가 사용 중지됩니다.
 
       사용자가 이 설정을 변경할 수 없습니다.</translation>
+<translation id="5838452040629810808">커서 강조표시 사용 설정</translation>
 <translation id="5848438019586925019">키 쌍 생성을 위한 알고리즘입니다.</translation>
 <translation id="5851248808417680865">어두운 테마 사용</translation>
 <translation id="585270638818921943">사용자가 신뢰할 수 없는 출처의 Android 앱을 사용하는 것을 방지</translation>
@@ -4787,6 +4846,7 @@
 
       사용 중지하면 QUIC 프로토콜을 사용할 수 없습니다.</translation>
 <translation id="5921713479449475707">HTTP를 통한 자동 업데이트 다운로드 허용</translation>
+<translation id="5927903236543424081">브라우저를 사용하기 전에 사용자 강제 로그인</translation>
 <translation id="5928633129285224981"><ph name="PRODUCT_NAME" />에서 PDF 인쇄 시 이미지로 인쇄 옵션을 기본적으로 설정할지를 제어합니다.
 
       이 정책이 사용 설정된 경우 <ph name="PRODUCT_NAME" />에서 PDF를 인쇄할 때 인쇄 미리보기의 이미지로 인쇄 옵션이 기본적으로 설정됩니다.
@@ -4794,6 +4854,13 @@
       이 정책이 사용 중지로 설정되었거나 설정되지 않은 경우 <ph name="PRODUCT_NAME" />에서 사용자가 이미지로 인쇄 옵션을 선택할 때 이 옵션이 처음에 설정되지 않습니다.  사용자는 개별 PDF 인쇄 작업별로 옵션을 선택할 수 있습니다(옵션이 사용 가능한 경우).
 
       <ph name="MS_WIN_NAME" /> 또는 <ph name="MAC_OS_NAME" />에서는 <ph name="PRINT_PDF_AS_IMAGE_AVAILABILITY_POLICY_NAME" />도 사용 설정되어 있을 경우에만 이 정책이 효과가 있습니다.</translation>
+<translation id="5932383301001325587">이 정책은 <ph name="PRODUCT_NAME" />에서 TLS 버전 대체를 삭제한 후 M53에서 삭제되었습니다.
+
+      TLS 핸드셰이크가 실패하면 <ph name="PRODUCT_NAME" />에서 이전에는 HTTPS 서버의 버그를 해결하기 위해 더 낮은 버전의 TLS로 연결을 다시 시도했습니다. 이 설정은 이 대체 프로세스를 중지할 버전을 구성합니다. 서버에서 버전 협상을 정확하게 실행하면(즉, 연결을 끊지 않음) 이 설정이 적용되지 않습니다. 그럼에도 불구하고 결과적으로 연결은 여전히 SSLVersionMin을 준수해야 합니다.
+
+      이 정책이 구성되지 않거나 'tls1.2'로 설정되면 <ph name="PRODUCT_NAME" />에서 더 이상 이 대체를 실행하지 않습니다. 이로 인해 이전 TLS 버전에 대한 지원이 사용 중지되지는 않으며 버전을 제대로 협상할 수 없는 버그 서버를 <ph name="PRODUCT_NAME" />이 해결하는지만 파악할 수 있습니다.
+
+      버그 서버와의 호환성을 유지해야 하는 경우 정책을 'tls1.1'로 설정할 수 있습니다. 임시방편에 불과하므로 서버를 신속하게 수정해야 합니다.</translation>
 <translation id="5932767795525445337">이 정책은 Android 앱을 고정하는 데에도 사용할 수 있습니다.</translation>
 <translation id="5936193585187054065">Encrypted ClientHello(ECH)는 ClientHello의 민감한 필드를 암호화하고 개인 정보 보호를 개선하기 위한 TLS의 확장 프로그램입니다.
 
@@ -4868,6 +4935,7 @@
 <translation id="6046615715547751255">상세 보고 제어 허용 안함</translation>
 <translation id="6048199181629830227">피크 시프트 전력 관리 사용</translation>
 <translation id="6049117606554031363">기기 보드 상태 보고 사용 설정</translation>
+<translation id="605132676434455096">새 프로필 추가 허용 안함</translation>
 <translation id="6053681087509103368">WebRTC에서 지원 중단된 버전의 TLD/DTLS 프로토콜을 사용하도록 허용</translation>
 <translation id="6058879286588763839"><ph name="DEVICE_BATTERY_CHARGE_MODE_POLICY_NAME" />보다 우선 적용되는 <ph name="DEVICE_ADVANCED_BATTERY_CHARGE_MODE_ENABLED_POLICY_NAME" />를 지정하지 않는 한 <ph name="DEVICE_BATTERY_CHARGE_MODE_POLICY_NAME" />에서 배터리 충전 모드 전원 관리 정책을 지정합니다(기기에서 지원되는 경우). 배터리 수명을 연장하기 위해 정책에서 스트레스와 소모를 최소화하여 동적으로 배터리 충전을 제어합니다.
 
@@ -4923,12 +4991,18 @@
       4: 세이프 브라우징 서버에서 표시한 악성 파일은 차단하지만 위험한 파일 형식은 차단하지 않습니다. 권장사항입니다.
 
       참고: 이러한 제한은 웹페이지 콘텐츠 또는 '링크 다운로드...' 메뉴 옵션을 통해 실행된 다운로드에 적용됩니다. 이러한 제한은 현재 표시된 페이지의 다운로드 또는 인쇄 옵션 중 'PDF로 저장'에는 적용되지 않습니다. 세이프 브라우징에 관해 자세히 알아보세요(https://developers.google.com/safe-browsing).</translation>
+<translation id="6119207979839638596">이 정책은 최대 TLS 버전 정책이 <ph name="PRODUCT_NAME" />에서 삭제된 후 M75에서 삭제되었습니다.
+
+      이 정책이 구성되지 않으면 <ph name="PRODUCT_NAME" />에서 기본 최대 버전을 사용합니다.
+
+      그렇지 않은 경우 'tls1.2' 또는 'tls1.3' 값 중 하나로 설정할 수 있습니다. 설정되면 <ph name="PRODUCT_NAME" />에서 지정된 버전보다 높은 SSL/TLS 버전을 사용하지 않습니다. 인식할 수 없는 값은 무시됩니다.</translation>
 <translation id="6123052603197028610">Google 서버로 전송된 쿼리가 타임스탬프를 가져오도록 허용하지 않음</translation>
 <translation id="6130229425991722726">정책을 0(기본값)으로 설정하면 개발자 도구 및 자바스크립트 콘솔에 액세스할 수 있지만 기업 정책으로 설치한 확장 프로그램에서는 액세스할 수 없습니다. 정책을 1로 설정하면 기업 정책으로 설치한 확장 프로그램을 비롯하여 모든 상황에서 개발자 도구 및 자바스크립트 콘솔에 액세스할 수 있습니다. 정책을 2로 설정하면 개발자 도구에 액세스할 수 없으며 웹사이트 요소를 검사할 수 없습니다.
 
       또한 이 설정은 개발자 도구 또는 자바스크립트 콘솔을 여는 단축키, 메뉴 항목, 컨텍스트 메뉴 항목의 사용을 중지합니다.
 
       <ph name="PRODUCT_NAME" /> 버전 99를 기준으로 이 설정은 또한 '페이지 소스 보기' 기능의 진입점을 제어합니다. 이 정책을 'DeveloperToolsDisallowed'(값 2)로 설정하면 사용자가 단축키 또는 컨텍스트 메뉴를 통해 소스 보기에 액세스할 수 없습니다. 소스 보기를 완전히 차단하려면 <ph name="URL_BLOCKLIST_POLICY_NAME" /> 정책에 'view-source:*'도 추가해야 합니다.</translation>
+<translation id="6131803221304830537">렌더러 코드 무결성 사용 중지</translation>
 <translation id="6132506775968708399">타사 쿠키 차단</translation>
 <translation id="6133088669883929098">모든 사이트에서 키 생성 사용 허용</translation>
 <translation id="6135398260575578389">세이프 브라우징이 강화 모드에서 활성화됩니다. 이 모드에서는 보안이 강화되지만 Google과 인터넷 사용 정보를 더 많이 공유해야 합니다.</translation>
@@ -4950,6 +5024,7 @@
 
       이 정책을 적용하려면 추가 설정이 필요합니다. 다음 페이지에서 자세히 알아보세요. https://support.google.com/chrome/a?p=chrome_enterprise_connector_policies_setting</translation>
 <translation id="6141402445226505817">항상 대략적인 시간대 감지를 사용합니다.</translation>
+<translation id="6141944295566709543">기기가 잠겨 있을 때 사용자가 미디어 재생을 하도록 허용</translation>
 <translation id="6142501278956229253">PDF DPI 인쇄 래스터화</translation>
 <translation id="6144046700495610112">정책을 '사용'으로 설정하면 최초 실행 시 이전 기본 브라우저의 자동 완성 양식 데이터를 가져옵니다. 정책을 '사용 안함'으로 설정하거나 설정하지 않으면 최초 실행 시 자동 완성 양식 데이터를 가져오지 않습니다.
 
@@ -5021,6 +5096,7 @@
 
       참고: 이 정책은 오디오 접근성 기능을 포함한 모든 오디오 출력에 적용됩니다. 사용자에게 스크린 리더가 필요한 경우 정책을 사용 중지하지 마세요.</translation>
 <translation id="6221175752766085998">로컬 트러스트 앵커에서 발급되었으나 subjectAlternativeName 확장 프로그램이 없는 인증서를 허용합니다.</translation>
+<translation id="6224070048795197148">사용자가 로그인하지 않고 브라우저를 사용하도록 허용</translation>
 <translation id="6224304369267200483">자동으로 직접 보안 키 인증을 허용하는 URL/도메인</translation>
 <translation id="6230442621691161858">이 기능을 사용하면 볼 만한 새 추천 콘텐츠가 표시됩니다. 여기에는 앱, 웹페이지 등이 포함됩니다.
       이 정책을 True로 설정하면 볼 만한 새 콘텐츠 추천 기능이 사용 설정됩니다.
@@ -5045,11 +5121,13 @@
       이 정책은 기업에서 샌드박스를 방해하는 보안 소프트웨어 설정을 사용하는 경우 필요에 따라 오디오 샌드박스를 사용 중지할 수 있도록 만들어졌습니다.</translation>
 <translation id="624818583115864448">포트 554(2021년 10월 15일까지 차단 해제될 수 있음)</translation>
 <translation id="6252773211180267325">사용자가 <ph name="BOREALIS_NAME" />를 실행하는 것을 차단하지 않음</translation>
+<translation id="6254498834449523938">사용자의 세이프 브라우징 경고 무시를 허용하지 않음</translation>
 <translation id="625580680776945310">고효율 모드가 사용 설정됩니다.</translation>
 <translation id="6258658183356534534">User-Agent Client Hints GREASE 업데이트 기능을 제어합니다.</translation>
 <translation id="6261643884958898336">기기 식별 정보 보고</translation>
 <translation id="6265892395051519509">이 사이트에서 센서에 액세스하도록 허용</translation>
 <translation id="6266043141694454734">Chrome Root Store 및 내장된 인증서 확인 기능을 서버 인증서 확인에 사용할지 결정합니다.</translation>
+<translation id="6270791075656665237">QUIC 허용 안함</translation>
 <translation id="6273015149273504999">
       로그인 화면에서 사용자가 개입하지 않아도 자동 설치되며 사용자가 제거하거나 사용 중지할 수 없는 앱 및 확장 프로그램 목록을 지정합니다.
 
@@ -5258,6 +5336,7 @@
       </translation>
 <translation id="6438972408080276697">정책을 True로 설정하면 키 보고서와 정책에 의해 실행된 Android 앱 설치 이벤트가 Google로 전송됩니다. False로 설정하면 이벤트가 캡처되지 않습니다.</translation>
 <translation id="6440051664870270040">사이트에서 동시에 팝업을 탐색하고 열도록 허용</translation>
+<translation id="6446366416439249472">모바일 데이터 연결을 통한 Google Drive 동기화 사용 중지</translation>
 <translation id="6447948611083700881">백업 및 복원이 사용 중지됨</translation>
 <translation id="6449476513004303784">사용자가 인증서를 관리하도록 허용 안함</translation>
 <translation id="6452882999388592166">정책을 사용으로 설정하면 브라우저 시작 시 내장된 CryptoToken 구성요소 확장 프로그램이 로드됩니다. 사용 안함으로 설정하거나 설정하지 않으면 시작 시 CryptoToken이 로드되지 않습니다. 이 정책은 M106에서 CryptoToken이 삭제되면서 발생한 부작용으로 `chrome.runtime`이 정의되지 않음에 따라 손상된 사이트를 수정하기 위한 임시방편입니다. 웹사이트에서는 무조건적으로 정의되는 `chrome.runtime`에 의존해서는 안 됩니다.</translation>
@@ -5620,6 +5699,7 @@
 <translation id="6763023079133439068">로컬 신뢰 앵커에서 발급할 때 subjectAlternativeName 확장이 없는 인증서 허용</translation>
 <translation id="6766216162565713893">사이트에서 사용자에게 근처 블루투스 기기에 대한 액세스 권한을 부여할 것인지 묻도록 허용합니다.</translation>
 <translation id="6770454900105963262">활성 키오스크 세션에 관한 정보 보고</translation>
+<translation id="6774132787348495175">사용자가 Linux 앱을 지원하는 데 필요한 가상 머신을 사용하도록 허용 안함</translation>
 <translation id="6782331708811245959">기기 부팅 모드 보고 사용 설정</translation>
 <translation id="6782977971207381602">정책을 사용으로 설정하면 기기가 <ph name="PRODUCT_OS_NAME" />에서 가상 머신을 실행할 수 있습니다. <ph name="PRODUCT_CROSTINI_NAME" />를 사용하려면 <ph name="VIRTUAL_MACHINES_ALLOWED_POLICY_NAME" /> 및 <ph name="CROSTINI_ALLOWED_POLICY_NAME" />가 사용 설정되어 있어야 합니다. 사용 안함으로 설정하면 기기에서 가상 머신을 실행할 수 없습니다. 사용 안함으로 변경하면 기존에 실행 중이던 가상 머신이 아닌 새로 시작되는 가상 머신에 정책 적용이 시작됩니다.
 
@@ -5679,6 +5759,7 @@
 
           정책을 빈 목록으로 두거나 설정하지 않으면 알림 없이 전체 화면 모드를 유지할 수 있는 URL이 없다는 의미입니다.</translation>
 <translation id="6833988859168635883">시작, 홈페이지, 새 탭 페이지</translation>
+<translation id="6835254082476223414">Linux 가상 머신 백업 및 복원 사용 설정</translation>
 <translation id="6835883744948188639">사용자에게 재실행하는 것이 좋다는 메시지를 반복하여 표시</translation>
 <translation id="683688607121170501">이 설정은 사용자가 <ph name="PRODUCT_OS_NAME" /> 기기에 로그인한 후 브라우저 창의 콘텐츠 영역 및 Android 애플리케이션에서 Google 계정 간에 전환하도록 허용합니다.
 
@@ -5881,6 +5962,7 @@
 <translation id="7007283257527015835">프로토콜 핸들러가 기본값으로 설정되어야 하는지 나타내는 부울 플래그입니다.</translation>
 <translation id="7008308728445338159">DNS 가로채기 검사 사용 설정됨</translation>
 <translation id="7010006999849135962">원격 액세스 호스트에서 PIN을 사용하지 않는 인증을 사용합니다.</translation>
+<translation id="7013484314513229844">AC로 부팅 사용 설정</translation>
 <translation id="7016587686120059767">게스트 모드 사용 안함</translation>
 <translation id="7016736684656067099">정책을 1로 설정하면 모든 웹사이트에서 이미지 표시를 허용합니다. 정책을 2로 설정하면 이미지 표시를 거부합니다.
 
@@ -5929,6 +6011,7 @@
 <translation id="7039815268521168329">최초 설정 시 Google 어시스턴트 Voice Match 흐름 표시</translation>
 <translation id="7040229947030068419">예시:</translation>
 <translation id="7044883996351280650">Android 백업 및 복원 서비스 제어</translation>
+<translation id="7046997898355294677">사용자가 닫을 때까지 개인 정보 보호 알림 표시</translation>
 <translation id="7047495632846973438">디스플레이 캡처 권한 정책을 확인할지 아니면 건너뛸지 결정합니다.</translation>
 <translation id="7055022222176591388">오래된 <ph name="FLASH_PLUGIN_NAME" /> 차단</translation>
 <translation id="7066292150801784098">원격 지원 세션에서 원격 사용자가 관리자 창과 상호작용하지 못하도록 차단</translation>
@@ -6011,6 +6094,7 @@
       <ph name="MS_WIN_NAME" />의 경우 이 기능은 <ph name="MS_AD_NAME" /> 도메인에 연결된 인스턴스, Windows 10 Pro에서 실행되는 인스턴스 또는 <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />에 등록된 인스턴스에서만 사용할 수 있습니다. <ph name="MAC_OS_NAME" />의 경우에는 MDM을 통해 관리되는 인스턴스 또는 MCX를 통해 도메인에 연결된 인스턴스에서만 사용할 수 있습니다.</translation>
 <translation id="7138678301420049075">기타</translation>
 <translation id="7138762292550697459">자바스크립트 setTimeout() 함수의 최소 시간 초과를 제어합니다.</translation>
+<translation id="714219487865269980">키보드 포커스 강조표시 사용 설정</translation>
 <translation id="7145335384492396213">기본 PIN 인쇄 모드</translation>
 <translation id="7146198347561863646">정책을 사용 설정하거나 설정하지 않으면 전원 관리를 위한 wake lock이 허용됩니다. 확장 프로그램에서 전원 관리 확장 프로그램 API 및 ARC 앱을 통해 wake lock을 요청할 수 있습니다.
 
@@ -6065,6 +6149,7 @@
 <translation id="7193489339723768342">정책을 설정하면 URL 목록에 지정한 URL 패턴이 요청 URL의 보안 원본과 비교됩니다. 비교 후 일치 여부가 확인되면 오디오 캡처 기기에 액세스 권한이 부여되며 메시지가 표시되지 않습니다.
 
       유효한 <ph name="URL_LABEL" /> 패턴에 관해 자세히 알아보려면 https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns를 참고하세요.</translation>
+<translation id="719398790886719721">Linux 가상 머신에 대한 루트 액세스 권한 사용 중지</translation>
 <translation id="7194407337890404814">기본 검색 공급자 이름</translation>
 <translation id="7198134478421755850">확장 프로그램</translation>
 <translation id="7199304109870655950">Chrome 원격 데스크톱 호스트의 원격 액세스 옵션을 설정합니다.
@@ -6255,6 +6340,7 @@
 <translation id="7412456346709338637">Thunderbolt/USB4 주변기기 데이터 액세스 사용 설정</translation>
 <translation id="7417438464912687020">이 시스템으로 원격 액세스 연결을 허용</translation>
 <translation id="7417972229667085380">프레젠테이션 모드에서 유휴 지연 시간이 조정되는 비율(지원 중단됨)</translation>
+<translation id="7421230730436851224">오디오 처리를 샌드박스로 실행하지 않음</translation>
 <translation id="7421483919690710988">미디어 디스크 캐시 크기 설정(바이트)</translation>
 <translation id="7424751532654212117">사용 중지된 플러그인 목록에 대한 예외 목록</translation>
 <translation id="7426112309807051726"><ph name="TLS_FALSE_START" /> 최적화를 사용 중지할지 여부를 지정합니다. 이 정책은 과거의 여러 가지 이유로 인해 DisableSSLRecordSplitting라고 이름 붙여졌습니다.
@@ -6274,6 +6360,7 @@
 <translation id="7458437477941640506">OS 버전이 대상 버전보다 높은 경우 대상 버전으로 롤백하지 않습니다. 이 경우 업데이트도 사용 중지됩니다.</translation>
 <translation id="7459601923199346224">인증서 관리를 위한 사용자 및 기기 정책을 관리합니다.</translation>
 <translation id="7459633275230216698">파일 선택 대화상자 허용</translation>
+<translation id="7463055558720530430">사용자가 Kerberos 비밀번호를 기억하도록 허용</translation>
 <translation id="7464058117970792805">인쇄 미리보기 사용 설정</translation>
 <translation id="7464991223784276288">일치하는 URL의 쿠키를 현재 세션으로 제한</translation>
 <translation id="7468182772656807573">정책을 설정하면 모니터링 네트워크 패킷을 전송할 빈도를 밀리초 단위로 결정할 수 있습니다. 간격은 30초부터 24시간 범위이며 이 범위를 벗어나는 값은 범위에 들어가도록 조정됩니다.
@@ -6359,8 +6446,12 @@
 
       https://blog.chromium.org/2021/09/user-agent-reduction-origin-trial-and-dates.html
       </translation>
+<translation id="7515953732107149296">이 정책은 RC4가 <ph name="PRODUCT_NAME" />에서 삭제된 후 M53에서 삭제되었습니다.
+
+      정책이 설정되지 않거나 False로 설정되면 TLS의 RC4 암호화 스위트가 사용 설정되지 않습니다. 아니면 오래된 서버와의 호환성을 유지하기 위해 True로 설정될 수 있습니다. 임시방편이므로 서버를 다시 구성해야 합니다.</translation>
 <translation id="7519218194072744342">프로토콜 핸들러의 URL입니다.</translation>
 <translation id="7519251620064708155">이 사이트에서 키 생성 허용</translation>
+<translation id="7521864460386999758">서드 파티 코드가 Chrome에 삽입되지 않도록 차단</translation>
 <translation id="7529144158022474049">분산 요소 자동 업데이트</translation>
 <translation id="7529332889403151669">기기의 절전 모드 또는 어두운 화면이 종료되었을 때 전체 화면 알림을 표시할지 지정합니다.
 
@@ -6442,6 +6533,7 @@
 <translation id="7613115815080726221">사용자 입력이 없어서 유휴 작업이 실행되기까지 걸리는 시간(밀리초)입니다.</translation>
 <translation id="7614663184588396421">사용할 수 없는 프로토콜 스키마 목록</translation>
 <translation id="7616631530432070402">TLS에서 3DES 암호화 스위트 사용 설정 예정</translation>
+<translation id="761788785484453836">모든 웹사이트에 사이트 격리 요구</translation>
 <translation id="7620869951155758729">이 정책은 부모 액세스 코드를 생성하고 확인하는 데 사용되는 설정을 지정합니다.
 
       액세스 코드를 생성할 때는 항상 |current_config|가 사용되며, |future_config|를 사용해 액세스 코드를 확인할 수 없는 경우에만 액세스 코드 확인에 사용해야 합니다.
@@ -6520,6 +6612,11 @@
 <translation id="7701341006446125684">앱 및 확장 프로그램 캐시 크기 설정(단위: 바이트)</translation>
 <translation id="770339941914297201">새 동작: 키오스크 Chrome 앱이 정책의 업데이트 URL만 사용하여 업데이트됨</translation>
 <translation id="7703737669292992839">파일 선택 대화상자 차단</translation>
+<translation id="7708934468069982537">이 정책은 DHE가 <ph name="PRODUCT_NAME" />에서 삭제된 후 M58에서 삭제되었습니다.
+
+      정책이 설정되지 않거나 False로 설정되면 TLS의 DHE 암호화 스위트가 사용 설정되지 않습니다. 아니면 DHE 암호화 스위트를 사용 설정하고 오래된 서버와의 호환성을 유지하기 위해 True로 설정될 수 있습니다. 임시방편이므로 서버를 다시 구성해야 합니다.
+
+      서버는 ECDHE 암호화 스위트로 이전하는 것이 좋습니다. 이전할 수 없는 경우 RSA 키 교환을 사용하는 암호화 스위트를 사용 설정하세요.</translation>
 <translation id="7709470712369261710">자동 생성된 이미지 설명을 제공하는 Google 서비스를 사용하지 않음</translation>
 <translation id="7712109699186360774">사이트가 카메라 또는 마이크에 액세스하려고 할 때마다 확인함</translation>
 <translation id="7713608076604149344">다운로드 제한</translation>
@@ -6637,12 +6734,15 @@
 <translation id="782661371433719637">모든 사이트에서 File System API를 통한 파일 및 디렉터리 읽기 액세스 권한을 요청하지 못하도록 차단</translation>
 <translation id="7827127381981620448">플랫폼 앱</translation>
 <translation id="7833148823006528332">Android 앱 식별자(예: Gmail의 경우 'com.google.android.gm')입니다.</translation>
+<translation id="7835218570504220753">자동 클릭 사용 중지</translation>
 <translation id="7839180815400079700"><ph name="DEVICE_POWER_PEAK_SHIFT_ENABLED_POLICY_NAME" />를 사용 설정하고 <ph name="DEVICE_POWER_PEAK_SHIFT_DAY_CONFIG_POLICY_NAME" />를 설정하면 전원 피크 시프트 요일 구성이 설정됩니다.
 
       정책을 설정하지 않으면 전원 피크 시프트가 사용 중지됩니다.
 
       <ph name="START_TIME_FIELD_NAME" />, <ph name="END_TIME_FIELD_NAME" /> 및 <ph name="CHARGE_START_TIME_FIELD_NAME" />의 <ph name="MINUTE_FIELD_NAME" /> 필드에 허용된 값은 0, 15, 30, 45입니다.</translation>
+<translation id="7840258755683573560">자동 클릭 사용 설정</translation>
 <translation id="7841880500990419427">대체에 사용할 최소 TLS 버전</translation>
+<translation id="7845130996290850593">Kerberos 사용 설정</translation>
 <translation id="7846952520291088817">WebRTC ICE 후보에 노출된 로컬 IP의 URL</translation>
 <translation id="7848641140449742406">OS 설정</translation>
 <translation id="7850846808758624237">정책을 사용으로 설정하면 최초 실행 시 이전 기본 브라우저의 홈페이지를 가져옵니다. 정책을 사용 안함으로 설정하거나 설정하지 않으면 최초 실행 시 홈페이지를 가져오지 않습니다.
@@ -6940,12 +7040,14 @@
           정책이 설정되면 사용자가 변경하거나 재정의할 수 없습니다.
 
           정책이 설정되지 않은 경우 처음에는 커서 강조표시가 사용 중지되어 있으나 사용자가 언제든지 사용하도록 설정할 수 있습니다.</translation>
+<translation id="8160572976152509481">사용자가 기기의 전원 버튼만 사용하여 기기를 끌 수 있도록 허용</translation>
 <translation id="8164144100557223371">브라우저 실험 기능 툴바 진입점 사용 중지</translation>
 <translation id="8164687848393015214">정책을 사용 설정하면 관리 서버에 모니터링 네트워크 패킷(<ph name="HEARTBEATS_TERM" />)을 전송하여 온라인 상태를 모니터링하고, 기기가 오프라인일 때 서버에서 감지할 수 있도록 합니다.
 
       정책을 사용 중지하거나 설정하지 않으면 패킷을 전송하지 않습니다.</translation>
 <translation id="8169452762291746260">기기 상태 모니터링 사용 중지</translation>
 <translation id="8171924760436219650">로그인 화면의 기본 마우스 버튼을 오른쪽 버튼으로 변경</translation>
+<translation id="81724933026241365">사용자가 종료 아이콘 또는 기기의 전원 버튼을 사용하여 기기를 끌 수 있도록 허용</translation>
 <translation id="8173864651667424191">이미지로 인쇄 옵션이 사용 가능한 경우 PDF 문서의 인쇄 미리보기로 기본적으로 설정됩니다.</translation>
 <translation id="8176035528522326671">기업 사용자에게 기본 멀티 프로필 사용자만 허용(기업에서 관리하는 사용자에 대한 기본 동작임)</translation>
 <translation id="8179161412673077784">악의적 사용자 환경이 포함된 사이트에서 새 창 또는 탭 열기 차단</translation>
@@ -7143,6 +7245,7 @@
 <translation id="8337961007759352651">작업자용 스크립트(웹 작업자, 서비스 워커 등)에는 <ph name="MIMETYPE_TEXT_JAVASCRIPT" /> 같은 자바스크립트 MIME 유형이 필요합니다. <ph name="MIMETYPE_TEXT_ASCII" /> 같은 기존 MIME 유형이 있는 작업자 스크립트는 거부됩니다.</translation>
 <translation id="8339089771335211509">WebRTC가 공개 인터넷에 연결하는 인터페이스만 사용하며 비공개 IP 주소를 사용해서는 연결하지 않습니다.</translation>
 <translation id="8339420913453596618">2단계 인증 사용 안함</translation>
+<translation id="8341175887542205077">Linux 가상 머신 백업 및 복원 사용 중지</translation>
 <translation id="8344454543174932833">처음 실행 시 기본 브라우저에서 북마크 가져오기</translation>
 <translation id="8347993687936322631">이 정책은 지원이 중단되었으며 <ph name="PRODUCT_OS_NAME" /> 버전 85에서 삭제될 예정입니다. 대신 <ph name="POWER_MANAGEMENT_IDLE_SETTINGS_POLICY_NAME" /> 정책을 사용하세요.
 
@@ -7159,6 +7262,7 @@
 <translation id="8367209241899435947">Windows에서 Chrome 정리도구 사용 설정</translation>
 <translation id="8367473200119029349">클라우드 보고</translation>
 <translation id="8367488518695804749">모든 사이트에서 팝업 표시 허용 안함</translation>
+<translation id="8369359426872560378">AC로 부팅 사용 중지</translation>
 <translation id="8369602308428138533">AC 전원으로 실행할 때 화면 꺼짐 지연</translation>
 <translation id="8371178326720637170">관리되는 확장 프로그램에서 Enterprise Hardware Platform API를 사용할 수 있도록 허용합니다.</translation>
 <translation id="8373176843640227330">기기 블루투스 정보 보고 사용 중지</translation>
@@ -7318,6 +7422,7 @@
       <ph name="DEVICE_ROLLBACK_TO_TARGET_VERSION_POLICY_NAME" />과 함께 사용되는 경우 기기 버전이 이전의 특정 버전으로 되돌아갈 수 있습니다.
 
       경고: 버전 제한을 구성하는 것은 권장되지 않습니다. 사용자가 소프트웨어 업데이트 및 중요한 보안 수정사항을 받지 못하게 될 수 있기 때문입니다. 업데이트를 특정 버전으로 제한하면 사용자가 위험에 노출될 수 있습니다.</translation>
+<translation id="8519617069657262768">Google Drive 동기화 사용 설정</translation>
 <translation id="8520064498689833152">Google 검색 및 YouTube 제한 모드에서 세이프서치를 '보통' 이상으로 강제 적용</translation>
 <translation id="8524334245528364388">인쇄 서버 목록이 포함된 JSON 파일의 URL입니다.</translation>
 <translation id="8525526490824335042">Linux 컨테이너</translation>
@@ -7342,6 +7447,7 @@
 
           어떤 사이트에 이 정책이 설정되지 않으면 <ph name="DEFAULT_JAVA_SCRIPT_JIT_SETTING_POLICY_NAME" />의 정책이 사이트에 적용되며(정책이 설정되어 있는 경우), 그렇지 않으면 사이트에 자바스크립트 JIT가 사용 설정됩니다.</translation>
 <translation id="8543108307976719751">이 시스템으로 원격 액세스 연결을 차단</translation>
+<translation id="8543975123557636331">오디오 출력 사용 설정</translation>
 <translation id="8544375438507658205"><ph name="PRODUCT_FRAME_NAME" />의 기본 HTML 렌더러</translation>
 <translation id="8544465954173828789">SMS 메시지가 휴대전화에서 Chromebook으로 동기화되도록 허용</translation>
 <translation id="8549906780629620346">계정 복구 활성화</translation>
@@ -7416,6 +7522,7 @@
       정책을 사용 안함으로 설정하면 사용자가 해당 기능에 액세스할 수 없게 됩니다.
       정책을 설정하지 않은 경우 기본값은 ChromeOS에서 기업 관리 사용자에게는 허용되지 않고 그 외 모든 사용자 및 OS에는 허용되는 것입니다.</translation>
 <translation id="8626826495474944836">모든 사이트에 사이트 격리 필요</translation>
+<translation id="8631314130868563649">피크 시프트 전원 관리 사용 중지</translation>
 <translation id="8631434304112909927">버전 <ph name="UNTIL_VERSION" /> 이하</translation>
 <translation id="8631437968147930597"><ph name="PRODUCT_OS_NAME" /> 잠금 화면에서 허용된 메모 앱 목록</translation>
 <translation id="8633550872001751090"><ph name="PRODUCT_NAME" /> 데이터가 백업에 포함되도록 허용</translation>
@@ -7593,6 +7700,7 @@
 <translation id="8816370949847593408">지원 중단 출시 상태에 따라 Chrome 앱이 실행되지 않을 수도 있습니다.</translation>
 <translation id="8818768076343557335">이동통신망을 사용하지 않는 모든 네트워크의 네트워크 활동을 예측합니다.
           (50에서 중지되고 52에서 삭제됩니다. 52가 넘은 경우 값을 1로 설정해도 0으로 처리됩니다. 모든 네트워크 연결 시 네트워크 활동을 예측합니다.)</translation>
+<translation id="8820434908768990758">모든 웹사이트에 사이트 격리를 사용 설정하되 사용자에게 선택 해제 허용</translation>
 <translation id="8821678641132607468">정책을 '사용'으로 설정하면 최초 실행 시 이전 기본 브라우저의 방문 기록을 가져옵니다. 정책을 '사용 안함'으로 설정하거나 설정하지 않으면 최초 실행 시 방문 기록을 가져오지 않습니다.
 
       사용자는 가져오기 대화상자를 트리거할 수 있으며 '방문 기록' 체크박스가 이 정책의 값에 맞게 선택되거나 선택 해제됩니다.</translation>
@@ -7693,6 +7801,7 @@
 <translation id="8919100556245407184"><ph name="PRODUCT_OS_NAME" /> 버전이 지정된 <ph name="CHROMEOS_VERSION_PROPERTY_NAME" />보다 낮은 경우 사용자가 로그아웃되는 자동 업데이트 만료 지점 이후 경과된 시간입니다.</translation>
 <translation id="8919369436496201075">기기가 LTS 업데이트를 수신하도록 허용</translation>
 <translation id="8921669704201370845">관리 프로필을 대상으로 <ph name="PRODUCT_NAME" /> 클라우드 보고 사용</translation>
+<translation id="8922231993239705844">커서 강조표시 사용 중지</translation>
 <translation id="8922494933893518624">비보안 컨텍스트의 WebSQL을 강제로 사용 설정합니다.</translation>
 <translation id="8930064580550462145">잠금 화면을 통해 로그인할 때 <ph name="PRODUCT_OS_NAME" />이(가) 서버(온라인) 또는 캐시된 비밀번호(오프라인)를 사용하여 인증할 수 있습니다.
 
@@ -7740,6 +7849,7 @@
 <translation id="8983539044126123594">추가 Google 계정으로 로그인 사용함</translation>
 <translation id="8985219286836584291">기기 시스템 정보 보고 사용 설정</translation>
 <translation id="8992176907758534924">모든 사이트에서 이미지 표시 허용 안함</translation>
+<translation id="8994850249590725417">개인 정보 보호 알림 표시 안함</translation>
 <translation id="8994954504552592260"><ph name="MS_AD_NAME" /> 관리 기기를 클라우드 관리로 이전할 수 있게 합니다. 이 정책은 회사 내 여러 기기의 터치리스 이전을 원격으로 시작할 수 있게 합니다. 또한 각 이전 단계가 최종 사용자에게 가능한 한 투명하게 공개됩니다.
 
       정책이 사용 설정되어 있고 등록 ID가 DMServer에 업로드되어 있다면 원격 기기 파워워시가 트리거됩니다.
@@ -7949,6 +8059,7 @@
       정책은 일시적인 조치로, 향후 <ph name="PRODUCT_NAME" /> 버전에서는 삭제될 예정입니다. 정책이 삭제되고 나면 <ph name="PRODUCT_NAME" />에서 항상 추가적인 DNS 유형을 쿼리할 수 있게 됩니다.</translation>
 <translation id="9167719789236691545"><ph name="PRODUCT_OS_NAME" /> 파일 앱에서 드라이브 사용 중지</translation>
 <translation id="9187743794267626640">외부 저장소 마운트 사용 중지</translation>
+<translation id="9190022798664427644">모노 오디오 사용 설정</translation>
 <translation id="9190456586252617675">이 정책은 어시스턴트 온보딩 환경의 모드를 제어합니다.
 
       이 정책을 설정하지 않거나 <ph name="ASSISTANT_ONBOARDING_MODE_DEFAULT" /> 값으로 설정하면 어시스턴트 온보딩 환경의 기본 모드가 사용됩니다.
@@ -7988,6 +8099,7 @@
       정책을 설정하지 않으면 <ph name="PRODUCT_NAME" /> 73부터 75까지는 사용으로 설정되고 <ph name="PRODUCT_NAME" /> 76과 77에서는 사용 안함으로 설정됩니다.</translation>
 <translation id="93985900824506396">TLS에서 3DES 암호화 스위트 사용 중지 예정</translation>
 <translation id="940706688964479124">다운로드 시 자동으로 열려야 하는 파일 유형 목록</translation>
+<translation id="942977875497446094">시작 시 브라우저를 자동으로 실행함</translation>
 <translation id="943865157632139008"><ph name="PRODUCT_FRAME_NAME" />이(가) 설치될 때 기본 HTML 렌더러를 설정할 수 있습니다.
       기본 설정은 호스트 브라우저가 렌더링을 실행하도록 허용하지만 원하는 경우 기본 설정을 무시하고 <ph name="PRODUCT_FRAME_NAME" />이(가) HTML 페이지를 기본적으로 렌더링하도록 할 수 있습니다.</translation>
 <translation id="944817693306670849">디스크 캐시 크기 설정</translation>
@@ -8017,6 +8129,7 @@
 <translation id="981346395360763138">Google 위치 서비스가 사용 중지됨</translation>
 <translation id="982497069985795632">맞춤법 검사 사용 설정</translation>
 <translation id="983256325512298435">사용자에게 메시지를 표시하지 않고 목록에 등록된 출처의 외부 애플리케이션을 실행할 수 있는 프로토콜의 목록 정의</translation>
+<translation id="987261962216071510">게스트로 로그인만 허용</translation>
 <translation id="991560005425213776">기본 프린터로 사용자 이름과 파일 이름 보내기</translation>
 <translation id="99202634486128833">정책을 CopyCaCerts로 설정하면 <ph name="WEB_TRUSTED_BIT" />를 포함하며 ONC가 설치된 모든 CA 인증서를 ARC 앱에 사용할 수 있습니다.
 
diff --git a/components/policy/resources/policy_templates_nl.xtb b/components/policy/resources/policy_templates_nl.xtb
index 34c8e82..ca63be6 100644
--- a/components/policy/resources/policy_templates_nl.xtb
+++ b/components/policy/resources/policy_templates_nl.xtb
@@ -52,6 +52,7 @@
 
       Als je dit beleid niet instelt, is de functie standaard niet toegestaan voor beheerde gebruikers maar wel toegestaan voor andere gebruikers.</translation>
 <translation id="1035860095382451169">Hangsloticoon in de omnibox aanzetten voor beveiligde verbindingen</translation>
+<translation id="1037470927044831850">Toestaan dat sites gebruikers vragen om een videostream van hun scherm te delen</translation>
 <translation id="1040125341954178855">Deze functie is verwijderd in Chrome 100.
 
       Als je dit beleid toepast, worden aanbevelingen gedaan voor apps die de gebruiker eerder heeft geïnstalleerd op andere apparaten. Deze aanbevelingen worden in de Launcher getoond na de aanbevelingen voor lokale apps als er geen zoektekst is opgegeven.
@@ -274,6 +275,7 @@
 
       Als je het beleid niet instelt of als de waarde na vervanging geen geldige hostnaam is, wordt er geen hostnaam ingesteld in het DHCP-verzoek.</translation>
 <translation id="1257550411839719984">Standaardmap voor downloads instellen</translation>
+<translation id="1262993197422487260">De knop Wachtwoord bekijken niet tonen op het inlog- en vergrendelscherm</translation>
 <translation id="1265053460044691532">De offline inlogtijd beperken voor een gebruiker die is geverifieerd via SAML</translation>
 <translation id="1271811620059192171">Atomische beleidsgroepen aanzetten</translation>
 <translation id="127264587838521316">Hiermee worden installatieverzoeken voor <ph name="PRODUCT_NAME" />-extensies aangezet</translation>
@@ -327,6 +329,7 @@
 
       Als Verplicht (2) is geselecteerd, kunnen gebruikers de profielkiezer niet onderdrukken. De profielkiezer wordt ook getoond als er maar één profiel beschikbaar is.</translation>
 <translation id="1339174690935954950">Niet toestaan dat gebruikers feedback indienen</translation>
+<translation id="1340053691042184658">Niet toestaan dat gebruikers als gast inloggen bij de browser</translation>
 <translation id="1342918903685430097">Stel de minimaal toegestane <ph name="PRODUCT_OS_NAME" />-versie in voor het apparaat.</translation>
 <translation id="1343128241903870688">Rapportage van app-informatie van apparaat uitzetten</translation>
 <translation id="1347198119056266798">Dit beleid is verouderd. Gebruik in plaats daarvan <ph name="FORCE_GOOGLE_SAFE_SEARCH_POLICY_NAME" /> en <ph name="FORCE_YOUTUBE_RESTRICT_POLICY_NAME" />. Dit beleid wordt genegeerd als het beleid <ph name="FORCE_GOOGLE_SAFE_SEARCH_POLICY_NAME" />, <ph name="FORCE_YOUTUBE_RESTRICT_POLICY_NAME" /> of <ph name="FORCE_YOUTUBE_SAFETY_MODE_POLICY_NAME" /> (verouderd) is ingesteld.
@@ -501,6 +504,7 @@
 <translation id="1503969899251962413">Als je het beleid instelt, kun je de <ph name="PLUGIN_VM_NAME" />-licentiecode voor dit apparaat opgeven.
 
       Dit beleid is verwijderd in M94.</translation>
+<translation id="1507373253059695424">Het privacyscherm op het inlogscherm altijd aanzetten</translation>
 <translation id="150857982247452081">Hiermee kun je een lijst met protocollen instellen (en voor elk protocol een gekoppelde lijst met toegestane oorsprongpatronen) die een externe app kunnen starten zonder prompt aan de gebruiker. Het scheidingsteken achteraan moet niet worden opgenomen bij de vermelding van het protocol. Vermeld bijvoorbeeld 'skype' in plaats van 'skype:' of 'skype://'.
 
       Als dit beleid is ingesteld, kan een protocol volgens het beleid een externe app alleen starten zonder prompt aan de gebruiker als het protocol in de lijst wordt vermeld en de oorsprong van de site die probeert het protocol te starten, overeenkomt met een van de oorsprongpatronen in de lijst allowed_origins van dat protocol. Als een van de voorwaarden False is, wordt de prompt voor starten via een extern protocol volgens het beleid niet overgeslagen.
@@ -675,6 +679,7 @@
           Als je dit beleid instelt, kunnen gebruikers het niet wijzigen of overschrijven.
 
           Als dit beleid niet is ingesteld, staat dicteren in eerste instantie uit op het inlogscherm. De gebruiker kan deze functie op elk gewenst moment aanzetten.</translation>
+<translation id="1673097259557436886">Websites altijd laten weten dat er geen betaalmethoden zijn opgeslagen</translation>
 <translation id="1674287836076801014">SAML</translation>
 <translation id="1675002386741412210">Ondersteund op:</translation>
 <translation id="167514072300004091">Als je het beleid instelt op 3, kunnen websites vragen om toegang tot aangesloten USB-apparaten. Als je het beleid instelt op 2, wordt de toegang tot aangesloten USB-apparaten geblokkeerd.
@@ -720,6 +725,7 @@
 <translation id="1700811900332333712">Geef het apparaat toestemming om Powerwash te activeren</translation>
 <translation id="1708496595873025510">De beperking voor het ophalen van de seed voor varianten instellen</translation>
 <translation id="1709154322133526432">De check voor de standaardbrowser bij het opstarten aanzetten</translation>
+<translation id="1710245398478550276">Desk API aanzetten voor een lijst met domeinen van derden</translation>
 <translation id="1713829924716792485">Als je dit beleid toepast of niet instelt, kunnen gebruikers die met een host voor externe toegang zijn verbonden, bestanden overzetten tussen de client en de host. Dit is niet van toepassing op verbindingen voor hulp op afstand, die geen bestandsoverdracht ondersteunen.
 
       Als je het beleid niet toepast, is er geen bestandsoverdracht toegestaan.</translation>
@@ -750,6 +756,7 @@
 
       Ga naar https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns voor gedetailleerde informatie over geldige <ph name="URL_LABEL" />-patronen. <ph name="WILDCARD_VALUE" /> is geen geaccepteerde waarde voor dit beleid.</translation>
 <translation id="1736269219679256369">Doorgaan vanaf de SSL-waarschuwingspagina toestaan</translation>
+<translation id="1744340218280697033">Niet toestaan dat ouders accounts toevoegen die onder toezicht staan</translation>
 <translation id="1751429117283165017">Als je het beleid instelt, kun je een lijst met URL-patronen maken om op te geven welke sites gebruikers niet mogen vragen om hun schrijftoegang te geven tot bestanden en directory's in het bestandssysteem van het besturingssysteem.
 
       Als je het beleid niet instelt, is <ph name="DEFAULT_FILE_SYSTEM_WRITE_GUARD_SETTING_POLICY_NAME" /> (indien ingesteld) van toepassing op alle sites. Zo niet, dan gelden de persoonlijke instellingen van gebruikers.
@@ -767,6 +774,7 @@
 
        Opmerking: Voor gedetailleerdere voorbeelden ga je naar The Chromium Projects ( https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett ).</translation>
 <translation id="1767673020408652620">App-aanbevelingen aanzetten voor de nulstatus van het zoekvak</translation>
+<translation id="1770071413238151235">12-uurs klok</translation>
 <translation id="1780323582106687813">Dit beleid is beëindigd. Gebruik in plaats daarvan het beleid '<ph name="EXTENSION_INSTALL_ALLOWLIST_POLICY_NAME" />'.
 
       Als je het beleid instelt, geeft dit aan welke extensies zijn uitgesloten van de lijst met verboden extensies. Gebruik de waarde <ph name="ALL_EXTENSIONS" /> voor <ph name="EXTENSION_INSTALL_BLACKLIST_POLICY_NAME" /> om alle extensies te verbieden. Gebruikers kunnen vervolgens alleen expliciet toegestane extensies installeren. Standaard worden alle extensies toegestaan. Maar als je extensies via beleid hebt verboden, gebruik je de lijst met toegestane extensies om dat beleid te wijzigen.</translation>
@@ -810,6 +818,7 @@
           </translation>
 <translation id="1808715480127969042">Cookies blokkeren op deze sites</translation>
 <translation id="1810261428246410396">Het gebruik van instant-tethering toestaan</translation>
+<translation id="1813638828646876133">Automatisch versturen van pincode op het vergrendel- en inlogscherm aanzetten</translation>
 <translation id="1813672770917912317">Hiermee kun je instellen of <ph name="PRODUCT_NAME" /> de v8 JavaScript-engine uitvoert met de JIT-compiler (Just In Time) aangezet of niet.
 
           Als je de JavaScript JIT-compiler uitzet, kan <ph name="PRODUCT_NAME" /> er langer over doen om webcontent te laten zien en kunnen ook delen van JavaScript (waaronder WebAssembly) worden uitgezet. Als je de JavaScript JIT-compiler uitzet, kan <ph name="PRODUCT_NAME" /> webcontent laten zien in een meer beveiligde configuratie.
@@ -910,6 +919,7 @@
 
       Als je het beleid niet instelt, wordt <ph name="HTTP_NEGOTIATE" />-verificatie uitgezet op Android.</translation>
 <translation id="1925529914257504750">Automatisch updaten van P2P aangezet</translation>
+<translation id="1928355425032308464">Video-invoer aanzetten</translation>
 <translation id="1930127294345368978">Maximum aantal vellen dat mag worden gebruikt voor één afdruktaak</translation>
 <translation id="193259052151668190">Witte lijst met USB-apparaten die kunnen worden ontkoppeld</translation>
 <translation id="1933378685401357864">Achtergrondafbeelding</translation>
@@ -992,6 +1002,7 @@
       Als het beleid is ingesteld op False of niet is ingesteld, wordt de informatie niet gerapporteerd.
       Als het beleid is ingesteld op True, wordt de momenteel ingestelde tijdzone van het apparaat gerapporteerd.</translation>
 <translation id="199764499252435679">Componentupdates in <ph name="PRODUCT_NAME" /> aanzetten</translation>
+<translation id="1997943707974344423">Smart Lock toestaan</translation>
 <translation id="1998504583649140526">Instellingen voor privénetwerkverzoeken</translation>
 <translation id="1999000620918508488">Afdwingen dat systeemgegevens op het inlogscherm worden getoond of verborgen.</translation>
 <translation id="1999942889260716089">Als je het beleid instelt op True, worden zoeksuggesties in de adresbalk van <ph name="PRODUCT_NAME" /> aangezet. Als je het beleid instelt op False, worden deze zoeksuggesties uitgezet.
@@ -1011,6 +1022,7 @@
 <translation id="2005506794355327448">Actie die moet worden ondernomen als de klep wordt gesloten</translation>
 <translation id="2006530844219044261">Energiebeheer</translation>
 <translation id="2008514891623783266">Het IP-gebruiksbeleid van WebRTC</translation>
+<translation id="2012296492055302633">Het privacyscherm altijd aanzetten</translation>
 <translation id="2013285471046373727">Specificeert hoe een app wordt geïnstalleerd. OPTIONAL: De app wordt niet automatisch geïnstalleerd, maar de gebruiker kan deze installeren. Dit is de standaardwaarde als dit beleid niet is gespecificeerd. PRELOAD: De app wordt automatisch geïnstalleerd, maar de gebruiker kan deze verwijderen. FORCE_INSTALLED: De app wordt automatisch geïnstalleerd en de gebruiker kan deze niet verwijderen. BLOCKED: De app is geblokkeerd en kan niet worden geïnstalleerd. Als de app is geïnstalleerd op basis van een eerder beleid, wordt deze verwijderd.</translation>
 <translation id="2014757022750736514">Beheert het gedrag van het inlogscherm, waar gebruikers inloggen op hun accounts. Instellingen zijn onder andere wie kan inloggen, welke typen accounts zijn toegestaan, welke verificatiemethoden moeten worden gebruikt, en algemene instellingen voor toegankelijkheid, invoermethoden en taal.</translation>
 <translation id="201557587962247231">De frequentie van uploads van rapporten over de apparaatstatus</translation>
@@ -1053,6 +1065,7 @@
 <translation id="2057317273526988987">Toegang verlenen aan een lijst met URL's</translation>
 <translation id="2058055310819710697">Ontwikkelaarsmodus voor geïsoleerde apps aanzetten</translation>
 <translation id="205807990145127714">Telemetriegegevens om te rapporteren over signaalsterkte.</translation>
+<translation id="2060153898336610735">Automatisch op basis van huidige taal</translation>
 <translation id="2061123930713023976">Opnamen van netwerkpakketten voor fouten opsporen toestaan</translation>
 <translation id="2061810934846663491">De vereiste domeinnamen configureren voor hosts voor externe toegang</translation>
 <translation id="2062632109797189011">De beëindigde API window.webkitStorageInfo opnieuw aanzetten</translation>
@@ -1084,6 +1097,7 @@
 <translation id="209586405398070749">Stabiel kanaal</translation>
 <translation id="2096932573113293941">De gebruiker om toestemming vragen om plug-ins uit te voeren waarvoor machtiging is vereist</translation>
 <translation id="2098658257603918882">Rapportage van gebruiks- en crashgegevens aanzetten</translation>
+<translation id="2099380339157427935">Uitlogknop niet tonen in systeemvak</translation>
 <translation id="2104418465060359056">Gegevens over extensies en plug-ins rapporteren</translation>
 <translation id="2106627642643925514">Hiermee wordt de standaardmodus voor afdrukken met pincode overschreven. Als de modus niet beschikbaar is, wordt dit beleid genegeerd.</translation>
 <translation id="2107563874993284076">Als je dit beleid toepast, kunnen gebruikers netwerkfileshares gebruiken voor <ph name="PRODUCT_NAME" />. Als je het beleid niet toepast, kunnen gebruikers deze functie niet gebruiken.</translation>
@@ -1117,6 +1131,7 @@
 <translation id="2135335181634291106">Als <ph name="DEFAULT_SEARCH_PROVIDER_ENABLED_POLICY_NAME" /> is aangezet en je <ph name="DEFAULT_SEARCH_PROVIDER_ICON_URL_POLICY_NAME" /> instelt, wordt de URL voor het favoriete icoon van de standaard zoekprovider gespecificeerd.
 
       Als je <ph name="DEFAULT_SEARCH_PROVIDER_ICON_URL_POLICY_NAME" /> niet instelt, is er geen icoon voor de zoekprovider.</translation>
+<translation id="2144236546337326489">Toestaan dat Telefoonhub-taakvoortzetting wordt aangezet</translation>
 <translation id="2145735238144543545">Vereiste clientcertificaten</translation>
 <translation id="2146103669166779785">Hexadecimale kleur waarmee een thema voor de browser wordt samengesteld en toegepast.</translation>
 <translation id="2148769554831004951">Afdwingen dat WebSQL wordt aangezet.</translation>
@@ -1168,6 +1183,7 @@
 <translation id="2171952274731262470">Vertragingen en acties die moeten worden ondernomen als het apparaat inactief is en op de batterij werkt</translation>
 <translation id="2175353308236295184">App-specifiek json-configuratieobject met een reeks sleutel-waardeparen, bijvoorbeeld '"managedConfiguration": { "key1": value1, "key2": value2 }'. De sleutels worden gedefinieerd in het app-manifest.</translation>
 <translation id="2176115444876446233">Voorkomen dat gebruikers een prestatietracering voor het hele systeem verzamelen.</translation>
+<translation id="2177696016354404697">Het privacyscherm altijd uitzetten</translation>
 <translation id="2178899310296064282">Minimaal de gemiddelde 'Beperkte modus' op YouTube afdwingen</translation>
 <translation id="2180958780733364832">Gebruik van de stand zonder interface beheer</translation>
 <translation id="2182291258410176649">De gebruiker beslist of back-up maken en terugzetten moet worden aangezet</translation>
@@ -1273,6 +1289,8 @@
       Gebruikers kunnen deze instelling niet wijzigen of overschrijven.
 
       Opmerking: Door dit beleid wordt de kop 'X-GoogApps-Allowed-Domains' toegevoegd aan alle HTTP- en HTTPS-verzoeken voor alle google.com-domeinen, zoals beschreven in https://support.google.com/a/answer/1668854.</translation>
+<translation id="2282174652047982960">De ingebouwde DNS-client altijd gebruiken, indien beschikbaar</translation>
+<translation id="2288506601233091655">Niet toestaan dat de afdrukgeschiedenis wordt verwijderd</translation>
 <translation id="2289265947759479962">Met dit beleid wordt bepaald of er versiegegevens moeten worden gerapporteerd, zoals OS-versie, OS-platform, OS-architectuur, <ph name="PRODUCT_NAME" />-versie en <ph name="PRODUCT_NAME" />-kanaal.
 
       Als het beleid <ph name="CLOUD_REPORTING_ENABLED_POLICY_NAME" /> niet is ingesteld of niet is toegepast, wordt dit beleid genegeerd.
@@ -1309,6 +1327,7 @@
 <translation id="2307496301287881990">Statussen van scherm en grafische kaart rapporteren</translation>
 <translation id="2309341709647905294">Geen informatie rapporteren over randapparaten die zijn aangesloten op het apparaat</translation>
 <translation id="2309390639296060546">Standaardinstelling voor geolocatie</translation>
+<translation id="2318583605563438459">Toestaan dat ouders accounts toevoegen die onder toezicht staan</translation>
 <translation id="2331354174913096226">De URI-template van de gewenste DNS-over-HTTPS-resolver. Als je meerdere DNS-over-HTTPS-resolvers wilt opgeven, scheid je de overeenkomstige URI-templates met een spatie.
 
       Als de DnsOverHttpsMode is ingesteld op <ph name="SECURE_DNS_MODE_SECURE" />, moet dit beleid worden ingesteld en mag het niet leeg blijven.
@@ -1413,6 +1432,7 @@
 
 Als dit beleid niet is ingesteld, staat het privacyscherm in eerste instantie uit, maar kan de gebruiker dit aanzetten.</translation>
 <translation id="2415715982424988916">Ontdekken (ondersteund vanaf versie 91)</translation>
+<translation id="2421400544595297401">Niet toestaan dat niet-gelieerde gebruikers Android-apps gebruiken</translation>
 <translation id="2421677964966613267">Dit beleid is beëindigd in M88. Flash wordt niet meer ondersteund door Chrome. Als je het beleid instelt, kun je een lijst met URL-patronen instellen om op te geven welke sites de <ph name="FLASH_PLUGIN_NAME" />-plug-in niet mogen uitvoeren.
 
       Als je het beleid niet instelt, is <ph name="DEFAULT_PLUGINS_SETTING_POLICY_NAME" />, indien ingesteld, van toepassing op alle sites. Zo niet, dan gelden de persoonlijke instellingen van de gebruiker.
@@ -1448,6 +1468,7 @@
 <translation id="2436302465999055995">Van <ph name="LACROS_NAME" /> de enige beschikbare browser maken (nog niet geïmplementeerd)</translation>
 <translation id="2439187682308339104">Geen enkele site toestemming geven om toegang te vragen tot HID-apparaten via de WebHID API</translation>
 <translation id="2439733504887695659">Afwijzen van meldingen over gehackte wachtwoorden aanzetten voor de opgegeven inloggegevens</translation>
+<translation id="2446244536806499267">Gebruiker niet als inactief beschouwen tijdens afspelen van audio</translation>
 <translation id="2448315169529769573">Als je het beleid toepast, rapporteert <ph name="PRODUCT_OS_NAME" /> gebruiksstatistieken en diagnostische gegevens, waaronder crashrapporten, aan Google. Als je het beleid niet toepast, worden er geen statistieken en diagnostische gegevens gerapporteerd.
 
        Als je het beleid niet instelt, worden er geen statistieken en diagnostische gegevens gerapporteerd voor onbeheerde apparaten, maar wel voor beheerde apparaten.</translation>
@@ -1636,6 +1657,7 @@
 <translation id="2625398797484317969">Beheert de instellingen voor Snelle antwoorden.</translation>
 <translation id="262740370354162807">Sturen van documenten naar <ph name="CLOUD_PRINT_NAME" /> aanzetten</translation>
 <translation id="2633084400146331575">Gesproken feedback aanzetten</translation>
+<translation id="2633907568797306353">Toestaan dat Phone Hub-meldingen worden aangezet</translation>
 <translation id="2635872253077105112">Met dit beleid kun je de lijst met websites instellen die in een alternatieve browser moeten worden geopend. Elk item wordt behandeld als regel waarmee iets in een alternatieve browser wordt geopend. <ph name="PRODUCT_NAME" /> gebruikt deze regels bij de keuze of een URL in een alternatieve browser moet worden geopend. Als de add-in van <ph name="IE_PRODUCT_NAME" /> aanstaat, schakelt <ph name="IE_PRODUCT_NAME" /> terug naar <ph name="PRODUCT_NAME" /> als de regels niet overeenkomen. Als regels elkaar tegenspreken, gebruikt <ph name="PRODUCT_NAME" /> de meest specifieke regel.
 
       Als je het beleid niet instelt, worden er geen websites aan de lijst toegevoegd.
@@ -1716,6 +1738,7 @@
 <translation id="2725855586003209701">Als je het beleid toepast of niet instelt, rapporteren ingeschreven apparaten de lijst met apparaatgebruikers die onlangs zijn ingelogd.
 
       Als je het beleid niet toepast, rapporteren ingeschreven apparaten de lijst met gebruikers niet.</translation>
+<translation id="2730200383593984228">Toestaan dat niet-gelieerde gebruikers Android-apps gebruiken</translation>
 <translation id="2730419309754848345">Pdf standaard afdrukken als afbeelding</translation>
 <translation id="2731299561202635374">Dit beleid beheert realtime checks om niet-beveiligde URL's te identificeren.
 
@@ -1830,12 +1853,15 @@
 <translation id="2839294585867804686">Instellingen voor Network File Shares</translation>
 <translation id="284288632677954003">URL van een XML-bestand dat URL's bevat die nooit overschakeling naar een andere browser veroorzaken.</translation>
 <translation id="2846689894646472396">Snelheid voor checken van netwerkgebeurtenissen in milliseconden.</translation>
+<translation id="2847788524147474533">Platformapparaatbeleid krijgt voorrang op cloud-apparaatbeleid</translation>
 <translation id="2853649500575897584">Geen verouderde extensiepunten in het browserproces blokkeren</translation>
 <translation id="285480231336205327">Modus voor hoog contrast aanzetten</translation>
 <translation id="285627849510728211">Dagconfiguratie voor geavanceerde batterijoplaadmodus instellen</translation>
 <translation id="2856674246949497058">Herstel en blijf op de doelversie als de OS-versie nieuwer is dan de doelversie. Voer een powerwash uit tijdens het proces.</translation>
 <translation id="2866619962692161453">Type beleid over ander beleid</translation>
 <translation id="2866726566162790531">Lijst met herkomsten waarvoor alle HTTP-verificatie is toegestaan</translation>
+<translation id="2868756546751652023">Toestaan dat gebruikers instant-tethering gebruiken</translation>
+<translation id="286898786908566256">Toestaan dat gebruikers telefoonnummers van Chrome naar hun Android-apparaat sturen</translation>
 <translation id="2869762730352628426">Automatisch klikken op het inlogscherm aanzetten</translation>
 <translation id="2872961005593481000">Afsluiten</translation>
 <translation id="2874209944580848064">Opmerking voor <ph name="PRODUCT_OS_NAME" />-apparaten die Android-apps ondersteunen:</translation>
@@ -1895,6 +1921,7 @@
 <translation id="2906874737073861391">Lijst met app-pakketextensies</translation>
 <translation id="2908277604670530363">Maximaal aantal gelijktijdige verbindingen met de proxyserver</translation>
 <translation id="2912366658685903301">Een kleur instellen voor het thema van de browser</translation>
+<translation id="2914283793640833265">Niet toestaan dat Telefoonhub-taakvoortzetting wordt aangezet</translation>
 <translation id="291853569864365550">Geen contentsuggesties tonen op de pagina Nieuw tabblad</translation>
 <translation id="2920795918401557243">Deze instelling staat toe dat een prestatietracering voor het hele systeem wordt verzameld via de service voor systeemtracering.
 
@@ -1994,6 +2021,7 @@
         Als een beleidsregel in de lijst wordt vermeld en niet officieel is uitgebracht, wordt de waarde hiervan toegepast.
 
         Dit beleid heeft geen invloed op al uitgebrachte beleidsregels.</translation>
+<translation id="3002067315837777719">Niet toestaan dat Telefoonhub-meldingen worden aangezet</translation>
 <translation id="3016255526521614822">Notitie-apps die zijn toegestaan op het <ph name="PRODUCT_OS_NAME" />-vergrendelscherm toevoegen aan de witte lijst</translation>
 <translation id="3017578958356048910">De pdf-viewer mag pdf's annoteren</translation>
 <translation id="3020623128585817424">De check voor de standaardbrowser bij het opstarten uitzetten</translation>
@@ -2180,6 +2208,7 @@
 
       Ga naar https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns voor gedetailleerde informatie over geldige <ph name="URL_LABEL" />-patronen. <ph name="WILDCARD_VALUE" /> is geen geaccepteerde waarde voor dit beleid.</translation>
 <translation id="3168968618972302728">Beleidsregels met betrekking tot Kerberos-verificatie.</translation>
+<translation id="3169872426103732947">De standaard-URL tonen, toestaan dat gebruikers overschakelen naar de volledige URL</translation>
 <translation id="3171369832001535378">Template voor hostnaam van apparaat in netwerk</translation>
 <translation id="3177802893484440532">Online OCSP/CRL-controles voor lokale vertrouwensinstanties vereisen</translation>
 <translation id="3180671894201217988">Als je dit beleid toepast of niet instelt, wordt voorkomen dat software van derden uitvoerbare code in de processen van <ph name="PRODUCT_NAME" /> injecteert.
@@ -2386,6 +2415,7 @@
       Als dit beleid niet is toegepast of niet is ingesteld, worden deze TLS/DTLS-versies uitgezet.
 
       Dit beleid is tijdelijk en wordt verwijderd in een toekomstige versie van <ph name="PRODUCT_NAME" />.</translation>
+<translation id="3351835664671920945">Standaard een standaardtoetsenbord tonen voor wachtwoordinvoer</translation>
 <translation id="3359186795130278362">Beperkte beheerde gastsessie aanzetten.</translation>
 <translation id="33592541385181121">Poort niet opnemen in gemaakte Kerberos-SPN</translation>
 <translation id="3360093276083825336">Dit beleid is beëindigd en wordt verwijderd in <ph name="PRODUCT_OS_NAME" />-versie 85. Gebruik in plaats daarvan <ph name="POWER_MANAGEMENT_IDLE_SETTINGS_POLICY_NAME" />.
@@ -2424,6 +2454,7 @@
 <translation id="3397883909301547525">Geen app-aanbevelingen laten zien in de <ph name="PRODUCT_OS_NAME" />-launcher</translation>
 <translation id="3399859571630358395">Snel koppelen (snelle bluetooth-koppeling) geforceerd uitzetten.</translation>
 <translation id="3404681701763345449"><ph name="GOOGLE_CALENDAR_NAME" />-integratie aanzetten.</translation>
+<translation id="3406122462682235653">De gebruiker niet vragen (downloads beginnen meteen)</translation>
 <translation id="3408078762098350617">Hiermee beheer je de gebruikerservaring voor uitgezette functies die worden vermeld in <ph name="SYSTEM_FEATURES_DISABLE_LIST_POLICY_NAME" />.
 
       Als je dit beleid instelt op Geblokkeerd, kunnen gebruikers de uitgezette functies niet gebruiken maar wel zien.
@@ -2497,6 +2528,7 @@
           Als je dit beleid instelt, kunnen gebruikers het niet wijzigen of overschrijven.
 
           Als dit beleid niet is ingesteld, staat 'Selecteer om uitgesproken te worden' in eerste instantie uit op het inlogscherm. De gebruiker kan deze functie op elk gewenst moment aanzetten.</translation>
+<translation id="3483585138745445814">Toestaan dat gebruikers Dichtbij delen aanzetten</translation>
 <translation id="348495353354674884">Virtueel toetsenbord aanzetten</translation>
 <translation id="3485200437120267231">Onderschepping bij inloggen uitzetten</translation>
 <translation id="3487651201232258606">Systeemeigen berichten</translation>
@@ -2540,6 +2572,7 @@
 <translation id="3528000905991875314">Alternatieve foutpagina's gebruiken</translation>
 <translation id="3531084733660068324">Instellingen voor ouderlijk toezicht</translation>
 <translation id="3536263244905016305">WPAD-optimalisatie (Web Proxy Auto-Discovery) uitzetten</translation>
+<translation id="3538869107794555625">Schermtoetsenbord aanzetten in de tabletmodus</translation>
 <translation id="3539103206548425861">Als je dit beleid instelt, worden video's met audiocontent automatisch (zonder toestemming van de gebruiker) afgespeeld in <ph name="PRODUCT_NAME" />. Als het beleid <ph name="AUTOPLAY_ALLOWED_POLICY_NAME" /> is ingesteld op True, heeft dit beleid geen effect. Als <ph name="AUTOPLAY_ALLOWED_POLICY_NAME" /> is ingesteld op False, kunnen URL-patronen die in dit beleid zijn ingesteld nog altijd worden afgespeeld. Als je dit beleid wijzigt terwijl <ph name="PRODUCT_NAME" /> wordt uitgevoerd, wordt het alleen toegepast op nieuw geopende tabbladen.
 
       Ga naar https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns voor gedetailleerde informatie over geldige URL-patronen.</translation>
@@ -2577,6 +2610,7 @@
 <translation id="3568762199045490351">JavaScript-functie setTimeout() met een time-out van 0 ms wordt vastgezet op 1 ms.</translation>
 <translation id="3574450691573438824">Uploaden van systeemlogboeken uitzetten voor apparaat</translation>
 <translation id="3575011234198230041">HTTP-verificatie</translation>
+<translation id="3575159471980949522">Niet toestaan dat gebruikers telefoonnummers van Chrome naar hun Android-apparaat sturen</translation>
 <translation id="3577251398714997599">Advertentie-instellingen voor sites met opdringerige advertenties</translation>
 <translation id="3577628175311752799">'no-referrer-when-downgrade' gebruiken als standaardbeleid voor verwijzende URL's.</translation>
 <translation id="357917253161699596">Gebruikers toestaan gebruikerscertificaten te beheren</translation>
@@ -3182,6 +3216,7 @@
 <translation id="4187576366596772431">De WebHID API op deze sites blokkeren</translation>
 <translation id="4190316993598857632">Bewerken van bookmarks aanzetten</translation>
 <translation id="4192388905594723944">URL voor het valideren van verificatietoken voor client voor externe toegang</translation>
+<translation id="4195698007674066525">Standaard een numeriek toetsenbord tonen voor wachtwoordinvoer</translation>
 <translation id="4203055629055264833">Als je dit beleid toepast of niet instelt, kunnen gebruikers de meest recente resultatenpagina van de standaard zoekmachine in een zijvenster tonen door een icoon in de werkbalk aan/uit te zetten.
 
       Als je dit beleid niet toepast, wordt het icoon waarmee het zijvenster met de resultatenpagina van de standaard zoekmachine kan worden geopend, uit de werkbalk verwijderd.</translation>
@@ -3277,6 +3312,7 @@
 <translation id="4314538398999793073">CNAME-lookup tijdens Kerberos-verificatie uitzetten</translation>
 <translation id="4320592646346933548">Wifi</translation>
 <translation id="4322842393287974810">Toestaan dat de kiosk-app die automatisch zonder vertraging is gestart, de <ph name="PRODUCT_OS_NAME" />-versie beheert</translation>
+<translation id="4323412353642577604">Extern attest voor contentbescherming aanzetten</translation>
 <translation id="4325690621216251241">Een afmeldknop toevoegen aan de systeembalk</translation>
 <translation id="4329095223358818804">'Snelle antwoorden' toegang tot geselecteerde content geven</translation>
 <translation id="4330908525441222205">Standaard AppCache-gedrag gebruiken</translation>
@@ -3310,6 +3346,7 @@
 <translation id="4369307906396795087">Scripts voor workers (web workers, service workers, enzovoort) maken gebruik van minder strenge MIME-typecontrole. Workerscripts met verouderde MIME-typen, zoals <ph name="MIMETYPE_TEXT_ASCII" />, werken ook.</translation>
 <translation id="4370937370030117032">Gebruikersnaam en bestandsnaam naar systeemeigen printers sturen uitzetten</translation>
 <translation id="4372704773119750918">Zakelijke gebruikers niet toestaan deel uit te maken van multiprofielen (primair of secundair)</translation>
+<translation id="4377377599658208627">Toestaan dat sites scrollen naar specifieke tekstfragmenten via de URL</translation>
 <translation id="4377599627073874279">Alle sites toestaan afbeeldingen te tonen</translation>
 <translation id="437791893267799639">Beleid niet ingesteld, gegevensmigratie en ARC niet toestaan</translation>
 <translation id="4380159792986204036">Toestaan dat Web Kiosk meerdere browservensters op elk willekeurig scherm kan openen</translation>
@@ -3459,6 +3496,7 @@
 <translation id="4558166110367609724">De servicevoorwaarden worden automatisch overgeslagen en de browser wordt geladen.</translation>
 <translation id="4559846397119102037">Gebruik van <ph name="LACROS_NAME" /> toestaan</translation>
 <translation id="4561560385824323005">Gebruikers toestaan een vooraf ingestelde bureaubladindeling te laden</translation>
+<translation id="4561940244682063697">Niet toestaan dat sites gebruikers vragen om een videostream van hun scherm te delen</translation>
 <translation id="4562165737444703281">Toestaan dat gebruikers Crostini-poortdoorschakeling [aanzetten/configureren]</translation>
 <translation id="456686782928669977">Met dit beleid wordt bepaald of de regels van het SiteList-beleid van <ph name="IE_PRODUCT_NAME" /> moeten worden geladen.
 
@@ -3474,6 +3512,18 @@
 Als je dit beleid toepast, kunnen sites tegelijkertijd navigeren en nieuwe vensters/tabbladen openen.
 Als je dit beleid niet toepast of niet instelt, kunnen sites niet tegelijkertijd navigeren en nieuwe vensters/tabbladen openen.</translation>
 <translation id="457430673056611745">Configuratiebeleid voor de <ph name="PRODUCT_NAME" /> Enterprise Connector OnPrint</translation>
+<translation id="4576760454200781316">Als de functie <ph name="PRODUCT_NAME" /> aanstaat, worden JavaScript-timers op achtergrondtabbladen op agressieve wijze gethrottled en samengevoegd, zodat ze niet vaker dan één keer per minuut worden uitgevoerd nadat een pagina 5 minuten of langer op de achtergrond heeft gestaan.
+
+          Deze functie voldoet aan de internetstandaarden, maar kan ervoor zorgen dat bepaalde websites niet goed functioneren omdat bepaalde acties tot maximaal een minuut kunnen worden vertraagd. Als deze functie aanstaat, heeft dit wel aanzienlijke CPU- en batterijbesparingen tot gevolg. Bekijk https://bit.ly/30b1XR4 voor meer informatie.
+
+          Als dit beleid wordt toegepast, wordt de functie gedwongen aangezet en kunnen gebruikers dit niet overschrijven.
+
+          Als dit beleid niet wordt toegepast, wordt de functie gedwongen uitgezet en kunnen gebruikers dit niet overschrijven.
+
+          Als dit beleid niet is ingesteld, wordt de functie beheerd door de eigen interne logica, die handmatig kan worden ingesteld door gebruikers.
+
+          Houd er rekening mee dat het beleid wordt toegepast per weergaveprogrammaproces en dat de meest recente waarde van de beleidsinstelling van kracht is als een weergaveprogrammaproces wordt gestart. Volledig opnieuw opstarten is vereist om ervoor te zorgen dat op alle geladen tabbladen een consistente beleidsinstelling wordt toegepast. Dit heeft geen negatieve invloed op processen die met andere waarden van dit beleid worden uitgevoerd.
+          </translation>
 <translation id="4578265298946081589">Niet opnieuw opstarten na uitloggen gebruiker.</translation>
 <translation id="4581507927311097234">De tijdsduur zonder gebruikersinvoer waarna het scherm uitgaat (in milliseconden)</translation>
 <translation id="4582338216073557489">Als je het beleid instelt op None, gebruikt <ph name="PRODUCT_NAME" /> de standaard cachegrootte om gecachte bestanden op de schijf op te slaan. Gebruikers kunnen deze instelling niet wijzigen.
@@ -3524,6 +3574,7 @@
       * Als <ph name="FILTER_PLACEHOLDER" /> is ingesteld op <ph name="EMPTY_DICTIONARY" />, wordt de selectie van clientcertificaten niet verder beperkt. Houd er rekening mee dat filters die door de webserver worden geleverd, nog steeds van toepassing zijn.
 
       Als je het beleid niet instelt, worden clientcertificaten voor geen enkele site automatisch geselecteerd.</translation>
+<translation id="4611983465824842867">Geen waarschuwingen tonen en automatisch invullen niet uitzetten voor onveilige formulieren</translation>
 <translation id="4615003180013429835">Modus voor sitelijstparsering</translation>
 <translation id="4617338332148204752">De metatagcontrole in <ph name="PRODUCT_FRAME_NAME" /> overslaan</translation>
 <translation id="4624417808625504735">Voorkomen dat JavaScript op deze sites JIT kan gebruiken</translation>
@@ -3682,6 +3733,7 @@
 <translation id="4856471929724652373">Hiermee worden OS-updategegevens gerapporteerd, zoals updatestatus, platformversie, laatste updatecontrole en laatste keer opnieuw opstarten.
 
       Als het beleid is ingesteld op False of niet is ingesteld, worden de OS-updategegevens niet gerapporteerd. Als het beleid is ingesteld op True, worden de OS-updategegevens gerapporteerd.</translation>
+<translation id="4857223512478723171">Modus voor volledig scherm niet toestaan</translation>
 <translation id="4858735034935305895">Modus voor volledig scherm toestaan</translation>
 <translation id="4861767323695239729">De toegestane invoermethoden in een gebruikerssessie configureren</translation>
 <translation id="4873380469296842901">Als je deze instelling aanzet, kunnen gebruikers die Telefoonhub al hebben toegestaan, meldingen van hun telefoon sturen/krijgen in Chrome OS.
@@ -3779,7 +3831,9 @@
       Als hiervoor een waarde is opgegeven, wordt gedurende het opgegeven aantal seconden voorkomen dat de browser afsluit, zodat keepalive-verzoeken (https://fetch.spec.whatwg.org/#request-keepalive-flag) kunnen worden verwerkt.
 
       De standaardwaarde (0) betekent dat deze functie niet wordt gebruikt.</translation>
+<translation id="4937423591320233496">Voorgestelde content uitzetten</translation>
 <translation id="4940810901775798837">Toestaan dat niet-beveiligde websites verzoeken indienen bij een netwerkeindpunt</translation>
+<translation id="4942096314850617489">Extern attest voor de gebruiker uitzetten</translation>
 <translation id="4942681160308347946">Als je het beleid instelt op True, staat gesproken feedback aan op het inlogscherm. Als je het beleid instelt op False, staat gesproken feedback uit op het scherm.
 
       Als je dit beleid instelt, kunnen gebruikers gesproken feedback tijdelijk aan- of uitzetten. Als het inlogscherm opnieuw wordt geladen of een minuut lang niet wordt gebruikt, wordt de oorspronkelijke status hersteld.
@@ -3794,6 +3848,7 @@
       Als het beleid niet is ingesteld, is het standaardgedrag (de systeemgegevens worden weergegeven voor het Canary-/Dev-kanaal) van kracht. Gebruikers kunnen de zichtbaarheid aan- en uitzetten met specifieke bewerkingen (bijv. Alt-V).</translation>
 <translation id="494613465159630803">Cast-receiver</translation>
 <translation id="494924690085329212">Opnieuw opstarten bij uitloggen gebruiker als Android is gestart.</translation>
+<translation id="4950447493143157880">De ingebouwde DNS-client nooit gebruiken</translation>
 <translation id="4952347392677351397">Als je het beleid instelt op 1, hebben websites toegang tot sensoren, zoals bewegings- en lichtsensoren. Als je het beleid instelt op 2, wordt de toegang tot sensoren geblokkeerd.
 
       Als je het beleid niet instelt, is <ph name="ALLOW_SENSORS_POLICY_NAME" /> van toepassing maar kunnen gebruikers deze instelling wijzigen.</translation>
@@ -3870,6 +3925,7 @@
 <translation id="5034504101537897433">Rapportage voor informatie over crashrapporten van apparaat aanzetten</translation>
 <translation id="5039110755072335605">Ondersteuning voor CORS-verzoekheaders zonder jokertekens</translation>
 <translation id="504116558738617678">Waarschuwingen voor weinig schijfruimte alleen tonen als het apparaat onbeheerd is of er slechts 1 gebruiker is</translation>
+<translation id="5053779531788741830">De ingebouwde DNS-client gebruiken op macOS, Android en ChromeOS</translation>
 <translation id="5055474681190962362">Dag van de maand [1-31] waarop opnieuw moet worden opgestart, geïnterpreteerd in de lokale tijdzone van het apparaat. Alleen gebruikt als 'frequency' is ingesteld op MONTHLY. Is dit meer dan het maximumaantal dagen in een bepaalde maand, dan wordt de laatste dag van de maand gekozen.</translation>
 <translation id="5056708224511062314">Vergrootglas staat uit</translation>
 <translation id="5058573563327660283">De strategie selecteren die wordt gebruikt om schijfruimte vrij te maken tijdens het automatisch opschonen (verouderd)</translation>
@@ -4029,6 +4085,8 @@
 
       Als het achtergrondbeleid voor het apparaat niet is ingesteld, wordt op basis van het achtergrondbeleid van de gebruiker (als dit is ingesteld) bepaald wat wordt weergegeven.</translation>
 <translation id="5219844027738217407">Voor Android-apps is dit beleid alleen van invloed op de microfoon. Wanneer dit beleid is ingesteld op True, wordt voor alle Android-apps, zonder uitzondering, de microfoon uitgezet.</translation>
+<translation id="5222325605346216869">Throttling van JavaScript-timers op de achtergrond afdwingen</translation>
+<translation id="5223606242837275233">Niet toestaan dat sites scrollen naar specifieke tekstfragmenten via de URL</translation>
 <translation id="5227124062673546005">Beheert hoe <ph name="PRODUCT_NAME" /> afdrukt op <ph name="MS_WIN_NAME" />.
 
       Als je in <ph name="MS_WIN_NAME" /> afdrukt op een PostScript-printer, kunnen verschillende methoden voor het maken van PostScript de afdrukprestaties beïnvloeden.
@@ -4067,6 +4125,7 @@
       Als je het beleid niet toepast, scant Chrome Cleanup niet periodiek en wordt handmatige activering uitgezet.
 
       In <ph name="MS_WIN_NAME" /> is deze functionaliteit alleen beschikbaar voor instanties die zijn gekoppeld aan een <ph name="MS_AD_NAME" />-domein, worden uitgevoerd in Windows 10 Pro of zijn ingeschreven voor Cloudbeheer voor de Chrome-browser.</translation>
+<translation id="5245647012663146075">Niet toestaan dat Telefoonhub wordt aangezet</translation>
 <translation id="5245671702326993331">Staat native meldingen toe</translation>
 <translation id="524637053580639111">Dit beleid is verwijderd in M82. Gebruik in plaats daarvan DeviceMinimumVersion.
 
@@ -4455,6 +4514,7 @@
 <translation id="5630352020869108293">De laatste sessie herstellen</translation>
 <translation id="5633871703004128675">Toegankelijkheidsfunctie voor markering van het caret-teken aanzetten</translation>
 <translation id="5634032995857968056">De sandbox voor de app-container van het weergaveprogramma aanzetten</translation>
+<translation id="5638334542697444045">Niet toestaan dat gebruikers instant-tethering gebruiken</translation>
 <translation id="5639454129004500060">Als dit beleid wordt ingesteld, bevat het informatie om een bureautemplate-bestand te downloaden.  Het bestand bevat een bureautemplate dat aan de huidige gebruiker kan worden geleverd.
       Als het niet wordt ingesteld, bevat de lijst met bureautemplates geen vooraf ingestelde bureautemplate.  Als het beleid <ph name="DESK_TEMPLATES_ENABLED_POLICY_NAME" /> niet op True wordt ingesteld, heeft dit beleid geen effect.</translation>
 <translation id="5641279111657132737">Dit beleid is beëindigd. Gebruik in plaats daarvan het beleid <ph name="AUTH_SERVER_ALLOWLIST_POLICY_NAME" />.
@@ -4550,6 +4610,7 @@
       Als je het beleid niet toepast of niet instelt, gaan de perioden voor stroombeheer en voor de maximale sessielengte meteen in zodra de sessie begint.</translation>
 <translation id="5733357908790472408">De Chrome Root Store gebruiken.</translation>
 <translation id="5735915264686983150">Uitgezette functies verbergen en blokkeren</translation>
+<translation id="5736498355107027047">Uitlogknop tonen in systeemvak</translation>
 <translation id="5737394734996319911">Met de toegankelijkheidsfunctie <ph name="PRODUCT_NAME" /> kunnen slechtziende gebruikers van een schermlezer beschrijvingen van niet-gelabelde afbeeldingen op internet krijgen. Gebruikers die de functie aanzetten, kunnen een anonieme Google-service gebruiken voor automatische beschrijvingen van niet-gelabelde afbeeldingen die ze tegenkomen op internet.
 
           Als deze functie aanstaat, wordt de content van afbeeldingen naar de servers van Google gestuurd om een beschrijving te maken. Er worden geen cookies of andere gebruikersgegevens gestuurd en Google bewaart of registreert de content van afbeeldingen niet.
@@ -4711,6 +4772,7 @@
 <translation id="5915023683182228340">Als je het beleid toepast of niet instelt, mag het QUIC-protocol worden gebruikt in <ph name="PRODUCT_NAME" />.
 
       Als je het beleid niet toepast, mag het QUIC-protocol niet worden gebruikt.</translation>
+<translation id="5916855682471300200">Cloud-apparaatbeleid krijgt voorrang op platformapparaatbeleid</translation>
 <translation id="5921713479449475707">Downloads voor automatische updates via HTTP toestaan</translation>
 <translation id="5928633129285224981">Hiermee bepaal je of <ph name="PRODUCT_NAME" /> de optie Afdrukken als afbeelding instelt als standaard bij het afdrukken van pdf-bestanden.
 
@@ -4893,6 +4955,7 @@
       Houd er rekening mee dat dit beleid de beveiliging van lokale IP's verzwakt als beheerders dit nodig hebben.</translation>
 <translation id="614662973812186053">Met dit beleid wordt ook het gebruik van Android en het verzamelen van diagnostische gegevens bepaald.</translation>
 <translation id="614665605501218241">Hiermee sta je de vermelde sites toe om op een onbeveiligde manier verzoeken te sturen naar netwerkeindpunten die meer privé zijn.</translation>
+<translation id="6150320133676152520">Automatisch versturen van pincode op het vergrendel- en inlogscherm uitzetten</translation>
 <translation id="6155350825868160236">Toestaan dat gebruikers kiezen of Google-webservices worden gebruikt om spelfouten op te lossen</translation>
 <translation id="6155936611791017817">De standaardstatus van de grote muisaanwijzer op het inlogscherm instellen</translation>
 <translation id="6157537876488211233">Door komma's gescheiden lijst van regels voor proxyomzeiling</translation>
@@ -4971,6 +5034,7 @@
 <translation id="6261643884958898336">ID-gegevens van machine rapporteren</translation>
 <translation id="6265892395051519509">Toegang tot sensoren op deze sites toestaan</translation>
 <translation id="6266043141694454734">Hiermee wordt bepaald of de Chrome Root Store en de ingebouwde certificaatverificatie worden gebruikt om servercertificaten te verifiëren</translation>
+<translation id="6270615143812355589">Audio-invoer aanzetten</translation>
 <translation id="6273015149273504999">
       Specificeert een lijst met apps en extensies die op de achtergrond worden geïnstalleerd zonder interactie van de gebruiker en die niet kunnen worden verwijderd of uitgezet door de gebruiker.
 
@@ -5113,6 +5177,7 @@
 
       Ga naar https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns voor gedetailleerde informatie over geldige <ph name="URL_LABEL" />-patronen. <ph name="WILDCARD_VALUE" /> is geen geaccepteerde waarde voor dit beleid.</translation>
 <translation id="6353890097388312479">Als je het beleid instelt op All (0) of niet instelt, kunnen gebruikers vertrouwensinstellingen bewerken voor alle CA-certificaten, door de gebruiker geïmporteerde certificaten verwijderen en certificaten importeren met Certificaatbeheer. Als je het beleid instelt op UserOnly (1), kunnen gebruikers alleen door de gebruiker geïmporteerde certificaten beheren, maar niet de vertrouwensinstellingen van ingebouwde certificaten wijzigen. Als je het beleid instelt op None (2), kunnen gebruikers CA-certificaten bekijken (maar niet beheren).</translation>
+<translation id="6358320368815225772">Extern attest voor het apparaat uitzetten</translation>
 <translation id="6362856770865555544">Als je het beleid toepast of niet instelt, staat WPAD-optimalisatie (Web Proxy Auto-Discovery) aan in <ph name="PRODUCT_NAME" />.
 
       Als je het beleid niet toepast, staat WPAD-optimalisatie uit, waardoor <ph name="PRODUCT_NAME" /> langer moet wachten op DNS-gebaseerde WPAD-servers.
@@ -5207,12 +5272,14 @@
        Vanaf versie M106 worden toegestane invoermethoden automatisch aangezet in kiosksessies.
 
       Opmerking: Als de huidige invoermethode niet wordt ondersteund, wordt de invoermethode overgeschakeld naar het hardwaretoetsenbord (indien toegestaan) of het eerste geldige item in deze lijst. Ongeldige of niet-ondersteunde methoden worden genegeerd.</translation>
+<translation id="6483115462650732746">Zwevend toegankelijkheidsmenu tonen in de kioskmodus</translation>
 <translation id="6489084406497912050">Bepaalt of gebruikers Kerberos-accounts mogen toevoegen.
 
           Als je dit beleid toepast of niet instelt, mogen gebruikers Kerberos-accounts toevoegen via de instellingen voor Kerberos-accounts op de pagina Kerberos-instellingen. Gebruikers hebben het volledige beheer over accounts die ze hebben toegevoegd en kunnen deze aanpassen of verwijderen.
 
           Als je dit beleid niet toepast, mogen gebruikers geen Kerberos-accounts toevoegen. De accounts kunnen alleen via het beleid 'Kerberos-accounts configureren' worden toegevoegd. Dit is een effectieve manier om accounts te vergrendelen.</translation>
 <translation id="6491139795995924304">Bluetooth toestaan op apparaat</translation>
+<translation id="6491305972928809525">Zwevend toegankelijkheidsmenu niet tonen in de kioskmodus</translation>
 <translation id="6491872498385040936">Dit beleid is beëindigd. Overweeg <ph name="FORCE_YOUTUBE_RESTRICT_POLICY_NAME" /> te gebruiken, dat voorrang krijgt op dit beleid en waarmee gedetailleerdere afstelling kan plaatsvinden.
 
       Hiermee werkt YouTube in de gemiddelde Beperkte modus en wordt voorkomen dat gebruikers deze instelling kunnen wijzigen.
@@ -5220,6 +5287,7 @@
       Als deze instelling aanstaat, werkt YouTube altijd minimaal in de gemiddelde Beperkte modus.
 
       Als deze instelling uitstaat of er is geen waarde ingesteld, werkt YouTube niet in de Beperkte modus in <ph name="PRODUCT_NAME" />. De Beperkte modus kan wel nog steeds worden verplicht door externe beleidsregels zoals het YouTube-beleid.</translation>
+<translation id="6492177700737407141">Gebruikers die zijn ingeschreven voor Geavanceerde beveiliging krijgen alleen standaardbescherming voor consumenten</translation>
 <translation id="6492737559291967859">Als je het beleid instelt, wordt de landinstelling gespecificeerd die <ph name="PRODUCT_NAME" /> gebruikt.
 
       Als je het beleid niet toepast of niet instelt, wordt de landinstelling de eerste geldige landinstelling uit:
@@ -5261,6 +5329,7 @@
 <translation id="6521971538031711337">Voorkomen dat een beheerde gebruiker de hostnaam van het apparaat instelt</translation>
 <translation id="6523079496775454310">Toestemmingsproces voor apparaatsignalen aanzetten voor beheerde gebruikers op onbeheerde apparaten</translation>
 <translation id="652593254122955308">Time-out tot inactief profiel wordt gesloten</translation>
+<translation id="6527674993612811419">Waarschuwingen tonen en automatisch invullen uitzetten voor onveilige formulieren</translation>
 <translation id="6532026122543921610">Tenzij het beleid <ph name="SYSTEM_TIMEZONE_POLICY_NAME" /> de automatische tijdzonedetectie uitzet, wordt de methode voor automatische tijdzonedetectie uiteengezet als het beleid wordt ingesteld. Gebruikers kunnen deze methode niet wijzigen.
 
       Je kunt het beleid instellen op:
@@ -5271,7 +5340,9 @@
 
       Als je het beleid niet instelt, 'Gebruikers laten bepalen' instelt of het beleid instelt op None, bepalen gebruikers de automatische tijdzonedetectie via de normale opties in chrome://settings.</translation>
 <translation id="6532769014584932288">Wake locks toestaan</translation>
+<translation id="6533881418188970751">De gebruiker vragen waar het bestand moet worden opgeslagen voordat het wordt gedownload</translation>
 <translation id="6536600139108165863">Automatisch opnieuw opstarten wanneer apparaat wordt afgesloten</translation>
+<translation id="6538653424603921690">Het privacyscherm op het inlogscherm altijd uitzetten</translation>
 <translation id="6539246272469751178">Dit beleid is niet van invloed op Android-apps. Android-apps gebruiken altijd de standaardmap voor downloads en hebben geen toegang tot bestanden die door <ph name="PRODUCT_OS_NAME" /> zijn gedownload naar een niet-standaard downloadmap.</translation>
 <translation id="654303922206238013">Migratiestrategie voor eCryptfs</translation>
 <translation id="6543277347547044538">Einde van het interval (exclusief).</translation>
@@ -5283,6 +5354,7 @@
 <translation id="654546276700640113">Als je dit beleid instelt, wordt de ingestelde maximumlengte van pincodes afgedwongen. Een waarde van 0 of lager betekent dat de gebruiker een pincode van elke lengte kan instellen. Als de waarde lager is dan <ph name="PIN_UNLOCK_MINIMUM_LENGTH_POLICY_NAME" /> maar hoger dan 0, wordt de maximumlengte ingesteld op de minimumlengte.
 
       Als je het beleid niet instelt, wordt er geen maximumlengte afgedwongen.</translation>
+<translation id="6546185795045702747">Toestaan dat websites checken of de gebruiker betaalmethoden heeft opgeslagen</translation>
 <translation id="6553143066970470539">Percentage voor helderheid van scherm</translation>
 <translation id="6555557921186817432">Plan automatisch opnieuw opstarten in nadat een <ph name="PRODUCT_OS_NAME" />-update is toegepast.
 
@@ -5350,6 +5422,7 @@
           Dit beleid heeft geen effect als je het toepast, leeg laat of niet instelt.</translation>
 <translation id="6583249367505445969">Bookmarkbalk uitzetten</translation>
 <translation id="6584541828182430328">Waarschuwing voor volledig scherm niet tonen</translation>
+<translation id="6588634282328239769">De volledige URL tonen</translation>
 <translation id="6593350713192882944">Snelle antwoorden aanzetten</translation>
 <translation id="6594372503585248865">Verbindingsgerelateerde UI aanzetten op de externe hostdesktop bij een actieve verbinding</translation>
 <translation id="65947892191748867">Toestemmingsproces voor apparaatsignalen uitzetten voor beheerde gebruikers op onbeheerde apparaten</translation>
@@ -5386,6 +5459,7 @@
 <translation id="6625136649067113817">Een Booleaanse markering die aangeeft of het schermtoetsenbord de optie voor spellingcontrole heeft.</translation>
 <translation id="66265932317331474">CPU-info melden</translation>
 <translation id="6628120204569232711">Opslagstatus rapporteren</translation>
+<translation id="662991036483361836">Niet toestaan dat gebruikers Dichtbij delen aanzetten</translation>
 <translation id="663685822663765995">Afdrukken in kleurenmodus beperken</translation>
 <translation id="6637946190026453735">Lijst met instellingen voor <ph name="PRODUCT_NAME" /> Enterprise Connectors-services die moeten worden toegepast op de Enterprise Connector <ph name="ON_PRINT_ENTERPRISE_CONNECTOR" />. Die wordt geactiveerd als een pagina of bestand wordt afgedrukt vanuit <ph name="PRODUCT_NAME" />.
 
@@ -5615,6 +5689,7 @@
       Als een extensie niet in de lijst staat of de lijst niet is ingesteld, krijgt de gebruiker het bevestigingsdialoogvenster voor afdruktaken te zien voor elke <ph name="SUBMIT_JOB_FUNCTION" />-functieaanroep.
 
       Dit beleid is verouderd. Gebruik in plaats daarvan <ph name="PRINTING_API_EXTENSIONS_ALLOWLIST_POLICY_NAME" />.</translation>
+<translation id="6847379587945465889">Overdracht van SAML SSO-cookies naar gebruikerssessie tijdens inloggen aanzetten</translation>
 <translation id="684856667300805181">Dit beleid is in <ph name="PRODUCT_NAME" /> 68 verwijderd en vervangen door <ph name="ARC_GLS_POLICY_NAME" />.</translation>
 <translation id="6848721032946289937">Als je dit beleid toepast of niet instelt, wordt hardwareversnelling gebruikt als dit beschikbaar is.
 
@@ -5750,6 +5825,7 @@
       Als je het beleid niet instelt, betekent dit dat als certificaten die openbaar moeten worden gemaakt via Certificaattransparantie niet openbaar worden gemaakt, de betreffende certificaten niet door <ph name="PRODUCT_NAME" /> worden vertrouwd.
 
       Voor een URL-patroon wordt deze indeling gehanteerd (https://www.chromium.org/administrators/url-blocklist-filter-format). Aangezien de certificaten geldig zijn voor een bepaalde hostnaam (los van het schema, de poort of het pad), houdt <ph name="PRODUCT_NAME" /> alleen rekening met het hostnaamgedeelte van de URL. Hosts met jokertekens worden niet ondersteund.</translation>
+<translation id="6969332115615661188">Video-invoer uitzetten</translation>
 <translation id="6972540544240464302">Geselecteerde taakplannerconfiguratie</translation>
 <translation id="6975533677426693807">Pdf-bestanden altijd openen met de interne pdf-viewer</translation>
 <translation id="6979158407327259162">Google Drive</translation>
@@ -5776,6 +5852,7 @@
 
        In <ph name="MS_WIN_NAME" /> is deze functionaliteit alleen beschikbaar voor instanties die zijn gekoppeld aan een <ph name="MS_AD_NAME" />-domein, worden uitgevoerd in Windows 10 Pro of zijn ingeschreven voor <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />. In <ph name="MAC_OS_NAME" /> is deze functionaliteit alleen beschikbaar voor instanties die via MDM worden beheerd of via MCX aan een domein zijn gekoppeld.</translation>
 <translation id="6990736882800900101">Toestaan dat alle pop-ups die zijn geopend met het doel <ph name="BLANK_PAGE_NAME" />, interactie hebben met de pagina die het openen van de pop-up heeft aangevraagd, tenzij de openende pagina expliciet geen toestemming geeft voor dergelijke interactie </translation>
+<translation id="6992943675460798920">Toestaan dat gebruikers screenshots en video-opnamen maken</translation>
 <translation id="6994082778848658360">Geeft aan hoe de ingebouwde Secure Element-hardware kan worden gebruikt voor authenticatie met meerdere factoren, indien de hardware geschikt is voor deze functie. De aan/uit-knop van de machine wordt gebruikt om de fysieke aanwezigheid van de gebruiker te detecteren.
 
       Als Uitgezet is geselecteerd, wordt er geen tweede factor verstrekt.
@@ -5795,7 +5872,9 @@
 <translation id="7003746348783715221">Voorkeuren voor <ph name="PRODUCT_NAME" /></translation>
 <translation id="7007283257527015835">Een Booleaanse markering die aangeeft of de protocolhandler moet worden ingesteld als de standaardwaarde.</translation>
 <translation id="7008308728445338159">Controles voor DNS-onderschepping aangezet</translation>
+<translation id="7009043124653876961">Emoji-suggesties terwijl gebruikers typen uitzetten</translation>
 <translation id="7010006999849135962">Verificatie zonder pincode aanzetten voor de host voor externe toegang</translation>
+<translation id="7014427417852575165">Gebruikers die zijn ingeschreven voor Geavanceerde beveiliging krijgen extra bescherming</translation>
 <translation id="7016587686120059767">Gastmodus uitzetten</translation>
 <translation id="7016736684656067099">Als je het beleid instelt op 1, mogen alle websites afbeeldingen bekijken. Als je het beleid instelt op 2, wordt de weergave van afbeeldingen geblokkeerd.
 
@@ -5844,8 +5923,10 @@
 <translation id="7039815268521168329">Voice Match-proces van de Google Assistent laten zien tijdens de eerste installatie</translation>
 <translation id="7040229947030068419">Voorbeeldwaarde:</translation>
 <translation id="7044883996351280650">De Android-service 'Back-up maken en terugzetten' beheren</translation>
+<translation id="7046113122884041950">Smart Lock niet toestaan</translation>
 <translation id="7047495632846973438">Geeft aan of het rechtenbeleid voor schermopname is aangevinkt of wordt overgeslagen.</translation>
 <translation id="7055022222176591388">Verouderde <ph name="FLASH_PLUGIN_NAME" /> niet toestaan</translation>
+<translation id="7062803946218028349">Toestaan dat Telefoonhub wordt aangezet</translation>
 <translation id="7066292150801784098">Externe gebruikers niet toestaan om vensters met verhoogde bevoegdheid te gebruiken tijdens een sessie voor support op afstand</translation>
 <translation id="706669471845501145">Sites toestaan bureaubladmeldingen te tonen</translation>
 <translation id="70681795425744184">Niet toestaan dat CRD WebAuthn API-verzoeken uitvoert die afkomstig zijn van een externe host.</translation>
@@ -5854,6 +5935,7 @@
 <translation id="7072567600438630966">Toestaan dat Phone Hub wordt aangezet.</translation>
 <translation id="7074437930865599190">Hoofdversie van tekenreeks voor User-agent vastzetten op 99</translation>
 <translation id="707988220162760379">Pdf-bestanden altijd openen met een externe pdf-viewer</translation>
+<translation id="7081699207881888532">Emoji-suggesties terwijl gebruikers typen aanzetten</translation>
 <translation id="7081784525008938771">Als je dit beleid toepast of niet instelt, worden gebruikers niet als inactief gezien als er video wordt afgespeeld. Hiermee wordt voorkomen dat de vertraging voor het dimmen, uitzetten en vergrendelen van het scherm wordt bereikt en dat de bijbehorende acties worden uitgevoerd.
 
       Als je het beleid niet toepast, worden gebruikers wel als inactief gezien, ook als er video wordt afgespeeld.</translation>
@@ -6113,6 +6195,7 @@
 
       Als dit beleid niet wordt ingesteld, gebruikt de automatische opschoonfunctie de standaard ingebouwde strategie. Momenteel is dit de strategie'RemoveLRUIfDormant'.</translation>
 <translation id="7334517274921831425">Toestaan dat gebruikers <ph name="BOREALIS_NAME" /> gebruiken op <ph name="PRODUCT_OS_NAME" /></translation>
+<translation id="7334639219471717734">Niet toestaan dat gebruikers inloggen op hun apparaat met Smart Lock</translation>
 <translation id="7336785017449297672">Beheert instellingen voor de klok en tijdzone.</translation>
 <translation id="7336878834592315572">Cookies bewaren voor de duur van de sessie</translation>
 <translation id="7338217396351647423">Als je het beleid instelt, wordt een reeks beleidsregels gespecificeerd om door te geven aan de ARC-runtime. Beheerders kunnen deze reeks gebruiken om de Android-apps te selecteren die automatisch worden geïnstalleerd. Geef de waarde op in een geldige json-indeling.
@@ -6122,6 +6205,7 @@
 <translation id="7340034977315324840">Tijdsduur van apparaatgebruik melden</translation>
 <translation id="7343004974628511824">Controles voor DNS-onderschepping uitvoeren</translation>
 <translation id="7343497214039883642">Configuratiebestand voor zakelijke printers voor apparaten</translation>
+<translation id="7357148531287978404">Audio-invoer uitzetten</translation>
 <translation id="7358012133037776875">Hiermee kun je een lijst met URL-patronen opgeven van sites waarvoor het recht voor vensterplaatsing automatisch wordt verleend. Dit biedt sites de mogelijkheid om informatie over de schermen van het apparaat te bekijken en die informatie te gebruiken om vensters te openen en te plaatsen of om een volledig scherm voor bepaalde schermen aan te vragen.
 
       Ga naar https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns voor gedetailleerde informatie over geldige site-URL-patronen. Jokertekens, <ph name="WILDCARD_VALUE" />, zijn toegestaan. Dit beleid zoekt alleen overeenkomsten op basis van de herkomst, dus elk pad in het URL-patroon wordt genegeerd.
@@ -6368,6 +6452,7 @@
       Dit beleid is alleen van toepassing op gebruikers met een kinderaccount.
       Wanneer dit beleid is ingesteld, kan de toegangscode voor ouders worden geverifieerd op het apparaat van de gebruiker met een kinderaccount.
       Wanneer dit beleid niet is ingesteld, kan de toegangscode voor ouders niet worden geverifieerd op het apparaat van de gebruiker met een kinderaccount.</translation>
+<translation id="7623431489198474050">Extern attest voor contentbescherming uitzetten</translation>
 <translation id="7628747690141606652">Vertaling van Snelle antwoorden uitzetten</translation>
 <translation id="7629840767216985001">Als je het beleid instelt op True, staat de grote cursor aan op het inlogscherm. Als je het beleid instelt op False, staat de grote cursor uit op het inlogscherm.
 
@@ -6529,6 +6614,7 @@
       Als je het beleid niet instelt, is <ph name="DEFAULT_CLIPBOARD_SETTING" /> (indien ingesteld) van toepassing op alle sites. Zo niet, dan gelden de persoonlijke instellingen van de gebruiker.
 
       Ga naar https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns voor gedetailleerde informatie over geldige <ph name="URL_LABEL" />-patronen. <ph name="WILDCARD_VALUE" /> is geen geaccepteerde waarde voor dit beleid.</translation>
+<translation id="7791215522423893512">Niet toestaan dat gebruikers screenshots en video-opnamen maken</translation>
 <translation id="7792796937016596423">De gebruiker kan geen opnamen van netwerkpakketten uitvoeren</translation>
 <translation id="7798441698807517880">Dit beleid is verwijderd vanaf <ph name="PRODUCT_NAME" /> versie 89 omdat <ph name="FLASH_PLUGIN_NAME" /> is beëindigd.
 
@@ -6598,6 +6684,7 @@
 
       De aanbevolen manier om het scherm te vergrendelen bij inactiviteit is de schermvergrendeling bij opschorting aanzetten en <ph name="PRODUCT_OS_NAME" /> opschorten na een inactieve periode. Gebruik dit beleid alleen als schermvergrendeling veel eerder moet plaatsvinden dan opschorting of als je helemaal niet wilt opschorten bij inactiviteit.</translation>
 <translation id="7895553628261067384">Externe toegang</translation>
+<translation id="789975630884141379">Voorgestelde content aanzetten</translation>
 <translation id="7899952578398457262">Beheerde gebruikers om toestemming vragen om apparaatsignalen te delen op onbeheerde apparaten om toegang te krijgen</translation>
 <translation id="7900469325540540107">Browsegegevens standaard bewaren als je een zakelijk profiel maakt</translation>
 <translation id="7902040092815978832">Numeriek toetsenbord tonen voor wachtwoord</translation>
@@ -6699,6 +6786,7 @@
 
           De beleidswaarde moet worden gespecificeerd in milliseconden. De opgegeven waarden moeten kleiner dan of gelijk zijn aan de inactieve vertraging.</translation>
 <translation id="7992613144342460685">Het recht voor vensterplaatsing toestaan voor deze sites</translation>
+<translation id="7994034037344330969">Hiermee geef je de lijst met web-app-domeinen van derden op die Desk API mogen gebruiken om ChromeOS-bureaus te beheren. Deze URL-patronen moeten de indeling hebben die is gedefinieerd voor de eigenschap 'matches' (komt overeen met) in https://developer.chrome.com/docs/extensions/mv3/manifest/externally_connectable/#reference</translation>
 <translation id="7995610550667275367">Scannen (ondersteund vanaf versie 87)</translation>
 <translation id="7999023147219236247">Beleid om rechten aan apps te verlenen. PERMISSION_POLICY_UNSPECIFIED: Beleid niet gespecificeerd. Als er geen beleid is gespecificeerd voor een recht op een bepaald niveau, wordt het gedrag PROMPT standaard gebruikt. PROMPT: De gebruiker vragen een recht te verlenen. GRANT: Een recht automatisch verlenen. DENY: Een recht automatisch weigeren.</translation>
 <translation id="7999336306414770162">Rapportage van VPD-informatie van apparaat uitzetten</translation>
@@ -6721,6 +6809,7 @@
       Als je dit beleid aanzet, kunnen gebruikers de <ph name="LACROS_NAME" />-browser gebruiken.</translation>
 <translation id="8020222525161221827">Desk API aanzetten voor ChromeOS-beheer door derden</translation>
 <translation id="802147957407376460">Scherm 0 graden draaien</translation>
+<translation id="8021777486638359878">Gebruiker als inactief beschouwen tijdens afspelen van audio</translation>
 <translation id="80243978433618492">Hiermee sta je niet toe dat URL-parameters worden gefilterd.</translation>
 <translation id="8025620823136567878">Sneltoetsen voor internationale toetsenborden worden toegewezen aan de locatie van de toetsen op het toetsenbord in plaats van aan de glief van de toetsen.</translation>
 <translation id="802776363472387903">De SHA-256-hash van de <ph name="PLUGIN_VM_NAME" />-afbeelding.</translation>
@@ -7079,6 +7168,7 @@
 <translation id="8378266419596669629">Het recht voor lokale lettertypen blokkeren op deze sites</translation>
 <translation id="8379317372795444261"><ph name="BASIC_AUTH" />-verificatie is toegestaan voor HTTP-verbindingen</translation>
 <translation id="8381678031726288574">De standaardinstellingen voor beëindiging van de U2F-API toepassen.</translation>
+<translation id="8381774264911275515">Overdracht van SAML SSO-cookies naar gebruikerssessie tijdens inloggen uitzetten</translation>
 <translation id="8382184662529825177">Externe verificatie voor de beveiliging van content gebruiken voor het apparaat</translation>
 <translation id="838870586332499308">Dataroaming aanzetten</translation>
 <translation id="8393850527597048037">Alleen platform</translation>
@@ -7199,6 +7289,7 @@
 
       Waarschuwing: Het wordt niet aanbevolen versiebeperkingen te configureren, omdat gebruikers hierdoor mogelijk geen software-updates en essentiële beveiligingsoplossingen ontvangen. Als je updates beperkt tot een specifiek versievoorvoegsel, kunnen gebruikers gevaar lopen.</translation>
 <translation id="8508489378025029342">Rapportage voor tijd van apparaatactiviteit aanzetten</translation>
+<translation id="8511192250554640451">Toestaan dat throttling van JavaScript-timers op de achtergrond wordt bepaald door Chrome-logica en wordt ingesteld door gebruikers</translation>
 <translation id="8519264904050090490">URL's van handmatige uitzonderingen voor beheerde gebruikers</translation>
 <translation id="8519516251436131647">Zet snelkoppelingen voor toegankelijkheidsfuncties aan.
 
@@ -7598,6 +7689,7 @@
 <translation id="8919369436496201075">Toestaan dat apparaat LDS-updates ontvangt</translation>
 <translation id="8921669704201370845"><ph name="PRODUCT_NAME" />-cloudrapportage voor beheerde profielen aanzetten</translation>
 <translation id="8922494933893518624">Afdwingen dat WebSQL in niet-beveiligde contexten wordt aangezet.</translation>
+<translation id="8923028772162236077">De standaard-URL tonen</translation>
 <translation id="8930064580550462145">Als je inlogt via het vergrendelscherm, kan <ph name="PRODUCT_OS_NAME" /> de verificatie uitvoeren via een server (online) of door gebruik te maken van een gecachet wachtwoord (offline).
 
       Als je dit beleid instelt op -2, komt het overeen met de waarde van de tijdslimiet voor offline inloggen op het inlogscherm, die afkomstig is uit <ph name="POLICY" />.
@@ -7837,6 +7929,7 @@
 
       De sessie van de gebruiker wordt hersteld zodra opnieuw is opgestart.</translation>
 <translation id="9160028464653564229">Geen sites toestemming geven om toegang tot seriële poorten te vragen via de Serial API</translation>
+<translation id="9162444960513782569">Geen throttling van JavaScript-timers op de achtergrond afdwingen</translation>
 <translation id="916461878260574432">Geeft aan of P2P wordt gebruikt voor OS-updatepayloads.
       Als je dit beleid instelt op True, delen apparaten updatepayloads via het LAN en proberen ze deze te verbruiken. Hierdoor kunnen het bandbreedtegebruik en de overbelasting van internet misschien worden beperkt. Als de updatepayload niet beschikbaar is via het LAN, gaat het apparaat over tot downloaden via een updateserver.
       Als je dit beleid instelt op False, wordt P2P niet gebruikt.
@@ -7852,6 +7945,7 @@
 
       Dit beleid is een tijdelijke maatregel en wordt verwijderd in toekomstige versies van <ph name="PRODUCT_NAME" />. Na verwijdering van het beleid kan <ph name="PRODUCT_NAME" /> altijd zoekopdrachten voor aanvullende DNS-typen uitvoeren.</translation>
 <translation id="9167719789236691545">Drive in de app Bestanden van <ph name="PRODUCT_OS_NAME" /> uitzetten</translation>
+<translation id="9180108183162961002">Toestaan dat gebruikers als gast inloggen bij de browser</translation>
 <translation id="9187743794267626640">Koppeling van externe opslag uitzetten</translation>
 <translation id="9190456586252617675">Met dit beleid wordt de modus voor introductie van de Assistent beheerd.
 
@@ -7864,6 +7958,7 @@
 <translation id="9200828125069750521">Parameters voor afbeeldings-URL die POST gebruikt</translation>
 <translation id="9204863016826119209">Zakelijke sleutels kunnen worden gebruikt door Android-apps die zijn geïnstalleerd en in dit beleid worden vermeld.</translation>
 <translation id="9207596996305971030">Inlog-/uitloggebeurtenissen niet rapporteren</translation>
+<translation id="9210647066889383361">Toestaan dat gebruikers inloggen op hun apparaat met Smart Lock</translation>
 <translation id="9213751049772256263">Alle varianten uitzetten</translation>
 <translation id="9217154963008402249">Frequentie van netwerkpakketten voor bijhouden</translation>
 <translation id="9220314833408124365">'no-referrer-when-downgrade' gebruiken als standaardbeleid voor verwijzende URL's</translation>
@@ -7912,6 +8007,7 @@
 <translation id="966425658642788645">Standaardgedrag toepassen</translation>
 <translation id="971677226939413180">Optie 'Afdrukken als afbeelding' niet beschikbaar voor gebruikersselectie.</translation>
 <translation id="974349541138387272">URI-template van gewenste DNS-over-HTTPS-resolver opgeven</translation>
+<translation id="978658824596356870">24-uurs klok</translation>
 <translation id="979467274961593903">Het gebruik van foutopsporing op afstand niet toestaan</translation>
 <translation id="980218166381006412">Als je het beleid toepast, staat de achtergrondmodus aan. In de achtergrondmodus wordt een <ph name="PRODUCT_NAME" />-proces gestart bij het inloggen bij het OS. Dit proces blijft actief als het laatste browservenster wordt gesloten, waardoor achtergrond-apps en de browsersessie actief kunnen blijven. Voor het achtergrondproces wordt een icoon getoond in het systeemvak, waarmee het proces altijd kan worden gesloten.
 
diff --git a/components/policy/resources/policy_templates_th.xtb b/components/policy/resources/policy_templates_th.xtb
index 486beaa4..1f1b0c8 100644
--- a/components/policy/resources/policy_templates_th.xtb
+++ b/components/policy/resources/policy_templates_th.xtb
@@ -52,6 +52,7 @@
 
       การไม่ตั้งค่านโยบายจะทำให้ผู้ใช้ที่มีการจัดการไม่สามารถใช้ฟีเจอร์นี้ได้โดยค่าเริ่มต้น แต่ผู้ใช้อื่นๆ จะใช้ได้</translation>
 <translation id="1035860095382451169">เปิดใช้ไอคอนแม่กุญแจในแถบอเนกประสงค์สำหรับการเชื่อมต่อที่ปลอดภัย</translation>
+<translation id="1037470927044831850">อนุญาตให้เว็บไซต์แจ้งให้ผู้ใช้แชร์สตรีมวิดีโอของหน้าจอ</translation>
 <translation id="1040125341954178855">เราได้นำฟีเจอร์นี้ออกจาก Chrome 100 แล้ว
 
       การตั้งค่านโยบายนี้เป็น "เปิดใช้" จะทำให้มีการแนะนำแอปที่ผู้ใช้เคยติดตั้งไว้ในอุปกรณ์อื่น การแนะนำเหล่านี้จะปรากฏใน Launcher หลังจากการแนะนำแอปในเครื่อง หากไม่มีการป้อนข้อความค้นหา
@@ -102,6 +103,7 @@
       Device Attributes API เป็นรายการเว็บ API โปรดดูที่ https://wicg.github.io/WebApiDevice/device_attributes API เหล่านี้ใช้ได้เฉพาะกับต้นทางที่สอดคล้องกับเว็บแอปพลิเคชันที่บังคับติดตั้งแล้วผ่าน <ph name="WEB_APP_INSTALL_FORCE_LIST_POLICY_NAME" /> หรือต้นทางที่กำหนดค่าในเซสชันคีออสก์</translation>
 <translation id="1079801999187584280">ไม่อนุญาตการใช้เครื่องมือสำหรับนักพัฒนาซอฟต์แวร์</translation>
 <translation id="1082802595100075771">ให้ผู้ใช้เลือกที่จะใช้บริการของ Google แบบไม่ระบุตัวตนเพื่อให้คำอธิบายอัตโนมัติสำหรับรูปภาพที่ไม่มีป้ายกำกับ</translation>
+<translation id="1087057100912843460">อนุญาตให้มีการอัปเดต</translation>
 <translation id="1087437665304381368">นโยบายนี้ควบคุมโหมดนักพัฒนาซอฟต์แวร์ของ <ph name="PRODUCT_OS_NAME" /> เท่านั้น หากคุณต้องการป้องกันการเข้าถึงตัวเลือกสำหรับนักพัฒนาแอป Android ก็จะต้องตั้งค่านโยบาย <ph name="DEVELOPER_TOOLS_DISABLED_POLICY_NAME" /></translation>
 <translation id="1087707496788636333">เรากำลังย้ายรายการนโยบายของ Chrome Enterprise โปรดอัปเดตบุ๊กมาร์กเป็น <ph name="POLICY_DOCUMENTATION_URL" /></translation>
 <translation id="1089150222292592899">ป้อนชื่อผู้ใช้อัตโนมัติในหน้า SAML IdP</translation>
@@ -265,6 +267,7 @@
       นโยบายนี้ไม่มีผลกับผู้ใช้คีออสก์
 
       คำเตือน: Wipe และ MinimalMigrate จะนำข้อมูลในเครื่องออก</translation>
+<translation id="1248955696540150266">อนุญาตให้ดาวน์โหลดการอัปเดตแบบเพียร์ทูเพียร์โดยอัตโนมัติ</translation>
 <translation id="1250597158212586309">การตั้งค่านโยบายเป็น "เปิดใช้" หรือไม่ตั้งค่าจะทำให้ผู้ใช้มีตัวเลือกในการปิด/คืนค่าการแจ้งเตือนรหัสผ่านที่ถูกละเมิด
 
       หากปิดใช้การตั้งค่านี้ ผู้ใช้จะไม่สามารถปิดการแจ้งเตือนเกี่ยวกับรหัสผ่านที่ถูกละเมิด หากเปิดใช้ ผู้ใช้จะปิดการแจ้งเตือนเกี่ยวกับรหัสผ่านที่ถูกละเมิดได้</translation>
@@ -274,6 +277,7 @@
 
       การไม่ตั้งค่านโยบายหรือหากค่าหลังการแทนที่ไม่ใช่ชื่อโฮสต์ที่ถูกต้อง ก็จะไม่มีการกำหนดชื่อโฮสต์ในคำขอ DHCP</translation>
 <translation id="1257550411839719984">ตั้งค่าไดเรกทอรีเริ่มต้นสำหรับดาวน์โหลด</translation>
+<translation id="1262993197422487260">ไม่แสดงปุ่ม "แสดงรหัสผ่าน" ในหน้าจอเข้าสู่ระบบและหน้าจอล็อก</translation>
 <translation id="1265053460044691532">จำกัดเวลาที่ผู้ใช้ซึ่งตรวจสอบสิทธิ์ผ่าน SAML สามารถเข้าสู่ระบบในแบบออฟไลน์</translation>
 <translation id="1271811620059192171">เปิดใช้นโยบายที่มาจากกลุ่มขนาดเล็ก</translation>
 <translation id="127264587838521316">เปิดใช้คำขอติดตั้งส่วนขยายของ <ph name="PRODUCT_NAME" /></translation>
@@ -327,6 +331,7 @@
 
       หากเลือก "บังคับใช้" (2) ไว้ ผู้ใช้จะระงับการใช้เครื่องมือเลือกโปรไฟล์ไม่ได้ เครื่องมือเลือกโปรไฟล์จะแสดงแม้ว่าจะมีให้เลือกเพียงโปรโฟล์เดียวเท่านั้น</translation>
 <translation id="1339174690935954950">ป้องกันไม่ให้ผู้ใช้ส่งความคิดเห็น</translation>
+<translation id="1340053691042184658">ป้องกันไม่ให้เข้าสู่ระบบเบราว์เซอร์ในโหมดผู้มาเยือน</translation>
 <translation id="1342918903685430097">กำหนดค่าเวอร์ชัน <ph name="PRODUCT_OS_NAME" /> ขั้นต่ำที่อุปกรณ์จะใช้ได้</translation>
 <translation id="1343128241903870688">ปิดใช้การรายงานข้อมูลแอปของอุปกรณ์</translation>
 <translation id="1347198119056266798">นโยบายนี้เลิกใช้งานไปแล้ว โปรดใช้ <ph name="FORCE_GOOGLE_SAFE_SEARCH_POLICY_NAME" /> และ <ph name="FORCE_YOUTUBE_RESTRICT_POLICY_NAME" /> แทน ระบบจะไม่สนใจนโยบายนี้หากมีการตั้งค่านโยบาย <ph name="FORCE_GOOGLE_SAFE_SEARCH_POLICY_NAME" />, <ph name="FORCE_YOUTUBE_RESTRICT_POLICY_NAME" /> หรือ <ph name="FORCE_YOUTUBE_SAFETY_MODE_POLICY_NAME" /> (เลิกใช้งานแล้ว)
@@ -497,10 +502,12 @@
 
       หมายเหตุ: คั่นชื่อเซิร์ฟเวอร์หลายรายการด้วยเครื่องหมายจุลภาค ใช้ไวลด์การ์ด (<ph name="WILDCARD_VALUE" />) ได้</translation>
 <translation id="1488724823347505879">เปิดใช้การแชร์จากแอป Android ไปยังเว็บแอป</translation>
+<translation id="1494138678487405397">ปิดใช้คอนทราสต์สูงในหน้าจอการเข้าสู่ระบบ</translation>
 <translation id="1502843533062797703">เปิดใช้การบล็อกการแทรกซอฟต์แวร์ของบุคคลที่สาม</translation>
 <translation id="1503969899251962413">การตั้งค่านโยบายจะระบุรหัสสัญญาอนุญาต <ph name="PLUGIN_VM_NAME" /> สำหรับอุปกรณ์นี้
 
       เรานำนโยบายนี้ออกไปแล้วในเวอร์ชัน M94</translation>
+<translation id="1507373253059695424">เปิดใช้หน้าจอความเป็นส่วนตัวในหน้าจอลงชื่อเข้าใช้เสมอ</translation>
 <translation id="150857982247452081">ให้คุณกำหนดรายการโปรโตคอล และรายการที่เชื่อมโยงของรูปแบบต้นทางที่อนุญาตสำหรับแต่ละโปรโตคอล ซึ่งเปิดแอปพลิเคชันภายนอกได้โดยไม่ต้องแจ้งผู้ใช้ ไม่ควรใส่ตัวคั่นข้างหลังเมื่อระบุโปรโตคอล เช่น ให้ใช้ "skype" แทน "skype:" หรือ "skype://"
 
       หากตั้งค่านโยบายนี้ ระบบจะอนุญาตให้โปรโตคอลเปิดแอปพลิเคชันภายนอกโดยไม่มีข้อความแจ้งจากนโยบาย ในกรณีที่มีการระบุโปรโตคอลดังกล่าวไว้ และต้นทางของเว็บไซต์ที่พยายามเปิดใช้งานโปรโตคอลตรงกับต้นทางรูปแบบใดรูปแบบหนึ่งในรายการ allowed_origins ของโปรโตคอลนั้น หากเงื่อนไขข้อใดข้อหนึ่งเป็น "เท็จ" นโยบายจะไม่ละเว้นข้อความแจ้งการเปิดใช้งานโปรโตคอลภายนอก
@@ -673,6 +680,7 @@
           หากตั้งค่านโยบายนี้ ผู้ใช้จะเปลี่ยนหรือลบล้างไม่ได้
 
           หากไม่ได้ตั้งค่านโยบายนี้ ระบบจะปิดใช้ฟีเจอร์เขียนตามคำบอกในหน้าจอการเข้าสู่ระบบในขั้นต้น แต่ผู้ใช้จะเปิดใช้ได้ทุกเมื่อ</translation>
+<translation id="1673097259557436886">แจ้งเว็บไซต์เสมอหากไม่มีวิธีการชำระเงินที่บันทึกไว้</translation>
 <translation id="1674287836076801014">SAML</translation>
 <translation id="1675002386741412210">ได้รับการสนับสนุนบน:</translation>
 <translation id="167514072300004091">การตั้งค่านโยบายเป็น 3 จะให้เว็บไซต์ขอสิทธิ์เข้าถึงอุปกรณ์ USB ที่เชื่อมต่อได้ การตั้งค่านโยบายเป็น 2 จะปฏิเสธสิทธิ์เข้าถึงอุปกรณ์ USB ที่เชื่อมต่อ
@@ -718,6 +726,7 @@
 <translation id="1700811900332333712">อนุญาตให้อุปกรณ์ขอทำ Powerwash</translation>
 <translation id="1708496595873025510">ตั้งค่าข้อจำกัดการเรียกเมล็ดรูปแบบ</translation>
 <translation id="1709154322133526432">เปิดใช้การตรวจสอบเบราว์เซอร์เริ่มต้นเมื่อเริ่มต้นระบบ</translation>
+<translation id="1710245398478550276">เปิดใช้ Desk API สำหรับรายการโดเมนของบุคคลที่สาม</translation>
 <translation id="1713829924716792485">การตั้งค่านโยบายเป็น "เปิดใช้" หรือไม่ตั้งค่าจะทำให้ผู้ใช้เชื่อมต่อกับโฮสต์การเข้าถึงระยะไกลเพื่อโอนไฟล์ระหว่างไคลเอ็นต์และโฮสต์ได้ นโยบายนี้ไม่มีผลกับการเชื่อมต่อความช่วยเหลือระยะไกล ซึ่งไม่รองรับการโอนไฟล์
 
       การตั้งค่านโยบายเป็น "ปิดใช้" จะทำให้โอนไฟล์ไม่ได้</translation>
@@ -748,6 +757,7 @@
 
       ดูข้อมูลโดยละเอียดเกี่ยวกับรูปแบบ <ph name="URL_LABEL" /> ที่ถูกต้องได้ที่ https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns <ph name="WILDCARD_VALUE" /> ไม่ใช่ค่าที่ยอมรับสำหรับนโยบายนี้</translation>
 <translation id="1736269219679256369">อนุญาตให้ดำเนินการจากหน้าคำเตือน SSL</translation>
+<translation id="1744340218280697033">ไม่อนุญาตให้ผู้ปกครองเพิ่มบัญชีที่มีการควบคุมดูแล</translation>
 <translation id="1751429117283165017">การตั้งค่านโยบายจะให้คุณสร้างรายการรูปแบบ URL ซึ่งระบุเว็บไซต์ที่ไม่สามารถขอให้ผู้ใช้ให้สิทธิ์การเข้าถึงในการอ่านไฟล์หรือไดเรกทอรีในระบบไฟล์ของระบบปฏิบัติการของโฮสต์ผ่าน File System API ได้
 
       การไม่ตั้งค่านโยบายหมายความว่า <ph name="DEFAULT_FILE_SYSTEM_WRITE_GUARD_SETTING_POLICY_NAME" /> จะมีผลกับทุกเว็บไซต์ (หากตั้งค่าไว้) แต่หากไม่ได้ตั้งค่าไว้ การตั้งค่าส่วนตัวของผู้ใช้จะมีผล
@@ -765,6 +775,7 @@
 
        หมายเหตุ: ดูตัวอย่างโดยละเอียดเพิ่มเติมได้ที่ The Chromium Projects ( https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett )</translation>
 <translation id="1767673020408652620">เปิดใช้แอปแนะนำในสถานะค่าเป็นศูนย์ของช่องค้นหา</translation>
+<translation id="1770071413238151235">รูปแบบนาฬิการะบบ 12 ชั่วโมง</translation>
 <translation id="1780323582106687813">นโยบายนี้เลิกใช้งานไปแล้ว โปรดใช้นโยบาย "<ph name="EXTENSION_INSTALL_ALLOWLIST_POLICY_NAME" />" แทน
 
       การตั้งค่านโยบายนี้จะระบุส่วนขยายที่ได้รับการยกเว้นจากรายการส่วนขยายที่ห้ามไว้ ใช้ค่า <ph name="ALL_EXTENSIONS" /> กับ <ph name="EXTENSION_INSTALL_BLACKLIST_POLICY_NAME" /> เพื่อห้ามส่วนขยายทั้งหมด และผู้ใช้จะติดตั้งได้เฉพาะส่วนขยายที่อนุญาตไว้อย่างชัดแจ้งเท่านั้น ส่วนขยายทั้งหมดได้รับอนุญาตโดยค่าเริ่มต้น แต่ถ้าคุณห้ามส่วนขยายด้วยนโยบาย ให้ใช้รายการส่วนขยายที่อนุญาตเพื่อเปลี่ยนแปลงนโยบายนั้น</translation>
@@ -808,6 +819,7 @@
           </translation>
 <translation id="1808715480127969042">ปิดกั้นคุกกี้บนไซต์เหล่านี้</translation>
 <translation id="1810261428246410396">อนุญาตให้ใช้การเชื่อมต่ออินเทอร์เน็ตผ่านมือถือแบบด่วน</translation>
+<translation id="1813638828646876133">เปิดใช้การส่ง PIN อัตโนมัติในหน้าจอล็อกและหน้าจอเข้าสู่ระบบ</translation>
 <translation id="1813672770917912317">ให้คุณกำหนดว่า <ph name="PRODUCT_NAME" /> จะเรียกใช้เครื่องมือ V8 JavaScript ที่เปิดใช้คอมไพเลอร์ JIT (Just In Time) หรือไม่
 
           การปิดใช้ JIT ใน JavaScript อาจทำให้ <ph name="PRODUCT_NAME" /> แสดงเนื้อหาเว็บช้าลงและปิดใช้ส่วนต่างๆ ของ JavaScript รวมถึง WebAssembly การปิดใช้ JIT ใน JavaScript อาจช่วยให้ <ph name="PRODUCT_NAME" /> แสดงเนื้อหาเว็บในการกำหนดค่าที่ปลอดภัยขึ้น
@@ -908,6 +920,7 @@
 
       การไม่ตั้งค่านโยบายจะปิดการตรวจสอบสิทธิ์ <ph name="HTTP_NEGOTIATE" /> ใน Android</translation>
 <translation id="1925529914257504750">P2P สำหรับการอัปเดตอัตโนมัติเปิดใช้อยู่</translation>
+<translation id="1928355425032308464">เปิดใช้งานอินพุตวิดีโอ</translation>
 <translation id="1930127294345368978">จำนวนแผ่นงานสูงสุดที่อนุญาตให้ใช้สำหรับงานพิมพ์ 1 งาน</translation>
 <translation id="193259052151668190">รายการที่อนุญาตพิเศษของอุปกรณ์ USB ที่ถอดได้</translation>
 <translation id="1933378685401357864">รูปภาพวอลเปเปอร์</translation>
@@ -919,6 +932,7 @@
       ทั้งนี้ นโยบายระดับองค์กรนี้จะไม่มีผลก่อนการเปิดตัวดังกล่าว หลังจากการเปิดตัว เมื่อเปิดใช้นโยบายระดับองค์กรนี้ นโยบาย URL ที่มาตามค่าเริ่มต้นของ Chrome จะตั้งค่าเป็น "ไม่มี URL ที่มาเมื่อดาวน์เกรด" ซึ่งเป็นค่าของรุ่นก่อนหน้า
 
       นโยบายระดับองค์กรนี้จะปิดใช้โดยค่าเริ่มต้น</translation>
+<translation id="1947848925128084608">ปิดใช้คอนทราสต์สูงในหน้าจอการเข้าสู่ระบบและอนุญาตให้ผู้ใช้เปิดใช้ชั่วคราว</translation>
 <translation id="1949584741547056205">คำตอบด่วน</translation>
 <translation id="1951288262199783797">คุณสามารถเปิดใช้นโยบายนี้เพื่อสร้างพจนานุกรมนามสกุลของไฟล์โดยใช้รายชื่อโดเมนที่เกี่ยวข้อง ซึ่งจะได้รับการยกเว้นในคำเตือนการดาวน์โหลดตามนามสกุลของไฟล์ วิธีนี้ช่วยให้ผู้ดูแลระบบขององค์กรบล็อกคำเตือนการดาวน์โหลดตามนามสกุลของไฟล์สำหรับไฟล์ที่เชื่อมโยงกับโดเมนที่ระบุไว้ได้ ตัวอย่างเช่น หากนามสกุล "jnlp" เชื่อมโยงกับ "website1.com" ผู้ใช้จะไม่เห็นคำเตือนเมื่อดาวน์โหลดไฟล์ "jnlp" จาก "website1.com" แต่จะเห็นคำเตือนการดาวน์โหลดเมื่อดาวน์โหลดไฟล์ "jnlp" จาก "website2.com"
 
@@ -944,6 +958,7 @@
       โปรดทราบว่าแม้ตัวอย่างข้างต้นจะแสดงการระงับคำเตือนการดาวน์โหลดตามนามสกุลของไฟล์ "swf" จากทุกโดเมน แต่ก็ไม่แนะนำให้ใช้การระงับคำเตือนเช่นนี้กับทุกโดเมนสำหรับนามสกุลของไฟล์ที่เป็นอันตรายเนื่องจากข้อกังวลด้านความปลอดภัย ตัวอย่างดังกล่าวเป็นเพียงการสาธิตความสามารถในการระงับคำเตือนเท่านั้น
 
       หากเปิดใช้นโยบายนี้ควบคู่กับ <ph name="DOWNLOAD_RESTRICTIONS_POLICY_NAME" /> และตั้งค่า DownloadRestrictions ให้บล็อกประเภทไฟล์ที่เป็นอันตราย การบล็อกการดาวน์โหลดที่กำหนดโดย DownloadRestrictions จะมีผลบังคับเหนือกว่า ตัวอย่างเช่น หากตั้งค่านโยบายนี้เป็นอนุญาตการดาวน์โหลดไฟล์นามสกุล "exe" จาก "website1.com" และตั้งค่า DownloadRestrictions ให้บล็อกการดาวน์โหลดและประเภทไฟล์ที่เป็นอันตราย การดาวน์โหลดไฟล์นามสกุล "exe" ก็จะยังถูกบล็อกอยู่ในทุกโดเมน หากไม่ได้ตั้งค่า DownloadRestrictions ให้บล็อกประเภทไฟล์ที่เป็นอันตราย ประเภทไฟล์ที่ระบุไว้ในนโยบายนี้จะได้รับการยกเว้นในคำเตือนการดาวน์โหลดตามนามสกุลของไฟล์จากโดเมนที่ระบุ อ่านเพิ่มเติมเกี่ยวกับ DownloadRestrictions (https://chromeenterprise.google/policies/?policy=DownloadRestrictions)</translation>
+<translation id="1954612656043024615">เปิดใช้ฟีเจอร์คลิปบอร์ดที่แชร์</translation>
 <translation id="1960416154405676350">เปิดใช้การค้นหาภูมิภาคของ <ph name="GOOGLE_LENS_PRODUCT_NAME" /></translation>
 <translation id="1961091374249454164">นโยบายนี้ใช้กับเซสชันผู้เยี่ยมชมที่มีการจัดการเท่านั้น
       การตั้งค่านโยบายจะเป็นการระบุรายการรหัสส่วนขยายที่ได้รับการยกเว้นจากขั้นตอนการล้างข้อมูลเซสชันผู้เยี่ยมชมที่มีการจัดการแบบจำกัด (ดู <ph name="DEVICE_RESTRICTED_MANAGED_GUEST_SESSION_ENABLED_POLICY_NAME" />)
@@ -991,6 +1006,7 @@
       หากตั้งค่านโยบายเป็น "เท็จ" หรือไม่ได้ตั้งค่า จะไม่มีการรายงานข้อมูล
       หากตั้งค่านโยบายเป็น "จริง" จะมีการรายงานข้อมูลเขตเวลาของอุปกรณ์ที่ตั้งไว้ในปัจจุบัน</translation>
 <translation id="199764499252435679">เปิดใช้การอัปเดตคอมโพเนนต์ใน <ph name="PRODUCT_NAME" /></translation>
+<translation id="1997943707974344423">อนุญาตให้ใช้ Smart Lock</translation>
 <translation id="1998504583649140526">การตั้งค่าคำขอเครือข่ายส่วนตัว</translation>
 <translation id="1999000620918508488">บังคับให้หน้าจอลงชื่อเข้าใช้แสดงหรือซ่อนข้อมูลของระบบ</translation>
 <translation id="1999942889260716089">การตั้งค่านโยบายเป็น "จริง" จะเปิดการแนะนำการค้นหาในแถบที่อยู่ของ <ph name="PRODUCT_NAME" /> การตั้งค่านโยบายเป็น "เท็จ" จะปิดการแนะนำการค้นหาเหล่านี้
@@ -1009,7 +1025,9 @@
 <translation id="2004382785802837840">ปิดใช้การปิดการแจ้งเตือนรหัสผ่านที่ถูกละเมิด</translation>
 <translation id="2005506794355327448">การดำเนินการที่จะทำเมื่อปิดฝา</translation>
 <translation id="2006530844219044261">การจัดการพลังงาน</translation>
+<translation id="2006954055163088863">ถือว่าผู้ใช้ไม่มีการใช้งานขณะเล่นวิดีโอ</translation>
 <translation id="2008514891623783266">นโยบายการจัดการ IP ของ WebRTC</translation>
+<translation id="2012296492055302633">เปิดใช้หน้าจอความเป็นส่วนตัวเสมอ</translation>
 <translation id="2013285471046373727">ระบุวิธีที่ติดตั้งแอป OPTIONAL: แอปไม่ได้ติดตั้งโดยอัตโนมัติ แต่ผู้ใช้จะติดตั้งเองได้ โดยจะเป็นค่าเริ่มต้นหากไม่ได้ตั้งค่านโยบายนี้ PRELOAD: แอปจะติดตั้งโดยอัตโนมัติ แต่ผู้ใช้จะถอนการติดตั้งได้ FORCE_INSTALLED: แอปจะติดตั้งโดยอัตโนมัติ และผู้ใช้จะถอนการติดตั้งไม่ได้ BLOCKED: แอปถูกบล็อกและติดตั้งไม่ได้ หากแอปถูกติดตั้งเพราะนโยบายก่อนหน้านี้ระบุไว้ แอปจะถูกถอนการติดตั้ง</translation>
 <translation id="2014757022750736514">ควบคุมลักษณะการทำงานของหน้าจอลงชื่อเข้าใช้ที่ผู้ใช้ลงชื่อเข้าสู่ระบบบัญชี การตั้งค่ารวมไปถึงผู้ที่ลงชื่อเข้าสู่ระบบได้ ประเภทบัญชีที่อนุญาต วิธีการตรวจสอบสิทธิ์ที่ควรใช้ ตลอดจนการช่วยเหลือพิเศษทั่วไป วิธีการป้อนข้อมูล และการตั้งค่าภาษา</translation>
 <translation id="201557587962247231">ความถี่ในการอัปโหลดรายงานสถานะของอุปกรณ์</translation>
@@ -1052,6 +1070,7 @@
 <translation id="2057317273526988987">อนุญาตให้เข้าถึงรายการ URL</translation>
 <translation id="2058055310819710697">เปิดใช้โหมดนักพัฒนาซอฟต์แวร์สำหรับแอปที่แยกไว้</translation>
 <translation id="205807990145127714">ข้อมูลการวัดและส่งข้อมูลทางไกลที่จะรายงานในเหตุการณ์ความแรงสัญญาณ</translation>
+<translation id="2060153898336610735">อัตโนมัติโดยอิงตามภาษาในปัจจุบัน</translation>
 <translation id="2061123930713023976">อนุญาตการแก้ไขข้อบกพร่องด้วยการบันทึกแพ็กเก็ตเครือข่าย</translation>
 <translation id="2061810934846663491">กำหนดค่าชื่อโดเมนที่จำเป็นสำหรับโฮสต์การเข้าถึงระยะไกล</translation>
 <translation id="2062632109797189011">เปิดใช้ window.webkitStorageInfo API ที่เลิกใช้งานแล้วอีกครั้ง</translation>
@@ -1083,6 +1102,7 @@
 <translation id="209586405398070749">เวอร์ชันเสถียร</translation>
 <translation id="2096932573113293941">ขอสิทธิ์เรียกใช้ปลั๊กอินที่ต้องมีการให้สิทธิ์จากผู้ใช้</translation>
 <translation id="2098658257603918882">เปิดใช้งานการรายงานการใช้และข้อมูลเกี่ยวกับการขัดข้อง</translation>
+<translation id="2099380339157427935">ไม่แสดงปุ่มออกจากระบบในถาดระบบ</translation>
 <translation id="2104418465060359056">รายงานข้อมูลเกี่ยวกับส่วนขยายและปลั๊กอิน</translation>
 <translation id="2106627642643925514">ลบล้างโหมดการพิมพ์ด้วย PIN ที่เป็นค่าเริ่มต้น หากโหมดนี้ไม่พร้อมใช้งาน ระบบจะไม่สนใจนโยบายนี้</translation>
 <translation id="2107563874993284076">การตั้งค่านโยบายนี้เป็น "เปิดใช้" ช่วยให้ผู้ใช้ใช้พื้นที่แชร์ไฟล์ของเครือข่ายสำหรับ <ph name="PRODUCT_NAME" /> ได้ การตั้งค่านโยบายเป็น "ปิดใช้" จะทำให้ผู้ใช้ใช้ฟีเจอร์นี้ไม่ได้</translation>
@@ -1116,6 +1136,7 @@
 <translation id="2135335181634291106">หาก <ph name="DEFAULT_SEARCH_PROVIDER_ENABLED_POLICY_NAME" /> เปิดอยู่ การตั้งค่า <ph name="DEFAULT_SEARCH_PROVIDER_ICON_URL_POLICY_NAME" /> จะระบุ URL ของไอคอนรายการโปรดของผู้ให้บริการค้นหาที่เป็นค่าเริ่มต้น
 
       การไม่ตั้งค่า <ph name="DEFAULT_SEARCH_PROVIDER_ICON_URL_POLICY_NAME" /> จะทำให้ไม่มีไอคอนสำหรับผู้ให้บริการค้นหารายนั้น</translation>
+<translation id="2144236546337326489">อนุญาตให้มีการเปิดใช้การทำงานอย่างต่อเนื่องในฮับโทรศัพท์</translation>
 <translation id="2145735238144543545">ต้องมีใบรับรองไคลเอ็นต์</translation>
 <translation id="2146103669166779785">ระบบจะใช้สีแบบเลขฐานสิบหกเพื่อสร้างธีมและนำไปใช้กับเบราว์เซอร์</translation>
 <translation id="2148769554831004951">บังคับให้ WebSQL เปิดใช้งาน</translation>
@@ -1142,6 +1163,7 @@
       หากตั้งค่านโยบายนี้ เบราว์เซอร์จะเริ่มทิ้งแท็บเพื่อประหยัดหน่วยความจำเมื่อการใช้หน่วยความจำเกินขีดจำกัดแล้ว อย่างไรก็ตาม ไม่มีการรับประกันว่าเบราว์เซอร์จะทำงานตลอดเวลาแม้ว่าจะยังไม่เกินขีดจำกัดก็ตาม ทุกค่าที่ต่ำกว่า 1024 จะปัดเป็น 1024
 
       หากไม่ได้ตั้งค่านโยบายนี้ เบราว์เซอร์จะเริ่มพยายามประหยัดหน่วยความจำก็ต่อเมื่อตรวจพบว่าหน่วยความจำจริงของเครื่องเหลือน้อย</translation>
+<translation id="2161348910646846717">อนุญาตให้ผู้ใช้เปลี่ยนเวอร์ชันการเผยแพร่</translation>
 <translation id="2165567959657265531">คุกกี้ที่ตั้งค่าสำหรับโดเมนที่ตรงกับรูปแบบเหล่านี้จะเปลี่ยนกลับเป็นลักษณะการทำงาน <ph name="ATTRIBUTE_SAMESITE_NAME" /> เดิม การเปลี่ยนกลับไปใช้ลักษณะการทำงานเดิมทำให้คุกกี้ที่ไม่ได้ระบุแอตทริบิวต์ <ph name="ATTRIBUTE_SAMESITE_NAME" /> ได้รับการดำเนินการเหมือนกับเป็น "<ph name="ATTRIBUTE_VALUE_SAMESITE_NONE" />", นำข้อกำหนดที่คุกกี้ "<ph name="ATTRIBUTE_VALUE_SAMESITE_NONE" />" ต้องมีแอตทริบิวต์ "<ph name="ATTRIBUTE_SECURE_NAME" />" ออกไป และข้ามการเปรียบเทียบสกีมเมื่อประเมินว่าเว็บไซต์ 2 แห่งเป็นเว็บไซต์เดียวกันหรือไม่ ดูคำอธิบายแบบเต็มใน https://www.chromium.org/administrators/policy-list-3/cookie-legacy-samesite-policies
 
           สำหรับคุกกี้ในโดเมนที่ไม่อยู่ในรูปแบบที่ระบุไว้ที่นี่ หรือสำหรับคุกกี้ทั้งหมดในกรณีที่ไม่ได้ตั้งค่านโยบายนี้ไว้ ค่าเริ่มต้นส่วนกลางจะเป็นการกำหนดค่าส่วนตัวของผู้ใช้
@@ -1167,6 +1189,7 @@
 <translation id="2171952274731262470">การหน่วงเวลาและการดำเนินการที่จะทำเมื่อไม่มีการใช้งานอุปกรณ์ขณะใช้แบตเตอรี่</translation>
 <translation id="2175353308236295184">ออบเจ็กต์การกำหนดค่า JSON ที่เจาะจงแอปที่มีชุดคู่คีย์-ค่า เช่น '"managedConfiguration": { "key1": value1, "key2": value2 }' คีย์จะกำหนดไว้ในไฟล์ Manifest ของแอป</translation>
 <translation id="2176115444876446233">ป้องกันไม่ให้ผู้ใช้รวบรวมการติดตามประสิทธิภาพทั้งระบบ</translation>
+<translation id="2177696016354404697">ปิดใช้หน้าจอความเป็นส่วนตัวเสมอ</translation>
 <translation id="2178899310296064282">บังคับใช้โหมดที่จำกัดปานกลางใน YouTube เป็นอย่างน้อย</translation>
 <translation id="2180958780733364832">ควบคุมการใช้โหมดไม่มีส่วนหัว</translation>
 <translation id="2182291258410176649">ผู้ใช้ตัดสินใจว่าจะเปิดใช้การสำรองข้อมูลและการกู้คืนหรือไม่</translation>
@@ -1273,6 +1296,8 @@
       ผู้ใช้จะเปลี่ยนหรือลบล้างการตั้งค่านี้ไม่ได้
 
       หมายเหตุ: นโยบายนี้ส่งผลให้ต้องเติมส่วนหัว X-GoogApps-Allowed-Domains ในคำขอ HTTP และ HTTPS ทั้งหมดที่ส่งไปยังโดเมน google.com ทั้งหมดตามที่อธิบายไว้ใน https://support.google.com/a/answer/1668854</translation>
+<translation id="2282174652047982960">ใช้ไคลเอ็นต์ DNS ในตัวเสมอ หากมี</translation>
+<translation id="2288506601233091655">ไม่อนุญาตให้ลบประวัติงานพิมพ์</translation>
 <translation id="2289265947759479962">นโยบายนี้ควบคุมว่าจะรายงานข้อมูลเวอร์ชันหรือไม่ เช่น เวอร์ชันระบบปฏิบัติการ แพลตฟอร์มระบบปฏิบัติการ สถาปัตยกรรมระบบปฏิบัติการ เวอร์ชันของ <ph name="PRODUCT_NAME" /> และช่องของ <ph name="PRODUCT_NAME" />
 
       เมื่อไม่ได้ตั้งค่านโยบาย <ph name="CLOUD_REPORTING_ENABLED_POLICY_NAME" /> หรือตั้งค่าเป็นปิดใช้ นโยบายนี้จะไม่มีผล
@@ -1307,8 +1332,10 @@
       หมายเหตุ: สำหรับ Android ให้ใช้นโยบาย <ph name="SITE_PER_PROCESS_ANDROID_POLICY_NAME" /> แทน</translation>
 <translation id="2306505001667207184">แสดงข้อความแจ้งให้ผู้ใช้เลือกใบรับรองไคลเอ็นต์เมื่อนโยบายการเลือกอัตโนมัติพบใบรับรองที่ตรงกันหลายรายการ</translation>
 <translation id="2307496301287881990">รายงานสถานะการแสดงผลและกราฟิก</translation>
+<translation id="2309284543927494965">บล็อกการอัปเดต</translation>
 <translation id="2309341709647905294">ไม่ต้องรายงานข้อมูลเกี่ยวกับอุปกรณ์ต่อพ่วงที่เสียบเข้ากับอุปกรณ์</translation>
 <translation id="2309390639296060546">การตั้งค่าตำแหน่งทางภูมิศาสตร์เริ่มต้น</translation>
+<translation id="2318583605563438459">อนุญาตให้ผู้ปกครองเพิ่มบัญชีที่มีการควบคุมดูแล</translation>
 <translation id="2331354174913096226">เทมเพลต URI ของรีโซลเวอร์ DNS-over-HTTPS ที่ต้องการ วิธีระบุรีโซลเวอร์ DNS-over-HTTPS หลายรายการคือเว้นวรรคระหว่างเทมเพลต URI ที่เกี่ยวข้อง
 
       หากตั้งค่า DnsOverHttpsMode เป็น <ph name="SECURE_DNS_MODE_SECURE" /> ก็ต้องตั้งค่านโยบายนี้และนโยบายต้องไม่ว่างเปล่า
@@ -1350,6 +1377,7 @@
       การรองรับการตั้งค่านโยบายนี้เป็น "tls1" หรือ "tls1.1" ถูกนำออกในเวอร์ชัน 91 ไม่รองรับการซ่อนคำเตือน TLS 1.0/1.1 อีกต่อไป</translation>
 <translation id="2364639863953745682">โหมดของการเริ่มต้นใช้งาน Assistant</translation>
 <translation id="2366301887862414321">อนุญาตทั้งโฮสต์การรับส่งข้อความดั้งเดิมระดับผู้ใช้และระดับระบบ</translation>
+<translation id="2376134474855349829">ปิดใช้แป้นพิมพ์บนหน้าจอในหน้าจอการเข้าสู่ระบบและอนุญาตให้ผู้ใช้เปิดใช้ชั่วคราว</translation>
 <translation id="2382672620906337383">ระบบจะไม่บีบ setTimeout() ของ JavaScript จนกว่าเกณฑ์ที่ซ้อนอยู่จะสูงขึ้น</translation>
 <translation id="2384233438419344179">การตั้งค่านโยบายเป็น "เปิดใช้" จะป้องกันไม่ให้องค์ประกอบหน้าเว็บที่ไม่ได้มาจากโดเมนในแถบที่อยู่ของเบราว์เซอร์ตั้งค่าคุกกี้ การตั้งค่านโยบายเป็น "ปิดใช้" จะทำให้องค์ประกอบเหล่านั้นตั้งค่าคุกกี้ได้และป้องกันไม่ให้ผู้ใช้เปลี่ยนการตั้งค่านี้
 
@@ -1413,7 +1441,9 @@
 หากมีการตั้งค่านโยบายนี้ ผู้ใช้จะลบล้างค่าไม่ได้
 
 หากไม่ได้ตั้งค่านโยบายนี้ ระบบจะปิดใช้หน้าจอส่วนตัวในตอนแรก แต่ผู้ใช้จะควบคุมต่อจากนั้นได้</translation>
+<translation id="2413899611035194909">แสดงตัวเลือกการช่วยเหลือพิเศษในเมนูถาดระบบของหน้าจอการเข้าสู่ระบบ</translation>
 <translation id="2415715982424988916">สำรวจ (รองรับตั้งแต่เวอร์ชัน 91)</translation>
+<translation id="2421400544595297401">ไม่อนุญาตให้ผู้ใช้ที่ไม่เกี่ยวข้องใช้แอป Android</translation>
 <translation id="2421677964966613267">นโยบายนี้เลิกใช้งานไปแล้วในรุ่น M88 และ Chrome ไม่รองรับ Flash อีกต่อไป การตั้งค่านโยบายจะให้คุณสร้างรายการรูปแบบ URL ซึ่งระบุเว็บไซต์ที่เรียกใช้ปลั๊กอิน <ph name="FLASH_PLUGIN_NAME" /> ไม่ได้
 
       การไม่ตั้งค่านโยบายหมายความว่า <ph name="DEFAULT_PLUGINS_SETTING_POLICY_NAME" /> จะมีผลกับทุกเว็บไซต์ (หากตั้งค่าไว้) แต่หากไม่ได้ตั้งค่าไว้ การตั้งค่าส่วนตัวของผู้ใช้จะมีผล
@@ -1449,6 +1479,7 @@
 <translation id="2436302465999055995">กำหนดให้ <ph name="LACROS_NAME" /> เป็นเพียงเบราว์เซอร์เดียวที่ใช้ได้ (ยังไม่มีการใช้งาน)</translation>
 <translation id="2439187682308339104">ไม่อนุญาตให้เว็บไซต์ใดๆ ขอสิทธิ์เข้าถึงอุปกรณ์ HID ผ่าน WebHID API</translation>
 <translation id="2439733504887695659">เปิดใช้การปิดการแจ้งเตือนรหัสผ่านที่ถูกละเมิดสำหรับข้อมูลเข้าสู่ระบบที่ป้อน</translation>
+<translation id="2446244536806499267">ถือว่าผู้ใช้ยังมีการใช้งานอยู่ขณะเล่นเสียง</translation>
 <translation id="2448315169529769573">การตั้งค่านโยบายเป็น "เปิดใช้" จะทำให้ <ph name="PRODUCT_OS_NAME" /> รายงานเมตริกการใช้งานและข้อมูลการวินิจฉัย รวมถึงรายงานข้อขัดข้อง กลับมาที่ Google การตั้งค่านโยบายเป็น "ปิดใช้" จะปิดการรายงานเมตริกและข้อมูลการวินิจฉัย
 
        การไม่ตั้งค่านโยบายจะปิดการรายงานเมตริกและข้อมูลการวินิจฉัยเสมอในอุปกรณ์ที่ไม่มีการจัดการและเปิดในอุปกรณ์ที่มีการจัดการ</translation>
@@ -1472,6 +1503,10 @@
       หากคุณปิดใช้การตั้งค่านี้ <ph name="PRODUCT_NAME" /> จะไม่ตรวจหาว่ามีหน้าต่างใดถูกหน้าต่างอื่นบังอยู่หรือไม่
 
       หากไม่ได้ตั้งค่านโยบายนี้ ระบบจะเปิดใช้การตรวจหาการบัง</translation>
+<translation id="2462606868915618110">ตั้งแต่เวอร์ชัน M108 เป็นต้นไป ระบบจะเรียกใช้เมธอด <ph name="FILE_SYSTEM_SYNC_ACCESS_HANDLE" /> ทั้งหมดแบบพร้อมกัน
+      นโยบายนี้จะเปิดการเรียกใช้เมธอด <ph name="FILE_SYSTEM_SYNC_ACCESS_HANDLE" /> แบบไม่พร้อมกันอีกครั้งจนถึง M110
+      หากตั้งค่านโยบายนี้เป็น "เปิดใช้" ระบบจะเรียกใช้เมธอด <ph name="FILE_SYSTEM_SYNC_ACCESS_HANDLE" /> แบบไม่พร้อมกัน
+      หากตั้งค่านโยบายนี้เป็น "ปิดใช้" หรือไม่ได้ตั้งค่า ระบบจะเรียกใช้เมธอด <ph name="FILE_SYSTEM_SYNC_ACCESS_HANDLE" /> ทั้งหมดแบบพร้อมกัน</translation>
 <translation id="2463034609187171371">เปิดใช้ชุดการเข้ารหัส DHE ใน TLS</translation>
 <translation id="2463365186486772703">ภาษาของแอปพลิเคชัน</translation>
 <translation id="2463832514638083341">นโยบายนี้ควบคุมระยะเวลาในการจัดเก็บข้อมูลเมตาของงานพิมพ์ในอุปกรณ์โดยมีหน่วยเป็นวัน
@@ -1541,6 +1576,7 @@
 <translation id="2520551905471951523">ใช้ลำดับความสำคัญสูงกับกระบวนการของเสียง</translation>
 <translation id="2521581787935130926">แสดงทางลัดของแอปในแถบบุ๊กมาร์ก</translation>
 <translation id="2522304491589804974">กำหนดค่ารายการที่อนุญาตสำหรับการติดตั้งส่วนขยาย</translation>
+<translation id="2523511232831599126">เปิดใช้ทางลัดสำหรับการช่วยเหลือพิเศษในหน้าจอการลงชื่อเข้าใช้</translation>
 <translation id="2529880111512635313">กำหนดค่ารายชื่อแอปและส่วนขยายที่บังคับให้ติดตั้ง</translation>
 <translation id="253135976343875019">คำเตือนการไม่ใช้งานล่าช้าเมื่อทำงานโดยใช้ไฟ AC</translation>
 <translation id="2535370400681639351">การตั้งค่านโยบายเป็น "เปิดใช้" จะทำให้คำขอการตรวจสอบสิทธิ์ gnubby จะทำผ่านพร็อกซีในการเชื่อมต่อโฮสต์ระยะไกล
@@ -1591,6 +1627,7 @@
 
       การไม่ตั้งค่านโยบายจะทำให้ <ph name="PRODUCT_NAME" /> โหลดโฮสต์การรับส่งข้อความดั้งเดิมที่ติดตั้งไว้ทั้งหมด</translation>
 <translation id="2568488785376704318">นโยบายนี้เลิกใช้งานแล้ว โปรดใช้ <ph name="REMOTE_ACCESS_HOST_DOMAIN_LIST_POLICY_NAME" /> แทน</translation>
+<translation id="2570059561924004903">ปิดใช้ฟีเจอร์อธิบายและอ่านออกเสียง</translation>
 <translation id="2575198840408498393">ปิดใช้การสร้างโปรไฟล์โรมมิ่ง</translation>
 <translation id="2576324725151524912">อนุญาตให้ใช้โหมดนักพัฒนาซอฟต์แวร์กับแอปที่แยกไว้</translation>
 <translation id="257788512393330403">ต้องป้อนรหัสผ่านทุก 6 ชั่วโมง</translation>
@@ -1637,6 +1674,7 @@
 <translation id="2625398797484317969">ควบคุมการตั้งค่าสำหรับคำตอบด่วน</translation>
 <translation id="262740370354162807">เปิดใช้งานการส่งเอกสารไปยัง <ph name="CLOUD_PRINT_NAME" /></translation>
 <translation id="2633084400146331575">เปิดใช้งานการตอบสนองด้วยเสียง</translation>
+<translation id="2633907568797306353">อนุญาตให้มีการเปิดใช้การแจ้งเตือนของฮับโทรศัพท์</translation>
 <translation id="2635872253077105112">การตั้งค่านโยบายนี้จะควบคุมรายการเว็บไซต์ที่จะเปิดในเบราว์เซอร์สำรอง ระบบจะถือว่ารายการย่อยแต่ละรายการเป็นกฎสำหรับบางอย่างที่จะเปิดในเบราว์เซอร์สำรอง <ph name="PRODUCT_NAME" /> จะใช้กฎเหล่านั้นเมื่อเลือกว่า URL ควรเปิดในเบราว์เซอร์สำรองหรือไม่ เมื่อ Add-in ของ <ph name="IE_PRODUCT_NAME" /> เปิดอยู่ <ph name="IE_PRODUCT_NAME" /> จะเปลี่ยนกลับไปยัง <ph name="PRODUCT_NAME" /> เมื่อกฎไม่ตรงกัน หากกฎขัดแย้งกัน <ph name="PRODUCT_NAME" /> จะใช้กฎที่เจาะจงที่สุด
 
       การไม่ตั้งค่านโยบายนี้จะไม่เพิ่มเว็บไซต์ลงในรายการ
@@ -1685,6 +1723,7 @@
 <translation id="2706708761587205154">อนุญาตให้พิมพ์เฉพาะเมื่อมี PIN เท่านั้น</translation>
 <translation id="2707873794476722903">Google Safe Browsing ทำงานในโหมดมาตรฐาน</translation>
 <translation id="2709516037105925701">ป้อนอัตโนมัติ</translation>
+<translation id="2713977837384407666">ส่งเมตริกไปยัง Google เสมอ</translation>
 <translation id="2714359695399346815">การตั้งค่านโยบายเป็น "เปิดใช้" หรือไม่ตั้งค่าจะทำให้ใช้เซิร์ฟเวอร์ STUN ได้ ซึ่งจะทำให้ไคลเอ็นต์ระยะไกลค้นพบและเชื่อมต่อกับเครื่องนี้ได้แม้ว่าจะถูกกั้นโดยไฟร์วอลล์
 
       การตั้งค่านโยบายเป็น "ปิดใช้" เมื่อไฟร์วอลล์กรองการเชื่อมต่อ UDP ขาออกจะทำให้เครื่องอนุญาตการเชื่อมต่อจากเครื่องไคลเอ็นต์ภายในเครือข่าย LAN เท่านั้น</translation>
@@ -1717,6 +1756,7 @@
 <translation id="2725855586003209701">การตั้งค่านโยบายเป็น "เปิดใช้" หรือไม่ได้ตั้งค่าจะทำให้อุปกรณ์ที่ลงทะเบียนไว้รายงานรายชื่อผู้ใช้อุปกรณ์ที่ลงชื่อเข้าใช้เมื่อเร็วๆ นี้
 
       การตั้งค่านโยบายเป็น "ปิดใช้" จะทำให้อุปกรณ์ที่ลงทะเบียนไว้ไม่รายงานรายชื่อผู้ใช้</translation>
+<translation id="2730200383593984228">อนุญาตให้ผู้ใช้ที่ไม่เกี่ยวข้องใช้แอป Android</translation>
 <translation id="2730419309754848345">ค่าเริ่มต้นการพิมพ์ PDF เป็นรูปภาพ</translation>
 <translation id="2731299561202635374">นโยบายนี้ควบคุมการตรวจสอบ URL แบบเรียลไทม์เพื่อระบุ URL ที่เป็นอันตราย
 
@@ -1726,6 +1766,7 @@
 
       นโยบายนี้ต้องมีการตั้งค่าเพิ่มเติมจึงจะมีผล โปรดดูข้อมูลเพิ่มเติมที่ https://support.google.com/chrome/a?p=chrome_enterprise_connector_policies_setting</translation>
 <translation id="2731627323327011390">ปิดการใช้งานใบรับรอง <ph name="PRODUCT_OS_NAME" /> สำหรับแอป ARC</translation>
+<translation id="2737917415184832294">ใช้ HTTPS เพื่อการดาวน์โหลดอัปเดต</translation>
 <translation id="2742843273354638707">ซ่อนแอป Chrome เว็บสโตร์ และลิงก์ส่วนท้ายจากหน้าแท็บใหม่ และเครื่องเรียกใช้งานแอป <ph name="PRODUCT_OS_NAME" />
 
       เมื่อนโยบายนี้ตั้งค่าเป็น True จะมีการซ่อนไอคอนไป
@@ -1755,6 +1796,7 @@
 
       เมื่อตั้งค่านโยบายนี้เป็น "เท็จ" โปรแกรมอ่าน PDF จะใส่คำอธิบายประกอบใน PDF ไม่ได้</translation>
 <translation id="2769952903507981510">กำหนดค่าชื่อโดเมนที่จำเป็นสำหรับโฮสต์การเข้าถึงระยะไกล</translation>
+<translation id="2772231477628401250">ใช้ HTTP เพื่อการดาวน์โหลดอัปเดต</translation>
 <translation id="2772650717382565415">การตั้งค่านโยบายนี้จะเป็นการระบุรายการเว็บแอปที่ติดตั้งโดยผู้ใช้ไม่ต้องดำเนินการ และจะถอนการติดตั้งหรือปิดไม่ได้
 
       รายการย่อยแต่ละรายการในนโยบายคือออบเจ็กต์ที่มีสมาชิกที่จำเป็น 1 รายการ ซึ่งก็คือ <ph name="URL_LABEL" /> (URL ของเว็บแอปที่จะติดตั้ง) และสมาชิกที่ไม่บังคับ 6 รายการคือ <ph name="DEFAULT_LAUNCH_CONTAINER_LABEL" /> (สำหรับการเปิดเว็บแอป ค่าเริ่มต้นคือแท็บใหม่) และ <ph name="CREATE_DESKTOP_SHORTCUT_LABEL" /> (เป็น "จริง" หากคุณต้องการสร้างทางลัดบนเดสก์ท็อปสำหรับ <ph name="LINUX_OS_NAME" /> และ <ph name="MS_WIN_NAME" />)
@@ -1827,14 +1869,19 @@
 <translation id="2835686964326214400">ตั้งกำหนดเวลาเองเพื่อรีบูตอุปกรณ์</translation>
 <translation id="2838830882081735096">ไม่อนุญาตให้ย้ายข้อมูลและใช้ ARC</translation>
 <translation id="2839294585867804686">การตั้งค่าพื้นที่แชร์ไฟล์ของเครือข่าย</translation>
+<translation id="2841911109921764691">ปุ่มขวาคือปุ่มหลักในหน้าจอการเข้าสู่ระบบ</translation>
 <translation id="284288632677954003">URL ของไฟล์ XML ที่มี URL ที่ไม่ควรทริกเกอร์การเปลี่ยนเบราว์เซอร์</translation>
 <translation id="2846689894646472396">อัตราการตรวจสอบกิจกรรมในเครือข่ายเป็นมิลลิวินาที</translation>
+<translation id="2847788524147474533">นโยบายสำหรับเครื่องที่ใช้แพลตฟอร์มจะมีผลเหนือนโยบายสำหรับเครื่องที่ใช้ระบบคลาวด์</translation>
+<translation id="2849275596224278787">ซ่อนตัวเลือกการช่วยเหลือพิเศษในเมนูถาดระบบของหน้าจอการเข้าสู่ระบบ</translation>
 <translation id="2853649500575897584">อย่าบล็อกจุดขยายสัญญาณเดิมในกระบวนการของเบราว์เซอร์</translation>
 <translation id="285480231336205327">เปิดใช้งานโหมดความคมชัดสูง</translation>
 <translation id="285627849510728211">ตั้งค่ากำหนดวันของโหมดการชาร์จแบตเตอรี่ขั้นสูง</translation>
 <translation id="2856674246949497058">ย้อนกลับไปใช้เวอร์ชันเป้าหมายและใช้เวอร์ชันเป้าหมายเสมอหากใช้ระบบปฏิบัติการเวอร์ชันที่ใหม่กว่า ทำ Powerwash ในขั้นตอนนี้</translation>
 <translation id="2866619962692161453">ประเภทนโยบายเมตา</translation>
 <translation id="2866726566162790531">รายการต้นทางที่อนุญาตการตรวจสอบสิทธิ์ HTTP ทั้งหมด</translation>
+<translation id="2868756546751652023">อนุญาตให้ผู้ใช้ใช้การเชื่อมต่อ Wi-Fi ฮอตสปอตจากมือถือโดยอัตโนมัติ</translation>
+<translation id="286898786908566256">อนุญาตให้ผู้ใช้ส่งหมายเลขโทรศัพท์จาก Chrome ไปยังอุปกรณ์ Android ของตนเอง</translation>
 <translation id="2869762730352628426">เปิดใช้ฟีเจอร์คลิกอัตโนมัติในหน้าจอการเข้าสู่ระบบ</translation>
 <translation id="2872961005593481000">ปิด</translation>
 <translation id="2874209944580848064">หมายเหตุสำหรับอุปกรณ์ <ph name="PRODUCT_OS_NAME" /> ที่รองรับแอป Android:</translation>
@@ -1894,6 +1941,7 @@
 <translation id="2906874737073861391">รายการส่วนขยายของ AppPack</translation>
 <translation id="2908277604670530363">จำนวนสูงสุดของการเชื่อมต่อพร็อกซีเซิร์ฟเวอร์พร้อมกัน</translation>
 <translation id="2912366658685903301">กำหนดค่าสีธีมของเบราว์เซอร์</translation>
+<translation id="2914283793640833265">ไม่อนุญาตให้เปิดใช้การทำงานอย่างต่อเนื่องในฮับโทรศัพท์</translation>
 <translation id="291853569864365550">ไม่แสดงการแนะนำเนื้อหาในหน้า "แท็บใหม่"</translation>
 <translation id="2920795918401557243">การตั้งค่านี้อนุญาตให้รวบรวมการติดตามประสิทธิภาพทั้งระบบโดยใช้บริการ System Tracing
 
@@ -1993,6 +2041,7 @@
         หากนโยบายอยู่ในรายการและยังไม่ได้เปิดตัวอย่างเป็นทางการ ระบบจะใช้ค่าของนโยบาย
 
         นโยบายนี้ไม่มีผลต่อนโยบายที่เปิดตัวไปแล้ว</translation>
+<translation id="3002067315837777719">ไม่อนุญาตให้เปิดใช้การแจ้งเตือนจากฮับโทรศัพท์</translation>
 <translation id="3016255526521614822">อนุญาตพิเศษให้แอปสำหรับจดโน้ตแสดงในหน้าจอล็อกของ <ph name="PRODUCT_OS_NAME" /></translation>
 <translation id="3017578958356048910">โปรแกรมอ่าน PDF จะใส่คำอธิบายประกอบใน PDF ได้</translation>
 <translation id="3020623128585817424">ปิดใช้การตรวจสอบเบราว์เซอร์เริ่มต้นเมื่อเริ่มต้นระบบ</translation>
@@ -2126,6 +2175,7 @@
       ดูข้อมูลโดยละเอียดเกี่ยวกับรูปแบบ <ph name="URL_LABEL" /> ที่ถูกต้องได้ที่ https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns  นโยบายนี้จะจับคู่โดยอิงตามต้นทางเท่านั้น ระบบจึงไม่สนใจเส้นทางใดก็ตามในรูปแบบ URL</translation>
 <translation id="3118552207903834734">อนุญาตให้ผู้ใช้กำหนดค่าชื่อโฮสต์อุปกรณ์ของตนได้</translation>
 <translation id="3122082892722698079">ควบคุมการใช้ข้อยกเว้นเนื้อหาที่ไม่ปลอดภัย</translation>
+<translation id="3126748868885248792">ปุ่มขวาคือปุ่มหลัก</translation>
 <translation id="3128072319047570212">การตั้งค่าคีย์เจน</translation>
 <translation id="3131703464330936425">ไม่อนุญาตการโรมมิ่งอินเทอร์เน็ตมือถือ</translation>
 <translation id="3135820765957090754">หากเปิดใช้การตั้งค่านี้ ผู้ใช้จะได้รับอนุญาตให้ซิงค์การกำหนดค่าเครือข่าย Wi-Fi ระหว่างอุปกรณ์ <ph name="PRODUCT_OS_NAME" /> กับโทรศัพท์ Android ที่เชื่อมต่อ ก่อนที่จะซิงค์การกำหนดค่าเครือข่าย Wi-Fi ได้ ผู้ใช้ต้องเลือกใช้ฟีเจอร์นี้อย่างชัดแจ้งด้วยการทำตามขั้นตอนการตั้งค่าให้เสร็จสมบูรณ์
@@ -2179,6 +2229,7 @@
 
       ดูข้อมูลโดยละเอียดเกี่ยวกับรูปแบบ <ph name="URL_LABEL" /> ที่ถูกต้องได้ที่ https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns <ph name="WILDCARD_VALUE" /> ไม่ใช่ค่าที่ยอมรับสำหรับนโยบายนี้</translation>
 <translation id="3168968618972302728">นโยบายเกี่ยวกับการตรวจสอบสิทธิ์ Kerberos</translation>
+<translation id="3169872426103732947">แสดง URL เริ่มต้นและอนุญาตให้ผู้ใช้เปลี่ยนเป็น URL แบบเต็มได้</translation>
 <translation id="3171369832001535378">เทมเพลตชื่อโฮสต์เครือข่ายของอุปกรณ์</translation>
 <translation id="3177802893484440532">ต้องใช้การตรวจสอบ OCSP/CRL ออนไลน์สำหรับ Trust Anchor ในพื้นที่</translation>
 <translation id="3180671894201217988">การตั้งค่านโยบายเป็น "เปิดใช้" หรือไม่ได้ตั้งค่าจะทำให้ซอฟต์แวร์ของบุคคลที่สามแทรกโค้ดปฏิบัติการลงในกระบวนการของ <ph name="PRODUCT_NAME" /> ไม่ได้
@@ -2242,6 +2293,7 @@
 <translation id="3211426942294667684">การตั้งค่าการลงชื่อเข้าใช้เบราว์เซอร์</translation>
 <translation id="3219421230122020860">โหมดไม่ระบุตัวตนพร้อมใช้งาน</translation>
 <translation id="3220624000494482595">หากแอปคีออสก์เป็นแอป Android แอปจะไม่มีสิทธิ์ควบคุมเวอร์ชัน <ph name="PRODUCT_OS_NAME" /> แม้ว่าจะตั้งนโยบายนี้เป็น <ph name="TRUE" /> ก็ตาม</translation>
+<translation id="3222088741899353813">ปุ่มซ้ายคือปุ่มหลักในหน้าจอการเข้าสู่ระบบ</translation>
 <translation id="322359555555487980">กำหนดความพร้อมใช้ของรูปแบบต่างๆ ใน <ph name="PRODUCT_OS_NAME" /></translation>
 <translation id="3229163415739929305">การตั้งค่านโยบายเป็น "เปิดใช้" หรือไม่ตั้งค่าจะเปิดใช้การดึงข้อมูลเมตาของการโหลดหน้าเว็บและโมเดลแมชชีนเลิร์นนิง ซึ่งจะช่วยเพิ่มประสิทธิภาพประสบการณ์การท่องเว็บ
       การตั้งค่านโยบายเป็น "ปิดใช้" อาจทำให้ฟีเจอร์บางอย่างทำงานไม่เหมาะสม</translation>
@@ -2321,6 +2373,7 @@
       หาก <ph name="PRODUCT_NAME" /> ไม่ได้ออกอย่างราบรื่น (เช่น หากเบราว์เซอร์หรือระบบปฏิบัติการขัดข้อง) ระบบจะล้างข้อมูลการท่องเว็บในครั้งถัดไปที่โหลดโปรไฟล์</translation>
 <translation id="3264793472749429012">การเข้ารหัสของผู้ให้บริการการค้นหาเริ่มต้น</translation>
 <translation id="3273221114520206906">การตั้งค่า JavaScript เริ่มต้น</translation>
+<translation id="3278042410658310805">ปิดใช้ฟีเจอร์อธิบายและอ่านออกเสียงในหน้าจอการเข้าสู่ระบบและอนุญาตให้ผู้ใช้เปิดใช้ชั่วคราว</translation>
 <translation id="3282240846541032181">นโยบายนี้ให้ผู้ดูแลระบบระบุแอปที่ทําหน้าที่เป็นตัวแฮนเดิลเริ่มต้นสําหรับนามสกุลไฟล์ที่เกี่ยวข้องใน <ph name="PRODUCT_OS_NAME" /> ซึ่งผู้ใช้เปลี่ยนแปลงไม่ได้
       สําหรับนามสกุลไฟล์ทั้งหมดที่ไม่ได้ระบุไว้ในนโยบาย ผู้ใช้จะกําหนดค่าเริ่มต้นของตนเองตามเวิร์กโฟลว์ปกติได้อย่างอิสระ
 
@@ -2385,6 +2438,7 @@
       เมื่อปิดใช้นโยบายนี้หรือไม่ได้ตั้งค่า ระบบจะปิดใช้เวอร์ชัน TLS/DTLS เหล่านี้
 
       นโยบายนี้เป็นแบบชั่วคราวและระบบจะนำออกใน <ph name="PRODUCT_NAME" /> เวอร์ชันในอนาคต</translation>
+<translation id="3351835664671920945">กำหนดให้แป้นพิมพ์มาตรฐานเป็นค่าเริ่มต้นสำหรับการป้อนรหัสผ่าน</translation>
 <translation id="3359186795130278362">เปิดใช้เซสชันผู้เยี่ยมชมที่มีการจัดการแบบจำกัด</translation>
 <translation id="33592541385181121">ไม่รวมพอร์ตใน Kerberos SPN ที่สร้างขึ้น</translation>
 <translation id="3360093276083825336">โปรดทราบว่าจะมีการเลิกใช้งานและนำนโยบายนี้ออกใน <ph name="PRODUCT_OS_NAME" /> เวอร์ชัน 85 โปรดใช้ <ph name="POWER_MANAGEMENT_IDLE_SETTINGS_POLICY_NAME" /> แทน
@@ -2409,6 +2463,7 @@
       ดูรายการตัวแปรที่ใช้ได้ได้ที่ https://support.google.com/chrome/a?p=Supported_directory_variables
 
       หากไม่ได้ตั้งค่านโยบายนี้ ระบบจะใช้เส้นทางโปรไฟล์เริ่มต้นและผู้ใช้จะลบล้างเส้นทางนี้ได้ด้วยการตั้งสถานะโดยใช้บรรทัดคำสั่ง "--user-data-dir"</translation>
+<translation id="338149029069528354">ไม่ต้องลบข้อมูลผู้ใช้ในระบบ</translation>
 <translation id="3381968327636295719">ใช้เบราว์เซอร์โฮสต์โดยค่าเริ่มต้น</translation>
 <translation id="3387211681524224831">การตั้งค่านโยบายเป็น "เปิดใช้" หมายความว่าจะไม่มีการบันทึกประวัติการท่องเว็บ การซิงค์แท็บจะปิด และผู้ใช้เปลี่ยนการตั้งค่านี้ไม่ได้
 
@@ -2423,6 +2478,7 @@
 <translation id="3397883909301547525">ไม่ต้องแสดงการแนะนำแอปใน Launcher ของ "<ph name="PRODUCT_OS_NAME" />"</translation>
 <translation id="3399859571630358395">บังคับให้ปิดใช้การจับคู่ด่วน (การจับคู่บลูทูธด่วน)</translation>
 <translation id="3404681701763345449">เปิดใช้การผสานรวม "<ph name="GOOGLE_CALENDAR_NAME" />"</translation>
+<translation id="3406122462682235653">ไม่ต้องถามผู้ใช้ (เริ่มดาวน์โหลดทันที)</translation>
 <translation id="3408078762098350617">ควบคุมประสบการณ์ของผู้ใช้สำหรับฟีเจอร์ที่ปิดใช้ที่ระบุไว้ใน <ph name="SYSTEM_FEATURES_DISABLE_LIST_POLICY_NAME" />
 
       หากตั้งค่านโยบายนี้เป็น "บล็อก" ฟีเจอร์ที่ปิดใช้จะไม่สามารถใช้ได้ แต่ผู้ใช้จะยังคงมองเห็น
@@ -2496,6 +2552,7 @@
           หากตั้งค่านโยบายนี้ ผู้ใช้จะเปลี่ยนหรือลบล้างไม่ได้
 
           หากไม่ได้ตั้งค่านโยบายนี้ ระบบจะปิดใช้ฟีเจอร์เลือกเพื่อให้อ่านในหน้าจอการเข้าสู่ระบบในขั้นต้น แต่ผู้ใช้จะเปิดใช้ได้ทุกเมื่อ</translation>
+<translation id="3483585138745445814">อนุญาตให้ผู้ใช้เปิดใช้ฟีเจอร์การแชร์ใกล้เคียง</translation>
 <translation id="348495353354674884">เปิดใช้งานแป้นพิมพ์เสมือน</translation>
 <translation id="3485200437120267231">ปิดใช้การสกัดกั้นการลงชื่อเข้าใช้</translation>
 <translation id="3487651201232258606">การรับส่งข้อความของระบบ</translation>
@@ -2538,6 +2595,7 @@
 <translation id="3528000905991875314">เปิดใช้งานหน้าเว็บแสดงข้อผิดพลาดสำรอง</translation>
 <translation id="3531084733660068324">การตั้งค่าการควบคุมดูแลโดยผู้ปกครอง</translation>
 <translation id="3536263244905016305">ปิดใช้การเพิ่มประสิทธิภาพการค้นหาเว็บพร็อกซีอัตโนมัติ (WPAD)</translation>
+<translation id="3538869107794555625">เปิดใช้แป้นพิมพ์บนหน้าจอในโหมดแท็บเล็ต</translation>
 <translation id="3539103206548425861">การตั้งค่านโยบายอนุญาตให้วิดีโอเล่นโดยอัตโนมัติ (โดยไม่ต้องมีคำยินยอมจากผู้ใช้) พร้อมเนื้อหาเสียงใน <ph name="PRODUCT_NAME" /> หากตั้งค่านโยบาย <ph name="AUTOPLAY_ALLOWED_POLICY_NAME" /> เป็น "จริง" นโยบายนี้ก็จะไม่มีผล หากตั้งค่านโยบาย <ph name="AUTOPLAY_ALLOWED_POLICY_NAME" /> เป็น "เท็จ" รูปแบบ URL ที่กำหนดไว้ในนโยบายนี้จะยังเล่นได้อยู่ หากนโยบายนี้เปลี่ยนแปลงในขณะที่ <ph name="PRODUCT_NAME" /> ทำงานอยู่ จะมีผลกับแท็บที่เปิดใหม่เท่านั้น
 
       ดูข้อมูลโดยละเอียดเกี่ยวกับรูปแบบ URL ที่ถูกต้องได้ที่ https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns</translation>
@@ -2575,6 +2633,7 @@
 <translation id="3568762199045490351">JavaScript setTimeout() ที่มีระยะหมดเวลาเป็น 0 มิลลิวินาทีจะถูกปรับเป็น 1 มิลลิวินาที</translation>
 <translation id="3574450691573438824">ปิดใช้การอัปโหลดบันทึกระบบของอุปกรณ์</translation>
 <translation id="3575011234198230041">การตรวจสอบสิทธิ์ HTTP</translation>
+<translation id="3575159471980949522">ไม่อนุญาตให้ผู้ใช้ส่งหมายเลขโทรศัพท์จาก Chrome ไปยังอุปกรณ์ Android ของตนเอง</translation>
 <translation id="3577251398714997599">เครื่องมือตั้งค่าโฆษณาสำหรับเว็บไซต์ที่มีโฆษณาที่แทรก</translation>
 <translation id="3577628175311752799">ใช้นโยบาย URL ที่มาเริ่มต้นของ "ไม่มี URL ที่มาเมื่อดาวน์เกรด"</translation>
 <translation id="357917253161699596">อนุญาตให้ผู้ใช้จัดการใบรับรองของผู้ใช้</translation>
@@ -2593,6 +2652,7 @@
 
           หากไม่มีการตั้งค่านโยบายนี้ ระบบจะปิดฟีเจอร์เลือกเพื่อให้อ่านในขั้นต้นแต่ผู้ใช้เปิดใช้ได้ทุกเมื่อ</translation>
 <translation id="3587482841069643663">ทั้งหมด</translation>
+<translation id="3587766503874071316">ปิดใช้ทางลัดสำหรับการช่วยเหลือพิเศษ</translation>
 <translation id="3589193811812796052">ป้องกันไม่ให้ส่งโมดูล WebAssembly แบบข้ามต้นทาง</translation>
 <translation id="3591527072193107424">เปิดใช้ฟีเจอร์การรองรับเบราว์เซอร์เวอร์ชันเก่า</translation>
 <translation id="3591584750136265240">กำหนดค่าลักษณะการตรวจสอบสิทธิ์ของการเข้าสู่ระบบ</translation>
@@ -2936,6 +2996,7 @@
           หากไม่ได้ตั้งค่านโยบายนี้ ระบบจะปิดใช้คีย์ติดหนึบในหน้าจอการเข้าสู่ระบบในขั้นต้น แต่ผู้ใช้จะเปิดใช้ได้ทุกเมื่อ</translation>
 <translation id="3927291637826333102">อนุญาตให้ต้นทางเหล่านี้จับภาพเดสก์ท็อป หน้าต่าง และแท็บ</translation>
 <translation id="3928726028264020458">เปิดใช้การรายงานข้อมูล VPD ของอุปกรณ์</translation>
+<translation id="3941289958028934630">ปิดใช้ฟีเจอร์อธิบายและอ่านออกเสียงในหน้าจอการเข้าสู่ระบบ</translation>
 <translation id="3943930334592166130">นโยบายนี้ควบคุมว่าระบบจะแสดงข้อความแจ้งให้ผู้ใช้เลือกใบรับรองไคลเอ็นต์หรือไม่เมื่อมีใบรับรองที่ตรงกันมากกว่า 1 รายการ <ph name="AUTO_SELECT_CERTIFICATE_FOR_URLS_POLICY_NAME" />
       หากตั้งค่านโยบายนี้เป็น "เปิดใช้" ระบบจะแสดงข้อความแจ้งให้ผู้ใช้เลือกใบรับรองไคลเอ็นต์เมื่อนโยบายการเลือกอัตโนมัติพบใบรับรองที่ตรงกันหลายรายการ
       หากตั้งค่านโยบายนี้เป็น "ปิดใช้" หรือไม่ได้ตั้งค่า ระบบอาจแสดงข้อความแจ้งผู้ใช้เฉพาะในกรณีที่ไม่มีใบรับรองตรงกับการเลือกอัตโนมัติ</translation>
@@ -3023,6 +3084,7 @@
       การไม่ตั้งค่านโยบายหมายความว่า Chrome จะใช้ไดเรกทอรีการดาวน์โหลดเริ่มต้น และผู้ใช้จะเปลี่ยนได้
 
       หมายเหตุ: ดูรายการตัวแปรที่คุณใช้ได้ (https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables)</translation>
+<translation id="4030152268425532846">ปิดใช้การช่วยเหลือสำหรับการเข้าสู่ระบบโดยอัตโนมัติ</translation>
 <translation id="4041577849977347218">การตั้งค่านโยบายเป็น "เปิดใช้" หรือไม่ได้ตั้งค่าหมายความว่าระบบจะส่งไฟล์ที่ดาวน์โหลดไปให้ Google Safe Browsing วิเคราะห์ แม้ว่าไฟล์นั้นจะมาจากแหล่งที่มาที่เชื่อถือได้ก็ตาม
 
       การตั้งค่านโยบายเป็น "ปิดใช้" หมายความว่าระบบจะไม่ส่งไฟล์ที่ดาวน์โหลดไปให้ Google Safe Browsing วิเคราะห์ เมื่อมาจากแหล่งที่มาที่เชื่อถือได้
@@ -3034,6 +3096,7 @@
 <translation id="4051723201852944592">เปิดใช้การตรวจหาการบังหน้าต่าง</translation>
 <translation id="4052529125939620019">โหลดส่วนขยายคอมโพเนนต์ CryptoToken เมื่อเริ่มต้นระบบ</translation>
 <translation id="4053157306171963473">ปิดใช้การรายงานเวลาของกิจกรรมในอุปกรณ์</translation>
+<translation id="4053612967614057854">ปิดใช้แป้นพิมพ์บนหน้าจอ</translation>
 <translation id="4056910949759281379">ปิดใช้งานโปรโตคอล SPDY</translation>
 <translation id="4061107397839125009">การตั้งค่านโยบายจะให้คุณสร้างรายการรูปแบบ URL ซึ่งระบุเว็บไซต์ที่แสดงการแจ้งเตือนไม่ได้
 
@@ -3041,6 +3104,7 @@
 
       ดูข้อมูลโดยละเอียดเกี่ยวกับรูปแบบ <ph name="URL_LABEL" /> ที่ถูกต้องได้ที่ https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns  <ph name="WILDCARD_VALUE" /> ไม่ใช่ค่าที่ยอมรับสำหรับนโยบายนี้</translation>
 <translation id="4061590579642538878">รายงานข้อมูลเกี่ยวกับรายงานข้อขัดข้อง</translation>
+<translation id="4072225853834793549">ปิดใช้ทางลัดสำหรับการช่วยเหลือพิเศษในหน้าจอลงชื่อเข้าใช้</translation>
 <translation id="4075675819066819571">กำหนดตำแหน่งชั้นวางให้อยู่ที่ด้านซ้ายของหน้าจอ</translation>
 <translation id="408029843066770167">อนุญาตคำค้นหาที่ส่งไปยังบริการเวลาของ Google</translation>
 <translation id="408076456549153854">เปิดใช้การลงชื่อเข้าใช้เบราว์เซอร์</translation>
@@ -3180,6 +3244,7 @@
 <translation id="4187576366596772431">บล็อก WebHID API ในเว็บไซต์เหล่านี้</translation>
 <translation id="4190316993598857632">เปิดใช้การแก้ไขบุ๊กมาร์ก</translation>
 <translation id="4192388905594723944">URL สำหรับตรวจสอบความถูกต้องโทเค็นการตรวจสอบสิทธิ์ไคลเอ็นต์การเข้าถึงระยะไกล</translation>
+<translation id="4195698007674066525">กำหนดให้แป้นพิมพ์ตัวเลขเป็นค่าเริ่มต้นสำหรับการป้อนรหัสผ่าน</translation>
 <translation id="4203055629055264833">การตั้งค่านโยบายเป็น "เปิดใช้" หรือไม่ตั้งค่านโยบายหมายความว่าผู้ใช้สามารถแสดงหน้าผลการค้นหาล่าสุดของเครื่องมือค้นหาเริ่มต้นในแผงด้านข้างผ่านการเปิด/ปิดไอคอนในแถบเครื่องมือ
 
       การตั้งค่านโยบายเป็น "ปิดใช้" จะนำไอคอนดังกล่าวออกจากแถบเครื่องมือที่เปิดแผงด้านข้างซึ่งมีหน้าผลการค้นหาของเครื่องมือค้นหาเริ่มต้นอยู่</translation>
@@ -3189,6 +3254,7 @@
 <translation id="4203879074082863035">มีเฉพาะเครื่องพิมพ์ในรายการที่อนุญาตพิเศษที่จะแสดงต่อผู้ใช้</translation>
 <translation id="4204327073692415353">ไม่แสดงข้อความแจ้งให้ผู้ใช้เลือกใบรับรองไคลเอ็นต์บนหน้าจอการลงชื่อเข้าใช้</translation>
 <translation id="4205316772333487392">บังคับใช้ฟีเจอร์ค้นหาปลอดภัยใน Google Search</translation>
+<translation id="4206464220361823768">ปิดใช้เคอร์เซอร์ขนาดใหญ่ในหน้าจอการเข้าสู่ระบบ</translation>
 <translation id="4209297478239988291">เปิดใช้ฟีเจอร์การช่วยเหลือพิเศษสำหรับการคลิกอัตโนมัติ
 
           ฟีเจอร์นี้ทำหน้าที่คลิกโดยไม่ต้องกดเมาส์หรือทัชแพดเมื่อวางเมาส์เหนือวัตถุที่ต้องการคลิก
@@ -3268,11 +3334,13 @@
       ระบบจะเพิกเฉยต่อนโยบายนี้และการแจ้งเตือนจะแสดงเสมอหากอุปกรณ์ไม่มีการจัดการหรือมีผู้ใช้เพียงคนเดียว
 
       หากมีบัญชีผู้ใช้หลายบัญชีในอุปกรณ์ที่มีการจัดการ การแจ้งเตือนจะแสดงเฉพาะเมื่อเปิดใช้นโยบายนี้เท่านั้น</translation>
+<translation id="4303167373847512281">อนุญาตให้ใช้โหมดนักพัฒนาซอฟต์แวร์</translation>
 <translation id="4311195029067684288">เต็ม</translation>
 <translation id="4313767483634435271">ที่อยู่ MAC ของแท่นชาร์จที่กำหนดของอุปกรณ์</translation>
 <translation id="4314538398999793073">ปิดใช้การค้นหา CNAME ระหว่างการตรวจสอบสิทธิ์ Kerberos</translation>
 <translation id="4320592646346933548">Wi-Fi</translation>
 <translation id="4322842393287974810">อนุญาตแอปคีออสก์ที่เปิดอัตโนมัติด้วยความล่าช้าเป็น 0 เพื่อควบคุมเวอร์ชันของ <ph name="PRODUCT_OS_NAME" /></translation>
+<translation id="4323412353642577604">เปิดใช้เอกสารรับรองระยะไกลสำหรับการปกป้องเนื้อหา</translation>
 <translation id="4325690621216251241">เพิ่มปุ่มออกจากระบบลงในถาดระบบ</translation>
 <translation id="4329095223358818804">อนุญาตให้ฟีเจอร์คำตอบด่วนเข้าถึงเนื้อหาที่เลือก</translation>
 <translation id="4330908525441222205">ใช้ลักษณะการทำงานเริ่มต้นของ AppCache</translation>
@@ -3306,6 +3374,8 @@
 <translation id="4369307906396795087">สคริปต์สำหรับผู้ปฏิบัติงาน (Web Worker, Service Worker ฯลฯ) จะใช้การตรวจสอบประเภท MIME แบบ Lax สคริปต์สำหรับผู้ปฏิบัติงานที่มีประเภท MIME เดิม เช่น <ph name="MIMETYPE_TEXT_ASCII" /> จะใช้งานได้</translation>
 <translation id="4370937370030117032">ไม่อนุญาตให้ส่งชื่อผู้ใช้และชื่อไฟล์ไปยังเครื่องพิมพ์ที่มาพร้อมระบบ</translation>
 <translation id="4372704773119750918">ไม่อนุญาตให้ผู้ใช้องค์กรเป็นส่วนหนึ่งของหลายโปรไฟล์ (หลักหรือรอง)</translation>
+<translation id="4373332965635821723">เปิดใช้ทางลัดสำหรับการช่วยเหลือพิเศษ</translation>
+<translation id="4377377599658208627">อนุญาตให้เว็บไซต์เลื่อนไปยังส่วนข้อความที่เฉพาะเจาะจงผ่าน URL</translation>
 <translation id="4377599627073874279">อนุญาตให้ไซต์ทั้งหมดแสดงภาพทั้งหมด</translation>
 <translation id="437791893267799639">ไม่ได้ตั้งนโยบาย ไม่อนุญาตให้ย้ายข้อมูลและใช้ ARC</translation>
 <translation id="4380159792986204036">อนุญาตให้คีออสก์เว็บเปิดหน้าต่างเบราว์เซอร์มากกว่า 1 หน้าต่างในหน้าจอใดก็ได้</translation>
@@ -3456,6 +3526,7 @@
 <translation id="4558166110367609724">ข้ามข้อกำหนดในการให้บริการและโหลดเบราว์เซอร์โดยอัตโนมัติ</translation>
 <translation id="4559846397119102037">อนุญาตให้ใช้งาน <ph name="LACROS_NAME" /></translation>
 <translation id="4561560385824323005">อนุญาตให้ผู้ใช้เลือกเลย์เอาต์เดสก์ท็อปที่กำหนดค่าไว้ล่วงหน้าสำหรับโหลด</translation>
+<translation id="4561940244682063697">ไม่อนุญาตให้เว็บไซต์แจ้งให้ผู้ใช้แชร์สตรีมวิดีโอของหน้าจอ</translation>
 <translation id="4562165737444703281">อนุญาตให้ผู้ใช้ [เปิดใช้/กำหนดค่า] การส่งต่อพอร์ต Crostini</translation>
 <translation id="456686782928669977">นโยบายนี้ควบคุมว่าจะโหลดกฎจากนโยบาย SiteList ของ <ph name="IE_PRODUCT_NAME" /> หรือไม่
 
@@ -3471,6 +3542,18 @@
       หากเปิดใช้นโยบายนี้ เว็บไซต์จะมีสิทธิ์นำทางและเปิดหน้าต่างหรือแท็บใหม่ไปพร้อมกันได้
       หากปิดใช้หรือไม่ได้ตั้งค่านโยบายนี้ เว็บไซต์จะไม่มีสิทธิ์นำทางและเปิดหน้าต่างหรือแท็บใหม่ไปพร้อมกัน</translation>
 <translation id="457430673056611745">นโยบายการกำหนดค่าสำหรับเครื่องมือเชื่อมต่อ <ph name="PRODUCT_NAME" /> Enterprise OnPrint</translation>
+<translation id="4576760454200781316">เมื่อเปิดใช้ ฟีเจอร์ "<ph name="PRODUCT_NAME" />" จะทำให้ตัวจับเวลา JavaScript ในแท็บเบื้องหลังถูกควบคุมและรวมเป็นหนึ่งมากเกินไป ซึ่งมีผลให้ทำงานได้เพียงนาทีละ 1 ครั้งหลังจากที่หน้าอยู่ในเบื้องหลังเป็นเวลา 5 นาทีขึ้นไป
+
+          ฟีเจอร์นี้เป็นฟีเจอร์ที่เป็นไปตามมาตรฐานของเว็บ แต่อาจทำให้บางเว็บไซต์ทำงานได้ไม่ถูกต้องโดยทำให้การทำงานบางอย่างล่าช้าได้ถึง 1 นาที แต่เมื่อเปิดใช้ จะช่วยประหยัดแบตเตอรี่และ CPU ได้อย่างมาก ดูรายละเอียดเพิ่มเติมที่ https://bit.ly/30b1XR4
+
+          หากตั้งค่านโยบายนี้เป็นเปิดใช้ ระบบจะบังคับให้เปิดใช้ฟีเจอร์นี้และผู้ใช้จะลบล้างการตั้งค่านี้ไม่ได้
+
+          หากตั้งค่านโยบายนี้เป็นปิดใช้ ระบบจะบังคับให้ปิดใช้ฟีเจอร์นี้และผู้ใช้จะลบล้างการตั้งค่านี้ไม่ได้
+
+          หากไม่ได้ตั้งค่านโยบายนี้ ฟีเจอร์จะถูกควบคุมโดยตรรกะภายในตัวฟีเจอร์เอง ซึ่งผู้ใช้จะกำหนดค่าด้วยตนเองได้
+
+          โปรดทราบว่านโยบายนี้มีผลตามการประมวลผลของโหมดแสดงภาพ โดยจะบังคับใช้ค่าล่าสุดในการตั้งค่านโยบายเมื่อเริ่มการประมวลผลของโหมดแสดงภาพ คุณต้องรีสตาร์ทโดยสมบูรณ์เพื่อให้แน่ใจว่าทุกแท็บที่โหลดไว้จะได้รับการตั้งค่านโยบายที่สอดคล้องกัน การประมวลผลต่างๆ ทำงานโดยใช้ค่าที่ต่างกันของนโยบายนี้ได้โดยไม่มีปัญหา
+          </translation>
 <translation id="4578265298946081589">ไม่ต้องรีบูตเมื่อผู้ใช้ออกจากระบบ</translation>
 <translation id="4581507927311097234">ระยะเวลาเป็นมิลลิวินาทีก่อนปิดหน้าจอหลังจากไม่มีการป้อนข้อมูลจากผู้ใช้</translation>
 <translation id="4582338216073557489">การตั้งค่านโยบายนี้เป็น "ไม่มี" ทำให้ <ph name="PRODUCT_NAME" /> ใช้ขนาดแคชเริ่มต้นในการจัดเก็บไฟล์ที่แคชไว้ในดิสก์ โดยที่ผู้ใช้จะเปลี่ยนแปลงไม่ได้
@@ -3521,6 +3604,7 @@
       * เมื่อตั้งค่า <ph name="FILTER_PLACEHOLDER" /> เป็น <ph name="EMPTY_DICTIONARY" /> การเลือกใบรับรองไคลเอ็นต์จะไม่มีข้อจำกัดเพิ่มเติม โปรดทราบว่าตัวกรองที่ได้มาจากเว็บเซิร์ฟเวอร์จะยังคงมีผลอยู่
 
       การไม่ตั้งค่านโยบายนี้หมายความว่าจะไม่มีการเลือกอัตโนมัติสำหรับเว็บไซต์ใดก็ตาม</translation>
+<translation id="4611983465824842867">ไม่แสดงคำเตือนหรือปิดใช้การป้อนข้อความอัตโนมัติในแบบฟอร์มที่ไม่ปลอดภัย</translation>
 <translation id="4615003180013429835">โหมดการแยกวิเคราะห์รายการเว็บไซต์</translation>
 <translation id="4617338332148204752">ข้ามการตรวจสอบเมตาแท็กใน <ph name="PRODUCT_FRAME_NAME" /></translation>
 <translation id="4624417808625504735">บล็อก JavaScript ไม่ให้ใช้ JIT ในเว็บไซต์เหล่านี้</translation>
@@ -3650,6 +3734,7 @@
 
       หากคุณตั้งค่านโยบายนี้ ผู้ใช้จะเปลี่ยนไม่ได้ หากไม่ได้ตั้งค่า ผู้ใช้จะเป็นผู้เลือกว่าจะซ่อนแถบดังกล่าวโดยอัตโนมัติหรือไม่</translation>
 <translation id="4812714598405913256">กำหนดค่าข้อความการหมดอายุของการอัปเดตอัตโนมัติสำหรับนโยบาย DeviceMinimumVersion</translation>
+<translation id="4815581264328351694">แสดงตัวเลือกการช่วยเหลือพิเศษในเมนูถาดระบบ</translation>
 <translation id="4816674326202173458">อนุญาตให้ผู้ใช้ขององค์กรเป็นทั้งผู้ใช้หลักและรอง (ค่าเริ่มต้นสำหรับผู้ใช้ที่ไม่ได้รับการจัดการ)</translation>
 <translation id="4820432864264617413">ป้องกันไม่ให้ <ph name="BOREALIS_NAME" /> ทำงานสำหรับผู้ใช้</translation>
 <translation id="4821987881803903281">บล็อกสิทธิ์สำหรับตำแหน่งหน้าต่างในเว็บไซต์เหล่านี้</translation>
@@ -3679,6 +3764,7 @@
 <translation id="4856471929724652373">รายงานข้อมูลการอัปเดตระบบปฏิบัติการ เช่น สถานะการอัปเดต เวอร์ชันของแพลตฟอร์ม การตรวจสอบอัปเดตครั้งล่าสุด การรีบูตครั้งล่าสุด
 
       หากตั้งค่านโยบายเป็น "เท็จ" หรือไม่ได้ตั้งค่า จะไม่มีการรายงานข้อมูลการอัปเดตระบบปฏิบัติการ หากตั้งค่านโยบายเป็น "จริง" จะมีการรายงานข้อมูลการอัปเดตระบบปฏิบัติการ</translation>
+<translation id="4857223512478723171">ไม่อนุญาตให้ใช้โหมดเต็มหน้าจอ</translation>
 <translation id="4858735034935305895">อนุญาตโหมดเต็มหน้าจอ</translation>
 <translation id="4861767323695239729">กำหนดค่าวิธีการป้อนข้อมูลที่อนุญาตในเซสชันผู้ใช้</translation>
 <translation id="4873380469296842901">หากเปิดใช้การตั้งค่านี้ ผู้ใช้ที่เลือกใช้ฮับโทรศัพท์อยู่แล้วจะส่ง/รับการแจ้งเตือนของโทรศัพท์ใน Chrome OS ได้
@@ -3776,7 +3862,9 @@
       เมื่อระบุ จะมีการบล็อกไม่ให้ปิดเบราว์เซอร์จนถึงจำนวนวินาทีที่ระบุเพื่อประมวลผลคำขอ Keepalive (https://fetch.spec.whatwg.org/#request-keepalive-flag)
 
       ค่าเริ่มต้น (0) หมายถึงฟีเจอร์นี้ปิดใช้อยู่</translation>
+<translation id="4937423591320233496">ปิดใช้เนื้อหาที่แนะนำ</translation>
 <translation id="4940810901775798837">อนุญาตให้เว็บไซต์ที่ไม่ปลอดภัยส่งคำขอไปยังปลายทางเครือข่ายต่างๆ</translation>
+<translation id="4942096314850617489">ปิดใช้เอกสารรับรองระยะไกลสำหรับผู้ใช้</translation>
 <translation id="4942681160308347946">การตั้งค่านโยบายนี้เป็น "จริง" จะเปิดการอธิบายและอ่านออกเสียงในหน้าจอลงชื่อเข้าใช้ การตั้งค่านโยบายนี้เป็น "เท็จ" จะปิดการอธิบายและอ่านออกเสียงในหน้าจอดังกล่าว
 
       หากตั้งค่านโยบายนี้ไว้ ผู้ใช้จะเปิดหรือปิดการอธิบายและอ่านออกเสียงได้ชั่วคราว เมื่อหน้าจอลงชื่อเข้าใช้โหลดซ้ำหรือไม่มีการใช้งานเป็นเวลา 1 นาที ฟีเจอร์นี้จะเปลี่ยนกลับไปอยู่ในสถานะเดิม
@@ -3791,6 +3879,7 @@
       หากไม่ได้ตั้งค่านโยบายนี้ ระบบจะใช้การทำงานเริ่มต้น (แสดงสำหรับ Canary/เวอร์ชันที่กำลังพัฒนา) ผู้ใช้สลับการมองเห็นตามการทำงานเฉพาะได้ (เช่น Alt-V)</translation>
 <translation id="494613465159630803">Cast Receiver</translation>
 <translation id="494924690085329212">รีบูตเมื่อผู้ใช้ออกจากระบบหาก Android เริ่มต้นแล้ว</translation>
+<translation id="4950447493143157880">ไม่ใช้ไคลเอ็นต์ DNS ในตัว</translation>
 <translation id="4952347392677351397">การตั้งค่านโยบายเป็น 1 จะให้เว็บไซต์เข้าถึงและใช้เซ็นเซอร์ เช่น เซ็นเซอร์ตรวจจับการเคลื่อนไหวและเซ็นเซอร์แสงได้ การตั้งค่านโยบายเป็น 2 จะปฏิเสธสิทธิ์เข้าถึงเซ็นเซอร์
 
       การไม่ตั้งค่าหมายความว่า <ph name="ALLOW_SENSORS_POLICY_NAME" /> จะมีผล แต่ผู้ใช้เปลี่ยนการตั้งค่านี้ได้</translation>
@@ -3867,6 +3956,7 @@
 <translation id="5034504101537897433">เปิดใช้การรายงานรายละเอียดข้อขัดข้องของอุปกรณ์</translation>
 <translation id="5039110755072335605">การรองรับส่วนหัวของคำขอที่ไม่มีไวลด์การ์ดสำหรับ CORS</translation>
 <translation id="504116558738617678">แสดงคำเตือนพื้นที่ในดิสก์เหลือน้อยเฉพาะในกรณีที่อุปกรณ์ไม่มีการจัดการหรือมีผู้ใช้เพียงคนเดียว</translation>
+<translation id="5053779531788741830">ใช้ไคลเอ็นต์ DNS ในตัวกับ macOS, Android และ ChromeOS</translation>
 <translation id="5055474681190962362">วันที่ของเดือน [1-31] ที่ควรมีการรีบูต โดยตีความในเขตเวลาท้องถิ่นของอุปกรณ์ ใช้เมื่อ "frequency" เท่ากับ "MONTHLY" เท่านั้น หากต้องการระบุจำนวนที่มากกว่าจำนวนวันสูงสุดในเดือนหนึ่งๆ ให้เลือกวันสุดท้ายของเดือน</translation>
 <translation id="5056708224511062314">ปิดใช้งานแว่นขยายหน้าจอ</translation>
 <translation id="5058573563327660283">เลือกกลยุทธ์ที่ใช้ในการเพิ่มพื้นที่ว่างของดิสก์ระหว่างการล้างข้อมูลอัตโนมัติ (เลิกใช้แล้ว)</translation>
@@ -4026,6 +4116,8 @@
 
       หากไม่ได้ตั้งค่านโยบายวอลเปเปอร์ของอุปกรณ์ นโยบายวอลเปเปอร์ของผู้ใช้จะเลือกสิ่งที่จะแสดงหากมีการตั้งค่านโยบายวอลเปเปอร์ของผู้ใช้</translation>
 <translation id="5219844027738217407">สำหรับแอป Android นโยบายนี้จะส่งผลต่อไมโครโฟนเท่านั้น เมื่อตั้งค่านโยบายเป็น True ไมโครโฟนจะปิดเสียงสำหรับแอป Android ทุกแอปโดยไม่มีข้อยกเว้น</translation>
+<translation id="5222325605346216869">บังคับให้มีการควบคุมตัวจับเวลา JavaScript เบื้องหลัง</translation>
+<translation id="5223606242837275233">ไม่อนุญาตให้เว็บไซต์เลื่อนไปยังส่วนข้อความที่เฉพาะเจาะจงผ่าน URL</translation>
 <translation id="5227124062673546005">ควบคุมวิธีที่ <ph name="PRODUCT_NAME" /> พิมพ์ใน <ph name="MS_WIN_NAME" />
 
       เมื่อสั่งพิมพ์ไปยังเครื่องพิมพ์ PostScript ใน <ph name="MS_WIN_NAME" /> วิธีการสร้าง PostScript ที่แตกต่างกันอาจส่งผลต่อประสิทธิภาพการพิมพ์
@@ -4064,6 +4156,7 @@
       การตั้งค่านโยบายเป็น "ปิดใช้" หมายความว่าฟีเจอร์ทำความสะอาด Chrome จะไม่มีการสแกนเป็นระยะ และจะเรียกใช้ด้วยตนเองไม่ได้
 
       ใน <ph name="MS_WIN_NAME" /> ฟังก์ชันการทำงานนี้ใช้ได้เฉพาะในอินสแตนซ์ที่เข้าร่วมโดเมน <ph name="MS_AD_NAME" />, ทำงานใน Windows 10 Pro หรือลงทะเบียนในการจัดการระบบคลาวด์ของเบราว์เซอร์ Chrome</translation>
+<translation id="5245647012663146075">ไม่อนุญาตให้เปิดใช้ฮับโทรศัพท์</translation>
 <translation id="5245671702326993331">อนุญาตการแจ้งเตือนดั้งเดิม</translation>
 <translation id="524637053580639111">เราจะนำนโยบายนี้ออกในเวอร์ชัน M82 โปรดใช้ DeviceMinimumVersion แทน
 
@@ -4121,6 +4214,7 @@
 <translation id="5293044154216294358">การตั้งค่านโยบายเป็น "จริง" อนุญาตให้ผู้ใช้เล่นเกมไดโนเสาร์ การตั้งค่านโยบายเป็น "เท็จ" หมายความว่าผู้ใช้จะเล่นเกมไดโนเสาร์ที่ซ่อนไว้ขณะที่อุปกรณ์ออฟไลน์ไม่ได้
 
       การไม่ตั้งค่านโยบายนี้หมายความว่าผู้ใช้จะเล่นเกมดังกล่าวใน <ph name="PRODUCT_OS_NAME" /> ที่ลงทะเบียนไว้ไม่ได้ แต่จะเล่นได้ในกรณีอื่นๆ</translation>
+<translation id="5293285950307241933">ลบข้อมูลผู้ใช้ทั้งหมดในระบบ</translation>
 <translation id="529457411593078576">เปิดใช้ข้อกำหนดในการให้บริการเมื่อเรียกใช้ CCT ครั้งแรก</translation>
 <translation id="5297948043665200363">อนุญาตให้ผู้ใช้อยู่ในระบบต่อไปหลังจากที่บัญชีของผู้ใช้ไม่ผ่านการตรวจสอบสิทธิ์</translation>
 <translation id="5298949392804966105">ไม่มีข้อจำกัดในบัญชีที่จัดการ</translation>
@@ -4131,8 +4225,10 @@
 <translation id="5306186200045823863">เปิดใช้การเชื่อถือโครงสร้างพื้นฐาน PKI เดิมของ Symantec Corporation</translation>
 <translation id="5307432759655324440">ความพร้อมใช้งานของโหมดไม่ระบุตัวตน</translation>
 <translation id="5308551343115571396">หลังจากที่ปิดใช้ <ph name="LACROS_NAME" /> เราจะพยายามเก็บข้อมูลผู้ใช้ไว้ให้ได้มากที่สุดเท่าที่จะทำได้ พร้อมทั้งนำข้อมูลทั้งหมดที่เกี่ยวกับเบราว์เซอร์ออก</translation>
+<translation id="530949964068726932">ซ่อนตัวเลือกการช่วยเหลือพิเศษในเมนูถาดระบบ</translation>
 <translation id="5311275381462687162">กำหนดค่าเริ่มต้นของการตั้งค่าลักษณะการทำงานของคุกกี้ <ph name="ATTRIBUTE_SAMESITE_NAME" /> เดิม</translation>
 <translation id="5312253627576569499">เปอร์เซ็นต์การปรับขนาดการหน่วงเวลาการหรี่แสงหน้าจอเมื่อระบบสังเกตพบกิจกรรมของผู้ใช้ขณะที่หน้าจอหรี่แสงหรือในไม่ช้าหลังจากที่มีการปิดหน้าจอ</translation>
+<translation id="5316856058059940708">ปิดใช้เคอร์เซอร์ขนาดใหญ่</translation>
 <translation id="5317852436044398288">การตั้งค่านโยบายจะช่วยให้คุณสร้างรายการรูปแบบ URL ซึ่งใช้การจับภาพหน้าต่างและแท็บได้
 
       การไม่ตั้งค่านโยบายจะทำให้ระบบไม่พิจารณาเว็บไซต์เพื่อทำการลบล้างที่การจับภาพระดับนี้
@@ -4144,11 +4240,13 @@
       ดูข้อมูลโดยละเอียดเกี่ยวกับรูปแบบ <ph name="URL_LABEL" /> ที่ถูกต้องได้ที่ https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns  นโยบายนี้จะจับคู่โดยอิงตามต้นทางเท่านั้น ระบบจึงไม่สนใจเส้นทางใดก็ตามในรูปแบบ URL</translation>
 <translation id="5318185076587284965">เปิดใช้รีเลย์เซิร์ฟเวอร์โดยโฮสต์การเข้าถึงระยะไกล</translation>
 <translation id="5323200200131319468">เปิดใช้ฟีเจอร์อธิบายและอ่านออกเสียงในหน้าจอการเข้าสู่ระบบ</translation>
+<translation id="5323355956693037267">เปิดใช้แป้นพิมพ์บนหน้าจอในหน้าจอการเข้าสู่ระบบ</translation>
 <translation id="532848608876725157">เปิดใช้โหมด DNS-over-HTTPS ที่มีการถอยหลังกลับที่ไม่ปลอดภัย</translation>
 <translation id="5328965694451556034">รายงานการเข้าสู่ระบบ/ออกจากระบบ</translation>
 <translation id="5329018127554115226">ระบบจะปิดใช้โหมดประสิทธิภาพสูง</translation>
 <translation id="5330684698007383292">อนุญาตให้ <ph name="PRODUCT_FRAME_NAME" /> จัดการประเภทเนื้อหาดังต่อไปนี้</translation>
 <translation id="5331746669335642668">นโยบายระบบคลาวด์ของ <ph name="PRODUCT_NAME" /> จะลบล้างนโยบายแพลตฟอร์ม</translation>
+<translation id="5334501839642146593">ไม่ส่งเมตริกไปยัง Google</translation>
 <translation id="5346587320074666194">บล็อกสิทธิ์เข้าถึงเซ็นเซอร์ในเว็บไซต์เหล่านี้</translation>
 <translation id="5357039649371478544">กำหนดค่ารายการกฎการป้องกันข้อมูลรั่วไหลใน <ph name="PRODUCT_OS_NAME" />
       ข้อมูลรั่วไหลอาจเกิดขึ้นได้จากการคัดลอกและวางข้อมูล การโอนไฟล์ การพิมพ์ การแชร์หน้าจอ หรือการจับภาพหน้าจอ และอื่นๆ
@@ -4193,6 +4291,7 @@
 <translation id="5371152055157582429">ผู้ใช้จะปรับแต่งพื้นหลังของหน้าแท็บใหม่ได้</translation>
 <translation id="5377606826822211923">ควบคุมการใช้แอป Android จากแหล่งที่มาที่ไม่น่าเชื่อถือสำหรับผู้ใช้แต่ละราย</translation>
 <translation id="537786648513450280">ควบคุมการใช้แอป Android จากแหล่งที่มาที่ไม่น่าเชื่อถือสำหรับอุปกรณ์</translation>
+<translation id="5378885577701865339">ปิดใช้ฟีเจอร์คลิปบอร์ดที่แชร์</translation>
 <translation id="5379858577608862519">ระบุว่าอนุญาตการส่งต่อพอร์ตไปยังคอนเทนเนอร์ Crostini หรือไม่
 
       หากตั้งค่านโยบายนี้เป็น "จริง" หรือไม่ได้ตั้งค่า ผู้ใช้จะกำหนดค่าการส่งต่อพอร์ตไปยังคอนเทนเนอร์ Crostini ได้
@@ -4390,6 +4489,7 @@
 
       หากไม่ระบุ จะไม่แก้ไข URL เมล็ดรูปแบบ</translation>
 <translation id="5561811616825571914">เลือกใบรับรองไคลเอ็นต์สำหรับเว็บไซต์เหล่านี้โดยอัตโนมัติในหน้าลงชื่อเข้าใช้</translation>
+<translation id="5561893881195372931">ปิดใช้คอนทราสต์สูง</translation>
 <translation id="5563240289883266691">เปิดใช้การรายงานการใช้แอป Linux</translation>
 <translation id="5565178130821694365">ต้องป้อนรหัสผ่านทุก 2 วัน (48 ชั่วโมง)</translation>
 <translation id="5566210228171064229">อนุญาตการพิมพ์ทั้งกรณีที่มีและไม่มี PIN</translation>
@@ -4422,6 +4522,7 @@
 
       หากไม่ได้ตั้งค่านโยบายนี้ ระบบจะไม่อนุญาตให้ใช้ค่าเริ่มต้นกับผู้ใช้ที่มีการจัดการโดยองค์กรแต่อนุญาตให้ใช้กับผู้ใช้ที่ไม่มีการจัดการ</translation>
 <translation id="5584132346604748282">ควบคุมบริการตำแหน่งของ Google ใน Android</translation>
+<translation id="5584609869321980122">เริ่มหน่วงเวลาการจัดการพลังงานและการจํากัดระยะเวลาเซสชันหลังจากกิจกรรมแรกของผู้ใช้</translation>
 <translation id="5586942249556966598">ไม่ดำเนินการใดๆ</translation>
 <translation id="5598417829613725146">Canvas (รองรับตั้งแต่เวอร์ชัน 90 เป็นต้นไป)</translation>
 <translation id="5599461642204007579">การตั้งค่าการจัดการ <ph name="MS_AD_NAME" /></translation>
@@ -4449,6 +4550,7 @@
 <translation id="5630352020869108293">คืนค่าเซสชันล่าสุด</translation>
 <translation id="5633871703004128675">เปิดใช้ฟีเจอร์การช่วยเหลือพิเศษสำหรับการไฮไลต์เคอร์เซอร์ข้อความ</translation>
 <translation id="5634032995857968056">เปิดใช้แซนด์บ็อกซ์ของคอนเทนเนอร์แอปตัวแสดงผล</translation>
+<translation id="5638334542697444045">ไม่อนุญาตให้ผู้ใช้ใช้การเชื่อมต่อ Wi-Fi ฮอตสปอตจากมือถือโดยอัตโนมัติ</translation>
 <translation id="5639454129004500060">หากตั้งค่า นโยบายนี้จะมีข้อมูลให้ดาวน์โหลดไฟล์เทมเพลตเดสก์  โดยไฟล์ดังกล่าวมีเทมเพลตเดสก์ที่จะจัดสรรให้กับผู้ใช้คนปัจจุบัน
       หากไม่ได้ตั้งค่า ระบบจะไม่รวมเทมเพลตเดสก์ที่กำหนดค่าไว้ล่วงหน้าในรายการเทมเพลตเดสก์  หากไม่ได้ตั้งค่านโยบาย <ph name="DESK_TEMPLATES_ENABLED_POLICY_NAME" /> เป็น "จริง" นโยบายนี้จะไม่มีผล</translation>
 <translation id="5641279111657132737">นโยบายนี้เลิกใช้งานไปแล้ว โปรดใช้นโยบาย "<ph name="AUTH_SERVER_ALLOWLIST_POLICY_NAME" />" แทน
@@ -4544,6 +4646,7 @@
       การตั้งค่านโยบายเป็น "ปิดใช้" หรือไม่ตั้งค่าจะทำให้การหน่วงเวลาการจัดการพลังงานและการจำกัดความยาวของเซสชันเริ่มทันทีหลังจากที่เริ่มเซสชัน</translation>
 <translation id="5733357908790472408">ใช้ Chrome Root Store</translation>
 <translation id="5735915264686983150">ซ่อนและบล็อกฟีเจอร์ที่ปิดใช้</translation>
+<translation id="5736498355107027047">แสดงปุ่มออกจากระบบในถาดระบบ</translation>
 <translation id="5737394734996319911">ฟีเจอร์การช่วยเหลือพิเศษ <ph name="PRODUCT_NAME" /> ช่วยให้ผู้ใช้โปรแกรมอ่านหน้าจอซึ่งมีความบกพร่องทางสายตารู้รายละเอียดของรูปภาพในเว็บที่ไม่มีป้ายกำกับบอกไว้ ผู้ใช้ที่เลือกเปิดใช้ฟีเจอร์จะมีตัวเลือกการใช้บริการ Google ที่ไม่ระบุตัวบุคคล เพื่อฟังคำอธิบายแบบอัตโนมัติสำหรับรูปภาพที่ไม่ได้ติดป้ายกำกับซึ่งผู้ใช้พบเจอในเว็บ
 
           หากมีการเปิดใช้ฟีเจอร์นี้ ระบบจะส่งเนื้อหาของรูปภาพไปยังเซิร์ฟเวอร์ของ Google เพื่อสร้างคำอธิบาย จะไม่มีการส่งคุกกี้หรือข้อมูลผู้ใช้อื่นๆ และ Google จะไม่บันทึกเนื้อหารูปภาพใดๆ
@@ -4597,6 +4700,7 @@
 <translation id="5776485039795852974">ถามทุกครั้งที่ไซต์ต้องการแสดงการแจ้งเตือนของเดสก์ท็อป</translation>
 <translation id="5783009211970309878">ส่วนหัวและส่วนท้ายของการพิมพ์</translation>
 <translation id="5790763087505467169">ลดการแจ้งเตือนการเรียกใช้อัตโนมัติของเซสชันผู้เยี่ยมชมที่มีการจัดการ</translation>
+<translation id="5800329278018669527">ปิดใช้ข้อความแจ้งการกําหนดค่าเครือข่ายเมื่อออฟไลน์</translation>
 <translation id="5802931736499687181">ปิดใช้ไปป์ไลน์การรายงานที่เข้ารหัส</translation>
 <translation id="5806128552675651249">อนุญาตเฉพาะการพิมพ์ที่ไม่มีกราฟิกพื้นหลังเท่านั้น</translation>
 <translation id="5809210507920527553">ควบคุมการตั้งค่าของคอนเทนเนอร์ Linux (Crostini)</translation>
@@ -4608,6 +4712,7 @@
 <translation id="5830196507442186669">อนุญาตให้อุปกรณ์ใช้ <ph name="BOREALIS_NAME" /> ใน <ph name="PRODUCT_OS_NAME" /></translation>
 <translation id="5831286647961890695">เปิดใช้รูปแบบการชาร์จแบบปรับอัตโนมัติใน <ph name="PRODUCT_OS_NAME" /></translation>
 <translation id="5832274826894536455">นโยบายที่เลิกใช้งาน</translation>
+<translation id="5834583755928064072">ป้องกันไม่ให้ผู้ใช้เปลี่ยนเวอร์ชันการเผยแพร่</translation>
 <translation id="5835253272509953988">การตั้งค่านโยบายเป็น "เปิดใช้" ช่วยให้ผู้ใช้สามารถให้ <ph name="PRODUCT_NAME" /> ตรวจสอบว่าชื่อผู้ใช้และรหัสผ่านที่ป้อนรวมอยู่ในข้อมูลที่รั่วไหลด้วยหรือไม่
 
       หากตั้งค่านโยบาย ผู้ใช้จะไปเปลี่ยนใน <ph name="PRODUCT_NAME" /> ไม่ได้ หากไม่ได้ตั้งค่า ระบบจะอนุญาตให้ตรวจสอบการรั่วไหลของข้อมูลเข้าสู่ระบบ แต่ผู้ใช้ปิดได้ 
@@ -4706,6 +4811,7 @@
 <translation id="5915023683182228340">การตั้งค่านโยบายเป็น "เปิดใช้" หรือไม่ได้ตั้งค่าจะทำให้ใช้โปรโตคอล QUIC ใน <ph name="PRODUCT_NAME" /> ได้
 
       การตั้งค่านโยบายเป็น "ปิดใช้" จะทำให้ใช้โปรโตคอล QUIC ไม่ได้</translation>
+<translation id="5916855682471300200">นโยบายสำหรับเครื่องที่ใช้ระบบคลาวด์จะมีผลเหนือนโยบายสำหรับเครื่องที่ใช้แพลตฟอร์ม</translation>
 <translation id="5921713479449475707">อนุญาตการดาวน์โหลดการอัปเดตอัตโนมัติผ่านทาง HTTP</translation>
 <translation id="5928633129285224981">ควบคุมว่าจะให้ <ph name="PRODUCT_NAME" /> มีค่าเริ่มต้นเป็นตั้งค่าตัวเลือกการพิมพ์เป็นรูปภาพเมื่อจะพิมพ์ PDF หรือไม่
 
@@ -4733,6 +4839,11 @@
 <translation id="5958746038080720143">เปิดใช้การเพิ่มประสิทธิภาพการค้นหาเว็บพร็อกซีอัตโนมัติ (WPAD)</translation>
 <translation id="5961137303188584693">ที่อยู่ MAC ของ NIC ในตัวของอุปกรณ์</translation>
 <translation id="5963752574792883406">พอร์ต 990 (เลิกบล็อกได้จนถึง 01/02/2022)</translation>
+<translation id="5964583455815172553">การตั้งค่านโยบายจะเป็นการระบุรายการ Isolated Web App (IWA) ซึ่งติดตั้งโดยผู้ใช้ไม่ต้องทำการโต้ตอบ
+      IWA คือแอปพลิเคชันที่มีพร็อพเพอร์ตี้ความปลอดภัยที่เป็นประโยชน์แต่ใช้ไม่ได้กับหน้าเว็บปกติ โดยจะอยู่ในแพ็กเกจ Signed Web Bundle คีย์สาธารณะของ Signed Web Bundle ใช้ในการสร้างรหัส Web Bundle ที่ระบุ IWA
+      ปัจจุบันนโยบายนี้ใช้ได้กับเซสชันผู้มาเยือนที่มีการจัดการเท่านั้น
+
+      แต่ละรายการในนโยบายคือออบเจ็กต์ที่มี <ph name="URL_LABEL" /> ของไฟล์ Manifest สำหรับการอัปเดตและรหัส Web Bundle ของ Isolated Web App ต้องระบุข้อมูลทั้ง 2 ช่อง</translation>
 <translation id="5966615072639944554">ส่วนขยายได้รับอนุญาตให้ใช้ API การยืนยันระยะไกล</translation>
 <translation id="596732417280023843">ชื่อของโปรไฟล์ใบรับรอง</translation>
 <translation id="5972538402066550344">อนุญาตการควบคุมการรายงานแบบละเอียด</translation>
@@ -4788,6 +4899,7 @@
 <translation id="6046615715547751255">ไม่อนุญาตการควบคุมการรายงานแบบละเอียด</translation>
 <translation id="6048199181629830227">เปิดใช้การจัดการการใช้ไฟจากแบตเตอรี่</translation>
 <translation id="6049117606554031363">เปิดใช้การรายงานสถานะของบอร์ดอุปกรณ์</translation>
+<translation id="6050796253724099706">เปิดใช้ฟีเจอร์อธิบายและอ่านออกเสียงในหน้าจอการเข้าสู่ระบบ</translation>
 <translation id="6053681087509103368">อนุญาตให้ WebRTC ใช้โปรโตคอล TLS/DTLS เวอร์ชันที่ล้าสมัย</translation>
 <translation id="6058879286588763839">หากไม่ได้ระบุ <ph name="DEVICE_ADVANCED_BATTERY_CHARGE_MODE_ENABLED_POLICY_NAME" /> ไว้ (ถ้าระบุ จะเป็นการลบล้าง <ph name="DEVICE_BATTERY_CHARGE_MODE_POLICY_NAME" />) การตั้งค่า <ph name="DEVICE_BATTERY_CHARGE_MODE_POLICY_NAME" /> จะระบุนโยบายการจัดการพลังงานของโหมดการชาร์จแบตเตอรี่ (หากอุปกรณ์รองรับ) นโยบายจะควบคุมการชาร์จแบตเตอรี่แบบไดนามิกโดยลดความเค้นและการสึกหรอให้เหลือน้อยที่สุด ทั้งนี้เพื่อยืดอายุการใช้งานแบตเตอรี่
 
@@ -4888,6 +5000,7 @@
       โปรดทราบว่าหากผู้ดูแลระบบจำเป็นต้องปกป้อง IP ของเครื่อง นโยบายนี้จะทำให้การปกป้องนั้นด้อยประสิทธิภาพลง</translation>
 <translation id="614662973812186053">นโยบายนี้จะยังควบคุมการใช้งาน Android และการรวบรวมข้อมูลการวินิจฉัยด้วยเช่นกัน</translation>
 <translation id="614665605501218241">อนุญาตให้เว็บไซต์ที่แสดงอยู่ส่งคำขอไปยังปลายทางเครือข่ายที่มีความเป็นส่วนตัวมากกว่าในลักษณะที่ไม่ปลอดภัย</translation>
+<translation id="6150320133676152520">ปิดใช้การส่ง PIN อัตโนมัติในหน้าจอล็อกและหน้าจอเข้าสู่ระบบ</translation>
 <translation id="6155350825868160236">อนุญาตให้ผู้ใช้เลือกหากใช้บริการเว็บของ Google เพื่อแก้ไขข้อผิดพลาดของการสะกดคำ</translation>
 <translation id="6155936611791017817">ตั้งค่าสถานะเริ่มต้นของเคอร์เซอร์ขนาดใหญ่บนหน้าจอการเข้าสู่ระบบ</translation>
 <translation id="6157537876488211233">รายการกฎการข้ามพร็อกซีที่คั่นด้วยเครื่องหมายจุลภาค</translation>
@@ -4967,6 +5080,7 @@
 <translation id="6261643884958898336">รายงานข้อมูลการระบุเครื่อง</translation>
 <translation id="6265892395051519509">อนุญาตให้เข้าถึงเซ็นเซอร์ในเว็บไซต์เหล่านี้</translation>
 <translation id="6266043141694454734">กำหนดว่าจะใช้ Chrome Root Store และตัวตรวจสอบใบรับรองในตัวเพื่อยืนยันใบรับรองเซิร์ฟเวอร์หรือไม่</translation>
+<translation id="6270615143812355589">เปิดใช้งานอินพุตเสียง</translation>
 <translation id="6273015149273504999">
       ระบุรายชื่อแอปและส่วนขยายที่ติดตั้งแบบเงียบในหน้าจอการเข้าสู่ระบบ (ผู้ใช้ไม่ต้องดำเนินการ) ซึ่งผู้ใช้ถอนการติดตั้งหรือปิดใช้ไม่ได้
 
@@ -5094,6 +5208,7 @@
 
       หากไม่ได้ตั้งค่านโยบายนี้หรือรายการยังว่างอยู่ รูปแบบทั้งหมดจะเข้าถึงได้ใน <ph name="PRODUCT_NAME" /></translation>
 <translation id="6338982178236723271">รายงานข้อมูลระบบ</translation>
+<translation id="6339355882150329269">ถือว่าผู้ใช้ยังมีการใช้งานอยู่ขณะเล่นวิดีโอ</translation>
 <translation id="6352714113109004581">การตั้งค่านโยบายจะให้คุณสร้างรายการรูปแบบ URL ซึ่งระบุเว็บไซต์ที่ขอให้ผู้ใช้ให้สิทธิ์เข้าถึงอุปกรณ์ HID ได้
 
       การไม่ตั้งค่านโยบายหมายความว่า <ph name="DEFAULT_WEB_HID_GUARD_SETTING_POLICY_NAME" /> จะมีผลกับทุกเว็บไซต์ (หากตั้งค่าไว้) แต่หากไม่ได้ตั้งค่าไว้ การตั้งค่าส่วนตัวของผู้ใช้จะมีผล
@@ -5110,6 +5225,7 @@
 
       ดูข้อมูลโดยละเอียดเกี่ยวกับรูปแบบ <ph name="URL_LABEL" /> ที่ถูกต้องได้ที่ https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns <ph name="WILDCARD_VALUE" /> ไม่ใช่ค่าที่ยอมรับสำหรับนโยบายนี้</translation>
 <translation id="6353890097388312479">การตั้งค่านโยบายเป็น "All" (0) หรือไม่ได้ตั้งค่าจะทำให้ผู้ใช้สามารถแก้ไขการตั้งค่าความน่าเชื่อถือของใบรับรอง CA ทั้งหมด ลบใบรับรองที่ผู้ใช้นำเข้า และนำเข้าใบรับรองโดยใช้ตัวจัดการใบรับรองได้ การตั้งค่านโยบายเป็น "UserOnly" (1) ทำให้ผู้ใช้จัดการได้เฉพาะใบรับรองที่ผู้ใช้นำเข้า และจะเปลี่ยนแปลงการตั้งค่าความน่าเชื่อถือของใบรับรองในเครื่องไม่ได้ การตั้งค่าเป็น "None" (2) ทำให้ผู้ใช้ดูใบรับรอง CA ได้ (จัดการไม่ได้)</translation>
+<translation id="6358320368815225772">ปิดใช้เอกสารรับรองระยะไกลสำหรับอุปกรณ์</translation>
 <translation id="6362856770865555544">การตั้งค่านโยบายเป็น "เปิดใช้" หรือไม่ตั้งค่าจะเปิดการเพิ่มประสิทธิภาพ WPAD (Web Proxy Auto-Discovery) ใน <ph name="PRODUCT_NAME" />
 
       การตั้งค่านโยบายเป็น "ปิดใช้" จะปิดการเพิ่มประสิทธิภาพ WPAD ซึ่งทำให้ <ph name="PRODUCT_NAME" /> ต้องรอเซิร์ฟเวอร์ WPAD แบบใช้ DNS เป็นเวลานานขึ้น
@@ -5204,12 +5320,14 @@
        ตั้งแต่เวอร์ชัน M106 เป็นต้นไป ระบบจะเปิดใช้วิธีการป้อนข้อมูลที่อนุญาตโดยอัตโนมัติในเซสชันคีออสก์
 
       หมายเหตุ: หากไม่รองรับวิธีการป้อนข้อมูลในปัจจุบัน ระบบจะเปลี่ยนไปใช้เลย์เอาต์ของแป้นพิมพ์ฮาร์ดแวร์ (หากอนุญาตให้ใช้ได้) หรือวิธีการแรกที่ใช้ได้ในรายการนี้ โดยจะไม่สนใจวิธีการที่ใช้ไม่ได้หรือไม่รองรับ</translation>
+<translation id="6483115462650732746">แสดงเมนูการช่วยเหลือพิเศษแบบลอยในโหมดคีออสก์</translation>
 <translation id="6489084406497912050">ควบคุมว่าผู้ใช้จะเพิ่มบัญชี Kerberos ได้หรือไม่
 
           หากเปิดใช้นโยบายนี้หรือไม่ได้ตั้งค่า ผู้ใช้จะเพิ่มบัญชี Kerberos ได้ผ่านการตั้งค่าบัญชี Kerberos ในหน้าการตั้งค่า Kerberos ผู้ใช้จะควบคุมบัญชีที่ตนเพิ่มไว้ได้โดยสมบูรณ์และจะแก้ไขหรือนำบัญชีออกได้ด้วย
 
           หากปิดใช้นโยบายนี้ ผู้ใช้จะเพิ่มบัญชี Kerberos ไม่ได้ ผู้ใช้จะเพิ่มบัญชีได้ผ่านนโยบาย "กำหนดค่าบัญชี Kerberos" เท่านั้น นี่เป็นวิธีล็อกบัญชีที่มีประสิทธิภาพ</translation>
 <translation id="6491139795995924304">อนุญาตบลูทูธบนอุปกรณ์</translation>
+<translation id="6491305972928809525">ไม่แสดงเมนูการช่วยเหลือพิเศษแบบลอยในโหมดคีออสก์</translation>
 <translation id="6491872498385040936">นโยบายนี้เลิกใช้งานไปแล้ว ลองใช้ <ph name="FORCE_YOUTUBE_RESTRICT_POLICY_NAME" /> ซึ่งจะลบล้างนโยบายนี้และช่วยให้ปรับแต่งการตั้งค่าได้ละเอียดยิ่งขึ้น
 
       บังคับใช้โหมดที่จำกัดปานกลางใน YouTube และป้องกันไม่ให้ผู้ใช้เปลี่ยนการตั้งค่านี้
@@ -5217,6 +5335,7 @@
       หากเปิดใช้การตั้งค่านี้ ระบบจะบังคับใช้โหมดที่จำกัดปานกลางเป็นอย่างน้อยใน YouTube อยู่เสมอ
 
       หากปิดใช้การตั้งค่านี้หรือไม่ได้ตั้งค่า <ph name="PRODUCT_NAME" /> จะไม่บังคับใช้โหมดที่จำกัดใน YouTube แต่นโยบายภายนอก เช่น นโยบายของ YouTube อาจยังคงบังคับใช้โหมดที่จำกัด</translation>
+<translation id="6492177700737407141">ผู้ใช้ที่ลงทะเบียนในโปรแกรมการปกป้องขั้นสูงจะได้รับการปกป้องผู้บริโภคระดับมาตรฐานเท่านั้น</translation>
 <translation id="6492737559291967859">การตั้งค่านโยบายจะระบุภาษาที่ <ph name="PRODUCT_NAME" /> ใช้
 
       หากปิดใช้นโยบายนี้หรือไม่ตั้งค่า ระบบจะใช้ภาษาแรกที่ใช้ได้จากรายการต่อไปนี้
@@ -5258,6 +5377,7 @@
 <translation id="6521971538031711337">ป้องกันไม่ให้ผู้ใช้ที่มีการจัดการกำหนดค่าชื่อโฮสต์ของอุปกรณ์</translation>
 <translation id="6523079496775454310">เปิดใช้การให้ความยินยอมสำหรับสัญญาณของอุปกรณ์จากผู้ใช้ที่มีการจัดการในอุปกรณ์ที่ไม่มีการจัดการ</translation>
 <translation id="652593254122955308">หมดเวลาจนกว่าจะปิดโปรไฟล์ที่ไม่มีการใช้งาน</translation>
+<translation id="6527674993612811419">แสดงคำเตือนและปิดใช้การป้อนข้อความอัตโนมัติในแบบฟอร์มที่ไม่ปลอดภัย</translation>
 <translation id="6532026122543921610">หากนโยบาย <ph name="SYSTEM_TIMEZONE_POLICY_NAME" /> ไม่ปิดการตรวจหาเขตเวลาอัตโนมัติ การตั้งค่านโยบายก็จะกำหนดวิธีตรวจหาเขตเวลาอัตโนมัติ ซึ่งผู้ใช้เปลี่ยนแปลงไม่ได้
 
       การตั้งค่านโยบายเป็น
@@ -5268,7 +5388,9 @@
 
       หากไม่ได้ตั้งค่า ตั้งค่าไว้เป็น "ให้ผู้ใช้เลือก" หรือตั้งค่าไว้เป็น "ไม่มี" ผู้ใช้จะควบคุมการตรวจหาเขตเวลาอัตโนมัติโดยใช้ส่วนควบคุมปกติใน chrome://settings</translation>
 <translation id="6532769014584932288">อนุญาตการทำงานขณะล็อก</translation>
+<translation id="6533881418188970751">ถามผู้ใช้เกี่ยวกับตำแหน่งที่ต้องการบันทึกไฟล์ก่อนจะเริ่มดาวน์โหลด</translation>
 <translation id="6536600139108165863">เริ่มต้นใหม่โดยอัตโนมัติเมื่ออุปกรณ์ปิดเครื่อง</translation>
+<translation id="6538653424603921690">ปิดใช้หน้าจอความเป็นส่วนตัวในหน้าจอลงชื่อเข้าใช้เสมอ</translation>
 <translation id="6539246272469751178">นโยบายนี้ไม่ส่งผลต่อแอป Android โดยแอป Android จะใช้ไดเรกทอรีการดาวน์โหลดเริ่มต้นเสมอ และไม่สามารถเข้าถึงไฟล์ใดๆ ที่ดาวน์โหลดโดย <ph name="PRODUCT_OS_NAME" /> ลงในไดเรกทอรีการดาวน์โหลดที่ไม่ใช่ค่าเริ่มต้น</translation>
 <translation id="654303922206238013">กลยุทธ์การย้ายข้อมูลสำหรับ eCryptfs</translation>
 <translation id="6543277347547044538">ระยะสิ้นสุด ไม่รวมวันที่สิ้นสุด</translation>
@@ -5280,6 +5402,7 @@
 <translation id="654546276700640113">การตั้งค่านโยบายจะทำให้ระบบบังคับใช้ความยาว PIN สูงสุดที่กำหนดค่าไว้ ค่า 0 หรือน้อยกว่าหมายความว่าผู้ใช้จะตั้ง PIN ที่มีความยาวเท่าใดก็ได้ หากค่าน้อยกว่า <ph name="PIN_UNLOCK_MINIMUM_LENGTH_POLICY_NAME" /> แต่มากกว่า 0 แสดงว่าได้ตั้งค่าความยาวสูงสุดเป็นความยาวขั้นต่ำ
 
       การไม่ตั้งค่านโยบายจะทำให้ไม่มีการบังคับใช้ความยาวสูงสุด</translation>
+<translation id="6546185795045702747">อนุญาตให้เว็บไซต์ตรวจสอบว่าผู้ใช้มีวิธีการชำระเงินที่บันทึกไว้ไหม</translation>
 <translation id="6553143066970470539">เปอร์เซ็นต์ความสว่างหน้าจอ</translation>
 <translation id="6555557921186817432">กำหนดเวลารีบูตอัตโนมัติหลังจากใช้การอัปเดต "<ph name="PRODUCT_OS_NAME" />" แล้ว
 
@@ -5347,6 +5470,7 @@
           นโยบายนี้จะไม่มีผลหากเปิดใช้ ปล่อยว่างไว้ หรือไม่ได้ตั้งค่า</translation>
 <translation id="6583249367505445969">ปิดใช้แถบบุ๊กมาร์ก</translation>
 <translation id="6584541828182430328">ปิดใช้การแสดงการแจ้งเตือนโหมดเต็มหน้าจอ</translation>
+<translation id="6588634282328239769">แสดง URL แบบเต็ม</translation>
 <translation id="6593350713192882944">เปิดใช้คำตอบด่วน</translation>
 <translation id="6594372503585248865">เปิดใช้การแสดง UI ที่เกี่ยวข้องกับการเชื่อมต่อบนเดสก์ท็อปของโฮสต์ระยะไกลเมื่อมีการเชื่อมต่อ</translation>
 <translation id="65947892191748867">ปิดใช้การให้ความยินยอมสำหรับสัญญาณของอุปกรณ์จากผู้ใช้ที่มีการจัดการในอุปกรณ์ที่ไม่มีการจัดการ</translation>
@@ -5383,6 +5507,7 @@
 <translation id="6625136649067113817">ธงบูลีนที่ระบุว่าแป้นพิมพ์บนหน้าจอจะมีฟีเจอร์การตรวจตัวสะกดหรือไม่</translation>
 <translation id="66265932317331474">รายงานข้อมูล CPU</translation>
 <translation id="6628120204569232711">รายงานสถานะของพื้นที่เก็บข้อมูล</translation>
+<translation id="662991036483361836">ป้องกันไม่ให้ผู้ใช้เปิดใช้ฟีเจอร์การแชร์ใกล้เคียง</translation>
 <translation id="663685822663765995">จำกัดโหมดสีการพิมพ์</translation>
 <translation id="6637946190026453735">รายการของการตั้งค่าบริการเครื่องมือเชื่อมต่อ <ph name="PRODUCT_NAME" /> Enterprise ที่จะใช้กับเครื่องมือเชื่อมต่อ Enterprise <ph name="ON_PRINT_ENTERPRISE_CONNECTOR" /> ซึ่งจะเรียกใช้งานเมื่อพิมพ์หน้าหรือไฟล์จาก <ph name="PRODUCT_NAME" />
 
@@ -5608,11 +5733,13 @@
 <translation id="6841254611279513739">การตั้งค่านโยบายนี้จะตั้งค่าการพิมพ์เป็นสีเท่านั้น ขาวดำเท่านั้น หรือไม่มีข้อจำกัดโหมดสี การไม่ตั้งค่านโยบายจะทำให้ไม่มีข้อจำกัด</translation>
 <translation id="6843008643303282259">อัตราการอัปโหลดที่ต้องการเป็นหน่วย kbits/s</translation>
 <translation id="6843296367238757293">นโยบายนี้เลิกใช้งานแล้ว เราไม่แนะนำให้ใช้นโยบายนี้ อ่านเพิ่มเติมที่ https://support.google.com/chrome/a/answer/7643500</translation>
+<translation id="6845162369344636241">ปิดใช้แป้นพิมพ์บนหน้าจอในหน้าจอการเข้าสู่ระบบ</translation>
 <translation id="6846126863870444592">นโยบายนี้ระบุส่วนขยายที่อนุญาตให้ข้ามกล่องโต้ตอบการยืนยันงานพิมพ์เมื่อส่วนขยายนั้นใช้ฟังก์ชัน <ph name="SUBMIT_JOB_FUNCTION" /> ของ <ph name="PRINTING_API" /> เพื่อส่งงานพิมพ์
 
       หากส่วนขยายใดไม่อยู่ในรายการหรือไม่ได้ตั้งค่ารายการไว้ ระบบจะแสดงกล่องโต้ตอบการยืนยันงานพิมพ์ให้ผู้ใช้เห็นทุกครั้งที่มีการเรียกใช้ฟังก์ชัน <ph name="SUBMIT_JOB_FUNCTION" />
 
       นโยบายนี้เลิกใช้งานไปแล้ว โปรดใช้ <ph name="PRINTING_API_EXTENSIONS_ALLOWLIST_POLICY_NAME" /> แทน</translation>
+<translation id="6847379587945465889">เปิดใช้การโอนคุกกี้ของ SAML SSO ไปยังเซสชันของผู้ใช้ระหว่างที่ลงชื่อเข้าใช้</translation>
 <translation id="684856667300805181">เราได้นำนโยบายนี้ออกจาก <ph name="PRODUCT_NAME" /> 68 และใช้ <ph name="ARC_GLS_POLICY_NAME" /> แทน</translation>
 <translation id="6848721032946289937">การตั้งค่านโยบายเป็น "เปิดใช้" หรือไม่ตั้งค่าจะเปิดใช้การเร่งฮาร์ดแวร์ (หากมี)
 
@@ -5751,6 +5878,7 @@
       การไม่ตั้งค่านโยบายนี้หมายความว่าหากไม่มีการเปิดเผยความโปร่งใสของใบรับรองตามที่ใบรับรองกำหนด <ph name="PRODUCT_NAME" /> ก็จะไม่เชื่อถือใบรับรองนั้น
 
       URL มีรูปแบบดังนี้ (https://www.chromium.org/administrators/url-blocklist-filter-format) แต่เนื่องจากความถูกต้องของใบรับรองสำหรับชื่อโฮสต์หนึ่งๆ ขึ้นอยู่กับรูปแบบ พอร์ต หรือเส้นทาง <ph name="PRODUCT_NAME" /> จึงพิจารณาเพียงแค่ส่วนชื่อโฮสต์ของ URL เท่านั้น ไม่รองรับโฮสต์ไวลด์การ์ด</translation>
+<translation id="6969332115615661188">ปิดใช้งานอินพุตวิดีโอ</translation>
 <translation id="6972540544240464302">เลือกการกำหนดค่าเครื่องจัดตารางเวลางาน</translation>
 <translation id="6975533677426693807">เปิดไฟล์ PDF โดยใช้โปรแกรมอ่าน PDF ภายในเสมอ</translation>
 <translation id="6979158407327259162">Google ไดรฟ์</translation>
@@ -5777,6 +5905,7 @@
 
        ใน <ph name="MS_WIN_NAME" /> ฟังก์ชันการทำงานนี้ใช้ได้เฉพาะในอินสแตนซ์ที่เข้าร่วมโดเมน <ph name="MS_AD_NAME" />, ทำงานใน Windows 10 Pro หรือลงทะเบียนใน<ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" /> ใน <ph name="MAC_OS_NAME" /> ฟังก์ชันการทำงานนี้ใช้ได้เฉพาะในอินสแตนซ์ที่จัดการผ่าน MDM หรือเข้าร่วมโดเมนผ่าน MCX</translation>
 <translation id="6990736882800900101">อนุญาตให้เปิดป๊อปอัปทั้งหมดที่มีการกำหนดเป้าหมายแบบ <ph name="BLANK_PAGE_NAME" /> เพื่อโต้ตอบกับหน้าที่ขอเปิดป๊อปอัป เว้นแต่หน้าที่เปิดเลือกไม่ใช้การโต้ตอบดังกล่าวอย่างชัดแจ้ง </translation>
+<translation id="6992943675460798920">อนุญาตให้ผู้ใช้ถ่ายภาพหน้าจอและบันทึกวิดีโอ</translation>
 <translation id="6994082778848658360">ระบุวิธีที่สามารถใช้ฮาร์ดแวร์องค์ประกอบความปลอดภัยในเครื่องเพื่อทำการตรวจสอบสิทธิ์จากปัจจัยที่สอง หากขั้นตอนดังกล่าวใช้ได้กับฟีเจอร์นี้ จะมีการใช้ปุ่มเปิด/ปิดของเครื่องในการตรวจหาตัวตนจริงของผู้ใช้
 
       หากเลือก "ปิดใช้" จะไม่มีการแจ้งปัจจัยที่ 2
@@ -5796,7 +5925,9 @@
 <translation id="7003746348783715221">ค่ากำหนดของ <ph name="PRODUCT_NAME" /></translation>
 <translation id="7007283257527015835">ธงบูลีนที่ระบุว่าเครื่องจัดการโปรโตคอลควรตั้งค่าเป็นค่าเริ่มต้นหรือไม่</translation>
 <translation id="7008308728445338159">เปิดใช้การตรวจสอบการสกัดกั้น DNS แล้ว</translation>
+<translation id="7009043124653876961">ปิดใช้การแนะนำอีโมจิเมื่อผู้ใช้พิมพ์</translation>
 <translation id="7010006999849135962">เปิดใช้การตรวจสอบสิทธิ์โดยไม่ใช้ PIN สำหรับโฮสต์การเข้าถึงระยะไกล</translation>
+<translation id="7014427417852575165">ผู้ใช้ที่ลงทะเบียนในโปรแกรมการปกป้องขั้นสูงจะได้รับการปกป้องเพิ่มเติม</translation>
 <translation id="7016587686120059767">ปิดใช้โหมดผู้มาเยือน</translation>
 <translation id="7016736684656067099">การตั้งค่านโยบายเป็น 1 จะให้ทุกเว็บไซต์แสดงรูปภาพได้ การตั้งค่านโยบายเป็น 2 จะปฏิเสธไม่ให้แสดงรูปภาพ
 
@@ -5845,8 +5976,10 @@
 <translation id="7039815268521168329">แสดงขั้นตอนการเปิดใช้ Voice Match สำหรับ Google Assistant ระหว่างการตั้งค่าเริ่มต้น</translation>
 <translation id="7040229947030068419">ค่าตัวอย่าง:</translation>
 <translation id="7044883996351280650">ควบคุมบริการสำรองและกู้คืนข้อมูลใน Android</translation>
+<translation id="7046113122884041950">ไม่อนุญาตให้ใช้ Smart Lock</translation>
 <translation id="7047495632846973438">ระบุว่าจะตรวจสอบนโยบายสิทธิ์ display-capture หรือข้ามไป</translation>
 <translation id="7055022222176591388">ไม่อนุญาต "<ph name="FLASH_PLUGIN_NAME" />" ที่ล้าสมัย</translation>
+<translation id="7062803946218028349">อนุญาตให้มีการเปิดใช้ฮับโทรศัพท์</translation>
 <translation id="7066292150801784098">ปิดไม่ให้ผู้ใช้ระยะไกลโต้ตอบกับหน้าต่างที่ลอยอยู่ในเซสชันความช่วยเหลือระยะไกล</translation>
 <translation id="706669471845501145">อนุญาตให้ไซต์แสดงการแจ้งเตือนของเดสก์ท็อป</translation>
 <translation id="70681795425744184">ไม่อนุญาตให้ CRD เรียกใช้คำขอ WebAuthn API ที่ทำพร็อกซีจากโฮสต์ระยะไกล</translation>
@@ -5855,6 +5988,7 @@
 <translation id="7072567600438630966">อนุญาตให้มีการเปิดใช้ฮับโทรศัพท์</translation>
 <translation id="7074437930865599190">ทำให้เวอร์ชันหลักของสตริง User-Agent หยุดอยู่ที่ 99</translation>
 <translation id="707988220162760379">เปิดไฟล์ PDF โดยใช้โปรแกรมอ่าน PDF ภายนอกเสมอ</translation>
+<translation id="7081699207881888532">เปิดใช้การแนะนำอีโมจิเมื่อผู้ใช้พิมพ์</translation>
 <translation id="7081784525008938771">การตั้งค่านโยบายเป็น "เปิดใช้" หรือไม่ตั้งค่าทำให้ผู้ใช้ไม่ถูกพิจารณาว่าไม่มีความเคลื่อนไหวในขณะกำลังเล่นวิดีโอ ซึ่งจะป้องกันระยะหน่วงเวลาของการไม่ใช้งาน ระยะหน่วงเวลาการหรี่แสงหน้าจอ ระยะหน่วงเวลาการปิดหน้าจอ และระยะหน่วงเวลาการล็อกหน้าจอ รวมถึงป้องกันไม่ให้มีการทำงานที่สอดคล้องกัน
 
       การตั้งค่านโยบายเป็น "ปิดใช้" ทำให้ระบบสามารถระบุว่าผู้ใช้ไม่มีความเคลื่อนไหวแม้จะมีกิจกรรมวิดีโอ</translation>
@@ -6111,7 +6245,9 @@
       หากกำหนดนโยบายนี้เป็น "RemoveLRUIfDormant" การล้างข้อมูลอัตโนมัติจะลบผู้ใช้ที่ไม่ได้เข้าสู่ระบบอย่างน้อย 3 เดือนไปเรื่อยๆ ตามลำดับการไม่เข้าสู่ระบบนานที่สุดจนกระทั่งมีพื้นที่ว่างเหลือพอ
 
       หากไม่ได้กำหนดค่านโยบายนี้ การล้างข้อมูลอัตโนมัติจะใช้กลยุทธ์เริ่มต้นที่มีในตัว ซึ่งปัจจุบันคือกลยุทธ์ "RemoveLRUIfDormant"</translation>
+<translation id="733381360015511815">กำหนดค่ารายการ Isolated Web App ซึ่งบังคับติดตั้งแล้ว</translation>
 <translation id="7334517274921831425">อนุญาตให้ผู้ใช้สามารถใช้ <ph name="BOREALIS_NAME" /> ใน <ph name="PRODUCT_OS_NAME" /></translation>
+<translation id="7334639219471717734">ไม่อนุญาตให้ผู้ใช้ลงชื่อเข้าใช้อุปกรณ์ที่มี Smart Lock</translation>
 <translation id="7336785017449297672">ควบคุมการตั้งค่านาฬิกาและเขตเวลา</translation>
 <translation id="7336878834592315572">เก็บคุกกี้ไว้ในระหว่างช่วงเวลาของเซสชัน</translation>
 <translation id="7338217396351647423">การตั้งค่านโยบายจะระบุชุดนโยบายที่จะส่งไปยังรันไทม์ของ ARC ผู้ดูแลระบบจะใช้การตั้งค่านี้เพื่อเลือกแอป Android ที่จะติดตั้งโดยอัตโนมัติได้ โปรดป้อนค่าเป็นรูปแบบ JSON ที่ถูกต้อง
@@ -6121,6 +6257,7 @@
 <translation id="7340034977315324840">รายงานจำนวนครั้งของกิจกรรมบนอุปกรณ์</translation>
 <translation id="7343004974628511824">ทำการตรวจสอบการสกัดกั้น DNS</translation>
 <translation id="7343497214039883642">ไฟล์การกำหนดค่าเครื่องพิมพ์องค์กรสำหรับอุปกรณ์</translation>
+<translation id="7357148531287978404">ปิดใช้งานอินพุตเสียง</translation>
 <translation id="7358012133037776875">ให้คุณกำหนดรายการรูปแบบ URL ของเว็บไซต์ซึ่งระบุเว็บไซต์ที่จะอนุญาตสิทธิ์สำหรับตำแหน่งหน้าต่างโดยอัตโนมัติ การดำเนินการนี้จะทำให้เว็บไซต์สามารถดูข้อมูลเกี่ยวกับหน้าจอของอุปกรณ์แล้วใช้ข้อมูลนั้นในการเปิดและวางหน้าต่างหรือขอโหมดเต็มหน้าจอในบางหน้าจอได้
 
       ดูข้อมูลโดยละเอียดเกี่ยวกับรูปแบบ URL ที่ถูกต้องของเว็บไซต์ได้ที่ https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns ใช้ไวลด์การ์ด (<ph name="WILDCARD_VALUE" />) ได้ นโยบายนี้จะจับคู่โดยอิงตามต้นทางเท่านั้น ระบบจึงไม่สนใจเส้นทางใดก็ตามในรูปแบบ URL
@@ -6366,6 +6503,7 @@
       นโยบายนี้ใช้กับผู้ใช้ที่เป็นเด็กเท่านั้น
       เมื่อตั้งค่านโยบายนี้ คุณจะยืนยันรหัสการเข้าถึงของผู้ปกครองในอุปกรณ์ของผู้ใช้ที่เป็นเด็กได้
       เมื่อไม่ได้ตั้งค่านโยบายนี้ คุณจะยืนยันรหัสการเข้าถึงของผู้ปกครองในอุปกรณ์ของผู้ใช้ที่เป็นเด็กไม่ได้</translation>
+<translation id="7623431489198474050">ปิดใช้เอกสารรับรองระยะไกลสำหรับการปกป้องเนื้อหา</translation>
 <translation id="7628747690141606652">ปิดใช้คำแปลของคำตอบด่วน</translation>
 <translation id="7629840767216985001">การตั้งค่านโยบายเป็น "จริง" จะเปิดใช้เคอร์เซอร์ขนาดใหญ่ในหน้าจอลงชื่อเข้าใช้ การตั้งค่านโยบายเป็น "เท็จ" จะปิดใช้เคอร์เซอร์ขนาดใหญ่ในหน้าจอลงชื่อเข้าใช้
 
@@ -6527,6 +6665,7 @@
       การไม่ตั้งค่านโยบายหมายความว่า <ph name="DEFAULT_CLIPBOARD_SETTING" /> จะมีผลกับทุกเว็บไซต์ (หากตั้งค่าไว้) แต่หากไม่ได้ตั้งค่าไว้ การตั้งค่าส่วนตัวของผู้ใช้จะมีผล
 
       ดูข้อมูลโดยละเอียดเกี่ยวกับรูปแบบ <ph name="URL_LABEL" /> ที่ถูกต้องได้ที่ https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns <ph name="WILDCARD_VALUE" /> ไม่ใช่ค่าที่ยอมรับสำหรับนโยบายนี้</translation>
+<translation id="7791215522423893512">ไม่อนุญาตให้ผู้ใช้ถ่ายภาพหน้าจอหรือบันทึกวิดีโอ</translation>
 <translation id="7792796937016596423">ผู้ใช้จะทำการบันทึกแพ็กเก็ตเครือข่ายไม่ได้</translation>
 <translation id="7798441698807517880">นโยบายนี้ถูกนำออกตั้งแต่ <ph name="PRODUCT_NAME" /> เวอร์ชัน 89 เนื่องจากเลิกใช้งาน <ph name="FLASH_PLUGIN_NAME" /> แล้ว
 
@@ -6565,6 +6704,7 @@
           หากเปิดใช้นโยบายนี้ ระบบจะเปิดใช้ฟังก์ชันการทำงานของ Kerberos คุณเพิ่มบัญชี Kerberos ได้ผ่านนโยบาย "กำหนดค่าบัญชี Kerberos" หรือผ่านการตั้งค่าบัญชี Kerberos ในหน้าการตั้งค่า Kerberos
 
           หากปิดใช้นโยบายนี้หรือไม่ได้ตั้งค่า ระบบจะปิดใช้การตั้งค่าบัญชี Kerberos คุณจะเพิ่มบัญชี Kerberos ไม่ได้และจะใช้การตรวจสอบสิทธิ์ของ Kerberos ไม่ได้ บัญชี Kerberos ที่มีอยู่ทั้งหมดจะถูกลบ รวมถึงรหัสผ่านที่จัดเก็บไว้ทั้งหมดด้วย</translation>
+<translation id="7853140303943875314">เปิดใช้การช่วยเหลือสำหรับการเข้าสู่ระบบโดยอัตโนมัติ</translation>
 <translation id="7863947545897944083">เปิดใช้ฟีเจอร์การช่วยเหลือพิเศษด้วยโหมดคอนทราสต์สูงในหน้าจอการเข้าสู่ระบบ
 
           หากตั้งค่านโยบายนี้เป็น "จริง" โหมดคอนทราสต์สูงจะเปิดใช้เสมอในหน้าจอการเข้าสู่ระบบ
@@ -6596,6 +6736,7 @@
 
       คำแนะนำ: ล็อกหน้าจอเมื่อไม่มีความเคลื่อนไหวด้วยการเปิดการล็อกหน้าจอเมื่อถูกระงับการใช้งาน และให้<ph name="PRODUCT_OS_NAME" /> ระงับการใช้งานหลังจากหมดระยะหน่วงเวลาเมื่อไม่มีความเคลื่อนไหว ใช้นโยบายนี้ในเวลาที่การล็อกหน้าจอควรจะเกิดขึ้นก่อนเวลาระงับการใช้งานเป็นเวลานาน หรือเมื่อไม่ต้องการระงับการใช้งานเมื่อไม่มีความเคลื่อนไหวเท่านั้น</translation>
 <translation id="7895553628261067384">การเข้าถึงระยะไกล</translation>
+<translation id="789975630884141379">เปิดใช้เนื้อหาที่แนะนำ</translation>
 <translation id="7899952578398457262">ขอความยินยอมจากผู้ใช้ที่มีการจัดการเพื่อแชร์สัญญาณของอุปกรณ์ที่ไม่มีการจัดการเพื่อรับสิทธิ์เข้าถึง</translation>
 <translation id="7900469325540540107">เก็บข้อมูลการท่องเว็บไว้เมื่อสร้างโปรไฟล์องค์กรโดยค่าเริ่มต้น</translation>
 <translation id="7902040092815978832">แสดงแป้นพิมพ์ตัวเลขสำหรับรหัสผ่าน</translation>
@@ -6692,6 +6833,7 @@
 
           ควรระบุค่าของนโยบายเป็นมิลลิวินาที ค่าจะถูกบีบให้เหลือน้อยกว่าหรือเท่ากับระยะหน่วงเวลาของการไม่มีความเคลื่อนไหว</translation>
 <translation id="7992613144342460685">อนุญาตสิทธิ์สำหรับตำแหน่งหน้าต่างในเว็บไซต์เหล่านี้</translation>
+<translation id="7994034037344330969">ระบุรายการโดเมนเว็บแอปพลิเคชันของบุคคลที่สามที่ได้รับอนุญาตให้ใช้ Desk API เพื่อควบคุมเดสก์ของ ChromeOS รูปแบบ URL เหล่านี้ควรเป็นไปตามรูปแบบที่กำหนดสำหรับพร็อพเพอร์ตี้ "ตรงกัน" ใน https://developer.chrome.com/docs/extensions/mv3/manifest/externally_connectable/#reference</translation>
 <translation id="7995610550667275367">การสแกน (รองรับตั้งแต่เวอร์ชัน 87 เป็นต้นไป)</translation>
 <translation id="7999023147219236247">นโยบายสำหรับการให้สิทธิ์คำขอเข้าถึงแอป PERMISSION_POLICY_UNSPECIFIED: ไม่มีการระบุนโยบาย หากไม่มีการระบุนโยบายสำหรับสิทธิ์ในทุกระดับ ระบบจะใช้การทำงานของ "PROMPT" โดยค่าเริ่มต้น PROMPT: แจ้งให้ผู้ใช้ให้สิทธิ์ GRANT: ให้สิทธิ์โดยอัตโนมัติ DENY: ปฏิเสธสิทธิ์โดยอัตโนมัติ</translation>
 <translation id="7999336306414770162">ปิดใช้การรายงานข้อมูล VPD ของอุปกรณ์</translation>
@@ -6714,6 +6856,7 @@
       หากตั้งค่านโยบายนี้เป็น "เปิดใช้" ผู้ใช้จะใช้เบราว์เซอร์ <ph name="LACROS_NAME" /> ได้</translation>
 <translation id="8020222525161221827">เปิดใช้ Desk API สำหรับการควบคุม ChromeOS ของบุคคลที่สาม</translation>
 <translation id="802147957407376460">หมุนหน้าจอ 0 องศา</translation>
+<translation id="8021777486638359878">ถือว่าผู้ใช้ไม่มีการใช้งานขณะเล่นเสียง</translation>
 <translation id="80243978433618492">ไม่อนุญาตให้กรองพารามิเตอร์ของ URL</translation>
 <translation id="8025620823136567878">แป้นพิมพ์ลัดสากลจะแมปกับตำแหน่งของแป้นต่างๆ บนแป้นพิมพ์แทนที่จะเป็นรูปอักขระบนแป้น</translation>
 <translation id="802776363472387903">แฮช SHA-256 ของรูปภาพ <ph name="PLUGIN_VM_NAME" /></translation>
@@ -6761,6 +6904,12 @@
 <translation id="8078297389450285582">การตั้งค่านโยบายเป็น "เปิดใช้" หรือไม่ตั้งค่าจะเปิดใช้รูปแบบการหรี่แสงอัจฉริยะและสามารถขยายเวลาจนกว่าหน้าจอจะหรี่แสง หากมีการหน่วงเวลา ระบบจะปรับการหน่วงเวลาของการปิดหน้าจอ การล็อกหน้าจอ ตลอดจนการหน่วงเวลาที่ไม่มีความเคลื่อนไหวเพื่อรักษาระยะห่างจากการหน่วงเวลาการหรี่แสงหน้าจอให้อยู่ในระดับเดียวกันกับค่าเดิมที่ตั้งไว้
 
       การตั้งค่านโยบายเป็น "ปิดใช้" หมายความว่ารูปแบบการหรี่แสงอัตโนมัติจะไม่มีผลต่อการหรี่แสงของหน้าจอ</translation>
+<translation id="8079544387901313374">โปรดทราบว่าเราเลิกใช้งานนโยบายนี้และนําออกจาก "<ph name="PRODUCT_OS_NAME" />" เวอร์ชัน 88 แล้ว รวมถึงไม่รองรับเซสชันสาธารณะอีกต่อไป โปรดใช้ <ph name="DEVICE_LOCAL_ACCOUNTS_POLICY_NAME" /> เพื่อกำหนดค่าเซสชันผู้มาเยือนที่มีการจัดการแทน
+      หากตั้งค่านโยบายนี้เป็น "เท็จ" เซสชันผู้มาเยือนที่มีการจัดการจะทำงานตามลักษณะที่บันทึกไว้ใน https://support.google.com/chrome/a/answer/3017014 - "เซสชันสาธารณะ" มาตรฐาน
+
+      หากตั้งค่านโยบายนี้เป็น "จริง" หรือไม่ได้ตั้งค่า เซสชันผู้มาเยือนที่มีการจัดการจะใช้ลักษณะการทำงานของ "เซสชันที่มีการจัดการ" ซึ่งจะยกเลิกข้อจำกัดจำนวนมากที่มีอยู่ใน "เซสชันสาธารณะ" ทั่วไป
+
+      หากตั้งค่านโยบายนี้ ผู้ใช้จะเปลี่ยนแปลงหรือลบล้างนโยบายไม่ได้</translation>
 <translation id="8080200590486938727">ปิดใช้เครื่องมือค้นหาปลั๊กอิน</translation>
 <translation id="8089200718228084417">เปิดใช้การพิมพ์ Privet ที่เลิกใช้งาน</translation>
 <translation id="8089236320223488328">ใช้ลักษณะการทำงานเริ่มต้นเมื่อกำหนดว่าเว็บไซต์ที่ไม่ปลอดภัยสามารถส่งคำขอไปยังปลายทางเครือข่ายใดๆ ได้หรือไม่</translation>
@@ -6798,6 +6947,7 @@
 <translation id="8133152694354699657">การตั้งค่านโยบายเป็น "จริง" หรือไม่ได้ตั้งค่าจะทำให้ฟีเจอร์แตะเพื่อค้นหาพร้อมใช้งานสำหรับผู้ใช้ โดยผู้ใช้เลือกได้ว่าจะเปิดหรือปิดฟีเจอร์นี้
 
       การตั้งค่านโยบายเป็น "เท็จ" จะปิดฟีเจอร์แตะเพื่อค้นหา</translation>
+<translation id="81354521512895891">เปิดใช้คอนทราสต์สูงในหน้าจอการเข้าสู่ระบบ</translation>
 <translation id="8136345780578030573">เปิดใช้ชุดบุคคลที่หนึ่ง</translation>
 <translation id="8136906469922284163">การตั้งค่านโยบายเป็น "จริง" อนุญาตให้หน้าเว็บแสดงป๊อปอัปในขณะที่มีการยกเลิกการโหลด
 
@@ -6852,8 +7002,10 @@
 
       การตั้งค่านโยบายเป็น "ปิดใช้" หรือไม่ได้ตั้งค่าจะไม่ส่งแพ็กเก็ต</translation>
 <translation id="8169452762291746260">ปิดใช้การตรวจสอบความสมบูรณ์ของอุปกรณ์</translation>
+<translation id="8171262216089271568">เปิดใช้เคอร์เซอร์ขนาดใหญ่ในหน้าจอการเข้าสู่ระบบ</translation>
 <translation id="8171924760436219650">สลับปุ่มหลักของเมาส์ไปเป็นปุ่มด้านขวาในหน้าจอการเข้าสู่ระบบ</translation>
 <translation id="8173864651667424191">ตัวเลือกการพิมพ์เป็นรูปภาพจะมีค่าเริ่มต้นเป็นตั้งค่าสำหรับตัวอย่างก่อนพิมพ์เอกสาร PDF เมื่อพร้อมใช้งาน</translation>
+<translation id="8175922758834816585">เปิดใช้ฟีเจอร์อธิบายและอ่านออกเสียงในหน้าจอการเข้าสู่ระบบและอนุญาตให้ผู้ใช้ปิดใช้ชั่วคราว</translation>
 <translation id="8176035528522326671">อนุญาตให้ผู้ใช้ขององค์กรเป็นผู้ใช้หลักแบบหลายโปรไฟล์เท่านั้น (ค่าเริ่มต้นสำหรับผู้ใช้ที่มีองค์กรเป็นผู้จัดการ)</translation>
 <translation id="8179161412673077784">ป้องกันไม่ให้เว็บไซต์ที่มีประสบการณ์การใช้งานที่ไม่เหมาะสมเปิดหน้าต่างหรือแท็บใหม่</translation>
 <translation id="8183108371184777472">ระงับการเปิดหน้าต่างเบราว์เซอร์ขึ้นมา</translation>
@@ -7068,6 +7220,7 @@
 <translation id="8378266419596669629">บล็อกสิทธิ์สำหรับแบบอักษรในเครื่องในเว็บไซต์เหล่านี้</translation>
 <translation id="8379317372795444261">อนุญาตการตรวจสอบสิทธิ์<ph name="BASIC_AUTH" />ในการเชื่อมต่อผ่าน HTTP</translation>
 <translation id="8381678031726288574">ใช้การตั้งค่าเริ่มต้นสำหรับการเลิกใช้งาน U2F API</translation>
+<translation id="8381774264911275515">ปิดใช้การโอนคุกกี้ของ SAML SSO ไปยังเซสชันของผู้ใช้ระหว่างที่ลงชื่อเข้าใช้</translation>
 <translation id="8382184662529825177">เปิดใช้การใช้งานการรับรองระยะไกลสำหรับการปกป้องเนื้อหาสำหรับอุปกรณ์</translation>
 <translation id="838870586332499308">เปิดใช้งานการโรมมิ่งข้อมูล</translation>
 <translation id="8393850527597048037">แพลตฟอร์มเท่านั้น</translation>
@@ -7196,6 +7349,7 @@
 
       คำเตือน: เราไม่แนะนำให้กำหนดค่าข้อจำกัดของเวอร์ชันเพราะอาจทำให้ผู้ใช้ไม่ได้รับการอัปเดตซอฟต์แวร์และการปรับปรุงความปลอดภัยที่สำคัญ การจำกัดการอัปเดตเป็นส่วนนำเวอร์ชันที่เจาะจงอาจทำให้ผู้ใช้มีความเสี่ยง</translation>
 <translation id="8508489378025029342">เปิดใช้การรายงานเวลาของกิจกรรมในอุปกรณ์</translation>
+<translation id="8511192250554640451">อนุญาตให้ตรรกะของ Chrome ควบคุมตัวจับเวลา JavaScript ในเบื้องหลัง และให้ผู้ใช้กำหนดค่าเอง</translation>
 <translation id="8519264904050090490">URL ข้อยกเว้นแบบกำหนดเองของผู้ใช้ที่ได้รับการจัดการ</translation>
 <translation id="8519516251436131647">เปิดใช้แป้นพิมพ์ลัดของฟีเจอร์การช่วยเหลือพิเศษ
 
@@ -7289,6 +7443,7 @@
           เมื่อไม่ได้ตั้งค่านโยบายนี้ไว้ ระบบจะใช้ระยะเวลาค่าเริ่มต้น
 
           ควรระบุค่าของนโยบายเป็นมิลลิวินาที</translation>
+<translation id="859937827887158048">ไม่อนุญาตให้ดาวน์โหลดการอัปเดตแบบเพียร์ทูเพียร์โดยอัตโนมัติ</translation>
 <translation id="8603454805657060638">การตั้งค่านโยบายจะทำให้ผู้ดูแลระบบเปลี่ยนที่อยู่ MAC (Media Access Control หรือการควบคุมการเข้าถึงสื่อ) เมื่อเชื่อมต่ออุปกรณ์กับแท่นชาร์จได้ เมื่อแท่นชาร์จเชื่อมต่อกับอุปกรณ์บางรุ่น ที่อยู่ MAC ของแท่นชาร์จที่กำหนดของอุปกรณ์จะช่วยระบุตัวตนอุปกรณ์ในอีเทอร์เน็ตโดยค่าเริ่มต้น
 
       หากเลือก "DeviceDockMacAddress" หรือไม่ได้ตั้งค่านโยบาย ระบบจะใช้ที่อยู่ MAC ของแท่นชาร์จที่กำหนดของอุปกรณ์
@@ -7337,6 +7492,7 @@
 <translation id="8656110680728938054">เปิดใช้การเลือกเพื่อให้อ่าน</translation>
 <translation id="8659843732895043951">อนุญาตคลิปบอร์ดในเว็บไซต์เหล่านี้</translation>
 <translation id="8661297125441579970">ไม่อนุญาตให้ย้ายข้อมูลและใช้ ARC</translation>
+<translation id="8661980316738569557">เปิดใช้คอนทราสต์สูง</translation>
 <translation id="8664285601317301180">นโยบายนี้ควบคุมค่าของ<ph name="IPP_ATTRIBUTE" /> <ph name="CLIENT_INFO_IPP_ATTRIBUTE" /> <ph name="IPP_PROTOCOL" /> (<ph name="INTERNET_PRINTING_PROTOCOL" />) ในงานพิมพ์
 
       การตั้งค่านโยบายเป็นสตริงจะได้รับผลกระทบจากการเพิ่มรายการ <ph name="CLIENT_INFO_IPP_ATTRIBUTE" /> ในงานพิมพ์ทั้งหมด สมาชิก <ph name="CLIENT_NAME_IPP_ATTRIBUTE" /> ของรายการ <ph name="CLIENT_INFO_IPP_ATTRIBUTE" /> ที่เพิ่มจะตั้งเป็นค่าของนโยบายหลังจากการแทนที่ตัวแปร
@@ -7402,6 +7558,7 @@
 
       หากตั้งค่านโยบายเป็น "เท็จ" หรือไม่ได้ตั้งค่า จะไม่มีการรายงานข้อมูล
       หากตั้งค่าเป็น "จริง" จะมีการรายงานข้อมูลบลูทูธของอุปกรณ์</translation>
+<translation id="8700633400000170881">ปุ่มซ้ายคือปุ่มหลัก</translation>
 <translation id="8703378568562190813">การตั้งค่านโยบายจะให้คุณสร้างรายการรูปแบบ URL ซึ่งระบุเว็บแอปที่ได้รับอนุญาตให้เข้าถึงไฟล์ประเภทต่างๆ
 
       การไม่ตั้งค่านโยบายหมายความว่า <ph name="DEFAULT_FILE_HANDLING_GUARD_SETTING_POLICY_NAME" /> จะมีผลกับเว็บแอปทั้งหมด (หากตั้งค่าไว้) แต่หากไม่ได้ตั้งค่าไว้ การตั้งค่าส่วนตัวของผู้ใช้จะมีผล
@@ -7431,6 +7588,7 @@
       ส่วน "http://notexample.com/", "http://example.com.invalid.com/", "http://example.comabc/" จะถือว่าตรงกันเมื่ออยู่ในโหมด "ค่าเริ่มต้น" เท่านั้น
 
       "http://acme.com/ABC" จะถือว่าตรงกันเฉพาะใน "IESiteListMode"</translation>
+<translation id="8734543507835977857">เริ่มต้นการหน่วงเวลาการจัดการพลังงานและขีดจํากัดระยะเวลาเซสชันเมื่อเริ่มต้นเซสชัน</translation>
 <translation id="8736538322216687231">บังคับใช้โหมดที่จำกัดขั้นต่ำใน YouTube</translation>
 <translation id="8744844164152340112">ควบคุมธีมที่ใช้สำหรับแสดงผล UI ใน OOBE และในเซสชัน (มืด/สว่าง/อัตโนมัติ)
       โหมดอัตโนมัติจะสับเปลี่ยนระหว่างธีมมืดและธีมสว่างให้โดยอัตโนมัติตามเวลาที่ดวงอาทิตย์ขึ้นและตก
@@ -7567,6 +7725,7 @@
 <translation id="8880294585549584028">อนุญาตสิทธิ์การเข้าถึงในการเขียนไฟล์และไดเรกทอรีในเว็บไซต์เหล่านี้</translation>
 <translation id="8882006618241293596">บล็อกปลั๊กอิน <ph name="FLASH_PLUGIN_NAME" /> ในเว็บไซต์เหล่านี้</translation>
 <translation id="8882255181490012651">ไม่อนุญาตให้ผู้ที่เลือกใช้ฮับโทรศัพท์เข้าถึงรูปภาพและวิดีโอล่าสุดที่ถ่ายในโทรศัพท์ของตน</translation>
+<translation id="8882307005437314052">เปิดใช้แป้นพิมพ์บนหน้าจอในหน้าจอการเข้าสู่ระบบและอนุญาตให้ผู้ใช้ปิดใช้ชั่วคราว</translation>
 <translation id="8887709920496070892">ระยะเวลาเป็นมิลลิวินาทีก่อนแสดงกล่องคำเตือนหลังจากไม่มีการป้อนข้อมูลจากผู้ใช้</translation>
 <translation id="8890438048579188548">ซ่อนคำเตือนการเลิกใช้งาน <ph name="CLOUD_PRINT_NAME" /></translation>
 <translation id="8891334958985336685">ปิดใช้การรายงานข้อมูลระบบของอุปกรณ์</translation>
@@ -7593,6 +7752,7 @@
 <translation id="8919369436496201075">อนุญาตให้อุปกรณ์รับข้อมูลอัปเดตเกี่ยวกับ LTS</translation>
 <translation id="8921669704201370845">เปิดใช้การรายงานในระบบคลาวด์ของ <ph name="PRODUCT_NAME" /> สำหรับโปรไฟล์ที่มีการจัดการ</translation>
 <translation id="8922494933893518624">บังคับให้เปิดใช้ WebSQL ในบริบทที่ไม่ปลอดภัย</translation>
+<translation id="8923028772162236077">แสดง URL เริ่มต้น</translation>
 <translation id="8930064580550462145">ในระหว่างการเข้าสู่ระบบผ่านหน้าจอล็อก <ph name="PRODUCT_OS_NAME" /> จะตรวจสอบสิทธิ์กับเซิร์ฟเวอร์ (แบบออนไลน์) หรือใช้รหัสผ่านในแคช (แบบออฟไลน์) ได้
 
       เมื่อตั้งค่านโยบายนี้เป็น -2 นโยบายจะใช้ค่าขีดจำกัดเวลาในการลงชื่อเข้าใช้แบบออฟไลน์ของหน้าจอการเข้าสู่ระบบซึ่งมาจาก <ph name="POLICY" />
@@ -7824,6 +7984,7 @@
       การตั้งค่านโยบายนี้จะเปิดใช้การแจ้งเตือนที่จะบอกว่าผู้ใช้ควรหรือจำเป็นต้องเปิดเบราว์เซอร์ขึ้นมาใหม่หรือรีสตาร์ทอุปกรณ์ หากไม่ได้ตั้งค่านโยบายนี้ <ph name="PRODUCT_NAME" /> จะแจ้งผู้ใช้ว่าจำเป็นต้องมีการเปิดขึ้นมาใหม่ผ่านการเปลี่ยนแปลงเพียงเล็กน้อยในเมนู ส่วน <ph name="PRODUCT_OS_NAME" /> จะแจ้งข้อความเช่นนี้ผ่านการแจ้งเตือนในถาดระบบ หากตั้งค่าเป็น "แนะนำ" ระบบจะแสดงคำเตือนที่เกิดซ้ำแก่ผู้ใช้ว่าขอแนะนำให้เปิดขึ้นมาใหม่ ผู้ใช้ปิดคำเตือนนี้เพื่อเลื่อนการเปิดใหม่ได้ หากตั้งค่าเป็น "จำเป็น" ระบบจะแสดงคำเตือนที่เกิดซ้ำแก่ผู้ใช้ว่าจะมีการบังคับเปิดเบราว์เซอร์ใหม่หลังจากสิ้นสุดระยะการแจ้งเตือน โดยค่าเริ่มต้น ระยะเวลาดังกล่าวคือ 7 วันสำหรับ <ph name="PRODUCT_NAME" /> และ 4 วันสำหรับ <ph name="PRODUCT_OS_NAME" /> แต่คุณกำหนดค่าผ่านการตั้งค่านโยบาย <ph name="RELAUNCH_NOTIFICATION_PERIOD_POLICY_NAME" /> ได้
       ระบบจะคืนค่าเซสชันของผู้ใช้หลังการเปิดใหม่/รีสตาร์ท</translation>
 <translation id="9160028464653564229">ไม่อนุญาตให้เว็บไซต์ใดๆ ขอสิทธิ์เข้าถึงพอร์ตอนุกรมผ่าน Serial API</translation>
+<translation id="9162444960513782569">บังคับไม่ให้มีการควบคุมตัวจับเวลา JavaScript เบื้องหลัง</translation>
 <translation id="916461878260574432">ระบุว่าจะใช้ P2P สำหรับเพย์โหลดการอัปเดตระบบปฏิบัติการหรือไม่
       หากตั้งค่าเป็น "จริง" อุปกรณ์จะแชร์และพยายามใช้เพย์โหลดการอัปเดตใน LAN ซึ่งอาจลดการใช้แบนด์วิดท์และความหนาแน่นในอินเทอร์เน็ต หากเพย์โหลดการอัปเดตไม่พร้อมใช้งานใน LAN อุปกรณ์จะกลับไปใช้การดาวน์โหลดจากเซิร์ฟเวอร์การอัปเดต
       หากตั้งค่าเป็น "เท็จ" ระบบจะไม่ใช้ P2P
@@ -7839,6 +8000,8 @@
 
       นโยบายนี้เป็นมาตรการชั่วคราวและจะถูกนำออกใน<ph name="PRODUCT_NAME" /> เวอร์ชันต่อๆ ไป หลังจากนำนโยบายออกแล้ว <ph name="PRODUCT_NAME" /> จะส่งคำขอประเภท DNS เพิ่มเติมได้ทุกครั้ง</translation>
 <translation id="9167719789236691545">ปิดใช้ไดรฟ์ในแอป Files ของ <ph name="PRODUCT_OS_NAME" /></translation>
+<translation id="9180108183162961002">อนุญาตให้เข้าสู่ระบบเบราว์เซอร์ในโหมดผู้มาเยือน</translation>
+<translation id="9185963199234034321">เปิดใช้คอนทราสต์สูงในหน้าจอการเข้าสู่ระบบและอนุญาตให้ผู้ใช้ปิดใช้ชั่วคราว</translation>
 <translation id="9187743794267626640">ปิดใช้งานการต่อเชื่อมที่จัดเก็บข้อมูลภายนอก</translation>
 <translation id="9190456586252617675">นโยบายนี้ควบคุมโหมดของการเริ่มต้นใช้งาน Assistant
 
@@ -7851,6 +8014,7 @@
 <translation id="9200828125069750521">พารามิเตอร์สำหรับ URL รูปภาพที่ใช้ POST</translation>
 <translation id="9204863016826119209">แอปพลิเคชัน Android ที่ติดตั้งไว้และระบุอยู่ในนโยบายนี้จะใช้คีย์ขององค์กรได้</translation>
 <translation id="9207596996305971030">ไม่รายงานเหตุการณ์การเข้าสู่ระบบ/ออกจากระบบ</translation>
+<translation id="9210647066889383361">อนุญาตให้ผู้ใช้ลงชื่อเข้าใช้อุปกรณ์ที่มี Smart Lock</translation>
 <translation id="9213751049772256263">ปิดใช้รูปแบบทั้งหมด</translation>
 <translation id="9217154963008402249">ความถี่ในการติดตามดูแพ็กเก็ตเครือข่าย</translation>
 <translation id="9220314833408124365">ใช้นโยบาย URL ที่มาเริ่มต้นเป็น "ไม่มี URL ที่มาเมื่อดาวน์เกรด"</translation>
@@ -7899,6 +8063,7 @@
 <translation id="966425658642788645">ใช้ลักษณะการทำงานเริ่มต้น</translation>
 <translation id="971677226939413180">ไม่มีตัวเลือกการพิมพ์เป็นรูปภาพให้ผู้ใช้เลือก</translation>
 <translation id="974349541138387272">ระบุเทมเพลต URI ของรีโซลเวอร์ DNS-over-HTTPS ที่ต้องการ</translation>
+<translation id="978658824596356870">รูปแบบนาฬิการะบบ 24 ชั่วโมง</translation>
 <translation id="979467274961593903">ไม่อนุญาตให้ใช้การแก้ไขข้อบกพร่องจากระยะไกล</translation>
 <translation id="980218166381006412">การตั้งค่านโยบายเป็น "เปิดใช้" จะเปิดใช้โหมดเบื้องหลัง ในโหมดเบื้องหลัง การประมวลผลของ <ph name="PRODUCT_NAME" /> จะเริ่มต้นเมื่อมีการลงชื่อเข้าใช้ระบบปฏิบัติการและจะยังทำงานอยู่เมื่อมีการปิดเบราว์เซอร์หน้าต่างสุดท้าย ซึ่งทำให้แอปในเบื้องหลังและเซสชันการท่องเว็บทำงานต่อไป การประมวลผลในเบื้องหลังจะแสดงไอคอนในถาดระบบและปิดได้ทุกเมื่อจากตำแหน่งดังกล่าว
 
diff --git a/components/policy/resources/policy_templates_tr.xtb b/components/policy/resources/policy_templates_tr.xtb
index d29eedc3..0116f7b 100644
--- a/components/policy/resources/policy_templates_tr.xtb
+++ b/components/policy/resources/policy_templates_tr.xtb
@@ -151,6 +151,7 @@
 
       <ph name="CHROME_OS_RELEASE_CHANNEL_POLICY_NAME" /> politikasının etkili olabilmesi için <ph name="CHROME_OS_RELEASE_CHANNEL_DELEGATED_POLICY_NAME" /> politikasının Yanlış değerine ayarlanması şarttır.</translation>
 <translation id="1147732569915511430">Avatar resminin SHA-256 karması.</translation>
+<translation id="1148415065145333943">Gelişmiş pil şarj modunu devre dışı bırak</translation>
 <translation id="1151353063931113432">Bu sitelerdeki resimlere izin ver</translation>
 <translation id="1151987132434751822">Politika kimlik bilgilerinin uygulanabileceği kimlik doğrulama şemaları. Şunlardan biri olabilir:
             * basic
@@ -169,6 +170,7 @@
 <translation id="1160479894929412407">QUIC protokolüne izin verin</translation>
 <translation id="1160939557934457296">Güvenli Tarama uyarı sayfasından ilerlemeyi devre dışı bırak</translation>
 <translation id="1163080558183062209">Reddetme listesinde yazıcı türlerini devre dışı bırakma</translation>
+<translation id="1165923723751466821">Tarayıcıya misafir ve profil girişlerine izin ver</translation>
 <translation id="117059611145966538">Harici yazdırma sunucuları</translation>
 <translation id="117080706484659953"><ph name="MAC_OS_NAME" /> işletim sisteminde politika kapsamını algılamaya izin ver</translation>
 <translation id="1171106901454883937">Cihaz sürüm bilgisi raporlamasını etkinleştir</translation>
@@ -221,6 +223,7 @@
 <translation id="120937472976628837">Pervane bilgilerini raporla</translation>
 <translation id="1212233008927724662">Lazy Login WebUI yüklemeyi devre dışı bırak.</translation>
 <translation id="1216919699175573511">İmzalı HTTP Değişimi (SXG) desteğini etkinleştir</translation>
+<translation id="1219027971768347970">Ses korumalı alanı için varsayılan yapılandırmayı kullan</translation>
 <translation id="1219695476179627719">Bu cihazın sonraki bir sürümü çalıştırıyor olması halinde, <ph name="DEVICE_TARGET_VERSION_PREFIX_POLICY_NAME" /> tarafından ayarlanan sürüme geri döndürülüp döndürülmeyeceğini belirler.
 
       Varsayılan, RollbackDisabled şeklindedir.</translation>
@@ -488,6 +491,7 @@
 
       Harici uzantılar ve yüklenmeleri hakkında bilgiyi https://developer.chrome.com/apps/external_extensions adresinde bulabilirsiniz.
       </translation>
+<translation id="1484190167468437592">Mono sesi devre dışı bırak</translation>
 <translation id="1486021504508098388">Arka ışık bilgilerini raporla</translation>
 <translation id="1486469502848499602">Manuel olarak oluşturulan yeni kayıtlar için önerilen <ph name="KRB5_CONFIG" /> yapılandırmasını değiştirir.
 
@@ -500,6 +504,7 @@
 
       Not: Birden fazla sunucu adını virgülle ayırın. Joker karakterlere (<ph name="WILDCARD_VALUE" />) izin verilir.</translation>
 <translation id="1488724823347505879">Android uygulamalarından Web uygulamalarına paylaşımı etkinleştirin</translation>
+<translation id="1501644502684303995">Online girişleri yalnızca giriş ekranında zorunlu kıl</translation>
 <translation id="1502843533062797703">Üçüncü taraf yazılımı yerleştirme engellemesini etkinleştirin</translation>
 <translation id="1503969899251962413">Politikanın ayarlanması, bu cihaz için <ph name="PLUGIN_VM_NAME" /> lisans anahtarını belirtir.
 
@@ -647,6 +652,7 @@
 
       Politika Devre Dışı değerine ayarlanır veya ayarlanmadan bırakılırsa desteklenmeyen sistemlerde uyarı görüntülenir.</translation>
 <translation id="1634989431648355062">Bu sitelerde <ph name="FLASH_PLUGIN_NAME" /> eklentisine izin ver</translation>
+<translation id="1635748761015837179">Harici depolama cihazlarına yazmaya izin ver</translation>
 <translation id="1639468541408865385">Genel kapsamlı HTTP kimlik doğrulama önbelleğini etkinleştir</translation>
 <translation id="1641394008743444477">Devre dışı bırakılacak <ph name="PRODUCT_OS_NAME" /> özelliklerini belirlemenize izin verir.
 
@@ -662,6 +668,7 @@
 
       Politika ayarlanmadan bırakılırsa varsayılan önbellek boyutu kullanılır ve kullanıcılar --media-cache-size flag'ini belirterek bunu değiştirebilir.</translation>
 <translation id="1648816843164517573">HSTS politika kontrolünü atlayacak olan isimlerin listesi</translation>
+<translation id="1651197070942919276">Cihazın, sanal makineleri çalıştırmasına izin verme</translation>
 <translation id="1654087023995670109">Tarayıcı misafir modunu zorunlu tut</translation>
 <translation id="1655229863189977773">Disk önbelleği boyutunu bayt olarak ayarla</translation>
 <translation id="165769015320654523">Bu sitelere, sağlanan tedarikçi ve ürün kimlikleriyle otomatik olarak HID cihazlarına bağlanma izni verir.</translation>
@@ -720,6 +727,7 @@
 
       Not: Daha ayrıntılı örnekler için Chromium Projeleri'ni ziyaret edin (https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett).</translation>
 <translation id="1700811900332333712">Cihaza Powerwash isteme izni verme</translation>
+<translation id="1705215165572785706">Üst sıradaki tuşlara medya tuşu olarak davran, ancak kullanıcının değişiklik yapmasına izin ver</translation>
 <translation id="1708496595873025510">Varyasyon temelini alma sınırlamasını ayarla</translation>
 <translation id="1709154322133526432">Başlangıçta varsayılan tarayıcı kontrolünü etkinleştir</translation>
 <translation id="1713829924716792485">Politika, Etkin değerine ayarlanır veya ayarlanmadan bırakılırsa uzaktan erişim ana makinesine bağlı kullanıcıların istemci ile ana makine arasında dosya aktarımı yapmasına izin verilir. Bu durum, dosya aktarımını desteklemeyen uzaktan yardım bağlantıları için geçerli değildir.
@@ -893,6 +901,7 @@
       Politika False (Yanlış) değerine ayarlanır veya hiç ayarlanmazsa <ph name="PRODUCT_NAME" /> online iptal etme denetimlerini <ph name="PRODUCT_NAME" /> 19 ve sonraki sürümler için yapmaz.
 
       Not: <ph name="OCSP_CRL_LABEL" /> denetimleri güvenlik açısından verimli değildir.</translation>
+<translation id="1905061765326052857">Bağlı olmayan kullanıcıların, Linux uygulamalarını desteklemek için gerekli olan sanal makineleri kullanmasına izin verme</translation>
 <translation id="1910704279188129272">Uygulama başına kullanım kısıtlamaları ayarlamaya olanak tanır.
         Kullanım kısıtlamaları, belirtilen kullanıcı için <ph name="PRODUCT_OS_NAME" /> üzerinde yüklü uygulamalarda geçerli olabilir.
         Kısıtlamalar |app_limits| listesine dahil edilmelidir. Uygulama başına yalnızca bir girişe izin verilir. Listede bulunmayan uygulamaların kısıtlamaları yoktur.
@@ -915,11 +924,14 @@
 <translation id="1920772397574801429">Politikanın ayarlanması, <ph name="HTTP_NEGOTIATE" /> kimlik doğrulamasını (örneğin, Kerberos kimlik doğrulaması) destekleyen Android kimlik doğrulama uygulamasının sağladığı hesapların türlerini belirtir. Bu bilgi kimlik doğrulama uygulamasının tedarikçisinden edinilebilir. Ayrıntılar için Chromium Projeleri'ne bakın (https://goo.gl/hajyfN)
 
       Politika ayarlanmadan bırakılırsa Android'de <ph name="HTTP_NEGOTIATE" /> kimlik doğrulaması kapanır.</translation>
+<translation id="1923704782248889851">Dikteyi etkinleştir</translation>
 <translation id="1925529914257504750">P2P otomatik güncellemesi etkin</translation>
+<translation id="1930094135927166199">USB güç paylaşımını devre dışı bırak</translation>
 <translation id="1930127294345368978">Tek bir yazdırma işi için kullanılmasına izin verilen maksimum sayfa sayısı</translation>
 <translation id="193259052151668190">Çıkarılabilir USB cihazları beyaz listesi</translation>
 <translation id="1933378685401357864">Duvar kağıdı resmi</translation>
 <translation id="1942626390957213764">Masaüstü paylaşım merkezini devre dışı bırak</translation>
+<translation id="194407941132272412">Site izolasyonunu tüm web siteleri için devre dışı bırak, ancak kullanıcının bu özelliği etkinleştirmesine izin ver</translation>
 <translation id="1945994447126139909">Bu kurumsal politika, kısa süreli uyum süreci için geçerli olup <ph name="PRODUCT_NAME" /> 88 sürümünde kaldırılacaktır.
 
       Chrome'un varsayılan yönlendirme politikasının şu anda geçerli olan "no-referrer-when-downgrade" değeri güçlendirilerek daha güvenli olan "strict-origin-when-cross-origin" değerine geçirilmektedir. Burada kademeli olarak kullanıma sunma söz konusu olup Chrome 85 kararlı sürümü hedeflenmektedir.
@@ -1021,8 +1033,10 @@
 <translation id="2013285471046373727">Bir uygulamanın nasıl yükleneceğini belirtir. OPTIONAL: Uygulama otomatik olarak yüklenmez, ancak kullanıcı tarafından yüklenebilir. Bu politika belirtilmezse varsayılan olarak bu ayar uygulanır. PRELOAD: Uygulama otomatik olarak yüklenir, ancak kullanıcı tarafından kaldırılabilir. FORCE_INSTALLED: Uygulama otomatik olarak yüklenir ve kullanıcı tarafından kaldırılamaz. BLOCKED: Uygulama engellenir ve yüklenemez. Uygulama önceki politikalardan biri kapsamında yüklenmişse kaldırılır.</translation>
 <translation id="2014757022750736514">Kullanıcıların hesaplarına giriş yaptıkları oturum açma ekranının davranışını kontrol eder. Ayarlar arasında kimin giriş yapabileceği, ne tür hesaplara izin verildiği, hangi kimlik doğrulama yöntemlerinin kullanılması gerektiği, genel erişilebilirlik, giriş yöntemi ve yerel ayarlar yer alır.</translation>
 <translation id="201557587962247231">Cihaz durumu raporlarının yüklenme sıklığı</translation>
+<translation id="2016031354108680330">Linux sanal makinelerine kök erişimi etkinleştir</translation>
 <translation id="2017301949684549118">Web Uygulamalarının URL'leri sessizce yüklenir.</translation>
 <translation id="2017459564744167827">Şema ve biçimlendirme hakkında daha fazla bilgi için <ph name="REFERENCE_URL" /> adresine bakın.</translation>
+<translation id="2018425641414671849">Cihaz kilitliyken kullanıcıların medya oynatmasına izin verme</translation>
 <translation id="2024476116966025075">Uzaktan erişim istemcileri için gereken alan adını yapılandır</translation>
 <translation id="2029985289397958781">Kurumsal kullanıcılar için <ph name="GOOGLE_LENS_PRODUCT_NAME" /> kamera destekli aramayı devre dışı bırak</translation>
 <translation id="2030905906517501646">Varsayılan arama sağlayıcı anahtar kelimesi</translation>
@@ -1358,6 +1372,7 @@
       Bu politikanın "tls1" veya "tls1.1" değerlerine ayarlanması 91. sürüm itibarıyla desteklenmemektedir. TLS 1.0/1.1 uyarısının engellenmesi artık desteklenmemektedir.</translation>
 <translation id="2364639863953745682">Asistan ilk katılım deneyimi modu</translation>
 <translation id="2366301887862414321">Hem kullanıcı düzeyinde hem de sistem düzeyinde yerel mesajlaşma ana makinelerine izin ver</translation>
+<translation id="2373014700224092497">Kullanıcıların Kerberos hesapları eklemesine izin ver</translation>
 <translation id="2382672620906337383">JavaScript setTimeout(), daha yüksek bir iç içe yerleştirme eşiğine ulaşılana kadar zaman aşımına uğramaz.</translation>
 <translation id="2384233438419344179">Politikanın Etkin değerine ayarlanması tarayıcının adres çubuğundaki alan adına ait olmayan web sayfası öğelerinin çerez yerleştirmesini engeller. Politikanın Devre Dışı değerine ayarlanması bu öğelerin çerez yerleştirmesine izin verir ve kullanıcıların bu ayarı değiştirmelerini önler.
 
@@ -1505,6 +1520,7 @@
       Bu politika ayarlanmadan bırakılırsa Tıkla ve Ara özelliği varsayılan olarak etkindir.</translation>
 <translation id="2482676533225429905">Yerel Mesajlaşma</translation>
 <translation id="2483146640187052324">Ağ bağlantılarında ağ işlemlerini tahmin et</translation>
+<translation id="2489558694350871332">Cihazın, sanal makineleri çalıştırmasına izin ver</translation>
 <translation id="2496180316473517155">Tarama geçmişi</translation>
 <translation id="2497751676088107779">Kullanıcı komut dosyası</translation>
 <translation id="2497965601277442929">Kullanıcıların Yalnızca HTTPS Modunu etkinleştirmesine izin verme</translation>
@@ -1546,6 +1562,7 @@
       Politika, Devre Dışı değerine ayarlanır veya ayarlanmadan bırakılırsa giriş yapıldıktan sonra nelerin açılacağı, tam geri yükleme ayarları tarafından belirlenir.</translation>
 <translation id="2517466659416174529">Arka plandaki sekmeleri dondurmaya izin ver</translation>
 <translation id="2518231489509538392">Ses çalmaya izin ver</translation>
+<translation id="2519578205567666653">Harici depolama cihazlarına izin ver</translation>
 <translation id="2520551905471951523">Ses işlemi için yüksek öncelik kullan</translation>
 <translation id="2521581787935130926">Yer işareti çubuğunda uygulamalar kısayolunu göster</translation>
 <translation id="2522304491589804974">Uzantı kurulum izin listesini yapılandırma</translation>
@@ -1601,6 +1618,7 @@
 <translation id="2568488785376704318">Bu politika kullanımdan kaldırılmıştır. Lütfen bunun yerine <ph name="REMOTE_ACCESS_HOST_DOMAIN_LIST_POLICY_NAME" /> politikasını kullanın.</translation>
 <translation id="2575198840408498393">Dolaşım profillerinin oluşturulmasını devre dışı bırak</translation>
 <translation id="2576324725151524912">Erişime kapalı uygulamalar için geliştirici moduna izin ver.</translation>
+<translation id="257717978573041245">Donanım hızlandırmayı etkinleştir</translation>
 <translation id="257788512393330403">Altı saatte bir şifre girilmesi gerekir</translation>
 <translation id="2580757713966614760">Politika ayarlanırsa toplu yazıcı yapılandırması için hangi erişim politikasının geçerli olacağı belirlenerek <ph name="DEVICE_PRINTERS_POLICY_NAME" /> içerisinden hangi yazıcıların kullanılabileceği kontrol edilir.
 
@@ -1623,6 +1641,7 @@
       * AC gücünde çalışırken kapatıldığında aktif değil durumunda yapılacak varsayılan işlem.
 
       Politika veya ayarlarından herhangi biri ayarlanmadan bırakılırsa çeşitli güç ayarları için varsayılan değerler kullanılır.</translation>
+<translation id="2591775699187375408">Sesi her zaman korumalı alana al</translation>
 <translation id="2592091433672667839">Perakende modunda oturum açma ekranında ekran koruyucunun devreye girmesi için geçecek boşta kalma süresi</translation>
 <translation id="259289618675490104">Politika, 'Tümü' (0 değeri) olarak ayarlanır veya ayarlanmadan bırakılırsa kullanıcılar sertifikaları yönetebilir. Politika, 'Yok' (2 değeri) olarak ayarlanırsa kullanıcılar sertifikaları yalnızca görebilir (yönetemez).
 
@@ -1846,6 +1865,7 @@
 <translation id="283478052049914107">Politika Etkin değerine ayarlanır ve standart olmayan bir bağlantı noktası girilirse (yani 80 veya 443'ten başka bir bağlantı noktası) politika, oluşturulan Kerberos SPN'ine dahil edilir.
 
       Politika Devre dışı değerine ayarlanır veya ayarlanmadan bırakılırsa oluşturulan Kerberos SPN'ine bağlantı noktası dahil edilmez.</translation>
+<translation id="2834965199373338033">Arka plan modunu etkinleştir</translation>
 <translation id="2835686964326214400">Cihazları yeniden başlatmak için özel program belirle</translation>
 <translation id="2838830882081735096">Veri taşıma ve ARC'ye izin verme</translation>
 <translation id="2839294585867804686">Ağ Üzerinde Dosya Paylaşımı ayarları</translation>
@@ -1858,6 +1878,7 @@
 <translation id="2866619962692161453">Metapolitika Türü</translation>
 <translation id="2866726566162790531">Tüm HTTP kimlik doğrulamalarına izin veren kaynakların listesi</translation>
 <translation id="2869762730352628426">Giriş ekranında otomatik tıklama özelliğini etkinleştir</translation>
+<translation id="2872098849906555324">Google Drive senkronizasyonunu devre dışı bırak</translation>
 <translation id="2872961005593481000">Kapat</translation>
 <translation id="2874209944580848064">Android uygulamalarını destekleyen <ph name="PRODUCT_OS_NAME" /> cihazlarına ilişkin not:</translation>
 <translation id="2875192972412983412">Sunucu yazıcıları için sorgulanacak yazdırma sunucuları alt grubunu belirtir.
@@ -1898,6 +1919,7 @@
       Bu politika Yanlış değerine ayarlanırsa ARC başlatılmadan önce hayalet pencere oluşturulmaz. Arc uygulamaları, ARC başlatıldıktan sonra geri yüklenir</translation>
 <translation id="2899002520262095963">Android uygulamaları, bu politika aracılığıyla ayarlanan CA sertifikalarını ve ağ yapılandırmalarını kullanabilir, ancak bazı yapılandırma seçeneklerine erişemez.</translation>
 <translation id="2899213072616346687">Arka plan grafikleri yazdırma modunu kısıtlar. Politika ayarlanmazsa herhangi bir kısıtlama uygulanmaz.</translation>
+<translation id="2899640611559504158">Sanal makine komut satırı erişimini devre dışı bırak</translation>
 <translation id="290002216614278247">Kullanıcının oturumunu istemci süresine veya günün kullanım kotasına dayalı olarak kilitlemenize olanak tanır.
 
           |time_window_limit|, kullanıcı oturumunun kilitli olacağı bir günlük aralık belirtir. Haftanın her günü için yalnızca bir kural desteklendiğinden |entries| dizisinin büyüklüğü 0-7 arasında değişiklik gösterebilir. |starts_at| ve |ends_at|, zaman aralığı sınırının başlangıcı ve bitişidir. |ends_at| değerinin |starts_at| değerinden küçük olması |time_limit_window| aralığının ertesi gün sona ereceği anlamına gelir. |last_updated_millis|, bu girişin son güncellemesine ilişkin UTC zaman damgasıdır. Zaman damgası bir tam sayıya sığmayacağından dize olarak gönderilir.
@@ -1972,6 +1994,7 @@
 <translation id="2960128438010718932">Yeni bir güncellemenin uygulanmasına yönelik hazırlık programı</translation>
 <translation id="2960691910306063964">Uzaktan erişim ana makineleri için PIN'siz kimlik doğrulamayı etkinleştir veya devre dışı bırak</translation>
 <translation id="2962972237615992440"><ph name="CLOUD_PRINT_NAME" /> proxy'sini devre dışı bırak</translation>
+<translation id="2963292398266537394">Dikteyi devre dışı bırak</translation>
 <translation id="2964056138564883247"><ph name="BOREALIS_NAME" /> politikasının bu kullanıcı için kullanılabilirliğini kontrol eder.
 
       Politika yanlış değerine ayarlanırsa <ph name="BOREALIS_NAME" /> kullanılamaz. Diğer hallerde (politika ayarlanmadığında veya doğru değerine ayarlandığında) <ph name="BOREALIS_NAME" />, yalnızca başka bir politika ya da ayar tarafından devre dışı bırakılmamışsa kullanılabilir.</translation>
@@ -2075,6 +2098,7 @@
       Politikayı Yanlış (False) değerine ayarlarsanız Yeni Sekme sayfasında otomatik oluşturulan içerik önerilerinin gösterilmesi engellenir.</translation>
 <translation id="3046192273793919231">Çevrimiçi durumu izlemek için ağ paketlerini yönetim sunucusuna gönder</translation>
 <translation id="3047732214002457234">Chrome Temizleme Aracı'nın verileri Google'a raporlama şeklini kontrol etme</translation>
+<translation id="3047864383610708617">Yapışkan tuşları devre dışı bırak</translation>
 <translation id="3048744057455266684">Bu politika ayarlanırsa ve çok amaçlı adres çubuğundan önerilen bir arama URL'sinde, sorgu dizesinde veya parça tanımlayıcısında bu parametre bulunursa, öneri, ham arama URL'si yerine arama terimlerini ve arama sağlayıcısını gösterir.
 
           Bu politika isteğe bağlıdır. Ayarlanmadan bırakılırsa, hiçbir arama terimi değişikliği yapılmaz.
@@ -2148,6 +2172,7 @@
       Geçerli <ph name="URL_LABEL" /> kalıpları hakkında ayrıntılı bilgi için https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns adresine bakabilirsiniz.  Bu politika, yalnızca kaynağa göre eşleşir. Dolayısıyla, URL kalıbındaki yollar yoksayılır.</translation>
 <translation id="3118552207903834734">Kullanıcının, cihazın ana makine adını yapılandırmasına izin ver</translation>
 <translation id="3122082892722698079">Güvenli olmayan içerik istisnalarının kullanımını kontrol et</translation>
+<translation id="3125472566440502628">Seç ve Dinle özelliğini devre dışı bırak</translation>
 <translation id="3128072319047570212">Anahtar oluşturucu ayarları</translation>
 <translation id="3131703464330936425">Mobil veri dolaşımına izin verme</translation>
 <translation id="3135820765957090754">Bu ayar etkinleştirildiğinde kullanıcıların, <ph name="PRODUCT_OS_NAME" /> cihazları ile bağlı Android telefonları arasında kablosuz ağ yapılandırmalarını senkronize etmelerine izin verilir. Kablosuz ağ yapılandırmaları senkronize edilmeden önce kullanıcıların bir kurulum akışını tamamlayarak bu özelliğe açık bir şekilde kaydolmaları gerekir.
@@ -2287,6 +2312,8 @@
       Politika ayarlanmadan bırakılırsa <ph name="TPM_FIRMWARE_UPDATE_TPM" /> donanım yazılımı güncellemesi kullanılamaz.</translation>
 <translation id="3232563711929146405">Ağ hizmeti korumalı alanını devre dışı bırak</translation>
 <translation id="3232691106293445015">Güvenli olmayan HTTP bağlantılarının <ph name="BASIC_AUTH" /> kimlik doğrulamasını kullanmasına izni verilmez, HTTPS gereklidir</translation>
+<translation id="3234753491625248216">Donanım hızlandırmayı devre dışı bırak</translation>
+<translation id="3234773866678260466">Yeni profil eklenmesine izin ver</translation>
 <translation id="3234863952320884611"><ph name="FILE_SYSTEM_SYNC_ACCESS_HANDLE" /> yöntemlerinin eşzamansız olarak çağrılmasını etkinleştirir</translation>
 <translation id="3235085623859932253"> Bu politika devre dışı bırakılırsa kullanıcılar, PCle tünelleme üzerinden Thunderbolt/USB4 çevre birimi cihazlarını tam olarak bağlayamazlar.
 
@@ -2446,6 +2473,7 @@
 
       <ph name="DEVICE_LOCAL_ACCOUNT_AUTO_LOGIN_ID_POLICY_NAME" /> politikası ayarlanmazsa bu politikanın hiçbir etkisi olmaz.</translation>
 <translation id="3397883909301547525"><ph name="PRODUCT_OS_NAME" /> başlatıcıda uygulama önerileri gösterme</translation>
+<translation id="3398051852031115795">Varsayılan sistem davranışı (ekran boyutuna bağlıdır)</translation>
 <translation id="3399859571630358395">Hızlı Eşleme'yi (hızlı Bluetooth eşleme) devre dışı bırakmaya zorla.</translation>
 <translation id="3404681701763345449"><ph name="GOOGLE_CALENDAR_NAME" /> entegrasyonunu etkinleştir</translation>
 <translation id="3408078762098350617"><ph name="SYSTEM_FEATURES_DISABLE_LIST_POLICY_NAME" /> içindeki devre dışı bırakılan özelliklerle ilgili kullanıcı deneyimini kontrol eder.
@@ -2498,6 +2526,7 @@
 <translation id="3442269905344976871">Cihazda <ph name="WILCO_NAME" /> teşhis ve telemetri denetleyicisi (DTC) kullanılabilirken politika Etkin değerine ayarlanırsa telemetri ve teşhis verilerinin toplanması, işlenmesi ve raporlanması etkinleştirilir.
 
       Politika, Devre Dışı değerine ayarlanır veya ayarlanmadan bırakılırsa DTC kapatılır. Cihazdan telemetri ve teşhis verilerini toplayamaz, işleyemez veya raporlayamaz.</translation>
+<translation id="3442589735857147823">Kullanıcıların, Linux uygulamalarını desteklemek için gerekli olan sanal makineleri kullanmasına izin ver</translation>
 <translation id="3450649825886735618">Yazım hatalarının düzeltilmesine yardımcı olması için herhangi bir Google web hizmeti kullanma</translation>
 <translation id="3451422488938880786"> Yeniden eşleştirilen uluslararası klavye kısayollarının etkinleştirilmesine/devre dışı bırakılmasına olanak tanır</translation>
 <translation id="3451901387456196887">Kullanıcılara <ph name="PRODUCT_NAME" /> menüsünde erişim kodu kullanarak veya QR kodu tarayarak yayın cihazı seçme olanağı verilir.</translation>
@@ -2539,6 +2568,7 @@
 
        Varsayılan olarak tüm uzantılara izin verilir. Ancak uzantıları politikaya göre yasakladıysanız bu politikayı değiştirmek için izin verilen uzantılar listesini kullanın.</translation>
 <translation id="3501606938635483637">Uluslararası klavye kısayolları, tuşların klavyedeki yeriyle değil glifiyle eşleştirilir.</translation>
+<translation id="3502438748205582075">Kerberos'u devre dışı bırak</translation>
 <translation id="3502555714327823858">Tüm dupleks modlara izin ver</translation>
 <translation id="350443680860256679">ARC'yi yapılandır</translation>
 <translation id="350797926066071931">Google Çeviri'yi etkinleştir</translation>
@@ -2623,6 +2653,7 @@
 <translation id="3589193811812796052">WebAssembly modüllerinin kaynaklar arasında gönderilmesini engelle</translation>
 <translation id="3591527072193107424">Eski Tarayıcı Desteği özelliğini etkinleştir.</translation>
 <translation id="3591584750136265240">Giriş için kimlik doğrulama yöntemini yapılandır</translation>
+<translation id="3596112486106491038">Sanal makine komut satırı erişimini etkinleştir</translation>
 <translation id="3603469950773500315">Yeni <ph name="CORS" /> uygulamasındaki çözümlerin <ph name="CORS" /> tarafından kontrol edilmesini sağlayarak Uzantıların uyumlu davranışı sürdürmesine ve belirtilen üstbilgilerin <ph name="PRODUCT_NAME" /> tarafından <ph name="CORS" /> kontrolleri olmadan gönderilmesine olanak tanıyın.
 
       Bu liste boş değere ayarlanırsa <ph name="PRODUCT_NAME" />, Uzantıları uyumlu şekillerde çalıştırmayı dener ve <ph name="WEB_REQUEST_API_MANUAL" /> içinde açıklanan <ph name="PRODUCT_NAME" /> 79 için <ph name="API" /> değişikliklerini uygulamaz.
@@ -2657,6 +2688,7 @@
       Bu politikayı ayarlarsanız kullanıcılar değiştiremez. Ayarlamazsanız AC'de başlat özelliği kapalıdır ve kullanıcılar açamaz.</translation>
 <translation id="3660562134618097814">Giriş sırasında SAML IdP çerezlerini aktar</translation>
 <translation id="3665437376055221832">Yalnızca otomatik seçimle eşleşen sertifika olmadığında kullanıcıdan seçim yapmasını iste.</translation>
+<translation id="3671773704245936868">Klavye odağını vurgulamayı devre dışı bırak</translation>
 <translation id="3674010627788940405">CORS joker karakter olmayan istek başlıklarını destekleme.</translation>
 <translation id="3675303748198647471">setTimeout(…, 0) genellikle uzun JavaScript görevlerinin dökümünü almak için kullanılır.
           Politika, Etkin değerine ayarlandığında 4 ms'den kısa bir aralığa sahip setTimeout'lar ve setInterval'lar yoğun şekilde zaman aşımına uğramaz.
@@ -2726,6 +2758,7 @@
 <translation id="3733014427925403568">Haftanın hangi gününde ara verileceği.</translation>
 <translation id="3736879847913515635">Kullanıcı yöneticisinde kişi eklemeyi etkinleştir</translation>
 <translation id="3749259744154402564">Desteklenmiyor</translation>
+<translation id="3749511622128647337">Ses çıkışını devre dışı bırak</translation>
 <translation id="3750220015372671395">Bu sitelerde anahtar oluşturmayı engelle</translation>
 <translation id="3753959315989102457">Cihaz konumu raporlamasını devre dışı bırak</translation>
 <translation id="3755237588083934849">Politikanın ayarlanması, cihaz durumu yüklemelerinin ne sıklıkla gönderileceğini (milisaniye olarak) belirler. İzin verilen minimum sıklık 60 saniyedir.
@@ -2885,6 +2918,7 @@
 
       Her bir liste girişi, 'extension-id' alanında uzantı kimliği ve 'update-url' alanında güncelleme URL'si bulunması gereken bir sözlük içerir.</translation>
 <translation id="3869180930654347954">Etkilenen tüm kullanıcılar için First-Party Sets özelliğini devre dışı bırak</translation>
+<translation id="3870035799352372700">Google Asistan'ın etkileşimler sırasında ekran içeriğine erişmesini engelle</translation>
 <translation id="3870059789954671543">Giriş ekranında, klavye odağını vurgulama erişilebilirlik özelliğini etkinleştirir.
 
           Bu özellik klavye tarafından odaklanmış nesneyi vurgulamaktan sorumludur.
@@ -2912,6 +2946,7 @@
 
       Bu politika ayarlanmamış şekilde bırakılırsa SPDY kullanılabilir durumda olur.</translation>
 <translation id="3887529334667818189">Arama yolculukları varsayılan olarak chrome://history/journeys adresinde görülebilir ve kullanıcılar, arama yolculuklarının görünürlüğünü değiştirebilir.</translation>
+<translation id="3891175633496805812">Wilco teşhis ve telemetri denetleyicisini devre dışı bırak</translation>
 <translation id="3891357445869647828">JavaScript’i Etkinleştir</translation>
 <translation id="3891769546914233112">PDF'yi Resim Olarak Yazdırma Seçeneği Kullanılabilir</translation>
 <translation id="3897218615484393758">SAML kullanarak kimlik doğrulaması yapmış kullanıcının, kilit ekranında çevrimdışı olarak giriş yapabileceği süreyi sınırla</translation>
@@ -3022,6 +3057,10 @@
       Bu ayar yapılandırılmadığında veya Yanlış (False) değerine ayarlandığında, <ph name="PRODUCT_OS_NAME" /> cihazlar güncellemeleri otomatik olarak kontrol eder.
 
       Uyarı: Kullanıcıların yazılım güncellemelerini ve kritik güvenlik düzeltmelerini alabilmesi için otomatik güncellemelerin etkin durumda tutulması önerilir. Otomatik güncellemelerin kapatılması, kullanıcıları risk altında bırakabilir.</translation>
+<translation id="4015799413391577485">Bu politika, <ph name="PRODUCT_NAME" /> ürünündeki üçlü DES kaldırıldıktan sonra M97 sürümünde kaldırılmıştır.
+
+      Politika, doğru değerine ayarlanırsa TLS'de 3DES şifre paketleri etkinleştirilir. Politika, yanlış değerine ayarlanırsa bunlar devre dışı bırakılır. Politika ayarlanmazsa 3DES şifre paketleri varsayılan olarak devre dışı bırakılır. Bu politika eski bir sunucuyla uyumluluğu sürdürmek için geçici olarak kullanılabilir. Bu geçici bir tedbir olup sunucu yeniden yapılandırılmalıdır.
+      </translation>
 <translation id="4016367078069682737">Bu politika M61'de kaldırıldı.
 
       Ecryptfs koduyla gönderilen ve ext4 şifrelemesine geçmesi gereken bir cihazın nasıl davranması gerektiğini belirtir.
@@ -3148,9 +3187,11 @@
 <translation id="4138655880188755661">Zaman Limiti</translation>
 <translation id="4147818922357566987">Yalnızca önemli düzeltmelerle ilgili varyasyonları etkinleştir</translation>
 <translation id="4150201353443180367">Ekran</translation>
+<translation id="4154221011709068799">Harici depolama cihazlarına izin verme</translation>
 <translation id="415445772247959702">Web Mağazası (sürüm 89'dan beri destekleniyor)</translation>
 <translation id="4157003184375321727">İşletim sistemi ve donanım yazılımı sürümünü rapor et</translation>
 <translation id="4157594634940419685">Yerel CUPS yazıcılarına erişim izni ver</translation>
+<translation id="4158531549614162499">Hücresel bağlantılar üzerinden Google Drive senkronizasyonunu etkinleştir</translation>
 <translation id="4160962198980004898">Yuvaya yerleştirildiğinde cihaz MAC adresi kaynağı</translation>
 <translation id="4161589119744364846">Politikanın ayarlanması, varsayılan Yeni Sekme sayfasının URL'sini yapılandırır ve kullanıcıların değiştirmesini önler.
 
@@ -3253,6 +3294,7 @@
       Politika Devre dışı değerine ayarlanır veya ayarlanmadan bırakılırsa kullanıcılar hücresel bağlantı kullanırken Drive'a dosya aktarabilir.</translation>
 <translation id="4248277954659222481">URL kalıpları izin verilenler listesinde medyanın otomatik olarak oynatılmasına izin ver</translation>
 <translation id="4250680216510889253">Hayır</translation>
+<translation id="4252522848899331223">Kullanıcının Güvenli Tarama uyarısını atlamasına izin ver</translation>
 <translation id="4259636715493757956"><ph name="WEBVIEW_PRODUCT_NAME" /> içindeki kimlik doğrulama URL'leriyle ilgili yapılandırmaları belirtmenizi sağlar.
 
       <ph name="WEBVIEW_PRODUCT_NAME" /> bu kimlik doğrulama URL'lerini özel olarak ele alır. <ph name="WEBVIEW_PRODUCT_NAME" /> içindeki web sayfası, kimlik doğrulama sırasında kimlik doğrulama URL'lerine yönlendirildiğinde,
@@ -3314,7 +3356,9 @@
       Cihaz yönetilmiyorsa veya yalnızca bir kullanıcı varsa bu politika yok sayılır ve bildirim her zaman gösterilir.
 
       Yönetilen cihazda birden fazla kullanıcı hesabı varsa bildirim yalnızca bu politika etkinleştirildiğinde gösterilir.</translation>
+<translation id="4309091698378414920">İmleç vurgulamayı etkinleştir</translation>
 <translation id="4311195029067684288">Tam</translation>
+<translation id="4311662690937656540">Giriş ve kilit ekranlarında çevrimiçi girişleri zorunlu kıl</translation>
 <translation id="4313767483634435271">Cihazın atanmış yuva MAC adresi</translation>
 <translation id="4314538398999793073">Kerberos kimlik doğrulaması sırasında CNAME aramasını devre dışı bırak</translation>
 <translation id="4320592646346933548">Kablosuz</translation>
@@ -3407,6 +3451,7 @@
 <translation id="4427173305799125784">PDF görüntüleyici PDF'lere not ekleyemez</translation>
 <translation id="4432762137771104529">Güvenli Tarama Genişletilmiş Raporlamasını Etkinleştir</translation>
 <translation id="443454694385851356">Eski (güvenli değil)</translation>
+<translation id="4435032708588431506">QUIC'ye izin ver</translation>
 <translation id="443665821428652897">Tarayıcı kapandığında site verilerini temizle (kullanımdan kaldırıldı)</translation>
 <translation id="4436941175475497595">Baskı önizlemeyi devre dışı bırak</translation>
 <translation id="4439336120285389675">Geçici olarak yeniden etkinleştirmek için, kullanımdan kaldırılmış web platformu özelliklerinin bir listesini belirtin.
@@ -3449,6 +3494,7 @@
       Geçerli <ph name="URL_LABEL" /> kalıpları hakkında ayrıntılı bilgi için https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns adresine bakabilirsiniz. <ph name="WILDCARD_VALUE" />, bu politikada kabul edilen bir değer değildir.</translation>
 <translation id="4480694116501920047">Güvenli Arama'nın kullanılmasını zorunlu tut</translation>
 <translation id="4481202456143946404">Şartlar'ın yeni sürümünü kullanıma sunan Google3 CL'den türetilen geçerli Hizmet Şartları sürümü.</translation>
+<translation id="4481952213163895432">Google Asistan özel kelimesini devre dışı bırak</translation>
 <translation id="4483120730995943109">0 ms'lik bir zaman aşımına sahip JavaScript setTimeout(), 1 ms'ye sabitlenmez.</translation>
 <translation id="4483649828988077221">Otomatik Güncelleme'yi devre dışı bırak</translation>
 <translation id="4484515651939984695">Erişim kodu veya QR koduyla seçilen bir yayın cihazının, <ph name="PRODUCT_NAME" /> menüsündeki yayın cihazları listesinde kaç saniye duracağını belirtir.</translation>
@@ -3515,6 +3561,7 @@
       Tam açıklama için https://www.chromestatus.com/feature/5675755719622656 adresine bakın.
       Bu politika etkinleştirilirse sitelerin eşzamanlı olarak gezinmesine ve yeni pencereler/sekmeler açmasına izin verilir.
       Bu politika devre dışı bırakılır veya ayarlanmazsa sitelerin eşzamanlı olarak gezinmesine ve yeni pencere/sekme açmasına izin verilmez.</translation>
+<translation id="4572577129745420844">Kullanıcıların Kerberos hesapları eklemesine izin verme</translation>
 <translation id="457430673056611745">OnPrint <ph name="PRODUCT_NAME" /> Enterprise Bağlayıcı için yapılandırma politikası</translation>
 <translation id="4578265298946081589">Kullanıcı oturumu kapatıldığında cihazı yeniden başlatma.</translation>
 <translation id="4581507927311097234">Ekran kapatılmadan önce kullanıcı girişi olmadan geçecek süre (milisaniye olarak)</translation>
@@ -3570,6 +3617,7 @@
 <translation id="4617338332148204752"><ph name="PRODUCT_FRAME_NAME" /> cihazında meta etiket kontrolünü atla</translation>
 <translation id="4624417808625504735">Bu sitelerde JavaScript'in JIT kullanmasını engelle</translation>
 <translation id="4625915093043961294">Uzantı yükleme beyaz listesini yapılandır</translation>
+<translation id="46321462262887935">Üst sıradaki tuşlara işlev tuşu olarak davran, ancak kullanıcının değişiklik yapmasına izin ver</translation>
 <translation id="4632343302005518762"><ph name="PRODUCT_FRAME_NAME" /> için listelenen içerik türlerini işlemeye izin ver</translation>
 <translation id="4632566332417930481">Kurumsal politika tarafından yüklenen uzantılarda Geliştirici Araçları kullanımına izin verme, diğer bağlamlarda Geliştirici Araçları kullanımına izin ver</translation>
 <translation id="4635284822166984665">Cihazın şarj olmaya başlayacağı zaman (cihazın yerel saat dilimine göre).</translation>
@@ -3649,6 +3697,7 @@
 <translation id="4723829699367336876">Uzaktan erişim istemcisinden güvenlik duvarı geçişini etkinleştir</translation>
 <translation id="4725528134735324213">Android Backup Service'ı etkinleştir</translation>
 <translation id="4725801978265372736">Yerel kullanıcının adı ile uzak erişim ana makinesi sahibinin adının aynı olmasını gerektir</translation>
+<translation id="4726228171190098009">Cihazın Powerwash istemesine izin verme</translation>
 <translation id="4733471537137819387">Entegre HTTP kimlik doğrulaması ile ilgili politikalar.</translation>
 <translation id="4735099388031364207">Politika, Etkin değerine ayarlanırsa cihaz için uzaktan onaya izin verilir. Otomatik olarak bir sertifika oluşturulup Cihaz Yönetim Sunucusu'na yüklenir.
 
@@ -3725,6 +3774,7 @@
 
       Bu politika false (yanlış) değerine ayarlanırsa veya ayarlanmadan bırakılırsa OS güncelleme bilgileri bildirilmez. Politika true (doğru) değerine ayarlanırsa OS güncelleme bilgileri bildirilir.</translation>
 <translation id="4858735034935305895">Tam ekran moduna izin ver</translation>
+<translation id="486146220825734683">Kullanıcıların Kerberos şifrelerini hatırlamasına izin verme</translation>
 <translation id="4861767323695239729">Kullanıcı oturumunda izin verilen giriş yöntemlerini yapılandır</translation>
 <translation id="4873380469296842901">Bu ayar etkinleştirilirse Telefon Merkezi'ne zaten kaydolmuş kullanıcılar, telefonlarının bildirimlerini ChromeOS'te gönderip alabilirler.
 
@@ -4133,6 +4183,7 @@
 <translation id="5255162913209987122">Önerilebilir</translation>
 <translation id="525543707238275321">Cihazın CPU bilgileri raporlamasını devre dışı bırak</translation>
 <translation id="5257395339965216304">Barındırılan uygulama verileri</translation>
+<translation id="5258445772095084618">Bağlı olmayan kullanıcıların, Linux uygulamalarını desteklemek için gerekli olan sanal makineleri kullanmasına izin ver</translation>
 <translation id="5262320080678421295">Symantec Corporation'ın Eski PKI altyapısı tarafından verilen sertifikalara güveni devre dışı bırak</translation>
 <translation id="5266173014392157048">Bu politika kullanımdan kaldırıldı. Bunun yerine lütfen "<ph name="AUTH_NEGOTIATE_DELEGATE_ALLOWLIST_POLICY_NAME" />" politikasını kullanın.
 
@@ -4276,6 +4327,7 @@
 
       Geçerli <ph name="URL_LABEL" /> kalıpları hakkında ayrıntılı bilgi için https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns adresine bakabilirsiniz. <ph name="WILDCARD_VALUE" />, bu politikada kabul edilen bir değer değildir.</translation>
 <translation id="5393009997533871906">Kullanıcılara sadece izin verilenler listesindeki yazıcılar gösterilir.</translation>
+<translation id="5398387276166014955">Chrome'a üçüncü taraf kodunun yerleştirilmesine izin ver</translation>
 <translation id="5401696449591951427"><ph name="CHROME_DEVICES_LINK" /> bağlantısını etkinleştir</translation>
 <translation id="5405289061476885481"><ph name="PRODUCT_OS_NAME" /> oturum açma ekranında hangi klavye düzenlerine izin verileceğini yapılandırır.
 
@@ -4404,6 +4456,7 @@
       Bu politika Devre Dışı değerine ayarlanırsa veya ayarlanmadan bırakılırsa kullanıcıdan hiçbir zaman oturum açma ekranında bir istemci sertifikası seçmesi istenmez.
       Not: Bu politika, cihaz genelinde TPM destekli sertifikaların kullanılması durumunda muhtemel gizlilik risklerine sebep olduğu ve kötü bir kullanıcı deneyimi sunduğu için genellikle önerilmez.</translation>
 <translation id="55057839818162162"><ph name="GOOGLE_LENS_PRODUCT_NAME" /> kamera destekli aramaya izin ver</translation>
+<translation id="55057971769693300">İmleç vurgulamayı devre dışı bırak</translation>
 <translation id="5508307164752647432">Kerberos işlevini etkinleştir</translation>
 <translation id="5511702823008968136">Yer İşareti Çubuğunu etkinleştir</translation>
 <translation id="5512418063782665071">Ana sayfa URL'si</translation>
@@ -4423,6 +4476,7 @@
 <translation id="5526184558582921522">Quirks Sunucusu'nu sorgulamaya ve donanıma özgü yapılandırma dosyalarını içerebilecek indirmelere izin ver</translation>
 <translation id="5526701598901867718">Hepsi (güvenli değil)</translation>
 <translation id="5534079385061985566">Tam geri yükleme özelliğini etkinleştir.</translation>
+<translation id="5534235660122271432">Harici depolama cihazlarına yazmaya izin verme</translation>
 <translation id="5535256585099022933">Yeniden başlatma zaman aralığını ayarla</translation>
 <translation id="5535973522252703021">Kerberos yetki sunucusu beyaz listesi</translation>
 <translation id="553806128266843748">Veri akışı kısıtlamanın etkinleştirilip etkinleştirilmediğini gösteren bir boole flag'i.</translation>
@@ -4431,6 +4485,7 @@
 <translation id="555022085242359084">Giriş ekranında yüksek kontrastı etkinleştir</translation>
 <translation id="555077880566103058">Tüm sitelerin otomatik olarak <ph name="FLASH_PLUGIN_NAME" /> eklentisini çalıştırmasına izin ver</translation>
 <translation id="5556607617517096419">Borealis</translation>
+<translation id="5558394213067608844">Wilco teşhis ve telemetri denetleyicisini etkinleştir</translation>
 <translation id="5559079916187891399">Bu politikanın Android uygulamaları üzerinde hiçbir etkisi yoktur.</translation>
 <translation id="5560039246134246593"><ph name="PRODUCT_NAME" /> ürününde Varyasyon temelini almaya parametre ekle.
 
@@ -4535,6 +4590,7 @@
 <translation id="5676740747107495269">Erişilebilirlik seçeneklerini giriş ekranında sistem tepsisi menüsünde gösterme</translation>
 <translation id="5679540979548648200">Bu cihaz kullanıcılarının ADB başka cihazdan yükleme işlevini kullanmalarını engelleyin ve başka cihazdan yükleme daha önce etkinleştirildiyse cihazda Powerwash işlemi uygulayın</translation>
 <translation id="5681258683432554972">Varsayılan pop-up'lar ayarı</translation>
+<translation id="5684501593989438324">Google Asistan özel kelimesini etkinleştir</translation>
 <translation id="5689430183304951538">Varsayılan yazdırma sayfası boyutu</translation>
 <translation id="5691637243722588222">Politikanın ayarlanması, <ph name="PRODUCT_NAME" /> ürününün hangi HTTP kimlik doğrulama şemalarını desteklediğini belirtir.
 
@@ -4572,6 +4628,7 @@
       Politika Devre Dışı değerine ayarlanırsa PDF eklentisi, kullanıcılar tarafından kapatılmadığı sürece PDF dosyalarını açar.
 
       Bu politikayı ayarlarsanız kullanıcılar <ph name="PRODUCT_NAME" /> ürününde değiştiremez. Politika ayarlanmadan bırakılırsa kullanıcılar PDF dosyalarının haricen açılıp açılmayacağını seçebilir.</translation>
+<translation id="5705055136345677598">Arka plan modunu devre dışı bırak</translation>
 <translation id="5705828032077475554">CRD oturumlarını raporla</translation>
 <translation id="5708969689202733975">İzin verilen hızlı kilit açma modlarını yapılandır</translation>
 <translation id="5714563837055244378">Android'den Web Uygulamasına paylaşımı etkinleştirin.</translation>
@@ -4653,6 +4710,7 @@
 <translation id="5814301096961727113">Giriş ekranında sesli geri bildirimin varsayılan durumunu ayarla</translation>
 <translation id="5815129011704381141">Güncelleme sonrasında otomatik olarak yeniden başlat</translation>
 <translation id="5815990343032461023">Eski davranış: Kiosk Chrome Uygulamaları, uzantı manifestindeki güncelleme URL'sini kullanarak uzantı sistemi tarafından ve politikadaki güncelleme URL'sini kullanarak önbelleğe alma yöneticisi tarafından güncellenir</translation>
+<translation id="5828008775808363753">Başlangıçta tarayıcıyı başlatma</translation>
 <translation id="582857022372205358">Kısa kenar dupleks yazdırmayı etkinleştir</translation>
 <translation id="5830196507442186669">Cihazların <ph name="PRODUCT_OS_NAME" /> üzerinde <ph name="BOREALIS_NAME" />kullanmasına izin verilsin</translation>
 <translation id="5831286647961890695"><ph name="PRODUCT_OS_NAME" /> üzerinde uyarlanabilir şarj modelini etkinleştir</translation>
@@ -4670,6 +4728,7 @@
       Politika, Devre Dışı değerine ayarlanırsa gelişmiş pil şarj modu kapalı olur.
 
       Kullanıcılar bu ayarı değiştiremez.</translation>
+<translation id="5838452040629810808">Fare imlecini vurgulamayı etkinleştir</translation>
 <translation id="5848438019586925019">Anahtar çifti oluşturmak için kullanılan algoritma.</translation>
 <translation id="5851248808417680865">Koyu temayı kullan</translation>
 <translation id="585270638818921943">Kullanıcının güvenilmeyen kaynaklardan Android uygulamaları kullanmasını engelle</translation>
@@ -4756,6 +4815,7 @@
 
       Politika, Devre Dışı değerine ayarlanırsa QUIC protokolünün kullanımına izin verilmez.</translation>
 <translation id="5921713479449475707">HTTP aracılığıyla otomatik güncelleme indirmeye izin ver</translation>
+<translation id="5927903236543424081">Tarayıcıyı kullanmadan önce kullanıcının oturum açmasını zorunlu kıl</translation>
 <translation id="5928633129285224981"><ph name="PRODUCT_NAME" /> üzerinde PDF yazdırılırken Resim olarak yazdır'ın varsayılan olarak seçilip seçilmeyeceğini kontrol eder.
 
       Bu politika Etkin değerine ayarlanırsa <ph name="PRODUCT_NAME" /> varsayılan olarak PDF yazdırırken Yazdırma Önizleme'de Resim olarak yazdır seçeneğini ayarlar.
@@ -4763,6 +4823,13 @@
       Bu politika Devre Dışı değerine ayarlanırsa veya ayarlanmadan bırakılırsa <ph name="PRODUCT_NAME" /> üzerinde Resim olarak yazdır seçeneği baştan seçilmemiş olur.  Seçeneğin kullanılabildiği durumlarda kullanıcı, ayrı ayrı her bir PDF'nin yazdırma işi için bu seçimi yapabilir.
 
       Bu politika, <ph name="MS_WIN_NAME" /> veya <ph name="MAC_OS_NAME" /> üzerinde yalnızca <ph name="PRINT_PDF_AS_IMAGE_AVAILABILITY_POLICY_NAME" /> politikasının da etkin olduğu durumlarda geçerli olur.</translation>
+<translation id="5932383301001325587">Bu politika, <ph name="PRODUCT_NAME" /> ürünündeki TLS sürüm yedeği kaldırıldıktan sonra M53 sürümünden kaldırılmıştır.
+
+      Bir TLS el sıkışması başarısız olduğunda <ph name="PRODUCT_NAME" />, HTTPS sunucularındaki hatalardan kaçınmak amacıyla önceden TLS'nin daha düşük bir sürümüyle tekrar bağlanmayı deniyordu. Bu ayar, bu yedek sürümü kullanma işleminin ne kadar eskiye gideceğini yapılandırır. Bir sunucu, sürüm pazarlığını doğru şekilde yaparsa (yani bağlantıyı kesmeden) bu ayar uygulanmaz. Yine de ortaya çıkan bağlantı SSLVersionMin ile uyumlu olmalıdır.
+
+      Bu politika yapılandırılmazsa veya "tls1.2" değerine ayarlanırsa <ph name="PRODUCT_NAME" />, bu yedek sürümü kullanma işlemini gerçekleştirmez. Bunun daha eski TLS sürümlerine yönelik desteği devre dışı bırakmadığını, yalnızca <ph name="PRODUCT_NAME" /> ürününün, sürümlerle ilgili pazarlığı doğru şekilde yapamayan hatalı sunuculardan kaçınmaya çalışıp çalışmayacağını belirlediğini unutmayın.
+
+      Aksi takdirde, hatalı bir sunucuyla uyumluluğun korunması gerekiyorsa bu politika, "tls1.1" değerine ayarlanabilir. Bu geçici bir tedbir olup sunucudaki sorun kısa sürede çözülmelidir.</translation>
 <translation id="5932767795525445337">Bu politika, Android uygulamalarını sabitlemek için de kullanılabilir.</translation>
 <translation id="5936193585187054065">Encrypted ClientHello (ECH), ClientHello'un hassas alanlarını şifrelemek ve gizliliği iyileştirmek için kullanılan bir TLS uzantısıdır.
 
@@ -4838,6 +4905,7 @@
 <translation id="6046615715547751255">Ayrıntılı raporlama kontrollerine izin verme</translation>
 <translation id="6048199181629830227">Güç tüketimi en üst düzeydeyken pil kullanımına geçme güç yönetimini etkinleştir</translation>
 <translation id="6049117606554031363">Cihazın kart durumu raporlamasını etkinleştir</translation>
+<translation id="605132676434455096">Yeni profil eklenmesine izin verme</translation>
 <translation id="6053681087509103368">WebRTC'nin, TLD/DTLS protokolünün eski sürümlerini kullunmasına izin ver</translation>
 <translation id="6058879286588763839"><ph name="DEVICE_BATTERY_CHARGE_MODE_POLICY_NAME" /> politikasını geçersiz kılan <ph name="DEVICE_ADVANCED_BATTERY_CHARGE_MODE_ENABLED_POLICY_NAME" /> belirtilmediğinde <ph name="DEVICE_BATTERY_CHARGE_MODE_POLICY_NAME" /> politikasının ayarlanması pil şarj modu güç yönetimi politikasını belirtir (cihazda destekleniyorsa). Politika, pil ömrünü uzatmak için stresi ve yıpranmayı en aza indirerek pil şarjını dinamik olarak kontrol eder.
 
@@ -4893,12 +4961,18 @@
       4: Güvenli Tarama sunucusu tarafından işaretlenen kötü amaçlı dosyaları engeller, tehlikeli dosya türlerini engellemez. Önerilen.
 
       Not: Bu kısıtlamalar hem web sayfası içeriğinden hem de Bağlantıyı indir... menü seçeneğinden tetiklenen indirmeler için geçerlidir. Görüntülenmekte olan sayfayı indirme ya da yazdırma seçeneklerinden PDF olarak kaydetme için geçerli değildir. Güvenli tarama hakkında daha fazla bilgi edinin (https://developers.google.com/safe-browsing).</translation>
+<translation id="6119207979839638596">Bu politika, <ph name="PRODUCT_NAME" /> ürünündeki maksimum TLS sürümü politikası kaldırıldıktan sonra M75 sürümünden kaldırılmıştır.
+
+      Bu politika yapılandırılmazsa <ph name="PRODUCT_NAME" />, varsayılan maksimum sürümü kullanır.
+
+      Aksi takdirde, şu değerlerden birine ayarlanabilir: "tls1.2" veya "tls1.3". Ayarlandığında <ph name="PRODUCT_NAME" />, belirtilen sürümden yüksek olan SSL/TLS sürümlerini kullanmaz. Tanınmayan değerler yoksayılır.</translation>
 <translation id="6123052603197028610">Zaman damgalarını almak için Google sunucularına sorgu gönderilmesine izin verme</translation>
 <translation id="6130229425991722726">Politika 0 (varsayılan) değerine ayarlanırsa geliştirici araçlarına ve JavaScript konsoluna erişebilirsiniz. Ancak kurumsal politikaya göre yüklenen uzantıların bağlamında bu erişimi sağlayamazsınız. Politika 1 değerine ayarlanırsa kurumsal politikaya göre yüklenen uzantıların bağlamı dahil tüm bağlamlarda geliştirici araçlarına ve JavaScript konsoluna erişebilirsiniz. Politika 2 değerine ayarlanırsa geliştirici araçlarına erişemezsiniz ve web sitesi öğelerini inceleyemezsiniz.
 
       Bu ayar, geliştirici araçlarını veya JavaScript konsolunu açmak için klavye kısayollarını ve menü veya içerik menüsü girişlerini de kapatır.
 
       Bu ayar, <ph name="PRODUCT_NAME" /> sürüm 99'dan itibaren "Sayfa kaynağını görüntüle" özelliği için giriş noktalarını da kontrol eder. Bu politikayı "DeveloperToolsDisallowed" (2 değeri) olarak ayarlarsanız kullanıcılar klavye kısayollarını veya içerik menüsünü kullanarak kaynak görüntülemeye erişemez. Kaynak görüntülemeyi tamamen engellemek için <ph name="URL_BLOCKLIST_POLICY_NAME" /> politikasına "view-source:*" ifadesini de eklemeniz gerekir.</translation>
+<translation id="6131803221304830537">Oluşturucu Kod Bütünlüğü'nü devre dışı bırak</translation>
 <translation id="6132506775968708399">3. taraf çerezleri engelle</translation>
 <translation id="6133088669883929098">Tüm sitelerin anahtar oluşturma işlevini kullanmasına izin ver</translation>
 <translation id="6135398260575578389">Güvenli Tarama gelişmiş modda etkin. Bu mod daha yüksek güvenlik sağlar, ancak Google ile daha fazla tarama bilgisi paylaşmayı gerektirir.</translation>
@@ -4920,6 +4994,7 @@
 
       Bu politikanın yürürlüğe girmesi için ek kurulum gerekir. Daha fazla bilgi için lütfen https://support.google.com/chrome/a?p=chrome_enterprise_connector_policies_setting adresini ziyaret edin.</translation>
 <translation id="6141402445226505817">Her zaman yüzeysel saat dilimi algılamasını kullan</translation>
+<translation id="6141944295566709543">Cihaz kilitliyken kullanıcıların medya oynatmasına izin ver</translation>
 <translation id="6142501278956229253">Yazdırma Pikselleştirme PDF DPI</translation>
 <translation id="6144046700495610112">Politika Etkin değerine ayarlanırsa önceki varsayılan tarayıcıda otomatik doldurulan form verileri ilk çalıştırmada içe aktarılır. Politika Devre dışı değerine ayarlanır veya ayarlanmadan bırakılırsa otomatik doldurulan form verileri ilk çalıştırmada içe aktarılmaz.
 
@@ -4991,6 +5066,7 @@
 
       Not: Politika, ses erişilebilirlik özellikleri dahil olmak üzere tüm ses girişlerini etkiler. Kullanıcının ekran okuyucuya ihtiyacı varsa politikayı kapatmayın.</translation>
 <translation id="6221175752766085998">subjectAlternativeName uzantısı olmadan yerel güven bağlantıları tarafından yayınlanan sertifikalara izin ver</translation>
+<translation id="6224070048795197148">Kullanıcının oturum açmadan tarayıcıyı kullanmasına izin ver</translation>
 <translation id="6224304369267200483">Doğrudan Güvenlik Anahtarı doğrulamasına otomatik olarak izin verilen URL'ler/alan adları</translation>
 <translation id="6230442621691161858">Bu özellik, keşfedilecek yeni içerik önerilerini etkinleştirir. Uygulamalar, web sayfaları ve daha fazlasını içerir.
       Bu politika Doğru değerine ayarlanırsa keşfedilecek yeni içerik önerileri etkinleştirilir.
@@ -5012,11 +5088,13 @@
       Bu politika, korumalı alanın çalışmasını etkileyen güvenlik yazılımı yapılandırmaları kullanan işletmelere ses korumalı alanını devre dışı bırakma esnekliği sunmak amacıyla tasarlanmıştır.</translation>
 <translation id="624818583115864448">bağlantı noktası 554 (15.10.2021'e kadar engellemesi kaldırılabilir)</translation>
 <translation id="6252773211180267325"><ph name="BOREALIS_NAME" /> politikasının kullanıcı için çalışması engellenmesin</translation>
+<translation id="6254498834449523938">Kullanıcının Güvenli Tarama uyarısını atlamasına izin verme</translation>
 <translation id="625580680776945310">Yüksek Verimlilik Modu etkinleştirilir.</translation>
 <translation id="6258658183356534534">Kullanıcı aracısı istemci ipuçları GREASE güncelleme özelliğini kontrol et.</translation>
 <translation id="6261643884958898336">Makine Kimlik bilgilerini bildir</translation>
 <translation id="6265892395051519509">Bu sitelerde sensörlere erişime izin ver</translation>
 <translation id="6266043141694454734">Sunucu sertifikalarını doğrulamak için Chrome Root Store ve yerleşik sertifika doğrulayıcının kullanılıp kullanılmayacağını belirler</translation>
+<translation id="6270791075656665237">QUIC'ye izin verme</translation>
 <translation id="6273015149273504999">
       Kullanıcı etkileşimi olmadan giriş ekranında sessizce yüklenen ve kullanıcı tarafından yüklemesi kaldırılamayan veya devre dışı bırakılamayan uygulama ve uzantıların bir listesini belirtir.
 
@@ -5237,6 +5315,7 @@
       </translation>
 <translation id="6438972408080276697">Politikayı True (Doğru) değerine ayarlamak, politika tarafından tetiklenen önemli Android uygulaması yükleme etkinliklerinin raporlarını Google'a gönderir. Politikanın False (Yanlış) değerine ayarlanması, hiçbir etkinliğin yakalanmayacağı anlamına gelir.</translation>
 <translation id="6440051664870270040">Sitelerin eşzamanlı olarak gezinmesine ve pop-up açmasına için izin ver</translation>
+<translation id="6446366416439249472">Hücresel bağlantılar üzerinden Google Drive senkronizasyonunu devre dışı bırak</translation>
 <translation id="6447948611083700881">Yedekleme ve geri yükleme devre dışı</translation>
 <translation id="6449476513004303784">Kullanıcıların sertifikaları yönetmelerine izin verme</translation>
 <translation id="6452882999388592166">Yerleşik CryptoToken bileşen uzantısı, Etkin değerine ayarlanırsa başlangıçta yüklenir. CryptoToken, Devre Dışı değerine ayarlanırsa veya ayarlanmadan bırakılırsa tarayıcı başlatılırken yüklenmez. Bu politika, M106 sürümünden CryptoToken'in kaldırılmasının yan etkisi olarak tanımlanmayan "chrome.runtime" nedeniyle bozulmuş siteler için geçici bir çözümdür. Web siteleri, "chrome.runtime"ın koşulsuz olarak tanımlanacağını düşünmemelidir.</translation>
@@ -5599,6 +5678,7 @@
 <translation id="6763023079133439068">subjectAlternativeName uzantısı olmayıp yerel güven çapaları tarafından verilmiş olan sertifikalara izin ver</translation>
 <translation id="6766216162565713893">Sitelerin, yakınlardaki bir Bluetooth cihazına erişmek için kullanıcıdan izin istemesine izin ver</translation>
 <translation id="6770454900105963262">Aktif kiosk oturumlarıyla ilgili bilgileri raporla</translation>
+<translation id="6774132787348495175">Kullanıcıların, Linux uygulamalarını desteklemek için gerekli olan sanal makineleri kullanmasına izin verme</translation>
 <translation id="6782331708811245959">Cihaz başlatma modu raporlamasını etkinleştir</translation>
 <translation id="6782977971207381602">Politikanın Etkin değerine ayarlanması cihazın, <ph name="PRODUCT_OS_NAME" /> işletim sistemi üstünde sanal makineleri çalıştırmasına olanak tanır. <ph name="PRODUCT_CROSTINI_NAME" /> kullanılabilmesi için <ph name="VIRTUAL_MACHINES_ALLOWED_POLICY_NAME" /> ve <ph name="CROSTINI_ALLOWED_POLICY_NAME" /> politikalarının Etkin değerine ayarlanması gerekir. Politika Devre Dışı değerine ayarlanırsa cihaz, sanal makineleri çalıştıramaz. Politika Devre Dışı olarak değiştirilirse halihazırda çalışan sanal makinelere değil, başlatılan yeni sanal makinelere uygulanmaya başlar.
 
@@ -5658,6 +5738,7 @@
 
           Bu politikanın boş bir listeye ayarlanması veya ayarlamadan bırakılması hiçbir URL'nin bildirim olmadan tam ekran moduna devam etmesine izin verilmeyeceği anlamına gelir.</translation>
 <translation id="6833988859168635883">Başlangıç, Ana sayfa ve Yeni Sekme sayfası</translation>
+<translation id="6835254082476223414">Linux sanal makine yedekleme ve geri yükleme özelliğini etkinleştir</translation>
 <translation id="6835883744948188639">Kullanıcıya yeniden başlatmanın önerildiğini belirten yinelenen bir istem gösterme</translation>
 <translation id="683688607121170501">Bu ayar, kullanıcıların <ph name="PRODUCT_OS_NAME" /> cihazlarında oturum açtıktan sonra tarayıcı pencerelerinin içerik alanındaki Google Hesapları arasında geçiş yapmalarına olanak tanır.
 
@@ -5860,6 +5941,7 @@
 <translation id="7007283257527015835">Protokol işleyicinin varsayılan olarak ayarlanıp ayarlanmayacağını gösteren bir boole flag'i.</translation>
 <translation id="7008308728445338159">DNS müdahale kontrolü etkin</translation>
 <translation id="7010006999849135962">Uzaktan erişim ana makinesi için PIN'siz kimlik doğrulamayı etkinleştir</translation>
+<translation id="7013484314513229844">Prize takılıyken otomatik başla özelliğini etkinleştir</translation>
 <translation id="7016587686120059767">Misafir modunu devre dışı bırak</translation>
 <translation id="7016736684656067099">Politikayı 1 değerine ayarlamak tüm web sitelerde görsellere izin verir. Politikayı 2 değerine ayarlamak görselleri engeller.
 
@@ -5908,6 +5990,7 @@
 <translation id="7039815268521168329">İlk kurulum sırasında Google Asistan Voice Match akışını göster</translation>
 <translation id="7040229947030068419">Örnek değer:</translation>
 <translation id="7044883996351280650">Android yedekleme ve geri yükleme hizmetini kontrol etme</translation>
+<translation id="7046997898355294677">Kullanıcı kapatana dek gizlilik uyarılarını göster</translation>
 <translation id="7047495632846973438">Görüntü yakalama izinleri politikasının kontrol edilip edilmediğini veya atlanıp atlanmadığını belirtir.</translation>
 <translation id="7055022222176591388">Eski <ph name="FLASH_PLUGIN_NAME" /> eklentisine izin verme</translation>
 <translation id="7066292150801784098">Uzaktan destek oturumlarında yükseltilmiş pencerelerle uzaktan kullanıcı etkileşimini devre dışı bırak</translation>
@@ -5990,6 +6073,7 @@
       <ph name="MS_WIN_NAME" /> işletim sisteminde bu işlev yalnızca Windows 10 Pro üzerinde çalışan bir <ph name="MS_AD_NAME" /> alan adına katılmış veya <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" /> öğesine kaydolmuş örneklerde kullanılabilir. <ph name="MAC_OS_NAME" /> işletim sisteminde bu işlev yalnızca MDM ile çalışan veya MCX aracılığıyla bir alan adına katılmış örneklerde kullanılabilir.</translation>
 <translation id="7138678301420049075">Diğer</translation>
 <translation id="7138762292550697459">JavaScript setTimeout() fonksiyonunun minimum zaman aşımını kontrol et.</translation>
+<translation id="714219487865269980">Klavye odağını vurgulamayı etkinleştir</translation>
 <translation id="7145335384492396213">Varsayılan PIN ile yazdırma modu</translation>
 <translation id="7146198347561863646">Politika, Etkin değerine ayarlanır veya ayarlanmadan bırakılırsa güç yönetimi için uyanık kalma kilitlerine izin verilir. Uzantılar, güç yönetimi uzantı API'si ve ARC uygulamaları aracılığıyla uyandırma kilitleri isteyebilir.
 
@@ -6044,6 +6128,7 @@
 <translation id="7193489339723768342">Politikanın ayarlanması, kalıpları istek yapan URL'nin güvenlik kaynağıyla eşleşen URL listesini sizin belirttiğiniz anlamına gelir. Eşleşme olması halinde istemde bulunulmadan ses yakalama cihazlarına erişim izni verilir
 
       Geçerli <ph name="URL_LABEL" /> kalıpları hakkında ayrıntılı bilgi için lütfen https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns adresine bakın.</translation>
+<translation id="719398790886719721">Linux sanal makinelerine kök erişimi devre dışı bırak</translation>
 <translation id="7194407337890404814">Varsayılan arama sağlayıcının adı</translation>
 <translation id="7198134478421755850">Uzantı</translation>
 <translation id="7199304109870655950">Chrome Uzaktan Masaüstü ana makinesinde uzaktan erişim seçeneklerini yapılandır.
@@ -6234,6 +6319,7 @@
 <translation id="7412456346709338637">Thunderbolt/USB4 çevre birimi veri erişimini etkinleştirir</translation>
 <translation id="7417438464912687020">Bu makineye uzaktan erişim bağlantılarına izin ver</translation>
 <translation id="7417972229667085380">Sunum modundayken boşta gecikme süresini ölçekleme yüzdesi (kullanımdan kaldırıldı)</translation>
+<translation id="7421230730436851224">Sesi hiçbir zaman korumalı alana alma</translation>
 <translation id="7421483919690710988">Medya disk önbelleği boyutunu bayt olarak ayarla</translation>
 <translation id="7424751532654212117">Devre dışı bırakılmış eklentiler listesinin istisnalar listesi</translation>
 <translation id="7426112309807051726"><ph name="TLS_FALSE_START" /> optimizasyonunun devre dışı bırakılıp bırakılmayacağını belirtir. Geçmişteki sebeplerden dolayı, bu politikaya DisableSSLRecordSplitting adı verilmiştir.
@@ -6253,6 +6339,7 @@
 <translation id="7458437477941640506">OS sürümü hedeften daha yeniyse hedef sürüme geri dönmeyin. Güncellemeler de devre dışı bırakılır.</translation>
 <translation id="7459601923199346224">Sertifika yönetimi için kullanıcı ve cihaz politikalarını kontrol eder.</translation>
 <translation id="7459633275230216698">Dosya seçimi iletişim kutularına izin ver</translation>
+<translation id="7463055558720530430">Kullanıcıların Kerberos şifrelerini hatırlamasına izin ver</translation>
 <translation id="7464058117970792805">Yazdırma önizlemeyi etkinleştir</translation>
 <translation id="7464991223784276288">Eşleşen URL'lerden çerezleri geçerli oturumla sınırlama</translation>
 <translation id="7468182772656807573">Politikanın ayarlanması, izleme amaçlı ağ paketlerinin ne sıklıkla gönderileceğini (milisaniye olarak) belirler. Sıklık 30 saniye ile 24 saat arasında değişir. Bu aralığın dışındaki değerler aralık içine kaydırılır.
@@ -6338,8 +6425,12 @@
 
       https://blog.chromium.org/2021/09/user-agent-reduction-origin-trial-and-dates.html
       </translation>
+<translation id="7515953732107149296">Bu politika, <ph name="PRODUCT_NAME" /> ürünündeki RC4 kaldırıldıktan sonra M53 sürümünde kaldırılmıştır.
+
+      Politika ayarlanmazsa veya yanlış değerine ayarlanırsa TLS'deki RC4 şifre paketleri etkinleştirilmez. Aksi takdirde, eski bir sunucuyla uyumluluğu korumak için doğru değerine ayarlanabilir. Bu geçici bir tedbir olup sunucu yeniden yapılandırılmalıdır.</translation>
 <translation id="7519218194072744342">Protokol işleyicinin URL'si.</translation>
 <translation id="7519251620064708155">Bu sitelerde anahtar oluşturmaya izin ver</translation>
+<translation id="7521864460386999758">Chrome'a üçüncü taraf kodunun yerleştirilmesini engelle</translation>
 <translation id="7529144158022474049">Dağılım faktörünü otomatik güncelle</translation>
 <translation id="7529332889403151669">Cihaz uyku modundan veya koyu ekrandan çıktığında tam ekran uyarısının gösterilip gösterilmeyeceğini belirtir.
 
@@ -6421,6 +6512,7 @@
 <translation id="7613115815080726221">Boşta kalma işleminin uygulanmasından önce kullanıcı girişi olmadan geçecek süre (milisaniye olarak)</translation>
 <translation id="7614663184588396421">Devre dışı bırakılmış protokol şemalarının listesi</translation>
 <translation id="7616631530432070402">3DES şifre paketleri, TLS'de etkinleştirilecek</translation>
+<translation id="761788785484453836">Site izolasyonunu tüm web siteleri için zorunlu kıl</translation>
 <translation id="7620869951155758729">Bu politika, Ebeveyn Erişim Kodu'nu oluşturmak ve doğrulamak için kullanılan yapılandırmayı belirtir.
 
       |current_config| her zaman erişim kodu oluşturmak için kullanılır ve yalnızca erişim kodunun |future_config| ile doğrulanamadığı zamanlarda erişim kodu doğrulamak için kullanılmalıdır.
@@ -6499,6 +6591,11 @@
 <translation id="7701341006446125684">Uygulamalar ve Uzantılar için önbellek boyutunu ayarla (bayt olarak)</translation>
 <translation id="770339941914297201">Yeni davranış: Kiosk Chrome Uygulamaları yalnızca politikadaki güncelleme URL'si kullanılarak güncellenecektir</translation>
 <translation id="7703737669292992839">Dosya seçimi iletişim kutularını engelle</translation>
+<translation id="7708934468069982537">Bu politika, <ph name="PRODUCT_NAME" /> ürünündeki DHE kaldırıldıktan sonra M58 sürümünde kaldırılmıştır.
+
+      Politika ayarlanmazsa veya yanlış değerine ayarlanırsa TLS'deki DHE şifre paketleri etkinleştirilmez. Aksi takdirde, DHE şifre paketlerini etkinleştirmek ve eski bir sunucuyla uyumluluğu korumak için doğru değerine ayarlanabilir. Bu geçici bir tedbir olup sunucu yeniden yapılandırılmalıdır.
+
+      Sunucuların, ECDHE şifre paketlerine taşınması önerilir. Bunlar kullanılamadığı takdirde, RSA anahtarı takası kullanan bir şifre paketinin etkinleştirildiğinden emin olun.</translation>
 <translation id="7709470712369261710">Otomatik resim açıklamaları sağlamak için Google hizmetlerini kullanma</translation>
 <translation id="7712109699186360774">Bir site kamera ve/veya mikrofona erişmek istediğinde her zaman sor</translation>
 <translation id="7713608076604149344">İndirme kısıtlamaları</translation>
@@ -6617,12 +6714,15 @@
 <translation id="782661371433719637">Hiçbir sitenin File System API üzerinden dosya ve dizinlere okuma erişimi istemesine izin verme</translation>
 <translation id="7827127381981620448">Platform uygulaması</translation>
 <translation id="7833148823006528332">Android uygulaması tanımlayıcı (ör. Gmail için "com.google.android.gm")</translation>
+<translation id="7835218570504220753">Otomatik tıklamayı devre dışı bırak</translation>
 <translation id="7839180815400079700"><ph name="DEVICE_POWER_PEAK_SHIFT_ENABLED_POLICY_NAME" /> politikası Etkin değerine ayarlanırsa <ph name="DEVICE_POWER_PEAK_SHIFT_DAY_CONFIG_POLICY_NAME" /> ayarı yoğun saatler için güç yönetimi gün yapılandırmasını ayarlar.
 
       Politika ayarlanmadan bırakılırsa yoğun saatler için güç yönetimi kapalı olur.
 
       <ph name="START_TIME_FIELD_NAME" />, <ph name="END_TIME_FIELD_NAME" /> ve <ph name="CHARGE_START_TIME_FIELD_NAME" /> içinde <ph name="MINUTE_FIELD_NAME" /> alanı için izin verilen değerler 0, 15, 30, 45'tir.</translation>
+<translation id="7840258755683573560">Otomatik tıklamayı etkinleştir</translation>
 <translation id="7841880500990419427">Yedek olarak kullanılacak minimum TLS sürümü</translation>
+<translation id="7845130996290850593">Kerberos'u etkinleştir</translation>
 <translation id="7846952520291088817">WebRTC ICE adaylarında sunulan yerel IP'ler için URL'ler</translation>
 <translation id="7848641140449742406">OS Ayarları</translation>
 <translation id="7850846808758624237">Politika Etkin değerine ayarlanırsa önceki varsayılan tarayıcının ana sayfası ilk çalıştırmada içe aktarılır. Politika Devre dışı değerine ayarlanır veya ayarlanmadan bırakılırsa ana sayfa ilk çalıştırmada içe aktarılmaz.
@@ -6920,12 +7020,14 @@
           Bu politikayı ayarlarsanız kullanıcılar değiştiremez veya geçersiz kılamazlar.
 
           Bu politika ayarlanmadan bırakılırsa imleci vurgulama başlangıçta devre dışıdır ancak istenildiğinde kullanıcı tarafından etkinleştirilebilir.</translation>
+<translation id="8160572976152509481">Kullanıcıların yalnızca fiziksel güç düğmesini kullanarak cihazı kapatmasına izin ver</translation>
 <translation id="8164144100557223371">Tarayıcı deneysel özellikler araç çubuğu giriş noktasını devre dışı bırak</translation>
 <translation id="8164687848393015214">Politika Etkin değerine ayarlanırsa izleme amaçlı ağ paketleri (<ph name="HEARTBEATS_TERM" />), bağlantı durumunun izlenmesini ve cihazın çevrimdışı olup olmadığının belirlenmesini sağlamak için yönetim sunucusuna gönderilir.
 
       Politika Devre Dışı değerine ayarlanır veya ayarlanmadan bırakılırsa paket gönderilmez.</translation>
 <translation id="8169452762291746260">Cihaz sağlığını izlemeyi devre dışı bırak</translation>
 <translation id="8171924760436219650">Giriş ekranında birincil fare düğmesini sağ düğme yap</translation>
+<translation id="81724933026241365">Kullanıcıların kapat simgesini veya fiziksel güç düğmesini kullanarak cihazı kapatmasına izin ver</translation>
 <translation id="8173864651667424191">Resim olarak yazdır, PDF dokümanların yazdırma önizlemelerinde kullanılabildiği durumlarda varsayılan olarak seçilir.</translation>
 <translation id="8176035528522326671">Kurumsal kullanıcının sadece birincil çok profilli kullanıcı olmasına izin ver (Kurumsal olarak yönetilen kullanıcılar için varsayılan çalışma biçimidir)</translation>
 <translation id="8179161412673077784">Kötüye kullanım deneyimi yaşatan sitelerin yeni pencere veya sekme açmasını engelle</translation>
@@ -7125,6 +7227,7 @@
 <translation id="8337961007759352651">Çalışanlar (Web Çalışanları, Hizmet Çalışanları vb.) için komut dosyalarında <ph name="MIMETYPE_TEXT_JAVASCRIPT" /> gibi bir JavaScript MIME türü gerekir. <ph name="MIMETYPE_TEXT_ASCII" /> gibi eski MIME türlerine sahip çalışan komut dosyaları reddedilir.</translation>
 <translation id="8339089771335211509">WebRTC, yalnızca herkese açık internete bağlanırken arayüzü kullanıp özel IP adresleri kullanarak bağlanmaz.</translation>
 <translation id="8339420913453596618">İkinci faktör devre dışı</translation>
+<translation id="8341175887542205077">Linux sanal makine yedekleme ve geri yükleme özelliğini devre dışı bırak</translation>
 <translation id="8344454543174932833">İlk çalıştırmada yer işaretlerini varsayılan tarayıcıdan içe aktar</translation>
 <translation id="8347993687936322631">Bu politikanın artık kullanılmadığını ve <ph name="PRODUCT_OS_NAME" /> sürüm 85'te kaldırılacağını unutmayın. Lütfen bunun yerine <ph name="POWER_MANAGEMENT_IDLE_SETTINGS_POLICY_NAME" /> politikasını kullanın.
 
@@ -7141,6 +7244,7 @@
 <translation id="8367209241899435947">Windows'da Chrome Temizleme Aracı'nı etkinleştir</translation>
 <translation id="8367473200119029349">Bulut Raporlaması</translation>
 <translation id="8367488518695804749">Hiçbir sitenin pop-up göstermesine izin verme</translation>
+<translation id="8369359426872560378">Prize takılıyken otomatik başla özelliğini devre dışı bırak</translation>
 <translation id="8369602308428138533">AC güçle çalışırken ekran kapatma gecikmesi</translation>
 <translation id="8371178326720637170">Yönetilen uzantıların Kurumsal Donanım Platformu API'sini kullanmasını sağlar</translation>
 <translation id="8373176843640227330">Cihazın Bluetooth bilgileri raporlamasını devre dışı bırak</translation>
@@ -7286,6 +7390,7 @@
       <ph name="DEVICE_ROLLBACK_TO_TARGET_VERSION_POLICY_NAME" /> ile birlikte kullanılırsa cihaz sürümü belirli bir eski sürüme döndürülebilir.
 
       Uyarı: Kullanıcıların yazılım güncellemelerini ve kritik güvenlik düzeltmelerini almasını engelleyebileceği için sürüm kısıtlamalarının yapılandırılması önerilmez. Güncellemelerin belirli bir sürümle kısıtlanması kullanıcıları riske atabilir.</translation>
+<translation id="8519617069657262768">Google Drive senkronizasyonunu etkinleştir</translation>
 <translation id="8520064498689833152">Google Arama'da Güvenli Arama ve YouTube Kısıtlı Modu kullanımını en azından Orta Düzey olmaya zorla</translation>
 <translation id="8524334245528364388">Yazdırma sunucularının listesini içeren bir JSON dosyasının URL'si.</translation>
 <translation id="8525526490824335042">Linux kapsayıcı</translation>
@@ -7309,6 +7414,7 @@
 
           Bu politikanın ayarlanmadığı bir site için mevcutsa <ph name="DEFAULT_JAVA_SCRIPT_JIT_SETTING_POLICY_NAME" /> ayarının politikası geçerli olur, mevcut değilse JavaScript JIT site için etkinleştirilir.</translation>
 <translation id="8543108307976719751">Bu makineye uzaktan erişim bağlantılarını engelle</translation>
+<translation id="8543975123557636331">Ses çıkışını etkinleştir</translation>
 <translation id="8544375438507658205"><ph name="PRODUCT_FRAME_NAME" /> için varsayılan HTML oluşturucusu</translation>
 <translation id="8544465954173828789">SMS Mesajlarının telefondan Chromebook'a senkronize edilmesine izin ver</translation>
 <translation id="8549906780629620346">Hesap kurtarmayı etkinleştir</translation>
@@ -7383,6 +7489,7 @@
       Politika, devre dışı değerine ayarlanırsa kullanıcılar bu özelliklere erişemez.
       Bu politika ayarlanmadan bırakılırsa varsayılan olarak ChromeOS'teki kuruluş tarafından yönetilen kullanıcılara izin verilmezken, diğer tüm kullanıcılara ve işletim sistemlerine izin verilir.</translation>
 <translation id="8626826495474944836">Her site için Site İzolasyonunu zorunlu tut</translation>
+<translation id="8631314130868563649">Yoğun saatlerde güç kullanımını değiştirme yönetimini devre dışı bırak</translation>
 <translation id="8631434304112909927"><ph name="UNTIL_VERSION" /> sürümüne kadar</translation>
 <translation id="8631437968147930597"><ph name="PRODUCT_OS_NAME" /> kilit ekranında izin verilen not alma uygulamaları listesi</translation>
 <translation id="8633550872001751090"><ph name="PRODUCT_NAME" /> verilerinin yedeklere dahil edilmesine izin ver</translation>
@@ -7562,6 +7669,7 @@
 <translation id="8816370949847593408">Kullanımdan kaldırma durumuna bağlı olarak Chrome Uygulamalarının çalışmasına izin verilmeyebilir.</translation>
 <translation id="8818768076343557335">Hücresel olmayan ağlarda ağ işlemlerini tahmin et.
           (50'de kullanımdan kaldırılmıştır, 52'de kaldırılmıştır. 52'den sonra, 1 değeri ayarlanırsa 0 olarak (ağ bağlantılarında ağ işlemlerini tahmin et değeri gibi) işlem görür.)</translation>
+<translation id="8820434908768990758">Site izolasyonunu tüm web siteleri için etkinleştir, ancak kullanıcının bu özelliği devre dışı bırakmasına izin ver</translation>
 <translation id="8821678641132607468">Politika Etkin değerine ayarlanırsa önceki varsayılan tarayıcıdan tarama geçmişi ilk çalıştırmada içe aktarılır. Politika Devre dışı değerine ayarlanır veya ayarlanmadan bırakılırsa tarama geçmişi ilk çalıştırmada içe aktarılmaz.
 
       Kullanıcılar içe aktarma iletişim kutusunu tetikleyebilir ve tarama geçmişi onay kutusu, bu politikanın değerine uyacak şekilde işaretlenir veya işareti kaldırılır.</translation>
@@ -7659,6 +7767,7 @@
 <translation id="8919100556245407184"><ph name="PRODUCT_OS_NAME" /> sürümü, belirtilen <ph name="CHROMEOS_VERSION_PROPERTY_NAME" /> sürümünden düşükse kullanıcı oturumunun otomatik güncelleme süre sonu yayınından kaç gün sonra kapatılacağı</translation>
 <translation id="8919369436496201075">Cihazın LTS güncellemelerini almasına izin ver</translation>
 <translation id="8921669704201370845">Yönetilen profil için <ph name="PRODUCT_NAME" /> bulut raporlamasını etkinleştir</translation>
+<translation id="8922231993239705844">Fare imlecini vurgulamayı devre dışı bırak</translation>
 <translation id="8922494933893518624">Güvenli olmayan bağlamlarda WebSQL kullanımının etkinleştirilmesini zorunlu tut.</translation>
 <translation id="8930064580550462145">Kilit ekranı üzerinden giriş yapılırken <ph name="PRODUCT_OS_NAME" />, bir sunucu (çevrimiçi) veya önbelleğe alınmış bir şifre (çevrimdışı) ile kimlik doğrulaması yapabilir.
 
@@ -7706,6 +7815,7 @@
 <translation id="8983539044126123594">Ek Google hesaplarıyla oturum açmayı etkinleştir</translation>
 <translation id="8985219286836584291">Cihazın sistem bilgileri raporlamasını etkinleştir</translation>
 <translation id="8992176907758534924">Hiçbir sitenin resimleri görüntülemesine izin verme</translation>
+<translation id="8994850249590725417">Gizlilik bildirimlerini gösterme</translation>
 <translation id="8994954504552592260"><ph name="MS_AD_NAME" /> tarafından yönetilen cihazların bulut yönetimine taşınmasını etkinleştir. Bu politika, bir şirketteki çeşitli cihazların hiç dokunulmadan uzaktan taşınmasına olanak tanır. Ayrıca, taşıma işlemi son kullanıcılar açısından mümkün olduğunca şeffaf bir şekilde gerçekleştirilir.
 
       Bu politika etkinleştirilirse ve kayıt kimliği halihazırda DMServer'a yüklenmiş olursa cihazın powerwash işlevi uzaktan tetiklenir.
@@ -7915,6 +8025,7 @@
       Bu politika geçici bir çözüm olup gelecekteki <ph name="PRODUCT_NAME" /> sürümlerinden kaldırılacaktır. Politikanın kaldırılmasından sonra <ph name="PRODUCT_NAME" />, her zaman ilave DNS türlerini sorgulayabilecektir.</translation>
 <translation id="9167719789236691545"><ph name="PRODUCT_OS_NAME" />, Dosyalar uygulamasında Drive'ı devre dışı bırak</translation>
 <translation id="9187743794267626640">Harici depolama birimi eklemeyi devre dışı bırak</translation>
+<translation id="9190022798664427644">Mono sesi etkinleştir</translation>
 <translation id="9190456586252617675">Bu politika, Asistan ilk katılım deneyimi modunu kontrol eder.
 
       Politika ayarlanmadan bırakılırsa veya <ph name="ASSISTANT_ONBOARDING_MODE_DEFAULT" /> değerine ayaranırsa Asistan ilk katılım deneyiminin varsayılan modu kullanılır.
@@ -7954,6 +8065,7 @@
       Ayarlanmadan bırakılması bu politikanın, <ph name="PRODUCT_NAME" /> ürününün 73'ten 75'e kadarki sürümlerinde Etkinleştirildiği, <ph name="PRODUCT_NAME" /> ürününün 76 ve 77 sürümlerinde Devre dışı bırakıldığı anlamına gelir.</translation>
 <translation id="93985900824506396">3DES şifre paketleri, TLS'de devre dışı bırakılacak</translation>
 <translation id="940706688964479124">İndirildiğinde otomatik olarak açılması gereken dosya türleri listesi</translation>
+<translation id="942977875497446094">Başlangıçta tarayıcıyı otomatik başlat</translation>
 <translation id="943865157632139008"><ph name="PRODUCT_FRAME_NAME" /> yüklendiğinde varsayılan HTML oluşturucusunu yapılandırmanıza olanak verir. Varsayılan ayar, oluşturmayı ana makinenin tarayıcısının yapmasına izin vermektir, ancak isteğe bağlı olarak bunu geçersiz kılabilir ve HTML sayfalarının varsayılan olarak <ph name="PRODUCT_FRAME_NAME" /> tarafından oluşturulmasını sağlayabilirsiniz.</translation>
 <translation id="944817693306670849">Disk önbellek boyutunu ayarla</translation>
 <translation id="947333773406819973">Bu politika kullanımdan kaldırıldı. Bunun yerine lütfen "<ph name="URL_BLOCKLIST_POLICY_NAME" />" politikasını kullanın.
@@ -7982,6 +8094,7 @@
 <translation id="981346395360763138">Google konum hizmetleri devre dışı</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>
+<translation id="987261962216071510">Yalnızca tarayıcıya misafir girişlerine izin ver</translation>
 <translation id="991560005425213776">Kullanıcı adını ve dosya adını yerel yazıcılara gönderme</translation>
 <translation id="99202634486128833">Politikanın CopyCaCerts seçeneğine ayarlanması, ONC tarafından yüklenen ve <ph name="WEB_TRUSTED_BIT" /> içeren tüm CA sertifikalarını ARC uygulamaları için kullanılabilir hale getirir.
 
diff --git a/components/policy/resources/policy_templates_uk.xtb b/components/policy/resources/policy_templates_uk.xtb
index 04b0728..7718e83b 100644
--- a/components/policy/resources/policy_templates_uk.xtb
+++ b/components/policy/resources/policy_templates_uk.xtb
@@ -151,6 +151,7 @@
 
       Налаштування правила <ph name="CHROME_OS_RELEASE_CHANNEL_POLICY_NAME" /> діють, лише якщо для <ph name="CHROME_OS_RELEASE_CHANNEL_DELEGATED_POLICY_NAME" /> вибрано значення False.</translation>
 <translation id="1147732569915511430">Хеш SHA-256 для зображення аватара.</translation>
+<translation id="1148415065145333943">Вимкнути режим покращеного заряджання акумулятора</translation>
 <translation id="1151353063931113432">Дозволити зображення на цих сайтах</translation>
 <translation id="1151987132434751822">Схеми автентифікації, для яких можуть застосовуватись облікові дані правила. Це може бути одне з таких значень:
             * basic
@@ -169,6 +170,7 @@
 <translation id="1160479894929412407">Вмикає протокол QUIC</translation>
 <translation id="1160939557934457296">Вимикати переходи зі сторінки застереження Безпечного перегляду</translation>
 <translation id="1163080558183062209">Вимкнути типи принтерів у списку заборонених</translation>
+<translation id="1165923723751466821">Дозволити вхід у гостьовому режимі у веб-переглядачі та вхід у профілі</translation>
 <translation id="117059611145966538">Зовнішні сервери друку</translation>
 <translation id="117080706484659953">Дозволити виявлення області дії правил для <ph name="MAC_OS_NAME" /></translation>
 <translation id="1171106901454883937">Увімкнути звіти про версії пристрою</translation>
@@ -221,6 +223,7 @@
 <translation id="120937472976628837">Повідомляти дані про вентилятор</translation>
 <translation id="1212233008927724662">Вимкнути відкладене завантаження WebUI для екрана входу.</translation>
 <translation id="1216919699175573511">Увімкнути підтримку Signed HTTP Exchange (SXG)</translation>
+<translation id="1219027971768347970">Використовувати конфігурацію за умовчанням для ізольованого програмного середовища для аудіо</translation>
 <translation id="1219695476179627719">Указує, чи відкочуватися до версії, яку зазначено в правилі <ph name="DEVICE_TARGET_VERSION_PREFIX_POLICY_NAME" />, якщо на пристрої вже встановлено новішу версію.
 
       За умовчанням – RollbackDisabled.</translation>
@@ -489,6 +492,7 @@
 
       Дізнатися про зовнішні розширення, зокрема їх встановлення, можна на сторінці https://developer.chrome.com/apps/external_extensions.
       </translation>
+<translation id="1484190167468437592">Вимкнути монофонічне аудіо</translation>
 <translation id="1486021504508098388">Повідомляти інформацію про підсвічування</translation>
 <translation id="1486469502848499602">Змінює пропоновану конфігурацію <ph name="KRB5_CONFIG" /> для нових квитків, створених вручну.
 
@@ -501,6 +505,7 @@
 
       Примітка: назви серверів потрібно розділяти комами. Дозволяються символи підстановки (<ph name="WILDCARD_VALUE" />).</translation>
 <translation id="1488724823347505879">Увімкнути надсилання контенту з додатків Android у веб-додатки</translation>
+<translation id="1501644502684303995">Вимагати ввійти через Інтернет лише на екрані входу</translation>
 <translation id="1502843533062797703">Блокувати вставляння ПЗ незалежних розробників</translation>
 <translation id="1503969899251962413">За допомогою параметрів цього правила можна вказати ключ ліцензії <ph name="PLUGIN_VM_NAME" /> для цього пристрою.
 
@@ -648,6 +653,7 @@
 
       Якщо це правило вимкнено або не налаштовано, у непідтримуваних системах з'являтиметься попередження.</translation>
 <translation id="1634989431648355062">Дозволити плагін <ph name="FLASH_PLUGIN_NAME" /> на цих сайтах</translation>
+<translation id="1635748761015837179">Дозволити записувати дані на зовнішні носії</translation>
 <translation id="1639468541408865385">Увімкнути глобальний кеш автентифікації HTTP</translation>
 <translation id="1641394008743444477">Дає змогу налаштувати перелік функцій <ph name="PRODUCT_OS_NAME" />, які буде вимкнено.
 
@@ -663,6 +669,7 @@
 
       Якщо це правило не налаштовано, використовуватиметься розмір кешу за умовчанням, але користувачі зможуть змінити цей параметр за допомогою правила --media-cache-size.</translation>
 <translation id="1648816843164517573">Список назв, які обійдуть перевірку правил HSTS</translation>
+<translation id="1651197070942919276">Заборонити пристроям запускати віртуальні машини</translation>
 <translation id="1654087023995670109">Примусово вмикати режим гостя у веб-переглядачі</translation>
 <translation id="1655229863189977773">Установити кеш-пам’ять диска в байтах</translation>
 <translation id="165769015320654523">Автоматично дозволяти цим сайтам підключатися до пристроїв HID з певними ідентифікаторами постачальника й виробу.</translation>
@@ -721,6 +728,7 @@
 
       Примітка: щоб переглянути детальніші приклади, відвідайте веб-сайт проектів Chromium (https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett).</translation>
 <translation id="1700811900332333712">Дозволити пристрою надсилати запит на запуск Powerwash</translation>
+<translation id="1705215165572785706">Вважати клавіші верхнього рядка мультимедійними, але дозволити користувачу змінювати налаштування</translation>
 <translation id="1708496595873025510">Установити обмеження щодо отримання початкового числа Варіацій</translation>
 <translation id="1709154322133526432">Увімкнути перевірку веб-переглядача за умовчанням під час запуску</translation>
 <translation id="1713829924716792485">Якщо це правило ввімкнено або не налаштовано, користувачі з віддаленим доступом до хосту можуть переносити файли між клієнтом і хостом. Це не стосується з'єднань для віддаленої допомоги, що не підтримують перенесення файлів.
@@ -891,6 +899,7 @@
       Якщо для цього правила вибрано значення False або його не налаштовано, <ph name="PRODUCT_NAME" /> не здійснюватиме онлайн-перевірки анулювання сертифікатів у <ph name="PRODUCT_NAME" /> 19 і новіших версій.
 
       Примітка: перевірки <ph name="OCSP_CRL_LABEL" /> не забезпечують ефективне покращення безпеки.</translation>
+<translation id="1905061765326052857">Заборонити стороннім користувачам використовувати віртуальні машини, потрібні для підтримки додатків Linux</translation>
 <translation id="1910704279188129272">Дозволяє встановити обмеження щодо використання окремо для кожного додатка.
         Обмеження щодо використання можна застосовувати до додатків, встановлених на <ph name="PRODUCT_OS_NAME" />, для певного користувача.
         Обмеження потрібно ввести в список |app_limits|. Для кожного додатка можна додати лише один запис. Додатки, які не включено в список, не мають обмежень.
@@ -913,11 +922,14 @@
 <translation id="1920772397574801429">Налаштування цього правила визначають тип облікових записів, наданих додатком для автентифікації Android, що підтримує автентифікацію <ph name="HTTP_NEGOTIATE" /> (наприклад, Kerberos). Цю інформацію має надати постачальник додатка для автентифікації. Докладніше на сторінці проекту Chromium Projects (https://goo.gl/hajyfN)
 
       Якщо це правило не налаштовано, автентифікацію <ph name="HTTP_NEGOTIATE" /> буде вимкнено на пристроях Android.</translation>
+<translation id="1923704782248889851">Увімкнути диктування</translation>
 <translation id="1925529914257504750">Автоматичне оновлення за допомогою однорангової мережі ввімкнено</translation>
+<translation id="1930094135927166199">Вимкнути USB Powershare</translation>
 <translation id="1930127294345368978">Максимальна кількість аркушів, які можна друкувати під час одного завдання друку</translation>
 <translation id="193259052151668190">Список USB-пристроїв, які можна від’єднувати</translation>
 <translation id="1933378685401357864">Фоновий малюнок</translation>
 <translation id="1942626390957213764">Вимкнути центр спільного доступу</translation>
+<translation id="194407941132272412">Вимкнути ізоляцію для всіх веб-сайтів, але дозволити користувачу ввімкнути її</translation>
 <translation id="1945994447126139909">Це корпоративне правило призначене для короткочасної адаптації та буде вилучене в <ph name="PRODUCT_NAME" /> версії 88.
 
       Поточне значення no-referrer-when-downgrade правила напрямку переходу Chrome за умовчанням змінено на надійніше значення strict-origin-when-cross-origin шляхом поступового впровадження стабільної версії Chrome 85.
@@ -1019,8 +1031,10 @@
 <translation id="2013285471046373727">Визначає, як встановлюється додаток. OPTIONAL: додаток не встановлюється автоматично, однак це може зробити користувач. Цей параметр застосовується за умовчанням, якщо правило не налаштовано. PRELOAD: додаток встановлюється автоматично, однак користувач може видалити його. FORCE_INSTALLED: додаток встановлюється автоматично й користувач не може видалити його. BLOCKED: додаток заблокований, його не можна встановити. Якщо додаток було встановлено згідно з попереднім правилом, його буде видалено.</translation>
 <translation id="2014757022750736514">Керує поведінкою екрана входу, де користувачі входять в облікові записи. Ці налаштування визначають, хто може входити, які типи облікових записів дозволено, які способи автентифікації потрібно використовувати, а також загальні параметри спеціальних можливостей, методу введення та мовного коду.</translation>
 <translation id="201557587962247231">Частота завантаження звіту про статус пристрою</translation>
+<translation id="2016031354108680330">Увімкнути кореневий доступ до віртуальних машин Linux</translation>
 <translation id="2017301949684549118">URL-адреси веб-додатків для фонового встановлення.</translation>
 <translation id="2017459564744167827">Докладніше про схему й форматування на сторінці <ph name="REFERENCE_URL" />.</translation>
+<translation id="2018425641414671849">Заборонити користувачам відтворювати медіафайли, коли пристрій заблоковано</translation>
 <translation id="2024476116966025075">Налаштувати назву домену, потрібного для віддаленого доступу</translation>
 <translation id="2029985289397958781">Вимкнути пошук за допомогою камери в додатку <ph name="GOOGLE_LENS_PRODUCT_NAME" /> для корпоративних користувачів</translation>
 <translation id="2030905906517501646">Ключове слово пошукової служби за умовчанням</translation>
@@ -1356,6 +1370,7 @@
       Можливість вибрати для цього правила значення tls1 або tls1.1 вилучено у версії 91. Блокування попереджень TLS 1.0/1.1 більше не підтримується.</translation>
 <translation id="2364639863953745682">Режим реєстрації в Асистенті</translation>
 <translation id="2366301887862414321">Дозволити хости для обміну повідомленнями з рідними додатками на рівнях користувача й системи</translation>
+<translation id="2373014700224092497">Дозволити користувачам додавати облікові записи Kerberos</translation>
 <translation id="2382672620906337383">Значення функції JavaScript setTimeout() не обмежуватимуться, доки не буде досягнуто вищого порогу для вкладень.</translation>
 <translation id="2384233438419344179">Якщо ввімкнути це правило, елементи веб-сторінок за межами домену, указаного в адресному рядку веб-переглядача, не зможуть встановлювати файли cookie. Якщо вимкнути це правило, такі елементи зможуть встановлювати файли cookie, а користувачі не матимуть можливості змінити цей параметр.
 
@@ -1503,6 +1518,7 @@
       Якщо це правило не налаштовано, функцію "Інтерактивний номер" увімкнено за умовчанням.</translation>
 <translation id="2482676533225429905">Обмін повідомленнями з оригінальними додатками</translation>
 <translation id="2483146640187052324">Передбачати дії мережі</translation>
+<translation id="2489558694350871332">Дозволити пристроям запускати віртуальні машини</translation>
 <translation id="2496180316473517155">Історія веб-перегляду</translation>
 <translation id="2497751676088107779">Скрипт користувача</translation>
 <translation id="2497965601277442929">Заборонити користувачам вмикати режим "Лише HTTPS"</translation>
@@ -1544,6 +1560,7 @@
       Якщо вимкнути або не налаштувати це правило, то параметри повного відновлення визначатимуть, які вікна відкривати під час входу.</translation>
 <translation id="2517466659416174529">Дозволити фоновим вкладкам зависати</translation>
 <translation id="2518231489509538392">Дозволити відтворення аудіо</translation>
+<translation id="2519578205567666653">Дозволити зовнішні носії</translation>
 <translation id="2520551905471951523">Використовувати високий пріоритет для обробки аудіо</translation>
 <translation id="2521581787935130926">Показувати ярлик додатка на панелі закладок</translation>
 <translation id="2522304491589804974">Налаштувати білий список для встановлення розширень</translation>
@@ -1599,6 +1616,7 @@
 <translation id="2568488785376704318">Це правило не підтримується. Натомість використовуйте <ph name="REMOTE_ACCESS_HOST_DOMAIN_LIST_POLICY_NAME" />.</translation>
 <translation id="2575198840408498393">Вимкнути створення роумінгових профілів</translation>
 <translation id="2576324725151524912">Дозволити режим розробника для ізольованих додатків.</translation>
+<translation id="257717978573041245">Увімкнути апаратне прискорення</translation>
 <translation id="257788512393330403">Пароль потрібно вводити кожні 6 годин</translation>
 <translation id="2580757713966614760">Це правило вказує, яке правило доступу діє для групового налаштування принтерів. Воно визначає, які принтери з правила <ph name="DEVICE_PRINTERS_POLICY_NAME" /> доступні для користувачів.
 
@@ -1621,6 +1639,7 @@
       * Дія за умовчанням, яка має виконуватися під час живлення від електромережі, коли користувач неактивний – завершення роботи.
 
       Якщо це правило або його параметри не налаштовано, для різних налаштувань живлення використовуються значення за умовчанням.</translation>
+<translation id="2591775699187375408">Завжди обробляти аудіо за допомогою ізольованого програмного середовища</translation>
 <translation id="2592091433672667839">Тривалість бездіяльності до відтворення заставки на екрані входу в режимі роздрібного продажу</translation>
 <translation id="259289618675490104">Якщо вибрано параметр "Усі" (значення 0) або це правило не налаштовано, користувачі можуть керувати сертифікатами. Якщо вибрано параметр "Немає" (значення 2), користувачі можуть лише переглядати сертифікати (але не керувати ними).
 
@@ -1856,6 +1875,7 @@
 <translation id="283478052049914107">Якщо це правило активовано, а вказаний порт є нестандартним (тобто не 80 чи 443), його буде включено в SPN для протоколу Kerberos.
 
       Якщо це правило деактивовано або не налаштовано, створена назва SPN для протоколу Kerberos не міститиме порту.</translation>
+<translation id="2834965199373338033">Увімкнути фоновий режим</translation>
 <translation id="2835686964326214400">Налаштувати власний розклад перезапуску пристроїв</translation>
 <translation id="2838830882081735096">Заборонити перенесення даних і ARC</translation>
 <translation id="2839294585867804686">Налаштування спільних мережевих файлів</translation>
@@ -1868,6 +1888,7 @@
 <translation id="2866619962692161453">Тип метаправила</translation>
 <translation id="2866726566162790531">Список джерел, які можуть використовувати всі схеми автентифікації за протоколом HTTP</translation>
 <translation id="2869762730352628426">Увімкнути функцію "Автоклік" на екрані входу</translation>
+<translation id="2872098849906555324">Вимкнути синхронізацію Google Диска</translation>
 <translation id="2872961005593481000">Завершити роботу</translation>
 <translation id="2874209944580848064">Примітка для пристроїв <ph name="PRODUCT_OS_NAME" />, які підтримують додатки Android.</translation>
 <translation id="2875192972412983412">Указує набір серверів друку, яким надсилатимуться запити.
@@ -1908,6 +1929,7 @@
       Якщо вибрати для правила значення false, перед запуском ARC не створюватимуться вікна-привиди. Додатки ARC відновлюються після запуску ARC.</translation>
 <translation id="2899002520262095963">Додатки Android можуть використовувати налаштування мережі та сертифікати ЦС, установлені за допомогою цього правила, однак вони не мають доступу до деяких параметрів налаштувань.</translation>
 <translation id="2899213072616346687">Обмежує режим друку з фоновими зображеннями. Якщо це правило не налаштовано, вважається, що воно не має обмежень.</translation>
+<translation id="2899640611559504158">Вимкнути доступ до командного рядка віртуальної машини</translation>
 <translation id="290002216614278247">Дає змогу блокувати сеанс користувача на основі часу клієнта чи денної квоти на використання.
 
           Значення |time_window_limit| указує щоденний проміжок, після якого сеанс користувача має бути заблоковано. Ми підтримуємо лише одне правило для кожного дня тижня, тому параметр |entries| може мати значення від 0 до 7. Коли значення |ends_at| менше, ніж значення |starts_at|, то |time_limit_window| закінчується наступного дня. |last_updated_millis| – це позначка часу UTC для останнього оновлення запису, яка надсилається як рядок, оскільки не поміщається в ціле число.
@@ -1981,6 +2003,7 @@
 <translation id="2960128438010718932">Поетапний графік застосування нового оновлення</translation>
 <translation id="2960691910306063964">Увімкнути або вимкнути автентифікацію без PIN-коду для хостів віддаленого доступу</translation>
 <translation id="2962972237615992440">Вимкнути проксі-сервер <ph name="CLOUD_PRINT_NAME" /></translation>
+<translation id="2963292398266537394">Вимкнути диктування</translation>
 <translation id="2964056138564883247">Керує доступністю правила <ph name="BOREALIS_NAME" /> для цього користувача.
 
       Якщо вибрати значення false, правило <ph name="BOREALIS_NAME" /> буде недоступне. Якщо ж не налаштовувати правило або вибрати для нього значення true, правило <ph name="BOREALIS_NAME" /> буде доступне, лише якщо інше правило чи налаштування не вимикатиме його.</translation>
@@ -2084,6 +2107,7 @@
       Якщо для цього правила вибрано значення False, на сторінці нової вкладки не з'являтимуться автоматично згенеровані пропозиції контенту.</translation>
 <translation id="3046192273793919231">Надсилати мережеві пакети на сервер керування, щоб відстежувати онлайн-статус</translation>
 <translation id="3047732214002457234">Визначає, як інструмент Очищення Chrome повідомляє дані в Google</translation>
+<translation id="3047864383610708617">Вимкнути залипання клавіш</translation>
 <translation id="3048744057455266684">Якщо це правило встановлено й URL-адреса пошуку, запропонована в універсальному вікні пошуку, містить цей параметр у рядку запиту або ідентифікаторі фрагмента, тоді пропозиція відображатиме пошукові терміни та пошукову систему, а не вихідну URL-адресу пошуку.
 
           Це правило необов’язкове. Якщо його не встановлено, заміна пошукового терміну не здійснюється.
@@ -2157,6 +2181,7 @@
       Докладніше про дійсні шаблони <ph name="URL_LABEL" />-адрес можна дізнатися на сторінці https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns.  Це правило враховує тільки джерела, тож шляхи в шаблонах URL-адрес ігноруються.</translation>
 <translation id="3118552207903834734">Дозволити користувачам налаштовувати ім’я хосту на пристрої</translation>
 <translation id="3122082892722698079">Контролювати використання винятків для незахищеного контенту</translation>
+<translation id="3125472566440502628">Вимкнути читання з екрана</translation>
 <translation id="3128072319047570212">Налаштування генератора ключів</translation>
 <translation id="3131703464330936425">Не дозволяти роумінг мобільних даних</translation>
 <translation id="3135820765957090754">Якщо це налаштування ввімкнути, користувачі зможуть синхронізувати конфігурації мереж Wi-Fi між своїми пристроями <ph name="PRODUCT_OS_NAME" /> і підключеним телефоном Android. Для цього користувачі мають спеціально ввімкнути згадану функцію, налаштувавши її.
@@ -2298,6 +2323,8 @@
       Якщо це правило не налаштовано, функція оновлення мікропрограми <ph name="TPM_FIRMWARE_UPDATE_TPM" /> недоступна.</translation>
 <translation id="3232563711929146405">Вимкнути ізольоване програмне середовище мережевого сервісу</translation>
 <translation id="3232691106293445015">Незахищеним з'єднанням HTTP не дозволено використовувати автентифікацію <ph name="BASIC_AUTH" />; необхідне з'єднання HTTPS</translation>
+<translation id="3234753491625248216">Вимкнути апаратне прискорення</translation>
+<translation id="3234773866678260466">Дозволити додавати нові профілі</translation>
 <translation id="3234863952320884611">Дозволяє методам <ph name="FILE_SYSTEM_SYNC_ACCESS_HANDLE" /> запускатись асинхронно</translation>
 <translation id="3235085623859932253"> Якщо це правило вимкнено, користувач не зможе повністю підключити периферійний пристрій, який використовує інтерфейс Thunderbolt або USB4, через тунелювання PCIe.
 
@@ -2460,6 +2487,7 @@
 
       Якщо правило <ph name="DEVICE_LOCAL_ACCOUNT_AUTO_LOGIN_ID_POLICY_NAME" /> не налаштовано, це правило не діє.</translation>
 <translation id="3397883909301547525">Не показувати рекомендації додатків на панелі запуску <ph name="PRODUCT_OS_NAME" /></translation>
+<translation id="3398051852031115795">Поведінка системи за умовчанням (залежить від розміру екрана)</translation>
 <translation id="3399859571630358395">Примусово вимкнути функцію "Швидка пара" (швидке підключення через Bluetooth)</translation>
 <translation id="3404681701763345449">Увімкнути інтеграцію із сервісом <ph name="GOOGLE_CALENDAR_NAME" />.</translation>
 <translation id="3408078762098350617">Керує взаємодією вимкнених функцій, зазначених у списку <ph name="SYSTEM_FEATURES_DISABLE_LIST_POLICY_NAME" />, із користувачем.
@@ -2512,6 +2540,7 @@
 <translation id="3442269905344976871">Якщо ввімкнути це правило, коли контролер діагностики й телеметрії (DTC) <ph name="WILCO_NAME" /> доступний на пристрої, збирання, обробку й надсилання даних телеметрії та діагностики буде ввімкнено.
 
       Якщо вимкнути або не налаштувати це правило, контролер DTC буде вимкнено. Він не зможе збирати, обробляти й надсилати дані телеметрії та діагностики з пристрою.</translation>
+<translation id="3442589735857147823">Дозволити користувачам використовувати віртуальні машини, потрібні для підтримки додатків Linux</translation>
 <translation id="3450649825886735618">Не використовувати веб-сервіси Google для виправлення орфографічних помилок</translation>
 <translation id="3451422488938880786"> Дозволяє вмикати або вимикати заміну комбінацій клавіш міжнародної клавіатури</translation>
 <translation id="3451901387456196887">Користувач зможе вибирати пристрої для трансляції в меню <ph name="PRODUCT_NAME" /> за допомогою коду доступу чи QR-коду.</translation>
@@ -2553,6 +2582,7 @@
 
        За умовчанням усі розширення дозволені. Але якщо всі розширення внесено правилом у чорний список, білий список може його замінити.</translation>
 <translation id="3501606938635483637">Комбінації клавіш для міжнародної клавіатури зіставляються з гліфами, а не з місцезнаходженням клавіш на клавіатурі.</translation>
+<translation id="3502438748205582075">Вимкнути Kerberos</translation>
 <translation id="3502555714327823858">Дозволити всі режими двостороннього друку</translation>
 <translation id="350443680860256679">Налаштування ARC</translation>
 <translation id="350797926066071931">Увімкнути перекладач</translation>
@@ -2637,6 +2667,7 @@
 <translation id="3589193811812796052">Заборонити міждоменне надсилання модулів WebAssembly</translation>
 <translation id="3591527072193107424">Увімкнути функцію підтримки застарілих веб-переглядачів.</translation>
 <translation id="3591584750136265240">Налаштування автентифікації під час входу</translation>
+<translation id="3596112486106491038">Увімкнути доступ до командного рядка віртуальної машини</translation>
 <translation id="3603469950773500315">Увімкнути для <ph name="CORS" /> зменшення кількості перевірок у новій реалізації <ph name="CORS" />, що дає змогу розширенням надалі мати сумісну поведінку, а <ph name="PRODUCT_NAME" /> – надсилати вказані заголовки без перевірок <ph name="CORS" />.
 
       Якщо цей список порожній, <ph name="PRODUCT_NAME" /> намагається сумісно запускати розширення й не впроваджує зміни <ph name="API" /> для <ph name="PRODUCT_NAME" /> 79, як це описано на сторінці <ph name="WEB_REQUEST_API_MANUAL" />.
@@ -2671,6 +2702,7 @@
       Якщо це правило налаштовано, користувачі не зможуть змінювати його. Якщо це правило не налаштовано, запуск під час підключення змінного струму вимкнено, а користувачі не можуть вмикати його.</translation>
 <translation id="3660562134618097814">Передавати файли cookie SAML IdP під час входу</translation>
 <translation id="3665437376055221832">Запитувати користувача, лише якщо жоден сертифікат не відповідатиме автоматичному вибору</translation>
+<translation id="3671773704245936868">Вимкнути підсвічування фокуса введення з клавіатури</translation>
 <translation id="3674010627788940405">Не підтримувати заголовки запитів CORS без символів підстановки.</translation>
 <translation id="3675303748198647471">Функція setTimeout(…, 0) зазвичай використовується, щоб розділяти великі завдання JavaScript на менші.
           Якщо ввімкнути це правило, задана функціями setTimeout і setInterval затримка до 4 мс рідше подовжується до дозволеного мінімуму.
@@ -2740,6 +2772,7 @@
 <translation id="3733014427925403568">День тижня для проміжку.</translation>
 <translation id="3736879847913515635">Додавати користувачів у диспетчері користувачів</translation>
 <translation id="3749259744154402564">Не підтримується</translation>
+<translation id="3749511622128647337">Вимкнути аудіовихід</translation>
 <translation id="3750220015372671395">Заборонити цим сайтам генерувати ключі</translation>
 <translation id="3753959315989102457">Вимкнути надсилання геоданих пристрою</translation>
 <translation id="3755237588083934849">За допомогою цього правила можна вказати частоту в мілісекундах, з якою надсилатимуться дані про статус пристрою. Мінімальне значення – 60 секунд.
@@ -2899,6 +2932,7 @@
 
       Кожен запис списку містить словник, у який мають входити ідентифікатор розширення в полі "extension-id" й URL-адреса оновлення в полі "update-url".</translation>
 <translation id="3869180930654347954">Вимкнути First-Party Sets для всіх користувачів, що зазнали впливу</translation>
+<translation id="3870035799352372700">Заблокувати Google Асистенту доступ до екранного контексту під час взаємодій</translation>
 <translation id="3870059789954671543">Увімкнути спеціальну можливість "Виділення на клавіатурі" на екрані входу.
 
           Ця функція відповідає за виділення об'єкта, вибраного на клавіатурі.
@@ -2926,6 +2960,7 @@
 
       Якщо це правило не налаштовано, протокол SPDY доступний.</translation>
 <translation id="3887529334667818189">Сеанси будуть видимі на сторінці chrome://history/journeys за умовчанням, а користувачі зможуть змінити це налаштування.</translation>
+<translation id="3891175633496805812">Вимкнути контролер діагностики й телеметрії Wilco</translation>
 <translation id="3891357445869647828">Увімкнути JavaScript</translation>
 <translation id="3891769546914233112">Надати можливість друкувати файли PDF як зображення</translation>
 <translation id="3897218615484393758">Обмежити час, упродовж якого автентифікований через SAML користувач може входити в режимі офлайн на заблокованому екрані</translation>
@@ -3036,6 +3071,10 @@
       Якщо цей параметр не налаштовано чи вибрано значення "false", пристрої з <ph name="PRODUCT_OS_NAME" /> автоматично перевіряють наявність оновлень.
 
       Застереження: радимо ввімкнути автоматичні оновлення, щоб користувачі отримували оновлення програмного забезпечення та системи безпеки. Вимкнувши автоматичні оновлення, ви можете наразити користувачів на небезпеку.</translation>
+<translation id="4015799413391577485">Це правило було вилучено у версії M97 після того, як у <ph name="PRODUCT_NAME" /> було видалено шифри 3DES.
+
+      Якщо для цього правила вибрати значення "правда", набори шрифтів 3DES у TLS буде ввімкнено. Якщо вибрати значення "неправда", їх буде вимкнено. Якщо це правило не налаштувати, набори шрифтів 3DES буде вимкнено за умовчанням. Це правило можна застосовувати, щоб тимчасово підтримувати сумісність із застарілим сервером. Це тимчасовий захід, налаштування сервера потрібно змінити.
+      </translation>
 <translation id="4016367078069682737">У версії M61 це правило вилучено.
 
       Дає змогу визначити, як має поводитися пристрій стандарту ecryptfs, який потрібно перевести на шифрування ext4.
@@ -3160,9 +3199,11 @@
 <translation id="4138655880188755661">Ліміт часу</translation>
 <translation id="4147818922357566987">Увімкнути варіанти, які стосуються лише важливих виправлень</translation>
 <translation id="4150201353443180367">Екран</translation>
+<translation id="4154221011709068799">Заборонити зовнішні носії</translation>
 <translation id="415445772247959702">Веб-магазин (підтримується, починаючи з версії 89)</translation>
 <translation id="4157003184375321727">Повідомляти версію ОС і мікропрограми</translation>
 <translation id="4157594634940419685">Надавати доступ до рідних принтерів CUPS</translation>
+<translation id="4158531549614162499">Увімкнути синхронізацію Google Диска з використанням мобільного зв’язку</translation>
 <translation id="4160962198980004898">Джерело MAC-адреси пристрою, пристикованого до док-станції</translation>
 <translation id="4161589119744364846">За допомогою цього правила можна налаштувати URL-адресу сторінки нової вкладки та заборонити користувачам змінювати її.
 
@@ -3265,6 +3306,7 @@
       Якщо це правило деактивовано або не налаштовано, користувачі можуть переносити файли на Диск під час з'єднання через мобільний Інтернет.</translation>
 <translation id="4248277954659222481">Дозволити автоматично відтворювати медіафайли з білого списку шаблонів URL-адрес</translation>
 <translation id="4250680216510889253">ні</translation>
+<translation id="4252522848899331223">Дозволити користувачам ігнорувати попередження Безпечного перегляду</translation>
 <translation id="4259636715493757956">Це правило дає змогу налаштовувати конфігурації для URL-адрес автентифікації в <ph name="WEBVIEW_PRODUCT_NAME" />.
 
       Автентифікація за такими URL-адресами відбувається в <ph name="WEBVIEW_PRODUCT_NAME" /> у такий спосіб: під час переходу з <ph name="WEBVIEW_PRODUCT_NAME" />
@@ -3325,7 +3367,9 @@
       Якщо пристрій не керований або має лише одного користувача, це правило ігнорується й сповіщення завжди відображається.
 
       Якщо на керованому пристрої є кілька облікових записів користувача, сповіщення відображається, лише коли це правило ввімкнено.</translation>
+<translation id="4309091698378414920">Увімкнути виділення курсора</translation>
 <translation id="4311195029067684288">Full</translation>
+<translation id="4311662690937656540">Вимагати ввійти через Інтернет на екрані входу й заблокованому екрані</translation>
 <translation id="4313767483634435271">Призначена пристрою MAC-адреса док-станції</translation>
 <translation id="4314538398999793073">Вимкнути пошук CNAME під час автентифікації за протоколом Kerberos</translation>
 <translation id="4320592646346933548">Wi-Fi</translation>
@@ -3419,6 +3463,7 @@
 <translation id="4427173305799125784">Засіб перегляду PDF не може додавати примітки у файлах PDF</translation>
 <translation id="4432762137771104529">Вмикає Розширене звітування безпечного перегляду</translation>
 <translation id="443454694385851356">Застарілий (небезпечно)</translation>
+<translation id="4435032708588431506">Увімкнути протокол QUIC</translation>
 <translation id="443665821428652897">Видаляти дані із сайтів, коли веб-переглядач закривається (не рекомендується)</translation>
 <translation id="4436941175475497595">Вимкнути попередній перегляд друку</translation>
 <translation id="4439336120285389675">Указує список непідтримуваних функцій веб-платформи для тимчасового ввімкнення.
@@ -3461,6 +3506,7 @@
       Докладніше про дійсні шаблони <ph name="URL_LABEL" />-адрес можна дізнатися на сторінці https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. <ph name="WILDCARD_VALUE" /> – недопустиме значення для цього правила.</translation>
 <translation id="4480694116501920047">Примусово застосовувати Безпечний пошук</translation>
 <translation id="4481202456143946404">Дійсна версія Умов використання на основі нових Умов, запроваджених у списку змін Google3.</translation>
+<translation id="4481952213163895432">Вимкнути використання слів для швидкого запуску Google Асистента</translation>
 <translation id="4483120730995943109">Функція JavaScript setTimeout(), для якої час очікування становить 0 мс, не округлюватиме значення до 1 мс.</translation>
 <translation id="4483649828988077221">Вимкнути автоматичне оновлення</translation>
 <translation id="4484515651939984695">Указує, упродовж якого часу (у секундах) пристрій для трансляції, вибраний за допомогою коду доступу або QR-коду, залишається в списку таких пристроїв у меню <ph name="PRODUCT_NAME" />.</translation>
@@ -3527,6 +3573,7 @@
       Докладніше пояснення можна переглянути за посиланням: https://www.chromestatus.com/feature/5675755719622656.
       Якщо це правило ввімкнути, сайти зможуть одночасно виконувати навігацію та відкривати нові вікна чи вкладки.
       Якщо це правило вимкнути або не налаштувати, сайти не зможуть одночасно виконувати навігацію та відкривати нові вікна чи вкладки.</translation>
+<translation id="4572577129745420844">Заборонити користувачам додавати облікові записи Kerberos</translation>
 <translation id="457430673056611745">Правило для налаштування конектора <ph name="PRODUCT_NAME" /> Enterprise OnPrint</translation>
 <translation id="4578265298946081589">Не перезапускати після виходу користувача з облікового запису.</translation>
 <translation id="4581507927311097234">Період часу неактивності користувача в мілісекундах, після якого екран вимикається</translation>
@@ -3582,6 +3629,7 @@
 <translation id="4617338332148204752">Пропускати перевірку метатегів у <ph name="PRODUCT_FRAME_NAME" /></translation>
 <translation id="4624417808625504735">Заборонити JavaScript використовувати JIT-компілятор на цих сайтах</translation>
 <translation id="4625915093043961294">Налаштувати список дозволених для встановлення розширень</translation>
+<translation id="46321462262887935">Вважати клавіші верхнього рядка функціональними, але дозволити користувачу змінювати налаштування</translation>
 <translation id="4632343302005518762">Дозволити <ph name="PRODUCT_FRAME_NAME" /> обробляти перелічені типи вмісту</translation>
 <translation id="4632566332417930481">Забороняє використовувати Інструменти розробника для розширень, установлених згідно з корпоративною політикою, але дозволяє застосовувати їх в інших ситуаціях</translation>
 <translation id="4635284822166984665">Час, коли пристрій почне заряджатися (за встановленим на пристрої місцевим часовим поясом).</translation>
@@ -3661,6 +3709,7 @@
 <translation id="4723829699367336876">Увімкнення обходу брандмауера з клієнта віддаленого доступу</translation>
 <translation id="4725528134735324213">Увімкнути Android Backup Service</translation>
 <translation id="4725801978265372736">Ім’я локального користувача та власника хосту віддаленого доступу мають збігатися</translation>
+<translation id="4726228171190098009">Заборонити пристрою надсилати запит на відновлення заводських налаштувань</translation>
 <translation id="4733471537137819387">Правила, пов’язані з вбудованою автентифікацією HTTP.</translation>
 <translation id="4735099388031364207">Якщо ввімкнути це правило, дозволяється віддалене засвідчення для пристрою. Сертифікат автоматично створюватиметься та завантажуватиметься на сервер керування пристроями.
 
@@ -3737,6 +3786,7 @@
 
       Якщо для цього правила встановлено значення false або його не налаштовано, інформація про оновлення ОС не надсилатиметься. Якщо для цього правила встановлено значення true, інформація про оновлення надсилатиметься.</translation>
 <translation id="4858735034935305895">Дозволити повноекранний режим</translation>
+<translation id="486146220825734683">Заборонити користувачам запам’ятовувати паролі Kerberos</translation>
 <translation id="4861767323695239729">Налаштовує дозволені методи введення в сеансі користувача</translation>
 <translation id="4873380469296842901">Якщо це правило ввімкнено, користувачі, які вже активували функцію "Керування телефоном", зможуть надсилати й отримувати сповіщення зі свого телефона на пристрої з ОС Chrome.
 
@@ -4145,6 +4195,7 @@
 <translation id="5255162913209987122">Може рекомендуватися</translation>
 <translation id="525543707238275321">Вимкнути звітування щодо інформації про ЦП пристрою</translation>
 <translation id="5257395339965216304">Дані розміщених додатків</translation>
+<translation id="5258445772095084618">Дозволити стороннім користувачам використовувати віртуальні машини, потрібні для підтримки додатків Linux</translation>
 <translation id="5262320080678421295">Не довіряти сертифікатам, виданим застарілою інфраструктурою відкритих ключів корпорації Symantec</translation>
 <translation id="5266173014392157048">Це правило більше не підтримується. Натомість використовуйте <ph name="AUTH_NEGOTIATE_DELEGATE_ALLOWLIST_POLICY_NAME" />.
 
@@ -4288,6 +4339,7 @@
 
       Докладніше про дійсні шаблони <ph name="URL_LABEL" />-адрес можна дізнатися на сторінці https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns. <ph name="WILDCARD_VALUE" /> – недопустиме значення для цього правила.</translation>
 <translation id="5393009997533871906">Користувачі бачать принтери лише з білого списку</translation>
+<translation id="5398387276166014955">Дозволити вставляти сторонній код у Chrome</translation>
 <translation id="5401696449591951427">Увімкнути <ph name="CHROME_DEVICES_LINK" /></translation>
 <translation id="5405289061476885481">Налаштовує, які розкладки клавіатури дозволені на екрані входу в <ph name="PRODUCT_OS_NAME" />.
 
@@ -4416,6 +4468,7 @@
       Якщо його вимкнути або не налаштувати, такий запит не з’являтиметься на екрані входу.
       Примітка: це правило загалом не рекомендовано використовувати, оскільки воно створює потенційні загрози безпеці (коли на пристрої використовуються сертифікати з TPM-підтримкою) і погіршує взаємодію з користувачем.</translation>
 <translation id="55057839818162162">Дозволити пошук за допомогою камери в додатку <ph name="GOOGLE_LENS_PRODUCT_NAME" /></translation>
+<translation id="55057971769693300">Вимкнути виділення курсора</translation>
 <translation id="5508307164752647432">Увімкнути функції Kerberos</translation>
 <translation id="5511702823008968136">Увімкнути панель закладок</translation>
 <translation id="5512418063782665071">URL-адреса домашньої сторінки</translation>
@@ -4435,6 +4488,7 @@
 <translation id="5526184558582921522">Дозволити запити до сервера Quirks і потенційне завантаження файлів конфігурації для певного апаратного забезпечення</translation>
 <translation id="5526701598901867718">Усі (небезпечно)</translation>
 <translation id="5534079385061985566">Увімкнути функцію повного відновлення</translation>
+<translation id="5534235660122271432">Заборонити записувати дані на зовнішні носії</translation>
 <translation id="5535256585099022933">Указати інтервал для перезапуску</translation>
 <translation id="5535973522252703021">Список дозволених серверів, яким можна делегувати права за протоколом Kerberos</translation>
 <translation id="553806128266843748">Логічне значення експериментального параметра, яке вказує, чи ввімкнено обмеження пропускної спроможності.</translation>
@@ -4443,6 +4497,7 @@
 <translation id="555022085242359084">Увімкнути високий контраст на екрані входу</translation>
 <translation id="555077880566103058">Дозволити всім сайтам автоматично запускати плагін <ph name="FLASH_PLUGIN_NAME" /></translation>
 <translation id="5556607617517096419">Borealis</translation>
+<translation id="5558394213067608844">Увімкнути контролер діагностики й телеметрії Wilco</translation>
 <translation id="5559079916187891399">Це правило не впливає на додатки Android.</translation>
 <translation id="5560039246134246593">Додає параметр для отримання початкового числа Варіацій у <ph name="PRODUCT_NAME" />.
 
@@ -4546,6 +4601,7 @@
 <translation id="5676740747107495269">Показувати параметри спеціальних можливостей в меню панелі завдань на екрані входу</translation>
 <translation id="5679540979548648200">Забороняє користувачам цього пристрою завантажувати додатки з невідомого джерела через ADB та примусово активовує функцію Powerwash, якщо завантаження з невідомого джерела було раніше дозволене</translation>
 <translation id="5681258683432554972">Налаштування спливаючих вікон за умовчанням</translation>
+<translation id="5684501593989438324">Увімкнути використання слів для швидкого запуску Google Асистента</translation>
 <translation id="5689430183304951538">Стандартний розмір сторінки друку</translation>
 <translation id="5691637243722588222">Налаштування цього правила визначають, які схеми автентифікації HTTP підтримує <ph name="PRODUCT_NAME" />.
 
@@ -4583,6 +4639,7 @@
       Якщо вимкнути це правило, файли PDF відкриватимуться через внутрішній плагін (за умови, що користувачі його не вимкнуть).
 
       Якщо налаштувати це правило, користувачі не зможуть змінювати його в <ph name="PRODUCT_NAME" />. Якщо правило не налаштувати, користувачі зможуть самі вибирати, чи відкривати файли PDF у зовнішньому додатку.</translation>
+<translation id="5705055136345677598">Вимкнути фоновий режим</translation>
 <translation id="5705828032077475554">Повідомляти про сеанси CRD</translation>
 <translation id="5708969689202733975">Налаштовувати дозволені режими швидкого розблокування</translation>
 <translation id="5714563837055244378">Увімкнути надсилання контенту з додатків Android у веб-додатки.</translation>
@@ -4675,6 +4732,7 @@
 <translation id="5814301096961727113">Налаштувати стан за умовчанням для голосових підказок на екрані входу</translation>
 <translation id="5815129011704381141">Автоматично перезавантажувати після оновлення</translation>
 <translation id="5815990343032461023">Застаріла поведінка: додатки-термінали Chrome оновлюватимуться розширенням системи через URL-адресу оновлення з маніфесту розширення, а також диспетчером кешування через URL-адресу оновлення з цього правила</translation>
+<translation id="5828008775808363753">Не запускати веб-переглядач після авторизації</translation>
 <translation id="582857022372205358">Увімкнути двосторонній друк за коротким краєм</translation>
 <translation id="5830196507442186669">Дозволити пристроям застосовувати правило <ph name="BOREALIS_NAME" /> в <ph name="PRODUCT_OS_NAME" /></translation>
 <translation id="5831286647961890695">Увімкнути модель адаптивного заряджання в <ph name="PRODUCT_OS_NAME" /></translation>
@@ -4692,6 +4750,7 @@
       Якщо це правило деактивовано або не налаштовано, режим покращеного заряджання вимкнено.
 
       Користувачі не можуть змінювати це налаштування.</translation>
+<translation id="5838452040629810808">Увімкнути виділення курсора</translation>
 <translation id="5848438019586925019">Алгоритм створення пар ключів.</translation>
 <translation id="5851248808417680865">Застосувати темну тему</translation>
 <translation id="585270638818921943">Заборонити користувачеві завантажувати додатки для Android із ненадійних джерел</translation>
@@ -4778,6 +4837,7 @@
 
       Якщо це правило вимкнено, протокол QUIC не можна буде використовувати.</translation>
 <translation id="5921713479449475707">Дозволити завантаження автоматичних оновлень через HTTP</translation>
+<translation id="5927903236543424081">Вимагати, щоб користувач увійшов в обліковий запис, перш ніж використовувати веб-переглядач</translation>
 <translation id="5928633129285224981">Контролює, чи опція "Друкувати як зображення" у <ph name="PRODUCT_NAME" /> налаштована за умовчанням під час друку файлів PDF.
 
       Якщо це правило ввімкнути, <ph name="PRODUCT_NAME" /> за умовчанням вибиратиме у вікні попереднього перегляду друку опцію "Друкувати як зображення".
@@ -4785,6 +4845,13 @@
       Якщо це правило вимкнути або не налаштувати, у <ph name="PRODUCT_NAME" /> користувачі спочатку не матимуть змоги вибрати опцію "Друкувати як зображення".  Вони зможуть вибирати її для кожного окремого завдання друку файлів PDF (якщо ця опція доступна).
 
       У <ph name="MS_WIN_NAME" /> чи <ph name="MAC_OS_NAME" /> це правило діє лише тоді, коли також увімкнено <ph name="PRINT_PDF_AS_IMAGE_AVAILABILITY_POLICY_NAME" />.</translation>
+<translation id="5932383301001325587">Це правило було вилучено у версії M53 після того, як у <ph name="PRODUCT_NAME" /> було скасовано перехід до старішої версії TLS.
+
+      Якщо протоколу TLS не вдається встановити зв’язок із сервером, <ph name="PRODUCT_NAME" /> спробує під’єднатися ще раз через старішу версію TLS, щоб обійти помилки на серверах HTTPS. Цей параметр налаштовує версію, на якій перестане виконуватися цей резервний процес. Якщо сервер вибирає версію правильно (тобто не розриваючи з’єднання), це налаштування не застосовується. У будь-якому випадку з’єднання має відповідати правилу SSLVersionMin.
+
+      Якщо це правило не налаштувати або вибрати для нього значення "tls1.2", <ph name="PRODUCT_NAME" /> більше не виконуватиме цей резервний процес. Зверніть увагу, що при цьому не вимикається підтримка старіших версій TLS у <ph name="PRODUCT_NAME" />, а лише скасовується перехід до них для обходу помилок на серверах, які не можуть правильно вибрати версію.
+
+      Якщо все ж потрібно під’єднуватися до сервера з помилками, для правила потрібно вибрати значення "tls1.1". Це тимчасовий захід, налаштування сервера потрібно швидко змінити.</translation>
 <translation id="5932767795525445337">За допомогою цього правила також можна закріпляти додатки Android.</translation>
 <translation id="5936193585187054065">Encrypted ClientHello (ECH) – це розширення для TLS, яке шифрує поля повідомлення ClientHello з чутливими даними, а також покращує конфіденційність.
 
@@ -4859,6 +4926,7 @@
 <translation id="6046615715547751255">Заборонити елементи керування докладними звітами</translation>
 <translation id="6048199181629830227">Увімкнути керування живленням під час максимального навантаження</translation>
 <translation id="6049117606554031363">Увімкнути звітування щодо статусу материнської плати пристрою</translation>
+<translation id="605132676434455096">Заборонити додавати нові профілі</translation>
 <translation id="6053681087509103368">Дозволити WebRTC використовувати застарілі версії протоколів TLD/DTLS</translation>
 <translation id="6058879286588763839">Якщо правило <ph name="DEVICE_ADVANCED_BATTERY_CHARGE_MODE_ENABLED_POLICY_NAME" />, яке замінює <ph name="DEVICE_BATTERY_CHARGE_MODE_POLICY_NAME" />, не вказано, налаштування <ph name="DEVICE_BATTERY_CHARGE_MODE_POLICY_NAME" /> визначає правило керування живленням у режимі заряджання акумулятора (за умови, що пристрій підтримує його). Щоб подовжити час роботи акумулятора, правило динамічно контролює заряджання, мінімізуючи навантаження та зношення.
 
@@ -4914,12 +4982,18 @@
       4. Блокує шкідливі файли, позначені сервером Безпечного перегляду, але не блокує небезпечні типи файлів. Рекомендовано.
 
       Примітка: ці обмеження застосовуються до завантажень, які активовано вмістом веб-сторінки або опцією меню "Завантажити дані за посиланням". Вони не діють під час завантаження відкритої сторінки чи зберігання контенту у форматі PDF через параметри друку. Докладніше про Безпечний перегляд читайте на сторінці https://developers.google.com/safe-browsing.</translation>
+<translation id="6119207979839638596">Це правило було вилучено у версії M75 після того, як у <ph name="PRODUCT_NAME" /> було видалено правило максимальної версії TLS.
+
+      Якщо це правило не налаштувати, <ph name="PRODUCT_NAME" /> використовуватиме максимальну версію за умовчанням.
+
+      Для правила можна вибрати такі значення: "tls1.2" або "tls1.3". Якщо налаштувати це правило, <ph name="PRODUCT_NAME" /> не використовуватиме версії SSL/TLS, новіші за вказані. Нерозпізнане значення ігноруватиметься.</translation>
 <translation id="6123052603197028610">Заборонити запити до серверів Google для отримання позначок часу</translation>
 <translation id="6130229425991722726">Якщо для цього правила вибрано значення 0 (значення за умовчанням), ви матимете доступ до інструментів розробника та Консолі JavaScript, але не до розширень, установлених згідно з корпоративними правилами. Якщо для нього вибрано значення 1, ви отримуєте повний доступ до інструментів розробника й консолі JavaScript, зокрема до розширень, установлених згідно з корпоративними правилами. Якщо для цього правила вибрано значення 2, ви не матимете доступу до інструментів розробника та не зможете перевіряти елементи веб-сайту.
 
       Це налаштування також вимикає комбінації клавіш і пункти меню або контекстного меню, які відкривають інструменти розробника чи Консоль JavaScript.
 
       У <ph name="PRODUCT_NAME" /> версії 99 це налаштування також визначає точки входу для функції "Переглянути джерело сторінки". Якщо для цього правила вибрано значення 2 (DeveloperToolsDisallowed), користувачі не зможуть переглянути джерело за допомогою комбінації клавіш чи контекстного меню. Щоб повністю заборонити перегляд джерела, додайте елемент view-source:* до правила <ph name="URL_BLOCKLIST_POLICY_NAME" />.</translation>
+<translation id="6131803221304830537">Вимкнути цілісність коду засобу відображення</translation>
 <translation id="6132506775968708399">Блокувати сторонні файли cookie</translation>
 <translation id="6133088669883929098">Дозволити всім сайтам генерувати ключі</translation>
 <translation id="6135398260575578389">Безпечний перегляд увімкнено в режимі покращеного захисту. Цей режим забезпечує вищий рівень захисту, але в Google надсилатиметься більше інформації.</translation>
@@ -4941,6 +5015,7 @@
 
       Щоб це правило почало діяти, його потрібно додатково налаштувати. Докладніше читайте на сторінці https://support.google.com/chrome/a?p=chrome_enterprise_connector_policies_setting.</translation>
 <translation id="6141402445226505817">Завжди приблизно визначати часовий пояс</translation>
+<translation id="6141944295566709543">Дозволити користувачам відтворювати медіафайли, коли пристрій заблоковано</translation>
 <translation id="6142501278956229253">DPI для растеризації файлів PDF під час друку</translation>
 <translation id="6144046700495610112">Якщо це правило активовано, дані автозаповнення форм із попереднього веб-переглядача за умовчанням імпортуються під час першого запуску. Якщо це правило деактивовано або не налаштовано, дані автозаповнення форм не імпортуються під час першого запуску.
 
@@ -5012,6 +5087,7 @@
 
       Примітка: це правило поширюється на всі аудіовиходи, зокрема на функції доступності аудіоконтенту. Не вмикайте це правило, якщо користувачу потрібна програма зчитування з екрана.</translation>
 <translation id="6221175752766085998">Дозволяти сертифікати, видані локальними ключами довіри без розширення subjectAlternativeName</translation>
+<translation id="6224070048795197148">Дозволити користувачу використовувати веб-переглядач, не входячи в обліковий запис</translation>
 <translation id="6224304369267200483">URL-адресам і доменам автоматично дозволене засвідчення ключів безпеки</translation>
 <translation id="6230442621691161858">Ця функція вмикає пропозиції нового контенту, зокрема додатків, веб-сторінок тощо.
       Якщо для цього правила вибрано значення True, пропозиції нового контенту буде ввімкнено.
@@ -5033,11 +5109,13 @@
       Це правило дає можливість підприємствам вимикати ізольоване програмне середовище для аудіо, якщо вони користуються програмним забезпеченням для захисту, яке конфліктує з ним.</translation>
 <translation id="624818583115864448">порт 554 (можна розблокувати до 15.10.2021)</translation>
 <translation id="6252773211180267325">Не запобігати виконанню правила <ph name="BOREALIS_NAME" /> для користувача</translation>
+<translation id="6254498834449523938">Заборонити користувачам ігнорувати попередження Безпечного перегляду</translation>
 <translation id="625580680776945310">Режим високої ефективності буде ввімкнено.</translation>
 <translation id="6258658183356534534">Керувати функцією User-Agent Client Hints GREASE Update.</translation>
 <translation id="6261643884958898336">Повідомляти ідентифікаційну інформацію комп’ютера</translation>
 <translation id="6265892395051519509">Надати доступ до датчиків на цих сайтах</translation>
 <translation id="6266043141694454734">Визначає, чи перевіряти сертифікати сервера за допомогою Chrome Root Store і вбудованого інструмента перевірки сертифікатів</translation>
+<translation id="6270791075656665237">Вимкнути протокол QUIC</translation>
 <translation id="6273015149273504999">
       Визначає список додатків і розширень, які автоматично встановлюються на екрані входу без взаємодії з користувачем та які не можна видалити чи вимкнути.
 
@@ -5257,6 +5335,7 @@
       </translation>
 <translation id="6438972408080276697">Якщо для цього правила вибрано значення True, у Google надсилатимуться звіти про основні події під час встановлення додатків для Android, які було активовано правилами. Якщо для цього правила вибрано значення False, події не реєструватимуться.</translation>
 <translation id="6440051664870270040">Дозволити сайтам одночасно здійснювати навігацію та відкривати спливаючі вікна</translation>
+<translation id="6446366416439249472">Вимкнути синхронізацію Google Диска з використанням мобільного зв’язку</translation>
 <translation id="6447948611083700881">Резервне копіювання та відновлення вимкнено</translation>
 <translation id="6449476513004303784">Заборонити користувачам керувати сертифікатами</translation>
 <translation id="6452882999388592166">Якщо ввімкнути це правило, вбудоване розширення компонента CryptoToken буде завантажуватися під час запуску веб-переглядача. Якщо його вимкнути або не налаштувати, CryptoToken не буде завантажуватися під час запуску. Це правило діє як тимчасове рішення для сайтів, які не працюють через те, що метод chrome.runtime не визначається як побічна дія вилучення CryptoToken у версії M106. Доступ до веб-сайтів не має залежати від безумовного визначення методу chrome.runtime.</translation>
@@ -5619,6 +5698,7 @@
 <translation id="6763023079133439068">Дозволити сертифікати без розширення subjectAlternativeName, видані локальними якорами довіри</translation>
 <translation id="6766216162565713893">Дозволити сайтам запитувати в користувача доступ до пристрою Bluetooth поблизу</translation>
 <translation id="6770454900105963262">Повідомляти інформацію про активні сеанси терміналу</translation>
+<translation id="6774132787348495175">Заборонити користувачам використовувати віртуальні машини, потрібні для підтримки додатків Linux</translation>
 <translation id="6782331708811245959">Увімкнути звіти про режим запуску пристрою</translation>
 <translation id="6782977971207381602">Якщо це правило ввімкнено, пристрій може запускати віртуальні машини в <ph name="PRODUCT_OS_NAME" />. Щоб дозволити використання <ph name="PRODUCT_CROSTINI_NAME" />, потрібно ввімкнути правила <ph name="VIRTUAL_MACHINES_ALLOWED_POLICY_NAME" /> і <ph name="CROSTINI_ALLOWED_POLICY_NAME" />. Якщо це правило вимкнено, пристрій не може запускати віртуальні машини. Якщо ви його вимкнете, змінені налаштування стосуватимуться запуску нових машин, а не вже активних.
 
@@ -5678,6 +5758,7 @@
 
           Якщо правило ввімкнути для порожнього списку або не налаштувати його, URL-адреси не зможуть продовжувати роботу в повноекранному режимі без сповіщень.</translation>
 <translation id="6833988859168635883">Стартова й домашня сторінки та сторінка нової вкладки</translation>
+<translation id="6835254082476223414">Увімкнути резервне копіювання й відновлення віртуальних машин Linux</translation>
 <translation id="6835883744948188639">Показувати користувачеві повторюваний запит із рекомендацією перезапуску</translation>
 <translation id="683688607121170501">Це налаштування дає змогу користувачам переходити в інші облікові записи Google у вікні контенту веб-переглядача та в додатках Android, якщо вони ввійшли на пристрої з <ph name="PRODUCT_OS_NAME" />.
 
@@ -5880,6 +5961,7 @@
 <translation id="7007283257527015835">Логічне значення експериментального параметра, яке вказує, чи застосовувати певний обробник протоколів за умовчанням.</translation>
 <translation id="7008308728445338159">Увімкнено перевірку перехоплення системи DNS</translation>
 <translation id="7010006999849135962">Увімкнути автентифікацію без PIN-коду для хосту віддаленого доступу</translation>
+<translation id="7013484314513229844">Увімкнути запуск, коли пристрій підключено до мережі змінного струму</translation>
 <translation id="7016587686120059767">Вимкнути режим гостя</translation>
 <translation id="7016736684656067099">Якщо для цього правила вибрано значення 1, усі веб-сайти зможуть показувати зображення. Якщо для нього вибрано значення 2, показ зображень буде заблоковано.
 
@@ -5928,6 +6010,7 @@
 <translation id="7039815268521168329">Показувати процес увімкнення Voice Match у Google Асистенті під час початкового налаштування</translation>
 <translation id="7040229947030068419">Приклад значення:</translation>
 <translation id="7044883996351280650">Контролює сервіс резервного копіювання та відновлення Android</translation>
+<translation id="7046997898355294677">Показувати примітку про конфіденційність, поки її не закриє користувач</translation>
 <translation id="7047495632846973438">Визначає, чи правило щодо дозволів на захоплення екранів вибрано чи пропущено.</translation>
 <translation id="7055022222176591388">Заборонити застарілу версію плагіна <ph name="FLASH_PLUGIN_NAME" /></translation>
 <translation id="7066292150801784098">Заборонити віддаленим користувачам взаємодіяти з вікнами на робочому столі під час сеансів віддаленої допомоги</translation>
@@ -6010,6 +6093,7 @@
       У <ph name="MS_WIN_NAME" /> ця функція доступна лише для Windows 10 Pro або версій, зареєстрованих у домені <ph name="MS_AD_NAME" /> чи в сервісі <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />. У <ph name="MAC_OS_NAME" /> ця функція доступна лише для машин, які контролюються через Керування мобільними пристроями або зареєстровані в домені через MCX.</translation>
 <translation id="7138678301420049075">Інше</translation>
 <translation id="7138762292550697459">Контролюйте мінімальний час очікування для функції JavaScript setTimeout().</translation>
+<translation id="714219487865269980">Увімкнути підсвічування фокуса введення з клавіатури</translation>
 <translation id="7145335384492396213">Режим друку з PIN-кодом за умовчанням</translation>
 <translation id="7146198347561863646">Якщо це правило активовано або не налаштовано, блокування переходу в режим сну для керування живленням увімкнено. Запити на блокування переходу в режим сну можуть надходити від розширень через API розширення для керування живленням і додатки ARC.
 
@@ -6064,6 +6148,7 @@
 <translation id="7193489339723768342">Налаштувавши це правило, ви вказуєте список URL-адрес, шаблони яких зіставлятимуться з джерелом безпеки URL-адреси, що надсилає запит. Якщо буде виявлено збіг, сторінка отримає доступ до пристроїв запису аудіо, не надсилаючи сповіщення користувачу
 
       Докладніше про дійсні шаблони <ph name="URL_LABEL" />-адрес можна дізнатися на сторінці https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns.</translation>
+<translation id="719398790886719721">Вимкнути кореневий доступ до віртуальних машин Linux</translation>
 <translation id="7194407337890404814">Назва пошукової служби за умовчанням</translation>
 <translation id="7198134478421755850">Розширення</translation>
 <translation id="7199304109870655950">Налаштування параметрів віддаленого доступу в хості Віддаленого керування Chrome.
@@ -6252,6 +6337,7 @@
 <translation id="7412456346709338637">Увімкнути доступ до даних для периферійних пристроїв, які використовують інтерфейс Thunderbolt або USB4</translation>
 <translation id="7417438464912687020">Дозволити віддалений доступ до цієї машини</translation>
 <translation id="7417972229667085380">Відсоток, за яким масштабують затримку неактивності в режимі презентації (більше не підтримується)</translation>
+<translation id="7421230730436851224">Ніколи не обробляти аудіо за допомогою ізольованого програмного середовища</translation>
 <translation id="7421483919690710988">Установити кеш-пам’ять медіадиска в байтах</translation>
 <translation id="7424751532654212117">Список винятків для списку вимкнених плагінів</translation>
 <translation id="7426112309807051726">Указує, чи потрібно вимкнути функцію <ph name="TLS_FALSE_START" />. Це правило називається "DisableSSLRecordSplitting".
@@ -6271,6 +6357,7 @@
 <translation id="7458437477941640506">Не відкочуватися до цільової версії, якщо версія ОС новіша. Оновлення також вимкнено.</translation>
 <translation id="7459601923199346224">Контролює правила для користувачів і пристроїв щодо керування сертифікатами.</translation>
 <translation id="7459633275230216698">Дозволити вікна вибору файлів</translation>
+<translation id="7463055558720530430">Дозволити користувачам запам’ятовувати паролі Kerberos</translation>
 <translation id="7464058117970792805">Увімкнути попередній перегляд друку</translation>
 <translation id="7464991223784276288">Не дозволяє файлам cookie зіставляти URL-адреси з поточним сеансом</translation>
 <translation id="7468182772656807573">За допомогою цього правила можна вказати частоту в мілісекундах, з якою надсилатимуться мережеві пакети для відстеження. Діапазон інтервалів – від 30 секунд до 24 годин. Значення, які не входять у цей діапазон, прив'язуються до відповідної межі.
@@ -6356,8 +6443,12 @@
 
       https://blog.chromium.org/2021/09/user-agent-reduction-origin-trial-and-dates.html
       </translation>
+<translation id="7515953732107149296">Це правило було вилучено у версії M53 після того, як у <ph name="PRODUCT_NAME" /> було видалено шифри RC4.
+
+      Якщо це правило не налаштувати або вибрати для нього значення "неправда", набори шифрів RC4 в TLS не буде ввімкнено. Ви можете вибрати значення "правда", якщо хочете підтримувати сумісність із застарілим сервером. Це тимчасовий захід, налаштування сервера потрібно змінити.</translation>
 <translation id="7519218194072744342">URL-адреса обробника протоколів.</translation>
 <translation id="7519251620064708155">Дозволити цим сайтам генерувати ключі</translation>
+<translation id="7521864460386999758">Заборонити вставляти сторонній код у Chrome</translation>
 <translation id="7529144158022474049">коефіцієнт розсіяння автоматичного оновлення</translation>
 <translation id="7529332889403151669">Визначає, чи показувати сповіщення про повноекранний режим, коли пристрій виходить із режиму сну або темного екрана.
 
@@ -6439,6 +6530,7 @@
 <translation id="7613115815080726221">Період часу неактивності користувача в мілісекундах, після якого виконується дія, передбачена у випадку неактивності</translation>
 <translation id="7614663184588396421">Список вимкнених схем протоколу</translation>
 <translation id="7616631530432070402">Набори шифрів 3DES буде ввімкнено в TLS</translation>
+<translation id="761788785484453836">Вимагати ізоляцію для всіх веб-сайтів</translation>
 <translation id="7620869951155758729">Це правило вказує конфігурацію, за допомогою якої створюється й підтверджується батьківський код доступу.
 
       Параметр |current_config| завжди застосовується для створення коду доступу й має використовуватися для його підтвердження лише тоді, коли це не можна зробити за допомогою параметра |future_config|.
@@ -6517,6 +6609,11 @@
 <translation id="7701341006446125684">Указати розмір кеш-пам’яті для додатків і розширень (у байтах)</translation>
 <translation id="770339941914297201">Нова поведінка: додатки-термінали Chrome оновлюватимуться лише через URL-адресу оновлення з цього правила</translation>
 <translation id="7703737669292992839">Заборонити вікна вибору файлів</translation>
+<translation id="7708934468069982537">Це правило було вилучено у версії M58 після того, як у <ph name="PRODUCT_NAME" /> було видалено шифри DHE.
+
+      Якщо це правило не налаштувати або вибрати для нього значення "неправда", набори шифрів DHE в TLS не буде ввімкнено. Ви можете вибрати значення "правда", якщо хочете ввімкнути набори шифрів DHE й підтримувати сумісність із застарілим сервером. Це тимчасовий захід, налаштування сервера потрібно змінити.
+
+      Радимо перейти на використання наборів шифрів ECDHE для серверів. Якщо вони недоступні, переконайтеся, що на сервері ввімкнено набір шрифтів з обміном ключів RSA.</translation>
 <translation id="7709470712369261710">Не використовувати сервіси Google для автоматичних описів зображень</translation>
 <translation id="7712109699186360774">Запитувати щоразу, коли сайту потрібен доступ до камери та/чи мікрофона</translation>
 <translation id="7713608076604149344">Обмеження завантажень</translation>
@@ -6635,12 +6732,15 @@
 <translation id="782661371433719637">Заборонити всім сайтам запитувати дозвіл на перегляд файлів і каталогів через File System API</translation>
 <translation id="7827127381981620448">Додаток платформи</translation>
 <translation id="7833148823006528332">Ідентифікатор додатка Android, наприклад, "com.google.android.gm" для Gmail</translation>
+<translation id="7835218570504220753">Вимкнути автоматичне натискання</translation>
 <translation id="7839180815400079700">Якщо правило <ph name="DEVICE_POWER_PEAK_SHIFT_ENABLED_POLICY_NAME" /> активовано, налаштування параметра <ph name="DEVICE_POWER_PEAK_SHIFT_DAY_CONFIG_POLICY_NAME" /> дозволяє вказати конфігурацію для пікових годин навантаження.
 
       Якщо це правило не налаштовано, пікові години навантаження вимкнено.
 
       Дійсні значення для поля "<ph name="MINUTE_FIELD_NAME" />" у параметрах <ph name="START_TIME_FIELD_NAME" />, <ph name="END_TIME_FIELD_NAME" /> і <ph name="CHARGE_START_TIME_FIELD_NAME" /> – 0, 15, 30, 45.</translation>
+<translation id="7840258755683573560">Увімкнути автоматичне натискання</translation>
 <translation id="7841880500990419427">Мінімальна альтернативна версія протоколу TLS</translation>
+<translation id="7845130996290850593">Увімкнути Kerberos</translation>
 <translation id="7846952520291088817">URL-адреси, для яких відображаються локальні IP-адреси в ICE-кандидатах WebRTC</translation>
 <translation id="7848641140449742406">Налаштування ОС</translation>
 <translation id="7850846808758624237">Якщо це правило активовано, головна сторінка з попереднього веб-переглядача за умовчанням імпортується під час першого запуску. Якщо це правило деактивовано або не налаштовано, головна сторінка не імпортується під час першого запуску.
@@ -6933,12 +7033,14 @@
           Якщо це правило налаштовано, користувачі не можуть змінювати або замінювати його.
 
           Якщо це правило не налаштовано, виділення курсора буде вимкнено, але користувач може будь-коли ввімкнути його.</translation>
+<translation id="8160572976152509481">Дозволити користувачам вимикати пристрій лише за допомогою кнопки живлення</translation>
 <translation id="8164144100557223371">Вимкнути доступ до експериментальних функцій веб-переглядача через панель інструментів</translation>
 <translation id="8164687848393015214">Якщо це правило ввімкнено, мережеві пакети (<ph name="HEARTBEATS_TERM" />) надсилаються на сервер керування, щоб відстежувати статус у мережі й надавати серверу змогу визначати, чи пристрій не підключений до Інтернету.
 
       Якщо це правило вимкнено або не налаштовано, пакети не надсилаються.</translation>
 <translation id="8169452762291746260">Вимкнути моніторинг стану пристрою</translation>
 <translation id="8171924760436219650">Зробити основною праву кнопку миші на екрані входу</translation>
+<translation id="81724933026241365">Дозволити користувачам вимикати пристрій за допомогою значка "Завершити роботу" або кнопки живлення</translation>
 <translation id="8173864651667424191">Налаштовувати опцію "Друкувати як зображення" за умовчанням для попереднього перегляду під час друку документів PDF (коли вона доступна).</translation>
 <translation id="8176035528522326671">Дозволити корпоративному користувачеві бути лише основним багатопрофільним користувачем (налаштування за умовчанням для користувачів, якими керує адміністратор підприємства)</translation>
 <translation id="8179161412673077784">Заборонити сайтам зі зловживаннями відкривати нові вікна або вкладки</translation>
@@ -7141,6 +7243,7 @@
 <translation id="8337961007759352651">Для скриптів Worker (Web Worker, Service Worker тощо) потрібен тип MIME JavaScript, як-от <ph name="MIMETYPE_TEXT_JAVASCRIPT" />. Скрипти Worker із застарілими типами MIME, як-от <ph name="MIMETYPE_TEXT_ASCII" />, відхилятимуться.</translation>
 <translation id="8339089771335211509">WebRTC не використовуватиме приватні ІР-адреси, а лише інтерфейси для підключення до загальнодоступного Інтернету.</translation>
 <translation id="8339420913453596618">Другий фактор вимкнено</translation>
+<translation id="8341175887542205077">Вимкнути резервне копіювання й відновлення віртуальних машин Linux</translation>
 <translation id="8344454543174932833">Імпорт закладок із веб-переглядача за умовчанням під час першого запуску</translation>
 <translation id="8347993687936322631">Зауважте, що це правило більше не підтримується та буде вилучене в <ph name="PRODUCT_OS_NAME" /> версії 85. Натомість використовуйте правило <ph name="POWER_MANAGEMENT_IDLE_SETTINGS_POLICY_NAME" />.
 
@@ -7157,6 +7260,7 @@
 <translation id="8367209241899435947">Вмикає Очищення Chrome у Windows</translation>
 <translation id="8367473200119029349">Хмарне звітування</translation>
 <translation id="8367488518695804749">Забороняти всім сайтам показувати спливаючі вікна</translation>
+<translation id="8369359426872560378">Вимкнути запуск, коли пристрій підключено до мережі змінного струму</translation>
 <translation id="8369602308428138533">Затримка вимкнення екрана, коли використовується живлення від мережі</translation>
 <translation id="8371178326720637170">Дозволяє керованим розширенням використовувати Enterprise Hardware Platform API</translation>
 <translation id="8373176843640227330">Вимкнути звітування щодо інформації про Bluetooth на пристрої</translation>
@@ -7315,6 +7419,7 @@
       Якщо це правило застосовувати разом із правилом <ph name="DEVICE_ROLLBACK_TO_TARGET_VERSION_POLICY_NAME" />, версію пристрою може бути повернено до попередньої.
 
       Попередження: не радимо налаштовувати обмеження версій, оскільки це може завадити користувачам отримувати оновлення програмного забезпечення та виправлення системи безпеки. Обмеживши оновлення для певної версії, ви можете наразити користувачів на небезпеку.</translation>
+<translation id="8519617069657262768">Увімкнути синхронізацію Google Диска</translation>
 <translation id="8520064498689833152">Примусово ввімкнути Безпечний пошук у Пошуку Google і заборонити вибирати на YouTube менш безпечний режим, ніж помірний</translation>
 <translation id="8524334245528364388">URL-адреса файлу JSON зі списком серверів друку.</translation>
 <translation id="8525526490824335042">Контейнер Linux</translation>
@@ -7339,6 +7444,7 @@
 
           Якщо це правило не налаштовано для сайту, тоді застосовується правило <ph name="DEFAULT_JAVA_SCRIPT_JIT_SETTING_POLICY_NAME" /> (якщо воно вказано). В інших випадках JIT-компілятор JavaScript для сайту буде ввімкнено.</translation>
 <translation id="8543108307976719751">Заблокувати віддалений доступ до цієї машини</translation>
+<translation id="8543975123557636331">Увімкнути аудіовихід</translation>
 <translation id="8544375438507658205">Відтворення у форматі HTML за умовчанням для <ph name="PRODUCT_FRAME_NAME" /></translation>
 <translation id="8544465954173828789">Дозволити синхронізацію SMS-повідомлень на телефоні з Chromebook.</translation>
 <translation id="8549906780629620346">Активувати відновлення облікового запису</translation>
@@ -7413,6 +7519,7 @@
       Якщо його вимкнути, користувачі не отримають такий доступ.
       Якщо це правило не налаштувати, за умовчанням такий доступ не дозволятиметься для користувачів ОС Chrome, якими керує адміністратор, і дозволятиметься для всіх інших користувачів та операційних систем.</translation>
 <translation id="8626826495474944836">Вимагати ізоляцію для всіх сайтів</translation>
+<translation id="8631314130868563649">Вимкнути керування живленням у пікові години</translation>
 <translation id="8631434304112909927">до версії <ph name="UNTIL_VERSION" /></translation>
 <translation id="8631437968147930597">Список додатків для нотаток, які дозволені на заблокованому екрані <ph name="PRODUCT_OS_NAME" /></translation>
 <translation id="8633550872001751090">Дозволити включати дані <ph name="PRODUCT_NAME" /> у резервну копію</translation>
@@ -7592,6 +7699,7 @@
 <translation id="8816370949847593408">Залежно від статусу припинення підтримки, запуск додатків Chrome може бути забороненим.</translation>
 <translation id="8818768076343557335">Передбачати дії мережі у всіх мережах, окрім мобільних.
           (Не підтримується в 50 версії, видалено в 52 версії. У версіях, новіших за 52, значення 1 сприйматиметься як 0 – передбачати дії мережі у всіх мережевих з’єднаннях.)</translation>
+<translation id="8820434908768990758">Увімкнути ізоляцію для всіх веб-сайтів, але дозволити користувачу вимкнути її</translation>
 <translation id="8821678641132607468">Якщо це правило активовано, історія веб-перегляду з попереднього веб-переглядача за умовчанням імпортується під час першого запуску. Якщо це правило деактивовано або не налаштовано, історія веб-перегляду не імпортується під час першого запуску.
 
       Користувачі можуть ініціювати вікно імпортування, а прапорець біля опції для історії веб-перегляду буде поставлено або знято відповідно до значення правила.</translation>
@@ -7689,6 +7797,7 @@
 <translation id="8919100556245407184">Період часу (у днях) після припинення автоматичних оновлень, коли користувач вийде з облікового запису, якщо версія <ph name="PRODUCT_OS_NAME" /> старіша за вказану в <ph name="CHROMEOS_VERSION_PROPERTY_NAME" /></translation>
 <translation id="8919369436496201075">Дозволити пристрою отримувати оновлення довгострокової підтримки</translation>
 <translation id="8921669704201370845">Увімкнути хмарне звітування <ph name="PRODUCT_NAME" /> для керованого профілю</translation>
+<translation id="8922231993239705844">Вимкнути виділення курсора</translation>
 <translation id="8922494933893518624">Примусово вмикати WebSQL у незахищених ресурсах.</translation>
 <translation id="8930064580550462145"><ph name="PRODUCT_OS_NAME" /> може автентифікувати користувачів під час входу на заблокованому екрані за даними із сервера (онлайн) або за допомогою кешованих паролів (офлайн).
 
@@ -7736,6 +7845,7 @@
 <translation id="8983539044126123594">Увімкнути вхід у додаткові облікові записи Google</translation>
 <translation id="8985219286836584291">Увімкнути звітування щодо інформації про систему пристрою</translation>
 <translation id="8992176907758534924">Забороняти всім сайтам показувати зображення</translation>
+<translation id="8994850249590725417">Не показувати примітку про конфіденційність</translation>
 <translation id="8994954504552592260">Увімкнути перенесення пристроїв, якими керує <ph name="MS_AD_NAME" />, для хмарного керування. Це правило дає змогу дистанційно розпочати одночасне віддалене перенесення кількох пристроїв, що належать компанії. Крім того, перенесення буде максимально прозорим для кінцевих користувачів.
 
       Якщо це правило ввімкнено й реєстраційний ідентифікатор уже завантажено в DMServer, активується віддалене очищення пристрою за допомогою функції Powerwash.
@@ -7938,6 +8048,7 @@
       Це правило тимчасове. Його буде вилучено в майбутніх версіях <ph name="PRODUCT_NAME" />. Після цього <ph name="PRODUCT_NAME" /> завжди зможе надсилати запити для додаткових типів записів DNS.</translation>
 <translation id="9167719789236691545">Вимкнути Диск у додатку Файли в <ph name="PRODUCT_OS_NAME" /></translation>
 <translation id="9187743794267626640">Вимикати підключення зовнішньої пам’яті</translation>
+<translation id="9190022798664427644">Увімкнути монофонічне аудіо</translation>
 <translation id="9190456586252617675">Це правило керує режимом реєстрації в Асистенті.
 
       Якщо це правило не налаштовано або для нього вибрано значення <ph name="ASSISTANT_ONBOARDING_MODE_DEFAULT" />, використовуватиметься режим реєстрації в Асистенті за умовчанням.
@@ -7977,6 +8088,7 @@
       Якщо це правило не налаштовано, воно матиме значення Enabled у версіях <ph name="PRODUCT_NAME" /> з 73 по 75, і Disabled у <ph name="PRODUCT_NAME" /> 76 і 77.</translation>
 <translation id="93985900824506396">Набори шифрів 3DES буде вимкнено в TLS</translation>
 <translation id="940706688964479124">Список типів файлів, які мають автоматично відкриватися після завантаження</translation>
+<translation id="942977875497446094">Автоматично запускати веб-переглядач після авторизації</translation>
 <translation id="943865157632139008">Дає змогу налаштовувати засіб обробки HTML за умовчанням, якщо встановлено <ph name="PRODUCT_FRAME_NAME" />.
       За умовчанням сторінки обробляє веб-переглядач хосту. Це можна замінити, щоб за умовчанням обробляти сторінки HTML у <ph name="PRODUCT_FRAME_NAME" />.</translation>
 <translation id="944817693306670849">Налаштування обсягу кешу диска</translation>
@@ -8006,6 +8118,7 @@
 <translation id="981346395360763138">Точність гелокації Google вимкнено</translation>
 <translation id="982497069985795632">Увімкнути перевірку правопису</translation>
 <translation id="983256325512298435">Визначити список протоколів, які можуть запускати зовнішні додатки з указаних джерел без відома користувача</translation>
+<translation id="987261962216071510">Дозволити лише вхід у гостьовому режимі у веб-переглядачі</translation>
 <translation id="991560005425213776">Надсилти ім’я користувача й назву файлу власним принтерам</translation>
 <translation id="99202634486128833">Якщо для цього правила вибрано значення CopyCaCerts, додатки ARC матимуть доступ до всіх сертифікатів центру сертифікації з <ph name="WEB_TRUSTED_BIT" />, які встановлено через файли ONC.
 
diff --git a/components/policy/resources/policy_templates_zh-TW.xtb b/components/policy/resources/policy_templates_zh-TW.xtb
index eca49ea..7ad5c3b 100644
--- a/components/policy/resources/policy_templates_zh-TW.xtb
+++ b/components/policy/resources/policy_templates_zh-TW.xtb
@@ -102,6 +102,7 @@
       Device Attributes API 是一系列的網路 API,請參閱 https://wicg.github.io/WebApiDevice/device_attributes。這些 API 僅適用於透過 <ph name="WEB_APP_INSTALL_FORCE_LIST_POLICY_NAME" /> 強制安裝的網頁應用程式所對應的來源,或是在資訊站工作階段中設定的來源。</translation>
 <translation id="1079801999187584280">禁止使用開發人員工具</translation>
 <translation id="1082802595100075771">讓使用者選擇使用去識別化的 Google 服務,針對無標籤圖片提供自動產生的說明</translation>
+<translation id="1087057100912843460">允許更新</translation>
 <translation id="1087437665304381368">這項政策只能控管 <ph name="PRODUCT_OS_NAME" />開發人員模式。如要禁止他人存取 Android 開發人員選項,則必須設定 <ph name="DEVELOPER_TOOLS_DISABLED_POLICY_NAME" /> 政策。</translation>
 <translation id="1087707496788636333">Chrome Enterprise 政策清單的網址已變更!請將你的書籤更新為 <ph name="POLICY_DOCUMENTATION_URL" />。</translation>
 <translation id="1089150222292592899">在 SAML IdP 頁面自動填入使用者名稱</translation>
@@ -151,6 +152,7 @@
 
       只有將 <ph name="CHROME_OS_RELEASE_CHANNEL_DELEGATED_POLICY_NAME" /> 設為 False,<ph name="CHROME_OS_RELEASE_CHANNEL_POLICY_NAME" /> 設定才會生效。</translation>
 <translation id="1147732569915511430">顯示圖片的 SHA-256 雜湊值。</translation>
+<translation id="1148415065145333943">停用進階電池充電模式</translation>
 <translation id="1151353063931113432">允許這些網站的圖片</translation>
 <translation id="1151987132434751822">能夠套用政策憑證的驗證機制。可設為下列其中一個值:
             * basic
@@ -169,6 +171,7 @@
 <translation id="1160479894929412407">允許 QUIC 通訊協定</translation>
 <translation id="1160939557934457296">停用略過安全瀏覽警告網頁繼續進行</translation>
 <translation id="1163080558183062209">停用拒絕清單上的印表機類型</translation>
+<translation id="1165923723751466821">允許透過瀏覽器訪客模式和設定檔登入</translation>
 <translation id="117059611145966538">外部列印伺服器</translation>
 <translation id="117080706484659953">允許 <ph name="MAC_OS_NAME" /> 上的政策範圍偵測</translation>
 <translation id="1171106901454883937">啟用裝置版本資訊回報功能</translation>
@@ -220,6 +223,7 @@
 <translation id="120937472976628837">回報風扇資訊</translation>
 <translation id="1212233008927724662">停用 Lazy Login WebUI 載入功能。</translation>
 <translation id="1216919699175573511">啟用 Signed HTTP Exchange (SXG) 支援</translation>
+<translation id="1219027971768347970">使用音訊沙箱的預設設定</translation>
 <translation id="1219695476179627719">指定是否要將已搭載較新版本的裝置復原至 <ph name="DEVICE_TARGET_VERSION_PREFIX_POLICY_NAME" /> 所設定的版本。
 
       預設值為 RollbackDisabled。</translation>
@@ -262,6 +266,7 @@
       這項政策不適用於資訊站使用者。
 
       警告:如果設為 Wipe 和 MinimalMigrate,系統會移除本機資料。</translation>
+<translation id="1248955696540150266">允許自動點對點下載更新</translation>
 <translation id="1250597158212586309">如果將這項政策設為 Enabled 或不設定,使用者可以選擇要關閉或還原密碼遭到外洩的防護警示。
 
       如果停用這項設定,使用者將無法關閉密碼遭到外洩的相關警示。如果啟用這項設定,使用者就可以關閉密碼遭到外洩的相關警示。</translation>
@@ -478,6 +483,7 @@
 
       外部擴充功能及其安裝方式請參閱 https://developer.chrome.com/apps/external_extensions。
       </translation>
+<translation id="1484190167468437592">停用單聲道音訊模式</translation>
 <translation id="1486021504508098388">回報背光資訊</translation>
 <translation id="1486469502848499602">變更手動建立新票證的 <ph name="KRB5_CONFIG" /> 建議設定。
 
@@ -490,6 +496,8 @@
 
       注意:請以半形逗號分隔伺服器名稱,可使用萬用字元 (<ph name="WILDCARD_VALUE" />)。</translation>
 <translation id="1488724823347505879">允許從 Android 應用程式分享內容到網頁應用程式</translation>
+<translation id="1494138678487405397">在登入畫面上停用高對比模式</translation>
+<translation id="1501644502684303995">僅強制在登入畫面執行線上登入</translation>
 <translation id="1502843533062797703">啟用禁止第三方軟體置入可執行程式碼的政策</translation>
 <translation id="1503969899251962413">你可以透過這項政策,指定這部裝置的 <ph name="PLUGIN_VM_NAME" /> 授權金鑰。
 
@@ -637,6 +645,7 @@
 
       如果將這項政策設為停用或不設定,不支援的系統上會顯示警告訊息。</translation>
 <translation id="1634989431648355062">允許在這些網站上執行 <ph name="FLASH_PLUGIN_NAME" /> 外掛程式</translation>
+<translation id="1635748761015837179">允許寫入外部儲存空間</translation>
 <translation id="1639468541408865385">啟用全域範圍的 HTTP 驗證快取</translation>
 <translation id="1641394008743444477">這項政策可讓你設定要停用的 <ph name="PRODUCT_OS_NAME" />功能清單。
 
@@ -652,6 +661,7 @@
 
       如果未設定這項政策,系統會使用預設的快取大小,而使用者可以透過 --media-cache-size 旗標變更這項設定。</translation>
 <translation id="1648816843164517573">可略過 HTTP 嚴格傳輸安全性政策檢查的名稱清單</translation>
+<translation id="1651197070942919276">不允許裝置執行虛擬機器</translation>
 <translation id="1654087023995670109">強制執行瀏覽器訪客模式</translation>
 <translation id="1655229863189977773">設定磁碟快取大小 (以位元組為單位)</translation>
 <translation id="165769015320654523">自動授權網站連結至指定廠商和產品 ID 的 HID 裝置。</translation>
@@ -711,6 +721,7 @@
 
       注意:如需詳細範例,請前往 Chromium 專案 (網址為 https://www.chromium.org/developers/design-documents/network-settings#TOC-Command-line-options-for-proxy-sett)。</translation>
 <translation id="1700811900332333712">允許裝置要求執行 Powerwash</translation>
+<translation id="1705215165572785706">將最上排按鍵設為媒體鍵,但允許使用者變更</translation>
 <translation id="1708496595873025510">設定變異版本種子的擷取限制</translation>
 <translation id="1709154322133526432">啟用啟動時的預設瀏覽器檢查功能</translation>
 <translation id="1713829924716792485">如果將這項政策設為啟用或不設定,使用者可連線至遠端存取主機,以便在用戶端和主機之間傳輸檔案。遠端協助連線不支援檔案傳輸功能,因此不適用這項政策。
@@ -879,6 +890,7 @@
       如果將這項政策設為 False 或不設定,<ph name="PRODUCT_NAME" /> 不會在 <ph name="PRODUCT_NAME" /> 19 以上版本中執行線上撤銷檢查。
 
       注意:<ph name="OCSP_CRL_LABEL" /> 檢查無法提供實際的安全性效益。</translation>
+<translation id="1905061765326052857">不允許無關聯的使用者透過虛擬機器執行 Linux 應用程式</translation>
 <translation id="1910704279188129272">可讓你設定個別應用程式的使用限制。
         使用限制可套用到指定使用者在 <ph name="PRODUCT_OS_NAME" />上安裝的應用程式。
         你必須透過 |app_limits| 清單指定限制。每個應用程式只能設定一個項目。不在清單中的應用程式不會受到限制。
@@ -901,11 +913,14 @@
 <translation id="1920772397574801429">你可以透過這項政策,指定支援 <ph name="HTTP_NEGOTIATE" /> 驗證 (例如 Kerberos 驗證) 的 Android 驗證應用程式所提供的帳戶類型。驗證應用程式的供應商應可提供這類資訊。詳情請見 Chromium 計畫,網址為 https://goo.gl/hajyfN
 
       如果未設定這項政策,系統會關閉 Android 上的 <ph name="HTTP_NEGOTIATE" /> 驗證。</translation>
+<translation id="1923704782248889851">啟用語音輸入功能</translation>
 <translation id="1925529914257504750">已啟用自動更新 P2P</translation>
+<translation id="1930094135927166199">停用 USB 電力共享功能</translation>
 <translation id="1930127294345368978">單一列印工作可使用的紙張數量上限</translation>
 <translation id="193259052151668190">卸離式 USB 裝置許可清單</translation>
 <translation id="1933378685401357864">桌布圖片</translation>
 <translation id="1942626390957213764">停用桌面分享中心</translation>
+<translation id="194407941132272412">停用所有網站的網站隔離功能,但允許使用者啟用</translation>
 <translation id="1945994447126139909">這項企業政策只是暫時性措施,將在 <ph name="PRODUCT_NAME" /> 第 88 版中移除。
 
 
@@ -914,6 +929,7 @@
       在推出之前,這項企業政策不會生效。如果你在推出之後啟用這項企業政策,Chrome 的預設參照政策將設為先前的值 no-referrer-when-downgrade。
 
       在預設狀態下,系統會停用這項企業政策。</translation>
+<translation id="1947848925128084608">在登入畫面上停用高對比模式,並允許使用者暫時啟用</translation>
 <translation id="1949584741547056205">快速解答</translation>
 <translation id="1951288262199783797">你可以啟用這項政策以建立檔案類型副檔名字典和對應的網域清單,這些網域就不會針對特定檔案類型副檔名顯示下載警告。這樣企業管理員可以針對與所列網域相關聯的檔案,封鎖特定檔案類型副檔名的下載警告。舉例來說,如果「jnlp」副檔名與「website1.com」相關聯,使用者從「website1.com」下載「jnlp」檔案時不會看到警告訊息,但從「website2.com」下載「jnlp」檔案時就會看到警告訊息。
 
@@ -939,6 +955,7 @@
       請注意,雖然前一個範例的設定是針對所有網域的「swf」檔案停用檔案類型副檔名警告,但基於安全考量,不建議將這種停用警告訊息的做法套用到所有網域的任何危險檔案類型副檔名。這只是用來說明設定方式而已。
 
       如果啟用這項政策,且 <ph name="DOWNLOAD_RESTRICTIONS_POLICY_NAME" /> 和 DownloadRestrictions 政策設為封鎖危險檔案類型,則系統會優先採用 DownloadRestrictions 的禁止下載設定。比方說,如果這項政策設為可從「website1.com」下載「exe」副檔名,且 DownloadRestrictions 設為封鎖惡意下載內容和危險檔案類型,則系統仍會禁止從所有網域下載「exe」副檔名。如果 DownloadRestrictions 未設定為封鎖危險檔案類型,那麼從指定網域下載這項政策設定的檔案類型時,系統就不會顯示檔案類型副檔名下載警告。進一步瞭解 DownloadRestrictions 政策 (https://chromeenterprise.google/policies/?policy=DownloadRestrictions)。</translation>
+<translation id="1954612656043024615">啟用剪貼簿共用功能</translation>
 <translation id="1960416154405676350">啟用 <ph name="GOOGLE_LENS_PRODUCT_NAME" />的區域搜尋功能。</translation>
 <translation id="1961091374249454164">這項政策僅適用於受管理的訪客工作階段。
       你可以透過本政策指定擴充功能 ID 清單,從有限制的受管理訪客工作階段清除程序中排除這些擴充功能 (請見 <ph name="DEVICE_RESTRICTED_MANAGED_GUEST_SESSION_ENABLED_POLICY_NAME" />)。
@@ -1003,12 +1020,15 @@
 <translation id="2004382785802837840">停用關閉密碼遭到外洩的防護警示</translation>
 <translation id="2005506794355327448">機蓋蓋上時採取的動作</translation>
 <translation id="2006530844219044261">電源管理</translation>
+<translation id="2006954055163088863">在影片播放時將使用者狀態視為閒置</translation>
 <translation id="2008514891623783266">WebRTC 的 IP 處理政策</translation>
 <translation id="2013285471046373727">指定應用程式的安裝方式。OPTIONAL:應用程式不會自動安裝,但使用者可自行安裝。如未指定這項政策,系統會預設採用這個值。PRELOAD:應用程式會自動安裝,但使用者可以解除安裝。FORCE_INSTALLED:應用程式會自動安裝,且使用者無法解除安裝。BLOCKED:應用程式遭到封鎖且無法安裝。如果應用程式是依據先前的政策而安裝,則會解除安裝。</translation>
 <translation id="2014757022750736514">控管登入畫面的行為,使用者會從該畫面登入帳戶。可調整的設定包含可登入的人員、系統允許的帳戶類型、應使用何種驗證方法,以及一般無障礙、輸入法和語言代碼設定。</translation>
 <translation id="201557587962247231">裝置狀態報告上傳頻率</translation>
+<translation id="2016031354108680330">啟用 Linux 虛擬機器的 Root 權限</translation>
 <translation id="2017301949684549118">以無訊息方式安裝的網頁應用程式網址。</translation>
 <translation id="2017459564744167827">如要進一步瞭解架構和格式設定,請參閱 <ph name="REFERENCE_URL" />。</translation>
+<translation id="2018425641414671849">不允許使用者在裝置鎖定時播放媒體</translation>
 <translation id="2024476116966025075">設定遠端存取用戶端的網域名稱 (必要)</translation>
 <translation id="2029985289397958781">針對 Enterprise 使用者停用 <ph name="GOOGLE_LENS_PRODUCT_NAME" />相機輔助搜尋功能</translation>
 <translation id="2030905906517501646">預設搜尋引擎關鍵字</translation>
@@ -1131,6 +1151,7 @@
       設定這項政策後,如果超過記憶體使用限制,瀏覽器會開始捨棄分頁以節省記憶體。不過,我們無法保證瀏覽器運作時,記憶體使用量會一律在限制值以下。1024 以下的值會進位到 1024。
 
       如果不設定這項政策,瀏覽器只會在偵測到電腦上的實體記憶體即將用盡時,才會開始嘗試節省記憶體。</translation>
+<translation id="2161348910646846717">允許使用者變更發布版本</translation>
 <translation id="2165567959657265531">針對符合這些模式的網域所設定的 Cookie 會還原成舊版的 <ph name="ATTRIBUTE_SAMESITE_NAME" /> 行為。還原成舊版的行為會導致系統將未指定 <ph name="ATTRIBUTE_SAMESITE_NAME" /> 屬性的 Cookie 視為「<ph name="ATTRIBUTE_VALUE_SAMESITE_NONE" />」,並移除「<ph name="ATTRIBUTE_VALUE_SAMESITE_NONE" />」Cookie 必須帶有「<ph name="ATTRIBUTE_SECURE_NAME" />」屬性的要求。此外,這也會讓系統在評估兩個網站是否相同時,略過網址架構的比較。如需完整說明,請前往 https://www.chromium.org/administrators/policy-list-3/cookie-legacy-samesite-policies。
 
           如果網域中的 Cookie 不符合此處指定的模式,系統會根據使用者的個人設定套用全域預設值。如果不設定這項政策,系統會為所有 Cookie 採用這種做法。
@@ -1295,6 +1316,7 @@
       注意:對於 Android 裝置,請改用 <ph name="SITE_PER_PROCESS_ANDROID_POLICY_NAME" /> 政策。</translation>
 <translation id="2306505001667207184">每當自動選取政策與多個憑證相符時,提示使用者選取用戶端憑證。</translation>
 <translation id="2307496301287881990">回報顯示狀態和圖形狀態</translation>
+<translation id="2309284543927494965">禁止更新</translation>
 <translation id="2309341709647905294">不要回報裝置所連結周邊裝置的相關資訊</translation>
 <translation id="2309390639296060546">預設地理位置設定</translation>
 <translation id="2331354174913096226">所需 DNS-over-HTTPS 解析器的 URI 範本。如要指定多個 DNS-over-HTTPS 解析器,請以半形空格分隔相應的 URI 範本。
@@ -1338,6 +1360,8 @@
       Chrome 已在第 91 版停止支援將本政策設為「tls1」或「tls1.1」,目前則不再支援隱藏 TLS 1.0/1.1 警告。</translation>
 <translation id="2364639863953745682">Google 助理入門使用體驗的模式</translation>
 <translation id="2366301887862414321">允許使用者層級和系統層級的原生訊息傳遞主機</translation>
+<translation id="2373014700224092497">允許使用者新增 Kerberos 帳戶</translation>
+<translation id="2376134474855349829">在登入畫面上停用螢幕小鍵盤,並允許使用者暫時啟用</translation>
 <translation id="2382672620906337383">系統要在達到較高巢狀閾值後,才會延遲 JavaScript setTimeout()。</translation>
 <translation id="2384233438419344179">如果將這項政策設為啟用,網頁元素只要不屬於瀏覽器網址列中的網域,就無法設定 Cookie。如果將這項政策設為停用,這類元素將可設定 Cookie,且使用者無法變更這項設定。
 
@@ -1402,6 +1426,7 @@
 設好這項政策後,使用者即無法覆寫設定值。
 
 如果未設定這項政策,系統預設會停用隱私保護畫面,但使用者可以自行變更。</translation>
+<translation id="2413899611035194909">顯示登入畫面系統匣選單的無障礙選項</translation>
 <translation id="2415715982424988916">探索 (自 91 版起開始支援)</translation>
 <translation id="2421677964966613267">這項政策已在 M88 版遭到淘汰,Chrome 已不再支援 Flash。你可以透過這項政策設定網址模式清單,用於指定無法執行 <ph name="FLASH_PLUGIN_NAME" /> 外掛程式的網站。
 
@@ -1461,6 +1486,10 @@
       如果停用這項設定,<ph name="PRODUCT_NAME" /> 不會偵測是否有視窗覆蓋情形。
 
       如果未設定這項政策,系統會啟用遮蔽偵測功能。</translation>
+<translation id="2462606868915618110">自 M108 起,系統會同步叫用所有 <ph name="FILE_SYSTEM_SYNC_ACCESS_HANDLE" /> 方法。
+      在 M110 之前,這項政策會重新啟用非同步叫用 <ph name="FILE_SYSTEM_SYNC_ACCESS_HANDLE" /> 方法。
+      如果將這項政策設為啟用,系統會以非同步方式叫用 <ph name="FILE_SYSTEM_SYNC_ACCESS_HANDLE" /> 方法。
+      如果將這項政策設為停用或未設定,系統會同步叫用所有 <ph name="FILE_SYSTEM_SYNC_ACCESS_HANDLE" /> 方法。</translation>
 <translation id="2463034609187171371">在傳輸層安全標準 (TLS) 中啟用 DHE 加密套件</translation>
 <translation id="2463365186486772703">應用程式語言代碼</translation>
 <translation id="2463832514638083341">這項政策可控管將列印工作中繼資料儲存在裝置上的時間範圍 (以天為單位)。
@@ -1486,6 +1515,7 @@
       如果不設定這項政策,系統在預設狀態下會啟用「點選通話」功能。</translation>
 <translation id="2482676533225429905">內建訊息傳遞</translation>
 <translation id="2483146640187052324">無論使用任何網路連線,皆預測網路動作</translation>
+<translation id="2489558694350871332">允許裝置執行虛擬機器</translation>
 <translation id="2496180316473517155">瀏覽記錄</translation>
 <translation id="2497751676088107779">使用者指令碼</translation>
 <translation id="2497965601277442929">禁止使用者啟用僅限 HTTPS 模式</translation>
@@ -1527,9 +1557,11 @@
       如果將這項政策設為 Disabled 或不設定,登入時啟動的項目便取決於完整還原設定。</translation>
 <translation id="2517466659416174529">允許背景分頁凍結</translation>
 <translation id="2518231489509538392">允許播放音訊</translation>
+<translation id="2519578205567666653">允許外部儲存空間</translation>
 <translation id="2520551905471951523">以高優先順序執行音訊程序</translation>
 <translation id="2521581787935130926">在書籤列中顯示應用程式捷徑</translation>
 <translation id="2522304491589804974">設定擴充功能安裝許可清單</translation>
+<translation id="2523511232831599126">在登入畫面上啟用無障礙捷徑</translation>
 <translation id="2529880111512635313">設定強制安裝的應用程式和擴充功能清單</translation>
 <translation id="253135976343875019">在 AC 供電環境下執行時的閒置警告延遲時間</translation>
 <translation id="2535370400681639351">如果將這項政策設為啟用,在遠端主機連線期間,系統會以 Proxy 處理 gnubby 驗證要求。
@@ -1580,8 +1612,10 @@
       你可以透過這項政策,指定拒絕載入的原生訊息傳遞主機。如果將拒絕清單的值設為 <ph name="WILDCARD_VALUE" />,系統會拒絕所有原生訊息傳遞主機,但政策明確允許使用的主機除外。
       如果不設定這項政策,<ph name="PRODUCT_NAME" /> 會載入所有已安裝的原生訊息傳遞主機。</translation>
 <translation id="2568488785376704318">這項政策已遭淘汰,請改用 <ph name="REMOTE_ACCESS_HOST_DOMAIN_LIST_POLICY_NAME" /> 政策。</translation>
+<translation id="2570059561924004903">停用互動朗讀功能</translation>
 <translation id="2575198840408498393">停用漫遊設定檔建立功能</translation>
 <translation id="2576324725151524912">允許已隔離應用程式的開發人員模式。</translation>
+<translation id="257717978573041245">啟用硬體加速</translation>
 <translation id="257788512393330403">每 6 小時需輸入密碼</translation>
 <translation id="2580757713966614760">你可以透過這項政策指定要套用到大量印表機設定的存取權政策,藉此控管要為使用者提供 <ph name="DEVICE_PRINTERS_POLICY_NAME" /> 的哪些印表機。
 
@@ -1604,6 +1638,7 @@
       * 使用 AC 電源時,裝置在閒置狀態所採取的預設動作為關機。
 
       如果不設定這項政策或其中的任何設定,系統會針對各項電源設定使用預設值。</translation>
+<translation id="2591775699187375408">一律在沙箱中處理音訊</translation>
 <translation id="2592091433672667839">螢幕保護程式顯示前的閒置時間會顯示在零售模式下的登入畫面上</translation>
 <translation id="259289618675490104">如果將這項政策設為「全部」(值為 0) 或不設定,使用者將可管理憑證。如果將這項政策設為「無」(值為 2),使用者只能檢視憑證,無法進行管理。
 
@@ -1673,6 +1708,7 @@
 <translation id="2706708761587205154">只在 PIN 碼啟用時允許列印</translation>
 <translation id="2707873794476722903">已啟用標準模式中的安全瀏覽功能。</translation>
 <translation id="2709516037105925701">自動填入</translation>
+<translation id="2713977837384407666">一律傳送指標資料給 Google</translation>
 <translation id="2714359695399346815">如果將這項政策設為啟用或不設定,即可使用 STUN 伺服器,這樣即使遠端用戶端受到防火牆阻隔,也能偵測到這部裝置並建立連線。
 
       如果將這項政策設為停用,且防火牆會篩選外送 UDP 連線,這部裝置就只能接受區域網路中用戶端裝置的連線。</translation>
@@ -1714,6 +1750,7 @@
 
       這項政策需要額外設定才會生效,詳情請參閱 https://support.google.com/chrome/a?p=chrome_enterprise_connector_policies_setting。</translation>
 <translation id="2731627323327011390">禁止 ARC 應用程式使用「<ph name="PRODUCT_OS_NAME" />」憑證</translation>
+<translation id="2737917415184832294">透過 HTTPS 下載更新</translation>
 <translation id="2742843273354638707">在新分頁和 <ph name="PRODUCT_OS_NAME" />應用程式啟動畫面中隱藏 Chrome 線上應用程式商店和底端連結。
 
       如果將這項政策設為 True,系統會隱藏圖示。
@@ -1744,6 +1781,7 @@
 
       如果將這項政策設為 False,PDF 檢視器將無法為PDF 加註。</translation>
 <translation id="2769952903507981510">設定遠端存取主機所需的網域名稱</translation>
+<translation id="2772231477628401250">透過 HTTP 下載更新</translation>
 <translation id="2772650717382565415">你可以透過這項政策指定要以無訊息方式 (使用者不用操作) 安裝的網頁應用程式清單。使用者無法解除安裝或停用這些網頁應用程式。
 
       這項政策的每個清單項目都是一個物件,由下列必要元素組成:
@@ -1819,11 +1857,14 @@
 <translation id="283478052049914107">如果將這項政策設為啟用並輸入非標準連接埠 (也就是 80 或 443 以外的連接埠),系統會在已產生的 Kerberos SPN 中加入該連接埠。
 
       如果將這項政策設為停用或不設定,已產生的 Kerberos SPN 不會包含連接埠。</translation>
+<translation id="2834965199373338033">啟用背景模式</translation>
 <translation id="2835686964326214400">自訂重新啟動裝置的時間表</translation>
 <translation id="2838830882081735096">不允許資料遷移和 ARC</translation>
 <translation id="2839294585867804686">網路檔案共用功能設定</translation>
+<translation id="2841911109921764691">在登入畫面上使用右鍵做為主要按鈕</translation>
 <translation id="284288632677954003">XML 檔案的網址,其中包含一律不觸發瀏覽器切換的網址。</translation>
 <translation id="2846689894646472396">以毫秒為單位的網路事件檢查率。</translation>
+<translation id="2849275596224278787">隱藏登入畫面系統匣選單中的無障礙選項</translation>
 <translation id="2853649500575897584">不要封鎖瀏覽器程序中的舊版擴充點</translation>
 <translation id="285480231336205327">啟用高反差模式</translation>
 <translation id="285627849510728211">設定日間進階充電模式配置</translation>
@@ -1831,6 +1872,7 @@
 <translation id="2866619962692161453">中繼政策類型</translation>
 <translation id="2866726566162790531">允許所有 HTTP 驗證機制的來源清單</translation>
 <translation id="2869762730352628426">在登入畫面上啟用自動點擊功能</translation>
+<translation id="2872098849906555324">停用 Google 雲端硬碟同步功能</translation>
 <translation id="2872961005593481000">關閉</translation>
 <translation id="2874209944580848064">支援 Android 裝置的 <ph name="PRODUCT_OS_NAME" />裝置注意事項:</translation>
 <translation id="2875192972412983412">指定系統尋找伺服器印表機時,要查詢符合何種條件的列印伺服器。
@@ -1871,6 +1913,7 @@
       如果將這項政策設為 False,系統就不會在 ARC 啟動前建立 ghost 視窗。ARC 應用程式會在 ARC 啟動後還原</translation>
 <translation id="2899002520262095963">Android 應用程式可以使用透過這項政策指定的網路設定和 CA 憑證,但無法存取部分設定選項。</translation>
 <translation id="2899213072616346687">限制背景圖形列印模式。如未設定,系統會視為未設限制。</translation>
+<translation id="2899640611559504158">停用虛擬機器指令列存取權</translation>
 <translation id="290002216614278247">讓你可根據用戶端時間或當日用量配額鎖定使用者的工作階段。
 
           |time_window_limit| 是用來指定一個每日時段,在這段時間系統會鎖定使用者的工作階段。星期一到日每天各只能設定一項規則,因此 |entries| 陣列的大小可為 1 到 7 之間的值。|starts_at| 和 |ends_at| 是時段限制的開始和結束時間;如果 |ends_at| 小於 |starts_at|,表示 |time_limit_window| 到隔天才會結束。|last_updated_millis| 是此項目上次更新時間的時間戳記 (採世界標準時間),由於時間戳記無法轉換成整數,因此這項參數是採字串的形式傳送。
@@ -1945,6 +1988,7 @@
 <translation id="2960128438010718932">分階段套用更新的時程</translation>
 <translation id="2960691910306063964">針對遠端存取主機啟用或停用無 PIN 碼驗證機制</translation>
 <translation id="2962972237615992440">停用 <ph name="CLOUD_PRINT_NAME" /> Proxy</translation>
+<translation id="2963292398266537394">停用語音輸入功能</translation>
 <translation id="2964056138564883247">這項政策可控管 <ph name="BOREALIS_NAME" /> 是否適用於這位使用者。
 
       如果將這項政策設為 False,<ph name="BOREALIS_NAME" /> 就不適用於該使用者。如果不設定這項政策或設為 True,<ph name="BOREALIS_NAME" /> 只要未遭到其他政策或設定所停用,便適用於這位使用者。</translation>
@@ -2048,6 +2092,7 @@
      如果將這項政策設為 False,新分頁上就不會顯示自動產生的內容建議。</translation>
 <translation id="3046192273793919231">將監控線上狀態所需的網路封包傳送到管理伺服器</translation>
 <translation id="3047732214002457234">控制 Chrome 清理功能回報資料給 Google 的方式</translation>
+<translation id="3047864383610708617">停用相黏鍵</translation>
 <translation id="3048744057455266684">如果你設定這項政策,且網址列所建議的搜尋網址在查詢字串或片段 ID 中含有這項參數,則搜尋建議會顯示搜尋字詞和搜尋引擎供應商,而不是顯示原始的搜尋網址。
 
           這個政策為選擇性,如果你並未設定這項政策,系統就不會取代任何搜尋字詞。
@@ -2120,6 +2165,8 @@
       想進一步瞭解有效的<ph name="URL_LABEL" />模式,請參閱 https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns。這項政策只會根據來源進行比對,因此會忽略網址模式中的路徑。</translation>
 <translation id="3118552207903834734">允許使用者設定裝置主機名稱</translation>
 <translation id="3122082892722698079">控管可使用不安全內容的例外網站</translation>
+<translation id="3125472566440502628">停用隨選朗讀功能</translation>
+<translation id="3126748868885248792">右鍵為主要按鈕</translation>
 <translation id="3128072319047570212">Keygen 設定</translation>
 <translation id="3131703464330936425">不允許行動數據漫遊服務</translation>
 <translation id="3135820765957090754">如果啟用這項設定,使用者將可在搭載 <ph name="PRODUCT_OS_NAME" /> 的裝置和已連結的 Android 手機上,將 Wi-Fi 網路設定保持同步。使用者必須完成設定流程來明確選擇要啟用這項功能,才能同步 Wi-Fi 網路設定。
@@ -2234,6 +2281,7 @@
 <translation id="3211426942294667684">瀏覽器登入設定</translation>
 <translation id="3219421230122020860">可使用無痕模式</translation>
 <translation id="3220624000494482595">如果資訊站應用程式是 Android 應用程式,即使將這項政策設為 <ph name="TRUE" />,仍無法控制 <ph name="PRODUCT_OS_NAME" />版本。</translation>
+<translation id="3222088741899353813">在登入畫面上使用左鍵做為主要按鈕</translation>
 <translation id="322359555555487980">指定變化版本在 <ph name="PRODUCT_OS_NAME" />上的可用性</translation>
 <translation id="3229163415739929305">如果將這項政策設為啟用或不設定,系統會啟用網頁載入中繼資料擷取功能和強化瀏覽體驗的機器學習模型。
       如果將這項政策設為停用,則可能會造成部分功能無法正常運作。</translation>
@@ -2258,6 +2306,8 @@
       如果未設定這項政策,則系統無法更新 <ph name="TPM_FIRMWARE_UPDATE_TPM" /> 韌體。</translation>
 <translation id="3232563711929146405">停用網路服務沙箱</translation>
 <translation id="3232691106293445015">不安全的 HTTP 連線無法使用<ph name="BASIC_AUTH" />驗證;必須採用 HTTPS 連線</translation>
+<translation id="3234753491625248216">停用硬體加速</translation>
+<translation id="3234773866678260466">允許新增設定檔</translation>
 <translation id="3234863952320884611">啟用非同步叫用 <ph name="FILE_SYSTEM_SYNC_ACCESS_HANDLE" /> 方法</translation>
 <translation id="3235085623859932253"> 如果停用這項政策,使用者將無法透過 PCIe 通道完全連結 Thunderbolt/USB4 周邊裝置。
 
@@ -2311,6 +2361,7 @@
       如果未正常關閉 <ph name="PRODUCT_NAME" /> (例如瀏覽器或作業系統當機時),系統會在下次載入設定檔時清除瀏覽資料。</translation>
 <translation id="3264793472749429012">預設搜尋引擎編碼</translation>
 <translation id="3273221114520206906">預設 JavaScript 設定</translation>
+<translation id="3278042410658310805">在登入畫面上停用互動朗讀功能,並允許使用者暫時啟用</translation>
 <translation id="3282240846541032181">這項政策可讓管理員針對 <ph name="PRODUCT_OS_NAME" /> 上的各個副檔名,指定對應的應用程式做為預設處理常式,而使用者無法變更這項設定。
       凡是不在這項政策中指定的副檔名,使用者都能按照一般工作流程自行設定預設值。
 
@@ -2399,6 +2450,7 @@
       如需可使用的變數清單,請參閱 https://support.google.com/chrome/a?p=Supported_directory_variables。
 
       如果不設定這項政策,系統會使用預設的設定檔路徑,且使用者將可使用「--user-data-dir」指令列旗標覆寫這個路徑。</translation>
+<translation id="338149029069528354">不要清除本機使用者資料</translation>
 <translation id="3381968327636295719">根據預設使用主機瀏覽器</translation>
 <translation id="3387211681524224831">如果將這項政策設為啟用,系統不會儲存瀏覽記錄,並會停用分頁同步功能,且使用者無法變更這項設定。
 
@@ -2411,6 +2463,7 @@
 
       如果不設定 <ph name="DEVICE_LOCAL_ACCOUNT_AUTO_LOGIN_ID_POLICY_NAME" /> 政策,則這項政策不會有任何作用。</translation>
 <translation id="3397883909301547525">不要在 <ph name="PRODUCT_OS_NAME" /> 啟動器中顯示推薦應用程式</translation>
+<translation id="3398051852031115795">系統預設行為 (視螢幕大小而定)</translation>
 <translation id="3399859571630358395">強制停用快速配對功能 (快速藍牙配對)。</translation>
 <translation id="3404681701763345449">啟用 <ph name="GOOGLE_CALENDAR_NAME" />整合。</translation>
 <translation id="3408078762098350617">這項政策會控管 <ph name="SYSTEM_FEATURES_DISABLE_LIST_POLICY_NAME" /> 中已停用功能的使用者體驗。
@@ -2463,6 +2516,7 @@
 <translation id="3442269905344976871">在裝置提供 <ph name="WILCO_NAME" /> 診斷與遙測控制器 (DTC) 的情況下,如果將這項政策設為啟用,系統將啟用遙測與診斷資料的收集、處理及回報功能。
 
       如果將這項政策設為停用或不設定,系統將停用 DTC,也無法收集、處理或回報裝置的遙測與診斷資料。</translation>
+<translation id="3442589735857147823">允許使用者透過虛擬機器執行 Linux 應用程式</translation>
 <translation id="3450649825886735618">不使用任何 Google 網路服務來協助解決拼字錯誤</translation>
 <translation id="3451422488938880786"> 允許啟用/停用國際鍵盤快速鍵重新對應功能</translation>
 <translation id="3451901387456196887">使用者可在 <ph name="PRODUCT_NAME" /> 選單中使用存取碼或掃描 QR 圖碼來選取投放裝置。</translation>
@@ -2502,6 +2556,7 @@
 
           根據預設,系統會允許所有擴充功能。不過,如果你透過政策封鎖了擴充功能,請使用允許的擴充功能清單來變更該政策。</translation>
 <translation id="3501606938635483637">國際鍵盤快速鍵會對應至按鍵的字符,而非鍵盤的按鍵位置。</translation>
+<translation id="3502438748205582075">停用 Kerberos</translation>
 <translation id="3502555714327823858">允許所有雙面列印模式</translation>
 <translation id="350443680860256679">設定 ARC</translation>
 <translation id="350797926066071931">啟用翻譯</translation>
@@ -2576,9 +2631,11 @@
 
           如果不設定這項政策,系統預設會停用隨選朗讀功能,但使用者可以隨時啟用這項功能。</translation>
 <translation id="3587482841069643663">全部</translation>
+<translation id="3587766503874071316">停用無障礙捷徑</translation>
 <translation id="3589193811812796052">禁止跨來源傳送 WebAssembly 模組</translation>
 <translation id="3591527072193107424">啟用「舊版瀏覽器支援」功能。</translation>
 <translation id="3591584750136265240">設定登入驗證行為</translation>
+<translation id="3596112486106491038">啟用虛擬機器指令列存取權</translation>
 <translation id="3603469950773500315">在新版 <ph name="CORS" /> 模式中啟用寬鬆檢查機制來放寬 <ph name="CORS" /> 檢查標準,讓擴充功能保持相容行為,並允許 <ph name="PRODUCT_NAME" /> 不需經過 <ph name="CORS" /> 檢查即可傳送指定標頭。
 
       如果將這份清單設為空白,<ph name="PRODUCT_NAME" /> 會嘗試以相容方式執行擴充功能,且不會採用 <ph name="PRODUCT_NAME" /> 第 79 版的 <ph name="API" /> 變更,詳情請參閱 <ph name="WEB_REQUEST_API_MANUAL" />。
@@ -2613,6 +2670,7 @@
       如果設定這項政策,使用者將無法變更設定。如果不設定,系統會停用「連接 AC 電源時啟動」功能,且使用者無法啟用。</translation>
 <translation id="3660562134618097814">登入時移轉 SAML IdP Cookie</translation>
 <translation id="3665437376055221832">只在沒有任何符合自動選取政策的憑證時提示使用者。</translation>
+<translation id="3671773704245936868">停用鍵盤焦點醒目顯示功能</translation>
 <translation id="3674010627788940405">不支援 CORS 非萬用字元要求標頭。</translation>
 <translation id="3675303748198647471">setTimeout(…, 0) 常用來細分長時間的 JavaScript 工作。
           如果將這項政策設為啟用,系統不會迅速調整間隔時間小於 4 毫秒的 setTimeouts 和 setIntervals。
@@ -2681,6 +2739,7 @@
 <translation id="3733014427925403568">限制時段的開始及結束時間分別是星期幾。</translation>
 <translation id="3736879847913515635">允許在使用者管理工具中新增使用者</translation>
 <translation id="3749259744154402564">不支援</translation>
+<translation id="3749511622128647337">停用音訊輸出</translation>
 <translation id="3750220015372671395">禁止在這些網站上使用金鑰產生功能</translation>
 <translation id="3753959315989102457">停用裝置位置回報功能</translation>
 <translation id="3755237588083934849">你可以透過這項政策,決定裝置狀態上傳內容的傳送頻率 (以毫秒為單位),下限值是 60 秒。
@@ -2840,6 +2899,7 @@
 
       每個清單項目都含有目錄,其中的「extension-id」欄位必須包含擴充功能 ID,且「update-url」欄位必須包含更新網址。</translation>
 <translation id="3869180930654347954">為所有受影響的使用者停用 First-Party Sets 功能</translation>
+<translation id="3870035799352372700">不允許 Google 助理在互動期間存取畫面內容</translation>
 <translation id="3870059789954671543">在登入畫面上啟用鍵盤焦點醒目顯示無障礙功能。
 
           這項功能可以醒目顯示鍵盤聚焦的物件。
@@ -2867,6 +2927,7 @@
 
       如果未設定這項政策,則可使用 SPDY。</translation>
 <translation id="3887529334667818189">系統預設會在 chrome://history/journeys 頁面上顯示瀏覽歷程,且使用者可以變更瀏覽歷程的顯示設定。</translation>
+<translation id="3891175633496805812">停用 wilco 診斷與遙測控制器</translation>
 <translation id="3891357445869647828">啟用 JavaScript</translation>
 <translation id="3891769546914233112">提供「以圖片形式列印 PDF」</translation>
 <translation id="3897218615484393758">限制透過 SAML 驗證的使用者可以在螢幕鎖定畫面離線登入的時間</translation>
@@ -2918,6 +2979,7 @@
           如果不設定這項政策,系統會在初次顯示登入畫面時停用相黏鍵功能,但使用者隨時可以啟用。</translation>
 <translation id="3927291637826333102">依這些來源允許執行螢幕畫面、視窗和分頁擷取功能</translation>
 <translation id="3928726028264020458">啟用裝置 VPD 資訊回報功能</translation>
+<translation id="3941289958028934630">在登入畫面上停用互動朗讀功能</translation>
 <translation id="3943930334592166130">當多個憑證與 <ph name="AUTO_SELECT_CERTIFICATE_FOR_URLS_POLICY_NAME" /> 相符時,這項政策可控管是否要提示使用者選取用戶端憑證。
       如果將這項政策設為 Enabled,每當自動選取政策與多個憑證相符時,系統會提示使用者選取用戶端憑證。
       如果將這項政策設為 Disabled 或不予設定,則只有在沒有任何符合自動選取政策的憑證時,系統才會提示使用者。</translation>
@@ -2976,6 +3038,10 @@
       在這項設定未調整或設為 False 時,<ph name="PRODUCT_OS_NAME" /> 裝置會自動檢查更新。
 
       警告:建議保持啟用自動更新功能,這樣一來使用者才能接收軟體更新,修正重大的安全性問題。停用自動更新功能可能讓使用者面臨風險。</translation>
+<translation id="4015799413391577485"><ph name="PRODUCT_NAME" /> 已移除 3DES,因此這項政策已在 M97 中移除。
+
+      如果將這項政策設為 True,系統會啟用傳輸層安全標準 (TLS) 中的 3DES 加密套件。如果設為 False,系統將停用加密套件。如果不設定這項政策,系統預設停用 3DES 加密套件。這項政策可以暫時維持與過時伺服器的相容性。這種做法只是權宜之計,正確的做法是重新設定伺服器。
+      </translation>
 <translation id="4016367078069682737">這項政策已在 M61 版中遭到移除。
 
       這會針對出廠時採用 eCryptfs 加密機制,而現在需要轉換到 ext4 加密機制的裝置指定相關行為。
@@ -3004,6 +3070,7 @@
       如果未設定這項政策,Chrome 會使用預設的下載目錄,且使用者可以進行變更。
 
       注意:如要查看可使用的變數清單,請前往 https://www.chromium.org/administrators/policy-list-3/user-data-directory-variables。</translation>
+<translation id="4030152268425532846">停用自動登入規避</translation>
 <translation id="4041577849977347218">如果將這項政策設為啟用或不設定,即使下載的檔案來自可信任的來源,安全瀏覽功能仍會將其送交分析。
 
       如果將這項政策設為停用,只要下載的檔案來自可信任的來源,安全瀏覽功能就不會將其送交分析。
@@ -3015,6 +3082,7 @@
 <translation id="4051723201852944592">啟用視窗遮蔽功能</translation>
 <translation id="4052529125939620019">啟動時載入 CryptoToken 元件擴充功能</translation>
 <translation id="4053157306171963473">停用裝置活動時間回報功能</translation>
+<translation id="4053612967614057854">停用螢幕小鍵盤</translation>
 <translation id="4056910949759281379">停用 SPDY 通訊協定</translation>
 <translation id="4061107397839125009">你可以透過這項政策設定網址模式清單,用於指定無法顯示通知的網站。
 
@@ -3022,6 +3090,7 @@
 
       想進一步瞭解有效的<ph name="URL_LABEL" />模式,請參閱 https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns。<ph name="WILDCARD_VALUE" /> 不是這項政策許可的值。</translation>
 <translation id="4061590579642538878">回報當機報告相關資訊。</translation>
+<translation id="4072225853834793549">在登入畫面上停用無障礙捷徑</translation>
 <translation id="4075675819066819571">將檔案櫃放在畫面的左側</translation>
 <translation id="408029843066770167">允許向 Google 時間服務傳送查詢</translation>
 <translation id="408076456549153854">允許登入瀏覽器</translation>
@@ -3098,9 +3167,11 @@
 <translation id="4138655880188755661">時間限制</translation>
 <translation id="4147818922357566987">僅啟用與重大修正項目相關的變化版本</translation>
 <translation id="4150201353443180367">顯示設定</translation>
+<translation id="4154221011709068799">不允許外部儲存空間</translation>
 <translation id="415445772247959702">線上應用程式商店 (自 89 版開始支援)</translation>
 <translation id="4157003184375321727">回報作業系統和韌體版本</translation>
 <translation id="4157594634940419685">允許存取原生 CUPS 印表機</translation>
+<translation id="4158531549614162499">啟用透過行動網路連線執行 Google 雲端硬碟同步功能</translation>
 <translation id="4160962198980004898">裝置插入座架時的 MAC 位址來源</translation>
 <translation id="4161589119744364846">你可以透過這項政策設定預設的「新分頁」網址,並禁止使用者進行變更。
 
@@ -3169,6 +3240,7 @@
 <translation id="4203879074082863035">僅對使用者顯示許可清單中的印表機</translation>
 <translation id="4204327073692415353">不要在登入畫面中提示使用者選取用戶端憑證</translation>
 <translation id="4205316772333487392">強制啟用 Google 搜尋的安全搜尋功能</translation>
+<translation id="4206464220361823768">在登入畫面上停用大型游標</translation>
 <translation id="4209297478239988291">啟用自動點擊無障礙功能。
 
           這項功能可讓你不需實際按下滑鼠或觸控板即可點擊物件,只要將游標懸停在你要點擊的物件上即可。
@@ -3193,6 +3265,7 @@
       如果將這項政策設為停用或不設定,使用者可在使用行動網路連線時,將檔案傳輸至雲端硬碟。</translation>
 <translation id="4248277954659222481">允許符合網址模式許可清單的網頁自動播放媒體</translation>
 <translation id="4250680216510889253">否</translation>
+<translation id="4252522848899331223">允許使用者略過安全瀏覽警告</translation>
 <translation id="4259636715493757956">這項政策允許你在 <ph name="WEBVIEW_PRODUCT_NAME" /> 中指定驗證網址的設定。
 
       <ph name="WEBVIEW_PRODUCT_NAME" /> 會將這些驗證網址視為特殊網址,因此系統將 <ph name="WEBVIEW_PRODUCT_NAME" /> 的網頁重新導向到驗證網址時,就會在驗證期間啟動可處理這個驗證網址的對應識別資訊提供者驗證器應用程式。
@@ -3251,7 +3324,10 @@
       如果裝置未受管理或是只有一位使用者,系統會忽略這項政策,並一律顯示通知。
 
       如果受管理的裝置上有多個使用者帳戶,只有當這項政策啟用時,系統才會顯示通知。</translation>
+<translation id="4303167373847512281">允許使用開發人員模式</translation>
+<translation id="4309091698378414920">啟用插入點醒目顯示功能</translation>
 <translation id="4311195029067684288">Full</translation>
+<translation id="4311662690937656540">強制在登入畫面和螢幕鎖定畫面執行線上登入</translation>
 <translation id="4313767483634435271">裝置的指定座架 MAC 位址</translation>
 <translation id="4314538398999793073">在 Kerberos 驗證期間停用 CNAME 查詢</translation>
 <translation id="4320592646346933548">Wi-Fi</translation>
@@ -3289,6 +3365,7 @@
 <translation id="4369307906396795087">工作站 (網路工作站、Service Worker 等) 指令碼會採用寬鬆的 MIME 類型檢查。使用舊版 MIME 類型的工作站指令碼 (例如 <ph name="MIMETYPE_TEXT_ASCII" />) 可正常運作。</translation>
 <translation id="4370937370030117032">禁止將使用者名稱和檔案名稱傳送給原生印表機</translation>
 <translation id="4372704773119750918">不允許企業使用者使用多重設定檔 (主要或次要)</translation>
+<translation id="4373332965635821723">啟用無障礙捷徑</translation>
 <translation id="4377599627073874279">允許所有網站顯示所有圖片</translation>
 <translation id="437791893267799639">未設定政策,不允許資料遷移和 ARC</translation>
 <translation id="4380159792986204036">允許網頁 Kiosk 在任何畫面上開啟多個瀏覽器視窗</translation>
@@ -3345,6 +3422,7 @@
 <translation id="4427173305799125784">PDF 檢視器無法為 PDF 加註</translation>
 <translation id="4432762137771104529">啟用安全瀏覽模式的進階回報功能</translation>
 <translation id="443454694385851356">舊版 (不安全)</translation>
+<translation id="4435032708588431506">允許 QUIC</translation>
 <translation id="443665821428652897">瀏覽器關閉時清除網站資料 (已淘汰)</translation>
 <translation id="4436941175475497595">停用列印預覽</translation>
 <translation id="4439336120285389675">指定要暫時重新啟用的已淘汰網路平台功能清單。
@@ -3386,6 +3464,7 @@
       想進一步瞭解有效的<ph name="URL_LABEL" />模式,請參閱 https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns。<ph name="WILDCARD_VALUE" /> 不是這項政策許可的值。</translation>
 <translation id="4480694116501920047">強制啟用安全搜尋服務</translation>
 <translation id="4481202456143946404">從推出新條款版本的 Google3 CL 所衍生的有效服務條款版本。</translation>
+<translation id="4481952213163895432">停用 Google 助理啟動字詞</translation>
 <translation id="4483120730995943109">逾時 0 毫秒的 JavaScript setTimeout() 將不會延遲到 1 毫秒。</translation>
 <translation id="4483649828988077221">停用自動更新</translation>
 <translation id="4484515651939984695">針對透過存取碼或 QR 圖碼選取的投放裝置,指定其在 <ph name="PRODUCT_NAME" /> 選單的投放裝置清單中停留的時間 (以秒為單位)。</translation>
@@ -3452,6 +3531,7 @@
       如需完整說明,請前往 https://www.chromestatus.com/feature/5675755719622656。
       如果啟用這項政策,即可同時在多個網站中進行瀏覽及開啟新視窗/分頁。
       如果停用這項政策或不予設定,則無法同時在多個網站中進行瀏覽及開啟新視窗/分頁。</translation>
+<translation id="4572577129745420844">不允許使用者新增 Kerberos 帳戶</translation>
 <translation id="457430673056611745">OnPrint <ph name="PRODUCT_NAME" /> Enterprise 連接器的設定政策</translation>
 <translation id="4578265298946081589">不要在使用者登出時重新啟動。</translation>
 <translation id="4581507927311097234">關閉螢幕前的閒置時間長度 (以毫秒為單位)。如果使用者在這段時間內沒有任何動作,系統就會關閉螢幕</translation>
@@ -3506,6 +3586,7 @@
 <translation id="4617338332148204752">在 <ph name="PRODUCT_FRAME_NAME" /> 內略過中繼標記檢查</translation>
 <translation id="4624417808625504735">禁止 JavaScript 在這些網站上使用 JIT</translation>
 <translation id="4625915093043961294">設定擴充功能安裝許可清單</translation>
+<translation id="46321462262887935">將最上排按鍵設為功能鍵,但允許使用者變更</translation>
 <translation id="4632343302005518762">允許 <ph name="PRODUCT_FRAME_NAME" /> 處理下列內容類型</translation>
 <translation id="4632566332417930481">禁止在由企業政策安裝的擴充功能中使用開發人員工具,允許在其他情況下使用開發人員工具</translation>
 <translation id="4635284822166984665">裝置開始充電的時間 (根據裝置當地時區)。</translation>
@@ -3587,6 +3668,7 @@
 <translation id="4723829699367336876">允許遠端存取用戶端穿越防火牆</translation>
 <translation id="4725528134735324213">啟用 Android 備份服務</translation>
 <translation id="4725801978265372736">要求比對本機使用者和遠端存取主機擁有者的名稱</translation>
+<translation id="4726228171190098009">不允許裝置要求恢復原廠設定</translation>
 <translation id="4733471537137819387">與整合 HTTP 驗證相關的政策。</translation>
 <translation id="4735099388031364207">如果將這項政策設為啟用,裝置將可使用遠端認證。系統會自動產生憑證並上傳到裝置管理伺服器。
 
@@ -3633,6 +3715,7 @@
 
       如果設定這項政策,使用者將無法變更。如果未設定,使用者可自行決定是否要自動隱藏檔案櫃。</translation>
 <translation id="4812714598405913256">設定 DeviceMinimumVersion 政策的自動更新期限訊息</translation>
+<translation id="4815581264328351694">顯示系統匣選單中的無障礙選項</translation>
 <translation id="4816674326202173458">允許企業使用者成為主要或次要使用者 (非管理化環境中使用者的預設行為)</translation>
 <translation id="4820432864264617413">禁止使用者執行 <ph name="BOREALIS_NAME" /></translation>
 <translation id="4821987881803903281">禁止這些網站取得視窗放置權限</translation>
@@ -3663,6 +3746,7 @@
 
       如果將這項政策設為 False 或不予設定,系統將不會回報作業系統的更新資訊。如果設為 True,則系統會回報作業系統的更新資訊。</translation>
 <translation id="4858735034935305895">允許全螢幕模式</translation>
+<translation id="486146220825734683">不允許使用者記住 Kerberos 密碼</translation>
 <translation id="4861767323695239729">設定可在使用者工作階段中使用的輸入法</translation>
 <translation id="4873380469296842901">如果啟用這項設定,已開啟 Phone Hub 功能的使用者將可在 Chrome OS 上傳送/接收手機的通知。
 
@@ -4070,6 +4154,7 @@
 <translation id="5255162913209987122">建議使用</translation>
 <translation id="525543707238275321">停用裝置 CPU 資訊回報功能</translation>
 <translation id="5257395339965216304">代管的應用程式資料</translation>
+<translation id="5258445772095084618">允許無關聯使用者透過虛擬機器執行 Linux 應用程式</translation>
 <translation id="5262320080678421295">停止信任由 Symantec 公司舊版 PKI 核發的憑證</translation>
 <translation id="5266173014392157048">這項政策已遭淘汰,請改用「<ph name="AUTH_NEGOTIATE_DELEGATE_ALLOWLIST_POLICY_NAME" />」政策。
 
@@ -4104,6 +4189,7 @@
 <translation id="5293044154216294358">如果將這項政策設為 True,使用者就可以玩恐龍遊戲。如果將這項政策設為 False,使用者無法在裝置處於離線狀態時玩恐龍復活節彩蛋遊戲。
 
       如果未設定這項政策,使用者無法在已註冊的 <ph name="PRODUCT_OS_NAME" />上玩恐龍復活節彩蛋遊戲,但可以在其他環境下玩這個遊戲。</translation>
+<translation id="5293285950307241933">清除所有本機使用者資料</translation>
 <translation id="529457411593078576">在第一次執行 CCT 時啟用《服務條款》</translation>
 <translation id="5297948043665200363">允許使用者在帳戶驗證狀態失效後保持登入狀態</translation>
 <translation id="5298949392804966105">不對受管理帳戶設定限制</translation>
@@ -4114,8 +4200,10 @@
 <translation id="5306186200045823863">信任 Symantec 公司的舊版 PKI 基礎架構</translation>
 <translation id="5307432759655324440">無痕模式適用性</translation>
 <translation id="5308551343115571396"><ph name="LACROS_NAME" /> 停用後,我們將移除所有瀏覽器資料,但會盡可能嘗試保留使用者資料。</translation>
+<translation id="530949964068726932">隱藏系統匣選單中的無障礙選項</translation>
 <translation id="5311275381462687162">預設的舊版 <ph name="ATTRIBUTE_SAMESITE_NAME" /> Cookie 行為設定</translation>
 <translation id="5312253627576569499">如果系統在螢幕調暗時或畫面關閉後不久便偵測到使用者活動,要將螢幕調暗延遲時間延長的百分比</translation>
+<translation id="5316856058059940708">停用大型游標</translation>
 <translation id="5317852436044398288">你可以透過這項政策設定網址模式清單,指定可以使用視窗和分頁擷取功能的網站。
 
       如果未設定這項政策,系統將不考慮在這個擷取等級覆寫網站。
@@ -4127,11 +4215,13 @@
       想進一步瞭解有效的<ph name="URL_LABEL" />模式,請參閱 https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns。這項政策只會根據來源進行比對,因此會忽略網址模式中的路徑。</translation>
 <translation id="5318185076587284965">啟用遠端存取主機所使用的轉送伺服器</translation>
 <translation id="5323200200131319468">在登入畫面上啟用互動朗讀功能</translation>
+<translation id="5323355956693037267">在登入畫面上啟用螢幕小鍵盤</translation>
 <translation id="532848608876725157">啟用 DNS-over-HTTPS,而且可以改用不安全查詢</translation>
 <translation id="5328965694451556034">回報登入/登出情形</translation>
 <translation id="5329018127554115226">系統將停用高效率模式。</translation>
 <translation id="5330684698007383292">允許 <ph name="PRODUCT_FRAME_NAME" /> 處理列出的內容類型</translation>
 <translation id="5331746669335642668"><ph name="PRODUCT_NAME" /> 雲端政策會覆寫平台政策。</translation>
+<translation id="5334501839642146593">一律不傳送指標資料給 Google</translation>
 <translation id="5346587320074666194">禁止在這些網站上存取感應器</translation>
 <translation id="5357039649371478544">設定規則清單,避免 <ph name="PRODUCT_OS_NAME" /> 發生資料外洩的情況。
       複製及貼上資料、傳輸檔案、列印、分享螢幕畫面或擷取螢幕畫面等動作都有可能導致資料外洩。
@@ -4176,6 +4266,7 @@
 <translation id="5371152055157582429">使用者可以自訂新分頁的背景</translation>
 <translation id="5377606826822211923">控管使用者是否可使用來源不受信任的 Android 應用程式</translation>
 <translation id="537786648513450280">控管裝置是否可使用來源不受信任的 Android 應用程式</translation>
+<translation id="5378885577701865339">停用剪貼簿共用功能</translation>
 <translation id="5379858577608862519">指定是否允許透過連接埠轉送功能將流量轉送至 Crostini 容器。
 
       如果將這項政策設為 True 或不予設定,使用者可設定連接埠轉送規則,將流量轉送至 Crostini 容器。
@@ -4213,6 +4304,7 @@
 
       想進一步瞭解有效的<ph name="URL_LABEL" />模式,請參閱 https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns。<ph name="WILDCARD_VALUE" /> 不是這項政策許可的值。</translation>
 <translation id="5393009997533871906">僅對使用者顯示許可清單中的印表機</translation>
+<translation id="5398387276166014955">允許在 Chrome 中插入第三方程式碼</translation>
 <translation id="5401696449591951427">啟用 <ph name="CHROME_DEVICES_LINK" /></translation>
 <translation id="5405289061476885481">設定 <ph name="PRODUCT_OS_NAME" /> 登入畫面可使用的鍵盤配置。
 
@@ -4339,6 +4431,7 @@
       如果將這項政策設為 Disabled 或不予設定,則系統就不會在登入畫面中提示使用者選取用戶端憑證。
       注意:一般來說,這項政策會引起潛在隱私權風險 (假設使用裝置通用的 TPM 安全憑證),並對使用者體驗造成負面影響,因此我們不建議予以設定。</translation>
 <translation id="55057839818162162">允許使用 <ph name="GOOGLE_LENS_PRODUCT_NAME" />相機輔助搜尋功能</translation>
+<translation id="55057971769693300">停用插入點醒目顯示功能</translation>
 <translation id="5508307164752647432">啟用 Kerberos 功能</translation>
 <translation id="5511702823008968136">啟用書籤列</translation>
 <translation id="5512418063782665071">首頁網址</translation>
@@ -4358,6 +4451,7 @@
 <translation id="5526184558582921522">允許向 Quirks Server 發送查詢,並有機會下載硬體專屬設定檔</translation>
 <translation id="5526701598901867718">全部 (不安全)</translation>
 <translation id="5534079385061985566">啟用完整還原功能。</translation>
+<translation id="5534235660122271432">不允許寫入外部儲存空間</translation>
 <translation id="5535256585099022933">設定重新啟動的時間間隔</translation>
 <translation id="5535973522252703021">Kerberos 委派伺服器許可清單</translation>
 <translation id="553806128266843748">布林值標記,表示是否已啟用節流功能。</translation>
@@ -4366,6 +4460,7 @@
 <translation id="555022085242359084">在登入畫面上啟用高對比模式</translation>
 <translation id="555077880566103058">允許所有網站自動執行 <ph name="FLASH_PLUGIN_NAME" /> 外掛程式</translation>
 <translation id="5556607617517096419">Borealis</translation>
+<translation id="5558394213067608844">啟用 wilco 診斷與遙測控制器</translation>
 <translation id="5559079916187891399">這項政策對 Android 應用程式沒有影響。</translation>
 <translation id="5560039246134246593">在 <ph name="PRODUCT_NAME" /> 中擷取變異版本種子時新增參數。
 
@@ -4373,6 +4468,7 @@
 
       如果未指定這項政策,則系統不會修改變異版本種子網址。</translation>
 <translation id="5561811616825571914">在登入畫面自動為這些網站選取用戶端憑證</translation>
+<translation id="5561893881195372931">停用高對比模式</translation>
 <translation id="5563240289883266691">啟用 Linux 應用程式使用情形報告功能</translation>
 <translation id="5565178130821694365">每兩天 (48 小時) 須輸入一次密碼</translation>
 <translation id="5566210228171064229">不論是否使用 PIN 碼,都允許列印</translation>
@@ -4405,6 +4501,7 @@
 
       如果不設定這項政策,在預設情況下,受企業管理的使用者將無法使用即時網路共用功能,其他一般使用者則可使用這項功能。</translation>
 <translation id="5584132346604748282">控制 Android Google 定位服務</translation>
+<translation id="5584609869321980122">第一個使用者活動開始時,才啟動電源管理延遲和工作階段長度限制</translation>
 <translation id="5586942249556966598">不要處理</translation>
 <translation id="5598417829613725146">畫布 (自 90 版開始支援)</translation>
 <translation id="5599461642204007579"><ph name="MS_AD_NAME" /> 管理設定</translation>
@@ -4469,6 +4566,7 @@
 <translation id="5676740747107495269">在登入畫面的系統匣選單中顯示無障礙選項</translation>
 <translation id="5679540979548648200">禁止這部裝置的使用者採用 ADB 側載。如果之前已啟用側載,則強制執行裝置 Powerwash</translation>
 <translation id="5681258683432554972">預設彈出式視窗設定</translation>
+<translation id="5684501593989438324">啟用 Google 助理啟動字詞</translation>
 <translation id="5689430183304951538">預設列印頁面大小</translation>
 <translation id="5691637243722588222">你可以透過這項政策,指定 <ph name="PRODUCT_NAME" /> 支援的 HTTP 驗證機制。
 
@@ -4506,6 +4604,7 @@
       如果將這項政策設為 Disabled,則表示除非使用者停用 PDF 外掛程式,否則系統一律會使用 PDF 外掛程式開啟 PDF 檔案。
 
       如果設定這項政策,使用者將無法在 <ph name="PRODUCT_NAME" /> 中進行變更。如果不設定這項政策,使用者可以選擇是否要從外部開啟 PDF。</translation>
+<translation id="5705055136345677598">停用背景模式</translation>
 <translation id="5705828032077475554">回報 CRD 工作階段</translation>
 <translation id="5708969689202733975">設定允許的快速解鎖模式</translation>
 <translation id="5714563837055244378">允許從 Android 分享內容到網頁應用程式。</translation>
@@ -4570,6 +4669,7 @@
 <translation id="5776485039795852974">每當網站要顯示桌面通知時詢問我</translation>
 <translation id="5783009211970309878">列印頁首和頁尾</translation>
 <translation id="5790763087505467169">減少顯示受管理訪客工作階段的自動啟動通知</translation>
+<translation id="5800329278018669527">停用離線時的網路設定提示</translation>
 <translation id="5802931736499687181">停用加密報告管道</translation>
 <translation id="5806128552675651249">只允許不使用背景圖形的列印模式</translation>
 <translation id="5809210507920527553">控管 Linux 容器 (Crostini) 的設定。</translation>
@@ -4577,10 +4677,12 @@
 <translation id="5814301096961727113">設定互動朗讀在登入畫面的預設狀態</translation>
 <translation id="5815129011704381141">更新完成後自動重新啟動</translation>
 <translation id="5815990343032461023">舊行為:Kiosk Chrome 應用程式會由擴充功能系統透過擴充功能資訊清單中的更新網址進行更新,也會經由快取政策中管理員使用的更新網址完成更新</translation>
+<translation id="5828008775808363753">不要在開機時啟動瀏覽器</translation>
 <translation id="582857022372205358">啟用短邊雙面列印</translation>
 <translation id="5830196507442186669">允許裝置在 <ph name="PRODUCT_OS_NAME" />中使用 <ph name="BOREALIS_NAME" /></translation>
 <translation id="5831286647961890695">啟用 <ph name="PRODUCT_OS_NAME" /> 的自動調節充電模式</translation>
 <translation id="5832274826894536455">已淘汰的政策</translation>
+<translation id="5834583755928064072">禁止使用者變更發布版本</translation>
 <translation id="5835253272509953988">如果將這項政策設為啟用,使用者將可讓 <ph name="PRODUCT_NAME" /> 檢查已輸入的使用者名稱和密碼是否有外洩情況。這項政策一經設定,使用者就無法在 <ph name="PRODUCT_NAME" /> 中變更。如果不設定這項政策,系統可執行憑證外洩檢查,但使用者可停用該功能。
 
       如果安全瀏覽功能的設定為停用 (無論是根據政策設定或使用者自行停用),則一律不會觸發這個行為。如要強制啟用安全瀏覽功能,請使用 <ph name="SAFE_BROWSING_ENABLED_POLICY_NAME" /> 政策或 <ph name="SAFE_BROWSING_PROTETION_LEVEL_POLICY_NAME" /> 政策。</translation>
@@ -4592,6 +4694,7 @@
       如果將這項政策設為停用或不設定,系統會將進階充電模式保持關閉。
 
       使用者無法變更這項設定。</translation>
+<translation id="5838452040629810808">啟用游標醒目顯示功能</translation>
 <translation id="5848438019586925019">用於產生金鑰組的演算法。</translation>
 <translation id="5851248808417680865">使用深色主題</translation>
 <translation id="585270638818921943">禁止使用者使用來源不受信任的 Android 應用程式</translation>
@@ -4678,6 +4781,7 @@
 
       如果將這項政策設為停用,系統會禁止使用 QUIC 通訊協定。</translation>
 <translation id="5921713479449475707">允許透過 HTTP 自動更新下載</translation>
+<translation id="5927903236543424081">強制使用者在使用瀏覽器前登入</translation>
 <translation id="5928633129285224981">控制在列印 PDF 時,<ph name="PRODUCT_NAME" /> 是否會預設使用「以圖片形式列印」選項。
 
       如果將這項政策設為 Enabled,列印 PDF 時,<ph name="PRODUCT_NAME" /> 就會在列印預覽中預設使用「以圖片形式列印」選項。
@@ -4685,6 +4789,13 @@
       如果將這項政策設為 Disabled 或不設定,<ph name="PRODUCT_NAME" /> 就不會在一開始為使用者選擇「以圖片形式列印」選項。使用者可以針對個別 PDF 列印工作選擇是否使用該選項 (如果有)。
 
       對於 <ph name="MS_WIN_NAME" /> 或 <ph name="MAC_OS_NAME" />,這項政策需要一併啟用 <ph name="PRINT_PDF_AS_IMAGE_AVAILABILITY_POLICY_NAME" /> 才會生效。</translation>
+<translation id="5932383301001325587">由於 <ph name="PRODUCT_NAME" /> 已移除傳輸層安全標準 (TLS) 版本遞補功能,因此這項政策已在 M53 中移除。
+
+      當 TLS 握手失敗時,<ph name="PRODUCT_NAME" /> 先前會以較低版本的 TLS 重新嘗試建立連線,以略過 HTTPS 伺服器的錯誤。這項設定可用於指定要在哪個版本停止遞補程序。如果伺服器正確執行版本交涉 (即不中斷連線),系統就不會套用這項設定。無論如何,最終的連線仍必須符合 SSLVersionMin。
+
+      如果未設定這項政策,或將政策值設為「tls1.2」,<ph name="PRODUCT_NAME" /> 就不會再執行這項遞補程序。請注意,這只會影響 <ph name="PRODUCT_NAME" /> 是否會略過發生錯誤的伺服器 (即無法正確交涉版本),系統並不會因此停止支援舊版 TLS。
+
+      假如必須與發生錯誤的伺服器維持相容性,政策值可設為「tls1.1」。這種做法只是權宜之計,正確的做法是盡快修正伺服器錯誤。</translation>
 <translation id="5932767795525445337">這項政策也可用於固定 Android 應用程式。</translation>
 <translation id="5936193585187054065">經加密的 ClientHello (ECH) 是傳輸層安全標準 (TLS) 的擴充功能,可對 ClientHello 的機密資訊欄位進行加密,進一步保障隱私權。
 
@@ -4704,6 +4815,11 @@
 <translation id="5958746038080720143">啟用「網路 Proxy 自動探索」(WPAD) 最佳化功能</translation>
 <translation id="5961137303188584693">裝置內建的 NIC MAC 位址</translation>
 <translation id="5963752574792883406">通訊埠 990 (2022 年 2 月 1 日前可解除封鎖)</translation>
+<translation id="5964583455815172553">如果設定這項政策,就能指定以無訊息方式安裝的隔離網頁應用程式 (IWA) 清單。
+      相較於一般網頁,IWA 這類應用程式有實用的安全屬性,而且是以 Signed Web Bundle 的形式包裝。Signed Web Bundle 的公開金鑰會用於建立可辨識 IWA 的網頁軟體包 ID。
+      這項政策目前僅適用於受管理的訪客工作階段。
+
+      這項政策的每個清單項目都是一個物件,由更新資訊清單 (<ph name="URL_LABEL" />) 和隔離網頁應用程式的網頁軟體包 ID 組成。請務必填寫這兩個欄位。</translation>
 <translation id="5966615072639944554">允許擴充功能使用 Remote Attestation API</translation>
 <translation id="596732417280023843">憑證設定檔的名稱。</translation>
 <translation id="5972538402066550344">允許使用精細回報控制項</translation>
@@ -4759,6 +4875,8 @@
 <translation id="6046615715547751255">禁止使用精細回報控制項</translation>
 <translation id="6048199181629830227">開啟用電尖峰轉移電源管理功能</translation>
 <translation id="6049117606554031363">啟用裝置主機板狀態回報功能</translation>
+<translation id="6050796253724099706">在登入畫面上啟用互動朗讀功能</translation>
+<translation id="605132676434455096">不允許新增設定檔</translation>
 <translation id="6053681087509103368">允許 WebRTC 使用過時的 TLD/DTLS 通訊協定版本</translation>
 <translation id="6058879286588763839">除非已指定會覆寫 <ph name="DEVICE_BATTERY_CHARGE_MODE_POLICY_NAME" /> 的 <ph name="DEVICE_ADVANCED_BATTERY_CHARGE_MODE_ENABLED_POLICY_NAME" />,否則你可以透過設定 <ph name="DEVICE_BATTERY_CHARGE_MODE_POLICY_NAME" />,在支援的裝置上指定充電模式電源管理政策。為了延長電池壽命,這項政策會透過盡可能避免過度使用及損耗電池,以動態方式控制充電狀態。
 
@@ -4814,12 +4932,18 @@
       4:封鎖由安全瀏覽伺服器所標記的惡意檔案,但不封鎖危險檔案類型。這是建議採用的設定。
 
       注意:這些限制適用於由網頁內容以及 [下載連結...] 選單選項所觸發的下載作業,但如果是要下載目前顯示的網頁,或是透過列印選項將網頁儲存為 PDF 檔,則不適用這些限制。如要進一步瞭解安全瀏覽功能,請前往 https://developers.google.com/safe-browsing。</translation>
+<translation id="6119207979839638596">由於 <ph name="PRODUCT_NAME" /> 已移除傳輸層安全標準 (TLS) 最高版本政策,因此這項政策已在 M75 中移除。
+
+      如果這項政策未設定,<ph name="PRODUCT_NAME" /> 會使用預設的最高版本。
+
+      在其他情況下,政策值可設為「tls1.2」或「tls1.3」。如果設定了這項政策,<ph name="PRODUCT_NAME" /> 將不會使用高於指定版本的安全資料傳輸層 (SSL)/傳輸層安全標準 (TLS) 版本。系統將忽略無法辨識的值。</translation>
 <translation id="6123052603197028610">不允許向 Google 伺服器發送擷取時間戳記的查詢</translation>
 <translation id="6130229425991722726">如果將這項政策設為 0 (預設值),你將可存取開發人員工具和 JavaScript 控制台,但無法在由企業政策安裝的擴充功能中進行存取。如果將這項政策設為 1,你將可在所有情況下存取開發人員工具和 JavaScript 控制台,在由企業政策安裝的擴充功能中也能進行存取。如果將這項政策設為 2,你將無法存取開發人員工具,也無法檢查網站元素。
 
       此外,用於開啟開發人員工具或 JavaScript 控制台的鍵盤快速鍵、選單項目或內容選單項目也會停用。
 
       自 <ph name="PRODUCT_NAME" /> 99 版起,這項設定還可控制「查看網頁原始碼」功能的進入點。如果將這項政策設為「DeveloperToolsDisallowed」(值 2),使用者就無法透過鍵盤快速鍵或內容選單存取原始碼檢視畫面。如要全面封鎖原始碼檢視畫面,必須同時將「view-source:*」加入 <ph name="URL_BLOCKLIST_POLICY_NAME" /> 政策中。</translation>
+<translation id="6131803221304830537">停用轉譯器程式碼完整性功能</translation>
 <translation id="6132506775968708399">封鎖第三方 Cookie</translation>
 <translation id="6133088669883929098">允許所有網站使用金鑰產生功能</translation>
 <translation id="6135398260575578389">已啟用強化模式中的安全瀏覽功能。這個模式可提供更完善的安全防護機制,但使用者必須提供更多瀏覽資訊給 Google。</translation>
@@ -4841,6 +4965,7 @@
 
       這項政策需要額外設定才會生效,詳情請參閱 https://support.google.com/chrome/a?p=chrome_enterprise_connector_policies_setting。</translation>
 <translation id="6141402445226505817">一律使用約略時區偵測功能</translation>
+<translation id="6141944295566709543">允許使用者在裝置鎖定時播放媒體</translation>
 <translation id="6142501278956229253">列印光柵化 PDF 的每英寸像素數</translation>
 <translation id="6144046700495610112">如果將這項政策設為啟用,瀏覽器會在首次執行時,從先前的預設瀏覽器中匯入自動填入表單資料。如果將這項政策設為停用或不設定,瀏覽器首次執行時就不會匯入任何自動填入表單資料。
 
@@ -4912,6 +5037,7 @@
 
       注意:這項政策會影響所有音訊輸出,包括語音無障礙功能的音訊。如果使用者需要螢幕閱讀器,請勿停用這項政策。</translation>
 <translation id="6221175752766085998">允許由本機信任錨點核發但缺少 subjectAlternativeName 擴充功能的憑證</translation>
+<translation id="6224070048795197148">允許使用者在不登入的情況下使用瀏覽器</translation>
 <translation id="6224304369267200483">自動允許直接安全金鑰認證的網址/網域</translation>
 <translation id="6230442621691161858">這項功能可讓系統建議值得探索的新內容,包括應用程式和網頁等等。
       如果將這項政策設為 True,系統即會建議可探索的新內容。
@@ -4933,11 +5059,13 @@
      這項政策的用途是讓企業能彈性停用音訊沙箱,避免安全性軟體的設定干擾沙箱運作。</translation>
 <translation id="624818583115864448">通訊埠 554 (2021 年 10 月 15 日前可解除封鎖)</translation>
 <translation id="6252773211180267325">允許使用者執行 <ph name="BOREALIS_NAME" /></translation>
+<translation id="6254498834449523938">不允許使用者略過安全瀏覽警告</translation>
 <translation id="625580680776945310">系統將啟用高效率模式。</translation>
 <translation id="6258658183356534534">控制 User-Agent Client Hints GREASE Update 功能。</translation>
 <translation id="6261643884958898336">回報裝置識別資訊</translation>
 <translation id="6265892395051519509">允許在這些網站上存取感應器</translation>
 <translation id="6266043141694454734">決定是否要使用 Chrome Root Store 和內建的憑證驗證器來驗證伺服器憑證</translation>
+<translation id="6270791075656665237">不允許 QUIC</translation>
 <translation id="6273015149273504999">
       指定要在登入畫面上以無訊息方式 (使用者無需操作) 安裝的應用程式和擴充功能清單;使用者無法解除安裝或停用這些網站。
 
@@ -5064,6 +5192,7 @@
 
       如果不設定這項政策或是清單保留空白,系統將可在 <ph name="PRODUCT_NAME" /> 中存取所有網路通訊協定配置。</translation>
 <translation id="6338982178236723271">回報系統資訊</translation>
+<translation id="6339355882150329269">影片播放時不要將使用者狀態視為閒置</translation>
 <translation id="6352714113109004581">你可以透過這項政策建立網址模式清單,用於指定可要求使用者授予 HID 裝置存取權的網站。
 
       如果未設定這項政策,系統會針對所有網站套用 <ph name="DEFAULT_WEB_HID_GUARD_SETTING_POLICY_NAME" /> 政策 (如果已設定)。否則系統會套用使用者的個人設定。
@@ -5142,6 +5271,7 @@
       這項政策已遭淘汰,請改用 <ph name="USB_DETACHABLE_ALLOWLIST_POLICY_NAME" />。</translation>
 <translation id="6438972408080276697">如果將這項政策設為 True,系統會將政策觸發的主要 Android 應用程式安裝事件報告傳送給 Google。如果將這項政策設為 False,則系統不會擷取任何事件。</translation>
 <translation id="6440051664870270040">允許同時在多個網站中進行瀏覽及開啟彈出式視窗</translation>
+<translation id="6446366416439249472">停用透過行動網路連線執行 Google 雲端硬碟同步功能</translation>
 <translation id="6447948611083700881">備份與還原功能已停用</translation>
 <translation id="6449476513004303784">不允許使用者管理憑證</translation>
 <translation id="6452882999388592166">如果設為啟用,系統會在啟動時載入內建的 CryptoToken 元件擴充功能。如果設為停用或不設定,瀏覽器啟動時就不會載入 CryptoToken。在 M106 中,我們移除了 CryptoToken,因而導致「chrome.runtime」呈現未定義的狀態。這項政策是用於處理網站因此故障的暫時性解決方案。網站不應無條件將「chrome.runtime」視為已定義。</translation>
@@ -5502,6 +5632,7 @@
 <translation id="6763023079133439068">允許缺少 subjectAlternativeName 擴充功能的憑證 (但必須由本機信任錨點核發)</translation>
 <translation id="6766216162565713893">允許網站要求使用者授權存取附近的藍牙裝置</translation>
 <translation id="6770454900105963262">回報運作中資訊站工作階段相關資訊</translation>
+<translation id="6774132787348495175">不允許使用者透過虛擬機器執行 Linux 應用程式</translation>
 <translation id="6782331708811245959">啟用裝置啟動模式回報功能</translation>
 <translation id="6782977971207381602">如果將這項政策設為啟用,裝置即可在 <ph name="PRODUCT_OS_NAME" />上執行虛擬機器。必須啟用 <ph name="VIRTUAL_MACHINES_ALLOWED_POLICY_NAME" /> 和 <ph name="CROSTINI_ALLOWED_POLICY_NAME" />,才能使用 <ph name="PRODUCT_CROSTINI_NAME" />。如果將這項政策設為停用,裝置將無法執行虛擬機器。變更為停用後,系統會開始將這項政策套用到新的虛擬機器,不會套用到已經在執行的虛擬機器。
 
@@ -5561,6 +5692,7 @@
 
           將這項政策設為空白清單或不設定,則表示沒有任何網址可保持全螢幕模式且不顯示通知。</translation>
 <translation id="6833988859168635883">起始頁面、首頁和新分頁</translation>
+<translation id="6835254082476223414">啟用 Linux 虛擬機器備份與還原功能</translation>
 <translation id="6835883744948188639">顯示週期性提示,建議使用者重新啟動瀏覽器</translation>
 <translation id="683688607121170501">如果啟用這項設定,當使用者登入 <ph name="PRODUCT_OS_NAME" />裝置後,將可在瀏覽器視窗的內容區域和 Android 應用程式中切換 Google 帳戶。
 
@@ -5574,6 +5706,7 @@
 <translation id="6841254611279513739">你可以透過這項政策設定僅限彩色列印、僅限單色列印,或是不限制色彩模式。如果不設定這項政策,則等同於不設限制。</translation>
 <translation id="6843008643303282259">理想的上傳速率 (kbit/秒)。</translation>
 <translation id="6843296367238757293">這項政策已遭到淘汰,因此不建議你使用此政策。詳情請參閱 https://support.google.com/chrome/a/answer/7643500</translation>
+<translation id="6845162369344636241">在登入畫面上停用螢幕小鍵盤</translation>
 <translation id="6846126863870444592">這項政策可指定哪些擴充功能在使用 <ph name="PRINTING_API" /> 函式 <ph name="SUBMIT_JOB_FUNCTION" /> 傳送列印工作時,可以略過列印工作確認對話方塊。
 
       如果清單中未包含任何擴充功能,或是未設定清單,則使用者每次使用 <ph name="SUBMIT_JOB_FUNCTION" /> 函式呼叫時,系統都會顯示列印工作確認對話方塊。
@@ -5764,6 +5897,7 @@
 <translation id="7007283257527015835">布林值標記,表示是否應將通訊協定處理常式設為預設值。</translation>
 <translation id="7008308728445338159">已啟用 DNS 攔截檢查功能</translation>
 <translation id="7010006999849135962">針對遠端存取主機啟用無 PIN 碼驗證機制</translation>
+<translation id="7013484314513229844">啟用「連接 AC 電源時啟動」功能</translation>
 <translation id="7016587686120059767">停用訪客模式</translation>
 <translation id="7016736684656067099">如果將這項政策設為 1,所有網站皆可顯示圖片。如果將這項政策設為 2,所有網站都無法顯示圖片。
 
@@ -5812,6 +5946,7 @@
 <translation id="7039815268521168329">在初始設定期間顯示 Google 助理 Voice Match 流程</translation>
 <translation id="7040229947030068419">範例值:</translation>
 <translation id="7044883996351280650">控制 Android 備份與還原服務</translation>
+<translation id="7046997898355294677">顯示隱私權聲明直到使用者關閉為止</translation>
 <translation id="7047495632846973438">指定要檢查或略過螢幕擷取權限政策。</translation>
 <translation id="7055022222176591388">禁止執行過期的 <ph name="FLASH_PLUGIN_NAME" /></translation>
 <translation id="7066292150801784098">禁止遠端使用者在遠端協助工作階段中操控權限較高的視窗</translation>
@@ -5894,6 +6029,7 @@
       在 <ph name="MS_WIN_NAME" /> 上,這項功能僅適用於已加入 <ph name="MS_AD_NAME" /> 網域的執行個體、在 Windows 10 專業版上執行的執行個體,或是已註冊 <ph name="CHROME_BROWSER_CLOUD_MANAGEMENT_NAME" />服務的執行個體。在 <ph name="MAC_OS_NAME" /> 上,這項功能僅適用於透過行動裝置管理 (MDM) 軟體進行管理或透過 MCX 加入網域的執行個體。</translation>
 <translation id="7138678301420049075">其他</translation>
 <translation id="7138762292550697459">控制 JavaScript setTimeout() 函式的最低逾時時間。</translation>
+<translation id="714219487865269980">啟用鍵盤焦點醒目顯示功能</translation>
 <translation id="7145335384492396213">預設 PIN 碼列印模式</translation>
 <translation id="7146198347561863646">如果將這項政策設為啟用或不設定,系統會允許電源管理的 Wake Lock。擴充功能可透過電源管理擴充功能 API 和 ARC 應用程式,要求使用 Wake Lock。
 
@@ -5948,6 +6084,7 @@
 <translation id="7193489339723768342">你可以透過這項政策指定網址清單,系統會將這份清單中的模式與要求網址的安全性來源進行比對。如果模式相符,系統會直接授予音訊擷取裝置存取權限,而不會顯示提示
 
       如果想進一步瞭解有效的<ph name="URL_LABEL" />模式,請參閱 https://cloud.google.com/docs/chrome-enterprise/policies/url-patterns。</translation>
+<translation id="719398790886719721">停用 Linux 虛擬機器的 Root 權限</translation>
 <translation id="7194407337890404814">預設搜尋引擎名稱</translation>
 <translation id="7198134478421755850">擴充功能</translation>
 <translation id="7199304109870655950">這項政策可設定 Chrome 遠端桌面主機的遠端存取選項。
@@ -6077,6 +6214,7 @@
       如果這項政策設為「RemoveLRUIfDormant」,自動清理作業將會根據使用者的近期登入次數,從次數最少的使用者開始,依序把至少 3 個月未登入的使用者從裝置上移除,直到有足夠的可用空間為止。
 
       如果未設定這項政策,自動清理作業將會採用目前的預設內建策略:「RemoveLRUIfDormant」。</translation>
+<translation id="733381360015511815">設定強制安裝的隔離網頁應用程式清單</translation>
 <translation id="7334517274921831425">允許使用者在 <ph name="PRODUCT_OS_NAME" />中使用 <ph name="BOREALIS_NAME" /></translation>
 <translation id="7336785017449297672">控管時鐘和時區設定。</translation>
 <translation id="7336878834592315572">在工作階段期間保留 Cookie</translation>
@@ -6135,6 +6273,7 @@
 <translation id="7412456346709338637">啟用 Thunderbolt/USB4 周邊裝置資料存取權</translation>
 <translation id="7417438464912687020">允許與這部裝置建立遠端存取連線</translation>
 <translation id="7417972229667085380">簡報模式中的閒置延遲時間延長百分比 (已不適用)</translation>
+<translation id="7421230730436851224">一律不在沙箱中處理音訊</translation>
 <translation id="7421483919690710988">設定媒體磁碟快取大小 (以位元組為單位)</translation>
 <translation id="7424751532654212117">停用的外掛程式清單的例外清單</translation>
 <translation id="7426112309807051726">指定是否停用 <ph name="TLS_FALSE_START" /> 最佳化。基於歷史原因,這項政策名為 DisableSSLRecordSplitting。
@@ -6154,6 +6293,7 @@
 <translation id="7458437477941640506">如果作業系統版本比目標版本還新,則不復原至目標版本,且一併停用更新。</translation>
 <translation id="7459601923199346224">控管憑證管理的使用者和裝置政策。</translation>
 <translation id="7459633275230216698">允許顯示檔案選取對話方塊</translation>
+<translation id="7463055558720530430">允許使用者記住 Kerberos 密碼</translation>
 <translation id="7464058117970792805">啟用列印預覽</translation>
 <translation id="7464991223784276288">將來自相符網址的 Cookie 限制在目前的工作階段中</translation>
 <translation id="7468182772656807573">你可以透過這項政策,決定監控網路封包的傳送頻率 (以毫秒為單位)。間隔範圍須介於 30 秒到 24 小時之間。系統會將超出範圍的值調整到範圍內。
@@ -6240,8 +6380,12 @@
 
       https://blog.chromium.org/2021/09/user-agent-reduction-origin-trial-and-dates.html
       </translation>
+<translation id="7515953732107149296">由於 <ph name="PRODUCT_NAME" /> 已移除 RC4,因此這項政策已在 M53 中移除。
+
+      如果未設定這項政策或設為 False,系統將不會啟用傳輸層安全標準 (TLS) 中的 RC4 加密套件。如要啟用這個套件,可將政策值設為 True,以便與過時伺服器維持相容性。這種做法只是權宜之計,正確的做法是重新設定伺服器。</translation>
 <translation id="7519218194072744342">通訊協定處理常式的網址。</translation>
 <translation id="7519251620064708155">允許在這些網站上使用金鑰產生功能</translation>
+<translation id="7521864460386999758">不允許在 Chrome 中插入第三方程式碼</translation>
 <translation id="7529144158022474049">自動更新分散係數</translation>
 <translation id="7529332889403151669">指定當裝置從休眠或全黑螢幕回到一般使用狀態時,是否要顯示全螢幕警示。
 
@@ -6323,6 +6467,7 @@
 <translation id="7613115815080726221">閒置動作執行前的緩衝時間長度 (以毫秒為單位)。如果使用者在這段時間內沒有任何動作,系統就會採取閒置動作</translation>
 <translation id="7614663184588396421">停用的通訊協定機制清單</translation>
 <translation id="7616631530432070402">傳輸層安全標準 (TLS) 中將啟用 3DES 加密套件</translation>
+<translation id="761788785484453836">要求啟用所有網站的網站隔離功能</translation>
 <translation id="7620869951155758729">這項政策可讓你指定用來產生及驗證家長存取碼的設定。請一律使用 |current_config| 來產生存取碼,而且只有在無法透過 |future_config| 驗證存取碼時,才能使用這項設定進行驗證。
       |future_config| 是驗證存取碼時主要使用的設定。只有在 |future_config| 和 |current_config| 兩者都無法用於驗證存取碼時,才能使用 |old_configs| 進行驗證。
 
@@ -6394,6 +6539,11 @@
 <translation id="7701341006446125684">設定應用程式和擴充功能快取大小 (以位元組為單位)</translation>
 <translation id="770339941914297201">新行為:Kiosk Chrome 應用程式只會透過政策中的更新網址進行更新</translation>
 <translation id="7703737669292992839">禁止顯示檔案選取對話方塊</translation>
+<translation id="7708934468069982537"><ph name="PRODUCT_NAME" /> 已移除 DHE,因此這項政策已在 M58 中移除。
+
+      如果未設定這項政策或設為 False,系統將不會啟用傳輸層安全標準 (TLS) 中的 DHE 加密套件。如要啟用 DHE 加密套件,政策值可設為 True,以便與過時伺服器維持相容性。這種做法只是權宜之計,正確的做法是重新設定伺服器。
+
+      建議你讓伺服器改用 ECDHE 加密套件。如果無法使用這個套件,請確保啟用的加密套件使用 RSA 金鑰交換機制。</translation>
 <translation id="7709470712369261710">不要使用 Google 服務提供自動產生的圖片說明</translation>
 <translation id="7712109699186360774">每當有任何網站要使用攝影機和/或麥克風時詢問我</translation>
 <translation id="7713608076604149344">下載限制</translation>
@@ -6510,12 +6660,15 @@
 <translation id="782661371433719637">不允許任何網站透過 File System API 要求讀取檔案及目錄</translation>
 <translation id="7827127381981620448">平台應用程式</translation>
 <translation id="7833148823006528332">Android 應用程式的 ID,例如 Gmail 的 ID 為「com.google.android.gm」</translation>
+<translation id="7835218570504220753">停用自動點擊功能</translation>
 <translation id="7839180815400079700">如果已啟用 <ph name="DEVICE_POWER_PEAK_SHIFT_ENABLED_POLICY_NAME" />,你可以透過 <ph name="DEVICE_POWER_PEAK_SHIFT_DAY_CONFIG_POLICY_NAME" /> 設定電源尖峰轉移每日配置。
 
       如果不設定這項政策,系統會停用電源尖峰轉移。
 
       在 <ph name="START_TIME_FIELD_NAME" />、<ph name="END_TIME_FIELD_NAME" /> 和 <ph name="CHARGE_START_TIME_FIELD_NAME" /> 的 <ph name="MINUTE_FIELD_NAME" /> 欄位中,有效值為 0、15、30、45。</translation>
+<translation id="7840258755683573560">啟用自動點擊功能</translation>
 <translation id="7841880500990419427">備用的最低 TLS 版本</translation>
+<translation id="7845130996290850593">啟用 Kerberos</translation>
 <translation id="7846952520291088817">會在 WebRTC ICE 候選項目中顯示本機 IP 的網址</translation>
 <translation id="7848641140449742406">OS 設定</translation>
 <translation id="7850846808758624237">如果將這項政策設為啟用,瀏覽器會在首次執行時,從先前的預設瀏覽器中匯入首頁。如果將這項政策設為停用或不設定,瀏覽器首次執行時不會匯入首頁。
@@ -6526,6 +6679,7 @@
           如果啟用這項政策,系統會啟用 Kerberos 功能。你可以透過「設定 Kerberos 帳戶」政策或 Kerberos 設定頁面中的「Kerberos 帳戶」設定來新增 Kerberos 帳戶。
 
           如果將這項政策設為停用或不設定,系統會停用「Kerberos 帳戶」設定。使用者無法新增 Kerberos 帳戶,也無法使用 Kerberos 驗證。系統會刪除所有現有的 Kerberos 帳戶和所有已儲存的密碼。</translation>
+<translation id="7853140303943875314">啟用自動登入規避</translation>
 <translation id="7863947545897944083">在登入畫面上啟用高對比模式無障礙功能。
 
           如果將這項政策設為 True,系統將一律在登入畫面上啟用高對比模式。
@@ -6720,6 +6874,12 @@
 <translation id="8078297389450285582">如果將這項政策設為啟用或不設定,系統會開啟智慧調光模式,並可延後螢幕調暗時間。一旦延後螢幕調暗時間,螢幕關閉、螢幕鎖定和閒置狀態的延遲時間也會隨之調整,以維持與原先設定相同的間隔時間。
 
       如果將這項政策設為停用,智慧調光模式並不會影響螢幕調暗設定。</translation>
+<translation id="8079544387901313374">請注意,這項政策已淘汰,並在 <ph name="PRODUCT_OS_NAME" /> 版本 88 中移除。系統已不再支援公開工作階段。請改用 <ph name="DEVICE_LOCAL_ACCOUNTS_POLICY_NAME" /> 設定受管理的訪客工作階段。
+      如果將這項政策設為 False,受管理的訪客工作階段運作模式會與標準的「公開工作階段」相同,詳情請參閱 https://support.google.com/chrome/a/answer/3017014。
+
+      如果將這項政策設為 True 或未設定,受管理的訪客工作階段就會採用「受管理的工作階段」運作模式,而且會比一般的「公開工作階段」少了許多限制。
+
+      如果設定了這項政策,使用者就無法變更或覆寫。</translation>
 <translation id="8080200590486938727">停用外掛程式尋找工具</translation>
 <translation id="8089200718228084417">啟用已淘汰的 Privet 列印功能</translation>
 <translation id="8089236320223488328">判別不安全的網站是否能向任何網路端點傳送要求時,使用預設行為</translation>
@@ -6757,6 +6917,7 @@
 <translation id="8133152694354699657">如果將這項政策設為 True 或不設定,使用者將可使用「輕觸搜尋」功能,並且可以啟用或停用這項功能。
 
       如果將這項政策設為 False,系統會完全停用「輕觸搜尋」功能。</translation>
+<translation id="81354521512895891">在登入畫面上啟用高對比模式</translation>
 <translation id="8136345780578030573">啟用 First-Party Sets 功能。</translation>
 <translation id="8136906469922284163">如果將這項政策設為 True,頁面卸載時將可顯示彈出式視窗。
 
@@ -6806,13 +6967,17 @@
           設定這項政策後,使用者即無法變更或覆寫。
 
           如果不設定這項政策,系統預設會停用游標醒目顯示功能,但使用者隨時可以啟用這項功能。</translation>
+<translation id="8160572976152509481">僅允許使用者透過實體電源按鈕關閉裝置</translation>
 <translation id="8164144100557223371">停用瀏覽器實驗功能工具列進入點</translation>
 <translation id="8164687848393015214">如果將這項政策設為啟用,系統會將監控網路封包 (<ph name="HEARTBEATS_TERM" />) 傳送到可監控上線狀態的管理伺服器,讓伺服器偵測裝置是否處於離線狀態。
 
       如果將這項政策設為停用或不設定,系統不會傳送任何封包。</translation>
 <translation id="8169452762291746260">停用裝置健康狀態監控功能</translation>
+<translation id="8171262216089271568">在登入畫面上啟用大型游標</translation>
 <translation id="8171924760436219650">在登入畫面上將滑鼠的主要按鈕切換為右鍵</translation>
+<translation id="81724933026241365">允許使用者透過關機圖示或實體電源按鈕關閉裝置</translation>
 <translation id="8173864651667424191">在 PDF 文件的列印預覽畫面中,「以圖片形式列印」是預設選項 (如果有)。</translation>
+<translation id="8175922758834816585">在登入畫面上啟用互動朗讀功能,並允許使用者暫時停用</translation>
 <translation id="8176035528522326671">僅允許企業使用者成為多重設定檔的主要使用者 (受企業管理的使用者的預設行為)</translation>
 <translation id="8179161412673077784">禁止具有濫用行為的網站開啟新視窗或新分頁</translation>
 <translation id="8183108371184777472">禁止啟動瀏覽器視窗</translation>
@@ -7004,6 +7169,7 @@
 <translation id="8337961007759352651">工作站 (網路工作站、Service Worker 等) 指令碼需要使用 JavaScript MIME 類型,例如 <ph name="MIMETYPE_TEXT_JAVASCRIPT" />。系統會拒絕使用舊版 MIME 類型的工作站指令碼,例如 <ph name="MIMETYPE_TEXT_ASCII" />。</translation>
 <translation id="8339089771335211509">WebRTC 只會使用連線至公開網際網路的介面,而且不會使用私人 IP 位址進行連線。</translation>
 <translation id="8339420913453596618">已停用雙重驗證</translation>
+<translation id="8341175887542205077">停用 Linux 虛擬機器備份與還原功能</translation>
 <translation id="8344454543174932833">第一次執行時從預設瀏覽器匯入書籤</translation>
 <translation id="8347993687936322631">請注意,這項政策已遭淘汰,並將在 <ph name="PRODUCT_OS_NAME" />第 85 版中移除。請改用 <ph name="POWER_MANAGEMENT_IDLE_SETTINGS_POLICY_NAME" />。
 
@@ -7020,6 +7186,7 @@
 <translation id="8367209241899435947">在 Windows 裝置上啟用 Chrome 清理功能</translation>
 <translation id="8367473200119029349">雲端報告</translation>
 <translation id="8367488518695804749">不允許任何網站顯示彈出式視窗</translation>
+<translation id="8369359426872560378">停用「連接 AC 電源時啟動」功能</translation>
 <translation id="8369602308428138533">在 AC 供電環境下執行時的螢幕關閉延遲時間</translation>
 <translation id="8371178326720637170">啟用受管理擴充功能以使用 Enterprise Hardware Platform API</translation>
 <translation id="8373176843640227330">停用裝置藍牙資訊回報功能</translation>
@@ -7170,6 +7337,7 @@
       搭配 <ph name="DEVICE_ROLLBACK_TO_TARGET_VERSION_POLICY_NAME" /> 使用時,裝置版本可還原為較舊的特定版本。
 
       警告:我們不建議設定版本限制,因為這可能導致使用者無法接收軟體更新和重大安全性修正項目。限制裝置更新至特定版本可能會讓使用者面臨風險。</translation>
+<translation id="8519617069657262768">啟用 Google 雲端硬碟同步功能</translation>
 <translation id="8520064498689833152">強制啟用 Google 搜尋的安全搜尋功能和中度以上的 YouTube 嚴格篩選模式</translation>
 <translation id="8524334245528364388">含有列印伺服器清單的 JSON 檔案的網址。</translation>
 <translation id="8525526490824335042">Linux 容器</translation>
@@ -7194,6 +7362,7 @@
 
           如果 <ph name="DEFAULT_JAVA_SCRIPT_JIT_SETTING_POLICY_NAME" /> 中已設定政策,未設定這項政策的網站就會套用該政策;若否,則網站會啟用 JavaScript JIT。</translation>
 <translation id="8543108307976719751">禁止與這部裝置建立遠端存取連線</translation>
+<translation id="8543975123557636331">啟用音訊輸出</translation>
 <translation id="8544375438507658205">預設 <ph name="PRODUCT_FRAME_NAME" /> 的 HTML 轉譯器</translation>
 <translation id="8544465954173828789">允許將簡訊從手機同步至 Chromebook。</translation>
 <translation id="8549906780629620346">啟用帳戶救援服務</translation>
@@ -7238,6 +7407,7 @@
           如果不設定這項政策,系統會使用預設時間長度。
 
           指定政策值時需以毫秒為單位。</translation>
+<translation id="859937827887158048">不允許自動點對點下載更新</translation>
 <translation id="8603454805657060638">你可以透過這項政策,讓系統管理員變更將裝置連結至座架時的 MAC (媒體存取權控管) 位址。將座架連結至部分裝置型號時,根據預設,裝置的指定座架 MAC 位址可協助在乙太網路上識別裝置。
 
       如果選取了「DeviceDockMacAddress」或不設定這項政策,系統會使用裝置的指定座架 MAC 位址。
@@ -7267,6 +7437,7 @@
       如果將這項政策設為停用,使用者將無法存取這些功能。
       如果不設定這項政策,在預設情況下,Chrome OS 上受企業管理的使用者將無法存取這個模式,其他作業系統上的一般使用者則可存取這個模式。</translation>
 <translation id="8626826495474944836">要求針對所有網站啟用網站隔離功能</translation>
+<translation id="8631314130868563649">停用尖峰轉移電源管理</translation>
 <translation id="8631434304112909927">到第 <ph name="UNTIL_VERSION" /> 版為止</translation>
 <translation id="8631437968147930597"><ph name="PRODUCT_OS_NAME" />螢幕鎖定畫面上允許的筆記應用程式清單</translation>
 <translation id="8633550872001751090">允許將 <ph name="PRODUCT_NAME" /> 資料納入備份內容</translation>
@@ -7286,6 +7457,7 @@
 <translation id="8656110680728938054">啟用隨選朗讀功能</translation>
 <translation id="8659843732895043951">允許這些網站使用剪貼簿</translation>
 <translation id="8661297125441579970">不允許資料遷移功能和 ARC。</translation>
+<translation id="8661980316738569557">啟用高對比模式</translation>
 <translation id="8664285601317301180">這項政策可控管列印工作中的 <ph name="CLIENT_INFO_IPP_ATTRIBUTE" /> <ph name="IPP_PROTOCOL" /> (<ph name="INTERNET_PRINTING_PROTOCOL" />) <ph name="IPP_ATTRIBUTE" />值。
 
       如果將這項政策設為字串,每個列印工作中就會新增額外的 <ph name="CLIENT_INFO_IPP_ATTRIBUTE" /> 項目。替換變數後,系統會將新增的 <ph name="CLIENT_INFO_IPP_ATTRIBUTE" /> 項目 <ph name="CLIENT_NAME_IPP_ATTRIBUTE" /> 成員設為政策值。支援的變數包括 <ph name="DIRECTORY_ID_PLACEHOLDER" />、<ph name="SERIAL_NUMBER_PLACEHOLDER" />、<ph name="ASSET_ID_PLACEHOLDER" />、<ph name="ANNOTATED_LOCATION_PLACEHOLDER" />。系統不會替換不支援的預留位置變數。
@@ -7349,6 +7521,7 @@
 
       如果將這項政策設為 False 或未設定,系統將不會回報這項資訊。
       如果設為 True,系統會回報裝置的藍牙資訊。</translation>
+<translation id="8700633400000170881">左鍵為主要按鈕</translation>
 <translation id="8703378568562190813">你可以透過這項政策建立網址模式清單,指定要授予哪些網頁應用程式特定類型檔案的存取權。
 
       如果未設定這項政策,系統會針對所有網頁應用程式套用 <ph name="DEFAULT_FILE_HANDLING_GUARD_SETTING_POLICY_NAME" /> 政策 (如果已設定);否則系統會套用使用者的個人設定。
@@ -7377,6 +7550,7 @@
       無論剖析模式為何,「http://example.com/」、「http://subdomain.example.com/」和「http://acme.com/abc」都是相符的結果。
 
       不過,「http://notexample.com/」、「http://example.com.invalid.com/」、「http://example.comabc/」只有在「Default」模式下才會是相符的結果;「http://acme.com/ABC」則只會在「IESiteListMode」模式下才會是相符的結果。</translation>
+<translation id="8734543507835977857">工作階段開始時,才啟動電源管理延遲和工作階段長度限制</translation>
 <translation id="8736538322216687231">強制執行低度的 YouTube 嚴格篩選模式</translation>
 <translation id="8744844164152340112">控管在 OOBE 和工作階段期間用於算繪 UI 的主題 (深色/淺色/自動)。
       自動模式會在日出和日落時,自動在深色和淺色主題間切換。
@@ -7440,6 +7614,7 @@
 <translation id="8816370949847593408">視淘汰實施狀態而定,系統可能會不允許執行 Chrome 應用程式。</translation>
 <translation id="8818768076343557335">連上網路時一律預測網路動作 (行動網路除外)。
           (在版本 50 中已不適用,在版本 52 中已遭移除。在 52 以上版本中,如果設定值為 1,系統會視為 0 - 連上網路時一律預測網路動作。)</translation>
+<translation id="8820434908768990758">啟用所有網站的網站隔離功能,但允許使用者停用</translation>
 <translation id="8821678641132607468">如果將這項政策設為啟用,瀏覽器會在首次執行時,從先前的預設瀏覽器中匯入瀏覽記錄。如果將這項政策設為停用或不設定,瀏覽器首次執行時不會匯入任何瀏覽記錄。
 
       使用者可以觸發匯入對話方塊,瀏覽器將根據這項政策的值,來勾選或取消勾選瀏覽記錄的核取方塊。</translation>
@@ -7511,6 +7686,7 @@
 <translation id="8880294585549584028">允許這些網站對檔案和目錄的寫入權限</translation>
 <translation id="8882006618241293596">禁止在這些網站上執行 <ph name="FLASH_PLUGIN_NAME" /> 外掛程式</translation>
 <translation id="8882255181490012651">禁止 Phone Hub 的使用者存取手機上最近拍攝的相片和影片</translation>
+<translation id="8882307005437314052">在登入畫面上啟用螢幕小鍵盤,並允許使用者暫時停用</translation>
 <translation id="8887709920496070892">顯示警告對話方塊前的閒置時間長度 (以毫秒為單位)。如果使用者在這段時間內沒有任何動作,系統就會顯示警告對話方塊</translation>
 <translation id="8890438048579188548">隱藏 <ph name="CLOUD_PRINT_NAME" />淘汰警告訊息</translation>
 <translation id="8891334958985336685">停用裝置系統資訊回報功能</translation>
@@ -7539,6 +7715,7 @@
 <translation id="8919100556245407184">將使用者登出前的緩衝天數。如果使用者未在自動更新期限訊息顯示後將 <ph name="PRODUCT_OS_NAME" />版本更新為指定的 <ph name="CHROMEOS_VERSION_PROPERTY_NAME" /> 版,系統會在設定的天數過後將該使用者登出</translation>
 <translation id="8919369436496201075">允許裝置接收長期支援更新</translation>
 <translation id="8921669704201370845">為受管理的設定檔啟用 <ph name="PRODUCT_NAME" /> 雲端報告功能</translation>
+<translation id="8922231993239705844">停用游標醒目顯示功能</translation>
 <translation id="8922494933893518624">強制在不安全內容中啟用 WebSQL。</translation>
 <translation id="8930064580550462145">透過螢幕鎖定畫面登入時,<ph name="PRODUCT_OS_NAME" />可以透過伺服器進行線上驗證,或使用快取密碼進行離線驗證。
 
@@ -7585,6 +7762,7 @@
 <translation id="8983539044126123594">允許使用其他 Google 帳戶登入</translation>
 <translation id="8985219286836584291">啟用裝置系統資訊回報功能</translation>
 <translation id="8992176907758534924">不允許任何網站顯示圖片</translation>
+<translation id="8994850249590725417">不顯示隱私權聲明</translation>
 <translation id="8994954504552592260">允許將 <ph name="MS_AD_NAME" /> 管理的裝置遷移至雲端管理服務。這項政策允許遠端遷移公司中的多部裝置,不用實際接觸即可開始遷移。此外,遷移作業會盡可能提供充足資訊,方便使用者掌握進度。
 
       如果啟用這項政策,且註冊 ID 已上傳至 DMServer,系統會觸發遠端裝置的 Powerwash 功能。
@@ -7785,7 +7963,9 @@
 
       這項政策僅是暫時性措施,我們會在日後的 <ph name="PRODUCT_NAME" /> 版本中予以移除。待這項政策移除後,<ph name="PRODUCT_NAME" /> 便一律可以查詢其他 DNS 類型。</translation>
 <translation id="9167719789236691545">禁止在 <ph name="PRODUCT_OS_NAME" />的「檔案」應用程式中使用 Google 雲端硬碟</translation>
+<translation id="9185963199234034321">在登入畫面上啟用高對比模式,並允許使用者暫時停用</translation>
 <translation id="9187743794267626640">停用外部儲存裝置掛載功能</translation>
+<translation id="9190022798664427644">啟用單聲道音訊模式</translation>
 <translation id="9190456586252617675">這項政策可控管 Google 助理入門使用體驗的模式。
 
       如果不設定這項政策或設為 <ph name="ASSISTANT_ONBOARDING_MODE_DEFAULT" />,系統會使用 Google 助理入門使用體驗的預設模式。
@@ -7825,6 +8005,7 @@
       如果不設定這項政策,<ph name="PRODUCT_NAME" /> 73 至 75 版會啟用這項政策,<ph name="PRODUCT_NAME" /> 76 和 77 版會停用這項政策。</translation>
 <translation id="93985900824506396">傳輸層安全標準 (TLS) 中將停用 3DES 加密套件</translation>
 <translation id="940706688964479124">指定下載後應自動開啟的檔案類型清單</translation>
+<translation id="942977875497446094">在開機時自動啟動瀏覽器</translation>
 <translation id="943865157632139008">這項政策可讓你在安裝 <ph name="PRODUCT_FRAME_NAME" />後,設定預設的 HTML 算繪器。
       系統在預設設定下,會允許主機瀏覽器進行算繪,但是你可以覆寫預設設定,改由 <ph name="PRODUCT_FRAME_NAME" />算繪 HTML 網頁。</translation>
 <translation id="944817693306670849">設定磁碟快取大小</translation>
@@ -7854,6 +8035,7 @@
 <translation id="981346395360763138">Google 定位服務已停用</translation>
 <translation id="982497069985795632">啟用拼字檢查</translation>
 <translation id="983256325512298435">定義一組通訊協定清單,其中的通訊協定無須提示使用者,即可啟動已列出來源的外部應用程式</translation>
+<translation id="987261962216071510">僅允許透過瀏覽器訪客模式登入</translation>
 <translation id="991560005425213776">將使用者名稱和檔案名稱傳送到原生印表機</translation>
 <translation id="99202634486128833">如果將這項政策設為 CopyCaCerts,ARC 應用程式可以使用所有已安裝 ONC 且具有 <ph name="WEB_TRUSTED_BIT" /> 的 CA 憑證。
 
diff --git a/components/reporting/README.md b/components/reporting/README.md
index 2a34368..c34535f5 100644
--- a/components/reporting/README.md
+++ b/components/reporting/README.md
@@ -13,7 +13,7 @@
     Daemon for encryption and storage of reports.
 
 If you'd like to begin using ERP within Chrome please check the comment in
-[//components/reporting/client/report_queue_provider.h](https:://chromium.googlesource.com/chromium/src/+/master/components/reporting/client/report_queue_provider.h#25).
+[//components/reporting/client/report_queue_provider.h](https:://chromium.googlesource.com/chromium/src/+/main/components/reporting/client/report_queue_provider.h#25).
 
 ### Run Unit Tests
 
diff --git a/components/safe_browsing/core/browser/tailored_security_service/tailored_security_outcome.h b/components/safe_browsing/core/browser/tailored_security_service/tailored_security_outcome.h
index 24fc103b..6443ec2d 100644
--- a/components/safe_browsing/core/browser/tailored_security_service/tailored_security_outcome.h
+++ b/components/safe_browsing/core/browser/tailored_security_service/tailored_security_outcome.h
@@ -15,7 +15,8 @@
   kSettings = 2,
   kShown = 3,
   kRejected = 4,
-  kMaxValue = kRejected,
+  kClosedByAnotherDialog = 5,
+  kMaxValue = kClosedByAnotherDialog,
 };
 
 #endif  // COMPONENTS_SAFE_BROWSING_CORE_BROWSER_TAILORED_SECURITY_SERVICE_TAILORED_SECURITY_OUTCOME_H_
diff --git a/components/safe_browsing/core/browser/tailored_security_service/tailored_security_service.cc b/components/safe_browsing/core/browser/tailored_security_service/tailored_security_service.cc
index d4dd165..f0d108c 100644
--- a/components/safe_browsing/core/browser/tailored_security_service/tailored_security_service.cc
+++ b/components/safe_browsing/core/browser/tailored_security_service/tailored_security_service.cc
@@ -412,13 +412,17 @@
   }
 
   if (is_enabled && !IsEnhancedProtectionEnabled(*prefs())) {
-    ShowSyncNotification(true);
+    for (auto& observer : observer_list_) {
+      observer.OnSyncNotificationMessageRequest(true);
+    }
   }
 
   if (!is_enabled && IsEnhancedProtectionEnabled(*prefs()) &&
       prefs()->GetBoolean(
           prefs::kEnhancedProtectionEnabledViaTailoredSecurity)) {
-    ShowSyncNotification(false);
+    for (auto& observer : observer_list_) {
+      observer.OnSyncNotificationMessageRequest(false);
+    }
   }
 }
 
diff --git a/components/safe_browsing/core/browser/tailored_security_service/tailored_security_service.h b/components/safe_browsing/core/browser/tailored_security_service/tailored_security_service.h
index 9f086c2..1f73faf6 100644
--- a/components/safe_browsing/core/browser/tailored_security_service/tailored_security_service.h
+++ b/components/safe_browsing/core/browser/tailored_security_service/tailored_security_service.h
@@ -143,12 +143,6 @@
   // callback.
   virtual void MaybeNotifySyncUser(bool is_enabled, base::Time previous_update);
 
-  // Needs to be overridden by subclass to show sync notification. Sends a
-  // trigger to tell system to show sync notification which is a visual message
-  // prompt which informs user of their sync status between Account-level
-  // Enhanced Safe Browsing and Chrome-level Enhanced Safe Browsing.
-  virtual void ShowSyncNotification(bool is_enabled) = 0;
-
   PrefService* prefs() { return prefs_; }
 
   raw_ptr<signin::IdentityManager> identity_manager() {
diff --git a/components/safe_browsing/core/browser/tailored_security_service/tailored_security_service_observer.h b/components/safe_browsing/core/browser/tailored_security_service/tailored_security_service_observer.h
index f7ef7d0e..0c865096 100644
--- a/components/safe_browsing/core/browser/tailored_security_service/tailored_security_service_observer.h
+++ b/components/safe_browsing/core/browser/tailored_security_service/tailored_security_service_observer.h
@@ -9,7 +9,7 @@
 
 namespace safe_browsing {
 
-// Observes TailoredSecurityService bit.
+// Observes TailoredSecurityService bit and handles notification calls.
 class TailoredSecurityServiceObserver {
  public:
   // Called when the Tailored Security bit changed to |enabled|, and provides
@@ -17,6 +17,9 @@
   virtual void OnTailoredSecurityBitChanged(bool enabled,
                                             base::Time previous_update) {}
 
+  // Called when sync notification message needs to be shown.
+  virtual void OnSyncNotificationMessageRequest(bool is_enabled) {}
+
   // Called when the service is being destroyed.
   virtual void OnTailoredSecurityServiceDestroyed() {}
 
diff --git a/components/safe_browsing/core/common/features.cc b/components/safe_browsing/core/common/features.cc
index 6bbcb9c..52eba8b 100644
--- a/components/safe_browsing/core/common/features.cc
+++ b/components/safe_browsing/core/common/features.cc
@@ -148,7 +148,7 @@
 
 BASE_FEATURE(kTailoredSecurityDesktopNotice,
              "TailoredSecurityDesktopNotice",
-             base::FEATURE_DISABLED_BY_DEFAULT);
+             base::FEATURE_ENABLED_BY_DEFAULT);
 
 BASE_FEATURE(kTailoredSecurityIntegration,
              "TailoredSecurityIntegration",
diff --git a/components/search_engines/template_url.cc b/components/search_engines/template_url.cc
index 6d847472..fd5245d 100644
--- a/components/search_engines/template_url.cc
+++ b/components/search_engines/template_url.cc
@@ -1744,12 +1744,8 @@
     const GURL& image_search_url) const {
   if (!IsSideImageSearchSupported())
     return image_search_url;
-  std::string value;
-  if (!net::GetValueForKeyInQuery(image_search_url, side_image_search_param(),
-                                  &value))
-    return image_search_url;
-  return net::AppendOrReplaceQueryParameter(image_search_url,
-                                            side_image_search_param(), "");
+  return net::AppendOrReplaceQueryParameter(
+      image_search_url, side_image_search_param(), absl::nullopt);
 }
 
 void TemplateURL::CopyFrom(const TemplateURL& other) {
diff --git a/components/search_engines/template_url_unittest.cc b/components/search_engines/template_url_unittest.cc
index 3fb2505..f8f30d4 100644
--- a/components/search_engines/template_url_unittest.cc
+++ b/components/search_engines/template_url_unittest.cc
@@ -2271,14 +2271,13 @@
   // Removes the param if the provided URL has it.
   result = url.RemoveSideImageSearchParamFromURL(
       GURL("http://foo.com/?q=123&sideimagesearch=1"));
-  EXPECT_EQ("http://foo.com/?q=123&sideimagesearch=", result.spec());
+  EXPECT_EQ("http://foo.com/?q=123", result.spec());
 
   // Removes the first instance of the query param that exist in the URL. This
   // should not happen but just asserting for expected behavior.
   result = url.RemoveSideImageSearchParamFromURL(
       GURL("http://foo.com/?q=123&sideimagesearch=1&sideimagesearch=2"));
-  EXPECT_EQ("http://foo.com/?q=123&sideimagesearch=&sideimagesearch=2",
-            result.spec());
+  EXPECT_EQ("http://foo.com/?q=123&sideimagesearch=2", result.spec());
 }
 
 TEST_F(TemplateURLTest, ImageSearchBrandingLabel) {
diff --git a/components/segmentation_platform/.style.yapf b/components/segmentation_platform/.style.yapf
new file mode 100644
index 0000000..557fa7b
--- /dev/null
+++ b/components/segmentation_platform/.style.yapf
@@ -0,0 +1,2 @@
+[style]
+based_on_style = pep8
diff --git a/components/segmentation_platform/PRESUBMIT.py b/components/segmentation_platform/PRESUBMIT.py
new file mode 100644
index 0000000..f9e1f4d
--- /dev/null
+++ b/components/segmentation_platform/PRESUBMIT.py
@@ -0,0 +1,75 @@
+# Copyright 2022 The Chromium Authors
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+"""This presubmit ensures that all known test suites in the current component
+are included in the launcher filter file."""
+
+from typing import Dict, List
+
+USE_PYTHON3 = True
+
+TOOL_PATH = 'tools/testing/launcher_filter_file.py'
+
+
+def GetToolPathRelativeToRepositoryRoot(input_api) -> str:
+    # Returns the path to the launcher_filter_file.py tool, relative to the
+    # chromium src directory to simplify copy-paste of a command on errors.
+    presubmit_local_path = input_api.PresubmitLocalPath()
+    repository_root = input_api.change.RepositoryRoot()
+    common_path = input_api.os_path.commonpath(
+        [repository_root, presubmit_local_path])
+    component_relative_path = presubmit_local_path[len(common_path) + 1:]
+    return input_api.os_path.join(component_relative_path, TOOL_PATH)
+
+
+def FetchLauncherFilterFileData(input_api, cwd: str) -> Dict[str, str]:
+    # Fetches the actual and expected filter file content so they can be
+    # compared. Returns a dictionary that contains 'expected' and 'actual' as
+    # comparable strings.
+    try:
+        old_sys_path = input_api.sys.path
+        cwd = input_api.PresubmitLocalPath()
+        input_api.sys.path += [input_api.os_path.join(cwd, 'tools')]
+        from testing import launcher_filter_file as lff
+        ret = {}
+        ret['expected'] = lff.GetExpectedLauncherFilterFileContent()
+        ret['actual'] = lff.GetActualLauncherFilterFileContent()
+        return ret
+    finally:
+        input_api.sys.path = old_sys_path
+
+
+def GetPylintConfiguration(input_api, output_api) -> List:
+    disabled_warnings = [
+        'C0415',  # import-outside-toplevel
+    ]
+    return input_api.canned_checks.RunPylint(
+        input_api,
+        output_api,
+        version='2.7',
+        disabled_warnings=disabled_warnings)
+
+
+def _CommonChecks(input_api, output_api):
+    output = GetPylintConfiguration(input_api, output_api)
+    cwd = input_api.PresubmitLocalPath()
+    tool_help_path = GetToolPathRelativeToRepositoryRoot(input_api)
+
+    filter_file_data = FetchLauncherFilterFileData(input_api, cwd)
+
+    if filter_file_data['expected'] == filter_file_data['actual']:
+        return output
+
+    output.extend(
+        output_api.PresubmitPromptWarning(
+            'The test launcher filter file does not match the ' +
+            f'available tests.\n\nPlease run:\n{tool_help_path}', []))
+    return output
+
+
+def CheckChangeOnUpload(*args):
+    return _CommonChecks(*args)
+
+
+def CheckChangeOnCommit(*args):
+    return _CommonChecks(*args)
diff --git a/components/segmentation_platform/README.md b/components/segmentation_platform/README.md
index 7fbe54b..395a7e7 100644
--- a/components/segmentation_platform/README.md
+++ b/components/segmentation_platform/README.md
@@ -41,7 +41,5 @@
 
 To update the list of tests, you can run the following command:
 ```
-for test in $(git grep -E '^TEST(_F)?\(' -- components/segmentation_platform/**.cc | \
-  cut -d"(" -f 2 | cut -d"," -f 1 | sort | uniq); do echo ${test}.* ; done > \
-    components/segmentation_platform/components_unittests.filter
+components/segmentation_platform/tools/testing/launcher_filter_file.py
 ```
diff --git a/components/segmentation_platform/components_unittests.filter b/components/segmentation_platform/components_unittests.filter
index c96fdad2..81a3c3b 100644
--- a/components/segmentation_platform/components_unittests.filter
+++ b/components/segmentation_platform/components_unittests.filter
@@ -9,6 +9,7 @@
 FeatureAggregatorImplTest.*
 FeatureListQueryProcessorTest.*
 FeedUserModelTest.*
+FrequentFeatureUserModelTest.*
 HistogramSignalHandlerTest.*
 HistoryDelegateImplTest.*
 IntentionalUserModelTest.*
@@ -25,6 +26,11 @@
 QueryTilesModelTest.*
 ResumeHeavyUserModelTest.*
 SearchUserModelTest.*
+SegmentInfoCacheTest.*
+SegmentInfoDatabaseTest.*
+SegmentResultProviderTest.*
+SegmentScoreProviderTest.*
+SegmentSelectorTest.*
 SegmentationModelExecutorTest.*
 SegmentationPlatformDummyUkmManagerTest.*
 SegmentationPlatformServiceImplEmptyConfigTest.*
@@ -32,10 +38,6 @@
 SegmentationPlatformServiceImplTest.*
 SegmentationResultPrefsTest.*
 SegmentationUkmHelperTest.*
-SegmentInfoCacheTest.*
-SegmentResultProviderTest.*
-SegmentScoreProviderTest.*
-SegmentSelectorTest.*
 ServiceProxyImplTest.*
 ShoppingUserModelTest.*
 SignalDatabaseImplTest.*
@@ -45,10 +47,11 @@
 SignalStorageConfigTest.*
 SqlFeatureProcessorTest.*
 StatsTest.*
+TrainingDataCacheTest.*
 TrainingDataCollectorImplTest.*
 UkmConfigTest.*
-UkmDatabaseBackendTest.*
 UkmDataManagerImplTest.*
+UkmDatabaseBackendTest.*
 UkmMetricsTableTest.*
 UkmObserverTest.*
 UkmUrlTableTest.*
diff --git a/components/segmentation_platform/embedder/default_model/BUILD.gn b/components/segmentation_platform/embedder/default_model/BUILD.gn
index cecbccc..284e3f91 100644
--- a/components/segmentation_platform/embedder/default_model/BUILD.gn
+++ b/components/segmentation_platform/embedder/default_model/BUILD.gn
@@ -28,6 +28,8 @@
   ]
   if (is_android) {
     sources += [
+      "frequent_feature_user_model.cc",
+      "frequent_feature_user_model.h",
       "intentional_user_model.cc",
       "intentional_user_model.h",
       "power_user_segment.cc",
@@ -56,6 +58,7 @@
 
   if (is_android) {
     sources += [
+      "frequent_feature_user_model_unittest.cc",
       "intentional_user_model_unittest.cc",
       "power_user_segment_unittest.cc",
       "query_tiles_model_unittest.cc",
diff --git a/components/segmentation_platform/embedder/default_model/frequent_feature_user_model.cc b/components/segmentation_platform/embedder/default_model/frequent_feature_user_model.cc
new file mode 100644
index 0000000..17242627
--- /dev/null
+++ b/components/segmentation_platform/embedder/default_model/frequent_feature_user_model.cc
@@ -0,0 +1,123 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/segmentation_platform/embedder/default_model/frequent_feature_user_model.h"
+
+#include <array>
+
+#include "base/feature_list.h"
+#include "base/threading/sequenced_task_runner_handle.h"
+#include "components/segmentation_platform/internal/metadata/metadata_writer.h"
+#include "components/segmentation_platform/public/constants.h"
+#include "components/segmentation_platform/public/features.h"
+#include "components/segmentation_platform/public/model_provider.h"
+#include "components/segmentation_platform/public/proto/model_metadata.pb.h"
+
+namespace segmentation_platform {
+
+namespace {
+using proto::SegmentId;
+
+// Default parameters for frequent feature user model.
+constexpr SegmentId kFrequentFeatureUserSegmentId =
+    SegmentId::FREQUENT_FEATURE_USER_SEGMENT;
+constexpr int64_t kSignalStorageLength = 28;
+constexpr int64_t kMinSignalCollectionLength = 7;
+
+constexpr std::array<int32_t, 1> kUrlOnly{0};
+constexpr std::array<int32_t, 1> kSearchOnly{1};
+
+// InputFeatures.
+constexpr std::array<MetadataWriter::UMAFeature, 10> kUMAFeatures = {
+    MetadataWriter::UMAFeature::FromUserAction("MobileMenuAddToBookmarks", 7),
+    MetadataWriter::UMAFeature::FromUserAction("MobileMenuTranslate", 7),
+    MetadataWriter::UMAFeature::FromUserAction("Suggestions.Content.Opened", 7),
+    MetadataWriter::UMAFeature::FromUserAction("MobileMenuAllBookmarks", 7),
+    MetadataWriter::UMAFeature::FromUserAction(
+        "MobileBookmarkManagerEntryOpened",
+        7),
+    MetadataWriter::UMAFeature::FromUserAction(
+        "Autofill.KeyMetrics.FillingAssistance.CreditCard",
+        7),
+    MetadataWriter::UMAFeature::FromUserAction("PasswordManager_Autofilled", 7),
+    MetadataWriter::UMAFeature::FromUserAction("MobileNTPMostVisited", 7),
+    MetadataWriter::UMAFeature::FromEnumHistogram(
+        "Omnibox.SuggestionUsed.ClientSummarizedResultType",
+        7,
+        kUrlOnly.data(),
+        kUrlOnly.size()),
+    MetadataWriter::UMAFeature::FromEnumHistogram(
+        "Omnibox.SuggestionUsed.ClientSummarizedResultType",
+        7,
+        kSearchOnly.data(),
+        kSearchOnly.size()),
+};
+
+}  // namespace
+
+// static
+std::unique_ptr<Config> FrequentFeatureUserModel::GetConfig() {
+  if (!base::FeatureList::IsEnabled(
+          features::kFrequentFeatureUserSegmentFeature)) {
+    return nullptr;
+  }
+  auto config = std::make_unique<Config>();
+  config->segmentation_key = kFrequentFeatureUserKey;
+  config->segmentation_uma_name = kFrequentFeatureUserUmaName;
+  config->AddSegmentId(SegmentId::FREQUENT_FEATURE_USER_SEGMENT,
+                       std::make_unique<FrequentFeatureUserModel>());
+  config->segment_selection_ttl = base::Days(7);
+  config->unknown_selection_ttl = base::Days(7);
+
+  return config;
+}
+
+FrequentFeatureUserModel::FrequentFeatureUserModel()
+    : ModelProvider(kFrequentFeatureUserSegmentId) {}
+
+void FrequentFeatureUserModel::InitAndFetchModel(
+    const ModelUpdatedCallback& model_updated_callback) {
+  proto::SegmentationModelMetadata frequent_feature_user_metadata;
+  MetadataWriter writer(&frequent_feature_user_metadata);
+  writer.SetDefaultSegmentationMetadataConfig(kMinSignalCollectionLength,
+                                              kSignalStorageLength);
+
+  // Set discrete mapping.
+  writer.AddBooleanSegmentDiscreteMapping(kFrequentFeatureUserKey);
+
+  // Set features.
+  writer.AddUmaFeatures(kUMAFeatures.data(), kUMAFeatures.size());
+
+  constexpr int kModelVersion = 1;
+  base::SequencedTaskRunnerHandle::Get()->PostTask(
+      FROM_HERE, base::BindRepeating(
+                     model_updated_callback, kFrequentFeatureUserSegmentId,
+                     std::move(frequent_feature_user_metadata), kModelVersion));
+}
+
+void FrequentFeatureUserModel::ExecuteModelWithInput(
+    const std::vector<float>& inputs,
+    ExecutionCallback callback) {
+  // Invalid inputs.
+  if (inputs.size() != kUMAFeatures.size()) {
+    base::SequencedTaskRunnerHandle::Get()->PostTask(
+        FROM_HERE, base::BindOnce(std::move(callback), absl::nullopt));
+    return;
+  }
+
+  int total_non_search_feature = 0;
+  for (int i = 0; i <= 8; ++i)
+    total_non_search_feature += inputs[i];
+
+  base::SequencedTaskRunnerHandle::Get()->PostTask(
+      FROM_HERE,
+      base::BindOnce(std::move(callback),
+                     (total_non_search_feature > 0 && inputs[9] > 0) ? 1 : 0));
+}
+
+bool FrequentFeatureUserModel::ModelAvailable() {
+  return true;
+}
+
+}  // namespace segmentation_platform
diff --git a/components/segmentation_platform/embedder/default_model/frequent_feature_user_model.h b/components/segmentation_platform/embedder/default_model/frequent_feature_user_model.h
new file mode 100644
index 0000000..3a052b98
--- /dev/null
+++ b/components/segmentation_platform/embedder/default_model/frequent_feature_user_model.h
@@ -0,0 +1,35 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_SEGMENTATION_PLATFORM_EMBEDDER_DEFAULT_MODEL_FREQUENT_FEATURE_USER_MODEL_H_
+#define COMPONENTS_SEGMENTATION_PLATFORM_EMBEDDER_DEFAULT_MODEL_FREQUENT_FEATURE_USER_MODEL_H_
+
+#include "components/segmentation_platform/public/config.h"
+#include "components/segmentation_platform/public/model_provider.h"
+
+namespace segmentation_platform {
+
+// Provides a default model and metadata for the frequent feature user segment.
+class FrequentFeatureUserModel : public ModelProvider {
+ public:
+  FrequentFeatureUserModel();
+  ~FrequentFeatureUserModel() override = default;
+
+  // Disallow copy/assign.
+  FrequentFeatureUserModel(FrequentFeatureUserModel&) = delete;
+  FrequentFeatureUserModel& operator=(FrequentFeatureUserModel&) = delete;
+
+  static std::unique_ptr<Config> GetConfig();
+
+  // ModelProvider implementation.
+  void InitAndFetchModel(
+      const ModelUpdatedCallback& model_updated_callback) override;
+  void ExecuteModelWithInput(const std::vector<float>& inputs,
+                             ExecutionCallback callback) override;
+  bool ModelAvailable() override;
+};
+
+}  // namespace segmentation_platform
+
+#endif  // COMPONENTS_SEGMENTATION_PLATFORM_EMBEDDER_DEFAULT_MODEL_FREQUENT_FEATURE_USER_MODEL_H_
diff --git a/components/segmentation_platform/embedder/default_model/frequent_feature_user_model_unittest.cc b/components/segmentation_platform/embedder/default_model/frequent_feature_user_model_unittest.cc
new file mode 100644
index 0000000..b11454d
--- /dev/null
+++ b/components/segmentation_platform/embedder/default_model/frequent_feature_user_model_unittest.cc
@@ -0,0 +1,88 @@
+// Copyright 2022 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/segmentation_platform/embedder/default_model/frequent_feature_user_model.h"
+
+#include "base/run_loop.h"
+#include "base/test/task_environment.h"
+#include "components/segmentation_platform/internal/metadata/metadata_utils.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace segmentation_platform {
+
+class FrequentFeatureUserModelTest : public testing::Test {
+ public:
+  FrequentFeatureUserModelTest() = default;
+  ~FrequentFeatureUserModelTest() override = default;
+
+  void SetUp() override {
+    frequent_feature_user_model_ = std::make_unique<FrequentFeatureUserModel>();
+  }
+
+  void TearDown() override { frequent_feature_user_model_.reset(); }
+
+  void ExpectInitAndFetchModel() {
+    base::RunLoop loop;
+    frequent_feature_user_model_->InitAndFetchModel(base::BindRepeating(
+        &FrequentFeatureUserModelTest::OnInitFinishedCallback,
+        base::Unretained(this), loop.QuitClosure()));
+    loop.Run();
+  }
+
+  void OnInitFinishedCallback(base::RepeatingClosure closure,
+                              proto::SegmentId target,
+                              proto::SegmentationModelMetadata metadata,
+                              int64_t) {
+    EXPECT_EQ(metadata_utils::ValidateMetadataAndFeatures(metadata),
+              metadata_utils::ValidationResult::kValidationSuccess);
+    std::move(closure).Run();
+  }
+
+  void ExpectExecutionWithInput(const std::vector<float>& inputs,
+                                bool expected_error,
+                                float expected_result) {
+    base::RunLoop loop;
+    frequent_feature_user_model_->ExecuteModelWithInput(
+        inputs, base::BindOnce(
+                    &FrequentFeatureUserModelTest::OnExecutionFinishedCallback,
+                    base::Unretained(this), loop.QuitClosure(), expected_error,
+                    expected_result));
+    loop.Run();
+  }
+
+  void OnExecutionFinishedCallback(base::RepeatingClosure closure,
+                                   bool expected_error,
+                                   float expected_result,
+                                   const absl::optional<float>& result) {
+    if (expected_error) {
+      EXPECT_FALSE(result.has_value());
+    } else {
+      EXPECT_TRUE(result.has_value());
+      EXPECT_EQ(result.value(), expected_result);
+    }
+    std::move(closure).Run();
+  }
+
+ protected:
+  base::test::TaskEnvironment task_environment_;
+  std::unique_ptr<FrequentFeatureUserModel> frequent_feature_user_model_;
+};
+
+TEST_F(FrequentFeatureUserModelTest, InitAndFetchModel) {
+  ExpectInitAndFetchModel();
+}
+
+TEST_F(FrequentFeatureUserModelTest, ExecuteModelWithInput) {
+  ExpectExecutionWithInput({0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, false, 0);
+  ExpectExecutionWithInput({1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, false, 0);
+  ExpectExecutionWithInput({0, 0, 2, 0, 0, 0, 0, 0, 0, 0}, false, 0);
+  ExpectExecutionWithInput({0, 0, 0, 0, 0, 0, 0, 0, 1, 0}, false, 0);
+  ExpectExecutionWithInput({0, 0, 0, 0, 0, 0, 3, 0, 1, 0}, false, 0);
+  ExpectExecutionWithInput({0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, false, 0);
+  ExpectExecutionWithInput({0, 0, 0, 0, 0, 1, 0, 0, 0, 1}, false, 1);
+  ExpectExecutionWithInput({0, 0, 0, 0, 0, 0, 0, 0, 1, 1}, false, 1);
+  ExpectExecutionWithInput({0, 0, 1, 0, 2, 0, 0, 0, 0, 1}, false, 1);
+}
+
+}  // namespace segmentation_platform
diff --git a/components/segmentation_platform/internal/tools/create_class.py b/components/segmentation_platform/internal/tools/create_class.py
index 30e40164..a94f6230 100644
--- a/components/segmentation_platform/internal/tools/create_class.py
+++ b/components/segmentation_platform/internal/tools/create_class.py
@@ -178,4 +178,3 @@
 
 if __name__ == '__main__':
   sys.exit(main())
-
diff --git a/components/segmentation_platform/public/features.cc b/components/segmentation_platform/public/features.cc
index ee933e6..dc4b12f 100644
--- a/components/segmentation_platform/public/features.cc
+++ b/components/segmentation_platform/public/features.cc
@@ -48,6 +48,10 @@
              "SegmentationPlatformPowerUserFeature",
              base::FEATURE_ENABLED_BY_DEFAULT);
 
+BASE_FEATURE(kFrequentFeatureUserSegmentFeature,
+             "FrequentFeatureUserSegmentFeature",
+             base::FEATURE_ENABLED_BY_DEFAULT);
+
 BASE_FEATURE(kContextualPageActions,
              "ContextualPageActions",
              base::FEATURE_ENABLED_BY_DEFAULT);
diff --git a/components/segmentation_platform/public/features.h b/components/segmentation_platform/public/features.h
index a2363ae..1c557cb 100644
--- a/components/segmentation_platform/public/features.h
+++ b/components/segmentation_platform/public/features.h
@@ -31,6 +31,9 @@
 // Feature flag for enabling Power user segmentation.
 BASE_DECLARE_FEATURE(kSegmentationPlatformPowerUserFeature);
 
+// Feature flag for enabling frequent feature user segment.
+BASE_DECLARE_FEATURE(kFrequentFeatureUserSegmentFeature);
+
 // Feature flag for enabling contextual page actions. Only effective when at
 // least one action is enabled.
 BASE_DECLARE_FEATURE(kContextualPageActions);
diff --git a/components/segmentation_platform/tools/testing/__init__.py b/components/segmentation_platform/tools/testing/__init__.py
new file mode 100644
index 0000000..3ea02f95
--- /dev/null
+++ b/components/segmentation_platform/tools/testing/__init__.py
@@ -0,0 +1,3 @@
+# Copyright 2022 The Chromium Authors
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
diff --git a/components/segmentation_platform/tools/testing/launcher_filter_file.py b/components/segmentation_platform/tools/testing/launcher_filter_file.py
new file mode 100755
index 0000000..f19bc40
--- /dev/null
+++ b/components/segmentation_platform/tools/testing/launcher_filter_file.py
@@ -0,0 +1,107 @@
+#!/usr/bin/env python3
+# Copyright 2022 The Chromium Authors
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+"""This script provides functionality for automatically keeping a launcher
+filter file up to date for tests in a particular component.
+
+By running this script as a binary, it automatically rewrites the filter file,
+but it can also be used as a Python module for presubmit scripts.
+
+The resulting file can be used through the test binary, e.g.:
+./out/Default/components_unittests \
+  --test-launcher-filter-file=components/my_feature/components_unittests.filter
+"""
+
+from typing import List
+
+import os
+import re
+
+USE_PYTHON3 = True
+
+OUTPUT_FILENAME = 'components_unittests.filter'
+
+
+def GetComponentDirectoryPath() -> str:
+    # Returns the path to the current component.
+    return os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', '..')
+
+
+def GetLauncherFilterFilePath(filename) -> str:
+    # Returns the path to the filter file passed to the test binary.
+    component_directory = GetComponentDirectoryPath()
+    return os.path.join(component_directory, filename)
+
+
+def FindTestSuites(cwd: str) -> List[str]:
+    # Finds all test suites that are in the current component directory.
+    #
+    # Search for all test suites that match one of these patterns:
+    # *   TEST_F(MyTest, ...)
+    # *   TEST_P(MyTest, ...)
+    # *   TEST(MyTest, ...)
+    # All relevant matches will be in a named capture group called 'suite'.
+    test_search = re.compile(r'^TEST(_F|_P)?\s*\(\s*(?P<suite>\s*[^,]+)',
+                             re.MULTILINE)
+    # Use a set to ensure we only get unique test suites.
+    test_suites = set()
+    # Walk through all directories to find all *.cc files.
+    for root, _, files in os.walk(cwd):
+        for filename in files:
+            bare_filename, extension = os.path.splitext(filename)
+            if extension == '.cc' and bare_filename.endswith('test'):
+                file_path = os.path.join(root, filename)
+                with open(file_path, 'r', encoding='utf-8') as f:
+                    file_contents = f.read()
+                    # Find all the group matches in the regex.
+                    for matches in [
+                            m.groupdict()
+                            for m in test_search.finditer(file_contents)
+                    ]:
+                        # Only keep matches that are named 'suite'.
+                        if 'suite' in matches:
+                            test_suites.add(matches['suite'])
+
+    return test_suites
+
+
+def CreateLauncherFilterFileContent(test_suites: List[str]) -> str:
+    # Uses the test suite names to create the string that can be stored as the
+    # test launcher filter file.
+    file_lines = [test_suite + '.*' for test_suite in test_suites]
+    sorted_lines = sorted(file_lines)
+    return '\n'.join(sorted_lines) + '\n'
+
+
+def GetActualLauncherFilterFileContent() -> str:
+    # Reads the current content of the default launcher filter file into a
+    # string.
+    file_path = GetLauncherFilterFilePath(OUTPUT_FILENAME)
+    with open(file_path, 'r', encoding='utf-8') as f:
+        return f.read()
+
+
+def GetExpectedLauncherFilterFileContent() -> str:
+    # Creates the content of the expected launcher filter file, with all known
+    # test suites included.
+    component_directory = GetComponentDirectoryPath()
+
+    test_suites = FindTestSuites(component_directory)
+    return CreateLauncherFilterFileContent(test_suites)
+
+
+def WriteLauncherFilterFile(file_path: str, filter_file_content: str) -> None:
+    # Writes out the filter file content to the given path.
+    with open(file_path, 'w', encoding='utf-8') as f:
+        f.write(filter_file_content)
+
+
+def main():
+    output_file_path = GetLauncherFilterFilePath(OUTPUT_FILENAME)
+    expected_filter_file_content = GetExpectedLauncherFilterFileContent()
+    WriteLauncherFilterFile(output_file_path, expected_filter_file_content)
+
+
+if __name__ == '__main__':
+    main()
diff --git a/components/services/screen_ai/proto/proto_convertor.cc b/components/services/screen_ai/proto/proto_convertor.cc
index e29a5b38..3fbb1613 100644
--- a/components/services/screen_ai/proto/proto_convertor.cc
+++ b/components/services/screen_ai/proto/proto_convertor.cc
@@ -634,10 +634,10 @@
 
   // Add children.
   std::vector<int> child_ids;
-  for (size_t i = 0; i < node->GetChildCount(); i++) {
+  for (auto it = node->AllChildrenBegin(); it != node->AllChildrenEnd(); ++it) {
     child_ids.push_back(++next_unused_node_id);
-    AddSubTree(tree, node->GetChildAtIndex(i), proto, next_unused_node_id,
-               current_node_id, tree_dimensions);
+    AddSubTree(tree, it.get(), proto, next_unused_node_id, current_node_id,
+               tree_dimensions);
   }
 
   // Add child ids.
diff --git a/components/services/storage/public/cpp/buckets/bucket_locator.cc b/components/services/storage/public/cpp/buckets/bucket_locator.cc
index b18771db..89d03f9 100644
--- a/components/services/storage/public/cpp/buckets/bucket_locator.cc
+++ b/components/services/storage/public/cpp/buckets/bucket_locator.cc
@@ -18,6 +18,15 @@
 BucketLocator::BucketLocator() = default;
 BucketLocator::~BucketLocator() = default;
 
+// static
+BucketLocator BucketLocator::ForDefaultBucket(blink::StorageKey storage_key) {
+  BucketLocator locator;
+  locator.storage_key = std::move(storage_key);
+  locator.is_default = true;
+  locator.type = blink::mojom::StorageType::kTemporary;
+  return locator;
+}
+
 BucketLocator::BucketLocator(const BucketLocator&) = default;
 BucketLocator::BucketLocator(BucketLocator&&) noexcept = default;
 BucketLocator& BucketLocator::operator=(const BucketLocator&) = default;
diff --git a/components/services/storage/public/cpp/buckets/bucket_locator.h b/components/services/storage/public/cpp/buckets/bucket_locator.h
index b439c86b..e7743738 100644
--- a/components/services/storage/public/cpp/buckets/bucket_locator.h
+++ b/components/services/storage/public/cpp/buckets/bucket_locator.h
@@ -25,6 +25,8 @@
 
   ~BucketLocator();
 
+  static BucketLocator ForDefaultBucket(blink::StorageKey storage_key);
+
   BucketLocator(const BucketLocator&);
   BucketLocator(BucketLocator&&) noexcept;
   BucketLocator& operator=(const BucketLocator&);
@@ -39,6 +41,8 @@
   COMPONENT_EXPORT(STORAGE_SERVICE_BUCKETS_SUPPORT)
   friend bool operator<(const BucketLocator& lhs, const BucketLocator& rhs);
 
+  // Only positive IDs are valid. A default bucket without a specified bucket ID
+  // can be represented by this struct when `id` is zero.
   BucketId id = BucketId::FromUnsafeValue(0);
   blink::StorageKey storage_key = blink::StorageKey();
   blink::mojom::StorageType type = blink::mojom::StorageType::kUnknown;
diff --git a/components/services/storage/public/mojom/buckets/bucket_locator.mojom b/components/services/storage/public/mojom/buckets/bucket_locator.mojom
index 775ea28..4caf421 100644
--- a/components/services/storage/public/mojom/buckets/bucket_locator.mojom
+++ b/components/services/storage/public/mojom/buckets/bucket_locator.mojom
@@ -17,7 +17,8 @@
 // cannot be trusted. BucketLocator should only be passed from more trusted to
 // less trusted processes.
 struct BucketLocator {
-  BucketId id;
+  // If null, `is_default` should be true and this refers to the default bucket.
+  BucketId? id;
   blink.mojom.StorageKey storage_key;
   blink.mojom.StorageType type;
   bool is_default;
diff --git a/components/services/storage/public/mojom/buckets/bucket_locator_mojom_traits.cc b/components/services/storage/public/mojom/buckets/bucket_locator_mojom_traits.cc
index a35cf8b2..7799ad56 100644
--- a/components/services/storage/public/mojom/buckets/bucket_locator_mojom_traits.cc
+++ b/components/services/storage/public/mojom/buckets/bucket_locator_mojom_traits.cc
@@ -28,6 +28,10 @@
 
   bool is_default = data.is_default();
 
+  if (id.is_null()) {
+    CHECK(is_default);
+  }
+
   *out = storage::BucketLocator(id, std::move(storage_key), type, is_default);
   return true;
 }
diff --git a/components/services/storage/public/mojom/cache_storage_control.mojom b/components/services/storage/public/mojom/cache_storage_control.mojom
index a0035c5f..46a7e921 100644
--- a/components/services/storage/public/mojom/cache_storage_control.mojom
+++ b/components/services/storage/public/mojom/cache_storage_control.mojom
@@ -4,6 +4,7 @@
 
 module storage.mojom;
 
+import "components/services/storage/public/mojom/buckets/bucket_locator.mojom";
 import "components/services/storage/public/mojom/storage_policy_update.mojom";
 import "components/services/storage/public/mojom/storage_usage_info.mojom";
 import "services/network/public/mojom/cross_origin_embedder_policy.mojom";
@@ -38,13 +39,14 @@
 // out-of-process.
 interface CacheStorageControl {
   // Binds a CacheStorage receiver to the CacheStorageControl to access
-  // the cache storage for a particular storage key and owner.
-  // TODO(crbug.com/1218097): Allow custom bucket names.
+  // the cache storage for a particular storage key and owner. `bucket_locator`
+  // may represent the default bucket (`is_default` will be true), in which case
+  // its ID will not be valid.
   AddReceiver(
       network.mojom.CrossOriginEmbedderPolicy policy,
       pending_remote<network.mojom.CrossOriginEmbedderPolicyReporter>?
           coep_reporter,
-      blink.mojom.StorageKey storage_key,
+      BucketLocator bucket_locator,
       CacheStorageOwner owner,
       pending_receiver<blink.mojom.CacheStorage> receiver);
 
diff --git a/components/strings/components_strings_af.xtb b/components/strings/components_strings_af.xtb
index 7c53af5..be0b57ea 100644
--- a/components/strings/components_strings_af.xtb
+++ b/components/strings/components_strings_af.xtb
@@ -712,6 +712,7 @@
 <translation id="2799223571221894425">Begin weer</translation>
 <translation id="2803306138276472711">Google Veiligblaai het onlangs <ph name="BEGIN_LINK" />wanware bespeur<ph name="END_LINK" /> op <ph name="SITE" />. Webwerwe wat gewoonlik veilig is, word soms met wanware besmet.</translation>
 <translation id="2807052079800581569">Prent se posisie op Y-as</translation>
+<translation id="2808278141522721006">Jy kan Windows Hello in <ph name="SETTINGS" /> aan- of afskakel</translation>
 <translation id="2820957248982571256">Skandeer tans …</translation>
 <translation id="2824775600643448204">Adres- en soekbalk</translation>
 <translation id="2826760142808435982">Die verbinding is geënkripteer en gestaaf deur <ph name="CIPHER" /> te gebruik, en gebruik <ph name="KX" /> as die sleuteluitruilmeganisme.</translation>
@@ -882,6 +883,7 @@
 <translation id="3288238092761586174"><ph name="URL" /> sal dalk bykomende stappe moet doen om jou betaling te verifieer</translation>
 <translation id="3293642807462928945">Kom meer te wete oor <ph name="POLICY_NAME" />-beleid</translation>
 <translation id="3295444047715739395">Bekyk en bestuur jou wagwoorde in Chrome-instellings</translation>
+<translation id="3299098170013242198">Windows Hello is aan om wagwoorde in te vul</translation>
 <translation id="3303855915957856445">Geen soekresultate gevind nie</translation>
 <translation id="3304073249511302126">bluetooth-opsporing</translation>
 <translation id="33073482541490531">Die wagwoord wat jy sopas gebruik het, is in ’n dataskending gekry. Wagwoordbestuurder beveel aan dat jy hierdie wagwoord nou verander.</translation>
@@ -1030,6 +1032,7 @@
 <translation id="3678342917559046352">Ongeldige uitbreiding: daar word verwag dat die waarde een van die volgende vorms sal hê: &lt;extension_id&gt; of &lt;extension_id&gt;;&lt;update_url&gt;.</translation>
 <translation id="3678529606614285348">Maak bladsy in 'n nuwe incognitovenster oop (Ctrl-Shift-N)</translation>
 <translation id="3681007416295224113">Sertifikaatinligting</translation>
+<translation id="3699374065820972102">TouchID is aan om wagwoorde in te vul</translation>
 <translation id="3701427423622901115">Terugstelling erken.</translation>
 <translation id="3704162925118123524">Die netwerk wat jy gebruik, kan vereis dat jy sy aanmeldbladsy besoek.</translation>
 <translation id="3705189812819839667"><ph name="RESULT_OWNER" /> – <ph name="RESULT_PRODUCT_SOURCE" /></translation>
@@ -1489,6 +1492,7 @@
 <translation id="4900217275619098670">Negende rol</translation>
 <translation id="4901778704868714008">Stoor …</translation>
 <translation id="4905659621780993806">Jou admin sal jou toestel op <ph name="DATE" /> om <ph name="TIME" /> outomaties herbegin. Stoor enige oop items voordat jou toestel herbegin.</translation>
+<translation id="4911007278801291296">Jy kan TouchID in <ph name="SETTINGS" /> aan- of afskakel</translation>
 <translation id="4913987521957242411">Pons links bo</translation>
 <translation id="4918221908152712722">Installeer <ph name="APP_NAME" /> (geen aflaai word vereis nie)</translation>
 <translation id="4923459931733593730">Betaling</translation>
@@ -1681,6 +1685,7 @@
 <translation id="5357848622083956825">Visuele kuns en ontwerp</translation>
 <translation id="536296301121032821">Kon nie beleidinstellings stoor nie</translation>
 <translation id="5363309033720083897">Reekspoort deur jou administrateur toegelaat</translation>
+<translation id="5363713372507812442">Deursoek reise</translation>
 <translation id="5371425731340848620">Dateer kaart op</translation>
 <translation id="5377026284221673050">"Jou horlosie is agter" of "Jou horlosie is voor" of "&lt;span class="error-code"&gt;NET::ERR_CERT_DATE_INVALID&lt;/span&gt;"</translation>
 <translation id="5379027395132364855">Skep Aanbieding-knoppie; druk Enter om vinnig 'n nuwe Google-aanbieding in Skyfies te skep</translation>
diff --git a/components/strings/components_strings_am.xtb b/components/strings/components_strings_am.xtb
index 1e7e90b..72dd0129 100644
--- a/components/strings/components_strings_am.xtb
+++ b/components/strings/components_strings_am.xtb
@@ -307,6 +307,7 @@
 <translation id="168841957122794586">የአገልጋይ እውቅና ማረጋገጫው ደካማ የሆነ ባለስውር መረጃ ቁልፍ ነው ያለው።</translation>
 <translation id="1697532407822776718">በቃ ጨርሰዋል!</translation>
 <translation id="1699570257714336246">መረጃ ይጎድላል</translation>
+<translation id="1702815194757674443">አርኦሲ 16ኬ</translation>
 <translation id="1703835215927279855">ደብዳቤ</translation>
 <translation id="1706625117072057435">የማጉላት ደረጃዎች</translation>
 <translation id="1706954506755087368">{1,plural, =1{ይህ አገልጋይ <ph name="DOMAIN" /> እንደሆነ ማረጋገጥ አልቻለም፤ የደህንነት ማረጋገጫ እውቅና ማረጋገጫው ከነገ የመጣ ነው ይላል። ይሄ በተሳሳተ አወቃቀር ወይም አንድ አጥቂ ግንኙነትዎን በመጥለፉ የተከሰተ ሊሆን ይችላል።}one{ይህ አገልጋይ <ph name="DOMAIN" /> እንደሆነ ማረጋገጥ አልቻለም፤ የደህንነት ማረጋገጫ እውቅና ማረጋገጫው የወደፊት # ቀንኖች የመጣ ነው ይላል። ይሄ በተሳሳተ አወቃቀር ወይም አንድ አጥቂ ግንኙነትዎን በመጥለፉ የተከሰተ ሊሆን ይችላል።}other{ይህ አገልጋይ <ph name="DOMAIN" /> እንደሆነ ማረጋገጥ አልቻለም፤ የደህንነት ማረጋገጫ እውቅና ማረጋገጫው የወደፊት # ቀንኖች የመጣ ነው ይላል። ይሄ በተሳሳተ አወቃቀር ወይም አንድ አጥቂ ግንኙነትዎን በመጥለፉ የተከሰተ ሊሆን ይችላል።}}</translation>
@@ -550,6 +551,7 @@
 <translation id="2359347814217202136">{NUM_DAYS,plural, =0{ከአንድ ቀን ባነሰ ጊዜ ውስጥ}=1{በአንድ ቀን ውስጥ}one{በ{NUM_DAYS} ቀኖች ውስጥ}other{በ{NUM_DAYS} ቀኖች ውስጥ}}</translation>
 <translation id="2359629602545592467">በርካታ</translation>
 <translation id="2359808026110333948">ቀጥል</translation>
+<translation id="2361263712565360498">275 x 395 ሚሜ</translation>
 <translation id="236340516568226369">የመቀየሪያ ምናሌን መጠን ቀይር</translation>
 <translation id="2367567093518048410">ደረጃ</translation>
 <translation id="2380886658946992094">የሕግ</translation>
@@ -1424,6 +1426,7 @@
 <translation id="4751476147751820511">የእንቅስቃሴ ወይም የብርሃን ዳሳሾች</translation>
 <translation id="4754461935447132332">ደህንነት ለሌላቸው ጣቢያዎች አይፈቀድም</translation>
 <translation id="4756388243121344051">&amp;ታሪክ</translation>
+<translation id="4756501505996488486">ፒአርሲ 16ኬ</translation>
 <translation id="4757993714154412917">አሁን የይለፍ ቃልዎን በአንድ አታላይ ጣቢያ ላይ አስገብተዋል። የእርስዎን መለያዎች ደህንነት ለመጠበቅ Chromium የተቀመጡ ይለፍ ቃላትዎን መፈተሽ ይመክራል።</translation>
 <translation id="4758311279753947758">የእውቂያ መረጃን ያክሉ</translation>
 <translation id="4761104368405085019">ማይክፎሮንዎን ይጠቀማል</translation>
@@ -2162,6 +2165,7 @@
 <translation id="6738516213925468394">የእርስዎ ውሂብ በ<ph name="TIME" /> ላይ በእርስዎ <ph name="BEGIN_LINK" />የስምረት ይለፍ ሐረግ<ph name="END_LINK" /> ተመስጥሯል። ስምረትን ለመጀመር ያስገቡት።</translation>
 <translation id="674375294223700098">ያልታወቀ የአገልጋይ እውቅና ማረጋገጫ ስህተት።</translation>
 <translation id="6744009308914054259">ግንኙነትን እየተጠባበቁ ሳሉ የመስመር ውጭ ጽሑፎችን ለማንበብ ውርዶችን መጎብኘት ይችላሉ።</translation>
+<translation id="6751487147225428522">አርኦሲ 8ኬ</translation>
 <translation id="6752086006821653994">ቴሌኮንፈረንሲንግ</translation>
 <translation id="6753269504797312559">የመምሪያ እሴት</translation>
 <translation id="6755241357817244406">chrome://flags</translation>
@@ -2195,6 +2199,7 @@
 <translation id="6846340164947227603">ምናባዊ የካርድ ቁጥርን ይጠቀሙ...</translation>
 <translation id="6852204201400771460">መተግበሪያ ዳግም ይጫን?</translation>
 <translation id="6857776781123259569">የይለፍ ቃላትን ያቀናብሩ...</translation>
+<translation id="6864189428899665393">267 x 389 ሚሜ</translation>
 <translation id="686485648936420384">የሸማቾች መርጃዎች</translation>
 <translation id="6865412394715372076">ይህ ካርድ አሁን ላይ ሊረጋገጥ አይችልም</translation>
 <translation id="6869334554832814367">የግል ብድሮች</translation>
@@ -2307,6 +2312,7 @@
 <translation id="7138472120740807366">የማድረሻ ስልት</translation>
 <translation id="7139892792842608322">ዋና መሳቢያ</translation>
 <translation id="714064300541049402">ጎን 2 ምስል X ሽግሽግ</translation>
+<translation id="7143682719845053166">ፒአርሲ 32ኬ</translation>
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> እና <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> ተጨማሪ}one{<ph name="PAYMENT_METHOD_PREVIEW" /> እና <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> ተጨማሪ}other{<ph name="PAYMENT_METHOD_PREVIEW" /> እና <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> ተጨማሪ}}</translation>
 <translation id="7153618581592392745">ፈዘዝ ያለ ወይን ጠጅ</translation>
 <translation id="7156870133441232244">አገልጋዩ ወደ TLS 1.2 ወይም ከዚያ በኋላ ማላቅ አለበት።</translation>
@@ -2387,6 +2393,7 @@
 <translation id="7363096869660964304">ይሁንና፣ እርስዎ የማይታዩ አይደሉም። ማንነት የማያሳውቅ ሁነታ መጠቀም የእርስዎን አሰሳ፣ የበይነመረብ አገልግሎት አቅራቢ ወይም የሚጎበኟቸው ድር ጣቢያዎች ከአሰሪዎ አይደብቃቸውም።</translation>
 <translation id="7365596969960773405"><ph name="MANAGE_ADDRESSES_FOCUSED_FRIENDLY_MATCH_TEXT" />፣ በChrome ቅንብሮች ውስጥ አድራሻዎችን ለማከል እና ለማቀናበር ትርን ከዚያ አስገባን ይጫኑ</translation>
 <translation id="7365849542400970216">የመሣሪያዎን አጠቃቀም ያውቃሉ?</translation>
+<translation id="7366117520888504990">198 x 275 ሚሜ</translation>
 <translation id="7366362069757178916">የክፍያ ተቆጣጣሪዎች</translation>
 <translation id="7372973238305370288">የፍለጋ ውጤት</translation>
 <translation id="7374461526650987610">የፕሮቶኮል ተቆጣጣሪዎች</translation>
@@ -2546,6 +2553,7 @@
 <translation id="7687186412095877299">የክፍያ ቅጾችን በተቀመጡ የመክፈያ ዘዴዎችዎ ይሞላቸዋል</translation>
 <translation id="7687305263118037187">እረፍት ጊዜን ዳግም ሞክር</translation>
 <translation id="7687451951329798396">ሌሎች ምንጮች ምን ይላሉ?</translation>
+<translation id="7690647519407127574">ኦፉኩ ሃጋኪ ፖስት ካርድ</translation>
 <translation id="7693583928066320343">የገጽ ቅደም-ተከተል ደርሷል</translation>
 <translation id="7696089921647603491">የቆየ ተወዳጅ ሮክ እና አንጋፋዎች</translation>
 <translation id="769721561045429135">አሁን ላይ በዚህ መሣሪያ ላይ ብቻ ጥቅም ላይ ሊውሉ የሚችሉ ካርዶች አልዎት ካርዶችን መገምገም ለመቀጠል ጠቅ ያድርጉ።</translation>
@@ -2719,6 +2727,7 @@
 <translation id="8202370299023114387">ግጭት</translation>
 <translation id="8210604850413485128">የመረብ አገናኝ</translation>
 <translation id="8211406090763984747">ግንኙነት ደኅንነቱ የተጠበቀ ነው</translation>
+<translation id="8213853114485953510">ጄአይኤስ Exec</translation>
 <translation id="8217240300496046857">ጣቢያዎች እርስዎን በመላ ድር ላይ የሚከታተሉ ኩኪዎችን መጠቀም አይችሉም። በአንዳንድ ጣቢያዎች ላይ ያሉ ባህሪያት ሊሰበሩ ይችላሉ።</translation>
 <translation id="8217748145574471584">የሰው ኃይል አስተዳደር</translation>
 <translation id="8218327578424803826">የተመደበ መገኛ አካባቢ፦</translation>
@@ -2932,6 +2941,7 @@
 <translation id="8816395686387277279"><ph name="UPDATE_CHROME_FOCUSED_FRIENDLY_MATCH_TEXT" />፣ ትርን ይጫኑ እና ከእርስዎ Chrome ቅንብሮች Chromeን ለማዘመን አስገባን ይጫኑ</translation>
 <translation id="8820817407110198400">ዕልባቶች</translation>
 <translation id="882338992931677877">ራስዎ የሚያስገቡበት ክፍተት</translation>
+<translation id="8830320733681313421">ሃጋኪ ፖስታ ካርድ</translation>
 <translation id="8834380158646307944">ማንነትን የማያሳውቅ የመስኮት አዝራርን ይዝጉ፣ አሁን ክፍት የሆኑትን ሁሉም ማንነት የማያሳውቁ መስኮቶችን ለመዝጋት አስገባን ይጫኑ</translation>
 <translation id="883848425547221593">ሌላ እልባቶች</translation>
 <translation id="884264119367021077">የመላኪያ አድራሻ</translation>
diff --git a/components/strings/components_strings_az.xtb b/components/strings/components_strings_az.xtb
index 3614925..caaadab 100644
--- a/components/strings/components_strings_az.xtb
+++ b/components/strings/components_strings_az.xtb
@@ -307,6 +307,7 @@
 <translation id="168841957122794586">Server sertifikatının kriptoqrafik açarı zəifdir.</translation>
 <translation id="1697532407822776718">Hər şey hazırdır!</translation>
 <translation id="1699570257714336246">Əskik məlumat var</translation>
+<translation id="1702815194757674443">ROC 16K</translation>
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706625117072057435">Zoom səviyyələri</translation>
 <translation id="1706954506755087368">{1,plural, =1{Bu server <ph name="DOMAIN" /> olduğunu sübut edə bilmədi; böyük ehtimal təhlükəsizlik sertifikatı sabahdan etibarən nəzərdə tutulub. Buna yanlış konfiqurasiya və ya hücumçu tərəfindən bağlantının ələ keçirilməsi səbəb ola bilər.}other{Bu server <ph name="DOMAIN" /> olduğunu sübut edə bilmədi; təhlükəsizlik sertifikatı gələcəkdə # gündən sonra nəzərdə tutulub. Buna yanlış konfiqurasiya və ya hücumçu tərəfindən bağlantının ələ keçirilməsi səbəb ola bilər.}}</translation>
@@ -552,6 +553,7 @@
 <translation id="2359347814217202136">{NUM_DAYS,plural, =0{Maksimum bir gün ərzində}=1{Bir gün ərzində}other{{NUM_DAYS} gün ərzində}}</translation>
 <translation id="2359629602545592467">Çoxsaylı</translation>
 <translation id="2359808026110333948">Davam edin</translation>
+<translation id="2361263712565360498">275 x 395 mm</translation>
 <translation id="236340516568226369">Keçirmə menyusunun ölçüsünü dəyişdirin</translation>
 <translation id="2367567093518048410">Səviyyə</translation>
 <translation id="2380886658946992094">Hüquqi</translation>
@@ -712,6 +714,7 @@
 <translation id="2799223571221894425">Yenidən başladın</translation>
 <translation id="2803306138276472711">Google Güvənlik Baxış <ph name="SITE" /> saytında <ph name="BEGIN_LINK" />zərərli proqram aşkar etdi<ph name="END_LINK" />. Adətən güvənli olan veb saytlar bəzən zərərli proqramlar ilə yoluxur.</translation>
 <translation id="2807052079800581569">Şəklin Y oxu üzrə mövqeyi</translation>
+<translation id="2808278141522721006">Windows Hello'nu <ph name="SETTINGS" /> bölməsində aktiv və ya deaktiv edə bilərsiniz</translation>
 <translation id="2820957248982571256">Skan edilir...</translation>
 <translation id="2824775600643448204">Ünvan və axtarış paneli</translation>
 <translation id="2826760142808435982">Bağlantı şifrələnib və <ph name="CIPHER" /> işlədərək doğrulanıb və açar mübadiləsi olaraq <ph name="KX" /> işlədir.</translation>
@@ -880,6 +883,7 @@
 <translation id="3288238092761586174"><ph name="URL" /> ödənişinizi doğrulamaq üçün əlavə addımlar atmalı ola bilər</translation>
 <translation id="3293642807462928945"><ph name="POLICY_NAME" /> siyasəti haqqında ətraflı məlumat əldə edin</translation>
 <translation id="3295444047715739395">Parollarınıza Chrome ayarlarında baxın və idarə edin</translation>
+<translation id="3299098170013242198">Windows Hello parolları daxil etmək üçün aktivdir</translation>
 <translation id="3303855915957856445">Heç bir axtarış nəticəsi tapılmadı</translation>
 <translation id="3304073249511302126">bluetooth skanlaması</translation>
 <translation id="33073482541490531">İndicə istifadə etdiyiniz parol bir data pozuntusunda tapılıb. Parol Meneceri bu parolu indi dəyişdirmənizi tövsiyə edir.</translation>
@@ -1026,6 +1030,7 @@
 <translation id="3678342917559046352">Yanlış Artırma: Dəyər bu formatlardan birində olmalıdır: &lt;extension_id&gt; və ya &lt;extension_id&gt;;&lt;update_url&gt;.</translation>
 <translation id="3678529606614285348">Yeni Gizli pəncərədə səhifə açın (Ctrl-Shift-N)</translation>
 <translation id="3681007416295224113">Sertifikat məlumatı</translation>
+<translation id="3699374065820972102">TouchID parolları daxil etmək üçün aktivdir</translation>
 <translation id="3701427423622901115">Sıfırlanma doğrulandı.</translation>
 <translation id="3704162925118123524">İstifadə etdiyiniz şəbəkə login səhifəsinə daxil olmağınızı tələb edə bilər.</translation>
 <translation id="3705189812819839667"><ph name="RESULT_OWNER" /> - <ph name="RESULT_PRODUCT_SOURCE" /></translation>
@@ -1425,6 +1430,7 @@
 <translation id="4751476147751820511">Hərəkət və ışıq sensorları</translation>
 <translation id="4754461935447132332">Güvənsiz saytlar üçün icazə verilmir</translation>
 <translation id="4756388243121344051">&amp;Tarixçə</translation>
+<translation id="4756501505996488486">PRC 16K</translation>
 <translation id="4757993714154412917">İndicə parolunuzu aldadıcı sayt içində yazdınız. Hesablarınızı qorumaq üçün Chromium yadda saxladığınız parolları yoxlamağı tövsiyə edir.</translation>
 <translation id="4758311279753947758">Kontakt məlumatı əlavə edin</translation>
 <translation id="4761104368405085019">Mikrofon işlədin</translation>
@@ -1486,6 +1492,7 @@
 <translation id="4900217275619098670">Doqquzuncu Rulon</translation>
 <translation id="4901778704868714008">Yadda saxlayın...</translation>
 <translation id="4905659621780993806">Administrator cihazınızı bu vaxt avtomatik olaraq yenidən başladacaq: <ph name="TIME" />, <ph name="DATE" /> Cihazınız yenidən başlamazdan əvvəl hər hansı açıq elementləri yadda saxlayın.</translation>
+<translation id="4911007278801291296">TouchID'ni <ph name="SETTINGS" /> bölməsində aktiv və ya deaktiv edə bilərsiniz</translation>
 <translation id="4913987521957242411">Yuxarı soldan deşik açın</translation>
 <translation id="4918221908152712722"><ph name="APP_NAME" /> tətbiqini quraşdırın (endirmək tələb edilmir)</translation>
 <translation id="4923459931733593730">Ödəniş</translation>
@@ -1679,6 +1686,7 @@
 <translation id="5357848622083956825">Təsviri incəsənət və dizayn</translation>
 <translation id="536296301121032821">Siyasət ayarlarını saxlamaq uğursuz oldu</translation>
 <translation id="5363309033720083897">Administratorunuz tərəfindən icazə verilən ardıcıl port</translation>
+<translation id="5363713372507812442">Səyahət axtarın</translation>
 <translation id="5371425731340848620">Kartı yeniləyin</translation>
 <translation id="5377026284221673050">"Saatınız geridədir" və ya "Saatınız qabaqdadır" və ya "&lt;span class="error-code"&gt;NET::ERR_CERT_DATE_INVALID&lt;/span&gt;"</translation>
 <translation id="5379027395132364855">"Təqdimat yaradın" düyməsi, Enter düyməsinə basaraq Slaydda cəld yeni Google təqdimatı yaradın</translation>
@@ -2165,6 +2173,7 @@
 <translation id="6738516213925468394">Data <ph name="TIME" /> tarixində <ph name="BEGIN_LINK" />sinxronizasiya parolu<ph name="END_LINK" /> ilə şifrələnib. Sinxronizasiyanı başlatmaq üçün klikləyin.</translation>
 <translation id="674375294223700098">Naməlum server sertifikatı xətası</translation>
 <translation id="6744009308914054259">Bağlantı gözlənilərkən oflayn məqalələri oxumaq üçün Endirilənlərə baxa bilərsiniz.</translation>
+<translation id="6751487147225428522">ROC 8K</translation>
 <translation id="6752086006821653994">Telekonfrans</translation>
 <translation id="6753269504797312559">Siyasət dəyəri</translation>
 <translation id="6755241357817244406">chrome://flags</translation>
@@ -2198,6 +2207,7 @@
 <translation id="6846340164947227603">Virtual kart nömrəsini istifadə edin:</translation>
 <translation id="6852204201400771460">Tətbiq yenidən yüklənilsin?</translation>
 <translation id="6857776781123259569">Parolları idarə edin...</translation>
+<translation id="6864189428899665393">267 x 389 mm</translation>
 <translation id="686485648936420384">İstehlak resursları</translation>
 <translation id="6865412394715372076">Bu kart hazırda doğrulana bilməz</translation>
 <translation id="6869334554832814367">Şəxsi istiqrazlar</translation>
@@ -2310,6 +2320,7 @@
 <translation id="7138472120740807366">Çatdırılma üsulu</translation>
 <translation id="7139892792842608322">Əsas Qab</translation>
 <translation id="714064300541049402">Şəklin 2-ci tərəfinin X oxu üzrə yerdəyişməsi</translation>
+<translation id="7143682719845053166">PRC 32K</translation>
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> və daha <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}other{<ph name="PAYMENT_METHOD_PREVIEW" /> və daha <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}}</translation>
 <translation id="7153618581592392745">Yasəmən</translation>
 <translation id="7156870133441232244">Server TLS 1.2 və ya daha sonrakı versiyaya güncəlləməlidir.</translation>
@@ -2391,6 +2402,7 @@
 <translation id="7363096869660964304">Siz görünməz olmursunuz. Anonim rejim brauzeri şirkətinizdən, internet xidməti provayderi və ya daxil olduğunuz veb saytdan gizlətmir.</translation>
 <translation id="7365596969960773405"><ph name="MANAGE_ADDRESSES_FOCUSED_FRIENDLY_MATCH_TEXT" />, Chrome ayarlarında ünvanlar əlavə etmək və idarə etmək üçün Tab, sonra Enter düyməsinə basın</translation>
 <translation id="7365849542400970216">Cihazdan istifadəniz bilinsin?</translation>
+<translation id="7366117520888504990">198 x 275 mm</translation>
 <translation id="7366362069757178916">Ödəniş nizamlayıcıları</translation>
 <translation id="7372973238305370288">axtarış nəticəsi</translation>
 <translation id="7374461526650987610">Protokol nizamlayıcıları</translation>
@@ -2550,6 +2562,7 @@
 <translation id="7687186412095877299">Ödəniş formalarına yadda saxladığınız ödəniş metodunu daxil edir</translation>
 <translation id="7687305263118037187">Təkrar cəhdin vaxtı bitdi</translation>
 <translation id="7687451951329798396">Digər mənbələr nə deyir?</translation>
+<translation id="7690647519407127574">Oufuku Haqaki Açıqcası</translation>
 <translation id="7693583928066320343">Səhifə sırası qəbul edildi</translation>
 <translation id="7696089921647603491">Klassik rok və köhnə musiqilər</translation>
 <translation id="769721561045429135">Hazırda yalnız bu cihazda istifadə edilə bilən kartlar var Kartlara baxmaq üçün "Davam edin" seçiminə klikləyin.</translation>
@@ -2723,6 +2736,7 @@
 <translation id="8202370299023114387">Ziddiyət</translation>
 <translation id="8210604850413485128">Veb hostinq</translation>
 <translation id="8211406090763984747">Bağlantı təhlükəsizdir</translation>
+<translation id="8213853114485953510">JIS Exec</translation>
 <translation id="8217240300496046857">Saytlar vebdə sizi izləyən kukilərdən istifadə edə bilmir. Bəzi saytlarda funksiyalar işləməyə bilər.</translation>
 <translation id="8217748145574471584">İnsan resursları</translation>
 <translation id="8218327578424803826">Ayrılmış yer:</translation>
@@ -2936,6 +2950,7 @@
 <translation id="8816395686387277279"><ph name="UPDATE_CHROME_FOCUSED_FRIENDLY_MATCH_TEXT" />, Tab düyməsi, sonra Enter düyməsinə basaraq Chrome ayarlarında Chrome'u güncəlləyin</translation>
 <translation id="8820817407110198400">Əlfəcinlər</translation>
 <translation id="882338992931677877">Manual Yuva</translation>
+<translation id="8830320733681313421">Haqaki Açıqcası</translation>
 <translation id="8834380158646307944">"Anonim pəncərələri bağlayın" düyməsi, Enter düyməsinə basaraq hazırda açıq olan bütün Anonim pəncərələri bağlayın</translation>
 <translation id="883848425547221593">Digər Əlfəcinlər</translation>
 <translation id="884264119367021077">Göndərmə ünvanı</translation>
diff --git a/components/strings/components_strings_bg.xtb b/components/strings/components_strings_bg.xtb
index 9e9892d5..3103cff 100644
--- a/components/strings/components_strings_bg.xtb
+++ b/components/strings/components_strings_bg.xtb
@@ -307,6 +307,7 @@
 <translation id="168841957122794586">Сертификатът на сървъра съдържа слаб криптографски ключ.</translation>
 <translation id="1697532407822776718">Готово!</translation>
 <translation id="1699570257714336246">Липсва информация</translation>
+<translation id="1702815194757674443">ROC 16K</translation>
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706625117072057435">Нива на мащаба</translation>
 <translation id="1706954506755087368">{1,plural, =1{Сървърът не можа да докаже, че е <ph name="DOMAIN" />. Сертификатът му за сигурност е от утре. Това може да се дължи на неправилно конфигуриране или на прехващане на връзката ви от извършител на атака.}other{Сървърът не можа да докаже, че е <ph name="DOMAIN" />. Сертификатът му за сигурност е от # дни в бъдещето. Това може да се дължи на неправилно конфигуриране или на прехващане на връзката ви от извършител на атака.}}</translation>
@@ -395,6 +396,7 @@
 <translation id="192020519938775529">{COUNT,plural, =0{Няма}=1{1 сайт}other{# сайта}}</translation>
 <translation id="1924727005275031552">Нов</translation>
 <translation id="1927439593081478069">Бутон за стартиране на проверка на безопасността в Chrome. Натиснете Enter, за да стартирате такава проверка от настройките на браузъра</translation>
+<translation id="1935995810530254458">Копиране въпреки това</translation>
 <translation id="1939175642807587452">Може да поиска разрешение да изпраща известия</translation>
 <translation id="1943994668912612445">Дизайн</translation>
 <translation id="1945968466830820669">Възможно е да загубите достъп до профила си в организацията или самоличността ви да бъде открадната. Chromium препоръчва да промените паролата си сега.</translation>
@@ -448,6 +450,7 @@
 <translation id="2085876078937250610">Запазване…</translation>
 <translation id="2088086323192747268">Бутон „Управление на синхронизирането“. Натиснете Enter, за да управлявате данните, които да се синхронизират, от настройките на Chrome</translation>
 <translation id="2091887806945687916">Звук</translation>
+<translation id="2093982008204312032">Google Chrome се опитва да изключи Windows Hello за попълване на паролите.</translation>
 <translation id="2094505752054353250">Несъответствие в домейна</translation>
 <translation id="2099652385553570808">Триточково телбодиране отляво</translation>
 <translation id="2101225219012730419">Версия:</translation>
@@ -550,6 +553,7 @@
 <translation id="2359347814217202136">{NUM_DAYS,plural, =0{След по-малко от един ден}=1{След един ден}other{След {NUM_DAYS} дни}}</translation>
 <translation id="2359629602545592467">Няколко</translation>
 <translation id="2359808026110333948">Напред</translation>
+<translation id="2361263712565360498">275 x 395 мм</translation>
 <translation id="236340516568226369">Меню с бутони за преоразмеряване</translation>
 <translation id="2367567093518048410">Ниво</translation>
 <translation id="2380886658946992094">Legal</translation>
@@ -1141,6 +1145,7 @@
 <translation id="4014128326099193693">{COUNT,plural, =1{PDF документ, съдържащ {COUNT} страница}other{PDF документ, съдържащ {COUNT} страници}}</translation>
 <translation id="4022639246993848966">3,5 x 5</translation>
 <translation id="4023431997072828269">Тъй като този формуляр се изпраща посредством незащитена връзка, информацията ви ще е видима за други хора.</translation>
+<translation id="4024923292610332139">изключи TouchID за попълване на паролите</translation>
 <translation id="4025913568718019429">Бутон за управление на настройките за поверителност в Google. Натиснете Enter, за да отворите настройките за поверителност за профила си в Google.</translation>
 <translation id="4030383055268325496">&amp;Отмяна на добавянето</translation>
 <translation id="4031179711345676612">Достъпът до микрофона е разрешен</translation>
@@ -1257,6 +1262,7 @@
 <translation id="42981349822642051">Разгъване</translation>
 <translation id="4300675098767811073">Няколко перфорации отдясно</translation>
 <translation id="4302514097724775343">Докоснете динозавъра, за да играете</translation>
+<translation id="4304049446746819918">{0,plural, =1{Според администраторско правило преместването на този файл в(ъв) <ph name="DESTINATION_NAME" /> не се препоръчва}other{Според администраторско правило преместването на тези файлове в(ъв) <ph name="DESTINATION_NAME" /> не се препоръчва}}</translation>
 <translation id="4305666528087210886">Няма достъп до файла</translation>
 <translation id="4306529830550717874">Да се запази ли адресът?</translation>
 <translation id="4306812610847412719">буферна памет</translation>
@@ -1425,6 +1431,7 @@
 <translation id="4751476147751820511">Сензори за движение или светлина</translation>
 <translation id="4754461935447132332">Не е разрешено за незащитени сайтове</translation>
 <translation id="4756388243121344051">&amp;История</translation>
+<translation id="4756501505996488486">PRC 16K</translation>
 <translation id="4757993714154412917">Току-що въведохте паролата си в измамнически сайт. За да защитите профилите си, Chromium препоръчва да проверите запазените си пароли.</translation>
 <translation id="4758311279753947758">Добавяне на информация за връзка</translation>
 <translation id="4761104368405085019">Използване на микрофона ви</translation>
@@ -1631,6 +1638,7 @@
 <translation id="5254043433801397071">Оптимизиране на съдържанието за отпечатване</translation>
 <translation id="5254958791078852567">E1</translation>
 <translation id="5255690596502591079">Заснемане въпреки това</translation>
+<translation id="5257739419779698609">{0,plural, =1{Според администраторско правило копирането на този файл в(ъв) <ph name="DESTINATION_NAME" /> не се препоръчва}other{Според администраторско правило копирането на тези файлове в(ъв) <ph name="DESTINATION_NAME" /> не се препоръчва}}</translation>
 <translation id="5266128565379329178">Подвързване в горната част</translation>
 <translation id="5269225904387178860">Четворно перфориране в долната част</translation>
 <translation id="5269999699920406580">Функциите, които се прилагат за цялата система, могат да бъдат зададени само от собственика: <ph name="OWNER_EMAIL" />.</translation>
@@ -1693,6 +1701,7 @@
 <translation id="5412236728747081950">Този сайт получава информация за интересите ви от Chrome, за да ви показва по-подходящи реклами</translation>
 <translation id="5412245327974352290"><ph name="TRADITIONAL_TEXT" /> – <ph name="ADDITIONAL_TEXT" /></translation>
 <translation id="541416427766103491">Стакер 4</translation>
+<translation id="5414511064953050917">Преместване въпреки това</translation>
 <translation id="5421136146218899937">Изчистване на данните за сърфирането...</translation>
 <translation id="5425241977284572032">{NUM_COOKIES,plural, =0{Няма блокирани сайтове}=1{Блокиран е 1 сайт}other{Блокирани са # сайта}}</translation>
 <translation id="5426179911063097041"><ph name="SITE" /> иска да ви изпраща известия</translation>
@@ -2163,6 +2172,7 @@
 <translation id="6738516213925468394">На <ph name="TIME" /> данните ви бяха шифровани с <ph name="BEGIN_LINK" />пропуска ви за синхронизиране<ph name="END_LINK" />. Въведете го, за да стартирате синхронизирането.</translation>
 <translation id="674375294223700098">Неизвестна грешка в сертификата на сървъра.</translation>
 <translation id="6744009308914054259">Докато чакате да се установи връзка, можете да посетите страницата „Изтегляния“, за да четете офлайн статии.</translation>
+<translation id="6751487147225428522">ROC 8K</translation>
 <translation id="6752086006821653994">Телеконференция</translation>
 <translation id="6753269504797312559">Стойност за правилото</translation>
 <translation id="6755241357817244406">chrome://flags</translation>
@@ -2196,6 +2206,7 @@
 <translation id="6846340164947227603">Използване на номер на виртуална карта...</translation>
 <translation id="6852204201400771460">Искате ли да презаредите приложението?</translation>
 <translation id="6857776781123259569">Управление на паролите…</translation>
+<translation id="6864189428899665393">267 x 389 мм</translation>
 <translation id="686485648936420384">Потребителски ресурси</translation>
 <translation id="6865412394715372076">Тази карта не може да бъде потвърдена в момента</translation>
 <translation id="6869334554832814367">Потребителски заеми</translation>
@@ -2308,9 +2319,11 @@
 <translation id="7138472120740807366">Начин на бърза доставка</translation>
 <translation id="7139892792842608322">Основна тава</translation>
 <translation id="714064300541049402">Изместване на изображението от страна 2 по оста X</translation>
+<translation id="7143682719845053166">PRC 32K</translation>
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> и още <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}other{<ph name="PAYMENT_METHOD_PREVIEW" /> и още <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}}</translation>
 <translation id="7153618581592392745">лавандулово</translation>
 <translation id="7156870133441232244">Сървърът трябва да се надстрои до TLS 1.2 или по-нова версия.</translation>
+<translation id="7163295244162773898">{0,plural, =1{Да се копира ли поверителният файл?}other{Да се копират ли поверителните файлове?}}</translation>
 <translation id="717330890047184534">Идентификатор в GAIA:</translation>
 <translation id="7174545416324379297">Обединени стойности</translation>
 <translation id="7175401108899573750">{SHIPPING_OPTIONS,plural, =0{<ph name="SHIPPING_OPTION_PREVIEW" />}=1{<ph name="SHIPPING_OPTION_PREVIEW" /> и още <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" />}other{<ph name="SHIPPING_OPTION_PREVIEW" /> и още <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" />}}</translation>
@@ -2388,6 +2401,7 @@
 <translation id="7363096869660964304">Сърфирането ви обаче не е невидимо. При преминаване в режим „инкогнито“ то не се скрива от работодателя ви и от доставчика ви на интернет услуги, нито от уебсайтовете, които посещавате.</translation>
 <translation id="7365596969960773405"><ph name="MANAGE_ADDRESSES_FOCUSED_FRIENDLY_MATCH_TEXT" />. Натиснете Tab и след това Enter, за да добавяте адреси и да ги управлявате от настройките на Chrome</translation>
 <translation id="7365849542400970216">Да се разреши ли достъп до данните за използването на устройството ви?</translation>
+<translation id="7366117520888504990">198 x 275 мм</translation>
 <translation id="7366362069757178916">Приложения за обработване на плащания</translation>
 <translation id="7372973238305370288">резултат от търсенето</translation>
 <translation id="7374461526650987610">Манипулатори на протоколи</translation>
@@ -2547,6 +2561,7 @@
 <translation id="7687186412095877299">Попълване на платежни формуляри със запазените от вас начини на плащане</translation>
 <translation id="7687305263118037187">Времето за изчакване за повторен опит изтече</translation>
 <translation id="7687451951329798396">Какво казват другите източници?</translation>
+<translation id="7690647519407127574">Oufuku Hagaki Postcard</translation>
 <translation id="7693583928066320343">Редът на страниците е получен</translation>
 <translation id="7696089921647603491">Класически рок и песни от миналото</translation>
 <translation id="769721561045429135">В момента имате карти, които могат да се използват само на това устройство. Кликнете върху „Напред“, за да ги прегледате.</translation>
@@ -2720,6 +2735,7 @@
 <translation id="8202370299023114387">Конфликт</translation>
 <translation id="8210604850413485128">Уеб хостинг</translation>
 <translation id="8211406090763984747">Връзката е защитена</translation>
+<translation id="8213853114485953510">JIS Exec</translation>
 <translation id="8217240300496046857">Сайтовете не могат да използват „бисквитки“, които ви следят в мрежата. Функциите в някои от тях може да не работят правилно.</translation>
 <translation id="8217748145574471584">Човешки ресурси</translation>
 <translation id="8218327578424803826">Зададено местоположение:</translation>
@@ -2916,6 +2932,7 @@
 <translation id="8763986294015493060">Затваряне на всички отворени прозорци в режим „инкогнито“</translation>
 <translation id="8766943070169463815">Листът за удостоверяване на идентификационни данни за сигурни плащания е отворен</translation>
 <translation id="8767765348545497220">Затваряне на балончето за помощ</translation>
+<translation id="877348612833018844">{0,plural, =1{Да се премести ли поверителният файл?}other{Да се преместят ли поверителните файлове?}}</translation>
 <translation id="877985182522063539">A4</translation>
 <translation id="8785658048882205566">Мотоциклети</translation>
 <translation id="8790007591277257123">&amp;Възстановяване на изтриването</translation>
@@ -2932,6 +2949,7 @@
 <translation id="8816395686387277279"><ph name="UPDATE_CHROME_FOCUSED_FRIENDLY_MATCH_TEXT" />. Натиснете Tab и след това – Enter, за да актуализирате Chrome от настройките</translation>
 <translation id="8820817407110198400">Отметки</translation>
 <translation id="882338992931677877">Слот за ръчно подаване</translation>
+<translation id="8830320733681313421">Hagaki Postcard</translation>
 <translation id="8834380158646307944">Бутон „Затваряне на прозорците в режим „инкогнито“. Натиснете Enter, за да затворите всички прозорци в режим „инкогнито“</translation>
 <translation id="883848425547221593">Други отметки</translation>
 <translation id="884264119367021077">Адрес за доставка</translation>
diff --git a/components/strings/components_strings_bn.xtb b/components/strings/components_strings_bn.xtb
index 11c37da..fea6677 100644
--- a/components/strings/components_strings_bn.xtb
+++ b/components/strings/components_strings_bn.xtb
@@ -307,6 +307,7 @@
 <translation id="168841957122794586">সার্ভার সার্টিফিকেটে একটি দুর্বল ক্রিপ্টোগ্রাফিক কী আছে৷</translation>
 <translation id="1697532407822776718">আপনার সমস্ত সেট আছে!</translation>
 <translation id="1699570257714336246">সম্পূর্ণ তথ্য দেওয়া হয়নি</translation>
+<translation id="1702815194757674443">ROC 16K</translation>
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706625117072057435">জুম লেভেল</translation>
 <translation id="1706954506755087368">{1,plural, =1{এই সার্ভার যে <ph name="DOMAIN" /> তা এটি প্রমাণ করতে পারেনি; এর নিরাপত্তা সার্টিফিকেটটি আগামীকালের বলে মনে হচ্ছে। কোনও ভুল কনফিগারেশনের কারণে অথবা আপনার সংযোগে বাধাপ্রদানকারী কোনও আক্রমণকারীর কারণে এমনটি হতে পারে।}one{এই সার্ভার যে <ph name="DOMAIN" /> তা এটি প্রমাণ করতে পারেনি; এর নিরাপত্তা সার্টিফিকেটটি আগামী # দিন পরের বলে মনে হচ্ছে। কোনও ভুল কনফিগারেশনের কারণে অথবা আপনার সংযোগে বাধাপ্রদানকারী কোনও আক্রমণকারীর কারণে এমনটি হতে পারে।}other{এই সার্ভার যে <ph name="DOMAIN" /> তা এটি প্রমাণ করতে পারেনি; এর নিরাপত্তা সার্টিফিকেটটি আগামী # দিন পরের বলে মনে হচ্ছে। কোনও ভুল কনফিগারেশনের কারণে অথবা আপনার সংযোগে বাধাপ্রদানকারী কোনও আক্রমণকারীর কারণে এমনটি হতে পারে।}}</translation>
@@ -551,6 +552,7 @@
 <translation id="2359347814217202136">{NUM_DAYS,plural, =0{এক দিনের থেকে কম সময়ের মধ্যে}=1{এক দিনের মধ্যে}one{{NUM_DAYS} দিনের মধ্যে}other{{NUM_DAYS} দিনের মধ্যে}}</translation>
 <translation id="2359629602545592467">একাধিক</translation>
 <translation id="2359808026110333948">চালিয়ে যান</translation>
+<translation id="2361263712565360498">২৭৫ x ৩৯৫ মিমি</translation>
 <translation id="236340516568226369">টগল মেনু উইন্ডোর সাইজ পরিবর্তন করুন</translation>
 <translation id="2367567093518048410">স্তর</translation>
 <translation id="2380886658946992094">Legal</translation>
@@ -1426,6 +1428,7 @@
 <translation id="4751476147751820511">মোশন বা হালকা সেন্সর</translation>
 <translation id="4754461935447132332">শুধুমাত্র সুরক্ষিত সাইটের ক্ষেত্রেই অনুমতি দেওয়া আছে</translation>
 <translation id="4756388243121344051">&amp;ইতিহাস</translation>
+<translation id="4756501505996488486">PRC 16K</translation>
 <translation id="4757993714154412917">আপনি এইমাত্র একটি প্রতারণামূলক সাইটে আপনার পাসওয়ার্ড লিখেছেন। আপনার অ্যাকাউন্ট সুরক্ষিত করার জন্য, Chromium আপনার সেভ করা পাসওয়ার্ড চেক করে নিতে সাজেস্ট করছে।</translation>
 <translation id="4758311279753947758">পরিচিতির তথ্য জুড়ুন</translation>
 <translation id="4761104368405085019">আপনার মাইক্রোফোন ব্যবহার করুন</translation>
@@ -2163,6 +2166,7 @@
 <translation id="6738516213925468394"><ph name="TIME" />-এ আপনার <ph name="BEGIN_LINK" />সিঙ্ক পাসফ্রেজ<ph name="END_LINK" /> দিয়ে ডেটা এনক্রিপ্ট করা হয়েছিল। সিঙ্ক শুরু করতে সেটি লিখুন।</translation>
 <translation id="674375294223700098">অজানা সার্ভার সার্টিফিকেট ত্রুটি৷</translation>
 <translation id="6744009308914054259">কানেকশনের জন্য অপেক্ষা করার সময়, আপনি ডাউনলোডে গিয়ে অফলাইন নিবন্ধগুলি পড়তে পারেন।</translation>
+<translation id="6751487147225428522">ROC 8K</translation>
 <translation id="6752086006821653994">টেলিকনফারেন্সিং</translation>
 <translation id="6753269504797312559">নীতি মান</translation>
 <translation id="6755241357817244406">chrome://flags</translation>
@@ -2196,6 +2200,7 @@
 <translation id="6846340164947227603">কোনও একটি ভার্চুয়াল কার্ড নম্বর ব্যবহার করুন...</translation>
 <translation id="6852204201400771460">আবার অ্যাপ লোড করতে চান?</translation>
 <translation id="6857776781123259569">পাসওয়ার্ড ম্যানেজ করুন…</translation>
+<translation id="6864189428899665393">২৬৭ x ৩৮৯ মিমি</translation>
 <translation id="686485648936420384">কনজিউমার রিসোর্স</translation>
 <translation id="6865412394715372076">এই কার্ডটি এখনই যাচাই করা যাবে না</translation>
 <translation id="6869334554832814367">পার্সোনাল লোন</translation>
@@ -2308,6 +2313,7 @@
 <translation id="7138472120740807366">ডেলিভারির পদ্ধতি</translation>
 <translation id="7139892792842608322">প্রাইমারি ট্রে</translation>
 <translation id="714064300541049402">সাইড 2 ছবি X শিফ্ট</translation>
+<translation id="7143682719845053166">PRC 32K</translation>
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> এবং আরও <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />টি}one{<ph name="PAYMENT_METHOD_PREVIEW" /> এবং আরও <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />টি}other{<ph name="PAYMENT_METHOD_PREVIEW" /> এবং আরও <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />টি}}</translation>
 <translation id="7153618581592392745">ল্যাভেণ্ডার</translation>
 <translation id="7156870133441232244">সার্ভারটিকে TLS 1.2 বা এর পরবর্তী যেকোনও ভার্সনে আপগ্রেড করতে হবে।</translation>
@@ -2388,6 +2394,7 @@
 <translation id="7363096869660964304">তবে, আপনি অদৃশ্য থাকবেন না। ছদ্মবেশী মোড ব্যবহার করলেও আপনার ব্রাউজিং ইতিহাস নিয়োগকর্তা, ইন্টারনেট পরিষেবা প্রদানকারী বা আপনার দেখা ওয়েবসাইটের থেকে লুকানো যাবে না।</translation>
 <translation id="7365596969960773405"><ph name="MANAGE_ADDRESSES_FOCUSED_FRIENDLY_MATCH_TEXT" />, Chrome সেটিংসে ঠিকানা যোগ ও ম্যানেজ করতে প্রথমে Tab, তারপরে Enter প্রেস করুন</translation>
 <translation id="7365849542400970216">আপনি জানেন আপনার ডিভাইস কী কাজে ব্যবহার হয়?</translation>
+<translation id="7366117520888504990">১৯৮ x ২৭৫ মিমি</translation>
 <translation id="7366362069757178916">পেমেন্ট হ্যান্ডলার</translation>
 <translation id="7372973238305370288">ফলাফল খুঁজুন</translation>
 <translation id="7374461526650987610">প্রোটোকল পরিচালনাকারী</translation>
@@ -2547,6 +2554,7 @@
 <translation id="7687186412095877299">আপনার সেভ করা পেমেন্ট পদ্ধতি দিয়ে পেমেন্ট ফর্ম পূরণ করে</translation>
 <translation id="7687305263118037187">আর চেষ্টা করতে পারবেন না</translation>
 <translation id="7687451951329798396">অন্য সোর্সগুলি কি বলছে?</translation>
+<translation id="7690647519407127574">Oufuku Hagaki পোস্টকার্ড</translation>
 <translation id="7693583928066320343">পৃষ্ঠার অর্ডার রিসিভ করা হয়েছে</translation>
 <translation id="7696089921647603491">ক্লাসিক রক ও পুরানো দিনের</translation>
 <translation id="769721561045429135">এই মুহূর্তে, আপনার কাছে থাকা কার্ডগুলি শুধুমাত্র এই ডিভাইসে ব্যবহার করা যেতে পারে। কার্ডগুলির পর্যালোচনা চালিয়ে যেতে ক্লিক করুন।</translation>
@@ -2720,6 +2728,7 @@
 <translation id="8202370299023114387">দ্বন্দ্ব</translation>
 <translation id="8210604850413485128">ওয়েব হোস্টিং</translation>
 <translation id="8211406090763984747">কানেকশনটি নিরাপদ</translation>
+<translation id="8213853114485953510">JIS Exec</translation>
 <translation id="8217240300496046857">যেসব কুকি ওয়েব জুড়ে আপনার অ্যাক্টিভিটি ট্র্যাক করে, সাইট সেগুলি ব্যবহার করতে পারবে না। কিছু সাইটের ফিচার কাজ নাও করতে পারে।</translation>
 <translation id="8217748145574471584">হিডম্যান রিসোর্স</translation>
 <translation id="8218327578424803826">নির্ধারিত লোকেশন:</translation>
@@ -2932,6 +2941,7 @@
 <translation id="8816395686387277279"><ph name="UPDATE_CHROME_FOCUSED_FRIENDLY_MATCH_TEXT" />, আপনার Chrome সেটিংসে Chrome আপডেট করতে, প্রথমে Tab আর তারপরে Enter প্রেস করুন</translation>
 <translation id="8820817407110198400">Bookmarks</translation>
 <translation id="882338992931677877">ম্যানুয়াল স্লট</translation>
+<translation id="8830320733681313421">Hagaki পোস্টকার্ড</translation>
 <translation id="8834380158646307944">'ছদ্মবেশী উইন্ডো বন্ধ করুন' বোতাম, বর্তমানে খোলা আছে এমন সব 'ছদ্মবেশী' উইন্ডো বন্ধ করতে Enter প্রেস করুন</translation>
 <translation id="883848425547221593">অন্যান্য বুকমার্ক</translation>
 <translation id="884264119367021077">শিপিং ঠিকানা</translation>
diff --git a/components/strings/components_strings_bs.xtb b/components/strings/components_strings_bs.xtb
index 5c80cc5..a75e46ab 100644
--- a/components/strings/components_strings_bs.xtb
+++ b/components/strings/components_strings_bs.xtb
@@ -714,6 +714,7 @@
 <translation id="2799223571221894425">Ponovo pokreni</translation>
 <translation id="2803306138276472711">Sigurno pregledanje na Googleu je nedavno <ph name="BEGIN_LINK" />otkrilo zlonamjerni softver<ph name="END_LINK" /> na <ph name="SITE" />. Web lokacije koje su inače sigurne, ponekad se zaraze zlonamjernim softverom.</translation>
 <translation id="2807052079800581569">Y položaj slike</translation>
+<translation id="2808278141522721006">Možete uključiti ili isključiti Windows Hello u odjeljku <ph name="SETTINGS" /></translation>
 <translation id="2820957248982571256">Skeniranje...</translation>
 <translation id="2824775600643448204">Traka za adresu i pretraživanje</translation>
 <translation id="2826760142808435982">Veza je šifrirana i autentificirana koristeći <ph name="CIPHER" /> i koristi <ph name="KX" /> kao glavni mehanizam za razmjenu.</translation>
@@ -884,6 +885,7 @@
 <translation id="3288238092761586174"><ph name="URL" /> možda mora poduzeti dodatne korake da potvrdi vaše plaćanje</translation>
 <translation id="3293642807462928945">Saznajte više o pravilu <ph name="POLICY_NAME" /></translation>
 <translation id="3295444047715739395">Pregledajte lozinke i upravljajte njima u postavkama Chromea</translation>
+<translation id="3299098170013242198">Windows Hello je uključen za popunjavanje lozinki</translation>
 <translation id="3303855915957856445">Nije pronađen nijedan rezultat pretraživanja</translation>
 <translation id="3304073249511302126">skeniranje Bluetootha</translation>
 <translation id="33073482541490531">Lozinka koju ste upravo koristili pronađena je prilikom narušavanja podataka. Upravitelj lozinki preporučuje da odmah promijenite lozinku.</translation>
@@ -1032,6 +1034,7 @@
 <translation id="3678342917559046352">Nevažeća ekstenzija: Očekivana je vrijednost jednog od sljedećih oblika: &lt;extension_id&gt; ili &lt;extension_id&gt;;&lt;update_url&gt;.</translation>
 <translation id="3678529606614285348">Otvorite stranicu u novom anonimnom prozoru (Ctrl – Shift – N)</translation>
 <translation id="3681007416295224113">Informacije o potvrdi</translation>
+<translation id="3699374065820972102">TouchID je uključen za popunjavanje lozinki</translation>
 <translation id="3701427423622901115">Vraćanje na zadano je potvrđeno.</translation>
 <translation id="3704162925118123524">Mreža koju koristite može zahtijevati da posjetite stranicu za prijavu.</translation>
 <translation id="3705189812819839667"><ph name="RESULT_OWNER" /> – <ph name="RESULT_PRODUCT_SOURCE" /></translation>
@@ -1493,6 +1496,7 @@
 <translation id="4900217275619098670">Deveta rolna</translation>
 <translation id="4901778704868714008">Sačuvaj...</translation>
 <translation id="4905659621780993806">Vaš administrator će ponovo pokrenuti uređaj automatski u <ph name="TIME" /> <ph name="DATE" />. Sačuvajte sve otvorene stavke prije ponovnog pokretanja uređaja.</translation>
+<translation id="4911007278801291296">Možete uključiti ili isključiti TouchID u odjeljku <ph name="SETTINGS" /></translation>
 <translation id="4913987521957242411">Bušenje gornjeg lijevog ugla</translation>
 <translation id="4918221908152712722">Instalirajte aplikaciju <ph name="APP_NAME" /> (nije potrebno preuzeti)</translation>
 <translation id="4923459931733593730">Plaćanje</translation>
@@ -1686,6 +1690,7 @@
 <translation id="5357848622083956825">Vizuelna umjetnost i dizajn</translation>
 <translation id="536296301121032821">Pohranjivanje postavki pravila nije uspjelo</translation>
 <translation id="5363309033720083897">Serijski priključak koji je dozvolio vaš administrator</translation>
+<translation id="5363713372507812442">Pretražite putovanja</translation>
 <translation id="5371425731340848620">Ažuriraj karticu</translation>
 <translation id="5377026284221673050">"Sat kasni" ili "Sat brza" ili "&lt;span class="error-code"&gt;NET::ERR_CERT_DATE_INVALID&lt;/span&gt;"</translation>
 <translation id="5379027395132364855">Dugme Kreiraj prezentaciju, pritisnite Enter da brzo kreirate novu Google prezentaciju u Prezentacijama</translation>
diff --git a/components/strings/components_strings_ca.xtb b/components/strings/components_strings_ca.xtb
index c95a46e..69b5b572 100644
--- a/components/strings/components_strings_ca.xtb
+++ b/components/strings/components_strings_ca.xtb
@@ -396,6 +396,7 @@
 <translation id="192020519938775529">{COUNT,plural, =0{Cap}=1{1 lloc}other{# llocs}}</translation>
 <translation id="1924727005275031552">Nous</translation>
 <translation id="1927439593081478069">Botó Executa la comprovació de seguretat de Chrome: prem Retorn per executar la comprovació de seguretat a la configuració de Chrome</translation>
+<translation id="1935995810530254458">Copia igualment</translation>
 <translation id="1939175642807587452">Pot demanar permís per enviar notificacions</translation>
 <translation id="1943994668912612445">Disseny</translation>
 <translation id="1945968466830820669">Podries perdre l'accés al compte de la teva organització o ser víctima d'un robatori d'identitat. Chromium et recomana que canviïs la contrasenya ara.</translation>
@@ -449,6 +450,7 @@
 <translation id="2085876078937250610">Desa…</translation>
 <translation id="2088086323192747268">Botó Gestiona la sincronització: prem Retorn per gestionar la informació que sincronitzes a la configuració de Chrome</translation>
 <translation id="2091887806945687916">So</translation>
+<translation id="2093982008204312032">Google Chrome està provant de desactivar Windows Hello per emplenar contrasenyes.</translation>
 <translation id="2094505752054353250">Els dominis no coincideixen.</translation>
 <translation id="2099652385553570808">Grapat triple a l'esquerra</translation>
 <translation id="2101225219012730419">Versió:</translation>
@@ -1143,6 +1145,7 @@
 <translation id="4014128326099193693">{COUNT,plural, =1{Document PDF que conté {COUNT} pàgina}other{Document PDF que conté {COUNT} pàgines}}</translation>
 <translation id="4022639246993848966">3,5 x 5</translation>
 <translation id="4023431997072828269">Com que el formulari s'està enviant mitjançant una connexió que no és segura, altres persones podran veure la teva informació.</translation>
+<translation id="4024923292610332139">desactivar TouchID per emplenar contrasenyes</translation>
 <translation id="4025913568718019429">Botó Gestiona la configuració de privadesa de Chrome: prem Retorn per visitar la configuració de privadesa del teu Compte de Google</translation>
 <translation id="4030383055268325496">&amp;Desfés l'addició</translation>
 <translation id="4031179711345676612">El micròfon es pot utilitzar</translation>
@@ -1259,6 +1262,7 @@
 <translation id="42981349822642051">Desplega</translation>
 <translation id="4300675098767811073">Encunyació múltiple a la dreta</translation>
 <translation id="4302514097724775343">Toca el dinosaure per jugar</translation>
+<translation id="4304049446746819918">{0,plural, =1{La política de l'administrador no recomana moure aquest fitxer a <ph name="DESTINATION_NAME" />}other{La política de l'administrador no recomana moure aquests fitxers a <ph name="DESTINATION_NAME" />}}</translation>
 <translation id="4305666528087210886">No s'ha pogut accedir al fitxer</translation>
 <translation id="4306529830550717874">Vols desar l'adreça?</translation>
 <translation id="4306812610847412719">porta-retalls</translation>
@@ -1634,6 +1638,7 @@
 <translation id="5254043433801397071">Optimitza el contingut d'impressió</translation>
 <translation id="5254958791078852567">E1</translation>
 <translation id="5255690596502591079">Captura igualment</translation>
+<translation id="5257739419779698609">{0,plural, =1{La política de l'administrador no recomana copiar aquest fitxer a <ph name="DESTINATION_NAME" />}other{La política de l'administrador no recomana copiar aquests fitxers a <ph name="DESTINATION_NAME" />}}</translation>
 <translation id="5266128565379329178">Enquadernació per la part superior</translation>
 <translation id="5269225904387178860">Encunyació quàdruple a la part inferior</translation>
 <translation id="5269999699920406580">Les funcions que s'apliquen a tot el sistema només les pot definir l'usuari: <ph name="OWNER_EMAIL" /></translation>
@@ -1696,6 +1701,7 @@
 <translation id="5412236728747081950">Aquest lloc web obté els teus interessos de Chrome per mostrar-te anuncis més rellevants</translation>
 <translation id="5412245327974352290"><ph name="TRADITIONAL_TEXT" /> - <ph name="ADDITIONAL_TEXT" /></translation>
 <translation id="541416427766103491">Apiladora 4</translation>
+<translation id="5414511064953050917">Mou igualment</translation>
 <translation id="5421136146218899937">Esborra dades de navegació...</translation>
 <translation id="5425241977284572032">{NUM_COOKIES,plural, =0{No s'ha bloquejat cap lloc web}=1{S'ha bloquejat 1 lloc web}other{S'han bloquejat # llocs web}}</translation>
 <translation id="5426179911063097041"><ph name="SITE" /> et vol enviar notificacions</translation>
@@ -2317,6 +2323,7 @@
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> i <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> més}other{<ph name="PAYMENT_METHOD_PREVIEW" /> i <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> més}}</translation>
 <translation id="7153618581592392745">Lavanda</translation>
 <translation id="7156870133441232244">El servidor s'ha d'actualitzar a TLS 1.2 o una versió posterior.</translation>
+<translation id="7163295244162773898">{0,plural, =1{Vols copiar el fitxer confidencial?}other{Vols copiar els fitxers confidencials?}}</translation>
 <translation id="717330890047184534">Identificador de Gaia:</translation>
 <translation id="7174545416324379297">Combinats</translation>
 <translation id="7175401108899573750">{SHIPPING_OPTIONS,plural, =0{<ph name="SHIPPING_OPTION_PREVIEW" />}=1{<ph name="SHIPPING_OPTION_PREVIEW" /> i <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> més}other{<ph name="SHIPPING_OPTION_PREVIEW" /> i <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> més}}</translation>
@@ -2925,6 +2932,7 @@
 <translation id="8763986294015493060">Tanca totes les finestres d'incògnit que estan obertes en aquests moments</translation>
 <translation id="8766943070169463815">El full d'autenticació de credencials de pagament segur està obert</translation>
 <translation id="8767765348545497220">Tanca el quadre d'ajuda</translation>
+<translation id="877348612833018844">{0,plural, =1{Vols moure el fitxer confidencial?}other{Vols moure els fitxers confidencials?}}</translation>
 <translation id="877985182522063539">A4</translation>
 <translation id="8785658048882205566">Motocicletes</translation>
 <translation id="8790007591277257123">&amp;Refés la supressió</translation>
diff --git a/components/strings/components_strings_cy.xtb b/components/strings/components_strings_cy.xtb
index 9ca0069..945cf605 100644
--- a/components/strings/components_strings_cy.xtb
+++ b/components/strings/components_strings_cy.xtb
@@ -396,6 +396,7 @@
 <translation id="192020519938775529">{COUNT,plural, =0{Dim}=1{1 wefan}two{# wefan}few{# gwefan}many{# gwefan}other{# gwefan}}</translation>
 <translation id="1924727005275031552">Newydd</translation>
 <translation id="1927439593081478069">Botwm cynnal gwiriad diogelwch Chrome, pwyswch Enter i gynnal gwiriad diogelwch yng ngosodiadau Chrome</translation>
+<translation id="1935995810530254458">Copïo beth bynnag</translation>
 <translation id="1939175642807587452">Yn gallu gofyn am anfon hysbysiadau</translation>
 <translation id="1943994668912612445">Dylunio</translation>
 <translation id="1945968466830820669">Mae'n bosib y byddwch yn colli mynediad at gyfrif eich sefydliad neu brofi dwyn hunaniaeth. Mae Chromium yn argymell newid eich cyfrinair ar unwaith.</translation>
@@ -449,6 +450,7 @@
 <translation id="2085876078937250610">Cadw…</translation>
 <translation id="2088086323192747268">Botwm rheoli cysoni, pwyswch Enter i reoli pa wybodaeth rydych yn ei chysoni yng ngosodiadau Chrome</translation>
 <translation id="2091887806945687916">Sain</translation>
+<translation id="2093982008204312032">Mae Google Chrome yn ceisio diffodd Windows Hello ar gyfer llenwi cyfrineiriau.</translation>
 <translation id="2094505752054353250">Camgymhariad parth</translation>
 <translation id="2099652385553570808">Tair stapl ar y chwith</translation>
 <translation id="2101225219012730419">Fersiwn:</translation>
@@ -1143,6 +1145,7 @@
 <translation id="4014128326099193693">{COUNT,plural, =1{Dogfen PDF sy'n cynnwys {COUNT} dudalen}zero{Dogfen PDF sy'n cynnwys {COUNT} tudalen}two{Dogfen PDF sy'n cynnwys {COUNT} dudalen}few{Dogfen PDF sy'n cynnwys {COUNT} tudalen}many{Dogfen PDF sy'n cynnwys {COUNT} thudalen}other{Dogfen PDF sy'n cynnwys {COUNT} tudalen}}</translation>
 <translation id="4022639246993848966">3.5x5</translation>
 <translation id="4023431997072828269">Gan fod y ffurflen hon yn cael ei chyflwyno gan ddefnyddio cysylltiad nad yw'n ddiogel, bydd eich gwybodaeth yn weladwy i eraill.</translation>
+<translation id="4024923292610332139">diffodd TouchID ar gyfer llenwi cyfrineiriau</translation>
 <translation id="4025913568718019429">Botwm rheoli gosodiadau preifatrwydd Google, pwyswch Enter i fynd i osodiadau preifatrwydd eich Cyfrif Google</translation>
 <translation id="4030383055268325496">&amp;Dadwneud ychwanegu</translation>
 <translation id="4031179711345676612">Caniateir meicroffon</translation>
@@ -1259,6 +1262,7 @@
 <translation id="42981349822642051">Ehangu</translation>
 <translation id="4300675098767811073">Mwy nag un twll ar y dde</translation>
 <translation id="4302514097724775343">Tapiwch y deino i chwarae</translation>
+<translation id="4304049446746819918">{0,plural, =1{Nid yw'r polisi gweinyddwr yn argymell symud y ffeil hon i <ph name="DESTINATION_NAME" />}zero{Nid yw'r polisi gweinyddwr yn argymell symud y ffeiliau hyn i <ph name="DESTINATION_NAME" />}two{Nid yw'r polisi gweinyddwr yn argymell symud y ffeiliau hyn i <ph name="DESTINATION_NAME" />}few{Nid yw'r polisi gweinyddwr yn argymell symud y ffeiliau hyn i <ph name="DESTINATION_NAME" />}many{Nid yw'r polisi gweinyddwr yn argymell symud y ffeiliau hyn i <ph name="DESTINATION_NAME" />}other{Nid yw'r polisi gweinyddwr yn argymell symud y ffeiliau hyn i <ph name="DESTINATION_NAME" />}}</translation>
 <translation id="4305666528087210886">Ni ellid cyrchu'ch ffeil</translation>
 <translation id="4306529830550717874">Cadw'r cyfeiriad?</translation>
 <translation id="4306812610847412719">clipfwrdd</translation>
@@ -1634,6 +1638,7 @@
 <translation id="5254043433801397071">Optimeiddio'r cynnwys i'w argraffu</translation>
 <translation id="5254958791078852567">E1</translation>
 <translation id="5255690596502591079">Cipio beth bynnag</translation>
+<translation id="5257739419779698609">{0,plural, =1{Nid yw'r polisi gweinyddwr yn argymell copïo'r ffeil hon i <ph name="DESTINATION_NAME" />}zero{Nid yw'r polisi gweinyddwr yn argymell copïo'r ffeiliau hyn i <ph name="DESTINATION_NAME" />}two{Nid yw'r polisi gweinyddwr yn argymell copïo'r ffeiliau hyn i <ph name="DESTINATION_NAME" />}few{Nid yw'r polisi gweinyddwr yn argymell copïo'r ffeiliau hyn i <ph name="DESTINATION_NAME" />}many{Nid yw'r polisi gweinyddwr yn argymell copïo'r ffeiliau hyn i <ph name="DESTINATION_NAME" />}other{Nid yw'r polisi gweinyddwr yn argymell copïo'r ffeiliau hyn i <ph name="DESTINATION_NAME" />}}</translation>
 <translation id="5266128565379329178">Rhwymo i'r brig</translation>
 <translation id="5269225904387178860">Pedwar twll ar y gwaelod</translation>
 <translation id="5269999699920406580">Dim ond y perchennog all osod nodweddion sy'n berthnasol i'r system gyfan: <ph name="OWNER_EMAIL" /></translation>
@@ -1696,6 +1701,7 @@
 <translation id="5412236728747081950">Mae'r wefan hon yn cael eich diddordebau o Chrome i ddangos rhagor o hysbysebion defnyddiol i chi</translation>
 <translation id="5412245327974352290"><ph name="TRADITIONAL_TEXT" /> - <ph name="ADDITIONAL_TEXT" /></translation>
 <translation id="541416427766103491">Pentyrrwr 4</translation>
+<translation id="5414511064953050917">Symud beth bynnag</translation>
 <translation id="5421136146218899937">Clirio data pori…</translation>
 <translation id="5425241977284572032">{NUM_COOKIES,plural, =0{Dim gwefannau wedi'u rhwystro}=1{1 gwefan wedi'i rhwystro}two{# wefan wedi'u rhwystro}few{# gwefan wedi'u rhwystro}many{# gwefan wedi'u rhwystro}other{# gwefan wedi'u rhwystro}}</translation>
 <translation id="5426179911063097041">Mae <ph name="SITE" /> eisiau anfon hysbysiadau atoch</translation>
@@ -2317,6 +2323,7 @@
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> ac <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> arall}two{<ph name="PAYMENT_METHOD_PREVIEW" /> a <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> arall}few{<ph name="PAYMENT_METHOD_PREVIEW" /> a <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> arall}many{<ph name="PAYMENT_METHOD_PREVIEW" /> a <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> arall}other{<ph name="PAYMENT_METHOD_PREVIEW" /> a <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> arall}}</translation>
 <translation id="7153618581592392745">Lafant</translation>
 <translation id="7156870133441232244">Dylai'r gweinydd uwchraddio i TLS 1.2 neu'n ddiweddarach.</translation>
+<translation id="7163295244162773898">{0,plural, =1{Copïo ffeil gyfrinachol?}zero{Copïo ffeiliau cyfrinachol?}two{Copïo ffeiliau cyfrinachol?}few{Copïo ffeiliau cyfrinachol?}many{Copïo ffeiliau cyfrinachol?}other{Copïo ffeiliau cyfrinachol?}}</translation>
 <translation id="717330890047184534">Rhif adnabod GAIA:</translation>
 <translation id="7174545416324379297">Cyfunwyd</translation>
 <translation id="7175401108899573750">{SHIPPING_OPTIONS,plural, =0{<ph name="SHIPPING_OPTION_PREVIEW" />}=1{<ph name="SHIPPING_OPTION_PREVIEW" /> ac <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> arall}two{<ph name="SHIPPING_OPTION_PREVIEW" /> a <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> arall}few{<ph name="SHIPPING_OPTION_PREVIEW" /> a <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> arall}many{<ph name="SHIPPING_OPTION_PREVIEW" /> a <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> arall}other{<ph name="SHIPPING_OPTION_PREVIEW" /> a <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> arall}}</translation>
@@ -2925,6 +2932,7 @@
 <translation id="8763986294015493060">Cau pob ffenestr anhysbys sydd ar agor ar hyn o bryd</translation>
 <translation id="8766943070169463815">Mae'r daflen ddilysu manylion talu ddiogel ar agor</translation>
 <translation id="8767765348545497220">Cau'r swigen help</translation>
+<translation id="877348612833018844">{0,plural, =1{Symud ffeil gyfrinachol?}zero{Symud ffeiliau cyfrinachol?}two{Symud ffeiliau cyfrinachol?}few{Symud ffeiliau cyfrinachol?}many{Symud ffeiliau cyfrinachol?}other{Symud ffeiliau cyfrinachol?}}</translation>
 <translation id="877985182522063539">A4</translation>
 <translation id="8785658048882205566">Beiciau modur</translation>
 <translation id="8790007591277257123">&amp;Ailwneud dileu</translation>
diff --git a/components/strings/components_strings_da.xtb b/components/strings/components_strings_da.xtb
index e5644b9..6354becf 100644
--- a/components/strings/components_strings_da.xtb
+++ b/components/strings/components_strings_da.xtb
@@ -396,6 +396,7 @@
 <translation id="192020519938775529">{COUNT,plural, =0{Ingen}=1{1 website}one{# website}other{# websites}}</translation>
 <translation id="1924727005275031552">Ny</translation>
 <translation id="1927439593081478069">Knappen "Kør Chrome-sikkerhedstjek" – tryk på Enter for at køre sikkerhedstjekket i Chrome-indstillingerne</translation>
+<translation id="1935995810530254458">Kopiér alligevel</translation>
 <translation id="1939175642807587452">Websitet kan anmode om tilladelse til at sende notifikationer</translation>
 <translation id="1943994668912612445">Design</translation>
 <translation id="1945968466830820669">Du kan miste adgangen til din organisations konto eller udsættes for identitetstyveri. Chromium anbefaler, at du skifter din adgangskode nu.</translation>
@@ -449,6 +450,7 @@
 <translation id="2085876078937250610">Gem…</translation>
 <translation id="2088086323192747268">Knappen Administrer synkronisering – tryk på Enter for at administrere, hvilke oplysninger der skal synkroniseres, i Chrome-indstillingerne</translation>
 <translation id="2091887806945687916">Lyd</translation>
+<translation id="2093982008204312032">Google Chrome forsøger at deaktivere udfyldning af adgangskoder via Windows Hello.</translation>
 <translation id="2094505752054353250">Uoverensstemmelse mellem domæner</translation>
 <translation id="2099652385553570808">Trehæftning i venstre side</translation>
 <translation id="2101225219012730419">Version:</translation>
@@ -1143,6 +1145,7 @@
 <translation id="4014128326099193693">{COUNT,plural, =1{PDF-dokument, der indeholder {COUNT} side}one{PDF-dokument, der indeholder {COUNT} side}other{PDF-dokument, der indeholder {COUNT} sider}}</translation>
 <translation id="4022639246993848966">3,5x5</translation>
 <translation id="4023431997072828269">Da denne formular indsendes via en forbindelse, som ikke er sikker, bliver dine oplysninger synlige for andre.</translation>
+<translation id="4024923292610332139">deaktivere udfyldning af adgangskoder via TouchID</translation>
 <translation id="4025913568718019429">Knappen Administrer Google-privatlivsindstillinger – tryk på Enter for at gå til privatlivsindstillingerne for din Google-konto</translation>
 <translation id="4030383055268325496">&amp;Fortryd tilføjelse</translation>
 <translation id="4031179711345676612">Der er givet adgang til mikrofonen</translation>
@@ -1259,6 +1262,7 @@
 <translation id="42981349822642051">Udvid</translation>
 <translation id="4300675098767811073">Flere huller i højre side</translation>
 <translation id="4302514097724775343">Tryk på dinoen for at spille</translation>
+<translation id="4304049446746819918">{0,plural, =1{Administratorpolitikken fraråder at flytte denne fil til <ph name="DESTINATION_NAME" />}one{Administratorpolitikken fraråder at flytte denne fil til <ph name="DESTINATION_NAME" />}other{Administratorpolitikken fraråder at flytte disse filer til <ph name="DESTINATION_NAME" />}}</translation>
 <translation id="4305666528087210886">Din fil kunne ikke tilgås</translation>
 <translation id="4306529830550717874">Vil du gemme adressen?</translation>
 <translation id="4306812610847412719">udklipsholder</translation>
@@ -1634,6 +1638,7 @@
 <translation id="5254043433801397071">Optimer udskriftsindhold</translation>
 <translation id="5254958791078852567">E1</translation>
 <translation id="5255690596502591079">Tag screenshot alligevel</translation>
+<translation id="5257739419779698609">{0,plural, =1{Administratorpolitikken fraråder at flytte denne fil til <ph name="DESTINATION_NAME" />}one{Administratorpolitikken fraråder at flytte denne fil til <ph name="DESTINATION_NAME" />}other{Administratorpolitikken fraråder at flytte disse filer til <ph name="DESTINATION_NAME" />}}</translation>
 <translation id="5266128565379329178">Bind øverst</translation>
 <translation id="5269225904387178860">Fire huller nederst</translation>
 <translation id="5269999699920406580">Funktioner, der gælder for hele systemet, kan kun angives af ejeren: <ph name="OWNER_EMAIL" />.</translation>
@@ -1696,6 +1701,7 @@
 <translation id="5412236728747081950">Dette website henter dine interesser fra Chrome og bruger dem til at vise dig mere relevante annoncer</translation>
 <translation id="5412245327974352290"><ph name="TRADITIONAL_TEXT" /> – <ph name="ADDITIONAL_TEXT" /></translation>
 <translation id="541416427766103491">Stabler 4</translation>
+<translation id="5414511064953050917">Flyt alligevel</translation>
 <translation id="5421136146218899937">Ryd browserdata...</translation>
 <translation id="5425241977284572032">{NUM_COOKIES,plural, =0{Ingen websites er blokeret}=1{1 website er blokeret}one{# website er blokeret}other{# websites er blokeret}}</translation>
 <translation id="5426179911063097041"><ph name="SITE" /> vil gerne sende notifikationer til dig</translation>
@@ -2317,6 +2323,7 @@
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> og <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> anden}one{<ph name="PAYMENT_METHOD_PREVIEW" /> og <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> anden}other{<ph name="PAYMENT_METHOD_PREVIEW" /> og <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> andre}}</translation>
 <translation id="7153618581592392745">Lavendelblå</translation>
 <translation id="7156870133441232244">Serveren skal opgraderes til TLS 1.2 eller nyere.</translation>
+<translation id="7163295244162773898">{0,plural, =1{Vil du kopiere den fortrolige fil?}one{Vil du kopiere den fortrolige fil?}other{Vil du kopiere de fortrolige filer?}}</translation>
 <translation id="717330890047184534">Gaia-id:</translation>
 <translation id="7174545416324379297">Flettet</translation>
 <translation id="7175401108899573750">{SHIPPING_OPTIONS,plural, =0{<ph name="SHIPPING_OPTION_PREVIEW" />}=1{<ph name="SHIPPING_OPTION_PREVIEW" /> og <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> anden}one{<ph name="SHIPPING_OPTION_PREVIEW" /> og <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> anden}other{<ph name="SHIPPING_OPTION_PREVIEW" /> og <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> andre}}</translation>
@@ -2926,6 +2933,7 @@
 <translation id="8763986294015493060">Luk alle inkognitovinduer, der i øjeblikket er åbne</translation>
 <translation id="8766943070169463815">Arket til godkendelse af loginoplysninger til sikker betaling er åbnet</translation>
 <translation id="8767765348545497220">Luk hjælp-boble</translation>
+<translation id="877348612833018844">{0,plural, =1{Vil du flytte den fortrolige fil?}one{Vil du flytte den fortrolige fil?}other{Vil du flytte de fortrolige filer?}}</translation>
 <translation id="877985182522063539">A4</translation>
 <translation id="8785658048882205566">Motorcykler</translation>
 <translation id="8790007591277257123">&amp;Annuller fortryd sletning</translation>
diff --git a/components/strings/components_strings_el.xtb b/components/strings/components_strings_el.xtb
index 72d222a..c61e1170 100644
--- a/components/strings/components_strings_el.xtb
+++ b/components/strings/components_strings_el.xtb
@@ -396,6 +396,7 @@
 <translation id="192020519938775529">{COUNT,plural, =0{Κανένας}=1{1 ιστότοπος}other{# ιστότοποι}}</translation>
 <translation id="1924727005275031552">Νέο</translation>
 <translation id="1927439593081478069">Κουμπί Εκτέλεση ελέγχου ασφαλείας Chrome, πατήστε το πλήκτρο Enter για εκτέλεση του ελέγχου ασφαλείας στις ρυθμίσεις του Chrome</translation>
+<translation id="1935995810530254458">Αντιγραφή ούτως ή άλλως</translation>
 <translation id="1939175642807587452">Μπορεί να ζητά να στέλνει ειδοποιήσεις.</translation>
 <translation id="1943994668912612445">Σχέδιο</translation>
 <translation id="1945968466830820669">Υπάρχει κίνδυνος να χάσετε την πρόσβαση στον λογαριασμό της επιχείρησής σας ή να σας κλέψουν τη διαδικτυακή σας ταυτότητα. Το Chromium συνιστά να αλλάξετε τον κωδικό πρόσβασής σας τώρα.</translation>
@@ -449,6 +450,7 @@
 <translation id="2085876078937250610">Αποθήκευση…</translation>
 <translation id="2088086323192747268">Κουμπί διαχείρισης συγχρονισμού, πατήστε Enter για να διαχειριστείτε τις πληροφορίες που συγχρονίζετε από τις ρυθμίσεις του Chrome</translation>
 <translation id="2091887806945687916">Ήχος</translation>
+<translation id="2093982008204312032">Το Google Chrome επιχειρεί να απενεργοποιήσει το Windows Hello για τη συμπλήρωση κωδικών πρόσβασης.</translation>
 <translation id="2094505752054353250">Αναντιστοιχία τομέα</translation>
 <translation id="2099652385553570808">Τριπλή συρραφή αριστερά</translation>
 <translation id="2101225219012730419">Έκδοση:</translation>
@@ -1144,6 +1146,7 @@
 <translation id="4014128326099193693">{COUNT,plural, =1{Έγγραφο PDF που περιέχει {COUNT} σελίδα}other{Έγγραφο PDF που περιέχει {COUNT} σελίδες}}</translation>
 <translation id="4022639246993848966">3,5x5</translation>
 <translation id="4023431997072828269">Επειδή αυτή η φόρμα υποβάλλεται χρησιμοποιώντας μια σύνδεση που δεν είναι ασφαλής, οι πληροφορίες σας θα είναι ορατές σε άλλους χρήστες.</translation>
+<translation id="4024923292610332139">απενεργοποιήσει το TouchID για τη συμπλήρωση κωδικών πρόσβασης.</translation>
 <translation id="4025913568718019429">Κουμπί Διαχείριση ρυθμίσεων απορρήτου Google, πατήστε Enter για να επισκεφτείτε τις ρυθμίσεις απορρήτου του Λογαριασμού σας Google.</translation>
 <translation id="4030383055268325496">&amp;Αναίρεση προσθήκης</translation>
 <translation id="4031179711345676612">Επιτρέπεται το μικρόφωνο</translation>
@@ -1261,6 +1264,7 @@
 <translation id="42981349822642051">Επέκταση</translation>
 <translation id="4300675098767811073">Πολλαπλό τρύπημα στα δεξιά</translation>
 <translation id="4302514097724775343">Πατήστε τον δεινόσαυρο για να παίξετε.</translation>
+<translation id="4304049446746819918">{0,plural, =1{Η πολιτική διαχειριστή δεν συνιστά τη μετακίνηση αυτού του αρχείου σε <ph name="DESTINATION_NAME" />.}other{Η πολιτική διαχειριστή δεν συνιστά τη μετακίνηση αυτών των αρχείων σε <ph name="DESTINATION_NAME" />.}}</translation>
 <translation id="4305666528087210886">Δεν ήταν δυνατή η πρόσβαση στο αρχείο σας</translation>
 <translation id="4306529830550717874">Αποθήκευση διεύθυνσης;</translation>
 <translation id="4306812610847412719">πρόχειρο</translation>
@@ -1637,6 +1641,7 @@
 <translation id="5254043433801397071">Βελτιστοποίηση περιεχομένου εκτύπωσης</translation>
 <translation id="5254958791078852567">E1</translation>
 <translation id="5255690596502591079">Λήψη ούτως ή άλλως</translation>
+<translation id="5257739419779698609">{0,plural, =1{Η πολιτική διαχειριστή δεν συνιστά την αντιγραφή αυτού του αρχείου σε <ph name="DESTINATION_NAME" />.}other{Η πολιτική διαχειριστή δεν συνιστά την αντιγραφή αυτών των αρχείων σε <ph name="DESTINATION_NAME" />.}}</translation>
 <translation id="5266128565379329178">Βιβλιοδεσία στο επάνω μέρος</translation>
 <translation id="5269225904387178860">Τετραπλό τρύπημα στο κάτω μέρος</translation>
 <translation id="5269999699920406580">Οι λειτουργίες που ισχύουν για ολόκληρο το σύστημα μπορούν να οριστούν μόνο από τον κάτοχο: <ph name="OWNER_EMAIL" />.</translation>
@@ -1699,6 +1704,7 @@
 <translation id="5412236728747081950">Αυτός ο ιστότοπος λαμβάνει πληροφορίες για τα ενδιαφέροντά σας από το Chrome για να εμφανίσει πιο συναφείς διαφημίσεις.</translation>
 <translation id="5412245327974352290"><ph name="TRADITIONAL_TEXT" /> – <ph name="ADDITIONAL_TEXT" /></translation>
 <translation id="541416427766103491">Μονάδα στοίβαξης 4</translation>
+<translation id="5414511064953050917">Μετακίνηση ούτως ή άλλως</translation>
 <translation id="5421136146218899937">Διαγραφή δεδομένων περιήγησης...</translation>
 <translation id="5425241977284572032">{NUM_COOKIES,plural, =0{Κανένας αποκλεισμένος ιστότοπος}=1{1 αποκλεισμένος ιστότοπος}other{# αποκλεισμένοι ιστότοποι}}</translation>
 <translation id="5426179911063097041">Η διεύθυνση <ph name="SITE" /> θέλει να σας στείλει ειδοποιήσεις</translation>
@@ -2321,6 +2327,7 @@
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> και <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> ακόμη}other{<ph name="PAYMENT_METHOD_PREVIEW" /> και <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> ακόμη}}</translation>
 <translation id="7153618581592392745">Λιλά</translation>
 <translation id="7156870133441232244">Ο διακομιστής θα πρέπει να αναβαθμιστεί σε έκδοση TLS 1.2 ή μεταγενέστερη.</translation>
+<translation id="7163295244162773898">{0,plural, =1{Αντιγραφή εμπιστευτικού αρχείου;}other{Αντιγραφή εμπιστευτικών αρχείων;}}</translation>
 <translation id="717330890047184534">Αναγνωριστικό Gaia:</translation>
 <translation id="7174545416324379297">Έγινε συγχώνευση</translation>
 <translation id="7175401108899573750">{SHIPPING_OPTIONS,plural, =0{<ph name="SHIPPING_OPTION_PREVIEW" />}=1{<ph name="SHIPPING_OPTION_PREVIEW" /> και <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> ακόμη}other{<ph name="SHIPPING_OPTION_PREVIEW" /> και <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> ακόμη}}</translation>
@@ -2932,6 +2939,7 @@
 <translation id="8763986294015493060">Κλείστε όλα τα παράθυρα για ανώνυμη περιήγηση που είναι αυτήν τη στιγμή ανοικτά</translation>
 <translation id="8766943070169463815">Το φύλλο ελέγχου ταυτότητας διαπιστευτηρίων για ασφαλείς πληρωμές είναι ανοιχτό</translation>
 <translation id="8767765348545497220">Κλείστε το συννεφάκι βοήθειας</translation>
+<translation id="877348612833018844">{0,plural, =1{Μετακίνηση εμπιστευτικού αρχείου;}other{Μετακίνηση εμπιστευτικών αρχείων;}}</translation>
 <translation id="877985182522063539">A4</translation>
 <translation id="8785658048882205566">Μοτοσικλέτες</translation>
 <translation id="8790007591277257123">&amp;Επανάληψη διαγραφής</translation>
diff --git a/components/strings/components_strings_es-419.xtb b/components/strings/components_strings_es-419.xtb
index 261781ff..37deefd0 100644
--- a/components/strings/components_strings_es-419.xtb
+++ b/components/strings/components_strings_es-419.xtb
@@ -307,6 +307,7 @@
 <translation id="168841957122794586">El certificado del servidor contiene una clave criptográfica no segura.</translation>
 <translation id="1697532407822776718">¡Listo!</translation>
 <translation id="1699570257714336246">Falta información</translation>
+<translation id="1702815194757674443">ROC 16K</translation>
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706625117072057435">Niveles de zoom</translation>
 <translation id="1706954506755087368">{1,plural, =1{El servidor no logró comprobar si el dominio es <ph name="DOMAIN" />; supuestamente, el certificado de seguridad entra en vigencia mañana. Es posible que esto se deba a una configuración incorrecta o a que un atacante haya interceptado la conexión.}other{El servidor no logró comprobar si el dominio es <ph name="DOMAIN" />; supuestamente, el certificado de seguridad entra en vigencia en # días. Es posible que esto se deba a una configuración incorrecta o a que un atacante haya interceptado la conexión.}}</translation>
@@ -550,6 +551,7 @@
 <translation id="2359347814217202136">{NUM_DAYS,plural, =0{En menos de un día}=1{En un día}other{En {NUM_DAYS} días}}</translation>
 <translation id="2359629602545592467">Varias</translation>
 <translation id="2359808026110333948">Continuar</translation>
+<translation id="2361263712565360498">275 × 395 mm</translation>
 <translation id="236340516568226369">Menú para cambio de tamaño</translation>
 <translation id="2367567093518048410">Nivel</translation>
 <translation id="2380886658946992094">Legal</translation>
@@ -1426,6 +1428,7 @@
 <translation id="4751476147751820511">Sensores de luz o movimiento</translation>
 <translation id="4754461935447132332">No se permite para los sitios no seguros</translation>
 <translation id="4756388243121344051">&amp;Historial</translation>
+<translation id="4756501505996488486">PRC 16K</translation>
 <translation id="4757993714154412917">Ingresaste tu contraseña en un sitio engañoso. Para proteger tus cuentas, Chromium te recomienda revisar las contraseñas que tengas guardadas.</translation>
 <translation id="4758311279753947758">Agregar información de contacto</translation>
 <translation id="4761104368405085019">Usar tu micrófono</translation>
@@ -2164,6 +2167,7 @@
 <translation id="6738516213925468394">Tus datos se encriptaron con la <ph name="BEGIN_LINK" />frase de contraseña de sincronización<ph name="END_LINK" /> el <ph name="TIME" />. Ingresa la frase para iniciar la sincronización.</translation>
 <translation id="674375294223700098">Error de certificado de servidor desconocido.</translation>
 <translation id="6744009308914054259">Mientras esperas a que se restablezca la conexión, puedes visitar Descargas para leer artículos sin conexión.</translation>
+<translation id="6751487147225428522">ROC 8K</translation>
 <translation id="6752086006821653994">Videoconferencias</translation>
 <translation id="6753269504797312559">Valor de la política</translation>
 <translation id="6755241357817244406">chrome://flags</translation>
@@ -2197,6 +2201,7 @@
 <translation id="6846340164947227603">Usar un número de tarjeta virtual…</translation>
 <translation id="6852204201400771460">¿Deseas volver a cargar la app?</translation>
 <translation id="6857776781123259569">Administrar contraseñas…</translation>
+<translation id="6864189428899665393">267 × 389 mm</translation>
 <translation id="686485648936420384">Recursos del consumidor</translation>
 <translation id="6865412394715372076">No se puede verificar la tarjeta en este momento</translation>
 <translation id="6869334554832814367">Préstamos personales</translation>
@@ -2309,6 +2314,7 @@
 <translation id="7138472120740807366">Método de entrega</translation>
 <translation id="7139892792842608322">Bandeja principal</translation>
 <translation id="714064300541049402">Cambio en el eje X del lado 2 de la imagen</translation>
+<translation id="7143682719845053166">PRC 32K</translation>
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> y <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> más}other{<ph name="PAYMENT_METHOD_PREVIEW" /> y <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> más}}</translation>
 <translation id="7153618581592392745">Lavanda</translation>
 <translation id="7156870133441232244">El servidor debe actualizarse a TLS 1.2 o versiones posteriores.</translation>
@@ -2389,6 +2395,7 @@
 <translation id="7363096869660964304">Sin embargo, no vas a pasar completamente desapercibido. El modo Incógnito no oculta tu información de navegación de un empleador, del proveedor de servicios de Internet ni de los sitios web que visitas.</translation>
 <translation id="7365596969960773405"><ph name="MANAGE_ADDRESSES_FOCUSED_FRIENDLY_MATCH_TEXT" />: presiona Tab y, luego, Intro para agregar y administrar direcciones en la configuración de Chrome</translation>
 <translation id="7365849542400970216">¿Permites conocer el uso de tu dispositivo?</translation>
+<translation id="7366117520888504990">198 × 275 mm</translation>
 <translation id="7366362069757178916">Controladores de pago</translation>
 <translation id="7372973238305370288">resultado de búsqueda</translation>
 <translation id="7374461526650987610">Controladores de protocolos</translation>
@@ -2548,6 +2555,7 @@
 <translation id="7687186412095877299">Completa los formularios de pago con tus formas de pago guardadas.</translation>
 <translation id="7687305263118037187">Se agotó el tiempo de espera para reintentar</translation>
 <translation id="7687451951329798396">¿Qué dicen otras fuentes?</translation>
+<translation id="7690647519407127574">Postal Oufuku Hagaki</translation>
 <translation id="7693583928066320343">Orden de páginas recibido</translation>
 <translation id="7696089921647603491">Rock clásico</translation>
 <translation id="769721561045429135">En este momento, tienes tarjetas que pueden usarse solo en este dispositivo. Haz clic en Continuar para revisar las tarjetas.</translation>
@@ -2721,6 +2729,7 @@
 <translation id="8202370299023114387">Conflicto</translation>
 <translation id="8210604850413485128">Hosting web</translation>
 <translation id="8211406090763984747">La conexión es segura</translation>
+<translation id="8213853114485953510">JIS Exec</translation>
 <translation id="8217240300496046857">Los sitios no pueden usar cookies para rastrearte en la Web. Es posible que las características de algunos sitios no funcionen adecuadamente.</translation>
 <translation id="8217748145574471584">Recursos Humanos</translation>
 <translation id="8218327578424803826">Ubicación asignada:</translation>
@@ -2934,6 +2943,7 @@
 <translation id="8816395686387277279"><ph name="UPDATE_CHROME_FOCUSED_FRIENDLY_MATCH_TEXT" />: presiona Tab y, luego, Intro para actualizar Chrome desde la configuración del navegador</translation>
 <translation id="8820817407110198400">Favoritos</translation>
 <translation id="882338992931677877">Ranura manual</translation>
+<translation id="8830320733681313421">Postal Hagaki</translation>
 <translation id="8834380158646307944">Botón Cerrar ventanas de incógnito: presiona Intro para cerrar todas las ventanas de incógnito que estén abiertas</translation>
 <translation id="883848425547221593">Otros favoritos</translation>
 <translation id="884264119367021077">Dirección de envío</translation>
diff --git a/components/strings/components_strings_es.xtb b/components/strings/components_strings_es.xtb
index 8711c72..11651d5 100644
--- a/components/strings/components_strings_es.xtb
+++ b/components/strings/components_strings_es.xtb
@@ -99,7 +99,7 @@
 <translation id="1228893227497259893">Identificador de entidad incorrecto</translation>
 <translation id="1232569758102978740">Sin título</translation>
 <translation id="1236081509407217141">¿Permitir realidad virtual?</translation>
-<translation id="1238915852705750309">Antivirus y software malicioso</translation>
+<translation id="1238915852705750309">Antivirus y malware</translation>
 <translation id="1240347957665416060">El nombre de tu dispositivo</translation>
 <translation id="124116460088058876">Más idiomas</translation>
 <translation id="1243027604378859286">Autor:</translation>
@@ -199,7 +199,7 @@
 <translation id="1430915738399379752">Imprimir</translation>
 <translation id="1432187715652018471">página quiere instalar un controlador de servicios.</translation>
 <translation id="1432581352905426595">Gestionar buscadores</translation>
-<translation id="1435940442311036198">Usar una clave de acceso en otro dispositivo</translation>
+<translation id="1435940442311036198">Usar una llave de acceso en otro dispositivo</translation>
 <translation id="1436185428532214179">Puede solicitar permiso para editar archivos y carpetas de tu dispositivo</translation>
 <translation id="1442386063175183758">Plegado en ventana a la derecha</translation>
 <translation id="1442987760062738829">Perforar</translation>
@@ -710,7 +710,7 @@
 <translation id="2792012897584536778">Los administradores de este dispositivo han configurado certificados de seguridad que pueden permitirles ver el contenido de los sitios web que visitas.</translation>
 <translation id="2799020568854403057">El sitio web al que vas a acceder contiene aplicaciones dañinas</translation>
 <translation id="2799223571221894425">Reiniciar</translation>
-<translation id="2803306138276472711">Recientemente, la función de Navegación segura de Google <ph name="BEGIN_LINK" />ha detectado software malicioso<ph name="END_LINK" /> en <ph name="SITE" />. En ocasiones, los sitios web que normalmente son seguros contienen software malicioso.</translation>
+<translation id="2803306138276472711">Recientemente, la función de Navegación segura de Google <ph name="BEGIN_LINK" />ha detectado malware<ph name="END_LINK" /> en <ph name="SITE" />. En ocasiones, los sitios web que normalmente son seguros contienen malware.</translation>
 <translation id="2807052079800581569">Posición de la imagen en el eje Y</translation>
 <translation id="2820957248982571256">Buscando...</translation>
 <translation id="2824775600643448204">Barra de direcciones y de búsqueda </translation>
@@ -1052,7 +1052,7 @@
 <translation id="3738166223076830879">Tu administrador gestiona el navegador.</translation>
 <translation id="3740319564441798148">Autobuses y trenes de larga distancia</translation>
 <translation id="3744111561329211289">Sincronización en segundo plano</translation>
-<translation id="3744286742364977428">Los archivos que descargas se envían a Google Cloud o a terceros para que se analicen. Por ejemplo, puede que se analicen para buscar datos sensibles o software malicioso y que se almacenen de acuerdo con las políticas de la empresa.</translation>
+<translation id="3744286742364977428">Los archivos que descargas se envían a Google Cloud o a terceros para que se analicen. Por ejemplo, puede que se analicen para buscar datos sensibles o malware y que se almacenen de acuerdo con las políticas de la empresa.</translation>
 <translation id="3744899669254331632">No puedes acceder a <ph name="SITE" /> en este momento porque el sitio web ha enviado credenciales codificadas que Chromium no puede procesar. Los ataques y los errores de red suelen ser temporales, por lo que es probable que esta página funcione más tarde.</translation>
 <translation id="3745099705178523657">Una vez que confirmes esta acción, la información de la tarjeta de tu cuenta de Google se compartirá con este sitio web.</translation>
 <translation id="3748148204939282805">Es posible que los atacantes que se encuentren en <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> intenten engañarte para que realices una acción peligrosa, como instalar software o revelar tu información personal (por ejemplo, contraseñas, números de teléfono o tarjetas de crédito). <ph name="BEGIN_LEARN_MORE_LINK" />Más información<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -1822,7 +1822,7 @@
 <translation id="5764920692828389743">Enviar a <ph name="EMAIL_ADDRESS" /></translation>
 <translation id="5765072501007116331">Selecciona una dirección para ver los métodos de entrega y los requisitos</translation>
 <translation id="57689295674415555">¿No se ha introducido el número de tarjeta virtual?</translation>
-<translation id="5772086939108830423">Usar una clave de acceso en otro dispositivo</translation>
+<translation id="5772086939108830423">Usar una llave de acceso en otro dispositivo</translation>
 <translation id="5776313857861697733">Prioridad</translation>
 <translation id="5781136890105823427">Experimento habilitado</translation>
 <translation id="578305955206182703">Ámbar</translation>
@@ -1881,7 +1881,7 @@
 <translation id="5938153366081463283">Añadir tarjeta virtual</translation>
 <translation id="5938793338444039872">Troy</translation>
 <translation id="5946937721014915347">Abriendo <ph name="SITE_NAME" />…</translation>
-<translation id="5947508410139465809">Los archivos que subas o adjuntes se enviarán a Google Cloud o a terceros para que se analicen. Por ejemplo, puede que se analicen para buscar datos sensibles o software malicioso y que se almacenen de acuerdo con las políticas de la empresa.</translation>
+<translation id="5947508410139465809">Los archivos que subas o adjuntes se enviarán a Google Cloud o a terceros para que se analicen. Por ejemplo, puede que se analicen para buscar datos sensibles o malware y que se almacenen de acuerdo con las políticas de la empresa.</translation>
 <translation id="5951495562196540101">No te puedes registrar con una cuenta de consumidor (hay una licencia asociada disponible).</translation>
 <translation id="5953516610448771166">Subtítulos automáticos no está disponible en este contenido multimedia. Para ver subtítulos, bloquea <ph name="CONTENT_SETTINGS" /> en este sitio.</translation>
 <translation id="5955063559762970069">Hoteles y alojamiento</translation>
@@ -1978,7 +1978,7 @@
 <translation id="6203231073485539293">Comprueba tu conexión a Internet</translation>
 <translation id="6218753634732582820">¿Quitar dirección de Chromium?</translation>
 <translation id="622039917539443112">Plegado en paralelo</translation>
-<translation id="6221345481584921695">Recientemente, la función de Navegación segura de Google <ph name="BEGIN_LINK" />ha detectado software malicioso<ph name="END_LINK" /> en <ph name="SITE" />. En ocasiones, los sitios web que normalmente son seguros contienen software malicioso. Este contenido malintencionado procede de <ph name="SUBRESOURCE_HOST" />, un conocido distribuidor de software malicioso.</translation>
+<translation id="6221345481584921695">Recientemente, la función de Navegación segura de Google <ph name="BEGIN_LINK" />ha detectado malware<ph name="END_LINK" /> en <ph name="SITE" />. En ocasiones, los sitios web que normalmente son seguros contienen malware. Este contenido malintencionado procede de <ph name="SUBRESOURCE_HOST" />, un conocido distribuidor de malware.</translation>
 <translation id="6226163402662242066"><ph name="MANAGE_CHROME_ACCESSIBILITY_FOCUSED_FRIENDLY_MATCH_TEXT" />: pulsa Tabulador y, después, Intro para personalizar las herramientas de accesibilidad desde la configuración de Chrome</translation>
 <translation id="6229649258872345286">Viajes familiares</translation>
 <translation id="6232271601416750929">Belleza con productos sostenibles</translation>
@@ -2285,7 +2285,7 @@
 <translation id="7068733155164172741">Introduce el código de <ph name="OTP_LENGTH" /> dígitos</translation>
 <translation id="70705239631109039">Tu conexión no es completamente segura</translation>
 <translation id="7075452647191940183">La solicitud es demasiado grande</translation>
-<translation id="7079718277001814089">Este sitio web contiene software malicioso</translation>
+<translation id="7079718277001814089">Este sitio web contiene malware</translation>
 <translation id="7081308185095828845">Esta función no está disponible en tu dispositivo</translation>
 <translation id="7083258188081898530">Bandeja 9</translation>
 <translation id="7086090958708083563">Subida solicitada por el usuario</translation>
@@ -2350,7 +2350,7 @@
 <translation id="7240120331469437312">Nombre alternativo de la entidad receptora del certificado</translation>
 <translation id="7243010569062352439"><ph name="PASSWORDS" />; <ph name="SIGNIN_DATA" /></translation>
 <translation id="7244465398154211886">{NUM_MATCHES,plural, =1{# coincidencia}other{# coincidencias}}</translation>
-<translation id="724691107663265825">El sitio web al que vas a acceder contiene software malicioso</translation>
+<translation id="724691107663265825">El sitio web al que vas a acceder contiene malware</translation>
 <translation id="724975217298816891">Introduce la fecha de caducidad y el código CVC de la tarjeta <ph name="CREDIT_CARD" /> para actualizar sus detalles. Cuando la confirmes, su información se compartirá con este sitio web.</translation>
 <translation id="7251437084390964440">La configuración de red no cumple el estándar ONC. Es posible que no se importen algunas partes de la configuración.
 Más información:
@@ -3042,7 +3042,7 @@
 <translation id="9096425087209440047"><ph name="SET_CHROME_AS_DEFAULT_BROWSER_FOCUSED_FRIENDLY_MATCH_TEXT" />, pulsa Tabulador y luego Intro para establecer Chrome como navegador predeterminado del sistema en los ajustes de iOS</translation>
 <translation id="9096679202588811390">Series y programas de televisión</translation>
 <translation id="9101630580131696064">Bandeja 1</translation>
-<translation id="9102081333385212048">Los archivos que copies o muevas se enviarán a Google Cloud o a terceros para que se analicen. Por ejemplo, puede que se analicen para buscar datos sensibles o software malicioso.</translation>
+<translation id="9102081333385212048">Los archivos que copies o muevas se enviarán a Google Cloud o a terceros para que se analicen. Por ejemplo, puede que se analicen para buscar datos sensibles o malware.</translation>
 <translation id="9103537084693478942">Software para vídeos</translation>
 <translation id="9103872766612412690"><ph name="SITE" /> utiliza normalmente el cifrado para proteger tu información. Cuando Chromium intentó establecer conexión con <ph name="SITE" />, el sitio web devolvió unas credenciales inusuales e incorrectas. Esto puede ocurrir si un atacante intenta suplantar la identidad de <ph name="SITE" /> o si una pantalla de inicio de sesión Wi-Fi interrumpe la conexión. Tu información sigue estando protegida, ya que Chromium detuvo la conexión antes de que se intercambiaran datos.</translation>
 <translation id="9106062320799175032">Añade una dirección de facturación</translation>
diff --git a/components/strings/components_strings_fi.xtb b/components/strings/components_strings_fi.xtb
index 80819b6f..30ba055 100644
--- a/components/strings/components_strings_fi.xtb
+++ b/components/strings/components_strings_fi.xtb
@@ -396,6 +396,7 @@
 <translation id="192020519938775529">{COUNT,plural, =0{Ei mitään}=1{1 sivusto}other{# sivustoa}}</translation>
 <translation id="1924727005275031552">Uusi</translation>
 <translation id="1927439593081478069">Tee Chromen turvatarkistus ‑painike, tee turvatarkistus Chromen asetuksissa painamalla Enter</translation>
+<translation id="1935995810530254458">Kopioi silti</translation>
 <translation id="1939175642807587452">Saa pyytää lupaa ilmoitusten lähettämiseen</translation>
 <translation id="1943994668912612445">Suunnittelu</translation>
 <translation id="1945968466830820669">Voit menettää organisaatiosi tilin käyttöoikeuden tai joutua identiteettivarkauden uhriksi. Chromium suosittelee vaihtamaan salasanan välittömästi.</translation>
@@ -449,6 +450,7 @@
 <translation id="2085876078937250610">Tallenna…</translation>
 <translation id="2088086323192747268">Muuta synkronointivalintoja ‑painike, paina Enter, niin voit valita synkronoitavat tiedot Chromen asetuksista</translation>
 <translation id="2091887806945687916">Ääni</translation>
+<translation id="2093982008204312032">Google Chrome yrittää laittaa Windows Hellon pois päältä salasanojen täyttämistä varten.</translation>
 <translation id="2094505752054353250">Verkkotunnukset eivät ole yhteensopivat</translation>
 <translation id="2099652385553570808">Kolme niittiä vasemmalla</translation>
 <translation id="2101225219012730419">Versio:</translation>
@@ -1144,6 +1146,7 @@
 <translation id="4014128326099193693">{COUNT,plural, =1{PDF-dokumentti, jossa on {COUNT} sivu}other{PDF-dokumentti, jossa on {COUNT} sivua}}</translation>
 <translation id="4022639246993848966">3.5x5</translation>
 <translation id="4023431997072828269">Koska lomake lähetetään suojaamattomalla yhteydellä, tietosi näkyvät muille.</translation>
+<translation id="4024923292610332139">laittaa TouchID:n pois päältä salasanojen täyttämistä varten</translation>
 <translation id="4025913568718019429">Tarkista Googlen yksityisyysasetukset ‑painike, siirry Google-tilisi yksityisyysasetuksiin painamalla Enter</translation>
 <translation id="4030383055268325496">K&amp;umoa lisäys</translation>
 <translation id="4031179711345676612">Mikrofoni sallittu</translation>
@@ -1260,6 +1263,7 @@
 <translation id="42981349822642051">Laajenna</translation>
 <translation id="4300675098767811073">Useita reikiä oikealla</translation>
 <translation id="4302514097724775343">Pelaa napauttamalla dinosaurusta</translation>
+<translation id="4304049446746819918">{0,plural, =1{Järjestelmänvalvojakäytännössä ei suositella tiedoston siirtämistä tänne: <ph name="DESTINATION_NAME" />}other{Järjestelmänvalvojakäytännössä ei suositella tiedostojen siirtämistä tänne: <ph name="DESTINATION_NAME" />}}</translation>
 <translation id="4305666528087210886">Tiedostoa ei voi käyttää</translation>
 <translation id="4306529830550717874">Tallennetaanko osoite?</translation>
 <translation id="4306812610847412719">leikepöytä</translation>
@@ -1635,6 +1639,7 @@
 <translation id="5254043433801397071">Optimoi tulostussisältö</translation>
 <translation id="5254958791078852567">E1</translation>
 <translation id="5255690596502591079">Ota kuvakaappaus silti</translation>
+<translation id="5257739419779698609">{0,plural, =1{Järjestelmänvalvojakäytännössä ei suositella tiedoston kopioimista tänne: <ph name="DESTINATION_NAME" />}other{Järjestelmänvalvojakäytännössä ei suositella tiedostojen kopioimista tänne: <ph name="DESTINATION_NAME" />}}</translation>
 <translation id="5266128565379329178">Sidottu yläreunassa</translation>
 <translation id="5269225904387178860">Neljä reikää alareunassa</translation>
 <translation id="5269999699920406580">Koko järjestelmään vaikuttavat ominaisuudet voi tehdä vain omistaja: <ph name="OWNER_EMAIL" /></translation>
@@ -1697,6 +1702,7 @@
 <translation id="5412236728747081950">Tämä sivusto saa kiinnostuksen kohteesi Chromesta, jotta voit nähdä osuvampia mainoksia</translation>
 <translation id="5412245327974352290"><ph name="TRADITIONAL_TEXT" /> – <ph name="ADDITIONAL_TEXT" /></translation>
 <translation id="541416427766103491">Pinoaja 4</translation>
+<translation id="5414511064953050917">Siirrä silti</translation>
 <translation id="5421136146218899937">Poista selaustiedot...</translation>
 <translation id="5425241977284572032">{NUM_COOKIES,plural, =0{Ei estettyjä sivustoja}=1{1 sivusto estetty}other{# sivustoa estetty}}</translation>
 <translation id="5426179911063097041"><ph name="SITE" /> haluaa lähettää sinulle ilmoituksia</translation>
@@ -2318,6 +2324,7 @@
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> ja <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> toinen}other{<ph name="PAYMENT_METHOD_PREVIEW" /> ja <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> muuta}}</translation>
 <translation id="7153618581592392745">Laventeli</translation>
 <translation id="7156870133441232244">Palvelin pitäisi päivittää TLS 1.2:een tai uudempaan versioon.</translation>
+<translation id="7163295244162773898">{0,plural, =1{Kopioidaanko luottamuksellinen tiedosto?}other{Kopioidaanko luottamukselliset tiedostot?}}</translation>
 <translation id="717330890047184534">Gaia-tunnus:</translation>
 <translation id="7174545416324379297">Yhdistetty</translation>
 <translation id="7175401108899573750">{SHIPPING_OPTIONS,plural, =0{<ph name="SHIPPING_OPTION_PREVIEW" />}=1{<ph name="SHIPPING_OPTION_PREVIEW" /> ja <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> toinen}other{<ph name="SHIPPING_OPTION_PREVIEW" /> ja <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> muuta}}</translation>
@@ -2927,6 +2934,7 @@
 <translation id="8763986294015493060">Sulje kaikki tällä hetkellä avoinna olevat incognito-ikkunat</translation>
 <translation id="8766943070169463815">Suojatun maksun kirjautumistietojen todennuspaneeli on avattu</translation>
 <translation id="8767765348545497220">Sulje ohjekupla</translation>
+<translation id="877348612833018844">{0,plural, =1{Siirretäänkö luottamuksellinen tiedosto?}other{Siirretäänkö luottamukselliset tiedostot?}}</translation>
 <translation id="877985182522063539">A4</translation>
 <translation id="8785658048882205566">Moottoripyörät</translation>
 <translation id="8790007591277257123">&amp;Toista poisto</translation>
diff --git a/components/strings/components_strings_fil.xtb b/components/strings/components_strings_fil.xtb
index dc33b8d..afe9ff5 100644
--- a/components/strings/components_strings_fil.xtb
+++ b/components/strings/components_strings_fil.xtb
@@ -396,6 +396,7 @@
 <translation id="192020519938775529">{COUNT,plural, =0{Wala}=1{1 site}one{# site}other{# na site}}</translation>
 <translation id="1924727005275031552">Bago</translation>
 <translation id="1927439593081478069">Pindutin ang button ng pag-check sa kaligtasan sa Chrome, pindutin ang Enter para magpatakbo ng pag-check sa kaligtasan sa Chrome sa mga setting ng Chrome</translation>
+<translation id="1935995810530254458">Kopyahin pa rin</translation>
 <translation id="1939175642807587452">Puwedeng hilinging magpadala ng mga notification</translation>
 <translation id="1943994668912612445">Disenyo</translation>
 <translation id="1945968466830820669">Maaari kang mawalan ng access sa account ng iyong organisasyon o manakawan ng pagkakakilanlan. Inirerekomenda ng Chromium na palitan ang iyong password ngayon.</translation>
@@ -449,6 +450,7 @@
 <translation id="2085876078937250610">I-save…</translation>
 <translation id="2088086323192747268">Button na Pamahalaan ang pag-sync, pindutin ang Enter para pamahalaan kung anong impormasyon ang isi-sync mo sa mga setting ng Chrome</translation>
 <translation id="2091887806945687916">Tunog</translation>
+<translation id="2093982008204312032">Sinusubukan ng Google Chrome na i-off ang Windows Hello para sa paglalagay ng mga password.</translation>
 <translation id="2094505752054353250">Maling pagtutugma sa domain</translation>
 <translation id="2099652385553570808">Triple staple left</translation>
 <translation id="2101225219012730419">Bersyon:</translation>
@@ -1143,6 +1145,7 @@
 <translation id="4014128326099193693">{COUNT,plural, =1{PDF na dokumentong naglalaman ng {COUNT} page}one{PDF na dokumentong naglalaman ng {COUNT} page}other{PDF na dokumentong naglalaman ng {COUNT} na page}}</translation>
 <translation id="4022639246993848966">3.5x5</translation>
 <translation id="4023431997072828269">Dahil isinusumite ang form na ito gamit ang isang koneksyong hindi secure, makikita ng iba ang iyong impormasyon.</translation>
+<translation id="4024923292610332139">I-off ang TouchID para sa paglalagay ng mga password</translation>
 <translation id="4025913568718019429">Button na Pamahalaan ang mga setting ng Privacy ng Google, pindutin ang Enter para bisitahin ang mga setting ng privacy ng iyong Google Account</translation>
 <translation id="4030383055268325496">&amp;I-undo ang pagdagdag</translation>
 <translation id="4031179711345676612">Pinapayagan ang mikropono</translation>
@@ -1259,6 +1262,7 @@
 <translation id="42981349822642051">Palawakin</translation>
 <translation id="4300675098767811073">Multiple punch right</translation>
 <translation id="4302514097724775343">I-tap ang dino para maglaro</translation>
+<translation id="4304049446746819918">{0,plural, =1{Hindi inirerekomenda ng patakaran ng administrator na ilipat ang file na ito sa <ph name="DESTINATION_NAME" />}one{Hindi inirerekomenda ng patakaran ng administrator na ilipat ang mga file na ito sa <ph name="DESTINATION_NAME" />}other{Hindi inirerekomenda ng patakaran ng administrator na ilipat ang mga file na ito sa <ph name="DESTINATION_NAME" />}}</translation>
 <translation id="4305666528087210886">Hindi ma-access ang iyong file</translation>
 <translation id="4306529830550717874">I-save ang address?</translation>
 <translation id="4306812610847412719">clipboard</translation>
@@ -1634,6 +1638,7 @@
 <translation id="5254043433801397071">I-optimize ang content ng print</translation>
 <translation id="5254958791078852567">E1</translation>
 <translation id="5255690596502591079">I-capture pa rin</translation>
+<translation id="5257739419779698609">{0,plural, =1{Hindi inirerekomenda ng patakaran ng administrator na kopyahin ang file na ito sa <ph name="DESTINATION_NAME" />}one{Hindi inirerekomenda ng patakaran ng administrator na kopyahin ang mga file na ito sa <ph name="DESTINATION_NAME" />}other{Hindi inirerekomenda ng patakaran ng administrator na kopyahin ang mga file na ito sa <ph name="DESTINATION_NAME" />}}</translation>
 <translation id="5266128565379329178">Bind top</translation>
 <translation id="5269225904387178860">Quad punch bottom</translation>
 <translation id="5269999699920406580">Ang makakapagtakda lang ng mga feature na nalalapat sa buong system ay ang may-ari: <ph name="OWNER_EMAIL" /></translation>
@@ -1696,6 +1701,7 @@
 <translation id="5412236728747081950">Kinukuha ng site na ito ang iyong mga interes mula sa Chrome para makapagpakita sa iyo ng higit pang nauugnay na ad</translation>
 <translation id="5412245327974352290"><ph name="TRADITIONAL_TEXT" />, <ph name="ADDITIONAL_TEXT" /></translation>
 <translation id="541416427766103491">Stacker 4</translation>
+<translation id="5414511064953050917">Ilipat pa rin</translation>
 <translation id="5421136146218899937">I-clear ang data sa pag-browse...</translation>
 <translation id="5425241977284572032">{NUM_COOKIES,plural, =0{Walang naka-block na site}=1{1 site ang naka-block}one{# site ang naka-block}other{# na site ang naka-block}}</translation>
 <translation id="5426179911063097041">Gusto ng <ph name="SITE" /> na padalhan ka ng mga notification</translation>
@@ -2317,6 +2323,7 @@
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> at <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> pa}one{<ph name="PAYMENT_METHOD_PREVIEW" /> at <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> pa}other{<ph name="PAYMENT_METHOD_PREVIEW" /> at <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> pa}}</translation>
 <translation id="7153618581592392745">Lavender</translation>
 <translation id="7156870133441232244">Dapat i-upgrade ang server sa TLS 1.2 o mas bago.</translation>
+<translation id="7163295244162773898">{0,plural, =1{Kopyahin ang kumpidensyal na file?}one{Kopyahin ang mga kumpidensyal na file?}other{Kopyahin ang mga kumpidensyal na file?}}</translation>
 <translation id="717330890047184534">Gaia ID:</translation>
 <translation id="7174545416324379297">Naka-merge</translation>
 <translation id="7175401108899573750">{SHIPPING_OPTIONS,plural, =0{<ph name="SHIPPING_OPTION_PREVIEW" />}=1{<ph name="SHIPPING_OPTION_PREVIEW" /> at <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> pa}one{<ph name="SHIPPING_OPTION_PREVIEW" /> at <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> pa}other{<ph name="SHIPPING_OPTION_PREVIEW" /> at <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> pa}}</translation>
@@ -2925,6 +2932,7 @@
 <translation id="8763986294015493060">Isara ang lahat ng Incognito window na kasalukuyang nakabukas</translation>
 <translation id="8766943070169463815">Binuksan ang sheet para sa pag-authenticate ng kredensyal sa secure na pagbabayad</translation>
 <translation id="8767765348545497220">Isara ang bubble ng tulong</translation>
+<translation id="877348612833018844">{0,plural, =1{Ilipat ang kumpidensyal na file?}one{Ilipat ang mga kumpidensyal na file?}other{Ilipat ang mga kumpidensyal na file?}}</translation>
 <translation id="877985182522063539">A4</translation>
 <translation id="8785658048882205566">Mga motorsiklo</translation>
 <translation id="8790007591277257123">&amp;Gawing muli ang pagtanggal</translation>
diff --git a/components/strings/components_strings_fr.xtb b/components/strings/components_strings_fr.xtb
index 584ddf0..5ad1348 100644
--- a/components/strings/components_strings_fr.xtb
+++ b/components/strings/components_strings_fr.xtb
@@ -307,6 +307,7 @@
 <translation id="168841957122794586">Le certificat du serveur contient une clé de chiffrement faible.</translation>
 <translation id="1697532407822776718">Vous êtes prêt !</translation>
 <translation id="1699570257714336246">Informations manquantes</translation>
+<translation id="1702815194757674443">ROC 16K</translation>
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706625117072057435">Niveaux de zoom</translation>
 <translation id="1706954506755087368">{1,plural, =1{Impossible de vérifier que ce serveur est bien <ph name="DOMAIN" />, car la date d'émission de son certificat de sécurité est fixée à demain. Cela peut être dû à une mauvaise configuration ou bien à l'interception de votre connexion par un pirate informatique.}one{Impossible de vérifier que ce serveur est bien <ph name="DOMAIN" />, car la date d'émission de son certificat de sécurité est ultérieure de # jour à la date du jour. Cela peut être dû à une mauvaise configuration ou bien à l'interception de votre connexion par un pirate informatique.}other{Impossible de vérifier que ce serveur est bien <ph name="DOMAIN" />, car la date d'émission de son certificat de sécurité est ultérieure de # jours à la date du jour. Cela peut être dû à une mauvaise configuration ou bien à l'interception de votre connexion par un pirate informatique.}}</translation>
@@ -550,6 +551,7 @@
 <translation id="2359347814217202136">{NUM_DAYS,plural, =0{Dans moins de 1 jour}=1{Dans 1 jour}one{Dans {NUM_DAYS} jour}other{Dans {NUM_DAYS} jours}}</translation>
 <translation id="2359629602545592467">Plusieurs</translation>
 <translation id="2359808026110333948">Continuer</translation>
+<translation id="2361263712565360498">275 x 395 mm</translation>
 <translation id="236340516568226369">Menu d'activation/de désactivation du redimensionnement</translation>
 <translation id="2367567093518048410">Niveau</translation>
 <translation id="2380886658946992094">Legal</translation>
@@ -1425,6 +1427,7 @@
 <translation id="4751476147751820511">Capteurs de mouvement ou de lumière</translation>
 <translation id="4754461935447132332">Non autorisées sur les sites non sécurisés</translation>
 <translation id="4756388243121344051">&amp;Historique</translation>
+<translation id="4756501505996488486">PRC 16K</translation>
 <translation id="4757993714154412917">Vous venez de saisir votre mot de passe sur un site trompeur. Pour sécuriser vos comptes, Chromium vous recommande de vérifier vos mots de passe enregistrés.</translation>
 <translation id="4758311279753947758">Ajouter des coordonnées</translation>
 <translation id="4761104368405085019">Utiliser votre micro</translation>
@@ -2163,6 +2166,7 @@
 <translation id="6738516213925468394">Vos données ont été chiffrées avec votre <ph name="BEGIN_LINK" />phrase secrète de synchronisation<ph name="END_LINK" /> le <ph name="TIME" />. Saisissez-la pour lancer la synchronisation.</translation>
 <translation id="674375294223700098">Erreur inconnue liée au certificat du serveur.</translation>
 <translation id="6744009308914054259">En attendant d'avoir une connexion, vous pouvez consulter les téléchargements pour lire des articles hors connexion.</translation>
+<translation id="6751487147225428522">ROC 8K</translation>
 <translation id="6752086006821653994">Téléconférences</translation>
 <translation id="6753269504797312559">Valeur de la règle</translation>
 <translation id="6755241357817244406">chrome://flags</translation>
@@ -2196,6 +2200,7 @@
 <translation id="6846340164947227603">Utiliser un numéro de carte virtuelle…</translation>
 <translation id="6852204201400771460">Actualiser l'application ?</translation>
 <translation id="6857776781123259569">Gérer les mots de passe…</translation>
+<translation id="6864189428899665393">267 x 389 mm</translation>
 <translation id="686485648936420384">Ressources pour les consommateurs</translation>
 <translation id="6865412394715372076">Impossible de valider cette carte pour le moment</translation>
 <translation id="6869334554832814367">Prêts personnels</translation>
@@ -2308,6 +2313,7 @@
 <translation id="7138472120740807366">Mode de livraison</translation>
 <translation id="7139892792842608322">Bac principal</translation>
 <translation id="714064300541049402">Décalage X de l'image côté 2</translation>
+<translation id="7143682719845053166">PRC 32K</translation>
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> et <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> autre}one{<ph name="PAYMENT_METHOD_PREVIEW" /> et <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> autre}other{<ph name="PAYMENT_METHOD_PREVIEW" /> et <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> autres}}</translation>
 <translation id="7153618581592392745">Lavande</translation>
 <translation id="7156870133441232244">Le serveur doit passer à TLS 1.2 ou version ultérieure.</translation>
@@ -2389,6 +2395,7 @@
 <translation id="7363096869660964304">Cela ne vous rend pas invisible pour autant. Si vous passez en navigation privée, votre employeur, votre fournisseur d'accès à Internet ou les sites Web que vous consultez pourront toujours avoir accès à votre navigation.</translation>
 <translation id="7365596969960773405"><ph name="MANAGE_ADDRESSES_FOCUSED_FRIENDLY_MATCH_TEXT" /> : appuyez sur Tabulation, puis sur Entrée pour gérer les adresses et en ajouter dans les paramètres Chrome</translation>
 <translation id="7365849542400970216">Savoir si vous utilisez cet appareil ?</translation>
+<translation id="7366117520888504990">198 x 275 mm</translation>
 <translation id="7366362069757178916">Gestionnaires de paiement</translation>
 <translation id="7372973238305370288">résultat de recherche</translation>
 <translation id="7374461526650987610">Gestionnaires de protocoles</translation>
@@ -2548,6 +2555,7 @@
 <translation id="7687186412095877299">Saisir automatiquement les informations correspondant aux modes de paiement enregistrés</translation>
 <translation id="7687305263118037187">Délai de nouvelle tentative</translation>
 <translation id="7687451951329798396">Qu'en disent les autres sources ?</translation>
+<translation id="7690647519407127574">Oufuku Hagaki (carte postale)</translation>
 <translation id="7693583928066320343">Ordre des pages reçu</translation>
 <translation id="7696089921647603491">Vieux classiques du rock</translation>
 <translation id="769721561045429135">Vous disposez actuellement de plusieurs cartes qui ne peuvent être utilisées que sur cet appareil. Cliquez sur "Continuer" pour examiner les cartes.</translation>
@@ -2721,6 +2729,7 @@
 <translation id="8202370299023114387">Conflit</translation>
 <translation id="8210604850413485128">Hébergement Web</translation>
 <translation id="8211406090763984747">La connexion est sécurisée</translation>
+<translation id="8213853114485953510">JIS Exec</translation>
 <translation id="8217240300496046857">Les sites ne peuvent pas utiliser de cookies pour suivre votre activité sur le Web. Les fonctionnalités de certains sites peuvent être bloquées.</translation>
 <translation id="8217748145574471584">Ressources humaines</translation>
 <translation id="8218327578424803826">Position attribuée : </translation>
@@ -2933,6 +2942,7 @@
 <translation id="8816395686387277279"><ph name="UPDATE_CHROME_FOCUSED_FRIENDLY_MATCH_TEXT" /> : appuyer sur Tabulation, puis Entrée pour mettre à jour Chrome depuis les paramètres du navigateur</translation>
 <translation id="8820817407110198400">Favoris</translation>
 <translation id="882338992931677877">Emplacement manuel</translation>
+<translation id="8830320733681313421">Hagaki (carte postale)</translation>
 <translation id="8834380158646307944">Bouton "Fermer les fenêtres de navigation privée", puis Entrée pour fermer toutes les fenêtres de navigation privée actuellement ouvertes</translation>
 <translation id="883848425547221593">Autres favoris</translation>
 <translation id="884264119367021077">Adresse de livraison</translation>
diff --git a/components/strings/components_strings_gl.xtb b/components/strings/components_strings_gl.xtb
index 4b73594a..e55fa2d 100644
--- a/components/strings/components_strings_gl.xtb
+++ b/components/strings/components_strings_gl.xtb
@@ -307,6 +307,7 @@
 <translation id="168841957122794586">O certificado do servidor contén unha clave criptográfica non segura.</translation>
 <translation id="1697532407822776718">Listo!</translation>
 <translation id="1699570257714336246">Falta información</translation>
+<translation id="1702815194757674443">ROC 16K</translation>
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706625117072057435">Niveis de zoom</translation>
 <translation id="1706954506755087368">{1,plural, =1{Este servidor non puido demostrar que é <ph name="DOMAIN" /> porque o seu certificado de seguranza supostamente é válido a partir de mañá. É posible que isto se deba a un erro de configuración ou a que un atacante interceptase a túa conexión.}other{Este servidor non puido demostrar que é <ph name="DOMAIN" /> porque o seu certificado de seguranza supostamente é válido dentro de # días. É posible que isto se deba a un erro de configuración ou a que un atacante interceptase a túa conexión.}}</translation>
@@ -550,6 +551,7 @@
 <translation id="2359347814217202136">{NUM_DAYS,plural, =0{En menos dun día}=1{Nun día}other{En {NUM_DAYS} días}}</translation>
 <translation id="2359629602545592467">Varias divisas</translation>
 <translation id="2359808026110333948">Continuar</translation>
+<translation id="2361263712565360498">275 x 395 mm</translation>
 <translation id="236340516568226369">Menú dos botóns do cambio de tamaño</translation>
 <translation id="2367567093518048410">Nivel</translation>
 <translation id="2380886658946992094">Legal</translation>
@@ -1425,6 +1427,7 @@
 <translation id="4751476147751820511">Sensores de movemento ou de luz</translation>
 <translation id="4754461935447132332">Non se permite para os sitios non seguros</translation>
 <translation id="4756388243121344051">&amp;Historial</translation>
+<translation id="4756501505996488486">PRC 16K</translation>
 <translation id="4757993714154412917">Acabas de escribir o teu contrasinal nun sitio enganoso. Para protexer as túas contas, Chromium recoméndache que comprobes os contrasinais que tes gardados.</translation>
 <translation id="4758311279753947758">Engadir información de contacto</translation>
 <translation id="4761104368405085019">Utilizar o micrófono</translation>
@@ -2163,6 +2166,7 @@
 <translation id="6738516213925468394">Os teus datos encriptáronse coa túa <ph name="BEGIN_LINK" />frase de acceso de sincronización<ph name="END_LINK" /> o <ph name="TIME" />. Introdúcea para comezar a sincronización.</translation>
 <translation id="674375294223700098">Erro de certificado de servidor descoñecido.</translation>
 <translation id="6744009308914054259">Mentres esperas a que se recupere a conexión, podes ler artigos sen conexión en Descargas.</translation>
+<translation id="6751487147225428522">ROC 8K</translation>
 <translation id="6752086006821653994">Videoconferencias</translation>
 <translation id="6753269504797312559">Valor de política</translation>
 <translation id="6755241357817244406">chrome://flags</translation>
@@ -2196,6 +2200,7 @@
 <translation id="6846340164947227603">Usar un número de conta virtual…</translation>
 <translation id="6852204201400771460">Queres volver cargar a aplicación?</translation>
 <translation id="6857776781123259569">Xestiona os contrasinais…</translation>
+<translation id="6864189428899665393">267 x 389 mm</translation>
 <translation id="686485648936420384">Recursos para consumidores</translation>
 <translation id="6865412394715372076">Esta tarxeta non puido verificarse neste momento</translation>
 <translation id="6869334554832814367">Préstamos persoais</translation>
@@ -2308,6 +2313,7 @@
 <translation id="7138472120740807366">Método de entrega</translation>
 <translation id="7139892792842608322">Bandexa principal</translation>
 <translation id="714064300541049402">Desprazamento do lado 2 da imaxe no eixe X</translation>
+<translation id="7143682719845053166">PRC 32K</translation>
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> e <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> máis}other{<ph name="PAYMENT_METHOD_PREVIEW" /> e <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> máis}}</translation>
 <translation id="7153618581592392745">Lavanda</translation>
 <translation id="7156870133441232244">O servidor debería actualizarse a TLS 1.2 ou a unha versión posterior.</translation>
@@ -2388,6 +2394,7 @@
 <translation id="7363096869660964304">Con todo, non es invisible. O modo de incógnito non impide que o teu xefe, o teu fornecedor de servizos de Internet ou os sitios web que visitas obteñan información sobre como navegas.</translation>
 <translation id="7365596969960773405"><ph name="MANAGE_ADDRESSES_FOCUSED_FRIENDLY_MATCH_TEXT" />. Para engadir e xestionar enderezos na configuración de Chrome, preme Tabulador e, a continuación, Introducir</translation>
 <translation id="7365849542400970216">Queres permitir a detección do uso do dispositivo?</translation>
+<translation id="7366117520888504990">198 x 275 mm</translation>
 <translation id="7366362069757178916">Controladores de pago</translation>
 <translation id="7372973238305370288">resultado da busca</translation>
 <translation id="7374461526650987610">Controladores de protocolo</translation>
@@ -2547,6 +2554,7 @@
 <translation id="7687186412095877299">Cubre os formularios de pago cos teus métodos de pago gardados</translation>
 <translation id="7687305263118037187">Tempo de espera dos reintentos</translation>
 <translation id="7687451951329798396">Que din outras fontes?</translation>
+<translation id="7690647519407127574">Oufuku Hagaki (postal)</translation>
 <translation id="7693583928066320343">Recibiuse a orde das páxinas</translation>
 <translation id="7696089921647603491">Clásicos do rock e do pop</translation>
 <translation id="769721561045429135">Neste momento, tes tarxetas que só se poden utilizar neste dispositivo. Fai clic en Continuar para revisar as tarxetas.</translation>
@@ -2720,6 +2728,7 @@
 <translation id="8202370299023114387">Conflito</translation>
 <translation id="8210604850413485128">Aloxamento web</translation>
 <translation id="8211406090763984747">A conexión é segura</translation>
+<translation id="8213853114485953510">JIS Exec</translation>
 <translation id="8217240300496046857">Os sitios non poden usar cookies para seguirte pola Web. As funcións dalgúns sitios poden quedar bloqueadas.</translation>
 <translation id="8217748145574471584">Recursos humanos</translation>
 <translation id="8218327578424803826">Localización asignada:</translation>
@@ -2932,6 +2941,7 @@
 <translation id="8816395686387277279"><ph name="UPDATE_CHROME_FOCUSED_FRIENDLY_MATCH_TEXT" />. Preme Tab e, a continuación, Intro para actualizar Chrome desde a configuración do navegador</translation>
 <translation id="8820817407110198400">Marcadores</translation>
 <translation id="882338992931677877">Oco manual</translation>
+<translation id="8830320733681313421">Hagaki (postal)</translation>
 <translation id="8834380158646307944">Botón para pechar as ventás do modo de incógnito. se queres pechar todas as ventás do modo de incógnito que estean abertas, preme Introducir</translation>
 <translation id="883848425547221593">Outros marcadores</translation>
 <translation id="884264119367021077">Enderezo de envío</translation>
diff --git a/components/strings/components_strings_gu.xtb b/components/strings/components_strings_gu.xtb
index 64942f5..a527c2fd 100644
--- a/components/strings/components_strings_gu.xtb
+++ b/components/strings/components_strings_gu.xtb
@@ -396,6 +396,7 @@
 <translation id="192020519938775529">{COUNT,plural, =0{કોઈ નહીં}=1{1 સાઇટ}one{# સાઇટ}other{# સાઇટ}}</translation>
 <translation id="1924727005275031552">નવું</translation>
 <translation id="1927439593081478069">Chromeની સલામતી માટે તપાસ ચલાવવાનું બટન, Chrome સેટિંગમાં સલામતી માટે તપાસ ચલાવવા માટે Enter કી દબાવો</translation>
+<translation id="1935995810530254458">કોઈપણ રીતે કૉપિ કરો</translation>
 <translation id="1939175642807587452">નોટિફિકેશન મોકલવાનું પૂછી શકે છે</translation>
 <translation id="1943994668912612445">ડિઝાઇન</translation>
 <translation id="1945968466830820669">તમે તમારી સંસ્થાના એકાઉન્ટ માટે ઍક્સેસ ગુમાવી શકો છો અથવા તમને ઓળખ ચોરીનો અનુભવ થઈ શકે છે. Chromium તમને હમણાં જ તમારો પાસવર્ડ બદલવાની ભલામણ કરે છે.</translation>
@@ -449,6 +450,7 @@
 <translation id="2085876078937250610">સાચવો…</translation>
 <translation id="2088086323192747268">સિંક બટન મેનેજ કરો, તેમજ Chrome સેટિંગમાં તમે જે માહિતી સિંક કરવા ઇચ્છતા હો, તે મેનેજ કરવા માટે Enter કી દબાવો</translation>
 <translation id="2091887806945687916">ધ્વનિ</translation>
+<translation id="2093982008204312032">Google Chrome પાસવર્ડ ભરવા માટે Windows Hello બંધ કરવાનો પ્રયાસ કરી રહ્યું છે.</translation>
 <translation id="2094505752054353250">ડોમેન મેળ ખાતું નથી</translation>
 <translation id="2099652385553570808">ડાબી બાજુએ ત્રણ સ્ટેપલ લગાવો</translation>
 <translation id="2101225219012730419">વર્ઝન:</translation>
@@ -1143,6 +1145,7 @@
 <translation id="4014128326099193693">{COUNT,plural, =1{{COUNT} પેજ ધરાવતો PDF દસ્તાવેજ}one{{COUNT} પેજ ધરાવતો PDF દસ્તાવેજ}other{{COUNT} પેજ ધરાવતો PDF દસ્તાવેજ}}</translation>
 <translation id="4022639246993848966">3.5x5</translation>
 <translation id="4023431997072828269">અસુરક્ષિત કનેક્શનનો ઉપયોગ કરીને આ ફોર્મ સબમિટ કરવામાં આવી રહ્યું હોવાથી, તમારી માહિતી અન્ય લોકોને દેખાઈ શકે છે.</translation>
+<translation id="4024923292610332139">પાસવર્ડ ભરવા માટે TouchID બંધ કરો</translation>
 <translation id="4025913568718019429">Google પ્રાઇવસી સેટિંગ મેનેજ કરવા માટેનું બટન, તમારા Google એકાઉન્ટના પ્રાઇવસી સેટિંગની મુલાકાત લેવા માટે Enter કી દબાવો</translation>
 <translation id="4030383055268325496">&amp;ઉમેરવું પૂર્વવત્ કરો</translation>
 <translation id="4031179711345676612">માઇક્રોફોનને મંજૂરી</translation>
@@ -1259,6 +1262,7 @@
 <translation id="42981349822642051">વિસ્તૃત કરો</translation>
 <translation id="4300675098767811073">જમણી બાજુએ એકથી વધુ કાણાં પાડો</translation>
 <translation id="4302514097724775343">રમવા માટે, ડાયનાસોર પર ટૅપ કરો</translation>
+<translation id="4304049446746819918">{0,plural, =1{ઍડમિનિસ્ટ્રેટરની પૉલિસી આ ફાઇલને <ph name="DESTINATION_NAME" /> પર ખસેડવાનો સુઝાવ આપતી નથી}one{ઍડમિનિસ્ટ્રેટરની પૉલિસી આ ફાઇલને <ph name="DESTINATION_NAME" /> પર ખસેડવાનો સુઝાવ આપતી નથી}other{ઍડમિનિસ્ટ્રેટરની પૉલિસી આ ફાઇલોને <ph name="DESTINATION_NAME" /> પર ખસેડવાનો સુઝાવ આપતી નથી}}</translation>
 <translation id="4305666528087210886">તમારી ફાઇલ ઍક્સેસ કરી શકાઈ નથી</translation>
 <translation id="4306529830550717874">સરનામું સાચવીએ?</translation>
 <translation id="4306812610847412719">ક્લિપબોર્ડ</translation>
@@ -1634,6 +1638,7 @@
 <translation id="5254043433801397071">પ્રિન્ટ કન્ટેન્ટને ઑપ્ટિમાઇઝ કરો</translation>
 <translation id="5254958791078852567">E1</translation>
 <translation id="5255690596502591079">તેમ છતાં કૅપ્ચર કરો</translation>
+<translation id="5257739419779698609">{0,plural, =1{ઍડમિનિસ્ટ્રેટરની પૉલિસી આ ફાઇલને <ph name="DESTINATION_NAME" /> પર કૉપિ કરવાનો સુઝાવ આપતી નથી}one{ઍડમિનિસ્ટ્રેટરની પૉલિસી આ ફાઇલને <ph name="DESTINATION_NAME" /> પર કૉપિ કરવાનો સુઝાવ આપતી નથી}other{ઍડમિનિસ્ટ્રેટરની પૉલિસી આ ફાઇલોને <ph name="DESTINATION_NAME" /> પર કૉપિ કરવાનો સુઝાવ આપતી નથી}}</translation>
 <translation id="5266128565379329178">ઉપરની બાજુએ જોડો</translation>
 <translation id="5269225904387178860">નીચે ચતુષ્કોણ કાણું પાડો</translation>
 <translation id="5269999699920406580">સુવિધાઓ કે જે સિસ્ટમ-વ્યાપી લાગુ છે તે ફક્ત માલિક દ્વારા જ સેટ કરી શકાય છે: <ph name="OWNER_EMAIL" /></translation>
@@ -1696,6 +1701,7 @@
 <translation id="5412236728747081950">તમને વધુ સંબંધિત હોય તેવી જાહેરાતો બતાવી શકાય તે માટે આ સાઇટ Chromeમાંથી તમારી રુચિઓ મેળવે છે</translation>
 <translation id="5412245327974352290"><ph name="TRADITIONAL_TEXT" /> - <ph name="ADDITIONAL_TEXT" /></translation>
 <translation id="541416427766103491">સ્ટૅકર 4</translation>
+<translation id="5414511064953050917">કોઈપણ રીતે ખસેડો</translation>
 <translation id="5421136146218899937">બ્રાઉઝિંગ ડેટા સાફ કરો...</translation>
 <translation id="5425241977284572032">{NUM_COOKIES,plural, =0{કોઈ સાઇટને બ્લૉક કરી નથી}=1{1 સાઇટને બ્લૉક કરી}one{# સાઇટને બ્લૉક કરી}other{# સાઇટને બ્લૉક કરી}}</translation>
 <translation id="5426179911063097041"><ph name="SITE" />તમને નોટિફિકેશનો મોકલવા માગે છે</translation>
@@ -2317,6 +2323,7 @@
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> અને <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> વધુ}one{<ph name="PAYMENT_METHOD_PREVIEW" /> અને <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> વધુ}other{<ph name="PAYMENT_METHOD_PREVIEW" /> અને <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> વધુ}}</translation>
 <translation id="7153618581592392745">આછો જાંબલી</translation>
 <translation id="7156870133441232244">સર્વરને TLS 1.2 અથવા તે પછીના વર્ઝન પર અપગ્રેડ કરવું જોઈએ.</translation>
+<translation id="7163295244162773898">{0,plural, =1{શું ગોપનીય ફાઇલ કૉપિ કરીએ?}one{શું ગોપનીય ફાઇલ કૉપિ કરીએ?}other{શું ગોપનીય ફાઇલો કૉપિ કરીએ?}}</translation>
 <translation id="717330890047184534">Gaia ID:</translation>
 <translation id="7174545416324379297">મર્જ કર્યાં</translation>
 <translation id="7175401108899573750">{SHIPPING_OPTIONS,plural, =0{<ph name="SHIPPING_OPTION_PREVIEW" />}=1{<ph name="SHIPPING_OPTION_PREVIEW" /> અને <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> વધુ}one{<ph name="SHIPPING_OPTION_PREVIEW" /> અને <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> વધુ}other{<ph name="SHIPPING_OPTION_PREVIEW" /> અને <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> વધુ}}</translation>
@@ -2925,6 +2932,7 @@
 <translation id="8763986294015493060">હાલમાં ખુલ્લી બધી છૂપી વિન્ડો બંધ કરો</translation>
 <translation id="8766943070169463815">સુરક્ષિત ચુકવણી માટે લૉગ ઇન વિગતના પ્રમાણીકરણની શીટ ખુલ્લી છે</translation>
 <translation id="8767765348545497220">સહાયનું બબલ બંધ કરો</translation>
+<translation id="877348612833018844">{0,plural, =1{શું ગોપનીય ફાઇલ ખસેડીએ?}one{શું ગોપનીય ફાઇલ ખસેડીએ?}other{શું ગોપનીય ફાઇલો ખસેડીએ?}}</translation>
 <translation id="877985182522063539">A4</translation>
 <translation id="8785658048882205566">મોટરસાઇકલ</translation>
 <translation id="8790007591277257123">&amp;ફરી ડિલીટ કરો</translation>
diff --git a/components/strings/components_strings_hi.xtb b/components/strings/components_strings_hi.xtb
index 96bdd7f..4cb5405 100644
--- a/components/strings/components_strings_hi.xtb
+++ b/components/strings/components_strings_hi.xtb
@@ -307,6 +307,7 @@
 <translation id="168841957122794586">सर्वर प्रमाणपत्र में कमज़ोर क्रिप्टोग्राफ़िक कुंजी है.</translation>
 <translation id="1697532407822776718">आप बिलकुल तैयार हैं!</translation>
 <translation id="1699570257714336246">जानकारी मौजूद नहीं है</translation>
+<translation id="1702815194757674443">ROC 16K</translation>
 <translation id="1703835215927279855">लेटर</translation>
 <translation id="1706625117072057435">ज़ूम स्तर</translation>
 <translation id="1706954506755087368">{1,plural, =1{यह सर्वर प्रमाणित नहीं कर सका कि यह <ph name="DOMAIN" /> है; इसका सुरक्षा प्रमाणपत्र कल से माना जाएगा. ऐसा गलत कॉन्फ़िगरेशन के कारण या किसी आक्रमणकर्ता द्वारा आपके कनेक्शन को बाधित करने के कारण हो सकता है.}one{यह सर्वर प्रमाणित नहीं कर सका कि यह <ph name="DOMAIN" /> है; इसका सुरक्षा प्रमाणपत्र # दिन बाद से माना जाएगा. ऐसा गलत कॉन्फ़िगरेशन के कारण या किसी आक्रमणकर्ता द्वारा आपके कनेक्शन को बाधित करने के कारण हो सकता है.}other{यह सर्वर प्रमाणित नहीं कर सका कि यह <ph name="DOMAIN" /> है; इसका सुरक्षा प्रमाणपत्र # दिन बाद से माना जाएगा. ऐसा गलत कॉन्फ़िगरेशन के कारण या किसी आक्रमणकर्ता द्वारा आपके कनेक्शन को बाधित करने के कारण हो सकता है.}}</translation>
@@ -551,6 +552,7 @@
 <translation id="2359347814217202136">{NUM_DAYS,plural, =0{एक दिन से भी पहले}=1{एक दिन में}one{{NUM_DAYS} दिन में}other{{NUM_DAYS} दिनों में}}</translation>
 <translation id="2359629602545592467">एक से ज़्यादा</translation>
 <translation id="2359808026110333948">जारी रखें</translation>
+<translation id="2361263712565360498">275 x 395 मि॰मी॰</translation>
 <translation id="236340516568226369">टॉगल मेन्यू का साइज़ बदलें</translation>
 <translation id="2367567093518048410">स्तर</translation>
 <translation id="2380886658946992094">कानूनी</translation>
@@ -1425,6 +1427,7 @@
 <translation id="4751476147751820511">गति या लाइट सेंसर</translation>
 <translation id="4754461935447132332">सिर्फ़ सुरक्षित साइटों को ही अनुमति है</translation>
 <translation id="4756388243121344051">&amp;इतिहास</translation>
+<translation id="4756501505996488486">PRC 16K</translation>
 <translation id="4757993714154412917">आपने अभी जिस साइट पर अपना पासवर्ड डाला है वह सुरक्षित नहीं है. अपने खातों को सुरक्षित करने के लिए, Chromium का सुझाव है कि आप सेव किए गए पासवर्ड की जांच करें.</translation>
 <translation id="4758311279753947758">संपर्क जानकारी जोड़ें</translation>
 <translation id="4761104368405085019">अपना माइक्रोफ़ोन उपयोग करें</translation>
@@ -2163,6 +2166,7 @@
 <translation id="6738516213925468394">आपका डेटा <ph name="TIME" /> को <ph name="BEGIN_LINK" />सिंक करने के लिए लंबा पासवर्ड बनाकर<ph name="END_LINK" /> सुरक्षित किया गया था. सिंक शुरू करने के लिए पासवर्ड डालें.</translation>
 <translation id="674375294223700098">अज्ञात सर्वर प्रमाणपत्र गड़बड़ी.</translation>
 <translation id="6744009308914054259">कनेक्शन का इंतज़ार करते समय, ऑफ़लाइन लेख पढ़ने के लिए आप 'डाउनलोड' पर जा सकते हैं.</translation>
+<translation id="6751487147225428522">ROC 8K</translation>
 <translation id="6752086006821653994">टेली कॉन्फ़्रेंसिंग</translation>
 <translation id="6753269504797312559">नीति मान</translation>
 <translation id="6755241357817244406">chrome://flags</translation>
@@ -2196,6 +2200,7 @@
 <translation id="6846340164947227603">वर्चुअल कार्ड संख्या का इस्तेमाल करें...</translation>
 <translation id="6852204201400771460">ऐप्लिकेशन फिर लोड करें?</translation>
 <translation id="6857776781123259569">पासवर्ड मैनेज करें...</translation>
+<translation id="6864189428899665393">267 x 389 मि॰मी॰</translation>
 <translation id="686485648936420384">उपभोक्ता संसाधन</translation>
 <translation id="6865412394715372076">इस कार्ड की पुष्टि अभी नहीं की जा सकती</translation>
 <translation id="6869334554832814367">निजी क़र्ज़</translation>
@@ -2308,6 +2313,7 @@
 <translation id="7138472120740807366">वितरण का तरीका</translation>
 <translation id="7139892792842608322">प्राइमरी ट्रे</translation>
 <translation id="714064300541049402">साइड 2 इमेज X शिफ़्ट</translation>
+<translation id="7143682719845053166">PRC 32K</translation>
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> और <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> अन्य}one{<ph name="PAYMENT_METHOD_PREVIEW" /> और <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> अन्य}other{<ph name="PAYMENT_METHOD_PREVIEW" /> और <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> अन्य}}</translation>
 <translation id="7153618581592392745">हल्का बैंगनी</translation>
 <translation id="7156870133441232244">इस सर्वर को TLS 1.2 या इसके बाद वाले वर्शन पर अपग्रेड करना होगा.</translation>
@@ -2388,6 +2394,7 @@
 <translation id="7363096869660964304">हालांकि, गुप्त मोड का मतलब यह नहीं है कि आपको कोई नहीं देख सकता. गुप्त मोड में आप जो भी ब्राउज़ करते हैं उसे ये देख सकते हैं: आप जिस कंपनी में काम करते हैं, इंटरनेट सेवा देने वाली कंपनी या वे वेबसाइटें जिन पर आप जाते हैं.</translation>
 <translation id="7365596969960773405"><ph name="MANAGE_ADDRESSES_FOCUSED_FRIENDLY_MATCH_TEXT" />, Chrome की सेटिंग में पते जोड़ने और मैनेज करने के लिए, पहले Tab और फिर Enter दबाएं</translation>
 <translation id="7365849542400970216">क्या आप जानते हैं कि आपका डिवाइस किस काम आता है?</translation>
+<translation id="7366117520888504990">198 x 275 मि॰मी॰</translation>
 <translation id="7366362069757178916">पेमेंट हैंडलर</translation>
 <translation id="7372973238305370288">खोज नतीजे</translation>
 <translation id="7374461526650987610">प्रोटोकॉल हैंडलर</translation>
@@ -2547,6 +2554,7 @@
 <translation id="7687186412095877299">आपके सेव किए गए पैसे चुकाने के तरीकों से पेमेंट फ़ॉर्म भरा जाता है</translation>
 <translation id="7687305263118037187">दोबारा कोशिश करने का समय खत्म</translation>
 <translation id="7687451951329798396">किसी दूसरे सोर्स में क्या बताया गया है?</translation>
+<translation id="7690647519407127574">Oufuku Hagaki पोस्टकार्ड</translation>
 <translation id="7693583928066320343">पेज के लिए ऑर्डर मिला</translation>
 <translation id="7696089921647603491">पुराना रॉक म्यूज़िक और गाने</translation>
 <translation id="769721561045429135">फ़िलहाल आपके पास सिर्फ़ इसी डिवाइस पर इस्तेमाल किए जा सकने वाले कार्ड हैं. कार्ड देखने के लिए जारी रखें पर क्लिक करें.</translation>
@@ -2720,6 +2728,7 @@
 <translation id="8202370299023114387">विरोध</translation>
 <translation id="8210604850413485128">वेब होस्टिंग</translation>
 <translation id="8211406090763984747">कनेक्शन सुरक्षित है</translation>
+<translation id="8213853114485953510">JIS Exec</translation>
 <translation id="8217240300496046857">साइटें उन कुकी का इस्तेमाल नहीं कर सकतीं जिनसे वेब पर आपको ट्रैक किया जा सकता है. हो सकता है कि कुछ साइटों पर सुविधाएं ठीक से काम न करें.</translation>
 <translation id="8217748145574471584">मानव संसाधन</translation>
 <translation id="8218327578424803826">सौंपा गया स्‍थान:</translation>
@@ -2933,6 +2942,7 @@
 <translation id="8816395686387277279"><ph name="UPDATE_CHROME_FOCUSED_FRIENDLY_MATCH_TEXT" />, Chrome की सेटिंग से Chrome अपडेट करने के लिए, Tab के बाद Enter दबाएं</translation>
 <translation id="8820817407110198400">बुकमार्क</translation>
 <translation id="882338992931677877">मैन्युअल स्लॉट</translation>
+<translation id="8830320733681313421">Hagaki पोस्टकार्ड</translation>
 <translation id="8834380158646307944">'गुप्त विंडो बंद करें' बटन. सभी खुली हुई गुप्त विंडो बंद करने के लिए, Enter दबाएं</translation>
 <translation id="883848425547221593">अन्य बुकमार्क</translation>
 <translation id="884264119367021077">शिपिंग पता</translation>
@@ -3053,7 +3063,7 @@
 <translation id="9138037198177304356">सूचनाएं भेजने की अनुमति है</translation>
 <translation id="9139318394846604261">खरीदारी</translation>
 <translation id="9141013498910525015">पते प्रबंधित करें</translation>
-<translation id="9144951720726881238">समय समाप्ति तारीख:</translation>
+<translation id="9144951720726881238">खत्म होने की तारीख:</translation>
 <translation id="9148088599418889305">शिपिंग का तरीका चुनें</translation>
 <translation id="9148507642005240123">&amp;बदलाव को पहले जैसा करें</translation>
 <translation id="9150045010208374699">अपना कैमरा उपयोग करें</translation>
diff --git a/components/strings/components_strings_hr.xtb b/components/strings/components_strings_hr.xtb
index f4829b1..bc42b9b5 100644
--- a/components/strings/components_strings_hr.xtb
+++ b/components/strings/components_strings_hr.xtb
@@ -712,6 +712,7 @@
 <translation id="2799223571221894425">Pokreni ponovo</translation>
 <translation id="2803306138276472711">Google sigurno pregledavanje nedavno je <ph name="BEGIN_LINK" />otkrilo zlonamjerni softver<ph name="END_LINK" /> na <ph name="SITE" />. Web-lokacije koje su inače sigurne ponekad mogu biti zaražene zlonamjernim softverom.</translation>
 <translation id="2807052079800581569">Y-položaj slike</translation>
+<translation id="2808278141522721006">Windows Hello možete uključiti ili isključiti u odjeljku <ph name="SETTINGS" /></translation>
 <translation id="2820957248982571256">Traženje...</translation>
 <translation id="2824775600643448204">Adresna traka i traka za pretraživanje</translation>
 <translation id="2826760142808435982">Veza je kriptirana i autentificirana šifrom <ph name="CIPHER" />, a <ph name="KX" /> služi za mehanizam razmjene ključeva.</translation>
@@ -882,6 +883,7 @@
 <translation id="3288238092761586174"><ph name="URL" /> možda treba izvršiti dodatne korake za potvrdu plaćanja</translation>
 <translation id="3293642807462928945">Saznajte više o pravilu <ph name="POLICY_NAME" /></translation>
 <translation id="3295444047715739395">Pregled zaporki u postavkama Chromea i upravljanje njima</translation>
+<translation id="3299098170013242198">Windows Hello uključen je za unos zaporki</translation>
 <translation id="3303855915957856445">Nisu pronađeni rezultati pretraživanja</translation>
 <translation id="3304073249511302126">traženje Bluetootha</translation>
 <translation id="33073482541490531">Zaporka koju ste upravo upotrijebili otkrivena je u povredi podataka. Upravitelj zaporki preporučuje da odmah promijenite tu zaporku.</translation>
@@ -1029,6 +1031,7 @@
 <translation id="3678342917559046352">Nevažeće proširenje: očekuje se da vrijednost bude jedan od sljedećih oblika: &lt;extension_id&gt; ili &lt;extension_id&gt;;&lt;update_url&gt;.</translation>
 <translation id="3678529606614285348">Otvorite stranicu u novom anonimnom prozoru (Ctrl – Shift – N)</translation>
 <translation id="3681007416295224113">Podaci o certifikatu</translation>
+<translation id="3699374065820972102">TouchID je uključen za unos zaporki</translation>
 <translation id="3701427423622901115">Poništavanje je potvrđeno.</translation>
 <translation id="3704162925118123524">Mreža koju upotrebljavate može zahtijevati posjet stranici za prijavu.</translation>
 <translation id="3705189812819839667"><ph name="RESULT_OWNER" /> – <ph name="RESULT_PRODUCT_SOURCE" /></translation>
@@ -1488,6 +1491,7 @@
 <translation id="4900217275619098670">Deveti kolut</translation>
 <translation id="4901778704868714008">Spremi...</translation>
 <translation id="4905659621780993806">Administrator će automatski ponovo pokrenuti vaš uređaj u <ph name="TIME" /> <ph name="DATE" />. Spremite sve otvorene stavke prije nego što se uređaj ponovno pokrene.</translation>
+<translation id="4911007278801291296">TouchID možete uključiti ili isključiti u odjeljku <ph name="SETTINGS" /></translation>
 <translation id="4913987521957242411">Bušenje pri vrhu lijevo</translation>
 <translation id="4918221908152712722">Instalirajte aplikaciju <ph name="APP_NAME" /> (preuzimanje nije potrebno)</translation>
 <translation id="4923459931733593730">Plaćanje</translation>
@@ -1680,6 +1684,7 @@
 <translation id="5357848622083956825">Vizualna umjetnost i dizajn</translation>
 <translation id="536296301121032821">Pohrana postavki pravila nije uspjela</translation>
 <translation id="5363309033720083897">Serijski priključak koji dopušta vaš administrator</translation>
+<translation id="5363713372507812442">Pretražite korisnička iskustva/putovanja</translation>
 <translation id="5371425731340848620">Ažuriranje kartice</translation>
 <translation id="5377026284221673050">"Sat kasni" ili "Sat ide unaprijed" ili "&lt;span class="error-code"&gt;NET::ERR_CERT_DATE_INVALID&lt;/span&gt;"</translation>
 <translation id="5379027395132364855">Gumb Izradite prezentaciju, pritisnite Enter da biste brzo izradili novu Google prezentaciju u Prezentacijama</translation>
diff --git a/components/strings/components_strings_hu.xtb b/components/strings/components_strings_hu.xtb
index a52a6161..60a10c4 100644
--- a/components/strings/components_strings_hu.xtb
+++ b/components/strings/components_strings_hu.xtb
@@ -396,6 +396,7 @@
 <translation id="192020519938775529">{COUNT,plural, =0{Nincs}=1{1 webhely}other{# webhely}}</translation>
 <translation id="1924727005275031552">Új</translation>
 <translation id="1927439593081478069">A Chrome biztonsági ellenőrzését futtató gomb. Nyomja le az Enter billentyűt a biztonsági ellenőrzés futtatásához a Chrome beállításaiban.</translation>
+<translation id="1935995810530254458">Másolás mindenképpen</translation>
 <translation id="1939175642807587452">Engedélyt kérhet értesítések küldésére</translation>
 <translation id="1943994668912612445">Dizájn</translation>
 <translation id="1945968466830820669">Elveszítheti a hozzáférést szervezete fiókjához, vagy visszaélhetnek személyes adataival. A Chromium azt javasolja, hogy azonnal módosítsa jelszavát.</translation>
@@ -449,6 +450,7 @@
 <translation id="2085876078937250610">Mentés…</translation>
 <translation id="2088086323192747268">Szinkronizálás kezelése gomb. Nyomja le az Enter billentyűt az adatok szinkronizálásának Chrome-beállítások közötti kezeléséhez.</translation>
 <translation id="2091887806945687916">Hang</translation>
+<translation id="2093982008204312032">A Google Chrome megpróbálja kikapcsolni a Windows Hello szolgáltatást a jelszavak kitöltéséhez.</translation>
 <translation id="2094505752054353250">Domainkeveredés</translation>
 <translation id="2099652385553570808">Három kapocs a bal oldalon</translation>
 <translation id="2101225219012730419">Verzió:</translation>
@@ -1141,6 +1143,7 @@
 <translation id="4014128326099193693">{COUNT,plural, =1{{COUNT} oldalból álló PDF-dokumentum}other{{COUNT} oldalból álló PDF-dokumentum}}</translation>
 <translation id="4022639246993848966">88 × 125 mm</translation>
 <translation id="4023431997072828269">Mivel az űrlap beküldéséhez nem biztonságos kapcsolatot használ, az Ön adatait mások is láthatják majd.</translation>
+<translation id="4024923292610332139">kikapcsolni a TouchID-t a jelszavak kitöltéséhez</translation>
 <translation id="4025913568718019429">A Google-lal kapcsolatos adatvédelmi beállítások kezelése gomb. Nyomja le az Entert a Google-fiók adatvédelmi beállításainak megnyitásához.</translation>
 <translation id="4030383055268325496">&amp;Hozzáadás visszavonása</translation>
 <translation id="4031179711345676612">Mikrofon engedélyezve</translation>
@@ -1257,6 +1260,7 @@
 <translation id="42981349822642051">Kibontás</translation>
 <translation id="4300675098767811073">Több lyuk a jobb oldalon</translation>
 <translation id="4302514097724775343">A játékhoz koppintson a dinóra</translation>
+<translation id="4304049446746819918">{0,plural, =1{A rendszergazda által beállított házirend nem javasolja ennek a fájlnak az áthelyezését a következő helyre: <ph name="DESTINATION_NAME" />}other{A rendszergazda által beállított házirend nem javasolja ezeknek a fájloknak az áthelyezését a következő helyre: <ph name="DESTINATION_NAME" />}}</translation>
 <translation id="4305666528087210886">A fájlhoz nem sikerült hozzáférni</translation>
 <translation id="4306529830550717874">Menti a címet?</translation>
 <translation id="4306812610847412719">vágólap</translation>
@@ -1632,6 +1636,7 @@
 <translation id="5254043433801397071">Nyomattartalom optimalizálása</translation>
 <translation id="5254958791078852567">E1</translation>
 <translation id="5255690596502591079">Rögzítés mindenképpen</translation>
+<translation id="5257739419779698609">{0,plural, =1{A rendszergazda által beállított házirend nem javasolja ennek a fájlnak a másolását a következő helyre: <ph name="DESTINATION_NAME" />}other{A rendszergazda által beállított házirend nem javasolja ezeknek a fájloknak a másolását a következő helyre: <ph name="DESTINATION_NAME" />}}</translation>
 <translation id="5266128565379329178">Kötés felül</translation>
 <translation id="5269225904387178860">Négy lyuk alul</translation>
 <translation id="5269999699920406580">Rendszerszinten érvényes funkciókat csak a tulajdonos (<ph name="OWNER_EMAIL" />) állíthat be</translation>
@@ -1694,6 +1699,7 @@
 <translation id="5412236728747081950">Ez a webhely lekéri az érdeklődési köreit a Chrome-tól, hogy relevánsabb hirdetéseket jelenítsen meg Önnek</translation>
 <translation id="5412245327974352290"><ph name="TRADITIONAL_TEXT" /> – <ph name="ADDITIONAL_TEXT" /></translation>
 <translation id="541416427766103491">4. kötegelő</translation>
+<translation id="5414511064953050917">Áthelyezés mindenképp</translation>
 <translation id="5421136146218899937">Böngészési adatok törlése...</translation>
 <translation id="5425241977284572032">{NUM_COOKIES,plural, =0{Nincs letiltott webhely}=1{1 letiltott webhely}other{# letiltott webhely}}</translation>
 <translation id="5426179911063097041">A(z) <ph name="SITE" /> értesítéseket szeretne küldeni Önnek</translation>
@@ -2315,6 +2321,7 @@
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> és további <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}other{<ph name="PAYMENT_METHOD_PREVIEW" /> és további <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}}</translation>
 <translation id="7153618581592392745">Levendula</translation>
 <translation id="7156870133441232244">A szervert a TLS 1.2-es vagy újabb verziójára kell frissíteni.</translation>
+<translation id="7163295244162773898">{0,plural, =1{Biztosan átmásolja a bizalmas fájlt?}other{Biztosan átmásolja a bizalmas fájlokat?}}</translation>
 <translation id="717330890047184534">Gaia-azonosító:</translation>
 <translation id="7174545416324379297">Egyesítve</translation>
 <translation id="7175401108899573750">{SHIPPING_OPTIONS,plural, =0{<ph name="SHIPPING_OPTION_PREVIEW" />}=1{<ph name="SHIPPING_OPTION_PREVIEW" /> és további <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" />}other{<ph name="SHIPPING_OPTION_PREVIEW" /> és további <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" />}}</translation>
@@ -2924,6 +2931,7 @@
 <translation id="8763986294015493060">Az összes jelenleg megnyitott inkognitó ablak bezárása</translation>
 <translation id="8766943070169463815">Biztonságos fizetés hitelesítési adatainak hitelesítési űrlapja megnyitva.</translation>
 <translation id="8767765348545497220">Súgóbuborék bezárása</translation>
+<translation id="877348612833018844">{0,plural, =1{Biztosan áthelyezi a bizalmas fájlt?}other{Biztosan áthelyezi a bizalmas fájlokat?}}</translation>
 <translation id="877985182522063539">A4</translation>
 <translation id="8785658048882205566">Motorkerékpárok</translation>
 <translation id="8790007591277257123">&amp;Törlés újra</translation>
diff --git a/components/strings/components_strings_id.xtb b/components/strings/components_strings_id.xtb
index 248c97e..68eccae 100644
--- a/components/strings/components_strings_id.xtb
+++ b/components/strings/components_strings_id.xtb
@@ -396,6 +396,7 @@
 <translation id="192020519938775529">{COUNT,plural, =0{Tidak ada}=1{1 situs}other{# situs}}</translation>
 <translation id="1924727005275031552">Baru</translation>
 <translation id="1927439593081478069">Tombol Jalankan pemeriksaan keamanan Chrome, tekan Enter untuk menjalankan pemeriksaan keamanan di setelan Chrome</translation>
+<translation id="1935995810530254458">Tetap salin</translation>
 <translation id="1939175642807587452">Dapat meminta untuk mengirimkan notifikasi</translation>
 <translation id="1943994668912612445">Desain</translation>
 <translation id="1945968466830820669">Anda dapat kehilangan akses ke akun organisasi atau mengalami pencurian identitas. Chromium menyarankan Anda untuk mengubah sandi sekarang.</translation>
@@ -449,6 +450,7 @@
 <translation id="2085876078937250610">Simpan…</translation>
 <translation id="2088086323192747268">Tombol Kelola sinkronisasi, tekan Enter untuk mengelola info apa saja yang Anda sinkronkan di setelan Chrome</translation>
 <translation id="2091887806945687916">Suara</translation>
+<translation id="2093982008204312032">Google Chrome mencoba menonaktifkan Windows Hello untuk mengisi sandi.</translation>
 <translation id="2094505752054353250">Ketidakcocokan domain</translation>
 <translation id="2099652385553570808">Tiga jepretan di kiri</translation>
 <translation id="2101225219012730419">Versi:</translation>
@@ -1142,6 +1144,7 @@
 <translation id="4014128326099193693">{COUNT,plural, =1{Dokumen PDF berisi {COUNT} halaman}other{Dokumen PDF berisi {COUNT} halaman}}</translation>
 <translation id="4022639246993848966">3,5x5</translation>
 <translation id="4023431997072828269">Karena formulir ini dikirim menggunakan koneksi yang tidak aman, informasi Anda akan dapat dilihat oleh pengguna lain.</translation>
+<translation id="4024923292610332139">menonaktifkan TouchID untuk mengisi sandi</translation>
 <translation id="4025913568718019429">Tombol Kelola setelan Privasi Google, tekan Enter untuk membuka setelan privasi Akun Google Anda</translation>
 <translation id="4030383055268325496">&amp;Urungkan penambahan</translation>
 <translation id="4031179711345676612">Mikrofon diizinkan</translation>
@@ -1258,6 +1261,7 @@
 <translation id="42981349822642051">Luaskan</translation>
 <translation id="4300675098767811073">Beberapa lubang di kanan</translation>
 <translation id="4302514097724775343">Ketuk dinosaurus untuk bermain</translation>
+<translation id="4304049446746819918">{0,plural, =1{Kebijakan administrator tidak merekomendasikan untuk memindahkan file ini ke <ph name="DESTINATION_NAME" />}other{Kebijakan administrator tidak merekomendasikan untuk memindahkan file ini ke <ph name="DESTINATION_NAME" />}}</translation>
 <translation id="4305666528087210886">File Anda tidak dapat diakses</translation>
 <translation id="4306529830550717874">Simpan alamat?</translation>
 <translation id="4306812610847412719">papan klip</translation>
@@ -1633,6 +1637,7 @@
 <translation id="5254043433801397071">Optimalkan konten cetak</translation>
 <translation id="5254958791078852567">E1</translation>
 <translation id="5255690596502591079">Tetap ambil screenshot</translation>
+<translation id="5257739419779698609">{0,plural, =1{Kebijakan administrator tidak merekomendasikan untuk menyalin file ini ke <ph name="DESTINATION_NAME" />}other{Kebijakan administrator tidak merekomendasikan untuk menyalin file ini ke <ph name="DESTINATION_NAME" />}}</translation>
 <translation id="5266128565379329178">Jilid di atas</translation>
 <translation id="5269225904387178860">Empat lubang di bawah</translation>
 <translation id="5269999699920406580">Fitur yang berlaku di seluruh sistem hanya dapat disetel oleh pemilik: <ph name="OWNER_EMAIL" /></translation>
@@ -1695,6 +1700,7 @@
 <translation id="5412236728747081950">Situs ini mendapatkan minat Anda dari Chrome untuk menampilkan iklan yang lebih relevan</translation>
 <translation id="5412245327974352290"><ph name="TRADITIONAL_TEXT" /> - <ph name="ADDITIONAL_TEXT" /></translation>
 <translation id="541416427766103491">Tempat kertas 4</translation>
+<translation id="5414511064953050917">Tetap pindahkan</translation>
 <translation id="5421136146218899937">Hapus data penjelajahan...</translation>
 <translation id="5425241977284572032">{NUM_COOKIES,plural, =0{Tidak ada situs yang diblokir}=1{1 situs diblokir}other{# situs diblokir}}</translation>
 <translation id="5426179911063097041"><ph name="SITE" /> ingin mengirimkan notifikasi kepada Anda</translation>
@@ -2316,6 +2322,7 @@
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> dan <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> lainnya}other{<ph name="PAYMENT_METHOD_PREVIEW" /> dan <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> lainnya}}</translation>
 <translation id="7153618581592392745">Lembayung Muda</translation>
 <translation id="7156870133441232244">Sebaiknya server diupgrade ke TLS 1.2 atau yang lebih baru.</translation>
+<translation id="7163295244162773898">{0,plural, =1{Salin file rahasia?}other{Salin file rahasia?}}</translation>
 <translation id="717330890047184534">ID GAIA:</translation>
 <translation id="7174545416324379297">Digabung</translation>
 <translation id="7175401108899573750">{SHIPPING_OPTIONS,plural, =0{<ph name="SHIPPING_OPTION_PREVIEW" />}=1{<ph name="SHIPPING_OPTION_PREVIEW" /> dan <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> lainnya}other{<ph name="SHIPPING_OPTION_PREVIEW" /> dan <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> lainnya}}</translation>
@@ -2920,6 +2927,7 @@
 <translation id="8763986294015493060">Tutup semua jendela Samaran yang saat ini terbuka</translation>
 <translation id="8766943070169463815">Sheet autentikasi kredensial pembayaran aman dibuka</translation>
 <translation id="8767765348545497220">Tutup balon bantuan</translation>
+<translation id="877348612833018844">{0,plural, =1{Pindahkan file rahasia?}other{Pindahkan file rahasia?}}</translation>
 <translation id="877985182522063539">A4</translation>
 <translation id="8785658048882205566">Sepeda motor</translation>
 <translation id="8790007591277257123">&amp;Ulangi penghapusan</translation>
diff --git a/components/strings/components_strings_ja.xtb b/components/strings/components_strings_ja.xtb
index d92b6deb..cecd1d3 100644
--- a/components/strings/components_strings_ja.xtb
+++ b/components/strings/components_strings_ja.xtb
@@ -846,6 +846,7 @@
 <translation id="3216313131063488104">ブルース</translation>
 <translation id="3218181027817787318">相対的</translation>
 <translation id="3223287115535306850">アプリ起動スロバー</translation>
+<translation id="3223425961342298674">位置情報は許可されていません</translation>
 <translation id="3225347164936328585">拍手</translation>
 <translation id="3225919329040284222">サーバーの提示した証明書が、組み込まれている想定の証明書と一致しません。これらの想定の証明書は、ユーザー保護のため、特定の安全性の高いウェブサイトについて用意されています。</translation>
 <translation id="3226128629678568754">ページの読み込みに必要なデータを再送信するには、再読み込みボタンを押してください。</translation>
@@ -1182,6 +1183,7 @@
 <translation id="4127575959421463246">ChromeOS のフラグをお探しですか?次にアクセスしてください:</translation>
 <translation id="4129401438321186435">{COUNT,plural, =1{他 1 件}other{他 # 件}}</translation>
 <translation id="4130226655945681476">ネットワーク ケーブル、モデム、ルーターを確認する</translation>
+<translation id="4132448310531350254">アプリ「<ph name="POLICY_IDS_LIST" />」で参照されている file_extension「<ph name="FILE_EXTENSION" />」のハンドラが重複しています。</translation>
 <translation id="4134123981501319574">ドキュメントを作成</translation>
 <translation id="413544239732274901">詳細</translation>
 <translation id="4142935452406587478">トレイ 10</translation>
@@ -1204,6 +1206,7 @@
 <translation id="4194250254487269611">現在、カードを保存できません</translation>
 <translation id="4196861286325780578">移動のやり直し(&amp;R)</translation>
 <translation id="4202554117186904723">ロール 5</translation>
+<translation id="4203769790323223880">カメラは許可されていません</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />ファイアウォールとウイルス対策の設定を確認する<ph name="END_LINK" /></translation>
 <translation id="4209092469652827314">大</translation>
 <translation id="4210602799576081649">確認コードの有効期限が切れています。新しいコードをリクエストしてください</translation>
@@ -1230,6 +1233,7 @@
     &lt;p&gt;サイトの利用が終わったら、ウィルス対策ソフトウェアを有効にします。&lt;/p&gt;
     &lt;h4&gt;ステップ 5: サポートを依頼する&lt;/h4&gt;
     &lt;p&gt;引き続きエラーが表示される場合は、ウェブサイトの所有者にお問い合わせください。&lt;/p&gt;</translation>
+<translation id="4223404254440398437">マイクは許可されていません</translation>
 <translation id="4226937834893929579"><ph name="BEGIN_LINK" />ネットワーク診断ツールを実行してみてください<ph name="END_LINK" />。</translation>
 <translation id="4230204356098880324">カメラの使用と移動を要求できる</translation>
 <translation id="4235360514405112390">有効</translation>
@@ -1601,6 +1605,7 @@
 <translation id="5177076414499237632">このページのソースとトピックについて</translation>
 <translation id="5179510805599951267"><ph name="ORIGINAL_LANGUAGE" />でない場合はこのエラーを報告する</translation>
 <translation id="518639307526414276">ペットフード、ペットケア用品</translation>
+<translation id="5190072300954988691">カメラとマイクは許可されていません</translation>
 <translation id="5190835502935405962">ブックマーク バー</translation>
 <translation id="5191315092027169558">お使いのプロフィールは <ph name="DOMAIN" /> によって管理されています</translation>
 <translation id="51918995459521422"><ph name="ORIGIN" /> で複数のファイルがダウンロードされようとしています</translation>
@@ -1621,6 +1626,7 @@
 <translation id="5230815978613972521">B8</translation>
 <translation id="5233045608889518621">12x19</translation>
 <translation id="5234764350956374838">閉じる</translation>
+<translation id="5239623327352565343">位置情報が許可されています</translation>
 <translation id="5242889659037569123">旅行バッグ、旅行用品</translation>
 <translation id="5250209940322997802">「ネットワークに接続してください」</translation>
 <translation id="52517543715119994">Chrome の機能を確認します</translation>
@@ -2500,6 +2506,7 @@
 <translation id="7581199239021537589">2 面の画像の Y 軸移動</translation>
 <translation id="7582602800368606489">Google カレンダーで新しいイベントをすばやく作成します</translation>
 <translation id="7583969447617676942">司法サービス</translation>
+<translation id="7586676035079382730">通知は許可されていません</translation>
 <translation id="7591288787774558753">機密コンテンツを共有しますか?</translation>
 <translation id="7591636454931265313"><ph name="EMBEDDED_URL" /> から <ph name="TOP_LEVEL_URL" /> での Cookie とサイトデータの使用許可を求められています</translation>
 <translation id="7592362899630581445">サーバーの証明書が名前の制約に違反しています。</translation>
@@ -3053,6 +3060,7 @@
 <translation id="9131119348384879525">機密コンテンツをキャプチャしますか?</translation>
 <translation id="9136861683332321024">高級車</translation>
 <translation id="9137013805542155359">原文のページを表示</translation>
+<translation id="9138037198177304356">通知が許可されています</translation>
 <translation id="9139318394846604261">ショッピング</translation>
 <translation id="9141013498910525015">住所を管理</translation>
 <translation id="9144951720726881238">有効期限:</translation>
diff --git a/components/strings/components_strings_ka.xtb b/components/strings/components_strings_ka.xtb
index c033351..5bd3f1f 100644
--- a/components/strings/components_strings_ka.xtb
+++ b/components/strings/components_strings_ka.xtb
@@ -714,6 +714,7 @@
 <translation id="2799223571221894425">ხელახლა გაშვება</translation>
 <translation id="2803306138276472711">Google-ის უსაფრთხო დათვალიერების ფუნქციამ <ph name="BEGIN_LINK" />აღმოაჩინა საზიანო პროგრამა<ph name="END_LINK" /> <ph name="SITE" />-ზე. ზოგჯერ ნორმალური და უსაფრთხო ვებსაიტები ინფიცირდება საზიანო პროგრამებით.</translation>
 <translation id="2807052079800581569">სურათის Y პოზიცია</translation>
+<translation id="2808278141522721006">Windows Hello-ს ჩართვა/გამორთვა შეგიძლიათ აქ: <ph name="SETTINGS" /></translation>
 <translation id="2820957248982571256">მიმდინარეობს სკანირება...</translation>
 <translation id="2824775600643448204">მისამართი და ძიების ზოლი</translation>
 <translation id="2826760142808435982">კავშირი დაშიფრულია და ავთენტიფიცირებულია <ph name="CIPHER" />-ის გამოყენებით, იგი იყენებს <ph name="KX" />-ს, როგორც კოდის გაცვლის მექანიზმს.</translation>
@@ -884,6 +885,7 @@
 <translation id="3288238092761586174"><ph name="URL" />, შესაძლოა, საჭიროებდეს დამატებითი ნაბიჯების გავლას გადახდის დასადასტურებლად</translation>
 <translation id="3293642807462928945">შეიტყვეთ მეტი „<ph name="POLICY_NAME" />“ წესების შესახებ</translation>
 <translation id="3295444047715739395">იხილეთ თქვენი პაროლები და მართეთ ისინი Chrome-ის პარამეტრებიდან</translation>
+<translation id="3299098170013242198">Windows Hello ჩართულია პაროლების შესავსებად</translation>
 <translation id="3303855915957856445">ძიების შედეგები ვერ მოიძებნა</translation>
 <translation id="3304073249511302126">Bluetooth სკანირება</translation>
 <translation id="33073482541490531">თქვენ მიერ ახლახან გამოყენებული პაროლი ნაპოვნია გაჟონილ მონაცემებში. პაროლების მმართველი გირჩევთ, ახლავე შეცვალოთ ეს პაროლი.</translation>
@@ -1032,6 +1034,7 @@
 <translation id="3678342917559046352">გაფართოება არასწორია: მოსალოდნელია მნიშვნელობა ერთ-ერთი შემდეგი ფორმით: &lt;extension_id&gt; ან &lt;extension_id&gt;;&lt;update_url&gt;.</translation>
 <translation id="3678529606614285348">გვერდის ახალ ინკოგნიტო ფანჯარაში გახსნა (Ctrl-Shift-N)</translation>
 <translation id="3681007416295224113">სერტიფიკატის ინფორმაცია</translation>
+<translation id="3699374065820972102">TouchID ჩართულია პაროლების შესავსებად</translation>
 <translation id="3701427423622901115">გადაყენება გაცნობიერებულია.</translation>
 <translation id="3704162925118123524">თქვენს მიერ გამოყენებულმა ქსელმა, შესაძლოა მოგთხოვოთ მის გვერდზე შესვლა.</translation>
 <translation id="3705189812819839667"><ph name="RESULT_OWNER" />-<ph name="RESULT_PRODUCT_SOURCE" /></translation>
@@ -1493,6 +1496,7 @@
 <translation id="4900217275619098670">მეცხრე რულონი</translation>
 <translation id="4901778704868714008">შენახვა...</translation>
 <translation id="4905659621780993806">თქვენი ადმინისტრატორი ავტომატურად გადატვირთავს თქვენს მოწყობილობას <ph name="DATE" />-ის <ph name="TIME" />-ზე. მოწყობილობის გადატვირთვამდე შეინახეთ გახსნილი ერთეულები.</translation>
+<translation id="4911007278801291296">TouchID-ს ჩართვა/გამორთვა შეგიძლიათ აქ: <ph name="SETTINGS" /></translation>
 <translation id="4913987521957242411">ზედა მარცხენა ნაწილის გახვრეტა</translation>
 <translation id="4918221908152712722">დააინსტალირეთ <ph name="APP_NAME" /> (ჩამოტვირთვა აუცილებელი არ არის)</translation>
 <translation id="4923459931733593730">გადახდა</translation>
@@ -1686,6 +1690,7 @@
 <translation id="5357848622083956825">ვიზუალური ხელოვნება და დიზაინი</translation>
 <translation id="536296301121032821">ვერ მოხერხდა პოლიტიკის პარამეტრების შენახვა</translation>
 <translation id="5363309033720083897">თანმიმდევრული პორტი დაშვებულია თქვენი ადმინისტრატორის მიერ</translation>
+<translation id="5363713372507812442">მგზავრობების ძიება</translation>
 <translation id="5371425731340848620">ბარათის განახლება</translation>
 <translation id="5377026284221673050">„თქვენი საათი უკანაა“, „თქვენი საათი წინაა“ ან „&lt;span class="error-code"&gt;NET::ERR_CERT_DATE_INVALID&lt;/span&gt;“</translation>
 <translation id="5379027395132364855">პრეზენტაციის შექმნის ღილაკი, Slides-ში ახალი Google პრეზენტაციის სწრაფად შესაქმნელად დააჭირეთ კლავიშს Enter</translation>
diff --git a/components/strings/components_strings_kn.xtb b/components/strings/components_strings_kn.xtb
index 0cdd813..8d4e4400 100644
--- a/components/strings/components_strings_kn.xtb
+++ b/components/strings/components_strings_kn.xtb
@@ -306,6 +306,7 @@
 <translation id="168841957122794586">ಸರ್ವರ್ ಪ್ರಮಾಣಪತ್ರವು ದುರ್ಬಲ ಕ್ರಿಪ್ಟೋಗ್ರಾಫಿಕ್ ಕೀಯನ್ನು ಹೊಂದಿದೆ.</translation>
 <translation id="1697532407822776718">ನೀವು ಎಲ್ಲ ರೀತಿಯಲ್ಲಿಯೂ ಸಿದ್ಧರಾಗಿರುವಿರಿ!</translation>
 <translation id="1699570257714336246">ಮಾಹಿತಿ ಕಾಣೆಯಾಗಿದೆ</translation>
+<translation id="1702815194757674443">ROC 16K</translation>
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706625117072057435">ಝೂಮ್ ಹಂತಗಳು</translation>
 <translation id="1706954506755087368">{1,plural, =1{ಈ ಸರ್ವರ್ <ph name="DOMAIN" /> ; ಆಗಿದೆ ಎಂಬುದನ್ನು ಸಾಬೀತುಪಡಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ; ಅದರ ಸುರಕ್ಷತಾ ಪ್ರಮಾಣಪತ್ರ ಬಹುಶಃ ನಾಳೆಯಿಂದ ಕಾರ್ಯನಿರ್ವಹಿಸಬಹುದು. ಇದು ತಪ್ಪು ಕಾನ್ಫಿಗರೇಶನ್‌ನಿಂದ ಅಥವಾ ಆಕ್ರಮಣಕಾರರು ನಿಮ್ಮ ಸಂಪರ್ಕದಲ್ಲಿ ಒಳನುಸುಳಿರುವುದರಿಂದ ಆಗಿರಬಹುದು.}one{ಈ ಸರ್ವರ್ <ph name="DOMAIN" /> ಆಗಿದೆ ಎಂಬುದನ್ನು ಸಾಬೀತುಪಡಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ; ಅದರ ಸುರಕ್ಷತಾ ಪ್ರಮಾಣಪತ್ರ ಬಹುಶಃ ಭವಿಷ್ಯದಲ್ಲಿ # ದಿನಗಳಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸಬಹುದು. ಇದು ತಪ್ಪು ಕಾನ್ಫಿಗರೇಶನ್‌ನಿಂದ ಅಥವಾ ಆಕ್ರಮಣಕಾರರು ನಿಮ್ಮ ಸಂಪರ್ಕದಲ್ಲಿ ಒಳನುಸುಳಿರುವುದರಿಂದ ಆಗಿರಬಹುದು.}other{ಈ ಸರ್ವರ್ <ph name="DOMAIN" /> ಆಗಿದೆ ಎಂಬುದನ್ನು ಸಾಬೀತುಪಡಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ; ಅದರ ಸುರಕ್ಷತಾ ಪ್ರಮಾಣಪತ್ರ ಬಹುಶಃ ಭವಿಷ್ಯದಲ್ಲಿ # ದಿನಗಳಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸಬಹುದು. ಇದು ತಪ್ಪು ಕಾನ್ಫಿಗರೇಶನ್‌ನಿಂದ ಅಥವಾ ಆಕ್ರಮಣಕಾರರು ನಿಮ್ಮ ಸಂಪರ್ಕದಲ್ಲಿ ಒಳನುಸುಳಿರುವುದರಿಂದ ಆಗಿರಬಹುದು.}}</translation>
@@ -394,6 +395,7 @@
 <translation id="192020519938775529">{COUNT,plural, =0{ಯಾವುದೂ ಇಲ್ಲ}=1{1 ಸೈಟ್}one{# ಸೈಟ್‌ಗಳು}other{# ಸೈಟ್‌ಗಳು}}</translation>
 <translation id="1924727005275031552">ಹೊಸತು</translation>
 <translation id="1927439593081478069">Chrome ಸುರಕ್ಷತೆಯ ಪರಿಶೀಲನೆ ಬಟನ್ ರನ್ ಮಾಡಿ, Chrome ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಸುರಕ್ಷತೆಯ ಪರಿಶೀಲನೆಯನ್ನು ರನ್ ಮಾಡಲು Enter ಅನ್ನು ಒತ್ತಿರಿ</translation>
+<translation id="1935995810530254458">ಹೇಗಿದ್ದರೂ ನಕಲಿಸಿ</translation>
 <translation id="1939175642807587452">ಅಧಿಸೂಚನೆಗಳನ್ನು ಕಳುಹಿಸಲು ಕೇಳಬಹುದು</translation>
 <translation id="1943994668912612445">ವಿನ್ಯಾಸ</translation>
 <translation id="1945968466830820669">ನಿಮ್ಮ ಸಂಸ್ಥೆಯ ಖಾತೆಗೆ ನೀವು ಪ್ರವೇಶವನ್ನು ಕಳೆದುಕೊಳ್ಳಬಹುದು ಅಥವಾ ಗುರುತು ಕಳ್ಳತನಕ್ಕೆ ಒಳಗಾಗಬಹುದು. ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್‌ ಅನ್ನು ಇದೀಗ ಬದಲಾಯಿಸುವಂತೆ Chromium ಶಿಫಾರಸು ಮಾಡುತ್ತದೆ.</translation>
@@ -447,6 +449,7 @@
 <translation id="2085876078937250610">ಉಳಿಸಿ…</translation>
 <translation id="2088086323192747268">ಸಿಂಕ್ ಬಟನ್ ಅನ್ನು ನಿರ್ವಹಿಸಿ, Chrome ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ನೀವು ಯಾವ ಮಾಹಿತಿಯನ್ನು ಸಿಂಕ್ ಮಾಡುತ್ತೀರಿ ಎಂಬುದನ್ನು ನಿರ್ವಹಿಸಲು Enter ಒತ್ತಿ</translation>
 <translation id="2091887806945687916">ಶಬ್ಧ</translation>
+<translation id="2093982008204312032">Google Chrome, ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಭರ್ತಿ ಮಾಡುವುದಕ್ಕಾಗಿ Windows Hello ಅನ್ನು ಆಫ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸುತ್ತಿದೆ.</translation>
 <translation id="2094505752054353250">ಡೊಮೇನ್ ಹೊಂದುತ್ತಿಲ್ಲ</translation>
 <translation id="2099652385553570808">ಎಡಭಾಗದಲ್ಲಿ ಮೂರು ಸ್ಟೇಪಲ್ ಹಾಕಿ</translation>
 <translation id="2101225219012730419">ಆವೃತ್ತಿ:</translation>
@@ -549,6 +552,7 @@
 <translation id="2359347814217202136">{NUM_DAYS,plural, =0{ಒಂದಕ್ಕಿಂತ ಕಡಿಮೆ ದಿನದಲ್ಲಿ}=1{ಒಂದು ದಿನದಲ್ಲಿ}one{{NUM_DAYS} ದಿನಗಳಲ್ಲಿ}other{{NUM_DAYS} ದಿನಗಳಲ್ಲಿ}}</translation>
 <translation id="2359629602545592467">ಬಹು</translation>
 <translation id="2359808026110333948">ಮುಂದುವರೆಸಿ</translation>
+<translation id="2361263712565360498">275 x 395 ಮಿಮೀ</translation>
 <translation id="236340516568226369">ಟಾಗಲ್ ಮೆನುವನ್ನು ಮರುಗಾತ್ರಗೊಳಿಸಿ</translation>
 <translation id="2367567093518048410">ಹಂತ</translation>
 <translation id="2380886658946992094">Legal</translation>
@@ -1137,6 +1141,7 @@
 <translation id="4014128326099193693">{COUNT,plural, =1{PDF ಡಾಕ್ಯುಮೆಂಟ್, {COUNT} ಪುಟವನ್ನು ಒಳಗೊಂಡಿದೆ}one{PDF ಡಾಕ್ಯುಮೆಂಟ್, {COUNT} ಪುಟಗಳನ್ನು ಒಳಗೊಂಡಿದೆ}other{PDF ಡಾಕ್ಯುಮೆಂಟ್, {COUNT} ಪುಟಗಳನ್ನು ಒಳಗೊಂಡಿದೆ}}</translation>
 <translation id="4022639246993848966">3.5x5</translation>
 <translation id="4023431997072828269">ಸುರಕ್ಷಿತವಲ್ಲದ ಕನೆಕ್ಷನ್ ಅನ್ನು ಬಳಸಿ ಈ ಫಾರ್ಮ್ ಅನ್ನು ಸಲ್ಲಿಸುತ್ತಿರುವುದರಿಂದ, ನಿಮ್ಮ ಮಾಹಿತಿಯು ಇತರರಿಗೆ ಗೋಚರಿಸುತ್ತದೆ.</translation>
+<translation id="4024923292610332139">ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಭರ್ತಿ ಮಾಡುವುದಕ್ಕಾಗಿ TouchID ಅನ್ನು ಆಫ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸುತ್ತಿದೆ</translation>
 <translation id="4025913568718019429">Google ನ ಗೌಪ್ಯತೆ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸಿ, ನಿಮ್ಮ Google ಖಾತೆಯ ಗೌಪ್ಯತೆ ಸೆಟ್ಟಿಂಗ್‌ಗಳಿಗೆ ಭೇಟಿ ನೀಡಲು Enter ಒತ್ತಿ</translation>
 <translation id="4030383055268325496">&amp;ಸೇರಿಸುವುದನ್ನು ರದ್ದುಗೊಳಿಸಿ</translation>
 <translation id="4031179711345676612">ಮೈಕ್ರೊಫೋನ್ ಅನುಮತಿಸಲಾಗಿದೆ</translation>
@@ -1253,6 +1258,7 @@
 <translation id="42981349822642051">ವಿಸ್ತರಿಸಿ</translation>
 <translation id="4300675098767811073">ಬಲಭಾಗದಲ್ಲಿ ಅನೇಕ ತೂತುಗಳನ್ನು ಮಾಡಿ</translation>
 <translation id="4302514097724775343">ಆಡಲು, ಡೈನೋ ಅನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿ</translation>
+<translation id="4304049446746819918">{0,plural, =1{ನಿರ್ವಾಹಕರ ನೀತಿಯು ಈ ಫೈಲ್ ಅನ್ನು <ph name="DESTINATION_NAME" /> ಗೆ ಸರಿಸಲು ಶಿಫಾರಸು ಮಾಡುವುದಿಲ್ಲ}one{ನಿರ್ವಾಹಕರ ನೀತಿಯು ಈ ಫೈಲ್‌ಗಳನ್ನು <ph name="DESTINATION_NAME" /> ಗೆ ಸರಿಸಲು ಶಿಫಾರಸು ಮಾಡುವುದಿಲ್ಲ}other{ನಿರ್ವಾಹಕರ ನೀತಿಯು ಈ ಫೈಲ್‌ಗಳನ್ನು <ph name="DESTINATION_NAME" /> ಗೆ ಸರಿಸಲು ಶಿಫಾರಸು ಮಾಡುವುದಿಲ್ಲ}}</translation>
 <translation id="4305666528087210886">ನಿಮ್ಮ ಫೈಲ್ ಅನ್ನು ಪ್ರವೇಶಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ</translation>
 <translation id="4306529830550717874">ವಿಳಾಸವನ್ನು ಉಳಿಸಬೇಕೆ?</translation>
 <translation id="4306812610847412719">ಕ್ಲಿಪ್‌ಬೋರ್ಡ್</translation>
@@ -1421,6 +1427,7 @@
 <translation id="4751476147751820511">ಚಲನೆ ಅಥವಾ ಬೆಳಕಿನ ಸೆನ್ಸರ್‌ಗಳು</translation>
 <translation id="4754461935447132332">ಸುರಕ್ಷಿತವಲ್ಲದ ಸೈಟ್‌ಗಳಿಗೆ ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ</translation>
 <translation id="4756388243121344051">&amp;ಇತಿಹಾಸ</translation>
+<translation id="4756501505996488486">PRC 16K</translation>
 <translation id="4757993714154412917">ನೀವು ಈಗಷ್ಟೇ ವಂಚನೆ ಮಾಡುವ ಸೈಟ್‌ನಲ್ಲಿ ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ನಮೂದಿಸಿದ್ದೀರಿ. ನಿಮ್ಮ ಖಾತೆಗಳನ್ನು ಭದ್ರಪಡಿಸಲು, ನಿಮ್ಮ ಉಳಿಸಿದ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಪರಿಶೀಲಿಸಲು Chromium ಶಿಫಾರಸು ಮಾಡುತ್ತದೆ.</translation>
 <translation id="4758311279753947758">ಸಂಪರ್ಕ ಮಾಹಿತಿಯನ್ನು ಸೇರಿಸಿ</translation>
 <translation id="4761104368405085019">ನಿಮ್ಮ ಮೈಕ್ರೊಫೋನ್ ಅನ್ನು ಬಳಸಿ</translation>
@@ -1627,6 +1634,7 @@
 <translation id="5254043433801397071">ಪ್ರಿಂಟ್ ವಿಷಯವನ್ನು ಆಪ್ಟಿಮೈಸ್ ಮಾಡಿ</translation>
 <translation id="5254958791078852567">E1</translation>
 <translation id="5255690596502591079">ಹೇಗಿದ್ದರೂ ಕ್ಯಾಪ್ಚರ್ ಮಾಡಿ</translation>
+<translation id="5257739419779698609">{0,plural, =1{ನಿರ್ವಾಹಕರ ನೀತಿಯು ಈ ಫೈಲ್ ಅನ್ನು <ph name="DESTINATION_NAME" /> ಗೆ ನಕಲಿಸಲು ಶಿಫಾರಸು ಮಾಡುವುದಿಲ್ಲ}one{ನಿರ್ವಾಹಕರ ನೀತಿಯು ಈ ಫೈಲ್‌ಗಳನ್ನು <ph name="DESTINATION_NAME" /> ಗೆ ನಕಲಿಸಲು ಶಿಫಾರಸು ಮಾಡುವುದಿಲ್ಲ}other{ನಿರ್ವಾಹಕರ ನೀತಿಯು ಈ ಫೈಲ್‌ಗಳನ್ನು <ph name="DESTINATION_NAME" /> ಗೆ ನಕಲಿಸಲು ಶಿಫಾರಸು ಮಾಡುವುದಿಲ್ಲ}}</translation>
 <translation id="5266128565379329178">ಮೇಲ್ಭಾಗದಲ್ಲಿ ಬೈಂಡ್ ಮಾಡಿ</translation>
 <translation id="5269225904387178860">ಕೆಳಭಾಗದಲ್ಲಿ ನಾಲ್ಕು ತೂತುಗಳನ್ನು ಮಾಡಿ</translation>
 <translation id="5269999699920406580">ಸಿಸ್ಟಮ್‌ನಾದ್ಯಂತ ಅನ್ವಯವಾಗುವ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಮಾಲೀಕರಿಂದ ಮಾತ್ರ ಹೊಂದಿಸಬಹುದು: <ph name="OWNER_EMAIL" /></translation>
@@ -1689,6 +1697,7 @@
 <translation id="5412236728747081950">ನಿಮಗೆ ಹೆಚ್ಚು ಸಂಬಂಧಿತ ಜಾಹೀರಾತುಗಳನ್ನು ತೋರಿಸಲು, ಈ ಸೈಟ್ ನಿಮ್ಮ ಆಸಕ್ತಿಗಳ ಕುರಿತ ಮಾಹಿತಿಯನ್ನು Chrome ನಿಂದ ಪಡೆಯುತ್ತದೆ</translation>
 <translation id="5412245327974352290"><ph name="TRADITIONAL_TEXT" /> - <ph name="ADDITIONAL_TEXT" /></translation>
 <translation id="541416427766103491">ಸ್ಟ್ಯಾಕರ್ 4</translation>
+<translation id="5414511064953050917">ಹೇಗಿದ್ದರೂ ಸರಿಸಿ</translation>
 <translation id="5421136146218899937">ಬ್ರೌಸಿಂಗ್ ಡೇಟಾವನ್ನು ತೆರವುಗೊಳಿಸಿ...</translation>
 <translation id="5425241977284572032">{NUM_COOKIES,plural, =0{ಯಾವುದೇ ಸೈಟ್‌ಗಳನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿಲ್ಲ}=1{1 ಸೈಟ್ ಅನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ}one{# ಸೈಟ್‌ಗಳನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ}other{# ಸೈಟ್‌ಗಳನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ}}</translation>
 <translation id="5426179911063097041">ನಿಮಗೆ ಅಧಿಸೂಚನೆಗಳನ್ನು ಕಳುಹಿಸಲು <ph name="SITE" /> ಬಯಸುತ್ತದೆ</translation>
@@ -2158,6 +2167,7 @@
 <translation id="6738516213925468394">ನಿಮ್ಮ ಡೇಟಾವನ್ನು <ph name="TIME" /> ಸಮಯಕ್ಕೆ ನಿಮ್ಮ <ph name="BEGIN_LINK" />ಸಿಂಕ್ ಪಾಸ್‌ಫ್ರೇಸ್<ph name="END_LINK" /> ನೊಂದಿಗೆ ಎನ್‌ಕ್ರಿಪ್ಟ್ ಮಾಡಲಾಗಿದೆ. ಸಿಂಕ್ ಪ್ರಾರಂಭಿಸಲು ಅದನ್ನು ನಮೂದಿಸಿ.</translation>
 <translation id="674375294223700098">ಅಪರಿಚಿತ ಸರ್ವರ್ ಪ್ರಮಾಣಪತ್ರ ದೋಷ.</translation>
 <translation id="6744009308914054259">ಸಂಪರ್ಕಕ್ಕಾಗಿ ನಿರೀಕ್ಷಿಸುತ್ತಿರುವಾಗ, ಆಫ್‌ಲೈನ್ ​​ಲೇಖನಗಳನ್ನು ಓದಲು ನೀವು ಡೌನ್‌ಲೋಡ್‌ಗಳಿಗೆ ಭೇಟಿ ನೀಡಬಹುದು.</translation>
+<translation id="6751487147225428522">ROC 8K</translation>
 <translation id="6752086006821653994">ಟೆಲಿಕಾನ್ಫರೆನ್ಸಿಂಗ್</translation>
 <translation id="6753269504797312559">ನೀತಿ ಮೌಲ್ಯ</translation>
 <translation id="6755241357817244406">chrome://flags</translation>
@@ -2191,6 +2201,7 @@
 <translation id="6846340164947227603">ವರ್ಚುವಲ್ ಕಾರ್ಡ್ ಸಂಖ್ಯೆಯೊಂದನ್ನು ಬಳಸಿ...</translation>
 <translation id="6852204201400771460">ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಪುನಃ ಆರಂಭಿಸಬೇಕೆ?</translation>
 <translation id="6857776781123259569">ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸಿ...</translation>
+<translation id="6864189428899665393">267 x 389 ಮಿಮೀ</translation>
 <translation id="686485648936420384">ಗ್ರಾಹಕ ಸಂಪನ್ಮೂಲಗಳು</translation>
 <translation id="6865412394715372076">ಈ ಕಾರ್ಡ್ ಅನ್ನು ಈಗಲೇ ಪರಿಶೀಲಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ</translation>
 <translation id="6869334554832814367">ವೈಯಕ್ತಿಕ ಸಾಲಗಳು</translation>
@@ -2303,9 +2314,11 @@
 <translation id="7138472120740807366">ವಿತರಣೆ ವಿಧಾನ</translation>
 <translation id="7139892792842608322">ಪ್ರಾಥಮಿಕ ಟ್ರೇ</translation>
 <translation id="714064300541049402">ಅಂಚು 2 ಚಿತ್ರ X ಶಿಫ್ಟ್</translation>
+<translation id="7143682719845053166">PRC 32K</translation>
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> ಮತ್ತು <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> ಇನ್ನಷ್ಟು}one{<ph name="PAYMENT_METHOD_PREVIEW" /> ಮತ್ತು <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> ಇನ್ನಷ್ಟು}other{<ph name="PAYMENT_METHOD_PREVIEW" /> ಮತ್ತು <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> ಇನ್ನಷ್ಟು}}</translation>
 <translation id="7153618581592392745">ನಸು ಕೆನ್ನೀಲಿ</translation>
 <translation id="7156870133441232244">ಸರ್ವರ್ ಅನ್ನು TLS 1.2 ಅಥವಾ ನಂತರದ ಆವೃತ್ತಿಗೆ ಅಪ್‌ಗ್ರೇಡ್ ಮಾಡಿ.</translation>
+<translation id="7163295244162773898">{0,plural, =1{ಗೌಪ್ಯ ಫೈಲ್ ಅನ್ನು ನಕಲಿಸಬೇಕೇ?}one{ಗೌಪ್ಯ ಫೈಲ್‌ಗಳನ್ನು ನಕಲಿಸಬೇಕೇ?}other{ಗೌಪ್ಯ ಫೈಲ್‌ಗಳನ್ನು ನಕಲಿಸಬೇಕೇ?}}</translation>
 <translation id="717330890047184534">Gaia ಐಡಿ:</translation>
 <translation id="7174545416324379297">ವಿಲೀನಗೊಳಿಸಲಾಗಿದೆ</translation>
 <translation id="7175401108899573750">{SHIPPING_OPTIONS,plural, =0{<ph name="SHIPPING_OPTION_PREVIEW" />}=1{<ph name="SHIPPING_OPTION_PREVIEW" /> ಮತ್ತು <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> ಇನ್ನಷ್ಟು}one{<ph name="SHIPPING_OPTION_PREVIEW" /> ಮತ್ತು <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> ಇನ್ನಷ್ಟು}other{<ph name="SHIPPING_OPTION_PREVIEW" /> ಮತ್ತು <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> ಇನ್ನಷ್ಟು}}</translation>
@@ -2383,6 +2396,7 @@
 <translation id="7363096869660964304">ಆದಾಗ್ಯೂ, ನೀವು ಕಾಣಿಸಿಕೊಳ್ಳದೇ ಇರಲು ಸಾಧ್ಯವಿಲ್ಲ. ಅಜ್ಞಾತವಾಗಿ ಹೋಗುವುದರಿಂದ ನಿಮ್ಮ ಉದ್ಯೋಗದಾತರು, ನಿಮ್ಮ ಇಂಟರ್ನೆಟ್ ಸೇವಾ ಪೂರೈಕೆದಾರರು ಇಲ್ಲವೇ ನೀವು ಭೇಟಿ ನೀಡುವ ವೆಬ್‌ಸೈಟ್‌ಗಳಿಂದ ನಿಮ್ಮ ಬ್ರೌಸಿಂಗ್ ಅನ್ನು ಮರೆಮಾಡಲಾಗುವುದಿಲ್ಲ.</translation>
 <translation id="7365596969960773405"><ph name="MANAGE_ADDRESSES_FOCUSED_FRIENDLY_MATCH_TEXT" />, Chrome ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ವಿಳಾಸಗಳನ್ನು ಸೇರಿಸಲು ಮತ್ತು ನಿರ್ವಹಿಸಲು Tab ಒತ್ತಿ, ನಂತರ Enter ಒತ್ತಿ</translation>
 <translation id="7365849542400970216">ನಿಮ್ಮ ಸಾಧನದ ಬಳಕೆಯ ಕುರಿತು ತಿಳಿಯಲು ಬಳಸುವಿರಾ?</translation>
+<translation id="7366117520888504990">198 x 275 ಮಿಮೀ</translation>
 <translation id="7366362069757178916">ಪಾವತಿ ಹ್ಯಾಂಡ್‌ಲರ್‌ಗಳು</translation>
 <translation id="7372973238305370288">ಹುಡುಕಾಟ ಫಲಿತಾಂಶ</translation>
 <translation id="7374461526650987610">ಪ್ರೊಟೊಕಾಲ್ ಹ್ಯಾಂಡ್‌ಲರ್‌ಗಳು</translation>
@@ -2541,6 +2555,7 @@
 <translation id="7687186412095877299">ಉಳಿಸಲಾದ ನಿಮ್ಮ ಪಾವತಿ ವಿಧಾನಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಪಾವತಿ ಫಾರ್ಮ್‌ಗಳನ್ನು ಭರ್ತಿ ಮಾಡುತ್ತದೆ</translation>
 <translation id="7687305263118037187">ಮರುಪ್ರಯತ್ನದ ಅವಧಿ ಮೀರಿದೆ</translation>
 <translation id="7687451951329798396">ಇತರ ಮಾಹಿತಿಯ ಮೂಲಗಳು ಏನೆಂದು ಹೇಳುತ್ತವೆ?</translation>
+<translation id="7690647519407127574">Oufuku Hagaki ಪೋಸ್ಟ್‌ಕಾರ್ಡ್</translation>
 <translation id="7693583928066320343">ಸ್ವೀಕರಿಸಲಾದ ಪುಟದ ಆರ್ಡರ್</translation>
 <translation id="7696089921647603491">ಕ್ಲಾಸಿಕ್ ರಾಕ್ ಮತ್ತು ಓಲ್ಡೀಸ್</translation>
 <translation id="769721561045429135">ಸದ್ಯಕ್ಕೆ, ಈ ಸಾಧನದಲ್ಲಿ ಬಳಸಬಹುದಾದ ಕಾರ್ಡ್‌ಗಳನ್ನು ಮಾತ್ರವೇ ನೀವು ಹೊಂದಿದ್ದೀರಿ. ಕಾರ್ಡ್‌ಗಳನ್ನು ಪರಿಶೀಲಿಸಲು ಮುಂದುವರಿಸಿ ಕ್ಲಿಕ್ ಮಾಡಿ.</translation>
@@ -2714,6 +2729,7 @@
 <translation id="8202370299023114387">ಸಂಘರ್ಷ</translation>
 <translation id="8210604850413485128">ವೆಬ್ ಹೋಸ್ಟಿಂಗ್</translation>
 <translation id="8211406090763984747">ಸಂಪರ್ಕ ಸುರಕ್ಷಿತವಾಗಿದೆ</translation>
+<translation id="8213853114485953510">JIS Exec</translation>
 <translation id="8217240300496046857">ವೆಬ್‌ನಾದ್ಯಂತ ನಿಮ್ಮನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡುವ ಕುಕೀಗಳನ್ನು ವೆಬ್‌ಸೈಟ್‌ಗಳು ಬಳಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ಸೈಟ್‌ಗಳಲ್ಲಿನ ಕೆಲವು ವೈಶಿಷ್ಟ್ಯಗಳು ಕಾರ್ಯನಿರ್ವಹಿಸುವುದನ್ನು ನಿಲ್ಲಿಸಬಹುದು.</translation>
 <translation id="8217748145574471584">ಮಾನವ ಸಂಪನ್ಮೂಲಗಳು</translation>
 <translation id="8218327578424803826">ನಿಯೋಜಿಸಲಾದ ಸ್ಥಳ:</translation>
@@ -2911,6 +2927,7 @@
 <translation id="8763986294015493060">ಪ್ರಸ್ತುತವಾಗಿ ತೆರೆದಿರುವ ಎಲ್ಲಾ ಅಜ್ಞಾತ ವಿಂಡೋಗಳನ್ನು ಮುಚ್ಚಿ</translation>
 <translation id="8766943070169463815">ಸುರಕ್ಷಿತ ಪಾವತಿ ರುಜುವಾತು ದೃಢೀಕರಣ ಶೀಟ್ ತೆರೆದಿದೆ</translation>
 <translation id="8767765348545497220">ಸಹಾಯಕ ಬಬಲ್ ಅನ್ನು ಮುಚ್ಚಿ</translation>
+<translation id="877348612833018844">{0,plural, =1{ಗೌಪ್ಯ ಫೈಲ್ ಅನ್ನು ಸರಿಸಬೇಕೇ?}one{ಗೌಪ್ಯ ಫೈಲ್‌ಗಳನ್ನು ಸರಿಸಬೇಕೇ?}other{ಗೌಪ್ಯ ಫೈಲ್‌ಗಳನ್ನು ಸರಿಸಬೇಕೇ?}}</translation>
 <translation id="877985182522063539">A4</translation>
 <translation id="8785658048882205566">ಮೋಟಾರ್ ಸೈಕಲ್‌ಗಳು</translation>
 <translation id="8790007591277257123">&amp;ಅಳಿಸುವುದನ್ನು ಮತ್ತೆಮಾಡು</translation>
@@ -2927,6 +2944,7 @@
 <translation id="8816395686387277279"><ph name="UPDATE_CHROME_FOCUSED_FRIENDLY_MATCH_TEXT" />, ನಿಮ್ಮ Chrome ಸೆಟ್ಟಿಂಗ್‌ಗಳಿಂದ Chrome ಅನ್ನು ಅಪ್‌ಡೇಟ್‌ ಮಾಡಲು Tab ಒತ್ತಿ, ನಂತರ Enter ಒತ್ತಿರಿ</translation>
 <translation id="8820817407110198400">ಬುಕ್‌ಮಾರ್ಕ್‌ಗಳು</translation>
 <translation id="882338992931677877">ಹಸ್ತಚಾಲಿತ ಟ್ರೇ</translation>
+<translation id="8830320733681313421">Hagaki ಪೋಸ್ಟ್‌ಕಾರ್ಡ್</translation>
 <translation id="8834380158646307944">ಅಜ್ಞಾತ ವಿಂಡೋಗಳ ಬಟನ್ ಅನ್ನು ಮುಚ್ಚಿ, ಪ್ರಸ್ತುತವಾಗಿ ತೆರೆದಿರುವ ಎಲ್ಲಾ ಅಜ್ಞಾತ ವಿಂಡೋಗಳನ್ನು ಮುಚ್ಚಲು Enter ಒತ್ತಿರಿ</translation>
 <translation id="883848425547221593">ಇತರ ಬುಕ್‌ಮಾರ್ಕ್‌ಗಳು:</translation>
 <translation id="884264119367021077">ಶಿಪ್ಪಿಂಗ್‌ ವಿಳಾಸ</translation>
diff --git a/components/strings/components_strings_ky.xtb b/components/strings/components_strings_ky.xtb
index d0687d6..4c7ec80 100644
--- a/components/strings/components_strings_ky.xtb
+++ b/components/strings/components_strings_ky.xtb
@@ -307,6 +307,7 @@
 <translation id="168841957122794586">Сервердин тастыктамасында чабал криптографиялык ачкыч камтылган.</translation>
 <translation id="1697532407822776718">Баары даяр!</translation>
 <translation id="1699570257714336246">Маалымат жетишсиз</translation>
+<translation id="1702815194757674443">ROC 16K</translation>
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706625117072057435">Ченөлчөм деңгээлдери</translation>
 <translation id="1706954506755087368">{1,plural, =1{Бул сервер <ph name="DOMAIN" /> экенин далилдей алган жок. Анын коопсуздук тастыктамасы эртең күчүнө кирет. Мындай көйгөй сервердин туура эмес конфигурацияланышы менен шартталышы мүмкүн же кимдир-бирөө ортодон дайын-даректериңизди кармап калганга аракет кылып жатат.}other{Бул сервер <ph name="DOMAIN" /> экенин далилдей алган жок. Анын коопсуздук тастыктамасы # күндөн кийин күчүнө кирет. Мындай көйгөй сервердин туура эмес конфигурацияланышы менен шартталышы мүмкүн же кимдир-бирөө ортодон дайын-даректериңизди кармап калганга аракет кылып жатат.}}</translation>
@@ -550,6 +551,7 @@
 <translation id="2359347814217202136">{NUM_DAYS,plural, =0{1 күнгө жетпеген убакытта}=1{1 күндөн кийин}other{{NUM_DAYS} күндөн кийин}}</translation>
 <translation id="2359629602545592467">Бир нече</translation>
 <translation id="2359808026110333948">Улантуу</translation>
+<translation id="2361263712565360498">275 x 395 мм.</translation>
 <translation id="236340516568226369">Өчүрүү/күйгүзүү менюсунун өлчөмүн өзгөртүү</translation>
 <translation id="2367567093518048410">Деңгээли</translation>
 <translation id="2380886658946992094">Legal</translation>
@@ -710,6 +712,7 @@
 <translation id="2799223571221894425">Кайра ишке киргизүү</translation>
 <translation id="2803306138276472711">Google Коопсуз Серепчи жакында <ph name="SITE" /> сайтынан <ph name="BEGIN_LINK" />кесепеттүү программа<ph name="END_LINK" /> тапты. Кээде коопсуз вебсайттар кесепеттүү программалардан жабыркап калышат.</translation>
 <translation id="2807052079800581569">Y сүрөтүнүн абалы</translation>
+<translation id="2808278141522721006">Windows Hello функциясын <ph name="SETTINGS" /> бөлүмүнөн күйгүзүп же өчүрө аласыз</translation>
 <translation id="2820957248982571256">Скандалууда…</translation>
 <translation id="2824775600643448204">Дарек жана издөө тилкеси</translation>
 <translation id="2826760142808435982">Бул туташуу <ph name="CIPHER" /> аркылуу шифрленип, аныктыгы текшерилген жана муну <ph name="KX" /> алмаштыруу механизми катары колдонот.</translation>
@@ -880,6 +883,7 @@
 <translation id="3288238092761586174">Төлөмүңүздү ырастоо үчүн <ph name="URL" /> кошумча кадамдарды аткарышы керек</translation>
 <translation id="3293642807462928945"><ph name="POLICY_NAME" /> саясаты жөнүндө кеңири маалымат</translation>
 <translation id="3295444047715739395">Сырсөздөрүңүздү Chrome'дун жөндөөлөрүндө көрүп, башкарыңыз</translation>
+<translation id="3299098170013242198">Сырсөздөрдү толтуруу үчүн Windows Hello күйгүзүлдү</translation>
 <translation id="3303855915957856445">Эч нерсе табылган жок</translation>
 <translation id="3304073249511302126">bluetooth түзмөктөрүн издөө</translation>
 <translation id="33073482541490531">Жаңы эле колдонгон сырсөзүңүздү кимдир бирөө билип алганы аныкталды. Сырсөздөрдү башкаргыч бул сырсөздү азыр өзгөртүүнү сунуштайт.</translation>
@@ -1027,6 +1031,7 @@
 <translation id="3678342917559046352">Жараксыз кеңейтүү: Маанинин күтүлгөн форматы төмөнкү формада болушу керек: &lt;extension_id&gt; же &lt;extension_id&gt;;&lt;update_url&gt;.</translation>
 <translation id="3678529606614285348">Баракчаны жаңы жашыруун терезеде ачуу (Ctrl-Shift-N)</translation>
 <translation id="3681007416295224113">Тастыктама маалыматы</translation>
+<translation id="3699374065820972102">Сырсөздөрдү толтуруу үчүн TouchID күйгүзүлдү</translation>
 <translation id="3701427423622901115">Баштапкы абалга келтирүү аракети ырасталды.</translation>
 <translation id="3704162925118123524">Сиз колдонуп жаткан тармак, анын кирүү барагына баш багууңузду талап кылышы мүмкүн.</translation>
 <translation id="3705189812819839667"><ph name="RESULT_OWNER" />, <ph name="RESULT_PRODUCT_SOURCE" /></translation>
@@ -1424,6 +1429,7 @@
 <translation id="4751476147751820511">Кыймыл же жарык сенсорлору</translation>
 <translation id="4754461935447132332">Кооптуу сайттарда тыюу салынат</translation>
 <translation id="4756388243121344051">&amp;Таржымал</translation>
+<translation id="4756501505996488486">PRC 16K</translation>
 <translation id="4757993714154412917">Сырсөзүңүздү жаңы эле кооптуу сайтта киргиздиңиз. Аккаунттарыңызды коргоо үчүн Chromium сакталган сырсөздөрүңүздү текшерүүнү сунуштайт.</translation>
 <translation id="4758311279753947758">Байланыш маалыматын кошуу</translation>
 <translation id="4761104368405085019">Микрофонуңузду колдонуңуз</translation>
@@ -1485,6 +1491,7 @@
 <translation id="4900217275619098670">Тогузунчу барабан</translation>
 <translation id="4901778704868714008">Сактоо…</translation>
 <translation id="4905659621780993806">Администраторуңуз түзмөктү <ph name="DATE" /> саат <ph name="TIME" /> автоматтык түрдө өчүрүп күйгүзөт. Түзмөк өчүрүлүп күйгүзүлгөнгө чейин ачылып турган нерселерди сактаңыз.</translation>
+<translation id="4911007278801291296">TouchID функциясын <ph name="SETTINGS" /> бөлүмүнөн күйгүзүп же өчүрө аласыз</translation>
 <translation id="4913987521957242411">Жогорку сол жагын тешүү</translation>
 <translation id="4918221908152712722"><ph name="APP_NAME" /> колдонмосун орнотуу (жүктөп алуунун кереги жок)</translation>
 <translation id="4923459931733593730">Төлөм</translation>
@@ -1677,6 +1684,7 @@
 <translation id="5357848622083956825">Визуалдык көркөм өнөр жана дизайн</translation>
 <translation id="536296301121032821">Саясат жөндөөлөрү сакталбай калды</translation>
 <translation id="5363309033720083897">Администраторуңуз уруксат берген сериялык порттор</translation>
+<translation id="5363713372507812442">Саякаттарды издөө</translation>
 <translation id="5371425731340848620">Картаны жаңыртуу</translation>
 <translation id="5377026284221673050">"Саатыңыз артта" же "Саатыңыз алдыда" же "&lt;span class="error-code"&gt;NET::ERR_CERT_DATE_INVALID&lt;/span&gt;"</translation>
 <translation id="5379027395132364855">Презентация түзүү баскычы. Slides кызматында жаңы Google презентациясын түзүү үчүн Enter баскычын басыңыз</translation>
@@ -2162,6 +2170,7 @@
 <translation id="6738516213925468394">Дайын-даректериңиз <ph name="BEGIN_LINK" />шайкештирүүчү өткөрүүчү сүйлөм<ph name="END_LINK" /> менен <ph name="TIME" /> шифрлеген. Шайкештирип баштоо үчүн, аны киргизиңиз.</translation>
 <translation id="674375294223700098">Сервер тастыктамасынын белгисиз катасы.</translation>
 <translation id="6744009308914054259">Интернет байланышын күткөнчө, Жүктөлүп алынган файлдарды ачып, макалаларды оффлайнда окуп туруңуз.</translation>
+<translation id="6751487147225428522">ROC 8K</translation>
 <translation id="6752086006821653994">Телеконференция</translation>
 <translation id="6753269504797312559">Саясат мааниси</translation>
 <translation id="6755241357817244406">chrome://flags</translation>
@@ -2195,6 +2204,7 @@
 <translation id="6846340164947227603">Виртуалдык картанын номерин колдонуу...</translation>
 <translation id="6852204201400771460">Колдонмо кайра жүктөлсүнбү?</translation>
 <translation id="6857776781123259569">Сырсөздөрдү башкаруу…</translation>
+<translation id="6864189428899665393">267 x 389 мм.</translation>
 <translation id="686485648936420384">Керектөөчү ресурстары</translation>
 <translation id="6865412394715372076">Бул картаны учурда ырастоо мүмкүн эмес</translation>
 <translation id="6869334554832814367">Жеке насыялар</translation>
@@ -2307,6 +2317,7 @@
 <translation id="7138472120740807366">Жеткирүү ыкмасы</translation>
 <translation id="7139892792842608322">Негизги түпкүч</translation>
 <translation id="714064300541049402">2-тараптын X сүрөтүн жылдыруу</translation>
+<translation id="7143682719845053166">PRC 32K</translation>
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> жана дагы <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> ыкма}other{<ph name="PAYMENT_METHOD_PREVIEW" /> жана дагы <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> ыкма}}</translation>
 <translation id="7153618581592392745">Ач сыя</translation>
 <translation id="7156870133441232244">Серверди TLS 1.2 же андан кийинки версияга жаңыртуу керек.</translation>
@@ -2387,6 +2398,7 @@
 <translation id="7363096869660964304">Ошентсе да, сиз көрүнбөй калбайсыз. Жашыруун режимге өтүү менен, көргөн вебсайттарыңызды иш берүүчүңүздөн, Интернет кызматын жабдуучудан же баш баккан вебсайттарыңыздан жашыра албайсыз.</translation>
 <translation id="7365596969960773405"><ph name="MANAGE_ADDRESSES_FOCUSED_FRIENDLY_MATCH_TEXT" />, Chrome жөндөөлөрүнөн даректерди кошуу жана башкаруу үчүн Tab, андан соң Enter баскычын басыңыз</translation>
 <translation id="7365849542400970216">Түзмөгүңүз колдонулган учур сайттарга билдирилсинби?</translation>
+<translation id="7366117520888504990">198 x 275 мм.</translation>
 <translation id="7366362069757178916">Төлөмдү иштеткичтер</translation>
 <translation id="7372973238305370288">издөө натыйжасы</translation>
 <translation id="7374461526650987610">Протокол жүргүзгүчтөр</translation>
@@ -2546,6 +2558,7 @@
 <translation id="7687186412095877299">Сакталган төлөм ыкмаларыңыз менен төлөм формаларын толтурат</translation>
 <translation id="7687305263118037187">Кайталоонун күтүү мөөнөтү</translation>
 <translation id="7687451951329798396">Башка булактарда эмне деп айтылган?</translation>
+<translation id="7690647519407127574">Oufuku Hagaki Ачык кат</translation>
 <translation id="7693583928066320343">Барактын ирети алынды</translation>
 <translation id="7696089921647603491">Классикалык рок жана эски хиттер</translation>
 <translation id="769721561045429135">Учурда карталарыңызды ушул түзмөктө гана колдонууга болот. Карталарды карап чыгуу үчүн "Улантуу" дегенди басыңыз.</translation>
@@ -2719,6 +2732,7 @@
 <translation id="8202370299023114387">Дал келбестик</translation>
 <translation id="8210604850413485128">Веб башкы түйүнү</translation>
 <translation id="8211406090763984747">Туташуу коопсуз</translation>
+<translation id="8213853114485953510">JIS Exec</translation>
 <translation id="8217240300496046857">Сайттар Интернеттеги аракеттериңизге көз салган cookie файлдарын колдоно албайт. Функциялар айрым сайттарда туура иштебеши мүмкүн.</translation>
 <translation id="8217748145574471584">Жумуш менен камсыздоо</translation>
 <translation id="8218327578424803826">Дайындалган жайгашкан жер:</translation>
@@ -2931,6 +2945,7 @@
 <translation id="8816395686387277279"><ph name="UPDATE_CHROME_FOCUSED_FRIENDLY_MATCH_TEXT" />. Chrome жөндөөлөрүңүздөн Chrome'ду жаңыртуу үчүн, Tab, андан соң Enter баскычын басыңыз</translation>
 <translation id="8820817407110198400">Кыстармалар</translation>
 <translation id="882338992931677877">Кол менен киргизилген түпкүч</translation>
+<translation id="8830320733681313421">Hagaki Ачык кат</translation>
 <translation id="8834380158646307944">"Жашыруун терезелерди жабуу" баскычы, учурдагы жашыруун терезелердин баарын жабуу үчүн Enter баскычын басыңыз</translation>
 <translation id="883848425547221593">Башка кыстармалар</translation>
 <translation id="884264119367021077">Жеткирүү дареги</translation>
diff --git a/components/strings/components_strings_lo.xtb b/components/strings/components_strings_lo.xtb
index bac05316..48b19e9 100644
--- a/components/strings/components_strings_lo.xtb
+++ b/components/strings/components_strings_lo.xtb
@@ -396,6 +396,7 @@
 <translation id="192020519938775529">{COUNT,plural, =0{ບໍ່ມີ}=1{1 ເວັບໄຊ}other{# ເວັບໄຊ}}</translation>
 <translation id="1924727005275031552">ໃໝ່</translation>
 <translation id="1927439593081478069">ເປີດໃຊ້ກວດສອບຄວາມປອດໄພ Chrome, ກົດ Enter ເພື່ອເປີດໃຊ້ການກວດສອບຄວາມປອດໄພໃນ Chrome</translation>
+<translation id="1935995810530254458">ຢືນຢັນການສຳເນົາ</translation>
 <translation id="1939175642807587452">ສາມາດຂໍສົ່ງການແຈ້ງເຕືອນ</translation>
 <translation id="1943994668912612445">ການອອກແບບ</translation>
 <translation id="1945968466830820669">ທ່ານອາດຈະສູນເສຍການເຂົ້າເຖິງບັນຊີຂອງອົງການຂອງທ່ານ ຫຼື ປະສົບກັບການລັກໃຊ້ຕົວຕົນ.</translation>
@@ -449,6 +450,7 @@
 <translation id="2085876078937250610">ບັນທຶກ…</translation>
 <translation id="2088086323192747268">ຈັດການປຸ່ມຊິ້ງຂໍ້ມູນ, ກົດ Enter ເພື່ອຈັດການວ່າຂໍ້ມູນໃດທີ່ທ່ານຈະຊິ້ງຂໍ້ມູນໃນການຕັ້ງຄ່າ Chrome</translation>
 <translation id="2091887806945687916">ສຽງ</translation>
+<translation id="2093982008204312032">Google Chrome ກຳລັງພະຍາຍາມປິດ Windows Hello ສຳລັບການຕື່ມລະຫັດຜ່ານ.</translation>
 <translation id="2094505752054353250">ໂດເມນບໍ່ເຂົ້າຄູ່ກັນ</translation>
 <translation id="2099652385553570808">ໜີບກະຫຼັບເຟີເບື້ອງຊ້າຍສາມເທື່ອ</translation>
 <translation id="2101225219012730419">ລຸ້ນ:</translation>
@@ -1143,6 +1145,7 @@
 <translation id="4014128326099193693">{COUNT,plural, =1{ເອກະສານ PDF ທີ່ປະກອບມີ {COUNT} ໜ້າ}other{ເອກະສານ PDF ທີ່ປະກອບມີ {COUNT} ໜ້າ}}</translation>
 <translation id="4022639246993848966">3.5x5</translation>
 <translation id="4023431997072828269">ເພາະວ່າແບບຟອມນີ້ກຳລັງຖືກສົ່ງໂດຍໃຊ້ການເຊື່ອມຕໍ່ທີ່ບໍ່ປອດໄພ, ຄົນອື່ນຈຶ່ງສາມາດເຫັນຂໍ້ມູນຂອງທ່ານໄດ້.</translation>
+<translation id="4024923292610332139">ປິດ TouchID ສຳລັບການຕື່ມລະຫັດຜ່ານ</translation>
 <translation id="4025913568718019429">ປຸ່ມຈັດການການຕັ້ງຄ່າຄວາມເປັນສ່ວນຕົວ Google, ກົດ Enter ເພື່ອເຂົ້າເບິ່ງການຕັ້ງຄ່າຄວາມເປັນສ່ວນຕົວບັນຊີ Google ຂອງທ່ານ</translation>
 <translation id="4030383055268325496">ປ່ຽນ​ກັບ​ຄືນຄໍາສັ່ງເພີ່ມ</translation>
 <translation id="4031179711345676612">ອະນຸຍາດໄມໂຄຣໂຟນແລ້ວ</translation>
@@ -1259,6 +1262,7 @@
 <translation id="42981349822642051">ຂະ​ຫຍາຍ</translation>
 <translation id="4300675098767811073">ເຈາະຮູເບື້ອງຂວາຫຼາຍຮູ</translation>
 <translation id="4302514097724775343">ແຕະ dino ເພື່ອຫຼິ້ນ</translation>
+<translation id="4304049446746819918">{0,plural, =1{ນະໂຍບາຍຜູ້ເບິ່ງແຍງລະບົບບໍ່ແນະນຳໃຫ້ຍ້າຍໄຟລ໌ນີ້ໄປໃສ່ <ph name="DESTINATION_NAME" />}other{ນະໂຍບາຍຜູ້ເບິ່ງແຍງລະບົບບໍ່ແນະນຳໃຫ້ຍ້າຍໄຟລ໌ເຫຼົ່ານີ້ໄປໃສ່ <ph name="DESTINATION_NAME" />}}</translation>
 <translation id="4305666528087210886">ບໍ່ສາມາດເຂົ້າເຖິງໄຟລ໌ຂອງທ່ານໄດ້</translation>
 <translation id="4306529830550717874">ບັນທຶກທີ່ຢູ່ບໍ?</translation>
 <translation id="4306812610847412719">ຄລິບບອດ</translation>
@@ -1634,6 +1638,7 @@
 <translation id="5254043433801397071">ເພີ່ມປະສິດທິພາບເນື້ອຫາທີ່ພິມ</translation>
 <translation id="5254958791078852567">E1</translation>
 <translation id="5255690596502591079">ຢືນຢັນການບັນທຶກ</translation>
+<translation id="5257739419779698609">{0,plural, =1{ນະໂຍບາຍຜູ້ເບິ່ງແຍງລະບົບບໍ່ແນະນຳໃຫ້ສຳເນົາໄຟລ໌ນີ້ໄປໃສ່ <ph name="DESTINATION_NAME" />}other{ນະໂຍບາຍຜູ້ເບິ່ງແຍງລະບົບບໍ່ແນະນຳໃຫ້ສຳເນົາໄຟລ໌ເຫຼົ່ານີ້ໄປໃສ່ <ph name="DESTINATION_NAME" />}}</translation>
 <translation id="5266128565379329178">ຫຍິບເຫຼັ້ມຢູ່ເທິງສຸດ</translation>
 <translation id="5269225904387178860">ເຈາະຮູຢູ່ລຸ່ມສຸດສີ່ຮູ</translation>
 <translation id="5269999699920406580">ຄຸນສົມບັດທີ່ນຳໃຊ້ໃນທົ່ວລະບົບສາມາດຕັ້ງຄ່າໄດ້ໂດຍເຈົ້າຂອງເທົ່ານັ້ນ: <ph name="OWNER_EMAIL" /></translation>
@@ -1696,6 +1701,7 @@
 <translation id="5412236728747081950">ເວັບໄຊນີ້ໄດ້ຮັບຄວາມສົນໃຈຂອງທ່ານຈາກ Chrome ເພື່ອສະແດງໂຄສະນາທີ່ກ່ຽວຂ້ອງຫຼາຍຂຶ້ນໃຫ້ທ່ານເຫັນ</translation>
 <translation id="5412245327974352290"><ph name="TRADITIONAL_TEXT" /> - <ph name="ADDITIONAL_TEXT" /></translation>
 <translation id="541416427766103491">ສະແຕັກເກີ້ 4</translation>
+<translation id="5414511064953050917">ຢືນຢັນການຍ້າຍ</translation>
 <translation id="5421136146218899937">ລຶບຂໍ້ມູນການທ່ອງເນັດ...</translation>
 <translation id="5425241977284572032">{NUM_COOKIES,plural, =0{ບໍ່ມີເວັບໄຊທີ່ຖືກບລັອກ}=1{ບລັອກ 1 ເວັບໄຊແລ້ວ}other{ບລັອກ # ເວັບໄຊແລ້ວ}}</translation>
 <translation id="5426179911063097041"><ph name="SITE" /> ຕ້ອງການສົ່ງການແຈ້ງເຕືອນໃຫ້ທ່ານ</translation>
@@ -2317,6 +2323,7 @@
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> ແລະ ອີກ <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> ທີ່ຢູ່}other{<ph name="PAYMENT_METHOD_PREVIEW" /> ແລະ ອີກ <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> ທີ່ຢູ່}}</translation>
 <translation id="7153618581592392745">ສີມ່ວງລາເວນເດີ</translation>
 <translation id="7156870133441232244">ເຊີບເວີຄວນອັບເກຣດເປັນ TLS 1.2 ຫຼື ໃໝ່ກວ່າ.</translation>
+<translation id="7163295244162773898">{0,plural, =1{ສຳເນົາໄຟລ໌ຄວາມລັບບໍ?}other{ສຳເນົາໄຟລ໌ຄວາມລັບບໍ?}}</translation>
 <translation id="717330890047184534">Gaia ID:</translation>
 <translation id="7174545416324379297">ຮວມເຂົ້າກັນແລ້ວ</translation>
 <translation id="7175401108899573750">{SHIPPING_OPTIONS,plural, =0{<ph name="SHIPPING_OPTION_PREVIEW" />}=1{<ph name="SHIPPING_OPTION_PREVIEW" /> ແລະ ອີກ <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> ທີ່ຢູ່}other{<ph name="SHIPPING_OPTION_PREVIEW" /> ແລະ ອີກ <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> ທີ່ຢູ່}}</translation>
@@ -2925,6 +2932,7 @@
 <translation id="8763986294015493060">ປິດໜ້າ​ຈໍ​ທີ່ບໍ່ເປີດເຜີຍຕົວຕົນທັງໝົດທີ່ກຳລັງເປີດຢູ່ຕອນນີ້</translation>
 <translation id="8766943070169463815">ເປີດຊີດການພິສູດຢືນຢັນຂໍ້ມູນການເຂົ້າສູ່ລະບົບການຈ່າຍເງິນແບບປອດໄພແລ້ວ</translation>
 <translation id="8767765348545497220">ປິດຟອງຊ່ວຍເຫຼືອ</translation>
+<translation id="877348612833018844">{0,plural, =1{ຍ້າຍໄຟລ໌ຄວາມລັບບໍ?}other{ຍ້າຍໄຟລ໌ຄວາມລັບບໍ?}}</translation>
 <translation id="877985182522063539">A4</translation>
 <translation id="8785658048882205566">ລົດຈັກ</translation>
 <translation id="8790007591277257123">ເຮັດຄືນຄໍາສັ່ງລຶບ</translation>
diff --git a/components/strings/components_strings_lt.xtb b/components/strings/components_strings_lt.xtb
index 50c5e007..6b74fb8 100644
--- a/components/strings/components_strings_lt.xtb
+++ b/components/strings/components_strings_lt.xtb
@@ -307,6 +307,7 @@
 <translation id="168841957122794586">Serverio sertifikate yra nesudėtingas kriptografinis raktas.</translation>
 <translation id="1697532407822776718">Viskas nustatyta!</translation>
 <translation id="1699570257714336246">Trūksta informacijos</translation>
+<translation id="1702815194757674443">ROC 16K</translation>
 <translation id="1703835215927279855">Laiškas</translation>
 <translation id="1706625117072057435">Mastelio keitimo lygiai</translation>
 <translation id="1706954506755087368">{1,plural, =1{Šiam serveriui nepavyko patvirtinti, kad tai yra <ph name="DOMAIN" />; jo saugos sertifikatas įsigalios nuo rytojaus. Taip gali nutikti dėl netinkamos konfigūracijos ar dėl ryšį pertraukusio užpuoliko.}one{Šiam serveriui nepavyko patvirtinti, kad tai yra <ph name="DOMAIN" />; jo saugos sertifikatas įsigalios po # dienos. Taip gali nutikti dėl netinkamos konfigūracijos ar dėl ryšį pertraukusio užpuoliko.}few{Šiam serveriui nepavyko patvirtinti, kad tai yra <ph name="DOMAIN" />; jo saugos sertifikatas įsigalios po # dienų. Taip gali nutikti dėl netinkamos konfigūracijos ar dėl ryšį pertraukusio užpuoliko.}many{Šiam serveriui nepavyko patvirtinti, kad tai yra <ph name="DOMAIN" />; jo saugos sertifikatas įsigalios po # dienos. Taip gali nutikti dėl netinkamos konfigūracijos ar dėl ryšį pertraukusio užpuoliko.}other{Šiam serveriui nepavyko patvirtinti, kad tai yra <ph name="DOMAIN" />; jo saugos sertifikatas įsigalios po # dienų. Taip gali nutikti dėl netinkamos konfigūracijos ar dėl ryšį pertraukusio užpuoliko.}}</translation>
@@ -552,6 +553,7 @@
 <translation id="2359347814217202136">{NUM_DAYS,plural, =0{Mažiau nei per dieną}=1{Per dieną}one{Per {NUM_DAYS} dieną}few{Per {NUM_DAYS} dienas}many{Per {NUM_DAYS} dienos}other{Per {NUM_DAYS} dienų}}</translation>
 <translation id="2359629602545592467">Kelios</translation>
 <translation id="2359808026110333948">Tęskite</translation>
+<translation id="2361263712565360498">275 x 395 mm</translation>
 <translation id="236340516568226369">Perjungimo meniu dydžio keitimas</translation>
 <translation id="2367567093518048410">Lygis</translation>
 <translation id="2380886658946992094">Teisinis</translation>
@@ -1430,6 +1432,7 @@
 <translation id="4751476147751820511">Judesio arba šviesos jutikliai</translation>
 <translation id="4754461935447132332">Neleidžiama nesaugiose svetainėse</translation>
 <translation id="4756388243121344051">&amp;Istorija</translation>
+<translation id="4756501505996488486">PRC 16K</translation>
 <translation id="4757993714154412917">Ką tik savo slaptažodį įvedėte apgaulingoje svetainėje. Kad apsaugotumėte paskyras, „Chromium“ rekomenduoja patikrinti išsaugotus slaptažodžius.</translation>
 <translation id="4758311279753947758">Pridėti kontaktinę informaciją</translation>
 <translation id="4761104368405085019">Naudoti mikrofoną</translation>
@@ -2170,6 +2173,7 @@
 <translation id="6738516213925468394"><ph name="TIME" /> duomenys buvo užšifruoti naudojant <ph name="BEGIN_LINK" />sinchronizavimo slaptafrazę<ph name="END_LINK" />. Įveskite ją, kad pradėtumėte sinchronizuoti.</translation>
 <translation id="674375294223700098">Nežinoma serverio sertifikato klaida.</translation>
 <translation id="6744009308914054259">Laukdami ryšio galite apsilankyti skiltyje „Atsisiuntimai“ ir perskaityti neprisijungus pasiekiamus straipsnius.</translation>
+<translation id="6751487147225428522">ROC 8K</translation>
 <translation id="6752086006821653994">Telekonferencijos</translation>
 <translation id="6753269504797312559">Politikos vertė</translation>
 <translation id="6755241357817244406">chrome://flags</translation>
@@ -2203,6 +2207,7 @@
 <translation id="6846340164947227603">Naudoti virtualų kortelės numerį...</translation>
 <translation id="6852204201400771460">Įkelti programą iš naujo?</translation>
 <translation id="6857776781123259569">Tvarkykite slaptažodžius...</translation>
+<translation id="6864189428899665393">267 x 389 mm</translation>
 <translation id="686485648936420384">Klientų ištekliai</translation>
 <translation id="6865412394715372076">Šiuo metu kortelės patvirtinti nepavyksta</translation>
 <translation id="6869334554832814367">Asmeninės paskolos</translation>
@@ -2315,6 +2320,7 @@
 <translation id="7138472120740807366">Pristatymo metodas</translation>
 <translation id="7139892792842608322">Pagrindinis dėklas</translation>
 <translation id="714064300541049402">2 pusė: sukti vaizdą pagal X ašį</translation>
+<translation id="7143682719845053166">PRC 32K</translation>
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> ir dar <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}one{<ph name="PAYMENT_METHOD_PREVIEW" /> ir dar <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}few{<ph name="PAYMENT_METHOD_PREVIEW" /> ir dar <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}many{<ph name="PAYMENT_METHOD_PREVIEW" /> ir dar <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}other{<ph name="PAYMENT_METHOD_PREVIEW" /> ir dar <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}}</translation>
 <translation id="7153618581592392745">Levandų spalva</translation>
 <translation id="7156870133441232244">Serverį reikia naujovinti į 1.2 ar naujesnės versijos TLS.</translation>
@@ -2396,6 +2402,7 @@
 <translation id="7363096869660964304">Tačiau nesate nematomi. Įjungus inkognito režimą, naršymo veiksmai vis tiek matomi darbdaviui, interneto paslaugų teikėjui ar svetainėms, kuriose lankotės.</translation>
 <translation id="7365596969960773405"><ph name="MANAGE_ADDRESSES_FOCUSED_FRIENDLY_MATCH_TEXT" />; paspauskite tabuliavimo klavišą, tada „Enter“, jei norite pridėti ir tvarkyti adresus „Chrome“ nustatymuose</translation>
 <translation id="7365849542400970216">Leisti žinoti, kada naudojamas įrenginys?</translation>
+<translation id="7366117520888504990">198 x 275 mm</translation>
 <translation id="7366362069757178916">Mokėjimų doroklės</translation>
 <translation id="7372973238305370288">paieškos rezultatas</translation>
 <translation id="7374461526650987610">Protokolų doroklės</translation>
@@ -2555,6 +2562,7 @@
 <translation id="7687186412095877299">Užpildomos mokėjimo formos naudojant išsaugotus mokėjimo metodus</translation>
 <translation id="7687305263118037187">Baigėsi pakartotinio bandymo laikas</translation>
 <translation id="7687451951329798396">Kas sakoma kituose šaltiniuose?</translation>
+<translation id="7690647519407127574">„Oufuku Hagaki“ atvirukas</translation>
 <translation id="7693583928066320343">Puslapių tvarka gauta</translation>
 <translation id="7696089921647603491">Klasikinis rokas ir „Oldies“</translation>
 <translation id="769721561045429135">Šiuo metu turite kortelių, kurias galima naudoti tik šiuo įrenginiu. Jei norite peržiūrėti korteles, spustelėkite „Tęsti“.</translation>
@@ -2728,6 +2736,7 @@
 <translation id="8202370299023114387">Konfliktas</translation>
 <translation id="8210604850413485128">Žiniatinklio išteklių priegloba</translation>
 <translation id="8211406090763984747">Ryšys saugus</translation>
+<translation id="8213853114485953510">JIS Exec</translation>
 <translation id="8217240300496046857">Svetainės negali naudoti slapukų, stebinčių jus žiniatinklyje. Funkcijos gali neveikti tam tikrose svetainėse.</translation>
 <translation id="8217748145574471584">Žmogiškieji ištekliai</translation>
 <translation id="8218327578424803826">Priskirta vieta:</translation>
@@ -2942,6 +2951,7 @@
 <translation id="8816395686387277279"><ph name="UPDATE_CHROME_FOCUSED_FRIENDLY_MATCH_TEXT" />, paspauskite tabuliavimo klavišą, tada – „Enter“, kad „Chrome“ nustatymuose būtų atnaujinta naršyklė „Chrome“</translation>
 <translation id="8820817407110198400">Žymės</translation>
 <translation id="882338992931677877">Neautomatinė dėtuvė</translation>
+<translation id="8830320733681313421">„Hagaki“ atvirukas</translation>
 <translation id="8834380158646307944">Mygtukas „Uždaryti inkognito langus“; paspauskite „Enter“, jei norite uždaryti visus šiuo metu atidarytus inkognito langus</translation>
 <translation id="883848425547221593">Kitos žymės</translation>
 <translation id="884264119367021077">Siuntimo adresas</translation>
diff --git a/components/strings/components_strings_lv.xtb b/components/strings/components_strings_lv.xtb
index c3961776..f34cff76 100644
--- a/components/strings/components_strings_lv.xtb
+++ b/components/strings/components_strings_lv.xtb
@@ -307,6 +307,7 @@
 <translation id="168841957122794586">Servera sertifikāts ietver vāju kriptogrāfisko atslēgu.</translation>
 <translation id="1697532407822776718">Gatavs!</translation>
 <translation id="1699570257714336246">Trūkst informācijas</translation>
+<translation id="1702815194757674443">ROC 16K</translation>
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706625117072057435">Tālummaiņas līmeņi</translation>
 <translation id="1706954506755087368">{1,plural, =1{Šis serveris nevarēja pierādīt, ka ir <ph name="DOMAIN" />; šķiet, ka tā drošības sertifikāts sāks darboties rīt. Šī problēma var rasties nepareizas konfigurācijas dēļ vai tādēļ, ka kāds uzbrucējs ir pārtvēris jūsu savienojumu.}zero{Šis serveris nevarēja pierādīt, ka ir <ph name="DOMAIN" />; šķiet, ka tā drošības sertifikāts sāks darboties pēc # dienām. Šī problēma var rasties nepareizas konfigurācijas dēļ vai tādēļ, ka kāds uzbrucējs ir pārtvēris jūsu savienojumu.}one{Šis serveris nevarēja pierādīt, ka ir <ph name="DOMAIN" />; šķiet, ka tā drošības sertifikāts sāks darboties pēc # dienas. Šī problēma var rasties nepareizas konfigurācijas dēļ vai tādēļ, ka kāds uzbrucējs ir pārtvēris jūsu savienojumu.}other{Šis serveris nevarēja pierādīt, ka ir <ph name="DOMAIN" />; šķiet, ka tā drošības sertifikāts sāks darboties pēc # dienām. Šī problēma var rasties nepareizas konfigurācijas dēļ vai tādēļ, ka kāds uzbrucējs ir pārtvēris jūsu savienojumu.}}</translation>
@@ -550,6 +551,7 @@
 <translation id="2359347814217202136">{NUM_DAYS,plural, =0{Pēc nepilnas dienas}=1{Pēc vienas dienas}zero{Pēc {NUM_DAYS} dienām}one{Pēc {NUM_DAYS} dienas}other{Pēc {NUM_DAYS} dienām}}</translation>
 <translation id="2359629602545592467">Vairākas</translation>
 <translation id="2359808026110333948">Turpināt</translation>
+<translation id="2361263712565360498">275 x 395 mm</translation>
 <translation id="236340516568226369">Pārslēgšanas izvēlnes lieluma maiņa</translation>
 <translation id="2367567093518048410">Līmenis</translation>
 <translation id="2380886658946992094">Legal</translation>
@@ -1424,6 +1426,7 @@
 <translation id="4751476147751820511">Kustību vai gaismas sensori</translation>
 <translation id="4754461935447132332">Nav atļauts nedrošām vietnēm</translation>
 <translation id="4756388243121344051">Vēsture</translation>
+<translation id="4756501505996488486">PRC 16K</translation>
 <translation id="4757993714154412917">Jūs tikko ievadījāt savu paroli maldinošā vietnē. Chromium ieteikums jūsu kontu aizsardzībai: pārbaudiet saglabātās paroles.</translation>
 <translation id="4758311279753947758">Pievienot kontaktinformāciju</translation>
 <translation id="4761104368405085019">Izmantot jūsu mikrofonu</translation>
@@ -2162,6 +2165,7 @@
 <translation id="6738516213925468394">Jūsu dati tika šifrēti, izmantojot jūsu <ph name="BEGIN_LINK" />sinhronizācijas ieejas frāzi<ph name="END_LINK" />šādā datumā: <ph name="TIME" />. Lai sāktu sinhronizāciju, ievadiet ieejas frāzi.</translation>
 <translation id="674375294223700098">Nezināma servera sertifikāta kļūda.</translation>
 <translation id="6744009308914054259">Kamēr tiek gaidīts savienojums, varat apmeklēt Lejupielādes, lai lasītu rakstu bezsaistē.</translation>
+<translation id="6751487147225428522">ROC 8K</translation>
 <translation id="6752086006821653994">Telekonferences</translation>
 <translation id="6753269504797312559">Politikas vērtība</translation>
 <translation id="6755241357817244406">chrome://flags</translation>
@@ -2195,6 +2199,7 @@
 <translation id="6846340164947227603">Izmantot virtuālās kartes numuru...</translation>
 <translation id="6852204201400771460">Vai atkārtoti ielādēt lietotni?</translation>
 <translation id="6857776781123259569">Pārvaldīt paroles…</translation>
+<translation id="6864189428899665393">267 x 389 mm</translation>
 <translation id="686485648936420384">Patērētāju resursi</translation>
 <translation id="6865412394715372076">Pašlaik nevar verificēt šo karti.</translation>
 <translation id="6869334554832814367">Aizdevumi privātpersonām</translation>
@@ -2307,6 +2312,7 @@
 <translation id="7138472120740807366">Piegādes veids</translation>
 <translation id="7139892792842608322">Galvenā paplāte</translation>
 <translation id="714064300541049402">2. puses attēla nobīde uz X ass</translation>
+<translation id="7143682719845053166">PRC 32K</translation>
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> un vēl <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}zero{<ph name="PAYMENT_METHOD_PREVIEW" /> un vēl <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}one{<ph name="PAYMENT_METHOD_PREVIEW" /> un vēl <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}other{<ph name="PAYMENT_METHOD_PREVIEW" /> un vēl <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}}</translation>
 <translation id="7153618581592392745">Lavandas krāsa</translation>
 <translation id="7156870133441232244">Serveris ir jājaunina uz protokolu TLS 1.2 vai jaunāku versiju.</translation>
@@ -2387,6 +2393,7 @@
 <translation id="7363096869660964304">Tomēr jūs neesat neredzams. Izmantojot inkognito režīmu, jūsu pārlūkošanas darbības netiek slēptas no jūsu darba devēja, interneta pakalpojumu sniedzēja vai apmeklētajām vietnēm.</translation>
 <translation id="7365596969960773405"><ph name="MANAGE_ADDRESSES_FOCUSED_FRIENDLY_MATCH_TEXT" />: nospiediet tabulēšanas taustiņu un pēc tam — ievadīšanas taustiņu, lai Chrome iestatījumos pievienotu un pārvaldītu adreses.</translation>
 <translation id="7365849542400970216">Vai rādīt, kad jūs lietojat ierīci?</translation>
+<translation id="7366117520888504990">198 x 275 mm</translation>
 <translation id="7366362069757178916">Maksājumu apdarinātāji</translation>
 <translation id="7372973238305370288">meklēšanas rezultāts</translation>
 <translation id="7374461526650987610">Protokolu apdarinātāji</translation>
@@ -2546,6 +2553,7 @@
 <translation id="7687186412095877299">Aizpilda maksājumu veidlapas, izmantojot saglabātos maksājuma veidus</translation>
 <translation id="7687305263118037187">Atkārtota mēģinājuma noildze</translation>
 <translation id="7687451951329798396">Kas teikts citos avotos?</translation>
+<translation id="7690647519407127574">Oufuku Hagaki (pastkarte)</translation>
 <translation id="7693583928066320343">Saņemtā lapu secība</translation>
 <translation id="7696089921647603491">Klasiskais roks un “vecie gabali”</translation>
 <translation id="769721561045429135">Pašlaik dažas kartes varat izmantot tikai šajā ierīcē. Lai pārskatītu kartes, noklikšķiniet uz Turpināt.</translation>
@@ -2719,6 +2727,7 @@
 <translation id="8202370299023114387">Konflikts</translation>
 <translation id="8210604850413485128">Tīmekļa mitināšana</translation>
 <translation id="8211406090763984747">Savienojums ir drošs</translation>
+<translation id="8213853114485953510">JIS Exec</translation>
 <translation id="8217240300496046857">Vietnes nevar izmantot sīkfailus, kas izseko jūsu darbības tīmeklī. Noteiktās vietnēs funkcijas var nedarboties.</translation>
 <translation id="8217748145574471584">Cilvēkresursi</translation>
 <translation id="8218327578424803826">Piešķirtā atrašanās vieta:</translation>
@@ -2932,6 +2941,7 @@
 <translation id="8816395686387277279"><ph name="UPDATE_CHROME_FOCUSED_FRIENDLY_MATCH_TEXT" />. Lai Chrome iestatījumos atjauninātu pārlūkprogrammu Chrome, nospiediet tabulēšanas taustiņu un pēc tam — ievadīšanas taustiņu.</translation>
 <translation id="8820817407110198400">Grāmatzīmes</translation>
 <translation id="882338992931677877">Manuālais slots</translation>
+<translation id="8830320733681313421">Hagaki (pastkarte)</translation>
 <translation id="8834380158646307944">Poga inkognito režīma logu aizvēršanai. Lai aizvērtu visus atvērtos inkognito režīma logus, nospiediet taustiņu Enter.</translation>
 <translation id="883848425547221593">Citas grāmatzīmes</translation>
 <translation id="884264119367021077">Piegādes adrese</translation>
diff --git a/components/strings/components_strings_mk.xtb b/components/strings/components_strings_mk.xtb
index e3fb3f9..04635e0f 100644
--- a/components/strings/components_strings_mk.xtb
+++ b/components/strings/components_strings_mk.xtb
@@ -714,6 +714,7 @@
 <translation id="2799223571221894425">Рестартирај</translation>
 <translation id="2803306138276472711">Google Safe Browsing неодамна <ph name="BEGIN_LINK" />откри злонамерен софтвер<ph name="END_LINK" /> на <ph name="SITE" />. Веб-локациите што обично се безбедни, некогаш се инфицираат со злонамерен софтвер.</translation>
 <translation id="2807052079800581569">Позиција на сликата Y</translation>
+<translation id="2808278141522721006">Можете да вклучите или исклучите Windows Hello во <ph name="SETTINGS" /></translation>
 <translation id="2820957248982571256">Се скенира…</translation>
 <translation id="2824775600643448204">Лента за адреса и за пребарување</translation>
 <translation id="2826760142808435982">Поврзувањето е шифрирано и автентицирано со употреба на <ph name="CIPHER" /> и користи <ph name="KX" /> како клучен механизам за размена.</translation>
@@ -884,6 +885,7 @@
 <translation id="3288238092761586174"><ph name="URL" /> можеби ќе треба да преземе дополнителни чекори за да го потврди вашето плаќање</translation>
 <translation id="3293642807462928945">Дознајте повеќе за правилото <ph name="POLICY_NAME" /></translation>
 <translation id="3295444047715739395">Прегледајте ги и управувајте со лозинките во поставките за Chrome</translation>
+<translation id="3299098170013242198">Windows Hello е вклучено за пополнување лозинки</translation>
 <translation id="3303855915957856445">Не се пронајдени резултати од пребарувањето</translation>
 <translation id="3304073249511302126">скенирање за Bluetooth</translation>
 <translation id="33073482541490531">Откриено е дека лозинката која штотуку ја употребивте е меѓу лозинките откриени при упад во податоците. Password Manager препорачува веднаш да ја промените лозинкава.</translation>
@@ -1032,6 +1034,7 @@
 <translation id="3678342917559046352">Неважечка екстензија: се очекува вредноста да биде една од следниве форми: &lt;extension_id&gt; или &lt;extension_id&gt;;&lt;update_url&gt;.</translation>
 <translation id="3678529606614285348">Отворете ја страницата во нов инкогнито прозорец (Ctrl-Shift-N)</translation>
 <translation id="3681007416295224113">Информации за сертификат</translation>
+<translation id="3699374065820972102">TouchID е вклучено за пополнување лозинки</translation>
 <translation id="3701427423622901115">Ресетирањето е потврдено.</translation>
 <translation id="3704162925118123524">Мрежата што ја користите може да бара да ја посетите страницата за најавување.</translation>
 <translation id="3705189812819839667"><ph name="RESULT_OWNER" /> - <ph name="RESULT_PRODUCT_SOURCE" /></translation>
@@ -1493,6 +1496,7 @@
 <translation id="4900217275619098670">Деветта ролна</translation>
 <translation id="4901778704868714008">Зачувај…</translation>
 <translation id="4905659621780993806">Вашиот администратор ќе го рестартира уредот автоматски во <ph name="TIME" /> на <ph name="DATE" /> Зачувајте ги отворените ставки пред да се рестартира уредот.</translation>
+<translation id="4911007278801291296">Можете да вклучите или исклучите TouchID во <ph name="SETTINGS" /></translation>
 <translation id="4913987521957242411">Дупка горе лево</translation>
 <translation id="4918221908152712722">Инсталирајте ја <ph name="APP_NAME" /> (не е потребно преземање)</translation>
 <translation id="4923459931733593730">Плаќање</translation>
@@ -1686,6 +1690,7 @@
 <translation id="5357848622083956825">Визуелна уметност и дизајн</translation>
 <translation id="536296301121032821">Не успеа да складира поставки за правило</translation>
 <translation id="5363309033720083897">Сериска порта што ја дозволил вашиот администратор</translation>
+<translation id="5363713372507812442">Патувања за пребарување</translation>
 <translation id="5371425731340848620">Ажурирајте ја картичката</translation>
 <translation id="5377026284221673050">„Вашиот часовник е поназад“ или „Вашиот часовник е понапред“ или „&lt;span class="error-code"&gt;NET::ERR_CERT_DATE_INVALID&lt;/span&gt;“</translation>
 <translation id="5379027395132364855">Копче за создавање презентација, притиснете Enter за да набрзина создадете нова презентација во Google Slides</translation>
diff --git a/components/strings/components_strings_mr.xtb b/components/strings/components_strings_mr.xtb
index 9c43868..8039223 100644
--- a/components/strings/components_strings_mr.xtb
+++ b/components/strings/components_strings_mr.xtb
@@ -307,6 +307,7 @@
 <translation id="168841957122794586">सर्व्हर सर्टिफिकेटमध्ये एक कमकुवत क्रिप्टोग्राफिक की आहे.</translation>
 <translation id="1697532407822776718">तुम्ही पूर्णपणे तयार आहात!</translation>
 <translation id="1699570257714336246">माहिती नाही आहे</translation>
+<translation id="1702815194757674443">ROC 16K</translation>
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706625117072057435">झूम स्तर</translation>
 <translation id="1706954506755087368">{1,plural, =1{हा सर्व्हर हे <ph name="DOMAIN" /> असल्याचे सिद्ध करू शकला नाही; त्याचे सुरक्षा सर्टिफिकेट उद्यापासून मानले जाईल. हे कदाचित एका चुकीच्या कॉंफिगरेशनमुळे किंवा हल्लेखोराने तुमचे कनेक्शन इंटरसेप्ट केल्यामुळे झाले असू शकते.}other{हा सर्व्हर हे <ph name="DOMAIN" /> असल्याचे सिद्ध करू शकला नाही; त्याचे सुरक्षा सर्टिफिकेट पुढील # दिवसांपासून मानले जाईल. हे कदाचित एका चुकीच्या कॉंफिगरेशनमुळे किंवा हल्लेखोराने तुमचे कनेक्शन इंटरसेप्ट केल्यामुळे झाले असू शकते.}}</translation>
@@ -395,6 +396,7 @@
 <translation id="192020519938775529">{COUNT,plural, =0{काहीही नाही}=1{1 साइट}other{# साइट}}</translation>
 <translation id="1924727005275031552">नवीन</translation>
 <translation id="1927439593081478069">Chrome सुरक्षितता तपासणी रन करा बटण, Chrome सेटिंग्जमध्ये सुरक्षितता तपासणी रन करण्यासाठी एंटर दाबा</translation>
+<translation id="1935995810530254458">तरीही कॉपी करा</translation>
 <translation id="1939175642807587452">सूचना पाठवण्याची विनंती करू शकते</translation>
 <translation id="1943994668912612445">डिझाइन</translation>
 <translation id="1945968466830820669">तुम्ही तुमच्या संस्थेच्या खात्याचा ॲक्सेस गमावू शकता किंवा तुमची संवेदनशील माहिती चोरीला जाऊ शकते. Chromium तुमचा पासवर्ड लगेच बदलण्याची शिफारस करत आहे.</translation>
@@ -448,6 +450,7 @@
 <translation id="2085876078937250610">सेव्ह करा…</translation>
 <translation id="2088086323192747268">सिंक व्यवस्थापित करा बटण, Chrome सेटिंग्जमध्ये तुम्ही कोणती माहिती सिंक करता ते व्यवस्थापित करण्यासाठी एंटर दाबा</translation>
 <translation id="2091887806945687916">ध्वनी</translation>
+<translation id="2093982008204312032">Google Chrome पासवर्ड एंटर करण्यासाठी Windows Hello बंद करण्याचा प्रयत्न करत आहे.</translation>
 <translation id="2094505752054353250">डोमेन जुळत नाही</translation>
 <translation id="2099652385553570808">ट्रिपल स्टेपल लेफ्ट</translation>
 <translation id="2101225219012730419">आवृत्ती:</translation>
@@ -550,6 +553,7 @@
 <translation id="2359347814217202136">{NUM_DAYS,plural, =0{In less than a day}=1{एका दिवसामध्ये}other{{NUM_DAYS} दिवसांमध्ये}}</translation>
 <translation id="2359629602545592467">अनेक</translation>
 <translation id="2359808026110333948">सुरू ठेवा</translation>
+<translation id="2361263712565360498">२७५ x ३९५ मिमी</translation>
 <translation id="236340516568226369">आकार बदलण्याच्या टॉगलचा मेनू</translation>
 <translation id="2367567093518048410">दर्जा</translation>
 <translation id="2380886658946992094">Legal</translation>
@@ -1140,6 +1144,7 @@
 <translation id="4014128326099193693">{COUNT,plural, =1{PDF दस्तऐवजामध्ये {COUNT} पेज आहे}other{PDF दस्तऐवजामध्ये {COUNT} पेज आहेत}}</translation>
 <translation id="4022639246993848966">३.५x५</translation>
 <translation id="4023431997072828269">हा फॉर्म सुरक्षित नसलेले कनेक्शन वापरून सबमिट केल्यामुळे, तुमची माहिती इतरांना दिसू शकते.</translation>
+<translation id="4024923292610332139">पासवर्ड एंटर करताना TouchID बंद करा</translation>
 <translation id="4025913568718019429">Google गोपनीयता सेटिंग्ज व्यवस्थापित करा बटण, तुमच्या Google खाते गोपनीयता सेटिंग्जना भेट देण्यासाठी एंटर दाबा</translation>
 <translation id="4030383055268325496">&amp;जोडा पूर्ववत करा</translation>
 <translation id="4031179711345676612">मायक्रोफोनला अनुमती आहे</translation>
@@ -1256,6 +1261,7 @@
 <translation id="42981349822642051">विस्तृत करा</translation>
 <translation id="4300675098767811073">मल्टिपल पंच राइट</translation>
 <translation id="4302514097724775343">खेळण्यासाठी डायनासोरवर टॅप करा</translation>
+<translation id="4304049446746819918">{0,plural, =1{अ‍ॅडमिनिस्ट्रेटर धोरण ही फाइल <ph name="DESTINATION_NAME" /> वर हलवण्याची शिफारस करत नाही}other{अ‍ॅडमिनिस्ट्रेटर धोरण या फाइल <ph name="DESTINATION_NAME" /> वर हलवण्याची शिफारस करत नाही}}</translation>
 <translation id="4305666528087210886">तुमची फाइल अ‍ॅक्सेस करता आली नाही</translation>
 <translation id="4306529830550717874">पत्ता सेव्ह करायचा आहे का?</translation>
 <translation id="4306812610847412719">क्लिपबोर्ड</translation>
@@ -1424,6 +1430,7 @@
 <translation id="4751476147751820511">मोशन किंवा प्रकाश सेन्सर</translation>
 <translation id="4754461935447132332">सुरक्षित नसलेल्या साइटसाठी अनुमती नाही</translation>
 <translation id="4756388243121344051">&amp;इतिहास</translation>
+<translation id="4756501505996488486">PRC 16K</translation>
 <translation id="4757993714154412917">तुम्ही आताच एका फसव्या साइटवर तुमचा पासवर्ड एंटर केला. तुमची खाती सुरक्षित करण्यासाठी, Chromium तुमचे सेव्ह केलेले पासवर्ड तपासण्याची शिफारस करते.</translation>
 <translation id="4758311279753947758">संपर्क माहिती जोडा</translation>
 <translation id="4761104368405085019">तुमचा मायक्रोफोन वापरा</translation>
@@ -1630,6 +1637,7 @@
 <translation id="5254043433801397071">प्रिंट आशय ऑप्टिमाइझ करा</translation>
 <translation id="5254958791078852567">E1</translation>
 <translation id="5255690596502591079">तरीही कॅप्चर करा</translation>
+<translation id="5257739419779698609">{0,plural, =1{अ‍ॅडमिनिस्ट्रेटर धोरण ही फाइल <ph name="DESTINATION_NAME" /> वर कॉपी करण्याची शिफारस करत नाही}other{अ‍ॅडमिनिस्ट्रेटर धोरण ही फाइल <ph name="DESTINATION_NAME" /> वर कॉपी करण्याची शिफारस करत नाही}}</translation>
 <translation id="5266128565379329178">बाइंड टॉप</translation>
 <translation id="5269225904387178860">क्वाड पंच बॉटम</translation>
 <translation id="5269999699920406580">संपूर्ण सिस्टमला लागू होणारी वैशिष्‍ट्ये फक्त मालकाद्वारे सेट केली जाऊ शकतात: <ph name="OWNER_EMAIL" /></translation>
@@ -1692,6 +1700,7 @@
 <translation id="5412236728747081950">तुम्हाला आणखी उपयुक्त जाहिराती दाखवण्यासाठी ही साइट Chrome मधून तुमची स्वारस्ये मिळवते</translation>
 <translation id="5412245327974352290"><ph name="TRADITIONAL_TEXT" /> - <ph name="ADDITIONAL_TEXT" /></translation>
 <translation id="541416427766103491">स्टॅकर ४</translation>
+<translation id="5414511064953050917">तरीही हलवा</translation>
 <translation id="5421136146218899937">ब्राउझिंग डेटा साफ करा...</translation>
 <translation id="5425241977284572032">{NUM_COOKIES,plural, =0{No sites blocked}=1{एक साइट ब्लॉक केली आहे}other{# साइट ब्लॉक केल्या आहेत}}</translation>
 <translation id="5426179911063097041"><ph name="SITE" /> ला तुम्हाला सूचना पाठवायची आहे</translation>
@@ -2163,6 +2172,7 @@
 <translation id="6738516213925468394">तुमचा डेटा तुमच्या <ph name="BEGIN_LINK" />सिंक पासफ्रेज<ph name="END_LINK" /> ने <ph name="TIME" /> वाजता एंक्रिप्ट केला गेला होता. सिंक सुरू करण्यासाठी तो एंटर करा.</translation>
 <translation id="674375294223700098">अज्ञात सर्व्हर सर्टिफिकेट एरर.</translation>
 <translation id="6744009308914054259">कनेक्शनची वाट पाहत असताना, तुम्ही ऑफलाइन लेख वाचण्यासाठी डाउनलोडवर जाऊ शकता.</translation>
+<translation id="6751487147225428522">ROC 8K</translation>
 <translation id="6752086006821653994">टेलीकॉंफरन्सिंग</translation>
 <translation id="6753269504797312559">धोरण मूल्य</translation>
 <translation id="6755241357817244406">chrome://flags</translation>
@@ -2196,6 +2206,7 @@
 <translation id="6846340164947227603">व्हर्च्युअल कार्ड नंबर वापरा...</translation>
 <translation id="6852204201400771460">ॲप रीलोड करायचे?</translation>
 <translation id="6857776781123259569">पासवर्ड व्यवस्थापित करा…</translation>
+<translation id="6864189428899665393">२६७ x ३८९ मिमी</translation>
 <translation id="686485648936420384">ग्राहक संसाधने</translation>
 <translation id="6865412394715372076">या कार्डची पडताळणी आता करू शकत नाही</translation>
 <translation id="6869334554832814367">वैयक्तिक कर्ज</translation>
@@ -2308,9 +2319,11 @@
 <translation id="7138472120740807366">वितरण पद्धत</translation>
 <translation id="7139892792842608322">प्राथमिक ट्रे</translation>
 <translation id="714064300541049402">साइड २ इमेज X शिफ्ट</translation>
+<translation id="7143682719845053166">PRC 32K</translation>
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> आणि <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> आणखी}other{<ph name="PAYMENT_METHOD_PREVIEW" /> आणि <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> आणखी}}</translation>
 <translation id="7153618581592392745">फिकट जांभळा</translation>
 <translation id="7156870133441232244">सर्व्हर TLS 1.2 किंवा त्यापुढील आवृत्तीवर अपग्रेड करणे आवश्यक आहे.</translation>
+<translation id="7163295244162773898">{0,plural, =1{गोपनीय फाइल कॉपी करायची आहे का?}other{गोपनीय फाइल कॉपी करायच्या आहेत का?}}</translation>
 <translation id="717330890047184534">Gaia आयडी:</translation>
 <translation id="7174545416324379297">मर्ज केले</translation>
 <translation id="7175401108899573750">{SHIPPING_OPTIONS,plural, =0{<ph name="SHIPPING_OPTION_PREVIEW" />}=1{<ph name="SHIPPING_OPTION_PREVIEW" /> आणि <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> आणखी}other{<ph name="SHIPPING_OPTION_PREVIEW" /> आणि <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> आणखी}}</translation>
@@ -2388,6 +2401,7 @@
 <translation id="7363096869660964304">मात्र, तुम्ही अदृश्य नाही. गुप्त मोडमध्ये तुमचे ब्राउझिंग हे तुमचा नियोक्ता, तुमचा इंटरनेट सेवा पुरवठादार किंवा तुम्ही भेट देता त्या वेबसाइटपासून लपत नाही.</translation>
 <translation id="7365596969960773405"><ph name="MANAGE_ADDRESSES_FOCUSED_FRIENDLY_MATCH_TEXT" />, Chrome सेटिंग्जमध्ये ॲड्रेस जोडण्यासाठी आणि व्यवस्थापित करण्यासाठी टॅब व त्यानंतर एंटर दाबा</translation>
 <translation id="7365849542400970216">तुमच्या डिव्हाइसचा वापर माहीत आहे का?</translation>
+<translation id="7366117520888504990">१९८ x २७५ मिमी</translation>
 <translation id="7366362069757178916">पेमेंट हँडलर</translation>
 <translation id="7372973238305370288">शोध परिणाम</translation>
 <translation id="7374461526650987610">प्रोटोकॉल हँडलर</translation>
@@ -2547,6 +2561,7 @@
 <translation id="7687186412095877299">तुमच्या सेव्ह केलेल्या पेमेंट पद्धतींसह पेमेंट फॉर्म भरते</translation>
 <translation id="7687305263118037187">पुन्हा प्रयत्न करण्याची वेळ संपली</translation>
 <translation id="7687451951329798396">इतर स्रोत काय सांगतात?</translation>
+<translation id="7690647519407127574">Oufuku Hagaki पोस्टकार्ड</translation>
 <translation id="7693583928066320343">पेजचा क्रम मिळाला</translation>
 <translation id="7696089921647603491">क्लासिक रॉक आणि जुनी गाणी</translation>
 <translation id="769721561045429135">सध्या, तुमच्याकडे अशी कार्डे आहेत जी फक्त या डिव्हाइसवर वापरली जाऊ शकतात. कार्डांचे पुनरावलोकन करण्यासाठी सुरू ठेवा क्लिक करा.</translation>
@@ -2720,6 +2735,7 @@
 <translation id="8202370299023114387">विरोध</translation>
 <translation id="8210604850413485128">वेब होस्टिंग</translation>
 <translation id="8211406090763984747">कनेक्शन सुरक्षित आहे</translation>
+<translation id="8213853114485953510">JIS Exec</translation>
 <translation id="8217240300496046857">साइट या तुमचा संपूर्ण वेबवर माग ठेवणाऱ्या कुकी वापरू शकत नाहीत. काही साइटवरील वैशिष्ट्यांमध्ये खंड पडू शकतो.</translation>
 <translation id="8217748145574471584">मानव संसाधने</translation>
 <translation id="8218327578424803826">नियुक्त केलेले स्थान:</translation>
@@ -2916,6 +2932,7 @@
 <translation id="8763986294015493060">सध्या उघड्या असलेल्या सर्व गुप्त विंडो बंद करा</translation>
 <translation id="8766943070169463815">सुरक्षित पेमेंट क्रेडेंशियल ची ऑथेंटिकेशन शीट उघडी आहे</translation>
 <translation id="8767765348545497220">मदतीसंबंधित बबल बंद करा</translation>
+<translation id="877348612833018844">{0,plural, =1{गोपनीय फाइल हलवायची आहे का?}other{गोपनीय फाइल हलवायच्या आहेत का?}}</translation>
 <translation id="877985182522063539">A4</translation>
 <translation id="8785658048882205566">मोटरसायकल</translation>
 <translation id="8790007591277257123">&amp;पुन्हा करा हटवा</translation>
@@ -2932,6 +2949,7 @@
 <translation id="8816395686387277279"><ph name="UPDATE_CHROME_FOCUSED_FRIENDLY_MATCH_TEXT" />, तुमच्या Chrome सेटिंग्जमधून Chrome अपडेट करण्यासाठी टॅब आणि त्यानंतर एंटर दाबा</translation>
 <translation id="8820817407110198400">बुकमार्क</translation>
 <translation id="882338992931677877">मॅन्‍युअल स्लॉट</translation>
+<translation id="8830320733681313421">Hagaki पोस्टकार्ड</translation>
 <translation id="8834380158646307944">गुप्त विंडो बंद करा बटण, सध्या उघड्या असलेल्या सर्व गुप्त विंडो बंद करण्यासाठी एंटर दाबा</translation>
 <translation id="883848425547221593">अन्य बुकमार्क</translation>
 <translation id="884264119367021077">वहनावळ पत्ता</translation>
diff --git a/components/strings/components_strings_ms.xtb b/components/strings/components_strings_ms.xtb
index 911cfad..27094ee 100644
--- a/components/strings/components_strings_ms.xtb
+++ b/components/strings/components_strings_ms.xtb
@@ -396,6 +396,7 @@
 <translation id="192020519938775529">{COUNT,plural, =0{Tiada}=1{1 tapak}other{# tapak}}</translation>
 <translation id="1924727005275031552">Baharu</translation>
 <translation id="1927439593081478069">Butang Jalankan semakan keselamatan Chrome, tekan Enter untuk menjalankan semakan keselamatan dalam tetapan Chrome</translation>
+<translation id="1935995810530254458">Salin juga</translation>
 <translation id="1939175642807587452">Boleh meminta untuk menghantar pemberitahuan</translation>
 <translation id="1943994668912612445">Reka bentuk</translation>
 <translation id="1945968466830820669">Anda boleh kehilangan akses kepada akaun organisasi anda atau mengalami kecurian identiti. Chromium mengesyorkan supaya kata laluan anda ditukar sekarang.</translation>
@@ -449,6 +450,7 @@
 <translation id="2085876078937250610">Simpan…</translation>
 <translation id="2088086323192747268">Butang urus penyegerakan, tekan Enter untuk mengurus maklumat yang anda segerakkan dalam tetapan Chrome</translation>
 <translation id="2091887806945687916">Bunyi</translation>
+<translation id="2093982008204312032">Google Chrome cuba mematikan Windows Hello untuk mengisikan kata laluan.</translation>
 <translation id="2094505752054353250">Domain tidak padan</translation>
 <translation id="2099652385553570808">Tiga kokot kiri</translation>
 <translation id="2101225219012730419">Versi:</translation>
@@ -1144,6 +1146,7 @@
 <translation id="4014128326099193693">{COUNT,plural, =1{Dokumen PDF mengandungi {COUNT} halaman}other{Dokumen PDF mengandungi {COUNT} halaman}}</translation>
 <translation id="4022639246993848966">3.5x5</translation>
 <translation id="4023431997072828269">Oleh sebab borang ini diserahkan menggunakan sambungan yang tidak selamat, maklumat anda akan dapat dilihat oleh orang lain.</translation>
+<translation id="4024923292610332139">matikan TouchID untuk mengisikan kata laluan</translation>
 <translation id="4025913568718019429">Butang urus tetapan Google Privacy, tekan Enter untuk melawati tetapan privasi Google Account anda</translation>
 <translation id="4030383055268325496">&amp;Buat asal tambahkan</translation>
 <translation id="4031179711345676612">Mikrofon dibenarkan</translation>
@@ -1260,6 +1263,7 @@
 <translation id="42981349822642051">Kembangkan</translation>
 <translation id="4300675098767811073">Berbilang tebukan kanan</translation>
 <translation id="4302514097724775343">Ketik dinosaur itu untuk bermain</translation>
+<translation id="4304049446746819918">{0,plural, =1{Dasar pentadbir tidak mengesyorkan anda memindahkan fail ini ke <ph name="DESTINATION_NAME" />}other{Dasar pentadbir tidak mengesyorkan anda memindahkan fail ini ke <ph name="DESTINATION_NAME" />}}</translation>
 <translation id="4305666528087210886">Fail anda tidak dapat diakses</translation>
 <translation id="4306529830550717874">Simpan alamat?</translation>
 <translation id="4306812610847412719">papan keratan</translation>
@@ -1635,6 +1639,7 @@
 <translation id="5254043433801397071">Optimumkan kandungan cetak</translation>
 <translation id="5254958791078852567">E1</translation>
 <translation id="5255690596502591079">Tangkap juga</translation>
+<translation id="5257739419779698609">{0,plural, =1{Dasar pentadbir tidak mengesyorkan anda menyalin fail ini ke <ph name="DESTINATION_NAME" />}other{Dasar pentadbir tidak mengesyorkan anda menyalin fail ini ke <ph name="DESTINATION_NAME" />}}</translation>
 <translation id="5266128565379329178">Ikatan atas</translation>
 <translation id="5269225904387178860">Empat tebukan bawah</translation>
 <translation id="5269999699920406580">Ciri yang diguna pakai di seluruh sistem hanya boleh ditetapkan oleh pemilik: <ph name="OWNER_EMAIL" /></translation>
@@ -1697,6 +1702,7 @@
 <translation id="5412236728747081950">Laman ini mendapat minat anda daripada Chrome untuk memaparkan iklan yang lebih berkaitan kepada anda</translation>
 <translation id="5412245327974352290"><ph name="TRADITIONAL_TEXT" /> - <ph name="ADDITIONAL_TEXT" /></translation>
 <translation id="541416427766103491">Petak 4</translation>
+<translation id="5414511064953050917">Alihkan juga</translation>
 <translation id="5421136146218899937">Kosongkan data semakan imbas...</translation>
 <translation id="5425241977284572032">{NUM_COOKIES,plural, =0{Tiada laman disekat}=1{1 laman disekat}other{# laman disekat}}</translation>
 <translation id="5426179911063097041"><ph name="SITE" /> mahu menghantar pemberitahuan kepada anda</translation>
@@ -2318,6 +2324,7 @@
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> dan <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> lagi}other{<ph name="PAYMENT_METHOD_PREVIEW" /> dan <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> lagi}}</translation>
 <translation id="7153618581592392745">Gandaria</translation>
 <translation id="7156870133441232244">Pelayan harus dikemas kini kepada TLS 1.2 atau yang lebih baharu.</translation>
+<translation id="7163295244162773898">{0,plural, =1{Salin fail sulit?}other{Salin fail sulit?}}</translation>
 <translation id="717330890047184534">ID Gaia:</translation>
 <translation id="7174545416324379297">Digabungkan</translation>
 <translation id="7175401108899573750">{SHIPPING_OPTIONS,plural, =0{<ph name="SHIPPING_OPTION_PREVIEW" />}=1{<ph name="SHIPPING_OPTION_PREVIEW" /> dan <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> lagi}other{<ph name="SHIPPING_OPTION_PREVIEW" /> dan <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> lagi}}</translation>
@@ -2927,6 +2934,7 @@
 <translation id="8763986294015493060">Tutup semua tetingkap Inkognito yang terbuka pada masa ini</translation>
 <translation id="8766943070169463815">Helaian pengesahan bukti kelayakan pembayaran selamat dibuka</translation>
 <translation id="8767765348545497220">Tutup gelembung bantuan</translation>
+<translation id="877348612833018844">{0,plural, =1{Alihkan fail sulit?}other{Alihkan fail sulit?}}</translation>
 <translation id="877985182522063539">A4</translation>
 <translation id="8785658048882205566">Motosikal</translation>
 <translation id="8790007591277257123">&amp;Buat semula pemadaman</translation>
diff --git a/components/strings/components_strings_my.xtb b/components/strings/components_strings_my.xtb
index 818d2e8..9008796 100644
--- a/components/strings/components_strings_my.xtb
+++ b/components/strings/components_strings_my.xtb
@@ -397,6 +397,7 @@
 <translation id="192020519938775529">{COUNT,plural, =0{တစ်ခုမျှမရှိပါ}=1{ဝဘ်ဆိုက် ၁ ခု}other{ဝဘ်ဆိုက် # ခု}}</translation>
 <translation id="1924727005275031552">အသစ်</translation>
 <translation id="1927439593081478069">Chrome လုံခြုံရေး စစ်ဆေးမှု လုပ်ဆောင်ရန်ခလုတ်၊ Chrome ဆက်တင်များတွင် လုံခြုံရေး စစ်ဆေးမှု လုပ်ဆောင်ရန် Enter နှိပ်ပါ</translation>
+<translation id="1935995810530254458">မည်သို့ပင်ဖြစ်စေ မိတ္တူကူးရန်</translation>
 <translation id="1939175642807587452">အကြောင်းကြားချက်များ ပို့ရန် ခွင့်တောင်းနိုင်သည်</translation>
 <translation id="1943994668912612445">ဒီဇိုင်း</translation>
 <translation id="1945968466830820669">သင်သည် သင့်အဖွဲ့အစည်း၏ အကောင့်ကို အသုံးပြုခွင့် ဆုံးရှုံးနိုင်သည် သို့မဟုတ် အထောက်အထား အခိုးခံရနိုင်သည်။ သင့်စကားဝှက်ကို ယခုပင်ပြောင်းလဲရန် Chromium က အကြံပြုပါသည်။</translation>
@@ -450,6 +451,7 @@
 <translation id="2085876078937250610">သိမ်းရန်…</translation>
 <translation id="2088086323192747268">စင့်ခ်လုပ်ခြင်းကို စီမံရန် ခလုတ်၊ Chrome ဆက်တင်များတွင် သင်စင့်ခ်လုပ်သော အချက်အလက်များကို စီမံရန် Enter နှိပ်ပါ</translation>
 <translation id="2091887806945687916">အသံ</translation>
+<translation id="2093982008204312032">Google Chrome က စကားဝှက်ဖြည့်ရန်အတွက် Windows Hello ကိုပိတ်လိုသည်။</translation>
 <translation id="2094505752054353250">ဒိုမိန်း မတိုက်ဆိုင်မှု</translation>
 <translation id="2099652385553570808">ဘယ်ဘက်တွင် ချုပ်စက်ဖြင့် သုံးချက်ချုပ်ရန်</translation>
 <translation id="2101225219012730419">ဗားရှင်း:</translation>
@@ -1143,6 +1145,7 @@
 <translation id="4014128326099193693">{COUNT,plural, =1{စာမျက်နှာ {COUNT} မျက်နှာ ပါဝင်သော PDF မှတ်တမ်း}other{စာမျက်နှာ {COUNT} မျက်နှာ ပါဝင်သော PDF မှတ်တမ်း}}</translation>
 <translation id="4022639246993848966">၃.၅x၅</translation>
 <translation id="4023431997072828269">မလုံခြုံသောချိတ်ဆက်မှုကို အသုံးပြုပြီး ဤဖောင်ကိုပေးပို့ထားသဖြင့် အခြားသူများက သင့်အချက်အလက်များကို မြင်နိုင်သည်။</translation>
+<translation id="4024923292610332139">စကားဝှက်များဖြည့်ရန်အတွက် TouchID ကိုပိတ်လိုသည်</translation>
 <translation id="4025913568718019429">Google ကိုယ်ရေးအချက်အလက်လုံခြုံရေး ဆက်တင်များ စီမံရန်ခလုတ်၊ သင်၏ Google Account ကိုယ်ရေးအချက်အလက်လုံခြုံရေး ဆက်တင်များကို ဝင်ကြည့်ရန် Enter နှိပ်ပါ</translation>
 <translation id="4030383055268325496">&amp;ထည့်ပေးမှုကို ပြန်လုပ်ရန်</translation>
 <translation id="4031179711345676612">မိုက်ခရိုဖုန်းကို သုံးခွင့်ပြုထားသည်</translation>
@@ -1260,6 +1263,7 @@
 <translation id="42981349822642051">တိုးချဲ့</translation>
 <translation id="4300675098767811073">ညာဘက်တွင် အများအပြားဖောက်ရန်</translation>
 <translation id="4302514097724775343">ကစားရန် ဒိုင်နိုကိုတို့ပါ</translation>
+<translation id="4304049446746819918">{0,plural, =1{ဤဖိုင်အား <ph name="DESTINATION_NAME" /> သို့ ရွှေ့ခြင်းကို စီမံခန့်ခွဲသူ မူဝါဒက အကြံမပြုပါ}other{ဤဖိုင်များအား <ph name="DESTINATION_NAME" /> သို့ ရွှေ့ခြင်းကို စီမံခန့်ခွဲသူ မူဝါဒက အကြံမပြုပါ}}</translation>
 <translation id="4305666528087210886">သင့်ဖိုင်ကို သုံး၍မရနိုင်ပါ</translation>
 <translation id="4306529830550717874">လိပ်စာ သိမ်းမလား။</translation>
 <translation id="4306812610847412719">ကလစ်ဘုတ်</translation>
@@ -1635,6 +1639,7 @@
 <translation id="5254043433801397071">ပုံနှိပ်ရန် အကြောင်းအရာကို အကောင်းဆုံးလုပ်ရန်</translation>
 <translation id="5254958791078852567">E1</translation>
 <translation id="5255690596502591079">မည်သို့ပင်ဖြစ်စေ ဖမ်းယူရန်</translation>
+<translation id="5257739419779698609">{0,plural, =1{ဤဖိုင်အား <ph name="DESTINATION_NAME" /> သို့ မိတ္တူကူးခြင်းကို စီမံခန့်ခွဲသူ မူဝါဒက အကြံမပြုပါ}other{ဤဖိုင်များအား <ph name="DESTINATION_NAME" /> သို့ မိတ္တူကူးခြင်းကို စီမံခန့်ခွဲသူ မူဝါဒက အကြံမပြုပါ}}</translation>
 <translation id="5266128565379329178">ထိပ်တွင် တွဲချုပ်ရန်</translation>
 <translation id="5269225904387178860">အောက်ခြေတွင် လေးချက်ဖောက်ရန်</translation>
 <translation id="5269999699920406580">စနစ်တွင်ကျင့်သုံးသော ဝန်ဆောင်မှုများကို ပိုင်ရှင်ကသာလျှင် သတ်မှတ်ပေးနိုင်သည်− <ph name="OWNER_EMAIL" /></translation>
@@ -1697,6 +1702,7 @@
 <translation id="5412236728747081950">နောက်ထပ်သက်ဆိုင်ရာ ကြော်ငြာများ ပြရန် Chrome မှ သင့်စိတ်ဝင်စားမှုများကို ဤဝဘ်ဆိုက်က ရယူပါသည်</translation>
 <translation id="5412245327974352290"><ph name="TRADITIONAL_TEXT" /> - <ph name="ADDITIONAL_TEXT" /></translation>
 <translation id="541416427766103491">စီထည့်သည့်ပုံး ၄</translation>
+<translation id="5414511064953050917">မည်သို့ပင်ဖြစ်စေ ရွှေ့ရန်</translation>
 <translation id="5421136146218899937">ဘရောင်ဇာ ဒေတာကို ရှင်းရန်...</translation>
 <translation id="5425241977284572032">{NUM_COOKIES,plural, =0{မည်သည့်ဝဘ်ဆိုက်မျှ ပိတ်မထားပါ}=1{ဝဘ်ဆိုက် ၁ ခု ပိတ်ထားသည်}other{ဝဘ်ဆိုက် # ခု ပိတ်ထားသည်}}</translation>
 <translation id="5426179911063097041"><ph name="SITE" /> သည် သင့်ထံသို့ အကြောင်းကြားချက်များ ပို့လိုသည်</translation>
@@ -2317,6 +2323,7 @@
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> နှင့် နောက်ထပ် <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> ခု}other{<ph name="PAYMENT_METHOD_PREVIEW" /> နှင့် နောက်ထပ် <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> ခု}}</translation>
 <translation id="7153618581592392745">လာဗင်ဒါ</translation>
 <translation id="7156870133441232244">ဆာဗာကို TLS 1.2 နှင့်နောက်ပိုင်းသို့ အဆင့်မြှင့်တင်ရမည်။</translation>
+<translation id="7163295244162773898">{0,plural, =1{လျှို့ဝှက်ဖိုင်ကို မိတ္တူကူးမလား။}other{လျှို့ဝှက်ဖိုင်များကို မိတ္တူကူးမလား။}}</translation>
 <translation id="717330890047184534">Gaia ID−</translation>
 <translation id="7174545416324379297">ပေါင်းစည်းထားသည်</translation>
 <translation id="7175401108899573750">{SHIPPING_OPTIONS,plural, =0{<ph name="SHIPPING_OPTION_PREVIEW" />}=1{<ph name="SHIPPING_OPTION_PREVIEW" /> နှင့် နောက်ထပ် <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> ခု}other{<ph name="SHIPPING_OPTION_PREVIEW" /> နှင့် နောက်ထပ် <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> ခု}}</translation>
@@ -2927,6 +2934,7 @@
 <translation id="8763986294015493060">လက်ရှိဖွင့်ထားသော ရုပ်ဖျက်ဝင်းဒိုးအားလုံးကို ပိတ်နိုင်သည်</translation>
 <translation id="8766943070169463815">လုံခြုံသောပေးချေမှု အထောက်အထား စိစစ်ခြင်းစာရွက် ဖွင့်ထားသည်</translation>
 <translation id="8767765348545497220">အကူအညီ ပူဖောင်းကွက်ကို ပိတ်ရန်</translation>
+<translation id="877348612833018844">{0,plural, =1{လျှို့ဝှက်ဖိုင်ကို ရွှေ့မလား။}other{လျှို့ဝှက်ဖိုင်များကို ရွှေ့မလား။}}</translation>
 <translation id="877985182522063539">A4</translation>
 <translation id="8785658048882205566">မော်တော်ဆိုင်ကယ်များ</translation>
 <translation id="8790007591277257123">&amp;ဖျက်ရန်ကို ပြန်လုပ်ရန်</translation>
diff --git a/components/strings/components_strings_nl.xtb b/components/strings/components_strings_nl.xtb
index 4974f2e..f5d23dc6 100644
--- a/components/strings/components_strings_nl.xtb
+++ b/components/strings/components_strings_nl.xtb
@@ -396,6 +396,7 @@
 <translation id="192020519938775529">{COUNT,plural, =0{Geen}=1{1 site}other{# sites}}</translation>
 <translation id="1924727005275031552">Nieuw</translation>
 <translation id="1927439593081478069">De knop Chrome-veiligheidscheck uitvoeren, druk op Enter om een veiligheidscheck uit te voeren in de Chrome-instellingen</translation>
+<translation id="1935995810530254458">Toch kopiëren</translation>
 <translation id="1939175642807587452">Kan vragen of deze site meldingen mag sturen</translation>
 <translation id="1943994668912612445">Ontwerp</translation>
 <translation id="1945968466830820669">Je kunt de toegang tot het account van je organisatie kwijtraken of slachtoffer worden van identiteitsdiefstal. Chromium raadt je aan je wachtwoord nu te wijzigen.</translation>
@@ -449,6 +450,7 @@
 <translation id="2085876078937250610">Opslaan…</translation>
 <translation id="2088086323192747268">Knop Synchronisatie beheren, druk op Enter om de informatie die je synchroniseert te beheren in de Chrome-instellingen</translation>
 <translation id="2091887806945687916">Geluid</translation>
+<translation id="2093982008204312032">Google Chrome probeert Windows Hello aan te zetten voor het invullen van wachtwoorden.</translation>
 <translation id="2094505752054353250">Domeinen komen niet overeen</translation>
 <translation id="2099652385553570808">Drie nietjes links</translation>
 <translation id="2101225219012730419">Versie:</translation>
@@ -712,6 +714,7 @@
 <translation id="2799223571221894425">Opnieuw starten</translation>
 <translation id="2803306138276472711">Google Safe Browsing heeft onlangs <ph name="BEGIN_LINK" />malware gedetecteerd<ph name="END_LINK" /> op <ph name="SITE" />. Websites die normaal gesproken veilig zijn, worden soms geïnfecteerd met malware.</translation>
 <translation id="2807052079800581569">Y-positie van afbeelding</translation>
+<translation id="2808278141522721006">Je kunt Windows Hello aan- of uitzetten in <ph name="SETTINGS" /></translation>
 <translation id="2820957248982571256">Scannen…</translation>
 <translation id="2824775600643448204">Adres- en zoekbalk</translation>
 <translation id="2826760142808435982">De verbinding is gecodeerd en geverifieerd met <ph name="CIPHER" /> en gebruikt <ph name="KX" /> als mechanisme voor sleuteluitwisseling.</translation>
@@ -879,6 +882,7 @@
 <translation id="3288238092761586174"><ph name="URL" /> moet mogelijk aanvullende stappen nemen om je betaling te verifiëren</translation>
 <translation id="3293642807462928945">Meer informatie over het beleid <ph name="POLICY_NAME" /></translation>
 <translation id="3295444047715739395">Je wachtwoorden bekijken en beheren in de Chrome-instellingen</translation>
+<translation id="3299098170013242198">Windows Hello staat aan om wachtwoorden in te vullen</translation>
 <translation id="3303855915957856445">Geen zoekresultaten gevonden</translation>
 <translation id="3304073249511302126">bluetooth-scannen</translation>
 <translation id="33073482541490531">Het wachtwoord dat je net hebt gebruikt, is gevonden bij een gegevenslek. Wachtwoordmanager raadt je aan dit wachtwoord nu te wijzigen.</translation>
@@ -1025,6 +1029,7 @@
 <translation id="3678342917559046352">Ongeldige extensie: er wordt verwacht dat de waarde een van de volgende notaties heeft: &lt;extension_id&gt; of &lt;extension_id&gt;;&lt;update_url&gt;.</translation>
 <translation id="3678529606614285348">Pagina openen in een nieuw incognitovenster (Ctrl-Shift-N)</translation>
 <translation id="3681007416295224113">Certificaatgegevens</translation>
+<translation id="3699374065820972102">TouchID staat aan om wachtwoorden in te vullen</translation>
 <translation id="3701427423622901115">Reset bevestigd.</translation>
 <translation id="3704162925118123524">Het is mogelijk dat je de inlogpagina moet bezoeken van het netwerk dat je gebruikt.</translation>
 <translation id="3705189812819839667"><ph name="RESULT_OWNER" /> - <ph name="RESULT_PRODUCT_SOURCE" /></translation>
@@ -1138,6 +1143,7 @@
 <translation id="4014128326099193693">{COUNT,plural, =1{Pdf-document met {COUNT} pagina}other{Pdf-document met {COUNT} pagina's}}</translation>
 <translation id="4022639246993848966">3,5x5</translation>
 <translation id="4023431997072828269">Dit formulier wordt ingediend via een verbinding die niet beveiligd is. Hierdoor zijn je gegevens zichtbaar voor anderen.</translation>
+<translation id="4024923292610332139">TouchID uitzetten voor het invullen van wachtwoorden</translation>
 <translation id="4025913568718019429">De knop Google-privacyinstellingen beheren, druk op Enter om naar de privacyinstellingen van je Google-account te gaan</translation>
 <translation id="4030383055268325496">&amp;Toevoegen ongedaan maken</translation>
 <translation id="4031179711345676612">Microfoon toegestaan</translation>
@@ -1254,6 +1260,7 @@
 <translation id="42981349822642051">Uitvouwen</translation>
 <translation id="4300675098767811073">Meerdere perforaties rechts</translation>
 <translation id="4302514097724775343">Tik op de dino om te spelen</translation>
+<translation id="4304049446746819918">{0,plural, =1{Op basis van het beheerdersbeleid wordt afgeraden dit bestand te verplaatsen naar <ph name="DESTINATION_NAME" />}other{Op basis van het beheerdersbeleid wordt afgeraden deze bestanden te verplaatsen naar <ph name="DESTINATION_NAME" />}}</translation>
 <translation id="4305666528087210886">Je bestand kan niet worden geopend</translation>
 <translation id="4306529830550717874">Adres opslaan?</translation>
 <translation id="4306812610847412719">klembord</translation>
@@ -1484,6 +1491,7 @@
 <translation id="4900217275619098670">9e rol</translation>
 <translation id="4901778704868714008">Opslaan…</translation>
 <translation id="4905659621780993806">Je beheerder start het apparaat op <ph name="DATE" /> om <ph name="TIME" /> automatisch opnieuw op. Sla alle geopende items op voordat je apparaat opnieuw wordt opgestart.</translation>
+<translation id="4911007278801291296">Je kunt TouchID aan- of uitzetten in <ph name="SETTINGS" /></translation>
 <translation id="4913987521957242411">Perforatie linksboven</translation>
 <translation id="4918221908152712722"><ph name="APP_NAME" /> installeren (geen download vereist)</translation>
 <translation id="4923459931733593730">Betaling</translation>
@@ -1629,6 +1637,7 @@
 <translation id="5254043433801397071">Afdrukcontent optimaliseren</translation>
 <translation id="5254958791078852567">E1</translation>
 <translation id="5255690596502591079">Toch vastleggen</translation>
+<translation id="5257739419779698609">{0,plural, =1{Op basis van het beheerdersbeleid wordt afgeraden dit bestand te kopiëren naar <ph name="DESTINATION_NAME" />}other{Op basis van het beheerdersbeleid wordt afgeraden deze bestanden te kopiëren naar <ph name="DESTINATION_NAME" />}}</translation>
 <translation id="5266128565379329178">Boven inbinden</translation>
 <translation id="5269225904387178860">Vier perforaties onder</translation>
 <translation id="5269999699920406580">Functies die op het hele systeem van toepassing zijn, kunnen alleen worden ingesteld door de eigenaar: <ph name="OWNER_EMAIL" />.</translation>
@@ -1676,6 +1685,7 @@
 <translation id="5357848622083956825">Visuele kunst en visueel ontwerp</translation>
 <translation id="536296301121032821">Opslaan van beleidsinstellingen is mislukt</translation>
 <translation id="5363309033720083897">Seriële poort toegestaan door je beheerder</translation>
+<translation id="5363713372507812442">Trajecten zoeken</translation>
 <translation id="5371425731340848620">Pas updaten</translation>
 <translation id="5377026284221673050">'Je klok loopt achter', 'Je klok loopt voor' of '&lt;span class="error-code"&gt;NET::ERR_CERT_DATE_INVALID&lt;/span&gt;'</translation>
 <translation id="5379027395132364855">Knop Presentatie maken, druk op Enter om snel een nieuwe Google-presentatie in Presentaties te maken</translation>
@@ -1691,6 +1701,7 @@
 <translation id="5412236728747081950">Deze site krijgt je interesses van Chrome zodat de site je relevantere advertenties kan laten zien</translation>
 <translation id="5412245327974352290"><ph name="TRADITIONAL_TEXT" /> - <ph name="ADDITIONAL_TEXT" /></translation>
 <translation id="541416427766103491">Stapeleenheid 4</translation>
+<translation id="5414511064953050917">Toch verplaatsen</translation>
 <translation id="5421136146218899937">Browsegegevens wissen</translation>
 <translation id="5425241977284572032">{NUM_COOKIES,plural, =0{Geen sites geblokkeerd}=1{1 site geblokkeerd}other{# sites geblokkeerd}}</translation>
 <translation id="5426179911063097041"><ph name="SITE" /> wil meldingen sturen</translation>
@@ -2311,6 +2322,7 @@
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> en nog <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}other{<ph name="PAYMENT_METHOD_PREVIEW" /> en nog <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}}</translation>
 <translation id="7153618581592392745">Lavendel</translation>
 <translation id="7156870133441232244">De server moet worden geüpgraded naar TLS 1.2 of hoger.</translation>
+<translation id="7163295244162773898">{0,plural, =1{Vertrouwelijk bestand kopiëren?}other{Vertrouwelijke bestanden kopiëren?}}</translation>
 <translation id="717330890047184534">Gaia-ID:</translation>
 <translation id="7174545416324379297">Samengevoegd</translation>
 <translation id="7175401108899573750">{SHIPPING_OPTIONS,plural, =0{<ph name="SHIPPING_OPTION_PREVIEW" />}=1{<ph name="SHIPPING_OPTION_PREVIEW" /> en nog <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" />}other{<ph name="SHIPPING_OPTION_PREVIEW" /> en nog <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" />}}</translation>
@@ -2919,6 +2931,7 @@
 <translation id="8763986294015493060">Alle momenteel geopende incognitovensters sluiten</translation>
 <translation id="8766943070169463815">Blad voor beveiligde verificatie van betalingsgegevens is geopend</translation>
 <translation id="8767765348545497220">Hulpballon sluiten</translation>
+<translation id="877348612833018844">{0,plural, =1{Vertrouwelijk bestand verplaatsen?}other{Vertrouwelijke bestanden verplaatsen?}}</translation>
 <translation id="877985182522063539">A4</translation>
 <translation id="8785658048882205566">Motorfietsen</translation>
 <translation id="8790007591277257123">&amp;Opnieuw verwijderen</translation>
diff --git a/components/strings/components_strings_no.xtb b/components/strings/components_strings_no.xtb
index 0f4bcac..46e1a275 100644
--- a/components/strings/components_strings_no.xtb
+++ b/components/strings/components_strings_no.xtb
@@ -67,7 +67,7 @@
 <translation id="1156303062776767266">Du ser en lokal eller delt fil</translation>
 <translation id="1158211211994409885"><ph name="HOST_NAME" /> avsluttet tilkoblingen uventet.</translation>
 <translation id="115926840831309955">Kontrollér CVC-koden og prøv igjen, eller oppdater utløpsdatoen</translation>
-<translation id="1161325031994447685">Koble til Wi-Fi på nytt</translation>
+<translation id="1161325031994447685">Koble til wifi på nytt</translation>
 <translation id="1165039591588034296">Feil</translation>
 <translation id="1165174597379888365">En nettside besøkes</translation>
 <translation id="1165852471352757509">TV-dokumentarer</translation>
@@ -232,7 +232,7 @@
 <translation id="1495677929897281669">Tilbake til fanen</translation>
 <translation id="1501859676467574491">Vis kredittkort fra Google-kontoen din</translation>
 <translation id="150536342253161096">Lokalnyheter</translation>
-<translation id="1507202001669085618">&lt;p&gt;Du ser denne feilmeldingen hvis du bruker en Wi-Fi-portal hvor du må logge på før du kommer deg på nettet.&lt;/p&gt;
+<translation id="1507202001669085618">&lt;p&gt;Du ser denne feilmeldingen hvis du bruker en Wifi-portal hvor du må logge på før du kommer deg på nettet.&lt;/p&gt;
     &lt;p&gt;For å fikse feilen, klikk på &lt;strong&gt;Koble til&lt;/strong&gt; på siden du prøver å åpne.&lt;/p&gt;</translation>
 <translation id="1507780850870535225">Landskapsarkitektur</translation>
 <translation id="1513706915089223971">Liste over loggoppføringer</translation>
@@ -396,6 +396,7 @@
 <translation id="192020519938775529">{COUNT,plural, =0{Ingen}=1{1 nettsted}other{# nettsteder}}</translation>
 <translation id="1924727005275031552">Ny</translation>
 <translation id="1927439593081478069">Knappen «Kjør Chrome-sikkerhetssjekk» – trykk på Enter for å kjøre en sikkerhetssjekk i Chrome-innstillingene</translation>
+<translation id="1935995810530254458">Kopier likevel</translation>
 <translation id="1939175642807587452">Kan be om å få sende varsler</translation>
 <translation id="1943994668912612445">Design</translation>
 <translation id="1945968466830820669">Du kan miste tilgangen til organisasjonskontoen din eller bli utsatt for identitetstyveri. Chromium anbefaler at du endrer passordet ditt nå.</translation>
@@ -449,6 +450,7 @@
 <translation id="2085876078937250610">Lagre …</translation>
 <translation id="2088086323192747268">Knappen «Administrer synkronisering» – trykk på Enter for å administrere hvilken informasjon du synkroniserer, i Chrome-innstillingene</translation>
 <translation id="2091887806945687916">Lyd</translation>
+<translation id="2093982008204312032">Google Chrome prøver å slå av Windows Hello for utfylling av passord.</translation>
 <translation id="2094505752054353250">Domenene samsvarer ikke</translation>
 <translation id="2099652385553570808">Tre stifter venstre</translation>
 <translation id="2101225219012730419">Versjon:</translation>
@@ -712,6 +714,7 @@
 <translation id="2799223571221894425">Start på nytt</translation>
 <translation id="2803306138276472711">Google Safe Browsing oppdaget nylig <ph name="BEGIN_LINK" />skadelig programvare<ph name="END_LINK" /> på <ph name="SITE" />. Nettsteder som vanligvis er sikre, kan noen ganger være infisert av skadelig programvare.</translation>
 <translation id="2807052079800581569">Y-posisjon for bilde</translation>
+<translation id="2808278141522721006">Du kan slå Windows Hello av eller på i <ph name="SETTINGS" /></translation>
 <translation id="2820957248982571256">Skanner …</translation>
 <translation id="2824775600643448204">Adresse- og søkefelt</translation>
 <translation id="2826760142808435982">Tilkoblingen er kryptert ved hjelp av <ph name="CIPHER" />, og bruker <ph name="KX" /> som mekanisme for nøkkelutveksling.</translation>
@@ -736,7 +739,7 @@
 <translation id="290376772003165898">Er ikke siden på <ph name="LANGUAGE" />?</translation>
 <translation id="2909946352844186028">En nettverksendring ble oppdaget.</translation>
 <translation id="2911973620368911614">Bruker-ID for jobbregnskap</translation>
-<translation id="2914160345369867329"><ph name="SITE" /> bruker vanligvis kryptering for å beskytte informasjonen din. Da Chrome prøvde å koble til <ph name="SITE" /> denne gangen, sendte nettstedet uvanlig og feil legitimasjon tilbake. Dette kan skje når en angriper prøver å utgi seg for å være <ph name="SITE" />, eller hvis en Wi-Fi-påloggingsskjerm har avbrutt tilkoblingen. Informasjonen din er likevel sikker, ettersom Chrome stoppet tilkoblingen før det ble utvekslet data.</translation>
+<translation id="2914160345369867329"><ph name="SITE" /> bruker vanligvis kryptering for å beskytte informasjonen din. Da Chrome prøvde å koble til <ph name="SITE" /> denne gangen, sendte nettstedet uvanlig og feil legitimasjon tilbake. Dette kan skje når en angriper prøver å utgi seg for å være <ph name="SITE" />, eller hvis en Wifi-påloggingsskjerm har avbrutt tilkoblingen. Informasjonen din er likevel sikker, ettersom Chrome stoppet tilkoblingen før det ble utvekslet data.</translation>
 <translation id="2915068235268646559">Krasj fra <ph name="CRASH_TIME" /></translation>
 <translation id="2915496182262110498">Maling</translation>
 <translation id="2916038427272391327">Lukk andre programmer</translation>
@@ -822,7 +825,7 @@
 <translation id="315504272643575312">Kontoen din administreres av <ph name="MANAGER" />.</translation>
 <translation id="3157931365184549694">Gjenopprett</translation>
 <translation id="3158539265159265653">Plate</translation>
-<translation id="3162559335345991374">Det kan hende at Wi-Fi-nettverket du bruker, krever at du besøker en påloggingsside.</translation>
+<translation id="3162559335345991374">Det kan hende at Wifi-nettverket du bruker, krever at du besøker en påloggingsside.</translation>
 <translation id="3169472444629675720">Discover</translation>
 <translation id="3176929007561373547">Sjekk innstillingene for proxy-tjeneren eller kontakt nettverksadministratoren
       for å forsikre deg om at den fungerer. Følg disse instruksjonene hvis du
@@ -882,6 +885,7 @@
 <translation id="3288238092761586174"><ph name="URL" /> må kanskje utføre flere trinn for å bekrefte betalingen din</translation>
 <translation id="3293642807462928945">Finn ut mer om regelen <ph name="POLICY_NAME" /></translation>
 <translation id="3295444047715739395">Se og administrer passordene dine i Chrome-innstillingene</translation>
+<translation id="3299098170013242198">Windows Hello er påslått for utfylling av passord</translation>
 <translation id="3303855915957856445">Søket ga ingen treff</translation>
 <translation id="3304073249511302126">Bluetooth-skanning</translation>
 <translation id="33073482541490531">Passordet du nettopp brukte, er funnet i et databrudd. Passordlagring anbefaler at du endrer dette passordet nå.</translation>
@@ -1030,6 +1034,7 @@
 <translation id="3678342917559046352">Ugyldig utvidelse: Forventet en verdi på en av disse formene: &lt;extension_id&gt; eller &lt;extension_id&gt;;&lt;update_url&gt;.</translation>
 <translation id="3678529606614285348">Åpne siden i et nytt inkognitovindu (Ctrl + Shift + N)</translation>
 <translation id="3681007416295224113">Sertifikatinformasjon</translation>
+<translation id="3699374065820972102">TouchID er påslått for utfylling av passord</translation>
 <translation id="3701427423622901115">Tilbakestillingen er godtatt.</translation>
 <translation id="3704162925118123524">Det kan hende at det er et krav for nettverket du bruker, at du besøker påloggingssiden for nettverket.</translation>
 <translation id="3705189812819839667"><ph name="RESULT_OWNER" /> – <ph name="RESULT_PRODUCT_SOURCE" /></translation>
@@ -1042,8 +1047,8 @@
 <translation id="3712624925041724820">Lisensene er oppbrukt</translation>
 <translation id="3713662424819367124">Parfymer og dufter</translation>
 <translation id="3714633008798122362">nettkalender</translation>
-<translation id="3714780639079136834">Slå på mobildata eller Wi-Fi</translation>
-<translation id="3715597595485130451">Tilkobling til Wi-Fi</translation>
+<translation id="3714780639079136834">Slå på mobildata eller Wifi</translation>
+<translation id="3715597595485130451">Tilkobling til wifi</translation>
 <translation id="3717027428350673159"><ph name="BEGIN_LINK" />Sjekk proxy-tjener-, brannmur- og DNS-konfigurasjonen<ph name="END_LINK" /></translation>
 <translation id="372429172604983730">Apper som kan forårsake denne feilen, omfatter programvare for antivirus, brannmur og nettfiltrering eller proxy-tjenester.</translation>
 <translation id="3727101516080730231"><ph name="CREATE_GOOGLE_SLIDE_FOCUSED_FRIENDLY_MATCH_TEXT" /> – trykk på Tab og deretter på Enter for å opprette en ny Google-presentasjon i Presentasjoner raskt</translation>
@@ -1143,6 +1148,7 @@
 <translation id="4014128326099193693">{COUNT,plural, =1{PDF-dokument som inneholder {COUNT} side}other{PDF-dokument som inneholder {COUNT} sider}}</translation>
 <translation id="4022639246993848966">8,89 cm × 12,7 cm</translation>
 <translation id="4023431997072828269">Siden dette skjemaet blir sendt over en tilkobling som ikke er sikker, kommer informasjonen din til å være synlig for andre.</translation>
+<translation id="4024923292610332139">slå av TouchID for utfylling av passord</translation>
 <translation id="4025913568718019429">«Administrer Google-personverninnstillinger»-knappen – trykk på Enter for å åpne personverninnstillingene for Google-kontoen din</translation>
 <translation id="4030383055268325496">&amp;Angre tilleggingen</translation>
 <translation id="4031179711345676612">Mikrofonen er tillatt</translation>
@@ -1217,7 +1223,7 @@
 <translation id="4220128509585149162">Kræsj</translation>
 <translation id="422022731706691852">Angripere på <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> kan prøve å lure deg til å installere programmer som påvirker surfeopplevelsen din (for eksempel ved å endre startsiden eller vise ekstra annonser på nettsteder du går til). <ph name="BEGIN_LEARN_MORE_LINK" />Finn ut mer<ph name="END_LEARN_MORE_LINK" /></translation>
 <translation id="4221630205957821124">&lt;h4&gt;Trinn 1: Logg på portalen&lt;/h4&gt;
-    &lt;p&gt;Wi-Fi-nettverk på steder som kaféer eller flyplasser krever at du logger på. For å se påloggingssiden, åpne en side som bruker &lt;code&gt;http://&lt;/code&gt;.&lt;/p&gt;
+    &lt;p&gt;Wifi-nettverk på steder som kaféer eller flyplasser krever at du logger på. For å se påloggingssiden, åpne en side som bruker &lt;code&gt;http://&lt;/code&gt;.&lt;/p&gt;
     &lt;ol&gt;
     &lt;li&gt;Gå til et nettsted som begynner på &lt;code&gt;http://&lt;/code&gt;, for eksempel &lt;a href="http://example.com" target="_blank"&gt;http://example.com&lt;/a&gt;.&lt;/li&gt;
     &lt;li&gt;Logg på via påloggingssiden som åpnes, for å bruke Internett.&lt;/li&gt;
@@ -1259,6 +1265,7 @@
 <translation id="42981349822642051">Vis</translation>
 <translation id="4300675098767811073">Flere hull høyre</translation>
 <translation id="4302514097724775343">Trykk på dinosauren for å spille</translation>
+<translation id="4304049446746819918">{0,plural, =1{Administratorreglene anbefaler ikke at du flytter denne filen til <ph name="DESTINATION_NAME" />}other{Administratorreglene anbefaler ikke at du flytter disse filene til <ph name="DESTINATION_NAME" />}}</translation>
 <translation id="4305666528087210886">Kunne ikke åpne filen</translation>
 <translation id="4306529830550717874">Vil du lagre adressen?</translation>
 <translation id="4306812610847412719">utklippstavle</translation>
@@ -1489,6 +1496,7 @@
 <translation id="4900217275619098670">Niende rull</translation>
 <translation id="4901778704868714008">Lagre</translation>
 <translation id="4905659621780993806">Administratoren din starter enheten din på nytt automatisk kl. <ph name="TIME" /> <ph name="DATE" />. Lagre eventuelle åpne filer før enheten startes på nytt.</translation>
+<translation id="4911007278801291296">Du kan slå TouchID av eller på i <ph name="SETTINGS" /></translation>
 <translation id="4913987521957242411">Hull oppe til venstre</translation>
 <translation id="4918221908152712722">Installer <ph name="APP_NAME" /> (ingen nedlasting nødvendig)</translation>
 <translation id="4923459931733593730">Betaling</translation>
@@ -1634,6 +1642,7 @@
 <translation id="5254043433801397071">Optimaliser utskriftsinnhold</translation>
 <translation id="5254958791078852567">E1</translation>
 <translation id="5255690596502591079">Ta opp likevel</translation>
+<translation id="5257739419779698609">{0,plural, =1{Administratorreglene anbefaler ikke at du kopierer denne filen til <ph name="DESTINATION_NAME" />}other{Administratorreglene anbefaler ikke at du kopierer disse filene til <ph name="DESTINATION_NAME" />}}</translation>
 <translation id="5266128565379329178">Innbinding topp</translation>
 <translation id="5269225904387178860">Fire hull bunn</translation>
 <translation id="5269999699920406580">Funksjoner som gjelder for hele systemet, kan bare angis av eieren: <ph name="OWNER_EMAIL" /></translation>
@@ -1681,6 +1690,7 @@
 <translation id="5357848622083956825">Visuell kunst og design</translation>
 <translation id="536296301121032821">Kunne ikke lagre angivelsen for enhetsinnstillinger</translation>
 <translation id="5363309033720083897">Den serielle porten tillates av administratoren din</translation>
+<translation id="5363713372507812442">Søkereiser</translation>
 <translation id="5371425731340848620">Oppdater kortet</translation>
 <translation id="5377026284221673050">«Klokken går for sent», «Klokken går for fort» eller «&lt;span class="error-code"&gt;NET::ERR_CERT_DATE_INVALID&lt;/span&gt;»</translation>
 <translation id="5379027395132364855">Knappen «Opprett presentasjon» – trykk på Enter for å opprette en ny Google-presentasjon i Presentasjoner raskt</translation>
@@ -1696,6 +1706,7 @@
 <translation id="5412236728747081950">Dette nettstedet mottar interessene dine fra Chrome for å kunne vise deg mer relevante annonser</translation>
 <translation id="5412245327974352290"><ph name="TRADITIONAL_TEXT" /> – <ph name="ADDITIONAL_TEXT" /></translation>
 <translation id="541416427766103491">Hylle 4</translation>
+<translation id="5414511064953050917">Flytt likevel</translation>
 <translation id="5421136146218899937">Slett nettlesingsdata</translation>
 <translation id="5425241977284572032">{NUM_COOKIES,plural, =0{Ingen nettsteder er blokkert}=1{1 nettsted er blokkert}other{# nettsteder er blokkert}}</translation>
 <translation id="5426179911063097041"><ph name="SITE" /> vil sende deg varsler</translation>
@@ -2317,6 +2328,7 @@
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> og <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> til}other{<ph name="PAYMENT_METHOD_PREVIEW" /> og <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> til}}</translation>
 <translation id="7153618581592392745">Lavendel</translation>
 <translation id="7156870133441232244">Tjeneren bør oppgraderes til TLS 1.2 eller nyere.</translation>
+<translation id="7163295244162773898">{0,plural, =1{Vil du kopiere den konfidensielle filen?}other{Vil du kopiere de konfidensielle filene?}}</translation>
 <translation id="717330890047184534">Gaia-ID:</translation>
 <translation id="7174545416324379297">Slått sammen</translation>
 <translation id="7175401108899573750">{SHIPPING_OPTIONS,plural, =0{<ph name="SHIPPING_OPTION_PREVIEW" />}=1{<ph name="SHIPPING_OPTION_PREVIEW" /> og <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> til}other{<ph name="SHIPPING_OPTION_PREVIEW" /> og <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> til}}</translation>
@@ -2464,7 +2476,7 @@
 <translation id="7508255263130623398">Den returnerte enhets-ID-en for regelen er tom eller samsvarer ikke med den faktiske enhets-ID-en</translation>
 <translation id="7508870219247277067">Avokadogrønn</translation>
 <translation id="7510269639068718544">Katter</translation>
-<translation id="7511955381719512146">Det kan hende at Wi-Fi-nettverket du bruker, krever at du besøker <ph name="BEGIN_BOLD" /><ph name="LOGIN_URL" /><ph name="END_BOLD" />.</translation>
+<translation id="7511955381719512146">Det kan hende at Wifi-nettverket du bruker, krever at du besøker <ph name="BEGIN_BOLD" /><ph name="LOGIN_URL" /><ph name="END_BOLD" />.</translation>
 <translation id="7512685745044087310">Denne regelen kan ikke settes til «True» (sann) og være obligatorisk. Derfor ble den endret til anbefalt.</translation>
 <translation id="7514365320538308">Last ned</translation>
 <translation id="7517414872996418597">C10-konvolutt</translation>
@@ -2601,7 +2613,7 @@
 <translation id="781440967107097262">Vil du dele utklippstavlen din?</translation>
 <translation id="7815407501681723534">Fant <ph name="NUMBER_OF_RESULTS" /> <ph name="SEARCH_RESULTS" /> for «<ph name="SEARCH_STRING" />»</translation>
 <translation id="7822320754433038727">Jakt og skyting</translation>
-<translation id="782886543891417279">Det kan hende at Wi-Fi-nettverket du bruker (<ph name="WIFI_NAME" />), krever at du besøker en påloggingsside.</translation>
+<translation id="782886543891417279">Det kan hende at Wifi-nettverket du bruker (<ph name="WIFI_NAME" />), krever at du besøker en påloggingsside.</translation>
 <translation id="7844689747373518809">{COUNT,plural, =0{Ingen}=1{1 app (<ph name="EXAMPLE_APP_1" />)}=2{2 apper (<ph name="EXAMPLE_APP_1" /> og <ph name="EXAMPLE_APP_2" />)}other{# apper (<ph name="EXAMPLE_APP_1" />, <ph name="EXAMPLE_APP_2" /> <ph name="AND_MORE" />)}}</translation>
 <translation id="7855695075675558090"><ph name="TOTAL_LABEL" /> <ph name="CURRENCY_CODE" /> <ph name="FORMATTED_TOTAL_AMOUNT" /></translation>
 <translation id="7862185352068345852">Vil du forlate nettstedet?</translation>
@@ -2771,7 +2783,7 @@
 <translation id="8294431847097064396">Kilde</translation>
 <translation id="8296205692406981542">Regionale parker og hager</translation>
 <translation id="8297545700510100061">Informasjonskapsler og andre nettstedsdata brukes til å huske deg, for eksempel for å logge deg på eller for å vise deg personlig tilpassede annonser. For å administrere informasjonskapsler for alle nettsteder, se <ph name="SETTINGS" />.</translation>
-<translation id="8298115750975731693">Det kan hende at Wi-Fi-nettverket du bruker (<ph name="WIFI_NAME" />), krever at du besøker <ph name="BEGIN_BOLD" /><ph name="LOGIN_URL" /><ph name="END_BOLD" />.</translation>
+<translation id="8298115750975731693">Det kan hende at Wifi-nettverket du bruker (<ph name="WIFI_NAME" />), krever at du besøker <ph name="BEGIN_BOLD" /><ph name="LOGIN_URL" /><ph name="END_BOLD" />.</translation>
 <translation id="8299269255470343364">Japansk</translation>
 <translation id="8303854710873047864">Delen «<ph name="SECTION" />» vises</translation>
 <translation id="830498451218851433">Halvfals</translation>
@@ -2924,6 +2936,7 @@
 <translation id="8763986294015493060">Lukk alle åpne inkognitovinduer</translation>
 <translation id="8766943070169463815">Ark for sikker autentisering av betalingslegitimasjon er åpnet</translation>
 <translation id="8767765348545497220">Lukk hjelpeboble</translation>
+<translation id="877348612833018844">{0,plural, =1{Vil du flytte den konfidensielle filen?}other{Vil du flytte de konfidensielle filene?}}</translation>
 <translation id="877985182522063539">A4</translation>
 <translation id="8785658048882205566">Motorsykler</translation>
 <translation id="8790007591277257123">&amp;Slett likevel</translation>
@@ -3043,7 +3056,7 @@
 <translation id="9101630580131696064">Skuff 1</translation>
 <translation id="9102081333385212048">Filer du kopierer eller flytter, blir sendt til Google Cloud eller tredjeparter for analyse. De kan for eksempel bli skannet for sensitive data eller skadelig programvare.</translation>
 <translation id="9103537084693478942">Videoprogramvare</translation>
-<translation id="9103872766612412690"><ph name="SITE" /> bruker vanligvis kryptering for å beskytte informasjonen din. Da Chromium prøvde å koble til <ph name="SITE" /> denne gangen, sendte nettstedet tilbake uvanlig og feil legitimasjon. Dette kan skje hvis en angriper prøver å utgi seg for å være <ph name="SITE" />, eller hvis en Wi-Fi-påloggingsskjerm har avbrutt tilkoblingen. Informasjonen din er likevel sikker fordi Chromium stoppet tilkoblingen før det ble utvekslet noen data.</translation>
+<translation id="9103872766612412690"><ph name="SITE" /> bruker vanligvis kryptering for å beskytte informasjonen din. Da Chromium prøvde å koble til <ph name="SITE" /> denne gangen, sendte nettstedet tilbake uvanlig og feil legitimasjon. Dette kan skje hvis en angriper prøver å utgi seg for å være <ph name="SITE" />, eller hvis en Wifi-påloggingsskjerm har avbrutt tilkoblingen. Informasjonen din er likevel sikker fordi Chromium stoppet tilkoblingen før det ble utvekslet noen data.</translation>
 <translation id="9106062320799175032">Legg til faktureringsadresse</translation>
 <translation id="9107467864910557787">Nettleseren administreres av <ph name="MANAGER" /></translation>
 <translation id="91108059142052966">En administratorregel deaktiverer skjermdeling med <ph name="APPLICATION_TITLE" /> når konfidensielt innhold er synlig</translation>
diff --git a/components/strings/components_strings_or.xtb b/components/strings/components_strings_or.xtb
index e76423e..1651b2f3 100644
--- a/components/strings/components_strings_or.xtb
+++ b/components/strings/components_strings_or.xtb
@@ -714,6 +714,7 @@
 <translation id="2799223571221894425">ପୁଣି ଲଞ୍ଚ କରନ୍ତୁ</translation>
 <translation id="2803306138276472711">Google ନିରାପଦ ବ୍ରାଉଜିଂ, ନିକଟରେ <ph name="SITE" />ରେ <ph name="BEGIN_LINK" />ମାଲ୍‌ୱେର୍ ଚିହ୍ନଟ କରିଛି<ph name="END_LINK" />। ସାଧାରଣତଃ ସୁରକ୍ଷିତ ରହୁଥିବା ୱେବ୍‌ସାଇଟ୍‌ଗୁଡ଼ିକ ବେଳେବେଳେ ମାଲ୍‌ୱେର୍ ଦ୍ୱାରା ସଂକ୍ରମିତ ହୋଇଥାନ୍ତି।</translation>
 <translation id="2807052079800581569">ଛବିର Y ସ୍ଥାନ</translation>
+<translation id="2808278141522721006"><ph name="SETTINGS" />ରେ ଆପଣ Windows Helloକୁ ଚାଲୁ କିମ୍ବା ବନ୍ଦ କରିପାରିବେ</translation>
 <translation id="2820957248982571256">ସ୍କାନ୍‌ କରୁଛି...</translation>
 <translation id="2824775600643448204">ଠିକଣା ଏବଂ ସନ୍ଧାନ ବାର୍</translation>
 <translation id="2826760142808435982">ମୁଖ୍ୟ ଅଦଳ ବଦଳ କୌଶଳ <ph name="CIPHER" />ର ବ୍ୟବହାର କରି ଏବଂ <ph name="KX" />ର ବ୍ୟବହାର କରି ସଂଯୋଗକୁ ଏନ୍‌କ୍ରାଇପ୍ଟ କରାଯାଇଛି ଏବଂ ପ୍ରମାଣିକରଣ କରାଯାଇଛି।</translation>
@@ -882,6 +883,7 @@
 <translation id="3288238092761586174">ଆପଣଙ୍କ ପେମେଣ୍ଟ ଯାଞ୍ଚ କରିବା ପାଇଁ <ph name="URL" />କୁ ଅତିରିକ୍ତ ଷ୍ଟେପ୍ ନେବାର ଆବଶ୍ୟକତା ହୋଇପାରେ</translation>
 <translation id="3293642807462928945"><ph name="POLICY_NAME" /> ନୀତି ସମ୍ଵନ୍ଧରେ ଅଧିକ ଜାଣନ୍ତୁ</translation>
 <translation id="3295444047715739395">Chrome ସେଟିଂସରେ ଆପଣଙ୍କ ପାସୱାର୍ଡଗୁଡ଼ିକ ଦେଖନ୍ତୁ ଏବଂ ପରିଚାଳନା କରନ୍ତୁ</translation>
+<translation id="3299098170013242198">ପାସୱାର୍ଡଗୁଡ଼ିକୁ ପୂରଣ କରିବା ପାଇଁ Windows Hello ଚାଲୁ ଅଛି</translation>
 <translation id="3303855915957856445">କୌଣସି ସନ୍ଧାନ ଫଳାଫଳଗୁଡିକ ଖୋଜି ପାଇଲା ନାହିଁ</translation>
 <translation id="3304073249511302126">ବ୍ଲୁଟୁଥ୍ ସ୍କାନିଂ</translation>
 <translation id="33073482541490531">ଆପଣ ଏବେ ବ୍ୟବହାର କରିଥିବା ପାସୱାର୍ଡ ଏକ ଡାଟା ଉଲ୍ଲଙ୍ଘନରେ ମିଳିଛି। Password Manager ବର୍ତ୍ତମାନ ଏହି ପାସୱାର୍ଡକୁ ପରିବର୍ତ୍ତନ କରିବା ପାଇଁ ସୁପାରିଶ କରେ।</translation>
@@ -1029,6 +1031,7 @@
 <translation id="3678342917559046352">ଅବୈଧ ଏକ୍ସଟେନସନ: ମୂଲ୍ୟଟି ନିମ୍ନୋକ୍ତ ପ୍ରକାରଗୁଡ଼ିକ ମଧ୍ୟରୁ ଗୋଟିଏ ହେବ ବୋଲି ଆଶା କରାଯାଉଛି: &lt;extension_id&gt; କିମ୍ବା &lt;extension_id&gt;;&lt;update_url&gt;।</translation>
 <translation id="3678529606614285348">ଏକ ନୂଆ ଇନ୍‌କଗ୍ନିଟୋ ୱିଣ୍ଡୋରେ ପୃଷ୍ଠା ଖୋଲନ୍ତୁ (Ctrl-Shift-N)</translation>
 <translation id="3681007416295224113">ସାର୍ଟିଫିକେଟ୍ ସୂଚନା</translation>
+<translation id="3699374065820972102">ପାସୱାର୍ଡଗୁଡ଼ିକୁ ପୂରଣ କରିବା ପାଇଁ TouchID ଚାଲୁ ଅଛି</translation>
 <translation id="3701427423622901115">ରିସେଟ୍ ସ୍ୱୀକାର କରାଯାଇଛି।</translation>
 <translation id="3704162925118123524">ଆପଣ ବ୍ୟବହାର କରୁଥିବା ନେଟ୍‌ୱାର୍କ ପାଇଁ ହୁଏତ ଆପଣଙ୍କୁ ଏହାର ଲଗ୍ ଇନ୍ ପୃଷ୍ଠାକୁ ଯିବାର ଆବଶ୍ୟକତା ଅଛି।</translation>
 <translation id="3705189812819839667"><ph name="RESULT_OWNER" /> - <ph name="RESULT_PRODUCT_SOURCE" /></translation>
@@ -1491,6 +1494,7 @@
 <translation id="4900217275619098670">ନବମ ରୋଲ୍</translation>
 <translation id="4901778704868714008">ସେଭ୍ କରନ୍ତୁ...</translation>
 <translation id="4905659621780993806">ଆପଣଙ୍କ ଆଡମିନିଷ୍ଟ୍ରେଟର ଆପଣଙ୍କର ଡିଭାଇସକୁ <ph name="DATE" />ରେ <ph name="TIME" /> ବେଳେ ସ୍ୱଚାଳିତ ଭାବେ ରିଷ୍ଟାର୍ଟ କରିବେ। ଆପଣଙ୍କ ଡିଭାଇସ ରିଷ୍ଟାର୍ଟ ହେବା ପୂର୍ବରୁ ଖୋଲା ଥିବା ଯେ କୌଣସି ଆଇଟମକୁ ସେଭ କରନ୍ତୁ।</translation>
+<translation id="4911007278801291296"><ph name="SETTINGS" />ରେ ଆପଣ TouchIDକୁ ଚାଲୁ କିମ୍ବା ବନ୍ଦ କରିପାରିବେ</translation>
 <translation id="4913987521957242411">ଉପର ବାମ ପଟରେ ପଞ୍ଚ୍</translation>
 <translation id="4918221908152712722"><ph name="APP_NAME" /> ଇନ୍‍ଷ୍ଟଲ୍‌ କରନ୍ତୁ (ଡାଉନ୍‌ଲୋଡ୍‌ର ଆବଶ୍ୟକତା ନାହିଁ)</translation>
 <translation id="4923459931733593730">ପେମେଣ୍ଟ</translation>
@@ -1684,6 +1688,7 @@
 <translation id="5357848622083956825">ଭିଜୁଆଲ ଆର୍ଟ ଏବଂ ଡିଜାଇନ</translation>
 <translation id="536296301121032821">ନୀତି ସେଟିଂସ୍ ଷ୍ଟୋର୍ କରିବାରେ ବିଫଳ ହେଲା</translation>
 <translation id="5363309033720083897">ଆପଣଙ୍କ ଆଡମିନିଷ୍ଟ୍ରେଟରଙ୍କ ଦ୍ୱାରା ସିରିଅଲ୍ ପୋର୍ଟକୁ ଅନୁମତି ଦିଆଯାଇଛି</translation>
+<translation id="5363713372507812442">ସର୍ଚ୍ଚ ଜର୍ନିସ</translation>
 <translation id="5371425731340848620">କାର୍ଡ ଅପ୍‍‍ଡେଟ୍ କରନ୍ତୁ</translation>
 <translation id="5377026284221673050">"ଆପଣଙ୍କର ଘଣ୍ଟା ପଛୁଆ ଅଛି" କିମ୍ବା "ଆପଣଙ୍କର ଘଣ୍ଟା ଆଗୁଆ ଅଛି " କିମ୍ବା "&lt;span class="error-code"&gt;NET::ERR_CERT_DATE_INVALID&lt;/span&gt;"</translation>
 <translation id="5379027395132364855">"ପ୍ରେଜେଣ୍ଟେସନ୍ ତିଆରି କରନ୍ତୁ" ବଟନ୍, Slidesରେ ଶୀଘ୍ର ଏକ ନୂଆ Google ପ୍ରେଜେଣ୍ଟେସନ୍ ତିଆରି କରିବାକୁ Enter ଦବାନ୍ତୁ</translation>
diff --git a/components/strings/components_strings_pa.xtb b/components/strings/components_strings_pa.xtb
index 07460218..1e19b90 100644
--- a/components/strings/components_strings_pa.xtb
+++ b/components/strings/components_strings_pa.xtb
@@ -712,6 +712,7 @@
 <translation id="2799223571221894425">ਰੀਲੌਂਚ ਕਰੋ</translation>
 <translation id="2803306138276472711">Google ਸੁਰੱਖਿਅਤ ਬ੍ਰਾਊਜ਼ਿੰਗ ਨੇ <ph name="SITE" /> 'ਤੇ ਹੁਣੇ ਹੀ<ph name="BEGIN_LINK" /> ਮਲਵੇਅਰ ਖੋਜਿਆ<ph name="END_LINK" /> ਸੀ। ਜੋ ਵੈੱਬਸਾਈਟਾਂ ਆਮ ਤੌਰ ਤੇ ਸੁਰੱਖਿਅਤ ਹੁੰਦੀਆਂ ਹਨ, ਉਹ ਵੀ ਕਦੇ-ਕਦੇ ਮਲਵੇਅਰ ਨਾਲ ਸੰਕ੍ਰਮਿਤ ਹੋ ਜਾਂਦੀਆਂ ਹਨ।</translation>
 <translation id="2807052079800581569">ਚਿੱਤਰ Y ਸਥਿਤੀ</translation>
+<translation id="2808278141522721006">ਤੁਸੀਂ <ph name="SETTINGS" /> ਵਿੱਚ ਜਾ ਕੇ Windows Hello ਨੂੰ ਚਾਲੂ ਜਾਂ ਬੰਦ ਕਰ ਸਕਦੇ ਹੋ</translation>
 <translation id="2820957248982571256">ਸਕੈਨ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ...</translation>
 <translation id="2824775600643448204">ਪਤਾ ਅਤੇ ਖੋਜ ਬਾਰ</translation>
 <translation id="2826760142808435982">ਕਨੈਕਸ਼ਨ <ph name="CIPHER" /> ਵਰਤਦੇ ਹੋਏ ਐਨਕ੍ਰਿਪਟ ਅਤੇ ਪ੍ਰਮਾਣਿਤ ਕੀਤਾ ਗਿਆ ਹੈ ਅਤੇ ਇਹ <ph name="KX" /> ਨੂੰ ਮੁੱਖ ਐਕਸਚੇਂਜ ਬਣਤਰ ਦੇ ਤੌਰ 'ਤੇ ਵਰਤਦਾ ਹੈ।</translation>
@@ -880,6 +881,7 @@
 <translation id="3288238092761586174"><ph name="URL" /> ਨੂੰ ਤੁਹਾਡੇ ਭੁਗਤਾਨ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਵਧੀਕ ਕਦਮ ਚੁੱਕਣ ਦੀ ਲੋੜ ਪੈ ਸਕਦੀ ਹੈ</translation>
 <translation id="3293642807462928945"><ph name="POLICY_NAME" /> ਨੀਤੀ ਬਾਰੇ ਹੋਰ ਜਾਣੋ</translation>
 <translation id="3295444047715739395">Chrome ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਆਪਣੇ ਪਾਸਵਰਡ ਦੇਖੋ ਅਤੇ ਉਹਨਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ</translation>
+<translation id="3299098170013242198">Windows Hello ਪਾਸਵਰਡ ਭਰਨ ਲਈ ਚਾਲੂ ਹੈ</translation>
 <translation id="3303855915957856445">ਕੋਈ ਖੋਜ ਨਤੀਜੇ ਨਹੀਂ ਮਿਲੇ</translation>
 <translation id="3304073249511302126">ਬਲੂਟੁੱਥ ਸਕੈਨਿੰਗ</translation>
 <translation id="33073482541490531">ਤੁਹਾਡੇ ਵੱਲੋਂ ਹੁਣੇ ਹੀ ਵਰਤਿਆ ਗਿਆ ਪਾਸਵਰਡ ਡਾਟਾ ਉਲੰਘਣਾ ਵਿੱਚ ਮਿਲਿਆ ਸੀ। Password Manager ਇਸ ਪਾਸਵਰਡ ਨੂੰ ਹੁਣੇ ਬਦਲਣ ਦੀ ਸਿਫ਼ਾਰਸ਼ ਕਰਦਾ ਹੈ।</translation>
@@ -1027,6 +1029,7 @@
 <translation id="3678342917559046352">ਅਵੈਧ ਐਕਸਟੈਂਸ਼ਨ: ਮੁੱਲ ਅੱਗੇ ਦਿੱਤੇ ਕਿਸੇ ਇੱਕ ਰੂਪ ਵਿੱਚ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ: &lt;extension_id&gt; ਜਾਂ &lt;extension_id&gt;;&lt;update_url&gt;.</translation>
 <translation id="3678529606614285348">ਕਿਸੇ ਨਵੀਂ ਇਨਕੋਗਨਿਟੋ ਵਿੰਡੋ ਵਿੱਚ ਪੰਨਾ ਖੋਲ੍ਹੋ (Ctrl-Shift-N)</translation>
 <translation id="3681007416295224113">ਪ੍ਰਮਾਣ-ਪੱਤਰ ਬਾਰੇ ਜਾਣਕਾਰੀ</translation>
+<translation id="3699374065820972102">TouchID ਪਾਸਵਰਡ ਭਰਨ ਲਈ ਚਾਲੂ ਹੈ</translation>
 <translation id="3701427423622901115">ਰੀਸੈੱਟ ਪ੍ਰਵਾਨ ਹੋਇਆ।</translation>
 <translation id="3704162925118123524">ਤੁਹਾਡੇ ਵੱਲੋਂ ਵਰਤਿਆ ਜਾ ਰਿਹਾ ਨੈੱਟਵਰਕ ਇਹ ਚਾਹ ਸਕਦਾ ਹੈ ਕਿ ਤੁਸੀਂ ਇਸਦੇ ਲੌਗ-ਇਨ ਪੰਨੇ 'ਤੇ ਜਾਓ।</translation>
 <translation id="3705189812819839667"><ph name="RESULT_OWNER" /> - <ph name="RESULT_PRODUCT_SOURCE" /></translation>
@@ -1486,6 +1489,7 @@
 <translation id="4900217275619098670">ਨੌਵਾਂ ਰੋਲ</translation>
 <translation id="4901778704868714008">ਰੱਖਿਅਤ ਕਰੋ...</translation>
 <translation id="4905659621780993806">ਤੁਹਾਡਾ ਪ੍ਰਸ਼ਾਸਕ <ph name="DATE" /> ਨੂੰ <ph name="TIME" /> ਵਜੇ ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਨੂੰ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਮੁੜ-ਸ਼ੁਰੂ ਕਰੇਗਾ। ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਦੇ ਮੁੜ-ਸ਼ੁਰੂ ਹੋਣ ਤੋਂ ਪਹਿਲਾਂ, ਖੁੱਲੀ ਹੋਈ ਕਿਸੇ ਵੀ ਆਈਟਮ ਨੂੰ ਰੱਖਿਅਤ ਕਰੋ।</translation>
+<translation id="4911007278801291296">ਤੁਸੀਂ <ph name="SETTINGS" /> ਵਿੱਚ ਜਾ ਕੇ TouchID ਨੂੰ ਚਾਲੂ ਜਾਂ ਬੰਦ ਕਰ ਸਕਦੇ ਹੋ</translation>
 <translation id="4913987521957242411">ਉੱਪਰ ਖੱਬੇ ਪਾਸੇ ਮੋਰੀ</translation>
 <translation id="4918221908152712722"><ph name="APP_NAME" /> ਸਥਾਪਤ ਕਰੋ (ਕੋਈ ਡਾਊਨਲੋਡ ਲੋੜੀਂਦਾ ਨਹੀਂ ਹੈ)</translation>
 <translation id="4923459931733593730">ਭੁਗਤਾਨ ਵਿਧੀ</translation>
@@ -1678,6 +1682,7 @@
 <translation id="5357848622083956825">ਦ੍ਰਿਸ਼ ਕਲਾ ਅਤੇ ਡਿਜ਼ਾਈਨ</translation>
 <translation id="536296301121032821">ਨੀਤੀ ਸੈਟਿੰਗਾਂ ਸਟੋਰ ਕਰਨ ਵਿੱਚ ਅਸਫਲ</translation>
 <translation id="5363309033720083897">ਤੁਹਾਡੇ ਪ੍ਰਸ਼ਾਸਕ ਵੱਲੋਂ ਇਜਾਜ਼ਤਸ਼ੁਦਾ ਸੀਰੀਅਲ ਪੋਰਟ</translation>
+<translation id="5363713372507812442">ਖੋਜ ਸਫ਼ਰ</translation>
 <translation id="5371425731340848620">ਕਾਰਡ ਅੱਪਡੇਟ ਕਰੋ</translation>
 <translation id="5377026284221673050">"ਤੁਹਾਡੀ ਘੜੀ ਪਿੱਛੇ ਹੈ" ਜਾਂ "ਤੁਹਾਡੀ ਘੜੀ ਅੱਗੇ ਹੈ" ਜਾਂ "&lt;span class="error-code"&gt;NET::ERR_CERT_DATE_INVALID&lt;/span&gt;"</translation>
 <translation id="5379027395132364855">'ਪੇਸ਼ਕਾਰੀ ਬਣਾਓ' ਬਟਨ, Slides ਵਿੱਚ ਤੇਜ਼ੀ ਨਾਲ ਨਵੀਂ Google ਪੇਸ਼ਕਾਰੀ ਬਣਾਉਣ ਲਈ Enter ਦਬਾਓ</translation>
diff --git a/components/strings/components_strings_pl.xtb b/components/strings/components_strings_pl.xtb
index b746bd5..e4d317f 100644
--- a/components/strings/components_strings_pl.xtb
+++ b/components/strings/components_strings_pl.xtb
@@ -712,6 +712,7 @@
 <translation id="2799223571221894425">Uruchom ponownie</translation>
 <translation id="2803306138276472711">Bezpieczne przeglądanie Google <ph name="BEGIN_LINK" />wykryło ostatnio złośliwe oprogramowanie<ph name="END_LINK" /> na <ph name="SITE" />. Strony, które zazwyczaj są bezpieczne, zostają czasem zainfekowane destrukcyjnym oprogramowaniem.</translation>
 <translation id="2807052079800581569">Pozycja Y obrazu</translation>
+<translation id="2808278141522721006">Jeśli chcesz włączyć lub wyłączyć Windows Hello, otwórz <ph name="SETTINGS" /></translation>
 <translation id="2820957248982571256">Skanuję…</translation>
 <translation id="2824775600643448204">Pasek adresu i wyszukiwania</translation>
 <translation id="2826760142808435982">Połączenie jest szyfrowane i uwierzytelniane algorytmem <ph name="CIPHER" />, a mechanizm wymiany kluczy to <ph name="KX" />.</translation>
@@ -882,6 +883,7 @@
 <translation id="3288238092761586174">Weryfikacja Twojej płatności może wymagać od <ph name="URL" /> podjęcia dodatkowych działań</translation>
 <translation id="3293642807462928945">Więcej informacji o zasadzie <ph name="POLICY_NAME" /></translation>
 <translation id="3295444047715739395">Wyświetl hasła i zarządzaj nimi w ustawieniach Chrome</translation>
+<translation id="3299098170013242198">Funkcja Windows Hello jest włączona w celu wypełniania haseł</translation>
 <translation id="3303855915957856445">Brak wyników wyszukiwania</translation>
 <translation id="3304073249511302126">skanowanie Bluetooth</translation>
 <translation id="33073482541490531">Użyte właśnie hasło znaleźliśmy jako ujawnione w wyniku naruszenia bezpieczeństwa danych. Menedżer haseł zaleca, aby jak najszybciej je zmienić.</translation>
@@ -1030,6 +1032,7 @@
 <translation id="3678342917559046352">Nieprawidłowe rozszerzenie: ta wartość powinna mieć 1 z tych formatów: &lt;extension_id&gt; lub &lt;extension_id&gt;;&lt;update_url&gt;.</translation>
 <translation id="3678529606614285348">Otwórz stronę w nowym oknie incognito (Ctrl+Shift+N)</translation>
 <translation id="3681007416295224113">Informacje o certyfikacie</translation>
+<translation id="3699374065820972102">Funkcja TouchID jest włączona w celu wypełniania haseł</translation>
 <translation id="3701427423622901115">Zresetowanie zostało potwierdzone.</translation>
 <translation id="3704162925118123524">Sieć, której używasz, może wymagać otwarcia strony logowania.</translation>
 <translation id="3705189812819839667"><ph name="RESULT_OWNER" /> – <ph name="RESULT_PRODUCT_SOURCE" /></translation>
@@ -1489,6 +1492,7 @@
 <translation id="4900217275619098670">Rolka 9</translation>
 <translation id="4901778704868714008">Zapisz...</translation>
 <translation id="4905659621780993806">Administrator automatycznie uruchomi Twoje urządzenie ponownie <ph name="DATE" /> o <ph name="TIME" />. Zanim to się stanie, zapisz wszystkie otwarte elementy.</translation>
+<translation id="4911007278801291296">Jeśli chcesz włączyć lub wyłączyć TouchID, otwórz <ph name="SETTINGS" /></translation>
 <translation id="4913987521957242411">Otwór w lewym górnym rogu</translation>
 <translation id="4918221908152712722">Zainstaluj aplikację <ph name="APP_NAME" /> (nie wymaga pobrania)</translation>
 <translation id="4923459931733593730">Płatność</translation>
@@ -1681,6 +1685,7 @@
 <translation id="5357848622083956825">Sztuki wizualne i projektowanie</translation>
 <translation id="536296301121032821">Zapisanie ustawień zasady nie powiodło się</translation>
 <translation id="5363309033720083897">Port szeregowy, na który zezwala administrator</translation>
+<translation id="5363713372507812442">Serie czynności w wyszukiwarce</translation>
 <translation id="5371425731340848620">Zaktualizuj dane karty</translation>
 <translation id="5377026284221673050">„Twój zegar się spóźnia” lub „Twój zegar się śpieszy” lub „&lt;span class="error-code"&gt;NET::ERR_CERT_DATE_INVALID&lt;/span&gt;”</translation>
 <translation id="5379027395132364855">Przycisk Utwórz prezentację; naciśnij Enter, aby szybko utworzyć nową prezentację w Prezentacjach Google</translation>
diff --git a/components/strings/components_strings_pt-BR.xtb b/components/strings/components_strings_pt-BR.xtb
index 1fca32e..30360be 100644
--- a/components/strings/components_strings_pt-BR.xtb
+++ b/components/strings/components_strings_pt-BR.xtb
@@ -307,6 +307,7 @@
 <translation id="168841957122794586">O certificado do servidor contém uma chave de criptografia fraca.</translation>
 <translation id="1697532407822776718">Pronto.</translation>
 <translation id="1699570257714336246">Faltam algumas informações</translation>
+<translation id="1702815194757674443">ROC 16K</translation>
 <translation id="1703835215927279855">Carta</translation>
 <translation id="1706625117072057435">Níveis de zoom</translation>
 <translation id="1706954506755087368">{1,plural, =1{Este servidor não conseguiu provar que é <ph name="DOMAIN" />. O certificado de segurança dele está com a data de amanhã. Isso pode ser causado por uma configuração incorreta ou pela interceptação da sua conexão por um invasor.}one{Este servidor não conseguiu provar que é <ph name="DOMAIN" />. O certificado de segurança dele está com uma data de # dias depois de hoje. Isso pode ser causado por uma configuração incorreta ou pela interceptação da sua conexão por um invasor.}other{Este servidor não conseguiu provar que é <ph name="DOMAIN" />. O certificado de segurança dele está com uma data de # dias depois de hoje. Isso pode ser causado por uma configuração incorreta ou pela interceptação da sua conexão por um invasor.}}</translation>
@@ -550,6 +551,7 @@
 <translation id="2359347814217202136">{NUM_DAYS,plural, =0{Em menos de um dia}=1{Em um dia}one{Em {NUM_DAYS} dia}other{Em {NUM_DAYS} dias}}</translation>
 <translation id="2359629602545592467">Várias</translation>
 <translation id="2359808026110333948">Continuar</translation>
+<translation id="2361263712565360498">275 x 395 mm</translation>
 <translation id="236340516568226369">Menu de redimensionamento</translation>
 <translation id="2367567093518048410">Nível</translation>
 <translation id="2380886658946992094">Legal</translation>
@@ -1425,6 +1427,7 @@
 <translation id="4751476147751820511">Sensores de luz ou movimento</translation>
 <translation id="4754461935447132332">Sem permissão em sites não seguros</translation>
 <translation id="4756388243121344051">&amp;Histórico</translation>
+<translation id="4756501505996488486">PRC 16K</translation>
 <translation id="4757993714154412917">Você acabou de digitar sua senha em um site suspeito. Para proteger suas contas, o Chromium recomenda conferir as senhas salvas.</translation>
 <translation id="4758311279753947758">Adicionar dados de contato</translation>
 <translation id="4761104368405085019">Usar microfone</translation>
@@ -2163,6 +2166,7 @@
 <translation id="6738516213925468394">Seus dados foram criptografados com sua <ph name="BEGIN_LINK" />senha longa de sincronização<ph name="END_LINK" /> em <ph name="TIME" />. Digite-a para iniciar a sincronização.</translation>
 <translation id="674375294223700098">Erro, certificado de servidor desconhecido.</translation>
 <translation id="6744009308914054259">Enquanto espera por uma conexão, acesse "Downloads" para ler artigos off-line.</translation>
+<translation id="6751487147225428522">ROC 8K</translation>
 <translation id="6752086006821653994">Teleconferência</translation>
 <translation id="6753269504797312559">Valor da política</translation>
 <translation id="6755241357817244406">chrome://flags</translation>
@@ -2196,6 +2200,7 @@
 <translation id="6846340164947227603">Usar um número de cartão virtual…</translation>
 <translation id="6852204201400771460">Recarregar app?</translation>
 <translation id="6857776781123259569">Gerenciar senhas…</translation>
+<translation id="6864189428899665393">267 x 389 mm</translation>
 <translation id="686485648936420384">Recursos para o consumidor</translation>
 <translation id="6865412394715372076">Não é possível verificar este cartão no momento</translation>
 <translation id="6869334554832814367">Empréstimos pessoais</translation>
@@ -2308,6 +2313,7 @@
 <translation id="7138472120740807366">Método de entrega</translation>
 <translation id="7139892792842608322">Bandeja principal</translation>
 <translation id="714064300541049402">Mudança X no lado 2 da imagem</translation>
+<translation id="7143682719845053166">PRC 32K</translation>
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> e mais <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}one{<ph name="PAYMENT_METHOD_PREVIEW" /> e mais <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}other{<ph name="PAYMENT_METHOD_PREVIEW" /> e mais <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}}</translation>
 <translation id="7153618581592392745">Lavanda</translation>
 <translation id="7156870133441232244">É necessário fazer o upgrade do servidor para o TLS 1.2 ou mais recente.</translation>
@@ -2388,6 +2394,7 @@
 <translation id="7363096869660964304">No entanto, você não fica invisível. Entrar no modo de navegação anônima não oculta a navegação do seu empregador, do provedor de acesso à Internet ou dos sites acessados.</translation>
 <translation id="7365596969960773405"><ph name="MANAGE_ADDRESSES_FOCUSED_FRIENDLY_MATCH_TEXT" />. Pressione "Tab" e "Enter" para adicionar e gerenciar endereços nas configurações do Chrome</translation>
 <translation id="7365849542400970216">Saber quando o dispositivo está sendo usado?</translation>
+<translation id="7366117520888504990">198 x 275 mm</translation>
 <translation id="7366362069757178916">Gerenciadores de pagamento</translation>
 <translation id="7372973238305370288">resultado da pesquisa</translation>
 <translation id="7374461526650987610">Manipuladores de protocolo</translation>
@@ -2547,6 +2554,7 @@
 <translation id="7687186412095877299">Preencher formulários com suas formas de pagamento salvas</translation>
 <translation id="7687305263118037187">Novas tentativas esgotadas</translation>
 <translation id="7687451951329798396">O que outras fontes dizem?</translation>
+<translation id="7690647519407127574">Cartão postal Oufuku Hagaki</translation>
 <translation id="7693583928066320343">Ordem de páginas recebida</translation>
 <translation id="7696089921647603491">Rock clássico e antigo</translation>
 <translation id="769721561045429135">No momento, você tem cartões que só podem ser usados neste dispositivo. Clique em "Continuar" para analisá-los.</translation>
@@ -2720,6 +2728,7 @@
 <translation id="8202370299023114387">Conflito</translation>
 <translation id="8210604850413485128">Hospedagem na Web</translation>
 <translation id="8211406090763984747">A conexão é segura</translation>
+<translation id="8213853114485953510">JIS Exec</translation>
 <translation id="8217240300496046857">Os sites não podem usar cookies que rastreiem você pela Web. Os recursos de alguns sites podem falhar.</translation>
 <translation id="8217748145574471584">Recursos humanos</translation>
 <translation id="8218327578424803826">Local designado:</translation>
@@ -2933,6 +2942,7 @@
 <translation id="8816395686387277279"><ph name="UPDATE_CHROME_FOCUSED_FRIENDLY_MATCH_TEXT" />. Pressione "Tab" e depois "Enter" para atualizar o Chrome pelas configurações dele</translation>
 <translation id="8820817407110198400">Favoritos</translation>
 <translation id="882338992931677877">Entrada manual</translation>
+<translation id="8830320733681313421">Cartão postal Hagaki</translation>
 <translation id="8834380158646307944">Botão "Fechar janelas anônimas". Pressione Enter para fechar todas as janelas anônimas abertas</translation>
 <translation id="883848425547221593">Outros favoritos</translation>
 <translation id="884264119367021077">Endereço de entrega</translation>
diff --git a/components/strings/components_strings_pt-PT.xtb b/components/strings/components_strings_pt-PT.xtb
index 7549fb3..28d528d8 100644
--- a/components/strings/components_strings_pt-PT.xtb
+++ b/components/strings/components_strings_pt-PT.xtb
@@ -396,6 +396,7 @@
 <translation id="192020519938775529">{COUNT,plural, =0{Nenhum}=1{1 site}other{# sites}}</translation>
 <translation id="1924727005275031552">Novo</translation>
 <translation id="1927439593081478069">Botão Executar verificação de segurança do Chrome, prima Enter para executar a verificação de segurança nas definições do Chrome</translation>
+<translation id="1935995810530254458">Copiar mesmo assim</translation>
 <translation id="1939175642807587452">Pode solicitar o envio de notificações</translation>
 <translation id="1943994668912612445">Design</translation>
 <translation id="1945968466830820669">Pode perder o acesso à conta da sua entidade ou ser vítima de roubo de identidade. O Chromium recomenda a alteração da palavra-passe agora.</translation>
@@ -449,6 +450,7 @@
 <translation id="2085876078937250610">Guardar…</translation>
 <translation id="2088086323192747268">Botão Gerir sincronização. Prima Enter para gerir as informações que sincroniza nas Definições do Chrome.</translation>
 <translation id="2091887806945687916">Som</translation>
+<translation id="2093982008204312032">O Google Chrome está a tentar desativar o Windows Hello para preencher palavras-passe.</translation>
 <translation id="2094505752054353250">Falta de correspondência de domínio</translation>
 <translation id="2099652385553570808">Agrafo triplo à esquerda</translation>
 <translation id="2101225219012730419">Versão:</translation>
@@ -712,6 +714,7 @@
 <translation id="2799223571221894425">Reiniciar</translation>
 <translation id="2803306138276472711">A Navegação Segura do Google <ph name="BEGIN_LINK" />detetou software malicioso<ph name="END_LINK" /> recentemente em <ph name="SITE" />. Os Sites que normalmente são seguros por vezes são infetados com software malicioso.</translation>
 <translation id="2807052079800581569">Posição Y da imagem</translation>
+<translation id="2808278141522721006">Pode ativar ou desativar o Windows Hello em <ph name="SETTINGS" /></translation>
 <translation id="2820957248982571256">A analisar...</translation>
 <translation id="2824775600643448204">Barra de pesquisa e endereço</translation>
 <translation id="2826760142808435982">A ligação é encriptada e autenticada com <ph name="CIPHER" /> e utiliza <ph name="KX" /> como mecanismo de troca de chaves.</translation>
@@ -882,6 +885,7 @@
 <translation id="3288238092761586174"><ph name="URL" /> pode ter de efetuar passos adicionais para validar o seu pagamento</translation>
 <translation id="3293642807462928945">Saiba mais acerca da política <ph name="POLICY_NAME" /></translation>
 <translation id="3295444047715739395">Veja e efetue a gestão das suas palavras-passe nas definições do Chrome.</translation>
+<translation id="3299098170013242198">O Windows Hello está ativado para preencher palavras-passe</translation>
 <translation id="3303855915957856445">Não foram encontrados resultados da pesquisa</translation>
 <translation id="3304073249511302126">procura de bluetooth</translation>
 <translation id="33073482541490531">A palavra-passe que acabou de usar foi encontrada numa violação de dados. O Gestor de Palavras-passe recomenda que altere esta palavra-passe agora.</translation>
@@ -1030,6 +1034,7 @@
 <translation id="3678342917559046352">Extensão inválida: esperava-se que o valor tivesse um dos seguintes formatos: &lt;extension_id&gt; ou &lt;extension_id&gt;;&lt;update_url&gt;.</translation>
 <translation id="3678529606614285348">Abrir a página numa nova janela de navegação anónima (Ctrl-Shift-N)</translation>
 <translation id="3681007416295224113">Informações do certificado</translation>
+<translation id="3699374065820972102">O TouchID está ativado para preencher palavras-passe</translation>
 <translation id="3701427423622901115">Reposição confirmada.</translation>
 <translation id="3704162925118123524">A rede que está a utilizar pode exigir que visite a respetivapágina de início de sessão.</translation>
 <translation id="3705189812819839667"><ph name="RESULT_OWNER" /> – <ph name="RESULT_PRODUCT_SOURCE" /></translation>
@@ -1143,6 +1148,7 @@
 <translation id="4014128326099193693">{COUNT,plural, =1{Documento PDF com {COUNT} página}other{Documento PDF com {COUNT} páginas}}</translation>
 <translation id="4022639246993848966">3,5 x 5</translation>
 <translation id="4023431997072828269">Uma vez que este formulário está a ser enviado através de uma ligação insegura, as suas informações vão ficar visíveis para outras pessoas.</translation>
+<translation id="4024923292610332139">desativar o Touch ID para preencher palavras-passe</translation>
 <translation id="4025913568718019429">Botão Gerir definições de privacidade do Google, prima Enter para visitar as definições de privacidade da sua Conta Google</translation>
 <translation id="4030383055268325496">&amp;Anular adição</translation>
 <translation id="4031179711345676612">Microfone permitido</translation>
@@ -1259,6 +1265,7 @@
 <translation id="42981349822642051">Expandir</translation>
 <translation id="4300675098767811073">Perfuração múltipla à direita</translation>
 <translation id="4302514097724775343">Toque no dinossauro para jogar.</translation>
+<translation id="4304049446746819918">{0,plural, =1{A política do administrador não recomenda mover este ficheiro para <ph name="DESTINATION_NAME" />}other{A política do administrador não recomenda mover estes ficheiros para <ph name="DESTINATION_NAME" />}}</translation>
 <translation id="4305666528087210886">Não foi possível aceder ao seu ficheiro</translation>
 <translation id="4306529830550717874">Pretende guardar o endereço?</translation>
 <translation id="4306812610847412719">área de transferência</translation>
@@ -1489,6 +1496,7 @@
 <translation id="4900217275619098670">Nono rolo</translation>
 <translation id="4901778704868714008">Guardar…</translation>
 <translation id="4905659621780993806">O seu administrador vai reiniciar o dispositivo à(s) <ph name="TIME" /> de <ph name="DATE" />. Guarde os itens abertos antes de o dispositivo ser reiniciado.</translation>
+<translation id="4911007278801291296">Pode ativar ou desativar o TouchID em <ph name="SETTINGS" /></translation>
 <translation id="4913987521957242411">Perfurar na parte superior esquerda</translation>
 <translation id="4918221908152712722">Instale a aplicação <ph name="APP_NAME" /> (não é necessária qualquer transferência).</translation>
 <translation id="4923459931733593730">Pagamento</translation>
@@ -1634,6 +1642,7 @@
 <translation id="5254043433801397071">Otimizar conteúdo para impressão</translation>
 <translation id="5254958791078852567">E1</translation>
 <translation id="5255690596502591079">Capturar mesmo assim</translation>
+<translation id="5257739419779698609">{0,plural, =1{A política do administrador não recomenda copiar este ficheiro para <ph name="DESTINATION_NAME" />}other{A política do administrador não recomenda copiar estes ficheiros para <ph name="DESTINATION_NAME" />}}</translation>
 <translation id="5266128565379329178">Encadernar parte superior</translation>
 <translation id="5269225904387178860">Perfuração quádrupla na parte inferior</translation>
 <translation id="5269999699920406580">As funcionalidades que se aplicam a todo o sistema apenas podem ser definidas pelo proprietário: <ph name="OWNER_EMAIL" /></translation>
@@ -1681,6 +1690,7 @@
 <translation id="5357848622083956825">Arte visual e design</translation>
 <translation id="536296301121032821">Falha ao armazenar as definições da política</translation>
 <translation id="5363309033720083897">Porta de série permitida pelo seu administrador</translation>
+<translation id="5363713372507812442">Pesquise percursos</translation>
 <translation id="5371425731340848620">Atualizar cartão</translation>
 <translation id="5377026284221673050">"O seu relógio está atrasado" ou "O seu relógio está adiantado" ou "&lt;span class="error-code"&gt;NET::ERR_CERT_DATE_INVALID&lt;/span&gt;"</translation>
 <translation id="5379027395132364855">Botão Criar apresentação, prima Enter para criar rapidamente uma nova apresentação Google no Slides</translation>
@@ -1696,6 +1706,7 @@
 <translation id="5412236728747081950">Este site obtém os seus interesses do Chrome para lhe mostrar anúncios mais relevantes</translation>
 <translation id="5412245327974352290"><ph name="TRADITIONAL_TEXT" /> – <ph name="ADDITIONAL_TEXT" /></translation>
 <translation id="541416427766103491">Empilhador 4</translation>
+<translation id="5414511064953050917">Mover mesmo assim</translation>
 <translation id="5421136146218899937">Limpar dados de navegação...</translation>
 <translation id="5425241977284572032">{NUM_COOKIES,plural, =0{Nenhum site bloqueado}=1{1 site bloqueado}other{# sites bloqueados}}</translation>
 <translation id="5426179911063097041"><ph name="SITE" /> pretende enviar-lhe notificações.</translation>
@@ -2317,6 +2328,7 @@
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> e mais <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}other{<ph name="PAYMENT_METHOD_PREVIEW" /> e mais <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}}</translation>
 <translation id="7153618581592392745">Lilás</translation>
 <translation id="7156870133441232244">É necessário atualizar o servidor para a versão TLS 1.2 ou posterior.</translation>
+<translation id="7163295244162773898">{0,plural, =1{Copiar o ficheiro confidencial?}other{Copiar os ficheiros confidenciais?}}</translation>
 <translation id="717330890047184534">ID Gaia:</translation>
 <translation id="7174545416324379297">Unida</translation>
 <translation id="7175401108899573750">{SHIPPING_OPTIONS,plural, =0{<ph name="SHIPPING_OPTION_PREVIEW" />}=1{<ph name="SHIPPING_OPTION_PREVIEW" /> e mais <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" />}other{<ph name="SHIPPING_OPTION_PREVIEW" /> e mais <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" />}}</translation>
@@ -2925,6 +2937,7 @@
 <translation id="8763986294015493060">Feche todas as janelas de navegação anónima atualmente abertas</translation>
 <translation id="8766943070169463815">A página de autenticação das credenciais de pagamento seguro está aberta</translation>
 <translation id="8767765348545497220">Fechar balão de ajuda</translation>
+<translation id="877348612833018844">{0,plural, =1{Mover o ficheiro confidencial?}other{Mover os ficheiros confidenciais?}}</translation>
 <translation id="877985182522063539">A4</translation>
 <translation id="8785658048882205566">Motos</translation>
 <translation id="8790007591277257123">&amp;Refazer eliminação</translation>
diff --git a/components/strings/components_strings_ru.xtb b/components/strings/components_strings_ru.xtb
index e65b117..60bc09d 100644
--- a/components/strings/components_strings_ru.xtb
+++ b/components/strings/components_strings_ru.xtb
@@ -307,6 +307,7 @@
 <translation id="168841957122794586">Сертификат сервера содержит ненадежный криптографический ключ.</translation>
 <translation id="1697532407822776718">Готово!</translation>
 <translation id="1699570257714336246">Данные отсутствуют</translation>
+<translation id="1702815194757674443">ROC 16K</translation>
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706625117072057435">Масштабирование</translation>
 <translation id="1706954506755087368">{1,plural, =1{Не удалось подтвердить, что это сервер <ph name="DOMAIN" />. Его сертификат безопасности вступит в силу завтра. Возможно, сервер настроен неправильно или кто-то пытается перехватить ваши данные.}one{Не удалось подтвердить, что это сервер <ph name="DOMAIN" />. Его сертификат безопасности вступит в силу через # день. Возможно, сервер настроен неправильно или кто-то пытается перехватить ваши данные.}few{Не удалось подтвердить, что это сервер <ph name="DOMAIN" />. Его сертификат безопасности вступит в силу через # дня. Возможно, сервер настроен неправильно или кто-то пытается перехватить ваши данные.}many{Не удалось подтвердить, что это сервер <ph name="DOMAIN" />. Его сертификат безопасности вступит в силу через # дней. Возможно, сервер настроен неправильно или кто-то пытается перехватить ваши данные.}other{Не удалось подтвердить, что это сервер <ph name="DOMAIN" />. Его сертификат безопасности вступит в силу через # дня. Возможно, сервер настроен неправильно или кто-то пытается перехватить ваши данные.}}</translation>
@@ -550,6 +551,7 @@
 <translation id="2359347814217202136">{NUM_DAYS,plural, =0{Меньше чем через 1 день}=1{Через 1 день}one{Через {NUM_DAYS} день}few{Через {NUM_DAYS} дня}many{Через {NUM_DAYS} дней}other{Через {NUM_DAYS} дня}}</translation>
 <translation id="2359629602545592467">Несколько</translation>
 <translation id="2359808026110333948">Продолжить</translation>
+<translation id="2361263712565360498">275 x 395 мм</translation>
 <translation id="236340516568226369">Меню изменения размера</translation>
 <translation id="2367567093518048410">Уровень</translation>
 <translation id="2380886658946992094">Legal</translation>
@@ -1424,6 +1426,7 @@
 <translation id="4751476147751820511">Датчики движения и освещенности</translation>
 <translation id="4754461935447132332">Запрещено для незащищенных сайтов</translation>
 <translation id="4756388243121344051">&amp;История</translation>
+<translation id="4756501505996488486">PRC 16K</translation>
 <translation id="4757993714154412917">Вы только что ввели пароль на поддельном сайте. Чтобы защитить свои аккаунты, проверьте сохраненные пароли в браузере Chromium.</translation>
 <translation id="4758311279753947758">Добавить контактные данные</translation>
 <translation id="4761104368405085019">Использование микрофона</translation>
@@ -2162,6 +2165,7 @@
 <translation id="6738516213925468394">Данные были зашифрованы <ph name="TIME" /> с помощью <ph name="BEGIN_LINK" />кодовой фразы<ph name="END_LINK" />. Введите ее, чтобы начать синхронизацию.</translation>
 <translation id="674375294223700098">Неизвестная ошибка сертификата сервера.</translation>
 <translation id="6744009308914054259">В ожидании подключения вы можете открыть скачанные файлы и почитать статьи офлайн.</translation>
+<translation id="6751487147225428522">ROC 8K</translation>
 <translation id="6752086006821653994">Телеконференцсвязь</translation>
 <translation id="6753269504797312559">Значение правила</translation>
 <translation id="6755241357817244406">chrome://flags</translation>
@@ -2195,6 +2199,7 @@
 <translation id="6846340164947227603">Использовать номер виртуальной карты</translation>
 <translation id="6852204201400771460">Перезапустить приложение?</translation>
 <translation id="6857776781123259569">Настроить пароли</translation>
+<translation id="6864189428899665393">267 x 389 мм</translation>
 <translation id="686485648936420384">Ресурсы для потребителей</translation>
 <translation id="6865412394715372076">Невозможно подтвердить карту.</translation>
 <translation id="6869334554832814367">Потребительские кредиты</translation>
@@ -2307,6 +2312,7 @@
 <translation id="7138472120740807366">Способ доставки</translation>
 <translation id="7139892792842608322">Основной лоток</translation>
 <translation id="714064300541049402">Смещение изображений на оборотной стороне по оси X</translation>
+<translation id="7143682719845053166">PRC 32K</translation>
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> и ещё <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> способ оплаты}one{<ph name="PAYMENT_METHOD_PREVIEW" /> и ещё <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> способ оплаты}few{<ph name="PAYMENT_METHOD_PREVIEW" /> и ещё <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> способа оплаты}many{<ph name="PAYMENT_METHOD_PREVIEW" /> и ещё <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> способов оплаты}other{<ph name="PAYMENT_METHOD_PREVIEW" /> и ещё <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> способа оплаты}}</translation>
 <translation id="7153618581592392745">Бледно-лиловый</translation>
 <translation id="7156870133441232244">На сервере нужно обновить протокол TLS до версии 1.2 или более поздней.</translation>
@@ -2387,6 +2393,7 @@
 <translation id="7363096869660964304">Тем не менее ваши действия будут видны работодателю и интернет-провайдеру, а также доступны веб-сайтам, которые вы посещаете.</translation>
 <translation id="7365596969960773405"><ph name="MANAGE_ADDRESSES_FOCUSED_FRIENDLY_MATCH_TEXT" />. Нажмите Tab, а затем – Ввод, чтобы добавить и изменить адреса в настройках Chrome.</translation>
 <translation id="7365849542400970216">Предоставить информацию об использовании устройства?</translation>
+<translation id="7366117520888504990">198 x 275 мм</translation>
 <translation id="7366362069757178916">Обработчики платежей</translation>
 <translation id="7372973238305370288">результат поиска</translation>
 <translation id="7374461526650987610">Обработчики протоколов</translation>
@@ -2546,6 +2553,7 @@
 <translation id="7687186412095877299">Сохранять и автоматически заполнять платежные данные</translation>
 <translation id="7687305263118037187">Время ожидания повтора</translation>
 <translation id="7687451951329798396">Что говорится в других источниках?</translation>
+<translation id="7690647519407127574">Oufuku Hagaki (открытка)</translation>
 <translation id="7693583928066320343">Порядок страниц получен</translation>
 <translation id="7696089921647603491">Классический рок и старые популярные песни</translation>
 <translation id="769721561045429135">Сейчас ваши карты можно использовать только на этом устройстве. Чтобы посмотреть информацию о них, нажмите "Продолжить".</translation>
@@ -2719,6 +2727,7 @@
 <translation id="8202370299023114387">Конфликт</translation>
 <translation id="8210604850413485128">Веб-хостинг</translation>
 <translation id="8211406090763984747">Безопасное подключение</translation>
+<translation id="8213853114485953510">JIS Exec</translation>
 <translation id="8217240300496046857">Сайтам запрещается использовать файлы cookie, которые отслеживают ваши действия в интернете. Из-за этого некоторые функции сайтов могут работать некорректно.</translation>
 <translation id="8217748145574471584">Управление персоналом</translation>
 <translation id="8218327578424803826">Назначенное местоположение:</translation>
@@ -2931,6 +2940,7 @@
 <translation id="8816395686387277279"><ph name="UPDATE_CHROME_FOCUSED_FRIENDLY_MATCH_TEXT" />. Нажмите Tab и затем Ввод, чтобы обновить Chrome.</translation>
 <translation id="8820817407110198400">Закладки</translation>
 <translation id="882338992931677877">Слот для ручной подачи</translation>
+<translation id="8830320733681313421">Hagaki (открытка)</translation>
 <translation id="8834380158646307944">Кнопка "Закрыть окна в режиме инкогнито". Нажмите Ввод, чтобы закрыть все окна, открытые в режиме инкогнито.</translation>
 <translation id="883848425547221593">Другие закладки</translation>
 <translation id="884264119367021077">Адрес доставки</translation>
diff --git a/components/strings/components_strings_si.xtb b/components/strings/components_strings_si.xtb
index 6589bc37..ce0e81e 100644
--- a/components/strings/components_strings_si.xtb
+++ b/components/strings/components_strings_si.xtb
@@ -307,6 +307,7 @@
 <translation id="168841957122794586">සේවාදායක සහතිකයේ දුර්වල ගුප්තලේඛන යතුරක් අඩංගුය!</translation>
 <translation id="1697532407822776718">ඔබ මුළුමනින් සුදානම්ය!</translation>
 <translation id="1699570257714336246">තොරතුරු මඟ හැරී ඇත</translation>
+<translation id="1702815194757674443">ROC 16K</translation>
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706625117072057435">විශාලන මට්ටම්</translation>
 <translation id="1706954506755087368">{1,plural, =1{මෙම සේවාදායකයට එය <ph name="DOMAIN" /> බව සනාථ කළ නොහැකි විය; එහි ආරක්ෂණ සහතිකය හෙට සිට විය හැකිය. මෙය වැරදි වින්‍යාස කිරීමක් හෝ ප්‍රහාරකයකු ඔබගේ සබැඳුමට බාධා කිරීමක් නිසා විය හැකිය.}one{මෙම සේවාදායකයට එය <ph name="DOMAIN" /> බව සනාථ කළ නොහැකි විය; එහි ආරක්ෂණ සහතිකය අනාගතයේදී දින #ක් සිට විය හැකිය. මෙය වැරදි වින්‍යාස කිරීමක් හෝ ප්‍රහාරකයකු ඔබගේ සබැඳුමට බාධා කිරීමක් නිසා විය හැකිය.}other{මෙම සේවාදායකයට එය <ph name="DOMAIN" />බව සනාථ කළ නොහැකි විය; එහි ආරක්ෂණ සහතිකය අනාගතයේදී දින #ක් සිට විය හැකිය. මෙය වැරදි වින්‍යාස කිරීමක් හෝ ප්‍රහාරකයකු ඔබගේ සබැඳුමට බාධා කිරීමක් නිසා විය හැකිය.}}</translation>
@@ -550,6 +551,7 @@
 <translation id="2359347814217202136">{NUM_DAYS,plural, =0{දිනකට වඩා අඩු කාලයකින්}=1{දිනකින්}one{දින {NUM_DAYS}කින්}other{දින {NUM_DAYS}කින්}}</translation>
 <translation id="2359629602545592467">බහුවිධ</translation>
 <translation id="2359808026110333948">කරගෙන යන්න</translation>
+<translation id="2361263712565360498">මිමි 275 x 395</translation>
 <translation id="236340516568226369">ටොගල මෙනුව ප්‍රතිප්‍රමාණ කරන්න</translation>
 <translation id="2367567093518048410">මට්ටම</translation>
 <translation id="2380886658946992094">Legal</translation>
@@ -1425,6 +1427,7 @@
 <translation id="4751476147751820511">චලිත හෝ ආලෝක සංවේදක</translation>
 <translation id="4754461935447132332">ආරක්ෂිත-නොවන අඩවි සඳහා ඉඩ නොදේ</translation>
 <translation id="4756388243121344051">&amp;ඉතිහාසය</translation>
+<translation id="4756501505996488486">PRC 16K</translation>
 <translation id="4757993714154412917">ඔබ මේ දැන් වංචනික අඩවියකට ඔබගේ මුරපදය ඇතුළු කළේය. ඔබගේ ගිණුම් සුරක්ෂිත කිරීමට, ඔබගේ සුරැකි මුරපද පරීක්ෂා කිරීමට Chromium නිර්දේශ කරයි.</translation>
 <translation id="4758311279753947758">සම්බන්ධතා තතු එක් කරන්න</translation>
 <translation id="4761104368405085019">මයික්‍රොෙෆෝනය භාවිතා කරන්න</translation>
@@ -2163,6 +2166,7 @@
 <translation id="6738516213925468394">ඔබේ දත්ත <ph name="TIME" /> වූ විට ඔබේ <ph name="BEGIN_LINK" />මුර වැකිකඩ<ph name="END_LINK" /> සංකේතන කරනු ලැබුවේය. සමමුහූර්තය ආරම්භ කිරීමට එය ඇතුළත් කරන්න.</translation>
 <translation id="674375294223700098">නොදන්නා සේවාදායක සහතික දෝෂය.</translation>
 <translation id="6744009308914054259">සම්බන්ධතාවයක් සඳහා රැඳී සිටින විට, ඔබට නොබැඳි ලිපි කියවීමට බාගැනීම් වෙත යාමට හැකිය.</translation>
+<translation id="6751487147225428522">ROC 8K</translation>
 <translation id="6752086006821653994">ටෙලිසම්මන්ත්‍රණ</translation>
 <translation id="6753269504797312559">ප්‍රතිපත්ති අගය</translation>
 <translation id="6755241357817244406">chrome://flags</translation>
@@ -2196,6 +2200,7 @@
 <translation id="6846340164947227603">අතත්‍ය කාඩ්පත් අංකයක් භාවිත කරන්න...</translation>
 <translation id="6852204201400771460">යෙදුම නැවත පූරණය කරන්න ද?</translation>
 <translation id="6857776781123259569">මුරපද කළමනාකරණය කරන්න...</translation>
+<translation id="6864189428899665393">මිමි 267 x 389</translation>
 <translation id="686485648936420384">පාරිභෝගික සම්පත්</translation>
 <translation id="6865412394715372076">මෙම කාඩ්පත දැන් තහවුරු කළ නොහැකිය</translation>
 <translation id="6869334554832814367">පුද්ගලික ණය</translation>
@@ -2308,6 +2313,7 @@
 <translation id="7138472120740807366">බෙදා හැරීමේ ක්‍රමය</translation>
 <translation id="7139892792842608322">Primary Tray</translation>
 <translation id="714064300541049402">පැත්ත 2 රූප X වැඩ මුරය</translation>
+<translation id="7143682719845053166">PRC 32K</translation>
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> සහ තව <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}one{<ph name="PAYMENT_METHOD_PREVIEW" /> සහ තව <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}other{<ph name="PAYMENT_METHOD_PREVIEW" /> සහ තව <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}}</translation>
 <translation id="7153618581592392745">ලැවැන්ඩර්</translation>
 <translation id="7156870133441232244">සේවාදායකය TLS 1.2 හෝ පසු අනුවාදයට උත්ශ්‍රේණි කළ යුතුය.</translation>
@@ -2388,6 +2394,7 @@
 <translation id="7363096869660964304">කෙසේ වුවත්, ඔබ අදෘශ්‍යමාන නොවේ. අප්‍රකට වීම ඔබගේ බ්‍රවුස් කිරීම ඔබගේ සේවායෝජක, ඔබගේ අන්තර්ජාල සේවා සැපයුම්කරු හෝ ඔබ පිවිසි වෙබ් අඩවි වෙතින් නොසඟවයි.</translation>
 <translation id="7365596969960773405"><ph name="MANAGE_ADDRESSES_FOCUSED_FRIENDLY_MATCH_TEXT" />, Chrome සැකසීම් තුළ ලිපින එක් කිරීමට සහ කළමනාකරණය කිරීමට Tab ඔබා අනතුරුව Enter ඔබන්න</translation>
 <translation id="7365849542400970216">ඔබගේ උපාංග භාවිතය දන්නේද?</translation>
+<translation id="7366117520888504990">මිමි 198 x 275</translation>
 <translation id="7366362069757178916">ගෙවීම් හසුරු</translation>
 <translation id="7372973238305370288">සෙවුම් ප්‍රථිපල</translation>
 <translation id="7374461526650987610">නාමාවලි හසුරුවන</translation>
@@ -2547,6 +2554,7 @@
 <translation id="7687186412095877299">ඔබේ සුරැකි ගෙවීමේ ක්‍රම සමඟ ගෙවීමේ පෝරම තුළ පුරවනු ලැබේ</translation>
 <translation id="7687305263118037187">යළි උත්සාහ කිරීමේ කාලය අවසන්</translation>
 <translation id="7687451951329798396">වෙනත් මූලාශ්‍ර පවසන්නේ කුමක්ද?</translation>
+<translation id="7690647519407127574">Oufuku Hagaki තැපැල්පත</translation>
 <translation id="7693583928066320343">පිටු පිළිවෙළ ලැබුණා</translation>
 <translation id="7696089921647603491">සම්භාව්‍ය රොක් සහ පැරණි ගී</translation>
 <translation id="769721561045429135">මේ දැන්, ඔබට මෙම උපාංගය මත පමණක් භාවිත කළ හැකි කාඩ්පත් තිබේ. කාඩ්පත් සමාලෝචන කිරීමට ඉදිරියට යන්න ක්ලික් කරන්න.</translation>
@@ -2720,6 +2728,7 @@
 <translation id="8202370299023114387">ගැටුම</translation>
 <translation id="8210604850413485128">වෙබ් හොස්ටින්</translation>
 <translation id="8211406090763984747">සම්බන්ධතාවය ආරක්ෂිත වේ</translation>
+<translation id="8213853114485953510">JIS Exec</translation>
 <translation id="8217240300496046857">අඩවිවලට වෙබය හරහා ඔබව හඹා යන කුකි භාවිත කළ නොහැකිය. සමහර අඩවිවල විශේෂාංග බිඳිය හැකිය.</translation>
 <translation id="8217748145574471584">මානව සම්පත්</translation>
 <translation id="8218327578424803826">පැවරූ ස්ථානය:</translation>
@@ -2932,6 +2941,7 @@
 <translation id="8816395686387277279"><ph name="UPDATE_CHROME_FOCUSED_FRIENDLY_MATCH_TEXT" />, ඔබගේ Chrome සැකසීම් වෙතින් Chrome යාවත්කාලීන කිරීමට Tab ඔබා අනතුරුව Enter ඔබන්න</translation>
 <translation id="8820817407110198400">පිටුසන්</translation>
 <translation id="882338992931677877">Manual Slot</translation>
+<translation id="8830320733681313421">Hagaki තැපැල් පත</translation>
 <translation id="8834380158646307944">අප්‍රකට කවුළු වසන්න බොත්තම, දැනට විවෘතව ඇති සියලු අප්‍රකට කවුළු වැසීමට Enter ඔබන්න</translation>
 <translation id="883848425547221593">වෙනත් පිටු සලකුණු</translation>
 <translation id="884264119367021077">නැව්ගත ලිපිනය</translation>
diff --git a/components/strings/components_strings_sk.xtb b/components/strings/components_strings_sk.xtb
index 3e6dae0d..56bad659 100644
--- a/components/strings/components_strings_sk.xtb
+++ b/components/strings/components_strings_sk.xtb
@@ -307,6 +307,7 @@
 <translation id="168841957122794586">Certifikát servera obsahuje slabý kryptografický kľúč.</translation>
 <translation id="1697532407822776718">Všetko je nastavené!</translation>
 <translation id="1699570257714336246">Chýbajú informácie</translation>
+<translation id="1702815194757674443">ROC 16K</translation>
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706625117072057435">Úrovne priblíženia</translation>
 <translation id="1706954506755087368">{1,plural, =1{Tomuto serveru sa nepodarilo dokázať, že ide o doménu <ph name="DOMAIN" />; jej certifikát by mal začať platiť od zajtra. Môže to byť následok nesprávnej konfigurácie alebo napadnutia vášho pripojenia útočníkom.}few{Tomuto serveru sa nepodarilo dokázať, že ide o doménu <ph name="DOMAIN" />; jej certifikát by mal začať platiť o # dni. Môže to byť následok nesprávnej konfigurácie alebo napadnutia vášho pripojenia útočníkom.}many{Tomuto serveru sa nepodarilo dokázať, že ide o doménu <ph name="DOMAIN" />; jej certifikát by mal začať platiť o # dňa. Môže to byť následok nesprávnej konfigurácie alebo napadnutia vášho pripojenia útočníkom.}other{Tomuto serveru sa nepodarilo dokázať, že ide o doménu <ph name="DOMAIN" />; jej certifikát by mal začať platiť o # dní. Môže to byť následok nesprávnej konfigurácie alebo napadnutia vášho pripojenia útočníkom.}}</translation>
@@ -552,6 +553,7 @@
 <translation id="2359347814217202136">{NUM_DAYS,plural, =0{O menej ako deň}=1{O deň}few{O {NUM_DAYS} dni}many{O {NUM_DAYS} dňa}other{O {NUM_DAYS} dní}}</translation>
 <translation id="2359629602545592467">Viaceré</translation>
 <translation id="2359808026110333948">Pokračovať</translation>
+<translation id="2361263712565360498">275 × 395 mm</translation>
 <translation id="236340516568226369">Ponuka prepínača zmeny veľkosti</translation>
 <translation id="2367567093518048410">Úroveň</translation>
 <translation id="2380886658946992094">Legal</translation>
@@ -1425,6 +1427,7 @@
 <translation id="4751476147751820511">Senzory pohybu alebo svetla</translation>
 <translation id="4754461935447132332">Nepovolené pre nezabezpečené weby</translation>
 <translation id="4756388243121344051">&amp;História</translation>
+<translation id="4756501505996488486">PRC 16K</translation>
 <translation id="4757993714154412917">Práve ste zadali svoje heslo na podvodnom webe. Chromium odporúča skontrolovať uložené heslá, aby ste zabezpečili svoje účty.</translation>
 <translation id="4758311279753947758">Pridať kontaktné údaje</translation>
 <translation id="4761104368405085019">Používať váš mikrofón</translation>
@@ -2164,6 +2167,7 @@
 <translation id="6738516213925468394">Vaše údaje boli <ph name="TIME" /> zašifrované pomocou <ph name="BEGIN_LINK" />prístupovej frázy synchronizácie<ph name="END_LINK" />. Synchronizácia sa spustí po jej zadaní.</translation>
 <translation id="674375294223700098">Neznáma chyba spôsobená certifikátom servera.</translation>
 <translation id="6744009308914054259">Zatiaľ čo čakáte na pripojenie, môžete prejsť do priečinka stiahnutých súborov a prečítať si články v režime offline.</translation>
+<translation id="6751487147225428522">ROC 8K</translation>
 <translation id="6752086006821653994">Telekonferencie</translation>
 <translation id="6753269504797312559">Hodnota pravidla</translation>
 <translation id="6755241357817244406">chrome://flags</translation>
@@ -2197,6 +2201,7 @@
 <translation id="6846340164947227603">Použiť číslo virtuálnej karty…</translation>
 <translation id="6852204201400771460">Načítať znova aplikáciu?</translation>
 <translation id="6857776781123259569">Spravujte heslá…</translation>
+<translation id="6864189428899665393">267 × 389 mm</translation>
 <translation id="686485648936420384">Zdroje informácií pre spotrebiteľov</translation>
 <translation id="6865412394715372076">Táto karta sa momentálne nedá overiť</translation>
 <translation id="6869334554832814367">Osobné úvery</translation>
@@ -2309,6 +2314,7 @@
 <translation id="7138472120740807366">Spôsob doručenia</translation>
 <translation id="7139892792842608322">Hlavný zásobník</translation>
 <translation id="714064300541049402">Posun obrázka strany č. 2 na osi X</translation>
+<translation id="7143682719845053166">PRC 32K</translation>
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> a <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> ďalší}few{<ph name="PAYMENT_METHOD_PREVIEW" /> a <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> ďalšie}many{<ph name="PAYMENT_METHOD_PREVIEW" /> a <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> ďalšieho}other{<ph name="PAYMENT_METHOD_PREVIEW" /> a <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> ďalších}}</translation>
 <translation id="7153618581592392745">Levanduľová</translation>
 <translation id="7156870133441232244">Protokol TLS tohto servera by mal byť inovovaný na verziu 1.2 alebo novšiu.</translation>
@@ -2390,6 +2396,7 @@
 <translation id="7363096869660964304">Nie ste však neviditeľný/-á. Prejdením do režimu inkognito neskryjete svoje prehliadanie pred zamestnávateľom, poskytovateľom internetových služieb ani pred navštívenými webmi.</translation>
 <translation id="7365596969960773405"><ph name="MANAGE_ADDRESSES_FOCUSED_FRIENDLY_MATCH_TEXT" />, postupným stlačením klávesov Tab a Enter môžete v nastaveniach Chromu pridávať a spravovať adresy</translation>
 <translation id="7365849542400970216">Povoliť zistiť, či používate svoje zariadenie?</translation>
+<translation id="7366117520888504990">198 x 275 mm</translation>
 <translation id="7366362069757178916">Obslužné nástroje platieb</translation>
 <translation id="7372973238305370288">výsledok vyhľadávania</translation>
 <translation id="7374461526650987610">Obslužné nástroje protokolov</translation>
@@ -2549,6 +2556,7 @@
 <translation id="7687186412095877299">Doplní do platobných formulárov vaše uložené spôsoby platby</translation>
 <translation id="7687305263118037187">Časový limit opakovania</translation>
 <translation id="7687451951329798396">Čo hovoria iné zdroje?</translation>
+<translation id="7690647519407127574">Oufuku Hagaki pohľadnica</translation>
 <translation id="7693583928066320343">Bolo prijaté poradie strán</translation>
 <translation id="7696089921647603491">Klasický rock a staré hity</translation>
 <translation id="769721561045429135">Momentálne máte karty, ktoré je možné použiť iba v tomto zariadení Ak chcete skontrolovať karty, kliknite na Pokračovať.</translation>
@@ -2722,6 +2730,7 @@
 <translation id="8202370299023114387">Konflikt</translation>
 <translation id="8210604850413485128">Webový hosting</translation>
 <translation id="8211406090763984747">Spojenie je zabezpečené</translation>
+<translation id="8213853114485953510">JIS Exec</translation>
 <translation id="8217240300496046857">Weby nemôžu používať súbory cookie, ktoré vás sledujú na internete. Funkcie na niektorých weboch môžu zlyhávať.</translation>
 <translation id="8217748145574471584">Ľudské zdroje</translation>
 <translation id="8218327578424803826">Pridelená poloha:</translation>
@@ -2936,6 +2945,7 @@
 <translation id="8816395686387277279"><ph name="UPDATE_CHROME_FOCUSED_FRIENDLY_MATCH_TEXT" />, postupným stlačením klávesov Tab a Enter aktualizujte Chrome v jeho nastaveniach</translation>
 <translation id="8820817407110198400">Záložky</translation>
 <translation id="882338992931677877">Manuálny slot</translation>
+<translation id="8830320733681313421">Hagaki pohľadnica</translation>
 <translation id="8834380158646307944">Tlačidlo na zavretie okien inkognito, stlačením klávesa Enter zavrite všetky okná inkognito, ktoré sú momentálne otvorené</translation>
 <translation id="883848425547221593">Iné záložky</translation>
 <translation id="884264119367021077">Dodacia adresa</translation>
diff --git a/components/strings/components_strings_sl.xtb b/components/strings/components_strings_sl.xtb
index c198f58e..070aee2 100644
--- a/components/strings/components_strings_sl.xtb
+++ b/components/strings/components_strings_sl.xtb
@@ -307,6 +307,7 @@
 <translation id="168841957122794586">Potrdilo strežnika vsebuje šibek šifrirni ključ.</translation>
 <translation id="1697532407822776718">Pripravljeni ste.</translation>
 <translation id="1699570257714336246">Manjkajo podatki</translation>
+<translation id="1702815194757674443">ROC 16K</translation>
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706625117072057435">Ravni povečave/pomanjšave</translation>
 <translation id="1706954506755087368">{1,plural, =1{Strežniku ni uspelo dokazati, da je domena <ph name="DOMAIN" />; njegovo varnostno potrdilo naj bi imelo jutrišnji datum. Razlog za to je lahko napačna konfiguracija ali napadalčevo prestrezanje povezave.}one{Strežniku ni uspelo dokazati, da je domena <ph name="DOMAIN" />; njegovo varnostno potrdilo naj bi imelo datum v prihodnosti – # dan od danes. Razlog za to je lahko napačna konfiguracija ali napadalčevo prestrezanje povezave.}two{Strežniku ni uspelo dokazati, da je domena <ph name="DOMAIN" />; njegovo varnostno potrdilo naj bi imelo datum v prihodnosti – # dneva od danes. Razlog za to je lahko napačna konfiguracija ali napadalčevo prestrezanje povezave.}few{Strežniku ni uspelo dokazati, da je domena <ph name="DOMAIN" />; njegovo varnostno potrdilo naj bi imelo datum v prihodnosti – # dni od danes. Razlog za to je lahko napačna konfiguracija ali napadalčevo prestrezanje povezave.}other{Strežniku ni uspelo dokazati, dokazati, da je domena <ph name="DOMAIN" />; njegovo varnostno potrdilo naj bi imelo datum v prihodnosti – # dni od danes. Razlog za to je lahko napačna konfiguracija ali napadalčevo prestrezanje povezave.}}</translation>
@@ -395,6 +396,7 @@
 <translation id="192020519938775529">{COUNT,plural, =0{Brez}=1{1 spletno mesto}one{# spletno mesto}two{# spletni mesti}few{# spletna mesta}other{# spletnih mest}}</translation>
 <translation id="1924727005275031552">Novo</translation>
 <translation id="1927439593081478069">Gumb za zagon varnostnega preverjanja v Chromu, pritisnite Enter, če želite v nastavitvah Chroma zagnati varnostno preverjanje.</translation>
+<translation id="1935995810530254458">Vseeno kopiraj</translation>
 <translation id="1939175642807587452">Lahko zahteva pošiljanje obvestil.</translation>
 <translation id="1943994668912612445">Oblikovanje</translation>
 <translation id="1945968466830820669">Izgubite lahko dostop do računa za organizacijo ali postanete žrtev kraje identitete. Chromium priporoča, da spremenite geslo.</translation>
@@ -448,6 +450,7 @@
 <translation id="2085876078937250610">Shrani …</translation>
 <translation id="2088086323192747268">Gumb za upravljanje sinhronizacije, pritisnite Enter, če želite upravljati, kateri podatki se sinhronizirajo v Chromovih nastavitvah.</translation>
 <translation id="2091887806945687916">Zvok</translation>
+<translation id="2093982008204312032">Google Chrome poskuša izklopiti Windows Hello za izpolnjevanje gesel.</translation>
 <translation id="2094505752054353250">Neujemanje domen</translation>
 <translation id="2099652385553570808">Trojno spenjanje na levi</translation>
 <translation id="2101225219012730419">Različica:</translation>
@@ -550,6 +553,7 @@
 <translation id="2359347814217202136">{NUM_DAYS,plural, =0{Čez manj kot en dan}=1{Čez en dan}one{Čez {NUM_DAYS} dan}two{Čez {NUM_DAYS} dneva}few{Čez {NUM_DAYS} dni}other{Čez {NUM_DAYS} dni}}</translation>
 <translation id="2359629602545592467">Več valut</translation>
 <translation id="2359808026110333948">Naprej</translation>
+<translation id="2361263712565360498">275 x 395 mm</translation>
 <translation id="236340516568226369">Povečanje velikosti menija za preklop</translation>
 <translation id="2367567093518048410">Raven</translation>
 <translation id="2380886658946992094">Legal</translation>
@@ -710,6 +714,7 @@
 <translation id="2799223571221894425">Vnovičen zagon</translation>
 <translation id="2803306138276472711">Googlova funkcija varnega brskanja je na spletnem mestu <ph name="SITE" /> nedavno <ph name="BEGIN_LINK" />zaznala zlonamerno programsko opremo<ph name="END_LINK" />. Spletna mesta, ki so običajno varna, so včasih okužena z zlonamerno programsko opremo.</translation>
 <translation id="2807052079800581569">Položaj Y slike</translation>
+<translation id="2808278141522721006">Windows Hello lahko vklopite ali izklopite tukaj: <ph name="SETTINGS" />.</translation>
 <translation id="2820957248982571256">Iskanje ...</translation>
 <translation id="2824775600643448204">Naslovna in iskalna vrstica</translation>
 <translation id="2826760142808435982">Za šifriranje in preverjanje pristnosti povezave se uporablja <ph name="CIPHER" />, kot mehanizem za izmenjavo ključev pa <ph name="KX" />.</translation>
@@ -880,6 +885,7 @@
 <translation id="3288238092761586174">Gostitelj <ph name="URL" /> bo morda moral opraviti dodatne korake za preverjanje vašega plačila.</translation>
 <translation id="3293642807462928945">Preberite več o pravilniku <ph name="POLICY_NAME" /></translation>
 <translation id="3295444047715739395">Ogled in upravljanje gesel v nastavitvah v Chromu</translation>
+<translation id="3299098170013242198">Funkcija Windows Hello je vklopljena za izpolnjevanje gesel.</translation>
 <translation id="3303855915957856445">Ni rezultatov iskanja</translation>
 <translation id="3304073249511302126">iskanje naprav Bluetooth</translation>
 <translation id="33073482541490531">Geslo, ki ste ga pravkar uporabili, je bilo najdeno v podatkovni kršitvi. Upravitelj gesel priporoča, da to geslo spremenite takoj.</translation>
@@ -1028,6 +1034,7 @@
 <translation id="3678342917559046352">Neveljavna razširitev – pričakovano je, da bo vrednost v eni od teh oblik: &lt;extension_id&gt; ali &lt;extension_id&gt;;&lt;update_url&gt;.</translation>
 <translation id="3678529606614285348">Odpiranje strani v novem anonimnem oknu (Ctrl + Shift + N)</translation>
 <translation id="3681007416295224113">Informacije o potrdilu</translation>
+<translation id="3699374065820972102">Za izpolnjevanje gesel je vklopljena funkcija TouchID.</translation>
 <translation id="3701427423622901115">Ponastavitev je potrjena.</translation>
 <translation id="3704162925118123524">Omrežje, ki ga uporabljate, morda zahteva, da obiščete stran za prijavo.</translation>
 <translation id="3705189812819839667"><ph name="RESULT_OWNER" /> – <ph name="RESULT_PRODUCT_SOURCE" /></translation>
@@ -1141,6 +1148,7 @@
 <translation id="4014128326099193693">{COUNT,plural, =1{Dokument PDF, ki vsebuje {COUNT} stran}one{Dokument PDF, ki vsebuje {COUNT} stran}two{Dokument PDF, ki vsebuje {COUNT} strani}few{Dokument PDF, ki vsebuje {COUNT} strani}other{Dokument PDF, ki vsebuje {COUNT} strani}}</translation>
 <translation id="4022639246993848966">3,5 x 5</translation>
 <translation id="4023431997072828269">Ta obrazec pošiljate prek povezave, ki ni varna, zato bodo drugi uporabniki lahko videli vaše podatke.</translation>
+<translation id="4024923292610332139">izklopiti funkcijo TouchID za izpolnjevanje gesel.</translation>
 <translation id="4025913568718019429">Gumb za upravljanje nastavitev zasebnosti v Googlu, pritisnite Enter, če želite odpreti nastavitve zasebnosti v računu Google.</translation>
 <translation id="4030383055268325496">&amp;Razveljavi dodajanje</translation>
 <translation id="4031179711345676612">Mikrofon je dovoljen</translation>
@@ -1257,6 +1265,7 @@
 <translation id="42981349822642051">Razširi</translation>
 <translation id="4300675098767811073">Večkratno luknjanje na desni</translation>
 <translation id="4302514097724775343">Če želite igrati, se dotaknite dinozavra.</translation>
+<translation id="4304049446746819918">{0,plural, =1{Pravilnik skrbnika ne priporoča premika te datoteke sem: <ph name="DESTINATION_NAME" />.}one{Pravilnik skrbnika ne priporoča premika teh datotek sem: <ph name="DESTINATION_NAME" />.}two{Pravilnik skrbnika ne priporoča premika teh datotek sem: <ph name="DESTINATION_NAME" />.}few{Pravilnik skrbnika ne priporoča premika teh datotek sem: <ph name="DESTINATION_NAME" />.}other{Pravilnik skrbnika ne priporoča premika teh datotek sem: <ph name="DESTINATION_NAME" />.}}</translation>
 <translation id="4305666528087210886">Ni bilo mogoče dostopati do datoteke</translation>
 <translation id="4306529830550717874">Želite shraniti naslov?</translation>
 <translation id="4306812610847412719">odložišče</translation>
@@ -1425,6 +1434,7 @@
 <translation id="4751476147751820511">Tipala za gibanje in svetlobo</translation>
 <translation id="4754461935447132332">Ni dovoljeno za spletna mesta, ki niso varna</translation>
 <translation id="4756388243121344051">&amp;Zgodovina</translation>
+<translation id="4756501505996488486">PRC 16K</translation>
 <translation id="4757993714154412917">Pravkar ste vnesli geslo na zavajajočem spletnem mestu. Chromium zaradi zaščite računov priporoča, da preverite shranjena gesla.</translation>
 <translation id="4758311279753947758">Dodaj podatke za stik</translation>
 <translation id="4761104368405085019">Uporabite mikrofon</translation>
@@ -1486,6 +1496,7 @@
 <translation id="4900217275619098670">Kolut 9</translation>
 <translation id="4901778704868714008">Shrani ...</translation>
 <translation id="4905659621780993806">Skrbnik bo napravo samodejno znova zagnal ob <ph name="TIME" /> dne <ph name="DATE" />. Preden se naprava znova zažene, shranite odprte elemente.</translation>
+<translation id="4911007278801291296">TouchID lahko vklopite ali izklopite tukaj: <ph name="SETTINGS" />.</translation>
 <translation id="4913987521957242411">Luknjanje zgoraj levo</translation>
 <translation id="4918221908152712722">Namestite <ph name="APP_NAME" /> (prenos ni potreben)</translation>
 <translation id="4923459931733593730">Plačilo</translation>
@@ -1631,6 +1642,7 @@
 <translation id="5254043433801397071">Optimiziranje vsebine za tiskanje</translation>
 <translation id="5254958791078852567">E1</translation>
 <translation id="5255690596502591079">Vseeno zajemi</translation>
+<translation id="5257739419779698609">{0,plural, =1{Pravilnik skrbnika ne priporoča kopiranja te datoteke sem: <ph name="DESTINATION_NAME" />.}one{Pravilnik skrbnika ne priporoča kopiranja teh datotek sem: <ph name="DESTINATION_NAME" />.}two{Pravilnik skrbnika ne priporoča kopiranja teh datotek sem: <ph name="DESTINATION_NAME" />.}few{Pravilnik skrbnika ne priporoča kopiranja teh datotek sem: <ph name="DESTINATION_NAME" />.}other{Pravilnik skrbnika ne priporoča kopiranja teh datotek sem: <ph name="DESTINATION_NAME" />.}}</translation>
 <translation id="5266128565379329178">Vezava zgoraj</translation>
 <translation id="5269225904387178860">Četverno luknjanje spodaj</translation>
 <translation id="5269999699920406580">Funkcije, ki se uporabijo v celotnem sistemu, lahko nastavi samo lastnik: <ph name="OWNER_EMAIL" />.</translation>
@@ -1678,6 +1690,7 @@
 <translation id="5357848622083956825">Vizualna umetnost in oblikovanje</translation>
 <translation id="536296301121032821">Nastavitev pravilnika ni bilo mogoče shraniti</translation>
 <translation id="5363309033720083897">Serijska vrata, ki jih dovoli skrbnik</translation>
+<translation id="5363713372507812442">Iščite po poteh</translation>
 <translation id="5371425731340848620">Posodobite kartico</translation>
 <translation id="5377026284221673050">Ura zaostaja« ali »Ura prehiteva« ali »&lt;span class="error-code"&gt;NET::ERR_CERT_DATE_INVALID&lt;/span&gt;«</translation>
 <translation id="5379027395132364855">Gumb za ustvarjanje predstavitve, pritisnite Enter, če želite hitro ustvariti novo Googlovo predstavitev v Predstavitvah</translation>
@@ -1693,6 +1706,7 @@
 <translation id="5412236728747081950">To spletno mesto pridobi vaša zanimanja iz Chroma, da vam pokaže ustreznejše oglase.</translation>
 <translation id="5412245327974352290"><ph name="TRADITIONAL_TEXT" /> – <ph name="ADDITIONAL_TEXT" /></translation>
 <translation id="541416427766103491">Zlagalnik 4</translation>
+<translation id="5414511064953050917">Vseeno premakni</translation>
 <translation id="5421136146218899937">Izbriši podatke brskanja ...</translation>
 <translation id="5425241977284572032">{NUM_COOKIES,plural, =0{Ni blokiranih spletnih mest}=1{1 blokirano spletno mesto}one{# blokirano spletno mesto}two{# blokirani spletni mesti}few{# blokirana spletna mesta}other{# blokiranih spletnih mest}}</translation>
 <translation id="5426179911063097041"><ph name="SITE" /> vam želi pošiljati obvestila</translation>
@@ -2163,6 +2177,7 @@
 <translation id="6738516213925468394">Podatki so bili šifrirani (<ph name="TIME" />) z vašim <ph name="BEGIN_LINK" />geslom za sinhronizacijo<ph name="END_LINK" />. Vnesite ga, če želite začeti sinhronizacijo.</translation>
 <translation id="674375294223700098">Neznana napaka potrdila strežnika.</translation>
 <translation id="6744009308914054259">Med čakanjem na povezavo lahko berete članke za branje brez povezave med prenosi.</translation>
+<translation id="6751487147225428522">ROC 8K</translation>
 <translation id="6752086006821653994">Telekonference</translation>
 <translation id="6753269504797312559">Vrednost pravilnika</translation>
 <translation id="6755241357817244406">chrome://flags</translation>
@@ -2196,6 +2211,7 @@
 <translation id="6846340164947227603">Uporabi številko virtualne kartice ...</translation>
 <translation id="6852204201400771460">Želite znova naložiti aplikacijo?</translation>
 <translation id="6857776781123259569">Upravljanje gesel …</translation>
+<translation id="6864189428899665393">267 x 389 mm</translation>
 <translation id="686485648936420384">Potrošniški viri</translation>
 <translation id="6865412394715372076">Te kartice trenutno ni mogoče preveriti</translation>
 <translation id="6869334554832814367">Osebna posojila</translation>
@@ -2308,9 +2324,11 @@
 <translation id="7138472120740807366">Način dostave</translation>
 <translation id="7139892792842608322">Glavni pladenj</translation>
 <translation id="714064300541049402">Pomik slike na 2. strani v X</translation>
+<translation id="7143682719845053166">PRC 32K</translation>
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> in še <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}one{<ph name="PAYMENT_METHOD_PREVIEW" /> in še <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}two{<ph name="PAYMENT_METHOD_PREVIEW" /> in še <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}few{<ph name="PAYMENT_METHOD_PREVIEW" /> in še <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}other{<ph name="PAYMENT_METHOD_PREVIEW" /> in še <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}}</translation>
 <translation id="7153618581592392745">Svetlo vijolična</translation>
 <translation id="7156870133441232244">Nadgradite strežnik na standard TLS 1.2 ali novejši.</translation>
+<translation id="7163295244162773898">{0,plural, =1{Želite kopirati zaupno datoteko?}one{Želite kopirati zaupne datoteke?}two{Želite kopirati zaupne datoteke?}few{Želite kopirati zaupne datoteke?}other{Želite kopirati zaupne datoteke?}}</translation>
 <translation id="717330890047184534">ID za Gaio:</translation>
 <translation id="7174545416324379297">Združeno</translation>
 <translation id="7175401108899573750">{SHIPPING_OPTIONS,plural, =0{<ph name="SHIPPING_OPTION_PREVIEW" />}=1{<ph name="SHIPPING_OPTION_PREVIEW" /> in še <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" />}one{<ph name="SHIPPING_OPTION_PREVIEW" /> in še <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" />}two{<ph name="SHIPPING_OPTION_PREVIEW" /> in še <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" />}few{<ph name="SHIPPING_OPTION_PREVIEW" /> in še <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" />}other{<ph name="SHIPPING_OPTION_PREVIEW" /> in še <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" />}}</translation>
@@ -2388,6 +2406,7 @@
 <translation id="7363096869660964304">Kljub temu pa niste nevidni. Z uporabo anonimnega načina svojega brskanja ne skrijete pred delodajalcem, ponudnikom internetnih storitev ali spletnimi mesti, ki jih obiščete.</translation>
 <translation id="7365596969960773405"><ph name="MANAGE_ADDRESSES_FOCUSED_FRIENDLY_MATCH_TEXT" />, pritisnite tabulatorko, nato Enter, če želite dodati in upravljati naslove v Chromovih nastavitvah.</translation>
 <translation id="7365849542400970216">Poznate podatke o uporabi naprave?</translation>
+<translation id="7366117520888504990">198 x 275 mm</translation>
 <translation id="7366362069757178916">Rutine za obravnavo plačil</translation>
 <translation id="7372973238305370288">rezultat iskanja</translation>
 <translation id="7374461526650987610">Rutine za obravnavanje protokolov</translation>
@@ -2547,6 +2566,7 @@
 <translation id="7687186412095877299">Izpolni obrazce za plačilo s shranjenimi podatki o plačilnih sredstvih</translation>
 <translation id="7687305263118037187">Potek časovne omejitve vnovičnega poskusa</translation>
 <translation id="7687451951329798396">Kaj pravijo drugi viri?</translation>
+<translation id="7690647519407127574">Razglednica Oufuku Hagaki</translation>
 <translation id="7693583928066320343">Prejeti vrstni red strani</translation>
 <translation id="7696089921647603491">Klasični rock in stare pesmi</translation>
 <translation id="769721561045429135">Trenutno je mogoče nekatere vaše kartice uporabljati samo v tej napravi. Kliknite »Naprej«, če si želite ogledati kartice.</translation>
@@ -2720,6 +2740,7 @@
 <translation id="8202370299023114387">Spor</translation>
 <translation id="8210604850413485128">Spletno gostovanje</translation>
 <translation id="8211406090763984747">Povezava je varna</translation>
+<translation id="8213853114485953510">JIS Exec</translation>
 <translation id="8217240300496046857">Spletna mesta vam ne morejo slediti po spletu na podlagi piškotkov. Funkcije na nekaterih spletnih mestih morda ne bodo delovale.</translation>
 <translation id="8217748145574471584">Človeški viri</translation>
 <translation id="8218327578424803826">Dodeljena lokacija:</translation>
@@ -2916,6 +2937,7 @@
 <translation id="8763986294015493060">Zapiranje vseh trenutno odprtih anonimnih oken.</translation>
 <translation id="8766943070169463815">Preglednica za preverjanje pristnosti poverilnice za varno plačilo je odprta</translation>
 <translation id="8767765348545497220">Zapiranje oblačka s pomočjo</translation>
+<translation id="877348612833018844">{0,plural, =1{Želite premakniti zaupno datoteko?}one{Želite premakniti zaupne datoteke?}two{Želite premakniti zaupne datoteke?}few{Želite premakniti zaupne datoteke?}other{Želite premakniti zaupne datoteke?}}</translation>
 <translation id="877985182522063539">A4</translation>
 <translation id="8785658048882205566">Motorna kolesa</translation>
 <translation id="8790007591277257123">&amp;Uveljavi izbris</translation>
@@ -2932,6 +2954,7 @@
 <translation id="8816395686387277279"><ph name="UPDATE_CHROME_FOCUSED_FRIENDLY_MATCH_TEXT" />, pritisnite tabulatorko, nato Enter, če želite posodobiti Chrome v Chromovih nastavitvah</translation>
 <translation id="8820817407110198400">Zaznamki</translation>
 <translation id="882338992931677877">Ročni pladenj</translation>
+<translation id="8830320733681313421">Razglednica Hagaki</translation>
 <translation id="8834380158646307944">Gumb za zapiranje anonimnih oken, pritisnite Enter, če želite zapreti vsa trenutno odprta anonimna okna.</translation>
 <translation id="883848425547221593">Drugi zaznamki</translation>
 <translation id="884264119367021077">Naslov za pošiljanje</translation>
diff --git a/components/strings/components_strings_sq.xtb b/components/strings/components_strings_sq.xtb
index 460696b..3f576799 100644
--- a/components/strings/components_strings_sq.xtb
+++ b/components/strings/components_strings_sq.xtb
@@ -307,6 +307,7 @@
 <translation id="168841957122794586">Certifikata e serverit përmban një çelës të dobët kriptografik.</translation>
 <translation id="1697532407822776718">Je gati!</translation>
 <translation id="1699570257714336246">Mungon informacion</translation>
+<translation id="1702815194757674443">ROC 16K</translation>
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706625117072057435">Nivelet e zmadhimit</translation>
 <translation id="1706954506755087368">{1,plural, =1{Ky server nuk mund të vërtetonte se është <ph name="DOMAIN" />; certifikata e tij e sigurisë supozohet se është nga dita e nesërme. Kjo mund të jetë shkaktuar nga një konfigurim i gabuar ose nga ndërhyrja e një sulmuesi në lidhjen tënde.}other{ky server nuk mund të vërtetonte se është <ph name="DOMAIN" />; certifikata e tij e sigurisë supozohet se është nga # ditë në të ardhmen. Kjo mund të jetë shkaktuar nga një konfigurim i gabuar ose nga ndërhyrja e një sulmuesi në lidhjen tënde.}}</translation>
@@ -552,6 +553,7 @@
 <translation id="2359347814217202136">{NUM_DAYS,plural, =0{Për më pak se një ditë}=1{Për një ditë}other{Për {NUM_DAYS} ditë}}</translation>
 <translation id="2359629602545592467">Disa</translation>
 <translation id="2359808026110333948">Vazhdo</translation>
+<translation id="2361263712565360498">275 x 395 mm</translation>
 <translation id="236340516568226369">Ndrysho përmasat e menysë së aktivizimit/çaktivizimit</translation>
 <translation id="2367567093518048410">Niveli</translation>
 <translation id="2380886658946992094">Legal</translation>
@@ -1429,6 +1431,7 @@
 <translation id="4751476147751820511">Sensorët e lëvizjes ose të dritës</translation>
 <translation id="4754461935447132332">Nuk lejohet për sajtet e pasigurta</translation>
 <translation id="4756388243121344051">&amp;Historiku</translation>
+<translation id="4756501505996488486">PRC 16K</translation>
 <translation id="4757993714154412917">Sapo e fute fjalëkalimin tënd në një sajt mashtrues. Për të siguruar llogaritë e tua, Chromium rekomandon të kontrollosh fjalëkalimet e ruajtura.</translation>
 <translation id="4758311279753947758">Shto informacionet e kontaktit</translation>
 <translation id="4761104368405085019">Përdor mikrofonin</translation>
@@ -2168,6 +2171,7 @@
 <translation id="6738516213925468394">Të dhënat e tua u enkriptuan me <ph name="BEGIN_LINK" />frazën e kalimit për sinkronizimin<ph name="END_LINK" /> më <ph name="TIME" />. Fute atë për të nisur sinkronizmin.</translation>
 <translation id="674375294223700098">Gabim i panjohur i certifikatës së serverit</translation>
 <translation id="6744009308914054259">Ndërkohë që pret për një lidhje, mund të vizitosh "Shkarkimet" për të lexuar artikuj jashtë linje.</translation>
+<translation id="6751487147225428522">ROC 8K</translation>
 <translation id="6752086006821653994">Telekonferencat</translation>
 <translation id="6753269504797312559">Vlera e politikës</translation>
 <translation id="6755241357817244406">chrome://flags</translation>
@@ -2201,6 +2205,7 @@
 <translation id="6846340164947227603">Përdor një numër karte virtuale...</translation>
 <translation id="6852204201400771460">Dëshiron ta ringarkosh aplikacionin?</translation>
 <translation id="6857776781123259569">Menaxho fjalëkalimet...</translation>
+<translation id="6864189428899665393">267 x 389 mm</translation>
 <translation id="686485648936420384">Burimet e konsumatorit</translation>
 <translation id="6865412394715372076">Kjo kartë nuk mund të verifikohet për momentin</translation>
 <translation id="6869334554832814367">Kreditë personale</translation>
@@ -2313,6 +2318,7 @@
 <translation id="7138472120740807366">Mënyra e dorëzimit</translation>
 <translation id="7139892792842608322">Tabakaja parësore</translation>
 <translation id="714064300541049402">Zhvendosja e imazhit në boshtin X në anën 2</translation>
+<translation id="7143682719845053166">PRC 32K</translation>
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> dhe <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> tjetër}other{<ph name="PAYMENT_METHOD_PREVIEW" /> dhe <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> të tjera}}</translation>
 <translation id="7153618581592392745">Vjollcë e çelur</translation>
 <translation id="7156870133441232244">Serveri duhet të përmirësohet në versionin TLS 1.2 ose një version të mëvonshëm.</translation>
@@ -2394,6 +2400,7 @@
 <translation id="7363096869660964304">Sidoqoftë, ti nuk je i padukshëm. Kalimi në modalitetin "e fshehtë" nuk e fsheh shfletimin tënd nga punëdhënësi yt, ofruesi i shërbimit të internetit apo sajtet e uebit që viziton.</translation>
 <translation id="7365596969960773405"><ph name="MANAGE_ADDRESSES_FOCUSED_FRIENDLY_MATCH_TEXT" />. Shtyp "Tab" dhe më pas "Enter" për të shtuar dhe menaxhuar adresat te cilësimet e Chrome</translation>
 <translation id="7365849542400970216">Të dinë përdorimin e pajisjes sate?</translation>
+<translation id="7366117520888504990">198 x 275 mm</translation>
 <translation id="7366362069757178916">Përpunuesit e pagesave</translation>
 <translation id="7372973238305370288">rezultati i kërkimit</translation>
 <translation id="7374461526650987610">Përpunuesit e protokollit</translation>
@@ -2553,6 +2560,7 @@
 <translation id="7687186412095877299">Plotëson formularët e pagesës me mënyrat e ruajtura të pagesës</translation>
 <translation id="7687305263118037187">Skadimi i ripërpjekjes</translation>
 <translation id="7687451951329798396">Çfarë thonë burimet e tjera?</translation>
+<translation id="7690647519407127574">Oufuku Hagaki (kartolinë)</translation>
 <translation id="7693583928066320343">Renditja e faqeve u mor</translation>
 <translation id="7696089921647603491">Rok klasik dhe muzikë e vjetër</translation>
 <translation id="769721561045429135">Në këtë moment, ke karta që mund të përdoren vetëm në këtë pajisje. Kliko te "Vazhdo" për të rishikuar kartat.</translation>
@@ -2726,6 +2734,7 @@
 <translation id="8202370299023114387">Konflikt</translation>
 <translation id="8210604850413485128">Hostimi i sajteve të uebit</translation>
 <translation id="8211406090763984747">Lidhja është e sigurt</translation>
+<translation id="8213853114485953510">JIS Exec</translation>
 <translation id="8217240300496046857">Sajtet nuk mund të përdorin kuki që të monitorojnë nëpër ueb. Veçoritë në disa sajte mund të ndalojnë së funksionuari.</translation>
 <translation id="8217748145574471584">Burimet njerëzore</translation>
 <translation id="8218327578424803826">Vendndodhja e caktuar:</translation>
@@ -2939,6 +2948,7 @@
 <translation id="8816395686387277279"><ph name="UPDATE_CHROME_FOCUSED_FRIENDLY_MATCH_TEXT" />, shtyp "Tab", më pas "Enter" për të përditësuar Chrome nga cilësimet e tua të Chrome</translation>
 <translation id="8820817407110198400">Faqeshënuesit</translation>
 <translation id="882338992931677877">Foleja manuale</translation>
+<translation id="8830320733681313421">Hagaki (kartolinë)</translation>
 <translation id="8834380158646307944">Butoni "Mbyll dritaret e fshehta". Shtyp "Enter" për të mbyllur të gjitha dritaret "e fshehta" që janë aktualisht të hapura</translation>
 <translation id="883848425547221593">Faqeshënues të tjerë</translation>
 <translation id="884264119367021077">Adresa e transportit</translation>
diff --git a/components/strings/components_strings_sr-Latn.xtb b/components/strings/components_strings_sr-Latn.xtb
index f9c7e0b..ecede57 100644
--- a/components/strings/components_strings_sr-Latn.xtb
+++ b/components/strings/components_strings_sr-Latn.xtb
@@ -714,6 +714,7 @@
 <translation id="2799223571221894425">Ponovo pokreni</translation>
 <translation id="2803306138276472711">Google bezbedno pregledanje je nedavno <ph name="BEGIN_LINK" />otkrilo malver<ph name="END_LINK" /> na <ph name="SITE" />. Veb-sajtovi koji su obično bezbedni se ponekad zaraze malverom.</translation>
 <translation id="2807052079800581569">Pozicija slike na Y osi</translation>
+<translation id="2808278141522721006">Možete da uključite ili isključite Windows Hello u <ph name="SETTINGS" /></translation>
 <translation id="2820957248982571256">Skenira se...</translation>
 <translation id="2824775600643448204">Traka za adresu i pretragu</translation>
 <translation id="2826760142808435982">Veza je šifrovana i njena autentičnost je potvrđena pomoću <ph name="CIPHER" /> i koristi <ph name="KX" /> kao mehanizam za razmenu šifara.</translation>
@@ -884,6 +885,7 @@
 <translation id="3288238092761586174"><ph name="URL" /> treba da obavi dodatne korake radi potvrde plaćanja</translation>
 <translation id="3293642807462928945">Saznajte više o smernicama <ph name="POLICY_NAME" /></translation>
 <translation id="3295444047715739395">Pregledajte lozinke i upravljajte njima u podešavanjima Chrome-a</translation>
+<translation id="3299098170013242198">Windows Hello je uključen za popunjavanje lozinki</translation>
 <translation id="3303855915957856445">Nisu pronađeni rezultati pretrage</translation>
 <translation id="3304073249511302126">Bluetooth skeniranje</translation>
 <translation id="33073482541490531">Lozinka koju ste upravo koristili je pronađena pri povredi podataka. Menadžer lozinki preporučuje da odmah promenite ovu lozinku.</translation>
@@ -1032,6 +1034,7 @@
 <translation id="3678342917559046352">Nevažeći dodatak: Očekivano je da vrednost bude jedan od sledećih oblika: &lt;extension_id&gt; ili &lt;extension_id&gt;;&lt;update_url&gt;.</translation>
 <translation id="3678529606614285348">Otvorite stranicu u nocom prozoru bez arhiviranja (Ctrl-Shift-N)</translation>
 <translation id="3681007416295224113">Informacije o sertifikatu</translation>
+<translation id="3699374065820972102">TouchID je uključen za popunjavanje lozinki</translation>
 <translation id="3701427423622901115">Resetovanje je potvrđeno.</translation>
 <translation id="3704162925118123524">Mreža koju koristite će možda zahtevati da posetite stranicu za prijavljivanje.</translation>
 <translation id="3705189812819839667"><ph name="RESULT_OWNER" />–<ph name="RESULT_PRODUCT_SOURCE" /></translation>
@@ -1493,6 +1496,7 @@
 <translation id="4900217275619098670">Deveti kotur</translation>
 <translation id="4901778704868714008">Sačuvaj...</translation>
 <translation id="4905659621780993806">Administrator će automatski restartovati uređaj u <ph name="TIME" />, <ph name="DATE" />. Sačuvajte otvorene stavke pre nego što se uređaj restartuje.</translation>
+<translation id="4911007278801291296">Možete da uključite ili isključite TouchID u <ph name="SETTINGS" /></translation>
 <translation id="4913987521957242411">Bušenje u gornjem levom uglu</translation>
 <translation id="4918221908152712722">Instalirajte aplikaciju <ph name="APP_NAME" /> (ne treba da je preuzimate)</translation>
 <translation id="4923459931733593730">Plaćanje</translation>
@@ -1686,6 +1690,7 @@
 <translation id="5357848622083956825">Vizuelna umetnost i dizajn</translation>
 <translation id="536296301121032821">Skladištenje podešavanja smernica nije uspelo</translation>
 <translation id="5363309033720083897">Administrator je dozvolio serijski port</translation>
+<translation id="5363713372507812442">Pretražite puteve</translation>
 <translation id="5371425731340848620">Ažurirajte karticu</translation>
 <translation id="5377026284221673050">„Sat kasni“ ili „Sat žuri“ ili „&lt;span class="error-code"&gt;NET::ERR_CERT_DATE_INVALID&lt;/span&gt;“</translation>
 <translation id="5379027395132364855">Dugme Napravite prezentaciju, pritisnite Enter da biste brzo napravili novu Google prezentaciju u Prezentacijama</translation>
diff --git a/components/strings/components_strings_sr.xtb b/components/strings/components_strings_sr.xtb
index db83f7951..0e6b2c2 100644
--- a/components/strings/components_strings_sr.xtb
+++ b/components/strings/components_strings_sr.xtb
@@ -714,6 +714,7 @@
 <translation id="2799223571221894425">Поново покрени</translation>
 <translation id="2803306138276472711">Google безбедно прегледање је недавно <ph name="BEGIN_LINK" />открило малвер<ph name="END_LINK" /> на <ph name="SITE" />. Веб-сајтови који су обично безбедни се понекад заразе малвером.</translation>
 <translation id="2807052079800581569">Позиција слике на Y оси</translation>
+<translation id="2808278141522721006">Можете да укључите или искључите Windows Hello у <ph name="SETTINGS" /></translation>
 <translation id="2820957248982571256">Скенира се...</translation>
 <translation id="2824775600643448204">Трака за адресу и претрагу</translation>
 <translation id="2826760142808435982">Веза је шифрована и њена аутентичност је потврђена помоћу <ph name="CIPHER" /> и користи <ph name="KX" /> као механизам за размену шифара.</translation>
@@ -884,6 +885,7 @@
 <translation id="3288238092761586174"><ph name="URL" /> треба да обави додатне кораке ради потврде плаћања</translation>
 <translation id="3293642807462928945">Сазнајте више о смерницама <ph name="POLICY_NAME" /></translation>
 <translation id="3295444047715739395">Прегледајте лозинке и управљајте њима у подешавањима Chrome-а</translation>
+<translation id="3299098170013242198">Windows Hello је укључен за попуњавање лозинки</translation>
 <translation id="3303855915957856445">Нису пронађени резултати претраге</translation>
 <translation id="3304073249511302126">Bluetooth скенирање</translation>
 <translation id="33073482541490531">Лозинка коју сте управо користили је пронађена при повреди података. Менаџер лозинки препоручује да одмах промените ову лозинку.</translation>
@@ -1032,6 +1034,7 @@
 <translation id="3678342917559046352">Неважећи додатак: Очекивано је да вредност буде један од следећих облика: &lt;extension_id&gt; или &lt;extension_id&gt;;&lt;update_url&gt;.</translation>
 <translation id="3678529606614285348">Отворите страницу у ноцом прозору без архивирања (Ctrl-Shift-N)</translation>
 <translation id="3681007416295224113">Информације о сертификату</translation>
+<translation id="3699374065820972102">TouchID је укључен за попуњавање лозинки</translation>
 <translation id="3701427423622901115">Ресетовање је потврђено.</translation>
 <translation id="3704162925118123524">Мрежа коју користите ће можда захтевати да посетите страницу за пријављивање.</translation>
 <translation id="3705189812819839667"><ph name="RESULT_OWNER" />–<ph name="RESULT_PRODUCT_SOURCE" /></translation>
@@ -1493,6 +1496,7 @@
 <translation id="4900217275619098670">Девети котур</translation>
 <translation id="4901778704868714008">Сачувај...</translation>
 <translation id="4905659621780993806">Администратор ће аутоматски рестартовати уређај у <ph name="TIME" />, <ph name="DATE" />. Сачувајте отворене ставке пре него што се уређај рестартује.</translation>
+<translation id="4911007278801291296">Можете да укључите или искључите TouchID у <ph name="SETTINGS" /></translation>
 <translation id="4913987521957242411">Бушење у горњем левом углу</translation>
 <translation id="4918221908152712722">Инсталирајте апликацију <ph name="APP_NAME" /> (не треба да је преузимате)</translation>
 <translation id="4923459931733593730">Плаћање</translation>
@@ -1686,6 +1690,7 @@
 <translation id="5357848622083956825">Визуелна уметност и дизајн</translation>
 <translation id="536296301121032821">Складиштење подешавања смерница није успело</translation>
 <translation id="5363309033720083897">Администратор је дозволио серијски порт</translation>
+<translation id="5363713372507812442">Претражите путеве</translation>
 <translation id="5371425731340848620">Ажурирајте картицу</translation>
 <translation id="5377026284221673050">„Сат касни“ или „Сат жури“ или „&lt;span class="error-code"&gt;NET::ERR_CERT_DATE_INVALID&lt;/span&gt;“</translation>
 <translation id="5379027395132364855">Дугме Направите презентацију, притисните Enter да бисте брзо направили нову Google презентацију у Презентацијама</translation>
diff --git a/components/strings/components_strings_sv.xtb b/components/strings/components_strings_sv.xtb
index c01b9e8c..e43ffe7 100644
--- a/components/strings/components_strings_sv.xtb
+++ b/components/strings/components_strings_sv.xtb
@@ -307,6 +307,7 @@
 <translation id="168841957122794586">Servercertifikatet innehåller en svag kryptografisk nyckel.</translation>
 <translation id="1697532407822776718">Färdigt!</translation>
 <translation id="1699570257714336246">Uppgifter saknas</translation>
+<translation id="1702815194757674443">ROC 16K</translation>
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706625117072057435">Zoomnivåer</translation>
 <translation id="1706954506755087368">{1,plural, =1{Det gick inte att bevisa att serverns identitet är <ph name="DOMAIN" /> eftersom dess säkerhetscertifikat uppges börja gälla i morgon. Det kan bero på att servern är felkonfigurerad eller att anslutningen har blivit kapad.}other{Det gick inte att bevisa att serverns identitet är <ph name="DOMAIN" /> eftersom dess säkerhetscertifikat uppges börja gälla om # dagar. Det kan bero på att servern är felkonfigurerad eller att anslutningen har blivit kapad.}}</translation>
@@ -395,6 +396,7 @@
 <translation id="192020519938775529">{COUNT,plural, =0{Ingen}=1{1 webbplats}other{# webbplatser}}</translation>
 <translation id="1924727005275031552">Ny</translation>
 <translation id="1927439593081478069">Knappen Kör säkerhetskontroll i Chrome: tryck på Retur om du vill köra en säkerhetskontroll i inställningarna för Chrome</translation>
+<translation id="1935995810530254458">Kopiera ändå</translation>
 <translation id="1939175642807587452">Får begära tillstånd att skicka aviseringar</translation>
 <translation id="1943994668912612445">Design</translation>
 <translation id="1945968466830820669">Du kan förlora åtkomsten till organisationens konto eller bli utsatt för identitetsstöld. Du rekommenderas att ändra lösenordet nu.</translation>
@@ -448,6 +450,7 @@
 <translation id="2085876078937250610">Spara …</translation>
 <translation id="2088086323192747268">Knappen Hantera synkronisering, tryck på Retur om du vill hantera vilken information som synkroniseras i inställningarna för Chrome</translation>
 <translation id="2091887806945687916">Ljud</translation>
+<translation id="2093982008204312032">Google Chrome försöker inaktivera Windows Hello för att fylla i lösenord.</translation>
 <translation id="2094505752054353250">Domänen matchar inte</translation>
 <translation id="2099652385553570808">Tre häftklamrar till vänster</translation>
 <translation id="2101225219012730419">Version:</translation>
@@ -550,6 +553,7 @@
 <translation id="2359347814217202136">{NUM_DAYS,plural, =0{Om mindre än ett dygn}=1{Om ett dygn}other{Om {NUM_DAYS} dygn}}</translation>
 <translation id="2359629602545592467">Flera</translation>
 <translation id="2359808026110333948">Fortsätt</translation>
+<translation id="2361263712565360498">275 x 395 mm</translation>
 <translation id="236340516568226369">Ändra storlek på menyn för att aktivera och inaktivera</translation>
 <translation id="2367567093518048410">Nivå</translation>
 <translation id="2380886658946992094">Legal</translation>
@@ -1141,6 +1145,7 @@
 <translation id="4014128326099193693">{COUNT,plural, =1{PDF-dokument som innehåller {COUNT} sida}other{PDF-dokument som innehåller {COUNT} sidor}}</translation>
 <translation id="4022639246993848966">3,5 x 5</translation>
 <translation id="4023431997072828269">Din information blir synlig för andra eftersom anslutningen som används för att skicka formuläret inte är säker.</translation>
+<translation id="4024923292610332139">inaktivera TouchID för att fylla i lösenord</translation>
 <translation id="4025913568718019429">Knappen Hantera Googles integritetsinställningar: tryck på Retur om du vill öppna Google-kontots integritetsinställningar</translation>
 <translation id="4030383055268325496">&amp;Ångra Lägg till</translation>
 <translation id="4031179711345676612">Mikrofon är tillåten</translation>
@@ -1257,6 +1262,7 @@
 <translation id="42981349822642051">Expandera</translation>
 <translation id="4300675098767811073">Flera hål till höger</translation>
 <translation id="4302514097724775343">Tryck på dinon för att spela</translation>
+<translation id="4304049446746819918">{0,plural, =1{Enligt administratörspolicyn är det inte rekommenderat att flytta den här filen till <ph name="DESTINATION_NAME" />}other{Enligt administratörspolicyn är det inte rekommenderat att flytta dessa filer till <ph name="DESTINATION_NAME" />}}</translation>
 <translation id="4305666528087210886">Ingen åtkomst till filen</translation>
 <translation id="4306529830550717874">Vill du spara adressen?</translation>
 <translation id="4306812610847412719">urklipp</translation>
@@ -1425,6 +1431,7 @@
 <translation id="4751476147751820511">Rörelse- eller ljussensorer</translation>
 <translation id="4754461935447132332">Tillåts inte för webbplatser som inte är säkra</translation>
 <translation id="4756388243121344051">&amp;Historik</translation>
+<translation id="4756501505996488486">PRC 16K</translation>
 <translation id="4757993714154412917">Du angav just ditt lösenord på en bedräglig webbplats. Du rekommenderas att kontrollera dina sparade lösenord i Chromium nu för att skydda dina konton.</translation>
 <translation id="4758311279753947758">Lägg till kontaktuppgifter</translation>
 <translation id="4761104368405085019">Använd mikrofonen</translation>
@@ -1631,6 +1638,7 @@
 <translation id="5254043433801397071">Optimera utskriftsinnehåll</translation>
 <translation id="5254958791078852567">E1</translation>
 <translation id="5255690596502591079">Ta bild/spela in ändå</translation>
+<translation id="5257739419779698609">{0,plural, =1{Enligt administratörspolicyn är det inte rekommenderat att kopiera den här filen till <ph name="DESTINATION_NAME" />}other{Enligt administratörspolicyn är det inte rekommenderat att kopiera dessa filer till <ph name="DESTINATION_NAME" />}}</translation>
 <translation id="5266128565379329178">Bindning högst upp</translation>
 <translation id="5269225904387178860">Fyra hål längst ned</translation>
 <translation id="5269999699920406580">Funktioner som gäller hela systemet kan endast ställas in av ägaren: <ph name="OWNER_EMAIL" /></translation>
@@ -1693,6 +1701,7 @@
 <translation id="5412236728747081950">Den här webbplatsen hämtar dina intressen från Chrome för att visa mer relevanta annonser för dig</translation>
 <translation id="5412245327974352290"><ph name="TRADITIONAL_TEXT" /> – <ph name="ADDITIONAL_TEXT" /></translation>
 <translation id="541416427766103491">Utmatningsfack 4</translation>
+<translation id="5414511064953050917">Flytta ändå</translation>
 <translation id="5421136146218899937">Ta bort webbinformation...</translation>
 <translation id="5425241977284572032">{NUM_COOKIES,plural, =0{Inga webbplatser blockeras}=1{1 webbplats blockeras}other{# webbplatser blockeras}}</translation>
 <translation id="5426179911063097041"><ph name="SITE" /> vill skicka aviseringar</translation>
@@ -2163,6 +2172,7 @@
 <translation id="6738516213925468394">Din data krypterades med din <ph name="BEGIN_LINK" />lösenfras för synkronisering<ph name="END_LINK" /> den <ph name="TIME" />. Ange den om du vill starta synkroniseringen.</translation>
 <translation id="674375294223700098">Fel - okänt servercertifikat.</translation>
 <translation id="6744009308914054259">Du kan öppna Nedladdningar och läsa artiklar offline medan du väntar på anslutningen.</translation>
+<translation id="6751487147225428522">ROC 8K</translation>
 <translation id="6752086006821653994">Telefonkonferens</translation>
 <translation id="6753269504797312559">Policyvärde</translation>
 <translation id="6755241357817244406">chrome://flags</translation>
@@ -2196,6 +2206,7 @@
 <translation id="6846340164947227603">Använd ett virtuellt kreditkortsnummer …</translation>
 <translation id="6852204201400771460">Vill du läsa in appen igen?</translation>
 <translation id="6857776781123259569">Hantera lösenord …</translation>
+<translation id="6864189428899665393">267 x 389 mm</translation>
 <translation id="686485648936420384">Resurser för konsumenter</translation>
 <translation id="6865412394715372076">Det går inte att verifiera kortet just nu</translation>
 <translation id="6869334554832814367">Privatlån</translation>
@@ -2308,9 +2319,11 @@
 <translation id="7138472120740807366">Leveranssätt</translation>
 <translation id="7139892792842608322">Primär bricka</translation>
 <translation id="714064300541049402">Sida 2 bild X – byte</translation>
+<translation id="7143682719845053166">PRC 32K</translation>
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> och <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> till}other{<ph name="PAYMENT_METHOD_PREVIEW" /> och <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> till}}</translation>
 <translation id="7153618581592392745">Lavendelfärgad</translation>
 <translation id="7156870133441232244">Servern behöver uppgraderas till TLS 1.2 eller senare.</translation>
+<translation id="7163295244162773898">{0,plural, =1{Vill du kopiera en konfidentiell fil?}other{Vill du kopiera konfidentiella filer?}}</translation>
 <translation id="717330890047184534">Gaia-id:</translation>
 <translation id="7174545416324379297">Sammanslagen</translation>
 <translation id="7175401108899573750">{SHIPPING_OPTIONS,plural, =0{<ph name="SHIPPING_OPTION_PREVIEW" />}=1{<ph name="SHIPPING_OPTION_PREVIEW" /> och <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> till}other{<ph name="SHIPPING_OPTION_PREVIEW" /> och <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> till}}</translation>
@@ -2388,6 +2401,7 @@
 <translation id="7363096869660964304">Men du är inte osynlig. Inkognitoläget döljer inte webbhistoriken för din arbetsgivare, internetleverantören eller webbplatserna du besöker.</translation>
 <translation id="7365596969960773405"><ph name="MANAGE_ADDRESSES_FOCUSED_FRIENDLY_MATCH_TEXT" />, tryck på Tabb och sedan på Retur om du vill lägga till och hantera adresser i inställningarna för Chrome</translation>
 <translation id="7365849542400970216">Vill du låta webbplatsen veta om du använder enheten aktivt?</translation>
+<translation id="7366117520888504990">198 x 275 mm</translation>
 <translation id="7366362069757178916">Betalningshanterare</translation>
 <translation id="7372973238305370288">sökresultat</translation>
 <translation id="7374461526650987610">Protokollhanterare</translation>
@@ -2547,6 +2561,7 @@
 <translation id="7687186412095877299">Fyller i sparade betalningsmetoder i betalningsformulär</translation>
 <translation id="7687305263118037187">Tidsgränsen för nytt försök överskreds</translation>
 <translation id="7687451951329798396">Vad säger andra källor?</translation>
+<translation id="7690647519407127574">Oufuku Hagaki-vykort</translation>
 <translation id="7693583928066320343">Sidordning mottagen</translation>
 <translation id="7696089921647603491">Klassisk rock och gamla godingar</translation>
 <translation id="769721561045429135">Du har för närvarande kort som bara kan användas på den här enheten. Klicka på Fortsätt om du vill granska korten.</translation>
@@ -2720,6 +2735,7 @@
 <translation id="8202370299023114387">Konflikt</translation>
 <translation id="8210604850413485128">Webbhotell</translation>
 <translation id="8211406090763984747">Anslutningen är säker</translation>
+<translation id="8213853114485953510">JIS Exec</translation>
 <translation id="8217240300496046857">Webbplatser kan inte använda cookies som spårar dig på webben. Funktioner på vissa webbplatser kan sluta fungera.</translation>
 <translation id="8217748145574471584">Personal/bemanning</translation>
 <translation id="8218327578424803826">Tilldelad plats:</translation>
@@ -2917,6 +2933,7 @@
 <translation id="8763986294015493060">Stäng alla inkognitofönster som är öppna för närvarande</translation>
 <translation id="8766943070169463815">Ett arbetsblad för autentisering av användaruppgifter för säker betalning har öppnats</translation>
 <translation id="8767765348545497220">Stäng hjälpbubblan</translation>
+<translation id="877348612833018844">{0,plural, =1{Vill du flytta en konfidentiell fil?}other{Vill du flytta konfidentiella filer?}}</translation>
 <translation id="877985182522063539">A4</translation>
 <translation id="8785658048882205566">Motorcyklar</translation>
 <translation id="8790007591277257123">&amp;Gör om Ta bort</translation>
@@ -2933,6 +2950,7 @@
 <translation id="8816395686387277279"><ph name="UPDATE_CHROME_FOCUSED_FRIENDLY_MATCH_TEXT" />, tryck på Tabb och sedan på Retur om du vill uppdatera Chrome i inställningarna för Chrome</translation>
 <translation id="8820817407110198400">Bokmärken</translation>
 <translation id="882338992931677877">Manuell plats</translation>
+<translation id="8830320733681313421">Hagaki-vykort</translation>
 <translation id="8834380158646307944">Knappen Stäng inkognitofönster: tryck på Retur om du vill stänga alla inkognitofönster som är öppna för närvarande</translation>
 <translation id="883848425547221593">Övriga bokmärken</translation>
 <translation id="884264119367021077">Leveransadress</translation>
diff --git a/components/strings/components_strings_ta.xtb b/components/strings/components_strings_ta.xtb
index 58d6295c..9cd21fc 100644
--- a/components/strings/components_strings_ta.xtb
+++ b/components/strings/components_strings_ta.xtb
@@ -307,6 +307,7 @@
 <translation id="168841957122794586">சேவையக சான்றிதழில் வலுவற்ற குறியீட்டாக்க விசை இருக்கிறது.</translation>
 <translation id="1697532407822776718">எல்லாவற்றையும் அமைத்துவிட்டீர்கள்!</translation>
 <translation id="1699570257714336246">தகவல் முழுமையாக இல்லை</translation>
+<translation id="1702815194757674443">ROC 16K</translation>
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706625117072057435">அளவுமாற்ற நிலைகள்</translation>
 <translation id="1706954506755087368">{1,plural, =1{இந்தச் சேவையகம் தான் <ph name="DOMAIN" /> என்பதை நிரூபிக்க முடியவில்லை; இதன் பாதுகாப்புச் சான்றிதழ் நாளை முதலே செல்லுபடியாகும். இது தவறான உள்ளமைவால் ஏற்பட்டிருக்கலாம் அல்லது தீங்கிழைப்பவர் உங்கள் இணைப்பில் குறுக்கிட்டிருக்கலாம்.}other{இந்தச் சேவையகம் தான் <ph name="DOMAIN" /> என்பதை நிரூபிக்க முடியவில்லை; இதன் பாதுகாப்புச் சான்றிதழ் எதிர்காலத்தில் # நாட்களில் ஏற்றுக்கொள்ளப்படும். இது தவறான உள்ளமைவால் ஏற்பட்டிருக்கலாம் அல்லது தீங்கிழைப்பவர் உங்கள் இணைப்பில் குறுக்கிட்டிருக்கலாம்.}}</translation>
@@ -550,6 +551,7 @@
 <translation id="2359347814217202136">{NUM_DAYS,plural, =0{ஒரு நாளுக்குள்}=1{ஒரு நாளில்}other{{NUM_DAYS} நாட்களில்}}</translation>
 <translation id="2359629602545592467">பல</translation>
 <translation id="2359808026110333948">தொடர்க</translation>
+<translation id="2361263712565360498">275 x 395 மிமீ</translation>
 <translation id="236340516568226369">அளவை மாற்றும் பட்டன்களைக் காட்டும் மெனு</translation>
 <translation id="2367567093518048410">நிலை</translation>
 <translation id="2380886658946992094">Legal</translation>
@@ -1421,6 +1423,7 @@
 <translation id="4751476147751820511">நகர்வு அல்லது ஒளி உணர்விகள்</translation>
 <translation id="4754461935447132332">பாதுகாப்பற்ற தளங்களில் அனுமதிக்கப்படாது</translation>
 <translation id="4756388243121344051">&amp;வரலாறு</translation>
+<translation id="4756501505996488486">PRC 16K</translation>
 <translation id="4757993714154412917">ஏமாற்றக்கூடிய தளத்தில் கடவுச்சொல்லை உள்ளிட்டுள்ளீர்கள். உங்கள் கணக்குகளைப் பாதுகாக்க, நீங்கள் சேமித்துள்ள கடவுச்சொற்களைச் சரிபார்க்குமாறு Chromium பரிந்துரைக்கிறது.</translation>
 <translation id="4758311279753947758">தொடர்புத் தகவலைச் சேர்</translation>
 <translation id="4761104368405085019">உங்கள் மைக்ரோஃபோனைப் பயன்படுத்தலாம்</translation>
@@ -2158,6 +2161,7 @@
 <translation id="6738516213925468394"><ph name="TIME" />க்கு உங்கள் தரவு உங்கள் <ph name="BEGIN_LINK" />ஒத்திசைவுக் கடவுச்சொற்றொடரைக்<ph name="END_LINK" /> கொண்டு என்க்ரிப்ட் செய்யப்பட்டது. ஒத்திசைவைத் தொடங்க, அதை உள்ளிடவும்.</translation>
 <translation id="674375294223700098">தெரியாத சேவையகச் சான்றிதழ் பிழை.</translation>
 <translation id="6744009308914054259">இணைப்புக்காகக் காத்திருக்கும்போது ​​ஆஃப்லைன் கட்டுரைகளைப் படிக்க, ‘பதிவிறக்கங்கள்’ என்பதைப் பார்க்கவும்.</translation>
+<translation id="6751487147225428522">ROC 8K</translation>
 <translation id="6752086006821653994">டெலி கான்ஃபிரன்ஸிங்</translation>
 <translation id="6753269504797312559">கொள்கை மதிப்பு</translation>
 <translation id="6755241357817244406">chrome://flags</translation>
@@ -2191,6 +2195,7 @@
 <translation id="6846340164947227603">விர்ச்சுவல் கார்டு எண்ணைப் பயன்படுத்துக...</translation>
 <translation id="6852204201400771460">ஆப்ஸை ரெஃப்ரெஷ் செய்யவா?</translation>
 <translation id="6857776781123259569">கடவுச்சொற்களை நிர்வகி...</translation>
+<translation id="6864189428899665393">267 x 389 மிமீ</translation>
 <translation id="686485648936420384">வாடிக்கையாளருக்கு வழங்கக்கூடிய தகவல்கள்</translation>
 <translation id="6865412394715372076">இந்தக் கார்டை இப்போது சரிபார்க்க முடியாது</translation>
 <translation id="6869334554832814367">தனிநபர் கடன்கள்</translation>
@@ -2303,6 +2308,7 @@
 <translation id="7138472120740807366">டெலிவரி முறை</translation>
 <translation id="7139892792842608322">முதன்மை டிரே</translation>
 <translation id="714064300541049402">சைடு 2 இமேஜ் X ஷிஃப்ட்</translation>
+<translation id="7143682719845053166">PRC 32K</translation>
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" />, மேலும் <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}other{<ph name="PAYMENT_METHOD_PREVIEW" />, மேலும் <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}}</translation>
 <translation id="7153618581592392745">லாவெண்டர் நிறம்</translation>
 <translation id="7156870133441232244">சேவையகத்தை TLS 1.2 அல்லது அதற்குப் பிந்தைய பதிப்பிற்கு மேம்படுத்த வேண்டும்.</translation>
@@ -2383,6 +2389,7 @@
 <translation id="7363096869660964304">இருப்பினும் உங்கள் செயல்பாடுகள் மறைக்கப்படாது. மறைநிலைப் பயன்முறையில் உலாவினாலும் அதுகுறித்த தகவல்களை உங்கள் நிறுவனம், இணையச் சேவை வழங்குநர், நீங்கள் பார்வையிடும் இணையதளம் போன்றவற்றால் அறிந்துகொள்ள முடியும்.</translation>
 <translation id="7365596969960773405"><ph name="MANAGE_ADDRESSES_FOCUSED_FRIENDLY_MATCH_TEXT" />. Chrome அமைப்புகளில் இணைய முகவரிகளைச் சேர்க்கவும் நிர்வகிக்கவும் Tab விசையை அழுத்திவிட்டு Enter விசையை அழுத்துங்கள்</translation>
 <translation id="7365849542400970216">சாதனத்தில் நீங்கள் செயலில் இருப்பதை அறிந்துகொள்ளவா?</translation>
+<translation id="7366117520888504990">198 x 275 மிமீ</translation>
 <translation id="7366362069757178916">பேமெண்ட் ஹேண்ட்லர்கள்</translation>
 <translation id="7372973238305370288">தேடல் முடிவு</translation>
 <translation id="7374461526650987610">நெறிமுறை ஹேண்ட்லர்கள்</translation>
@@ -2542,6 +2549,7 @@
 <translation id="7687186412095877299">கட்டணப் படிவங்களில் உங்கள் சேமிக்கப்பட்ட கட்டண முறைகளை நிரப்பும்</translation>
 <translation id="7687305263118037187">மீண்டும் முயல்வதற்கான நேர முடிவு</translation>
 <translation id="7687451951329798396">பிற மூலங்கள் என்ன சொல்கின்றன?</translation>
+<translation id="7690647519407127574">Oufuku Hagaki Postcard</translation>
 <translation id="7693583928066320343">பெறப்பட்ட பக்க வரிசை</translation>
 <translation id="7696089921647603491">கிளாசிக் ராக் &amp; பழைய பாடல்கள்</translation>
 <translation id="769721561045429135">தற்போது, இந்தச் சாதனத்தில் மட்டுமே பயன்படுத்தக்கூடிய கார்டுகள் உள்ளன கார்டுகளைப் பார்க்க, ‘தொடர்க’ என்பதைக் கிளிக் செய்யவும்.</translation>
@@ -2715,6 +2723,7 @@
 <translation id="8202370299023114387">முரண்பாடு</translation>
 <translation id="8210604850413485128">இணைய ஹோஸ்டிங்</translation>
 <translation id="8211406090763984747">இணைப்பு பாதுகாப்பானது</translation>
+<translation id="8213853114485953510">JIS Exec</translation>
 <translation id="8217240300496046857">உங்கள் இணையச் செயல்பாடுகளைக் கண்காணிக்கும் குக்கீகளைத் தளங்களால் பயன்படுத்த முடியாது. சில தளங்களிலுள்ள அம்சங்கள் செயல்படாமல் போகக்கூடும்.</translation>
 <translation id="8217748145574471584">மனித வளங்கள்</translation>
 <translation id="8218327578424803826">ஒதுக்கிய இருப்பிடம்:</translation>
@@ -2927,6 +2936,7 @@
 <translation id="8816395686387277279"><ph name="UPDATE_CHROME_FOCUSED_FRIENDLY_MATCH_TEXT" />, Chrome அமைப்புகளில் Chromeமைப் புதுப்பிக்க Tab விசையை அழுத்திய பிறகு Enter விசையை அழுத்துங்கள்</translation>
 <translation id="8820817407110198400">புக்மார்க்குகள்</translation>
 <translation id="882338992931677877">மேனுவல் ஸ்லாட்</translation>
+<translation id="8830320733681313421">Hagaki Postcard</translation>
 <translation id="8834380158646307944">மறைநிலைச் சாளரங்களை மூடுவதற்கான பட்டன். தற்போது திறந்துள்ள மறைநிலைச் சாளரங்களை மூட Enter பட்டனை அழுத்துங்கள்</translation>
 <translation id="883848425547221593">மற்ற புக்மார்க்குகள்</translation>
 <translation id="884264119367021077">ஷிப்பிங் முகவரி</translation>
diff --git a/components/strings/components_strings_te.xtb b/components/strings/components_strings_te.xtb
index 79e1e44..8af1c0f 100644
--- a/components/strings/components_strings_te.xtb
+++ b/components/strings/components_strings_te.xtb
@@ -1324,7 +1324,7 @@
 <translation id="4441832193888514600">క్లౌడ్ యూజర్ పాలసీ ద్వారా మాత్రమే పాలసీని సెట్ చేయాలి కాబట్టి ఇది విస్మరించబడింది.</translation>
 <translation id="4450893287417543264">మళ్లీ చూపవద్దు</translation>
 <translation id="4451135742916150903">HID పరికరాలకు కనెక్ట్ చేయడానికి సైట్ అనుమతి అడగవచ్చు</translation>
-<translation id="4452328064229197696">మీరు ఇప్పుడే ఉపయోగించిన పాస్‌వర్డ్, డేటా ఉల్లంఘనలో కనగొనబడింది. మీ ఖాతాలను సురక్షితం చేయడానికి, మీరు సేవ్ చేసిన పాస్‌వర్డ్‌లను చెక్ చేయమని Google పాస్‌వర్డ్ మేనేజర్ సిఫార్సు చేస్తోంది.</translation>
+<translation id="4452328064229197696">మీరు ఇప్పుడే ఉపయోగించిన పాస్‌వర్డ్, డేటా ఉల్లంఘనలో కనగొనబడింది. మీ ఖాతాలను సురక్షితం చేయడానికి, మీరు సేవ్ చేసిన పాస్‌వర్డ్‌లను చెక్ చేయమని Google Password Manager సిఫార్సు చేస్తోంది.</translation>
 <translation id="4455222631300069614">ఇప్పుడే మీ పాస్‌వర్డ్‌ను మార్చండి</translation>
 <translation id="4460315069258617173">మీరు ఈ సైట్‌కు సంబంధించి ట్యాబ్‌లను మూసివేసే వరకు అనుమతించబడదు</translation>
 <translation id="4464826014807964867">మీ సంస్థకు సంబంధించిన సమాచారం ఉన్న వెబ్‌సైట్‌లు</translation>
@@ -1908,7 +1908,7 @@
 <translation id="5989320800837274978">స్థిర ప్రాక్సీ సర్వర్‌లు లేదా ఒక .pac స్క్రిప్ట్ URL పేర్కొనబడలేదు.</translation>
 <translation id="5992691462791905444">ఇంజినీరింగ్ 'Z' ఫోల్డ్</translation>
 <translation id="5995727681868049093">మీ Google ఖాతాలో మీ సమాచారం, గోప్యత, ఇంకా భద్రతను మేనేజ్ చేయండి</translation>
-<translation id="5997247540087773573">మీరు ఇప్పుడే ఉపయోగించిన పాస్‌వర్డ్, డేటా ఉల్లంఘనలో కనగొనబడింది. మీ ఖాతాలను సురక్షితం చేయడానికి, దానిని ఇప్పుడే మార్చి, మీరు సేవ్ చేసిన పాస్‌వర్డ్‌లను చెక్ చేయమని Google పాస్‌వర్డ్ మేనేజర్ సిఫార్సు చేస్తోంది.</translation>
+<translation id="5997247540087773573">మీరు ఇప్పుడే ఉపయోగించిన పాస్‌వర్డ్, డేటా ఉల్లంఘనలో కనగొనబడింది. మీ ఖాతాలను సురక్షితం చేయడానికి, దానిని ఇప్పుడే మార్చి, మీరు సేవ్ చేసిన పాస్‌వర్డ్‌లను చెక్ చేయమని Google Password Manager సిఫార్సు చేస్తోంది.</translation>
 <translation id="6000758707621254961">'<ph name="SEARCH_TEXT" />' అనే దానికి <ph name="RESULT_COUNT" /> ఫలితాలు లభించాయి</translation>
 <translation id="6006484371116297560">క్లాసిక్</translation>
 <translation id="6008122969617370890">N-నుండి-1 వరకు ఉన్న క్రమం</translation>
diff --git a/components/strings/components_strings_th.xtb b/components/strings/components_strings_th.xtb
index 827b1d0..c70cc17 100644
--- a/components/strings/components_strings_th.xtb
+++ b/components/strings/components_strings_th.xtb
@@ -307,6 +307,7 @@
 <translation id="168841957122794586">ใบรับรองของเซิร์ฟเวอร์มีคีย์การเข้ารหัสที่ไม่รัดกุม</translation>
 <translation id="1697532407822776718">คุณพร้อมแล้ว!</translation>
 <translation id="1699570257714336246">ข้อมูลไม่ครบ</translation>
+<translation id="1702815194757674443">ROC 16K</translation>
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706625117072057435">ระดับการซูม</translation>
 <translation id="1706954506755087368">{1,plural, =1{เซิร์ฟเวอร์นี้พิสูจน์ไม่ได้ว่าเป็น <ph name="DOMAIN" /> เพราะใบรับรองความปลอดภัยควรจะเริ่มใช้งานได้ตั้งแต่วันพรุ่งนี้ โดยอาจเกิดจากการกำหนดค่าผิดหรือผู้บุกรุกที่ขัดขวางการเชื่อมต่อของคุณ}other{เซิร์ฟเวอร์นี้พิสูจน์ไม่ได้ว่าเป็น <ph name="DOMAIN" /> เพราะใบรับรองความปลอดภัยควรจะเริ่มใช้งานได้ในอีก # วันข้างหน้า โดยอาจเกิดจากการกำหนดค่าผิดหรือผู้บุกรุกที่ขัดขวางการเชื่อมต่อของคุณ}}</translation>
@@ -395,6 +396,7 @@
 <translation id="192020519938775529">{COUNT,plural, =0{ไม่มี}=1{เว็บไซต์ 1 แห่ง}other{เว็บไซต์ # แห่ง}}</translation>
 <translation id="1924727005275031552">ใหม่</translation>
 <translation id="1927439593081478069">ปุ่ม "เรียกใช้การตรวจสอบความปลอดภัยของ Chrome" กด Enter เพื่อเรียกใช้การตรวจสอบความปลอดภัยในการตั้งค่า Chrome</translation>
+<translation id="1935995810530254458">คัดลอกเลย</translation>
 <translation id="1939175642807587452">สามารถขอส่งการแจ้งเตือนได้</translation>
 <translation id="1943994668912612445">การออกแบบ</translation>
 <translation id="1945968466830820669">คุณอาจเข้าถึงบัญชีขององค์กรไม่ได้หรือถูกโจรกรรมข้อมูลประจำตัว Chromium ขอแนะนำให้เปลี่ยนรหัสผ่านตอนนี้เลย</translation>
@@ -448,6 +450,7 @@
 <translation id="2085876078937250610">บันทึก…</translation>
 <translation id="2088086323192747268">ปุ่มจัดการการซิงค์ กด Enter เพื่อจัดการข้อมูลที่คุณซิงค์ในการตั้งค่า Chrome</translation>
 <translation id="2091887806945687916">เสียง</translation>
+<translation id="2093982008204312032">Google Chrome กำลังพยายามปิด Windows Hello เพื่อป้อนรหัสผ่าน</translation>
 <translation id="2094505752054353250">โดเมนไม่ตรง</translation>
 <translation id="2099652385553570808">เย็บด้วยลวดเย็บกระดาษด้านซ้าย 3 ครั้ง</translation>
 <translation id="2101225219012730419">รุ่น:</translation>
@@ -550,6 +553,7 @@
 <translation id="2359347814217202136">{NUM_DAYS,plural, =0{ในเวลาไม่ถึง 1 วัน}=1{ใน 1 วัน}other{ใน {NUM_DAYS} วัน}}</translation>
 <translation id="2359629602545592467">หลายรายการ</translation>
 <translation id="2359808026110333948">ต่อไป</translation>
+<translation id="2361263712565360498">275 x 395 มม.</translation>
 <translation id="236340516568226369">เมนูสำหรับสลับการปรับขนาด</translation>
 <translation id="2367567093518048410">ระดับ</translation>
 <translation id="2380886658946992094">Legal</translation>
@@ -710,6 +714,7 @@
 <translation id="2799223571221894425">เปิดใหม่</translation>
 <translation id="2803306138276472711">เมื่อเร็วๆ นี้ Google Safe Browsing <ph name="BEGIN_LINK" />ตรวจพบมัลแวร์<ph name="END_LINK" />ใน <ph name="SITE" /> เว็บไซต์ที่โดยปกติจะปลอดภัยบางครั้งอาจติดมัลแวร์</translation>
 <translation id="2807052079800581569">ตำแหน่งรูปภาพตามแกน Y</translation>
+<translation id="2808278141522721006">คุณเปิดหรือปิด Windows Hello ได้ใน<ph name="SETTINGS" /></translation>
 <translation id="2820957248982571256">กำลังสแกน...</translation>
 <translation id="2824775600643448204">ที่อยู่และแถบค้นหา</translation>
 <translation id="2826760142808435982">การเชื่อมต่อถูกเข้ารหัสและรับรองความถูกต้องโดยใช้ <ph name="CIPHER" /> และใช้ <ph name="KX" /> เป็นกลไกการแลกเปลี่ยนคีย์</translation>
@@ -880,6 +885,7 @@
 <translation id="3288238092761586174"><ph name="URL" /> อาจต้องทำตามขั้นตอนเพิ่มเติมเพื่อยืนยันการชำระเงิน</translation>
 <translation id="3293642807462928945">ดูข้อมูลเพิ่มเติมเกี่ยวกับนโยบาย <ph name="POLICY_NAME" /></translation>
 <translation id="3295444047715739395">ดูและจัดการรหัสผ่านในการตั้งค่า Chrome</translation>
+<translation id="3299098170013242198">Windows Hello เปิดอยู่สำหรับการป้อนรหัสผ่าน</translation>
 <translation id="3303855915957856445">ไม่พบผลการค้นหา</translation>
 <translation id="3304073249511302126">การสแกนหาบลูทูธ</translation>
 <translation id="33073482541490531">ระบบพบว่ารหัสผ่านที่คุณเพิ่งใช้มีการรั่วไหลในการละเมิดข้อมูลครั้งหนึ่ง เครื่องมือจัดการรหัสผ่านแนะนำให้เปลี่ยนรหัสผ่านนี้ทันที</translation>
@@ -1027,6 +1033,7 @@
 <translation id="3678342917559046352">ส่วนขยายไม่ถูกต้อง: ค่าควรอยู่ในรูปแบบต่อไปนี้ &lt;extension_id&gt; หรือ &lt;extension_id&gt;;&lt;update_url&gt;</translation>
 <translation id="3678529606614285348">เปิดหน้าเว็บในหน้าต่างที่ไม่ระบุตัวตนใหม่ (Ctrl-Shift-N)</translation>
 <translation id="3681007416295224113">ข้อมูลในใบรับรอง</translation>
+<translation id="3699374065820972102">Touch ID เปิดอยู่สำหรับการป้อนรหัสผ่าน</translation>
 <translation id="3701427423622901115">รับทราบการรีเซ็ตแล้ว</translation>
 <translation id="3704162925118123524">เครือข่ายที่คุณใช้อาจต้องการให้คุณไปที่หน้าการเข้าสู่ระบบ</translation>
 <translation id="3705189812819839667"><ph name="RESULT_OWNER" /> - <ph name="RESULT_PRODUCT_SOURCE" /></translation>
@@ -1140,6 +1147,7 @@
 <translation id="4014128326099193693">{COUNT,plural, =1{เอกสาร PDF ที่มี {COUNT} หน้า}other{เอกสาร PDF ที่มี {COUNT} หน้า}}</translation>
 <translation id="4022639246993848966">3.5x5</translation>
 <translation id="4023431997072828269">เนื่องจากแบบฟอร์มนี้ส่งผ่านการเชื่อมต่อที่ไม่ปลอดภัย ผู้อื่นอาจมองเห็นข้อมูลของคุณ</translation>
+<translation id="4024923292610332139">ปิด TouchID เพื่อกรอกรหัสผ่าน</translation>
 <translation id="4025913568718019429">ปุ่มจัดการการตั้งค่าความเป็นส่วนตัวของ Google กด Enter เพื่อไปที่การตั้งค่าความเป็นส่วนตัวของบัญชี Google</translation>
 <translation id="4030383055268325496">&amp;เลิกทำการเพิ่ม</translation>
 <translation id="4031179711345676612">อนุญาตให้ใช้ไมโครโฟน</translation>
@@ -1256,6 +1264,7 @@
 <translation id="42981349822642051">ขยาย</translation>
 <translation id="4300675098767811073">เจาะรูด้านขวาหลายรู</translation>
 <translation id="4302514097724775343">แตะไดโนเสาร์เพื่อเล่น</translation>
+<translation id="4304049446746819918">{0,plural, =1{นโยบายของผู้ดูแลระบบไม่แนะนำให้ย้ายไฟล์นี้ไปยัง <ph name="DESTINATION_NAME" />}other{นโยบายของผู้ดูแลระบบไม่แนะนำให้ย้ายไฟล์เหล่านี้ไปยัง <ph name="DESTINATION_NAME" />}}</translation>
 <translation id="4305666528087210886">เข้าถึงไฟล์ไม่ได้</translation>
 <translation id="4306529830550717874">บันทึกที่อยู่ไหม</translation>
 <translation id="4306812610847412719">คลิปบอร์ด</translation>
@@ -1424,6 +1433,7 @@
 <translation id="4751476147751820511">เซ็นเซอร์จับความเคลื่อนไหวหรือเซ็นเซอร์แสง</translation>
 <translation id="4754461935447132332">ไม่อนุญาตสำหรับเว็บไซต์ที่ไม่ปลอดภัย</translation>
 <translation id="4756388243121344051">&amp;ประวัติการเข้าชม</translation>
+<translation id="4756501505996488486">PRC 16K</translation>
 <translation id="4757993714154412917">คุณเพิ่งใส่รหัสผ่านในเว็บไซต์ที่มีการหลอกลวง Chromium ขอแนะนำให้ตรวจสอบรหัสผ่านที่บันทึกไว้เพื่อรักษาความปลอดภัยของบัญชี</translation>
 <translation id="4758311279753947758">เพิ่มข้อมูลติดต่อ</translation>
 <translation id="4761104368405085019">ใช้ไมโครโฟนของคุณ</translation>
@@ -1485,6 +1495,7 @@
 <translation id="4900217275619098670">ม้วนกระดาษ 9</translation>
 <translation id="4901778704868714008">บันทึก...</translation>
 <translation id="4905659621780993806">ผู้ดูแลระบบจะรีสตาร์ทอุปกรณ์โดยอัตโนมัติในวันที่ <ph name="TIME" /> เวลา <ph name="DATE" /> บันทึกรายการที่เปิดอยู่ก่อนอุปกรณ์จะรีสตาร์ท</translation>
+<translation id="4911007278801291296">คุณเปิดหรือปิด Touch ID ได้ใน<ph name="SETTINGS" /></translation>
 <translation id="4913987521957242411">เจาะรูด้านซ้ายบน</translation>
 <translation id="4918221908152712722">ติดตั้ง <ph name="APP_NAME" /> (ไม่จำเป็นต้องดาวน์โหลด)</translation>
 <translation id="4923459931733593730">การชำระเงิน</translation>
@@ -1630,6 +1641,7 @@
 <translation id="5254043433801397071">เพิ่มประสิทธิภาพเนื้อหาที่พิมพ์</translation>
 <translation id="5254958791078852567">E1</translation>
 <translation id="5255690596502591079">จับภาพเลย</translation>
+<translation id="5257739419779698609">{0,plural, =1{นโยบายของผู้ดูแลระบบไม่แนะนำให้คัดลอกไฟล์นี้ไปยัง <ph name="DESTINATION_NAME" />}other{นโยบายของผู้ดูแลระบบไม่แนะนำให้คัดลอกไฟล์เหล่านี้ไปยัง <ph name="DESTINATION_NAME" />}}</translation>
 <translation id="5266128565379329178">เย็บเล่มด้านบน</translation>
 <translation id="5269225904387178860">เจาะรูด้านล่าง 4 รู</translation>
 <translation id="5269999699920406580">ฟีเจอร์ที่ใช้กับทั้งระบบจะตั้งค่าได้โดยเจ้าของเท่านั้น: <ph name="OWNER_EMAIL" /></translation>
@@ -1677,6 +1689,7 @@
 <translation id="5357848622083956825">ทัศนศิลป์และการออกแบบ</translation>
 <translation id="536296301121032821">ไม่สามารถจัดเก็บการตั้งค่านโยบาย</translation>
 <translation id="5363309033720083897">พอร์ตอนุกรมนี้ได้รับอนุญาตจากผู้ดูแลระบบ</translation>
+<translation id="5363713372507812442">ค้นหาเส้นทางการท่องเว็บ</translation>
 <translation id="5371425731340848620">อัปเดตบัตร</translation>
 <translation id="5377026284221673050">"นาฬิกาของคุณช้ากว่าปัจจุบัน" หรือ "นาฬิกาของคุณเร็วกว่าปัจจุบัน" หรือ "&lt;span class="error-code"&gt;NET::ERR_CERT_DATE_INVALID&lt;/span&gt;"</translation>
 <translation id="5379027395132364855">ปุ่มสร้างงานนำเสนอ กด Enter เพื่อสร้างงานนำเสนอใหม่ใน Google สไลด์อย่างรวดเร็ว</translation>
@@ -1692,6 +1705,7 @@
 <translation id="5412236728747081950">เว็บไซต์นี้รับข้อมูลความสนใจของคุณจาก Chrome เพื่อแสดงโฆษณาที่เกี่ยวข้องมากขึ้น</translation>
 <translation id="5412245327974352290"><ph name="TRADITIONAL_TEXT" /> - <ph name="ADDITIONAL_TEXT" /></translation>
 <translation id="541416427766103491">สแต็กเกอร์ 4</translation>
+<translation id="5414511064953050917">ย้ายเลย</translation>
 <translation id="5421136146218899937">ล้างข้อมูลการท่องเว็บ...</translation>
 <translation id="5425241977284572032">{NUM_COOKIES,plural, =0{ไม่มีเว็บไซต์ที่ถูกบล็อก}=1{มี 1 เว็บไซต์ที่ถูกบล็อก}other{มี # เว็บไซต์ที่ถูกบล็อก}}</translation>
 <translation id="5426179911063097041"><ph name="SITE" /> ต้องการส่งการแจ้งเตือนให้คุณ</translation>
@@ -2162,6 +2176,7 @@
 <translation id="6738516213925468394">ข้อมูลของคุณเข้ารหัสลับไว้ด้วย<ph name="BEGIN_LINK" />รหัสผ่านการซิงค์<ph name="END_LINK" />เมื่อ <ph name="TIME" /> ป้อนรหัสผ่านเพื่อเริ่มซิงค์</translation>
 <translation id="674375294223700098">ข้อผิดพลาดใบรับรองของเซิร์ฟเวอร์ที่ไม่รู้จัก</translation>
 <translation id="6744009308914054259">ระหว่างที่รอการเชื่อมต่อ คุณไปที่หน้า "ดาวน์โหลด" เพื่ออ่านบทความออฟไลน์ได้</translation>
+<translation id="6751487147225428522">ROC 8K</translation>
 <translation id="6752086006821653994">การประชุมทางไกล</translation>
 <translation id="6753269504797312559">ค่านโยบาย</translation>
 <translation id="6755241357817244406">chrome://flags</translation>
@@ -2195,6 +2210,7 @@
 <translation id="6846340164947227603">ใช้หมายเลขบัตรเสมือน...</translation>
 <translation id="6852204201400771460">โหลดแอปซ้ำไหม</translation>
 <translation id="6857776781123259569">จัดการรหัสผ่าน...</translation>
+<translation id="6864189428899665393">267 x 389 มม.</translation>
 <translation id="686485648936420384">แหล่งข้อมูลสำหรับผู้บริโภค</translation>
 <translation id="6865412394715372076">ยืนยันบัตรนี้ไม่ได้ในขณะนี้</translation>
 <translation id="6869334554832814367">สินเชื่อส่วนบุคคล</translation>
@@ -2307,9 +2323,11 @@
 <translation id="7138472120740807366">วิธีการนำส่งสินค้า</translation>
 <translation id="7139892792842608322">ถาดหลัก</translation>
 <translation id="714064300541049402">เปลี่ยนตำแหน่งรูปภาพด้าน 2 ตามแกน X</translation>
+<translation id="7143682719845053166">PRC 32K</translation>
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> และอีก <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> รายการ}other{<ph name="PAYMENT_METHOD_PREVIEW" /> และอีก <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> รายการ}}</translation>
 <translation id="7153618581592392745">ลาเวนเดอร์</translation>
 <translation id="7156870133441232244">ควรอัปเกรดเซิร์ฟเวอร์เป็น TLS 1.2 ขึ้นไป</translation>
+<translation id="7163295244162773898">{0,plural, =1{คัดลอกไฟล์ลับใช่ไหม}other{คัดลอกไฟล์ลับใช่ไหม}}</translation>
 <translation id="717330890047184534">รหัส GAIA:</translation>
 <translation id="7174545416324379297">รวมแล้ว</translation>
 <translation id="7175401108899573750">{SHIPPING_OPTIONS,plural, =0{<ph name="SHIPPING_OPTION_PREVIEW" />}=1{<ph name="SHIPPING_OPTION_PREVIEW" /> และอีก <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> วิธี}other{<ph name="SHIPPING_OPTION_PREVIEW" /> และอีก <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> วิธี}}</translation>
@@ -2387,6 +2405,7 @@
 <translation id="7363096869660964304">อย่างไรก็ตาม คนอื่นจะยังมองเห็นคุณ การเข้าสู่โหมดไม่ระบุตัวตนไม่ได้เป็นการซ่อนการท่องเว็บจากนายจ้างของคุณ ผู้ให้บริการอินเทอร์เน็ต หรือเว็บไซต์ที่คุณเข้าชม</translation>
 <translation id="7365596969960773405"><ph name="MANAGE_ADDRESSES_FOCUSED_FRIENDLY_MATCH_TEXT" /> กด Tab ตามด้วย Enter เพื่อเพิ่มและจัดการที่อยู่ในการตั้งค่า Chrome</translation>
 <translation id="7365849542400970216">หากต้องการทราบเกี่ยวกับการใช้งานอุปกรณ์</translation>
+<translation id="7366117520888504990">198 x 275 มม.</translation>
 <translation id="7366362069757178916">เครื่องจัดการการชำระเงิน</translation>
 <translation id="7372973238305370288">ผลการค้นหา</translation>
 <translation id="7374461526650987610">เครื่องจัดการโปรโตคอล</translation>
@@ -2546,6 +2565,7 @@
 <translation id="7687186412095877299">กรอกฟอร์มการชำระเงินด้วยวิธีการชำระเงินที่คุณบันทึกไว้</translation>
 <translation id="7687305263118037187">การลองใหม่หมดเวลา</translation>
 <translation id="7687451951329798396">ดูข้อมูลจากแหล่งที่มาอื่นๆ</translation>
+<translation id="7690647519407127574">ไปรษณียบัตร Oufuku Hagaki</translation>
 <translation id="7693583928066320343">ลำดับหน้าที่ได้รับ</translation>
 <translation id="7696089921647603491">ร็อกคลาสสิกและเพลงเก่า</translation>
 <translation id="769721561045429135">ขณะนี้คุณมีบัตรต่างๆ ที่ใช้ได้ในอุปกรณ์นี้เท่านั้น คลิก "ทำต่อ" เพื่อดูบัตร</translation>
@@ -2719,6 +2739,7 @@
 <translation id="8202370299023114387">ความขัดแย้ง</translation>
 <translation id="8210604850413485128">เว็บโฮสติ้ง</translation>
 <translation id="8211406090763984747">การเชื่อมต่อปลอดภัย</translation>
+<translation id="8213853114485953510">JIS Exec</translation>
 <translation id="8217240300496046857">เว็บไซต์ต่างๆ จะใช้คุกกี้ที่ติดตามคุณในอินเทอร์เน็ตไม่ได้ ฟีเจอร์ในเว็บไซต์บางแห่งอาจใช้งานไม่ได้</translation>
 <translation id="8217748145574471584">ทรัพยากรบุคคล</translation>
 <translation id="8218327578424803826">ตำแหน่งที่มอบหมาย:</translation>
@@ -2916,6 +2937,7 @@
 <translation id="8763986294015493060">ปิดหน้าต่างที่ไม่ระบุตัวตนทั้งหมดที่เปิดอยู่</translation>
 <translation id="8766943070169463815">ชีตการตรวจสอบสิทธิ์ข้อมูลเข้าสู่ระบบการชำระเงินที่ปลอดภัยเปิดขึ้น</translation>
 <translation id="8767765348545497220">ปิดลูกโป่งความช่วยเหลือ</translation>
+<translation id="877348612833018844">{0,plural, =1{ย้ายไฟล์ลับใช่ไหม}other{ย้ายไฟล์ลับใช่ไหม}}</translation>
 <translation id="877985182522063539">A4</translation>
 <translation id="8785658048882205566">จักรยานยนต์</translation>
 <translation id="8790007591277257123">&amp;ทำซ้ำการนำออก</translation>
@@ -2932,6 +2954,7 @@
 <translation id="8816395686387277279"><ph name="UPDATE_CHROME_FOCUSED_FRIENDLY_MATCH_TEXT" /> กด Tab ตามด้วย Enter เพื่ออัปเดต Chrome จากการตั้งค่า Chrome</translation>
 <translation id="8820817407110198400">บุ๊กมาร์ก</translation>
 <translation id="882338992931677877">ช่องแบบเลือกด้วยตนเอง</translation>
+<translation id="8830320733681313421">ไปรษณียบัตร Hagaki</translation>
 <translation id="8834380158646307944">ปุ่มปิดหน้าต่างที่ไม่ระบุตัวตน กด Enter เพื่อปิดหน้าต่างที่ไม่ระบุตัวตนทั้งหมดที่เปิดอยู่</translation>
 <translation id="883848425547221593">บุ๊กมาร์กอื่นๆ</translation>
 <translation id="884264119367021077">ที่อยู่สำหรับจัดส่ง</translation>
diff --git a/components/strings/components_strings_tr.xtb b/components/strings/components_strings_tr.xtb
index c2ea8560..3d83e7264 100644
--- a/components/strings/components_strings_tr.xtb
+++ b/components/strings/components_strings_tr.xtb
@@ -307,6 +307,7 @@
 <translation id="168841957122794586">Sunucu sertifikasında zayıf bir şifreleme anahtarı var.</translation>
 <translation id="1697532407822776718">Artık hazırsınız!</translation>
 <translation id="1699570257714336246">Bilgi eksik</translation>
+<translation id="1702815194757674443">ROC 16K</translation>
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706625117072057435">Yakınlaştırma seviyeleri</translation>
 <translation id="1706954506755087368">{1,plural, =1{Bu sunucu, <ph name="DOMAIN" /> olduğunu kanıtlayamadı. Güvenlik sertifikasının alınma tarihinin yarın olduğu iddia ediliyor. Bu durum, bir yanlış yapılandırmadan veya bağlantınıza müdahale eden bir saldırgandan kaynaklanıyor olabilir.}other{Bu sunucu, <ph name="DOMAIN" /> olduğunu kanıtlayamadı. Güvenlik sertifikasının alınma tarihinin # gün sonra olduğu iddia ediliyor. Bu durum, bir yanlış yapılandırmadan veya bağlantınıza müdahale eden bir saldırgandan kaynaklanıyor olabilir.}}</translation>
@@ -395,6 +396,7 @@
 <translation id="192020519938775529">{COUNT,plural, =0{Yok}=1{1 site}other{# site}}</translation>
 <translation id="1924727005275031552">Yeni</translation>
 <translation id="1927439593081478069">Chrome güvenlik kontrolü yürüt düğmesi. Chrome ayarlarında güvenlik kontrolü yürütmek için Enter'a basın</translation>
+<translation id="1935995810530254458">Yine de kopyala</translation>
 <translation id="1939175642807587452">Bildirim göndermek isteyebilir</translation>
 <translation id="1943994668912612445">Tasarım</translation>
 <translation id="1945968466830820669">Kuruluşunuzun hesabına erişimi kaybedebilir veya kimlik hırsızlığına maruz kalabilirsiniz. Chromium, şifrenizi hemen değiştirmenizi önerir.</translation>
@@ -448,6 +450,7 @@
 <translation id="2085876078937250610">Kaydet…</translation>
 <translation id="2088086323192747268">Senkronizasyonu yönet düğmesi, Chrome ayarlarında hangi bilgileri senkronize ettiğinizi yönetmek için Enter'a basın</translation>
 <translation id="2091887806945687916">Ses</translation>
+<translation id="2093982008204312032">Google Chrome, şifreleri doldurmak için Windows Hello'yu devre dışı bırakmaya çalışıyor.</translation>
 <translation id="2094505752054353250">Alan adı uyuşmazlığı</translation>
 <translation id="2099652385553570808">Solda üçlü tel zımba</translation>
 <translation id="2101225219012730419">Sürüm:</translation>
@@ -550,6 +553,7 @@
 <translation id="2359347814217202136">{NUM_DAYS,plural, =0{Bir günden kısa bir süre içinde}=1{Bir gün içinde}other{{NUM_DAYS} gün içinde}}</translation>
 <translation id="2359629602545592467">Birden fazla</translation>
 <translation id="2359808026110333948">Devam et</translation>
+<translation id="2361263712565360498">275 x 395 mm</translation>
 <translation id="236340516568226369">Yeniden boyutlandırma açma/kapatma menüsü</translation>
 <translation id="2367567093518048410">Düzey</translation>
 <translation id="2380886658946992094">Hukuk</translation>
@@ -1141,6 +1145,7 @@
 <translation id="4014128326099193693">{COUNT,plural, =1{{COUNT} sayfalı PDF dokümanı}other{{COUNT} sayfalı PDF dokümanı}}</translation>
 <translation id="4022639246993848966">3,5x5</translation>
 <translation id="4023431997072828269">Bu form, güvenli olmayan bir bağlantı kullanılarak gönderildiğinden bilgileriniz başkaları tarafından görülebilir.</translation>
+<translation id="4024923292610332139">şifreleri doldurmak için TouchID'yi devre dışı bırakma</translation>
 <translation id="4025913568718019429">Google Gizlilik ayarlarını yönet düğmesi, Google Hesabınızın gizlilik ayarlarına gitmek için Enter'a basın</translation>
 <translation id="4030383055268325496">Eklemeyi &amp;geri al</translation>
 <translation id="4031179711345676612">Mikrofona izin verildi</translation>
@@ -1257,6 +1262,7 @@
 <translation id="42981349822642051">Genişlet</translation>
 <translation id="4300675098767811073">Sağda çoklu delik</translation>
 <translation id="4302514097724775343">Oynamak için dinozora dokunun</translation>
+<translation id="4304049446746819918">{0,plural, =1{Yönetici politikası bu dosyayı <ph name="DESTINATION_NAME" /> hedefine taşımanızı önermiyor}other{Yönetici politikası bu dosyaları <ph name="DESTINATION_NAME" /> hedefine taşımanızı önermiyor}}</translation>
 <translation id="4305666528087210886">Dosyanıza erişilemedi</translation>
 <translation id="4306529830550717874">Adres kaydedilsin mi?</translation>
 <translation id="4306812610847412719">pano</translation>
@@ -1425,6 +1431,7 @@
 <translation id="4751476147751820511">Hareket veya ışık sensörleri</translation>
 <translation id="4754461935447132332">Güvenli olmayan siteler için izin verilmiyor</translation>
 <translation id="4756388243121344051">&amp;Geçmiş</translation>
+<translation id="4756501505996488486">PRC 16K</translation>
 <translation id="4757993714154412917">Az önce şifrenizi yanıltıcı bir sitede girdiniz. Chromium, hesaplarınızın güvenliğini sağlamak için kayıtlı şifrelerinizi kontrol etmenizi öneriyor.</translation>
 <translation id="4758311279753947758">İletişim bilgilerinizi ekleyin</translation>
 <translation id="4761104368405085019">Mikrofonunuzu kullanma</translation>
@@ -1631,6 +1638,7 @@
 <translation id="5254043433801397071">Yazdırma içeriğini optimize et</translation>
 <translation id="5254958791078852567">E1</translation>
 <translation id="5255690596502591079">Yine de görüntü al</translation>
+<translation id="5257739419779698609">{0,plural, =1{Yönetici politikası bu dosyayı <ph name="DESTINATION_NAME" /> hedefine kopyalamanızı önermiyor}other{Yönetici politikası bu dosyaları <ph name="DESTINATION_NAME" /> hedefine kopyalamanızı önermiyor}}</translation>
 <translation id="5266128565379329178">Üstten bağlı</translation>
 <translation id="5269225904387178860">Altta dörtlü delik</translation>
 <translation id="5269999699920406580">Tüm sistem için geçerli olan özellikler sadece sahibi <ph name="OWNER_EMAIL" /> tarafından ayarlanabilir</translation>
@@ -1693,6 +1701,7 @@
 <translation id="5412236728747081950">Bu site size daha alakalı reklamlar göstermek için Chrome'dan ilgi alanlarınızı öğrenir</translation>
 <translation id="5412245327974352290"><ph name="TRADITIONAL_TEXT" />-<ph name="ADDITIONAL_TEXT" /></translation>
 <translation id="541416427766103491">Yığınlayıcı 4</translation>
+<translation id="5414511064953050917">Yine de taşı</translation>
 <translation id="5421136146218899937">Tarama verilerini temizle...</translation>
 <translation id="5425241977284572032">{NUM_COOKIES,plural, =0{Hiçbir site engellenmiyor}=1{1 site engellendi}other{# site engellendi}}</translation>
 <translation id="5426179911063097041"><ph name="SITE" /> size bildirim göndermek istiyor</translation>
@@ -2163,6 +2172,7 @@
 <translation id="6738516213925468394">Verileriniz <ph name="TIME" /> tarihinde <ph name="BEGIN_LINK" />senkronizasyon parolanızla<ph name="END_LINK" /> şifrelendi. Senkronizasyonu başlatmak için senkronizasyon parolanızı girin.</translation>
 <translation id="674375294223700098">Bilinmeyen sunucu sertifikası hatası.</translation>
 <translation id="6744009308914054259">Bağlantı kurulmasını beklerken çevrimdışı makaleleri okumak için İndirilenler bölümünü ziyaret edebilirsiniz.</translation>
+<translation id="6751487147225428522">ROC 8K</translation>
 <translation id="6752086006821653994">Telekonferans</translation>
 <translation id="6753269504797312559">Politika değeri</translation>
 <translation id="6755241357817244406">chrome://flags</translation>
@@ -2196,6 +2206,7 @@
 <translation id="6846340164947227603">Sanal kart numarası kullanın...</translation>
 <translation id="6852204201400771460">Uygulama yeniden yüklensin mi?</translation>
 <translation id="6857776781123259569">Şifreleri Yönet...</translation>
+<translation id="6864189428899665393">267 x 389 mm</translation>
 <translation id="686485648936420384">Tüketici kaynakları</translation>
 <translation id="6865412394715372076">Bu kart şu anda doğrulanamıyor</translation>
 <translation id="6869334554832814367">Bireysel krediler</translation>
@@ -2308,9 +2319,11 @@
 <translation id="7138472120740807366">Teslimat yöntemi</translation>
 <translation id="7139892792842608322">Birincil Tepsi</translation>
 <translation id="714064300541049402">Taraf 2 resim X kayması</translation>
+<translation id="7143682719845053166">PRC 32K</translation>
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> ve <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> yöntem daha}other{<ph name="PAYMENT_METHOD_PREVIEW" /> ve <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> yöntem daha}}</translation>
 <translation id="7153618581592392745">Lavanta</translation>
 <translation id="7156870133441232244">Sunucu, TLS 1.2 veya daha yeni bir sürüme geçmeli.</translation>
+<translation id="7163295244162773898">{0,plural, =1{Gizli dosya kopyalansın mı?}other{Gizli dosyalar kopyalansın mı?}}</translation>
 <translation id="717330890047184534">Gaia Kimliği:</translation>
 <translation id="7174545416324379297">Birleştirildi</translation>
 <translation id="7175401108899573750">{SHIPPING_OPTIONS,plural, =0{<ph name="SHIPPING_OPTION_PREVIEW" />}=1{<ph name="SHIPPING_OPTION_PREVIEW" /> ve <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> seçenek daha}other{<ph name="SHIPPING_OPTION_PREVIEW" /> ve <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> seçenek daha}}</translation>
@@ -2388,6 +2401,7 @@
 <translation id="7363096869660964304">Ancak görünmez olmazsınız. Gizli moda geçmek göz atma etkinliğinizi işvereninizden, İnternet servis sağlayıcınızdan veya ziyaret ettiğiniz web sitelerinden gizlemez.</translation>
 <translation id="7365596969960773405"><ph name="MANAGE_ADDRESSES_FOCUSED_FRIENDLY_MATCH_TEXT" />, Chrome ayarlarında adres ekleyip yönetmek için Sekme'ye, ardından Enter'a basın</translation>
 <translation id="7365849542400970216">Cihaz kullanımınız bilinsin mi?</translation>
+<translation id="7366117520888504990">198 x 275 mm</translation>
 <translation id="7366362069757178916">Ödeme işleyiciler</translation>
 <translation id="7372973238305370288">arama sonucu</translation>
 <translation id="7374461526650987610">Protokol işleyicileri</translation>
@@ -2547,6 +2561,7 @@
 <translation id="7687186412095877299">Ödeme formlarını kayıtlı ödeme yöntemlerinizle doldurur</translation>
 <translation id="7687305263118037187">Tekrar deneme zaman aşımı</translation>
 <translation id="7687451951329798396">Diğer kaynaklar ne diyor?</translation>
+<translation id="7690647519407127574">Oufuku Hagaki Kartpostal</translation>
 <translation id="7693583928066320343">Sayfa sırası alındı</translation>
 <translation id="7696089921647603491">Klasik rock ve eski şarkılar</translation>
 <translation id="769721561045429135">Şu anda, yalnızca bu cihazda kullanılabilen kartlarınız var. Kartları incelemek için Devam'ı tıklayın.</translation>
@@ -2720,6 +2735,7 @@
 <translation id="8202370299023114387">Çakışma</translation>
 <translation id="8210604850413485128">Web barındırma</translation>
 <translation id="8211406090763984747">Bağlantı güvenli</translation>
+<translation id="8213853114485953510">JIS Exec</translation>
 <translation id="8217240300496046857">Siteler sizi web'de takip eden çerezler kullanamaz. Bazı sitelerdeki özellikler düzgün çalışmayabilir.</translation>
 <translation id="8217748145574471584">İnsan kaynakları</translation>
 <translation id="8218327578424803826">Atanan Konum:</translation>
@@ -2917,6 +2933,7 @@
 <translation id="8763986294015493060">Açık olan tüm gizli pencereleri kapat</translation>
 <translation id="8766943070169463815">Güvenli ödeme kimlik bilgisi doğrulama sayfası açıldı</translation>
 <translation id="8767765348545497220">Yardım balonunu kapat</translation>
+<translation id="877348612833018844">{0,plural, =1{Gizli dosya taşınsın mı?}other{Gizli dosyalar taşınsın mı?}}</translation>
 <translation id="877985182522063539">A4</translation>
 <translation id="8785658048882205566">Motosikletler</translation>
 <translation id="8790007591277257123">Silmeyi &amp;yeniden yap</translation>
@@ -2933,6 +2950,7 @@
 <translation id="8816395686387277279"><ph name="UPDATE_CHROME_FOCUSED_FRIENDLY_MATCH_TEXT" />, Chrome ayarlarınızdan Chrome'u güncellemek için Sekme'ye, sonra Enter'a basın</translation>
 <translation id="8820817407110198400">Yer işaretleri</translation>
 <translation id="882338992931677877">Manuel Yuva</translation>
+<translation id="8830320733681313421">Hagaki Kartpostal</translation>
 <translation id="8834380158646307944">Gizli pencereleri kapat düğmesi. Açık olan tüm gizli pencereleri kapatmak için Enter'a basın</translation>
 <translation id="883848425547221593">Diğer Yer İşaretleri</translation>
 <translation id="884264119367021077">Gönderim adresi</translation>
diff --git a/components/strings/components_strings_uk.xtb b/components/strings/components_strings_uk.xtb
index a967a6b..8c86fad 100644
--- a/components/strings/components_strings_uk.xtb
+++ b/components/strings/components_strings_uk.xtb
@@ -307,6 +307,7 @@
 <translation id="168841957122794586">Сертифікат сервера містить слабкий криптографічний ключ.</translation>
 <translation id="1697532407822776718">Готово!</translation>
 <translation id="1699570257714336246">Немає інформації</translation>
+<translation id="1702815194757674443">ROC 16K</translation>
 <translation id="1703835215927279855">Letter</translation>
 <translation id="1706625117072057435">Рівні масштабування</translation>
 <translation id="1706954506755087368">{1,plural, =1{Не вдалося підтвердити, що це сервер <ph name="DOMAIN" />. Його сертифікат безпеки почне діяти завтра. Можливо, сервер налаштовано неправильно або хтось намагається перехопити ваші дані.}one{Не вдалося підтвердити, що це сервер <ph name="DOMAIN" />. Його сертифікат безпеки почне діяти через # день. Можливо, сервер налаштовано неправильно або хтось намагається перехопити ваші дані.}few{Не вдалося підтвердити, що це сервер <ph name="DOMAIN" />. Його сертифікат безпеки почне діяти через # дні. Можливо, сервер налаштовано неправильно або хтось намагається перехопити ваші дані.}many{Не вдалося підтвердити, що це сервер <ph name="DOMAIN" />. Його сертифікат безпеки почне діяти через # днів. Можливо, сервер налаштовано неправильно або хтось намагається перехопити ваші дані.}other{Не вдалося підтвердити, що це сервер <ph name="DOMAIN" />. Його сертифікат безпеки почне діяти через # дня. Можливо, сервер налаштовано неправильно або хтось намагається перехопити ваші дані.}}</translation>
@@ -550,6 +551,7 @@
 <translation id="2359347814217202136">{NUM_DAYS,plural, =0{Менше ніж через день}=1{Через день}one{Через {NUM_DAYS} день}few{Через {NUM_DAYS} дні}many{Через {NUM_DAYS} днів}other{Через {NUM_DAYS} дня}}</translation>
 <translation id="2359629602545592467">Декілька</translation>
 <translation id="2359808026110333948">Продовжити</translation>
+<translation id="2361263712565360498">275 x 395 мм</translation>
 <translation id="236340516568226369">Меню зміни розмірів</translation>
 <translation id="2367567093518048410">Рівень</translation>
 <translation id="2380886658946992094">Legal</translation>
@@ -1425,6 +1427,7 @@
 <translation id="4751476147751820511">Датчики руху та світла</translation>
 <translation id="4754461935447132332">Заборонено для незахищених сайтів</translation>
 <translation id="4756388243121344051">&amp;Історія</translation>
+<translation id="4756501505996488486">PRC 16K</translation>
 <translation id="4757993714154412917">Щойно ви ввели пароль на оманливому сайті. Щоб захистити ваші облікові записи, Chromium радить перевірити збережені паролі.</translation>
 <translation id="4758311279753947758">Додати контактну інформацію</translation>
 <translation id="4761104368405085019">Використовувати ваш мікрофон</translation>
@@ -2163,6 +2166,7 @@
 <translation id="6738516213925468394">Ваші дані було зашифровано за допомогою <ph name="BEGIN_LINK" />парольної фрази для синхронізації<ph name="END_LINK" /> від <ph name="TIME" />. Введіть її, щоб почати синхронізацію.</translation>
 <translation id="674375294223700098">Помилка "Невідомий сертифікат сервера".</translation>
 <translation id="6744009308914054259">Очікуючи на з’єднання, можете перейти в папку "Завантаження" й переглянути статті, доступні в режимі офлайн.</translation>
+<translation id="6751487147225428522">ROC 8K</translation>
 <translation id="6752086006821653994">Телеконференції</translation>
 <translation id="6753269504797312559">Значення правила</translation>
 <translation id="6755241357817244406">chrome://flags</translation>
@@ -2196,6 +2200,7 @@
 <translation id="6846340164947227603">Скористатися номером віртуальної картки…</translation>
 <translation id="6852204201400771460">Перезапустити додаток?</translation>
 <translation id="6857776781123259569">Керувати паролями…</translation>
+<translation id="6864189428899665393">267 x 389 мм</translation>
 <translation id="686485648936420384">Ресурси для споживачів</translation>
 <translation id="6865412394715372076">Зараз цю картку не можна підтвердити</translation>
 <translation id="6869334554832814367">Кредити фізичним особам</translation>
@@ -2308,6 +2313,7 @@
 <translation id="7138472120740807366">Спосіб доставки</translation>
 <translation id="7139892792842608322">Основний рулон</translation>
 <translation id="714064300541049402">Горизонтальний зсув сторони 2 зображення</translation>
+<translation id="7143682719845053166">PRC 32K</translation>
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> і ще <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}one{<ph name="PAYMENT_METHOD_PREVIEW" /> і ще <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}few{<ph name="PAYMENT_METHOD_PREVIEW" /> і ще <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}many{<ph name="PAYMENT_METHOD_PREVIEW" /> і ще <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}other{<ph name="PAYMENT_METHOD_PREVIEW" /> і ще <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" />}}</translation>
 <translation id="7153618581592392745">Лавандовий</translation>
 <translation id="7156870133441232244">На сервері має бути встановлено протокол TLS 1.2 або новішої версії.</translation>
@@ -2388,6 +2394,7 @@
 <translation id="7363096869660964304">Навіть в анонімному режимі ваш роботодавець, постачальник послуг Інтернету чи веб-сайти, які ви відвідуєте, можуть бачити, що ви переглядаєте.</translation>
 <translation id="7365596969960773405"><ph name="MANAGE_ADDRESSES_FOCUSED_FRIENDLY_MATCH_TEXT" />; натисніть Tab, а потім – Enter, щоб додати адреси й керувати ними в налаштуваннях Chrome</translation>
 <translation id="7365849542400970216">Інформувати про активний стан пристрою?</translation>
+<translation id="7366117520888504990">198 x 275 мм</translation>
 <translation id="7366362069757178916">Обробники платежів</translation>
 <translation id="7372973238305370288">результат пошуку</translation>
 <translation id="7374461526650987610">Обробники протоколів</translation>
@@ -2547,6 +2554,7 @@
 <translation id="7687186412095877299">Заповнює платіжні форми, використовуючи збережені способи оплати</translation>
 <translation id="7687305263118037187">Час для повторної спроби минув</translation>
 <translation id="7687451951329798396">Яку інформацію подають інші джерела?</translation>
+<translation id="7690647519407127574">Уфуку Хагакі (листівка)</translation>
 <translation id="7693583928066320343">Порядок сторінок отримано</translation>
 <translation id="7696089921647603491">Класичний рок і старі пісні</translation>
 <translation id="769721561045429135">Зараз у вас є картки, які можна використовувати лише на цьому пристрої. Натисніть "Продовжити", щоб переглянути їх.</translation>
@@ -2720,6 +2728,7 @@
 <translation id="8202370299023114387">Конфлікт</translation>
 <translation id="8210604850413485128">Веб-хостинг</translation>
 <translation id="8211406090763984747">З’єднання безпечне</translation>
+<translation id="8213853114485953510">JIS Exec</translation>
 <translation id="8217240300496046857">Сайти не можуть використовувати файли cookie, через які відстежуються ваші дії в Інтернеті. Функції на деяких сайтах можуть не працювати.</translation>
 <translation id="8217748145574471584">Відділ кадрів</translation>
 <translation id="8218327578424803826">Указане місцезнаходження:</translation>
@@ -2933,6 +2942,7 @@
 <translation id="8816395686387277279"><ph name="UPDATE_CHROME_FOCUSED_FRIENDLY_MATCH_TEXT" />; натисніть Tab, а потім – Enter, щоб оновити веб-переглядач Chrome у його налаштуваннях</translation>
 <translation id="8820817407110198400">Закладки</translation>
 <translation id="882338992931677877">Лоток для ручного введення</translation>
+<translation id="8830320733681313421">Уфуку Хагакі (листівка)</translation>
 <translation id="8834380158646307944">Кнопка "Закрити вікна в режимі анонімного перегляду"; натисніть Enter, щоб закрити всі відкриті вікна в режимі анонімного перегляду</translation>
 <translation id="883848425547221593">Інші закладки</translation>
 <translation id="884264119367021077">Адреса доставки</translation>
diff --git a/components/strings/components_strings_uz.xtb b/components/strings/components_strings_uz.xtb
index db781336..156a1ae 100644
--- a/components/strings/components_strings_uz.xtb
+++ b/components/strings/components_strings_uz.xtb
@@ -713,6 +713,7 @@
 <translation id="2799223571221894425">Qaytadan ishga tushirish</translation>
 <translation id="2803306138276472711">Google saytlar xavfsizligini tekshirish tizimi yaqinda <ph name="SITE" /> saytida <ph name="BEGIN_LINK" />zararli dasturlarni<ph name="END_LINK" /> topdi. Ehtiyot bo‘ling, ba’zida himoyalangan saytlardan ham zararli dasturlar tarqatilishi mumkin.</translation>
 <translation id="2807052079800581569">Tasvirning Y oʻqidagi joylashuvi</translation>
+<translation id="2808278141522721006">Windows Hello himoyasini <ph name="SETTINGS" /> orqali yoqish yoki faolsizlantirish mumkin</translation>
 <translation id="2820957248982571256">Tekshirilmoqda...</translation>
 <translation id="2824775600643448204">Manzil va qidiruv paneli</translation>
 <translation id="2826760142808435982">Aloqa shifrlangan va <ph name="CIPHER" /> yordamida tekshirilgan. Kalitlar almashinuvi mexanizmi sifatida <ph name="KX" /> qo‘llanilmoqda.</translation>
@@ -881,6 +882,7 @@
 <translation id="3288238092761586174">Toʻlovingizni tasdiqlash uchun <ph name="URL" /> qoʻshimcha bosqichlarni bajarishi kerak</translation>
 <translation id="3293642807462928945"><ph name="POLICY_NAME" /> parametri haqida batafsil axborot olish</translation>
 <translation id="3295444047715739395">Parollaringizni Chrome sozlamalari orqali koʻrish va boshqarish</translation>
+<translation id="3299098170013242198">Parollarni kiritish uchun Windows Hello himoyasi yoniq</translation>
 <translation id="3303855915957856445">Qidiruv hech qanday natija bermadi</translation>
 <translation id="3304073249511302126">bluetooth qurilmalarni qidirish</translation>
 <translation id="33073482541490531">Hozirgina siz foydalangan parol oshkor qilingan. Parollar menejeri bu parolni hoziroq almashtirishni tavsiya etadi.</translation>
@@ -1027,6 +1029,7 @@
 <translation id="3678342917559046352">Kengaytma yaroqsiz. Quyidagi qiymatlardan biriga ruxsat beriladi: &lt;extension_id&gt; yoki &lt;extension_id&gt;;&lt;update_url&gt;.</translation>
 <translation id="3678529606614285348">Sahifani yangi inkognito oynada ochish (Ctrl-Shift-N)</translation>
 <translation id="3681007416295224113">Sertifikat haqida ma’lumot</translation>
+<translation id="3699374065820972102">Parollarni kiritsh uchun TouchID himoyasi yoniq</translation>
 <translation id="3701427423622901115">Asliga qaytarish boshlandi.</translation>
 <translation id="3704162925118123524">Siz ulangan tarmoq hisob sahifasida tizimga kirishingizni talab qilishi mumkin.</translation>
 <translation id="3705189812819839667"><ph name="RESULT_OWNER" /> - <ph name="RESULT_PRODUCT_SOURCE" /></translation>
@@ -1488,6 +1491,7 @@
 <translation id="4900217275619098670">Toʻqqizinchi oʻram</translation>
 <translation id="4901778704868714008">Saqlash...</translation>
 <translation id="4905659621780993806">Administrator qurilmani <ph name="DATE" /> kuni <ph name="TIME" /> da avtomatik qayta ishga tushiradi Qurilma qayta ishga tushishidan oldin ochiq qolgan maʼlumotlarni saqlang.</translation>
+<translation id="4911007278801291296">TouchID himoyasini <ph name="SETTINGS" /> orqali yoqish yoki faolsizlantirish mumkin</translation>
 <translation id="4913987521957242411">Yuqori chapdan teshik ochish</translation>
 <translation id="4918221908152712722">Oʻrnatish: <ph name="APP_NAME" /> (yuklab olinmaydi)</translation>
 <translation id="4923459931733593730">To‘lov</translation>
@@ -1681,6 +1685,7 @@
 <translation id="5357848622083956825">Vizual sanʼat va dizayn</translation>
 <translation id="536296301121032821">Tartib-qoida parametrlarini saqlab bo‘lmadi</translation>
 <translation id="5363309033720083897">Seriyali port administrator tomonidan ruxsat etilgan</translation>
+<translation id="5363713372507812442">Sayohatlar qidiruvi</translation>
 <translation id="5371425731340848620">Kartani yangilash</translation>
 <translation id="5377026284221673050">“Soatingiz orqada” yoki “Soatingiz oldinda” yoki “&lt;span class="error-code"&gt;NET::ERR_CERT_DATE_INVALID&lt;/span&gt;”</translation>
 <translation id="5379027395132364855">Taqdimot yaratish tugmasi, Google Slidesda yangi taqdimotni tez yaratish uchun Enter tugmasini bosing</translation>
diff --git a/components/strings/components_strings_zh-TW.xtb b/components/strings/components_strings_zh-TW.xtb
index 6e99ddc..f168b44 100644
--- a/components/strings/components_strings_zh-TW.xtb
+++ b/components/strings/components_strings_zh-TW.xtb
@@ -396,6 +396,7 @@
 <translation id="192020519938775529">{COUNT,plural, =0{無}=1{1 個網站}other{# 個網站}}</translation>
 <translation id="1924727005275031552">新地址</translation>
 <translation id="1927439593081478069">[執行 Chrome 安全檢查] 按鈕;按下 Enter 鍵即可在 Chrome 設定中執行安全檢查</translation>
+<translation id="1935995810530254458">仍要複製</translation>
 <translation id="1939175642807587452">可以要求傳送通知</translation>
 <translation id="1943994668912612445">設計</translation>
 <translation id="1945968466830820669">你可能會失去貴機構帳戶的存取權,或身分遭到冒用。Chromium 建議你立即變更密碼。</translation>
@@ -449,6 +450,7 @@
 <translation id="2085876078937250610">儲存…</translation>
 <translation id="2088086323192747268">「管理同步功能」按鈕;按下 Enter 鍵即可在 Chrome 設定中管理要同步處理哪些資訊</translation>
 <translation id="2091887806945687916">音訊</translation>
+<translation id="2093982008204312032">Google Chrome 正在嘗試關閉 Windows Hello,以便填入密碼。</translation>
 <translation id="2094505752054353250">網域不符</translation>
 <translation id="2099652385553570808">三釘 (左側)</translation>
 <translation id="2101225219012730419">版本:</translation>
@@ -1142,6 +1144,7 @@
 <translation id="4014128326099193693">{COUNT,plural, =1{PDF 文件,共 {COUNT} 頁}other{PDF 文件,共 {COUNT} 頁}}</translation>
 <translation id="4022639246993848966">3.5x5</translation>
 <translation id="4023431997072828269">這個表單是透過不安全的連線提交,其他人將可看到你的資訊。</translation>
+<translation id="4024923292610332139">關閉 Touch ID 以填入密碼</translation>
 <translation id="4025913568718019429">「管理 Google 隱私權設定」按鈕;按下 Enter 鍵即可前往 Google 帳戶隱私權設定</translation>
 <translation id="4030383055268325496">復原新增(&amp;U)</translation>
 <translation id="4031179711345676612">可使用麥克風</translation>
@@ -1258,6 +1261,7 @@
 <translation id="42981349822642051">展開</translation>
 <translation id="4300675098767811073">多孔 (右側)</translation>
 <translation id="4302514097724775343">輕觸恐龍即可開始遊戲</translation>
+<translation id="4304049446746819918">{0,plural, =1{根據管理員政策,建議你不要將這個檔案移到「<ph name="DESTINATION_NAME" />」}other{根據管理員政策,建議你不要將這些檔案移到「<ph name="DESTINATION_NAME" />」}}</translation>
 <translation id="4305666528087210886">無法存取你的檔案</translation>
 <translation id="4306529830550717874">要儲存地址嗎?</translation>
 <translation id="4306812610847412719">剪貼簿</translation>
@@ -1633,6 +1637,7 @@
 <translation id="5254043433801397071">最佳化列印內容</translation>
 <translation id="5254958791078852567">E1</translation>
 <translation id="5255690596502591079">仍要擷取</translation>
+<translation id="5257739419779698609">{0,plural, =1{根據管理員政策,建議你不要將這個檔案複製到「<ph name="DESTINATION_NAME" />」}other{根據管理員政策,建議你不要將這些檔案複製到「<ph name="DESTINATION_NAME" />」}}</translation>
 <translation id="5266128565379329178">裝訂 (頂端)</translation>
 <translation id="5269225904387178860">四孔 (底部)</translation>
 <translation id="5269999699920406580">這些功能會套用至整個系統,只有以下擁有者可設定:<ph name="OWNER_EMAIL" /></translation>
@@ -1695,6 +1700,7 @@
 <translation id="5412236728747081950">這個網站會取得你在 Chrome 設定的興趣喜好,為你顯示更貼近需求的廣告</translation>
 <translation id="5412245327974352290"><ph name="TRADITIONAL_TEXT" /> - <ph name="ADDITIONAL_TEXT" /></translation>
 <translation id="541416427766103491">堆疊出紙器 4</translation>
+<translation id="5414511064953050917">仍要移動</translation>
 <translation id="5421136146218899937">清除瀏覽資料...</translation>
 <translation id="5425241977284572032">{NUM_COOKIES,plural, =0{未封鎖任何網站}=1{已封鎖 1 個網站}other{已封鎖 # 個網站}}</translation>
 <translation id="5426179911063097041"><ph name="SITE" /> 要求傳送通知給你</translation>
@@ -2316,6 +2322,7 @@
 <translation id="7153549335910886479">{PAYMENT_METHOD,plural, =0{<ph name="PAYMENT_METHOD_PREVIEW" />}=1{<ph name="PAYMENT_METHOD_PREVIEW" /> 和另外 <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> 種付款方式}other{<ph name="PAYMENT_METHOD_PREVIEW" /> 和另外 <ph name="NUMBER_OF_ADDITIONAL_PAYMENT_METHODS" /> 種付款方式}}</translation>
 <translation id="7153618581592392745">淡紫色</translation>
 <translation id="7156870133441232244">伺服器應升級至傳輸層安全標準 (TLS) 1.2 以上版本。</translation>
+<translation id="7163295244162773898">{0,plural, =1{要複製機密檔案嗎?}other{要複製機密檔案嗎?}}</translation>
 <translation id="717330890047184534">GAIA ID:</translation>
 <translation id="7174545416324379297">已合併</translation>
 <translation id="7175401108899573750">{SHIPPING_OPTIONS,plural, =0{<ph name="SHIPPING_OPTION_PREVIEW" />}=1{<ph name="SHIPPING_OPTION_PREVIEW" />和另外 <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> 種選項}other{<ph name="SHIPPING_OPTION_PREVIEW" />和另外 <ph name="NUMBER_OF_ADDITIONAL_SHIPPING_OPTIONS" /> 種選項}}</translation>
@@ -2924,6 +2931,7 @@
 <translation id="8763986294015493060">關閉目前開啟的所有無痕式視窗</translation>
 <translation id="8766943070169463815">已開啟安全付款憑證驗證表</translation>
 <translation id="8767765348545497220">關閉說明泡泡</translation>
+<translation id="877348612833018844">{0,plural, =1{要移動機密檔案嗎?}other{要移動機密檔案嗎?}}</translation>
 <translation id="877985182522063539">A4</translation>
 <translation id="8785658048882205566">摩托車</translation>
 <translation id="8790007591277257123">重做刪除(&amp;R)</translation>
diff --git a/components/system_media_controls/DIR_METADATA b/components/system_media_controls/DIR_METADATA
new file mode 100644
index 0000000..5655fca0
--- /dev/null
+++ b/components/system_media_controls/DIR_METADATA
@@ -0,0 +1,4 @@
+monorail: {
+  component: "Internals>Media>UI"
+}
+team_email: "media-dev@chromium.org"
diff --git a/components/test/data/payments/payment_request_id.js b/components/test/data/payments/payment_request_id.js
index db7ed55..536dd7d2 100644
--- a/components/test/data/payments/payment_request_id.js
+++ b/components/test/data/payments/payment_request_id.js
@@ -5,31 +5,23 @@
  */
 
 /**
- * Launches the PaymentRequest UI including a details.id and prints the
- * resulting requestId.
+ * Launches the PaymentRequest UI including a details.id and returns the
+ * request identifier from the response.
+ * @param {string} method - The payment method identifier to use.
+ * @return {string} - The request identifier from the response.
  */
-function buy() { // eslint-disable-line no-unused-vars
+async function getResponseId(method) { // eslint-disable-line no-unused-vars
   try {
-    new PaymentRequest(
-        [{supportedMethods: 'basic-card', data: {supportedNetworks: ['visa']}}],
+    const request = new PaymentRequest(
+        [{supportedMethods: method}],
         {
           id: 'my_payment_id',
           total: {label: 'Total', amount: {currency: 'USD', value: '5.00'}},
-        })
-        .show()
-        .then(function(resp) {
-          resp.complete('success')
-              .then(function() {
-                print(resp.requestId);
-              })
-              .catch(function(error) {
-                print(error.message);
-              });
-        })
-        .catch(function(error) {
-          print(error.message);
         });
+    const response = await request.show();
+    await response.complete('success');
+    return response.requestId;
   } catch (error) {
-    print(error.message);
+    return error.toString();
   }
 }
diff --git a/components/test/data/payments/payment_request_id_test.html b/components/test/data/payments/payment_request_id_test.html
index e2a7f39..fb92113 100644
--- a/components/test/data/payments/payment_request_id_test.html
+++ b/components/test/data/payments/payment_request_id_test.html
@@ -6,7 +6,6 @@
 -->
 <html>
 <head>
-<script src="util.js"></script>
 <script src="payment_request_id.js"></script>
 <title>Payment Request Id Test</title>
 <meta charset="utf-8">
@@ -14,7 +13,5 @@
 <link rel="stylesheet" type="text/css" href="style.css">
 </head>
 <body>
-<button onclick="buy()" id="buy">Payment Request Id Test</button>
-<pre id="result"></pre>
 </body>
 </html>
diff --git a/components/translate/core/browser/translate_manager.h b/components/translate/core/browser/translate_manager.h
index 54ac7920..f512805b 100644
--- a/components/translate/core/browser/translate_manager.h
+++ b/components/translate/core/browser/translate_manager.h
@@ -125,11 +125,6 @@
   // Maybe initiates translation when Autofill Assistant has finished.
   void OnAutofillAssistantFinished();
 
-  // Show the translation UI. If |auto_translate| is true the page gets
-  // translated to the target language.
-  void ShowTranslateUI(bool auto_translate = false,
-                       bool triggered_from_menu = false);
-
   // Show the translation UI with the target language enforced to |target_lang|.
   // If |auto_translate| is true the page gets translated to the target
   // language.
@@ -137,6 +132,11 @@
                        bool auto_translate = false,
                        bool triggered_from_menu = false);
 
+  // Show the translation UI. If |auto_translate| is true the page gets
+  // translated to the target language.
+  void ShowTranslateUI(bool auto_translate = false,
+                       bool triggered_from_menu = false);
+
   // Returns true iff the current page could be manually translated.
   // Logging should only be performed when this method is called to show the
   // translate menu item.
diff --git a/components/viz/common/resources/resource_format_utils.cc b/components/viz/common/resources/resource_format_utils.cc
index 64bc5d81..c1b9ab5 100644
--- a/components/viz/common/resources/resource_format_utils.cc
+++ b/components/viz/common/resources/resource_format_utils.cc
@@ -11,6 +11,7 @@
 #include <ostream>
 
 #include "base/check_op.h"
+#include "base/logging.h"
 #include "base/notreached.h"
 #include "build/chromeos_buildflags.h"
 #include "ui/gfx/buffer_types.h"
@@ -47,11 +48,9 @@
       return kRGB_888x_SkColorType;
     case P010:
 #if BUILDFLAG(IS_MAC)
-      // TODO(https://crbug.com/1155760): Until individual planes can be bound
-      // as their own textures, P010 buffers are copied to F16 textures for
-      // sampling.
-      return kRGBA_F16_SkColorType;
+      DLOG(ERROR) << "Sampling of P010 resources must be done per-plane.";
 #endif
+      return kRGBA_1010102_SkColorType;
     case RGBA_1010102:
       return kRGBA_1010102_SkColorType;
     case BGRA_1010102:
@@ -60,8 +59,10 @@
     // YUV images are sampled as RGB.
     case YVU_420:
     case YUV_420_BIPLANAR:
+#if BUILDFLAG(IS_MAC)
+      DLOG(ERROR) << "Sampling of YUV_420 resources must be done per-plane.";
+#endif
       return kRGB_888x_SkColorType;
-
     case RED_8:
       return kAlpha_8_SkColorType;
     case R16_EXT:
@@ -190,54 +191,6 @@
   return false;
 }
 
-const char* ResourceFormatToString(ResourceFormat format) {
-  switch (format) {
-    case ResourceFormat::RGBA_8888:
-      return "RGBA_8888";
-    case ResourceFormat::RGBA_4444:
-      return "RGBA_4444";
-    case ResourceFormat::BGRA_8888:
-      return "BGRA_8888";
-    case ResourceFormat::ALPHA_8:
-      return "ALPHA_8";
-    case ResourceFormat::LUMINANCE_8:
-      return "LUMINANCE_8";
-    case ResourceFormat::RGB_565:
-      return "RGB_565";
-    case ResourceFormat::BGR_565:
-      return "BGR_565";
-    case ResourceFormat::ETC1:
-      return "ETC1";
-    case ResourceFormat::RED_8:
-      return "RED_8";
-    case ResourceFormat::RG_88:
-      return "RG_88";
-    case ResourceFormat::LUMINANCE_F16:
-      return "LUMINANCE_F16";
-    case ResourceFormat::RGBA_F16:
-      return "RGBA_F16";
-    case ResourceFormat::R16_EXT:
-      return "R16_EXT";
-    case ResourceFormat::RG16_EXT:
-      return "RG16_EXT";
-    case ResourceFormat::RGBX_8888:
-      return "RGBX_8888";
-    case ResourceFormat::BGRX_8888:
-      return "BGRX_8888";
-    case ResourceFormat::RGBA_1010102:
-      return "RGBA_1010102";
-    case ResourceFormat::BGRA_1010102:
-      return "BGRA_1010102";
-    case ResourceFormat::YVU_420:
-      return "YVU_420";
-    case ResourceFormat::YUV_420_BIPLANAR:
-      return "YUV_420_BIPLANAR";
-    case ResourceFormat::P010:
-      return "P010";
-  }
-  NOTREACHED();
-}
-
 unsigned int GLDataType(ResourceFormat format) {
   DCHECK_LE(format, RESOURCE_FORMAT_MAX);
   static const GLenum format_gl_data_type[] = {
@@ -405,16 +358,17 @@
       return GL_ETC1_RGB8_OES;
     case P010:
 #if BUILDFLAG(IS_MAC)
-      // TODO(https://crbug.com/1155760): Until individual planes can be bound
-      // as their own textures, P010 buffers are copied to F16 textures for
-      // sampling.
-      return GL_RGBA16F_EXT;
+      DLOG(ERROR) << "Sampling of P010 resources must be done per-plane.";
 #endif
+      return GL_RGB10_A2_EXT;
     case RGBA_1010102:
     case BGRA_1010102:
       return GL_RGB10_A2_EXT;
     case YVU_420:
     case YUV_420_BIPLANAR:
+#if BUILDFLAG(IS_MAC)
+      DLOG(ERROR) << "Sampling of YUV_420 resources must be done per-plane.";
+#endif
       return GL_RGB8_OES;
     default:
       break;
@@ -667,10 +621,6 @@
   return HasAlpha(format.resource_format());
 }
 
-const char* ResourceFormatToString(SharedImageFormat format) {
-  return ResourceFormatToString(format.resource_format());
-}
-
 unsigned int GLDataType(SharedImageFormat format) {
   return GLDataType(format.resource_format());
 }
diff --git a/components/viz/common/resources/resource_format_utils.h b/components/viz/common/resources/resource_format_utils.h
index 21f844d8..fe5e1bb 100644
--- a/components/viz/common/resources/resource_format_utils.h
+++ b/components/viz/common/resources/resource_format_utils.h
@@ -31,8 +31,6 @@
 VIZ_RESOURCE_FORMAT_EXPORT ResourceFormat
 SkColorTypeToResourceFormat(SkColorType color_type);
 
-VIZ_RESOURCE_FORMAT_EXPORT const char* ResourceFormatToString(ResourceFormat);
-
 // The following functions use unsigned int instead of GLenum, since including
 // third_party/khronos/GLES2/gl2.h causes redefinition errors as
 // macros/functions defined in it conflict with macros/functions defined in
@@ -98,9 +96,6 @@
 VIZ_RESOURCE_FORMAT_EXPORT int BitsPerPixel(SharedImageFormat format);
 VIZ_RESOURCE_FORMAT_EXPORT bool HasAlpha(SharedImageFormat format);
 
-VIZ_RESOURCE_FORMAT_EXPORT const char* ResourceFormatToString(
-    SharedImageFormat);
-
 VIZ_RESOURCE_FORMAT_EXPORT unsigned int GLDataType(SharedImageFormat format);
 VIZ_RESOURCE_FORMAT_EXPORT unsigned int GLDataFormat(SharedImageFormat format);
 VIZ_RESOURCE_FORMAT_EXPORT unsigned int GLInternalFormat(
diff --git a/components/viz/common/resources/shared_image_format.cc b/components/viz/common/resources/shared_image_format.cc
index 7fb2c67..25741a62 100644
--- a/components/viz/common/resources/shared_image_format.cc
+++ b/components/viz/common/resources/shared_image_format.cc
@@ -4,10 +4,62 @@
 
 #include "components/viz/common/resources/shared_image_format.h"
 
+#include "base/notreached.h"
+
 namespace viz {
 
 bool SharedImageFormat::IsBitmapFormatSupported() const {
   return is_single_plane() && resource_format() == RGBA_8888;
 }
 
+// TODO(hitawala): Add support for multiplanar formats.
+const char* SharedImageFormat::ToString() const {
+  DCHECK(is_single_plane());
+  switch (resource_format()) {
+    case ResourceFormat::RGBA_8888:
+      return "RGBA_8888";
+    case ResourceFormat::RGBA_4444:
+      return "RGBA_4444";
+    case ResourceFormat::BGRA_8888:
+      return "BGRA_8888";
+    case ResourceFormat::ALPHA_8:
+      return "ALPHA_8";
+    case ResourceFormat::LUMINANCE_8:
+      return "LUMINANCE_8";
+    case ResourceFormat::RGB_565:
+      return "RGB_565";
+    case ResourceFormat::BGR_565:
+      return "BGR_565";
+    case ResourceFormat::ETC1:
+      return "ETC1";
+    case ResourceFormat::RED_8:
+      return "RED_8";
+    case ResourceFormat::RG_88:
+      return "RG_88";
+    case ResourceFormat::LUMINANCE_F16:
+      return "LUMINANCE_F16";
+    case ResourceFormat::RGBA_F16:
+      return "RGBA_F16";
+    case ResourceFormat::R16_EXT:
+      return "R16_EXT";
+    case ResourceFormat::RG16_EXT:
+      return "RG16_EXT";
+    case ResourceFormat::RGBX_8888:
+      return "RGBX_8888";
+    case ResourceFormat::BGRX_8888:
+      return "BGRX_8888";
+    case ResourceFormat::RGBA_1010102:
+      return "RGBA_1010102";
+    case ResourceFormat::BGRA_1010102:
+      return "BGRA_1010102";
+    case ResourceFormat::YVU_420:
+      return "YVU_420";
+    case ResourceFormat::YUV_420_BIPLANAR:
+      return "YUV_420_BIPLANAR";
+    case ResourceFormat::P010:
+      return "P010";
+  }
+  NOTREACHED();
+}
+
 }  // namespace viz
diff --git a/components/viz/common/resources/shared_image_format.h b/components/viz/common/resources/shared_image_format.h
index cc5a1ba..eb24b2b 100644
--- a/components/viz/common/resources/shared_image_format.h
+++ b/components/viz/common/resources/shared_image_format.h
@@ -68,6 +68,8 @@
    */
   enum class ChannelFormat : uint8_t { k8, k10, k16, k16F };
 
+  static const SharedImageFormat kRGBA_8888;
+
   SharedImageFormat() = default;
   static constexpr SharedImageFormat SinglePlane(
       ResourceFormat resource_format) {
@@ -105,6 +107,8 @@
   // export to the display compositor.
   bool IsBitmapFormatSupported() const;
 
+  const char* ToString() const;
+
   bool operator==(const SharedImageFormat& o) const {
     if (plane_type_ != o.plane_type())
       return false;
@@ -180,6 +184,9 @@
 
 static_assert(sizeof(SharedImageFormat) <= 8);
 
+constexpr SharedImageFormat SharedImageFormat::kRGBA_8888 =
+    SharedImageFormat::SinglePlane(ResourceFormat::RGBA_8888);
+
 }  // namespace viz
 
 #endif  // COMPONENTS_VIZ_COMMON_RESOURCES_SHARED_IMAGE_FORMAT_H_
diff --git a/components/viz/host/gpu_host_impl.cc b/components/viz/host/gpu_host_impl.cc
index d2600af..69cb572 100644
--- a/components/viz/host/gpu_host_impl.cc
+++ b/components/viz/host/gpu_host_impl.cc
@@ -595,6 +595,14 @@
   delegate_->DisableGpuCompositing();
 }
 
+void GpuHostImpl::GetIsolationKey(
+    int32_t client_id,
+    const blink::WebGPUExecutionContextToken& token,
+    GetIsolationKeyCallback cb) {
+  std::string isolation_key = delegate_->GetIsolationKey(client_id, token);
+  std::move(cb).Run(isolation_key);
+}
+
 void GpuHostImpl::DidUpdateGPUInfo(const gpu::GPUInfo& gpu_info) {
   delegate_->DidUpdateGPUInfo(gpu_info);
 }
diff --git a/components/viz/host/gpu_host_impl.h b/components/viz/host/gpu_host_impl.h
index dbd450fc..c4af4ae 100644
--- a/components/viz/host/gpu_host_impl.h
+++ b/components/viz/host/gpu_host_impl.h
@@ -85,6 +85,9 @@
 #endif
     virtual void BlockDomainsFrom3DAPIs(const std::set<GURL>& urls,
                                         gpu::DomainGuilt guilt) = 0;
+    virtual std::string GetIsolationKey(
+        int32_t client_id,
+        const blink::WebGPUExecutionContextToken& token) = 0;
     virtual void DisableGpuCompositing() = 0;
     virtual bool GpuAccessAllowed() const = 0;
     virtual gpu::GpuDiskCacheFactory* GetGpuDiskCacheFactory() = 0;
@@ -258,6 +261,9 @@
   void SetChildSurface(gpu::SurfaceHandle parent,
                        gpu::SurfaceHandle child) override;
 #endif
+  void GetIsolationKey(int32_t client_id,
+                       const blink::WebGPUExecutionContextToken& token,
+                       GetIsolationKeyCallback cb) override;
   void StoreBlobToDisk(const gpu::GpuDiskCacheHandle& handle,
                        const std::string& key,
                        const std::string& blob) override;
diff --git a/components/viz/service/display/overlay_candidate.cc b/components/viz/service/display/overlay_candidate.cc
index 5f98d951..814d8fb7 100644
--- a/components/viz/service/display/overlay_candidate.cc
+++ b/components/viz/service/display/overlay_candidate.cc
@@ -10,6 +10,7 @@
 #include "components/viz/service/debugger/viz_debugger.h"
 #include "third_party/skia/include/core/SkColor.h"
 #include "ui/gfx/geometry/rect_conversions.h"
+#include "ui/gfx/overlay_transform_utils.h"
 
 namespace viz {
 
@@ -62,6 +63,30 @@
   return false;
 }
 
+// static
+void OverlayCandidate::ApplyClip(OverlayCandidate& candidate,
+                                 const gfx::RectF& clip_rect) {
+  DCHECK(absl::holds_alternative<gfx::OverlayTransform>(candidate.transform));
+  if (!clip_rect.Contains(candidate.display_rect)) {
+    // Apply the buffer transform to the candidate's |uv_rect| so that it is
+    // in the same orientation as |display_rect| when applying the clip.
+    gfx::Transform buffer_transform = gfx::OverlayTransformToTransform(
+        absl::get<gfx::OverlayTransform>(candidate.transform),
+        gfx::SizeF(1, 1));
+    candidate.uv_rect = buffer_transform.MapRect(candidate.uv_rect);
+
+    gfx::RectF intersect_clip_display = clip_rect;
+    intersect_clip_display.Intersect(candidate.display_rect);
+    gfx::RectF uv_rect = cc::MathUtil::ScaleRectProportional(
+        candidate.uv_rect, candidate.display_rect, intersect_clip_display);
+    candidate.display_rect = intersect_clip_display;
+
+    // Return |uv_rect| to buffer uv space.
+    candidate.uv_rect =
+        buffer_transform.InverseMapRect(uv_rect).value_or(uv_rect);
+  }
+}
+
 void OverlayCandidate::TransformRectToTargetSpace(
     gfx::RectF& content_rect) const {
   if (absl::holds_alternative<gfx::Transform>(transform)) {
diff --git a/components/viz/service/display/overlay_candidate.h b/components/viz/service/display/overlay_candidate.h
index 7a1b152..d358e7c 100644
--- a/components/viz/service/display/overlay_candidate.h
+++ b/components/viz/service/display/overlay_candidate.h
@@ -69,6 +69,14 @@
                          QuadList::ConstIterator quad_list_begin,
                          QuadList::ConstIterator quad_list_end);
 
+  // Modifies the |candidate|'s |display_rect| to be clipped within |clip_rect|.
+  // This function will also update the |uv_rect| based on what clipping was
+  // applied to |display_rect|.
+  // |clip_rect| should be in the same space as |candidate|'s |display_rect|,
+  // and |candidate| should not have an arbitrary transform.
+  static void ApplyClip(OverlayCandidate& candidate,
+                        const gfx::RectF& clip_rect);
+
   // Returns true if the |quad| cannot be displayed on the main plane. This is
   // used in conjuction with protected content that can't be GPU composited and
   // will be shown via an overlay.
diff --git a/components/viz/service/display/overlay_candidate_factory.cc b/components/viz/service/display/overlay_candidate_factory.cc
index 6ab54d2..93768b9 100644
--- a/components/viz/service/display/overlay_candidate_factory.cc
+++ b/components/viz/service/display/overlay_candidate_factory.cc
@@ -118,31 +118,6 @@
   return OverlayCandidate::CandidateStatus::kFailNotAxisAligned2dRotation;
 }
 
-// Modifies the |candidate|'s |display_rect| to be clipped within |clip_rect|.
-// This function will also update the |uv_rect| based on what clipping was
-// applied to |display_rect|.
-// |clip_rect| should be in the same space as |candidate|'s |display_rect|.
-void ApplyClip(OverlayCandidate& candidate, const gfx::RectF& clip_rect) {
-  if (!clip_rect.Contains(candidate.display_rect)) {
-    // Apply the buffer transform to the candidate's |uv_rect| so that it is
-    // in the same orientation as |display_rect| when applying the clip.
-    gfx::Transform buffer_transform = gfx::OverlayTransformToTransform(
-        absl::get<gfx::OverlayTransform>(candidate.transform),
-        gfx::SizeF(1, 1));
-    candidate.uv_rect = buffer_transform.MapRect(candidate.uv_rect);
-
-    gfx::RectF intersect_clip_display = clip_rect;
-    intersect_clip_display.Intersect(candidate.display_rect);
-    gfx::RectF uv_rect = cc::MathUtil::ScaleRectProportional(
-        candidate.uv_rect, candidate.display_rect, intersect_clip_display);
-    candidate.display_rect = intersect_clip_display;
-
-    // Return |uv_rect| to buffer uv space.
-    candidate.uv_rect =
-        buffer_transform.InverseMapRect(uv_rect).value_or(uv_rect);
-  }
-}
-
 }  // namespace
 
 OverlayCandidate::CandidateStatus OverlayCandidateFactory::FromDrawQuad(
@@ -433,7 +408,7 @@
       // need to clip here with the |primary_rect|.
       clip_to_apply.Intersect(primary_rect_);
 
-      ApplyClip(candidate, clip_to_apply);
+      OverlayCandidate::ApplyClip(candidate, clip_to_apply);
 
       if (candidate.display_rect.IsEmpty())
         return CandidateStatus::kFailVisible;
diff --git a/components/viz/service/display/skia_renderer.cc b/components/viz/service/display/skia_renderer.cc
index ba0af47..fce6ae5 100644
--- a/components/viz/service/display/skia_renderer.cc
+++ b/components/viz/service/display/skia_renderer.cc
@@ -3579,19 +3579,16 @@
   overlay->display_rect =
       quad->shared_quad_state->quad_to_target_transform.MapRect(
           gfx::RectF(filter_bounds));
-  // TODO(petermcneeley): This clipping is only correct for translation and
-  // scale. For other transforms we will need to send the rect over as a
-  // separate parameter.
-  auto unclipped_display_rect = overlay->display_rect;
-  overlay->display_rect.Intersect(
-      gfx::RectF(gfx::SizeF(current_frame()->device_viewport_size)));
   // Set |uv_rect| to reflect rounding from |filter_bounds| to |buffer_size|.
   overlay->uv_rect = gfx::RectF{
       static_cast<float>(filter_bounds.width()) / buffer_size.width(),
       static_cast<float>(filter_bounds.height()) / buffer_size.height()};
-  if (unclipped_display_rect != overlay->display_rect) {
-    overlay->uv_rect = cc::MathUtil::ScaleRectProportional(
-        overlay->uv_rect, unclipped_display_rect, overlay->display_rect);
+  // TODO(rivr): Handle the case where the overlay has an arbitrary transform
+  // applied.
+  if (absl::holds_alternative<gfx::OverlayTransform>(overlay->transform)) {
+    OverlayCandidate::ApplyClip(
+        *overlay,
+        gfx::RectF(gfx::SizeF(current_frame()->device_viewport_size)));
   }
 #endif  // BUILDFLAG(IS_APPLE)
 }
diff --git a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
index b9826bb..36d38f0 100644
--- a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
+++ b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
@@ -2130,6 +2130,10 @@
   // Release all ongoing AsyncReadResults.
   ReleaseAsyncReadResultHelpers();
 
+  for (auto& entry : skia_representations_) {
+    entry.second->OnContextLost();
+  }
+
   context_state_->MarkContextLost();
   if (context_lost_callback_) {
     PostTaskToClientThread(std::move(context_lost_callback_));
diff --git a/components/viz/service/frame_sinks/frame_sink_manager_impl.cc b/components/viz/service/frame_sinks/frame_sink_manager_impl.cc
index 571e691..7c25edc4 100644
--- a/components/viz/service/frame_sinks/frame_sink_manager_impl.cc
+++ b/components/viz/service/frame_sinks/frame_sink_manager_impl.cc
@@ -751,7 +751,20 @@
 
 void FrameSinkManagerImpl::StartThrottlingAllFrameSinks(
     base::TimeDelta interval) {
-  global_throttle_interval_ = interval;
+  // Floor the requested interval to the nearest 10th of a millisecond. This is
+  // because the precision of timing between frames is in microseconds, which
+  // can result in error accumulation over several throttled frames.
+  //
+  // For instance, on a 60Hz display, the first frame is produced at 0.016666
+  // seconds, and the second at (0.016666 + 0.016666 = 0.033332) seconds.
+  // base::Hertz(30) is 0.033333 seconds, so the second frame is considered to
+  // have been produced too fast, and is therefore throttled. This results in a
+  // 20Hz refresh rate instead of the desired 30Hz.
+  //
+  // Flooring at the nearest 10th of a millisecond produces correct throttling
+  // results for frame rates up to 960Hz, after which either flooring to
+  // milliseconds or a more precise between-frames measurement is required.
+  global_throttle_interval_ = interval.FloorToMultiple(base::Microseconds(100));
   UpdateThrottling();
 }
 
diff --git a/components/viz/service/frame_sinks/frame_sink_manager_unittest.cc b/components/viz/service/frame_sinks/frame_sink_manager_unittest.cc
index 0eab6ba..eeb3837 100644
--- a/components/viz/service/frame_sinks/frame_sink_manager_unittest.cc
+++ b/components/viz/service/frame_sinks/frame_sink_manager_unittest.cc
@@ -535,6 +535,10 @@
 
   constexpr base::TimeDelta global_interval = base::Hertz(30);
   constexpr base::TimeDelta interval = base::Hertz(20);
+  // The global throttle interval is floored to avoid precision-related
+  // accumulated error. See the comment on `StartThrottlingAllFrameSinks`
+  const base::TimeDelta expected_global_interval =
+      base::Hertz(30).FloorToMultiple(base::Microseconds(100));
 
   std::vector<FrameSinkId> ids{kFrameSinkIdRoot, kFrameSinkIdA, kFrameSinkIdB,
                                kFrameSinkIdC, kFrameSinkIdD};
@@ -545,20 +549,20 @@
 
   // Starting global throttling should throttle the entire hierarchy.
   manager_.StartThrottlingAllFrameSinks(global_interval);
-  VerifyThrottling(global_interval, ids);
+  VerifyThrottling(expected_global_interval, ids);
 
   // Throttling more aggressively on top of global throttling should further
   // throttle the specified frame sink hierarchy, but preserve global throttling
   // on the unaffected framesinks.
   manager_.Throttle({kFrameSinkIdC}, interval);
-  VerifyThrottling(global_interval,
+  VerifyThrottling(expected_global_interval,
                    {kFrameSinkIdRoot, kFrameSinkIdA, kFrameSinkIdB});
   VerifyThrottling(interval, {kFrameSinkIdC, kFrameSinkIdD});
 
   // Attempting to per-sink throttle to an interval shorter than the global
   // throttling should still throttle all frame sinks to the global interval.
   manager_.Throttle({kFrameSinkIdA}, base::Hertz(40));
-  VerifyThrottling(global_interval, ids);
+  VerifyThrottling(expected_global_interval, ids);
 
   // Add a new branch to the hierarchy. These new frame sinks should be globally
   // throttled immediately. root -> A -> B
@@ -571,7 +575,7 @@
   manager_.RegisterFrameSinkHierarchy(client_e->frame_sink_id(),
                                       client_f->frame_sink_id());
   VerifyThrottling(
-      global_interval,
+      expected_global_interval,
       {kFrameSinkIdRoot, kFrameSinkIdA, kFrameSinkIdB, kFrameSinkIdC,
        kFrameSinkIdD, kFrameSinkIdE, kFrameSinkIdF});
 
diff --git a/components/viz/service/gl/gpu_service_impl.cc b/components/viz/service/gl/gpu_service_impl.cc
index cd4c1dd..956687f 100644
--- a/components/viz/service/gl/gpu_service_impl.cc
+++ b/components/viz/service/gl/gpu_service_impl.cc
@@ -962,6 +962,13 @@
   gpu_host_->StoreBlobToDisk(handle, key, shader);
 }
 
+void GpuServiceImpl::GetIsolationKey(
+    int client_id,
+    const blink::WebGPUExecutionContextToken& token,
+    GetIsolationKeyCallback cb) {
+  gpu_host_->GetIsolationKey(client_id, token, std::move(cb));
+}
+
 void GpuServiceImpl::MaybeExitOnContextLost() {
   DCHECK(main_runner_->BelongsToCurrentThread());
 
diff --git a/components/viz/service/gl/gpu_service_impl.h b/components/viz/service/gl/gpu_service_impl.h
index 0fdaf1d..0208bf6 100644
--- a/components/viz/service/gl/gpu_service_impl.h
+++ b/components/viz/service/gl/gpu_service_impl.h
@@ -248,9 +248,13 @@
                       const GURL& active_url) override;
   void GetDawnInfo(GetDawnInfoCallback callback) override;
 
+  void GetIsolationKey(int client_id,
+                       const blink::WebGPUExecutionContextToken& token,
+                       GetIsolationKeyCallback cb) override;
   void StoreBlobToDisk(const gpu::GpuDiskCacheHandle& handle,
                        const std::string& key,
                        const std::string& shader) override;
+
   // Attempts to atomically shut down the process but only if not running in
   // host process. An error message will be logged.
   void MaybeExitOnContextLost() override;
diff --git a/components/webapps/browser/android/add_to_homescreen_data_fetcher_unittest.cc b/components/webapps/browser/android/add_to_homescreen_data_fetcher_unittest.cc
index 0ca6ae04..53c6e97 100644
--- a/components/webapps/browser/android/add_to_homescreen_data_fetcher_unittest.cc
+++ b/components/webapps/browser/android/add_to_homescreen_data_fetcher_unittest.cc
@@ -23,6 +23,7 @@
 #include "components/favicon/core/large_favicon_provider.h"
 #include "components/favicon_base/favicon_types.h"
 #include "components/webapps/browser/features.h"
+#include "components/webapps/browser/installable/installable_data.h"
 #include "components/webapps/browser/installable/installable_logging.h"
 #include "components/webapps/browser/installable/installable_manager.h"
 #include "components/webapps/browser/installable/installable_metrics.h"
@@ -175,7 +176,7 @@
          params.valid_primary_icon ? primary_icon_.get() : nullptr,
          params.prefer_maskable_icon, GURL() /* splash_icon_url */,
          nullptr /* splash_icon */, params.prefer_maskable_icon,
-         std::vector<SkBitmap>() /* screenshots */,
+         std::vector<webapps::Screenshot>() /* screenshots */,
          params.valid_manifest ? is_installable : false,
          params.has_worker ? is_installable : true});
   }
diff --git a/components/webapps/browser/android/bottomsheet/pwa_bottom_sheet_controller.cc b/components/webapps/browser/android/bottomsheet/pwa_bottom_sheet_controller.cc
index 9c0ff31..fa1fa0e 100644
--- a/components/webapps/browser/android/bottomsheet/pwa_bottom_sheet_controller.cc
+++ b/components/webapps/browser/android/bottomsheet/pwa_bottom_sheet_controller.cc
@@ -12,6 +12,7 @@
 #include "components/webapps/browser/android/app_banner_manager_android.h"
 #include "components/webapps/browser/android/webapps_jni_headers/PwaBottomSheetControllerProvider_jni.h"
 #include "components/webapps/browser/android/webapps_jni_headers/PwaBottomSheetController_jni.h"
+#include "components/webapps/browser/installable/installable_data.h"
 #include "components/webapps/browser/webapps_client.h"
 #include "components/webapps/common/constants.h"
 #include "content/public/browser/web_contents.h"
@@ -26,7 +27,7 @@
 namespace {
 
 bool CanShowBottomSheet(content::WebContents* web_contents,
-                        const std::vector<SkBitmap>& screenshots) {
+                        const std::vector<webapps::Screenshot>& screenshots) {
   if (screenshots.size() == 0)
     return false;
 
@@ -64,7 +65,7 @@
     const SkBitmap& primary_icon,
     const bool is_primary_icon_maskable,
     const GURL& start_url,
-    const std::vector<SkBitmap>& screenshots,
+    const std::vector<Screenshot>& screenshots,
     const std::u16string& description,
     bool expand_sheet,
     std::unique_ptr<AddToHomescreenParams> a2hs_params,
@@ -100,7 +101,7 @@
     const SkBitmap& primary_icon,
     const bool is_primary_icon_maskable,
     const GURL& start_url,
-    const std::vector<SkBitmap>& screenshots,
+    const std::vector<Screenshot>& screenshots,
     const std::u16string& description,
     std::unique_ptr<AddToHomescreenParams> a2hs_params,
     base::RepeatingCallback<void(AddToHomescreenInstaller::Event,
@@ -185,8 +186,8 @@
       j_bitmap, is_primary_icon_maskable_, j_user_title, j_url, j_description);
 
   for (const auto& screenshot : screenshots_) {
-    if (!screenshot.isNull())
-      UpdateScreenshot(screenshot, web_contents);
+    if (!screenshot.image.isNull())
+      UpdateScreenshot(screenshot.image, web_contents);
   }
 
   if (expand_sheet) {
@@ -201,6 +202,8 @@
   JNIEnv* env = base::android::AttachCurrentThread();
   ScopedJavaLocalRef<jobject> java_screenshot =
       gfx::ConvertToJavaBitmap(screenshot);
+  // TODO(https://crbug.com/1371279): support passing label to use as
+  // the accessibility string.
   Java_PwaBottomSheetController_addWebAppScreenshot(
       env, java_screenshot, web_contents->GetJavaWebContents());
 }
diff --git a/components/webapps/browser/android/bottomsheet/pwa_bottom_sheet_controller.h b/components/webapps/browser/android/bottomsheet/pwa_bottom_sheet_controller.h
index ce29005..cdc1059 100644
--- a/components/webapps/browser/android/bottomsheet/pwa_bottom_sheet_controller.h
+++ b/components/webapps/browser/android/bottomsheet/pwa_bottom_sheet_controller.h
@@ -22,6 +22,8 @@
 
 namespace webapps {
 
+struct Screenshot;
+
 // A Controller for the BottomSheet install UI for progressive web apps.
 // If successfully created, the lifetime of this object is tied to the lifetime
 // of the BottomSheet UI being shown and the object is destroyed from Java when
@@ -39,7 +41,7 @@
       const SkBitmap& primary_icon,
       const bool is_primary_icon_maskable,
       const GURL& start_url,
-      const std::vector<SkBitmap>& screenshots,
+      const std::vector<Screenshot>& screenshots,
       const std::u16string& description,
       bool expand_sheet,
       std::unique_ptr<AddToHomescreenParams> a2hs_params,
@@ -75,7 +77,7 @@
       const SkBitmap& primary_icon,
       const bool is_primary_icon_maskable,
       const GURL& start_url,
-      const std::vector<SkBitmap>& screenshots,
+      const std::vector<Screenshot>& screenshots,
       const std::u16string& description,
       std::unique_ptr<AddToHomescreenParams> a2hs_params,
       base::RepeatingCallback<void(AddToHomescreenInstaller::Event,
@@ -97,7 +99,7 @@
   const SkBitmap primary_icon_;
   const bool is_primary_icon_maskable_ = false;
   const GURL& start_url_;
-  const std::vector<SkBitmap>& screenshots_;
+  const std::vector<Screenshot>& screenshots_;
   const std::u16string description_;
   // Contains app parameters such as its type and the install source used that
   // will be passed to |a2hs_event_callback_| eventually.
diff --git a/components/webapps/browser/banners/app_banner_manager.h b/components/webapps/browser/banners/app_banner_manager.h
index 00002ae..fa25008 100644
--- a/components/webapps/browser/banners/app_banner_manager.h
+++ b/components/webapps/browser/banners/app_banner_manager.h
@@ -36,6 +36,7 @@
 class InstallableManager;
 enum class WebappInstallSource;
 struct InstallableData;
+struct Screenshot;
 
 // Coordinates the creation of an app banner, from detecting eligibility to
 // fetching data and creating the infobar. Sites declare that they want an app
@@ -193,7 +194,7 @@
   const SkBitmap& primary_icon() const { return primary_icon_; }
   bool has_maskable_primary_icon() const { return has_maskable_primary_icon_; }
   const GURL& validated_url() { return validated_url_; }
-  const std::vector<SkBitmap>& screenshots() { return screenshots_; }
+  const std::vector<Screenshot>& screenshots() { return screenshots_; }
 
   // Tracks the route taken to an install of a PWA (whether the bottom sheet
   // was shown or the infobar/install) and what triggered it (install source).
@@ -372,7 +373,7 @@
   State state_ = State::INACTIVE;
 
   // The screenshots to show in the install UI.
-  std::vector<SkBitmap> screenshots_;
+  std::vector<Screenshot> screenshots_;
 
  private:
   friend class AppBannerManagerTest;
diff --git a/components/webapps/browser/installable/fake_installable_manager.cc b/components/webapps/browser/installable/fake_installable_manager.cc
index 2d98485..eac5857a 100644
--- a/components/webapps/browser/installable/fake_installable_manager.cc
+++ b/components/webapps/browser/installable/fake_installable_manager.cc
@@ -71,7 +71,7 @@
   auto installable_data = std::make_unique<InstallableData>(
       std::move(errors), installable_manager->manifest_url_,
       *installable_manager->manifest_, GURL::EmptyGURL(), icon.get(), false,
-      GURL::EmptyGURL(), icon.get(), false, std::vector<SkBitmap>(),
+      GURL::EmptyGURL(), icon.get(), false, std::vector<Screenshot>(),
       valid_manifest, has_worker);
 
   installable_manager->data_ = std::move(installable_data);
diff --git a/components/webapps/browser/installable/installable_data.cc b/components/webapps/browser/installable/installable_data.cc
index 2f0f745..dbc4865 100644
--- a/components/webapps/browser/installable/installable_data.cc
+++ b/components/webapps/browser/installable/installable_data.cc
@@ -13,6 +13,14 @@
 
 namespace webapps {
 
+Screenshot::Screenshot(SkBitmap image, absl::optional<std::u16string> label)
+    : image(std::move(image)), label(label) {}
+
+Screenshot::Screenshot(const Screenshot& screenshot) = default;
+Screenshot& Screenshot::operator=(const Screenshot& screenshot) = default;
+
+Screenshot::~Screenshot() = default;
+
 InstallableData::InstallableData(std::vector<InstallableStatusCode> errors,
                                  const GURL& manifest_url,
                                  const blink::mojom::Manifest& manifest,
@@ -22,7 +30,7 @@
                                  const GURL& splash_icon_url,
                                  const SkBitmap* splash_icon,
                                  bool has_maskable_splash_icon,
-                                 const std::vector<SkBitmap>& screenshots,
+                                 const std::vector<Screenshot>& screenshots,
                                  bool valid_manifest,
                                  bool worker_check_passed)
     : errors(std::move(errors)),
diff --git a/components/webapps/browser/installable/installable_data.h b/components/webapps/browser/installable/installable_data.h
index 31bdb3f..543f127 100644
--- a/components/webapps/browser/installable/installable_data.h
+++ b/components/webapps/browser/installable/installable_data.h
@@ -6,6 +6,7 @@
 #define COMPONENTS_WEBAPPS_BROWSER_INSTALLABLE_INSTALLABLE_DATA_H_
 
 #include <map>
+#include <string>
 #include <vector>
 
 #include "base/callback_forward.h"
@@ -17,6 +18,19 @@
 
 namespace webapps {
 
+struct Screenshot {
+  Screenshot(SkBitmap image, absl::optional<std::u16string> label);
+  Screenshot(const Screenshot&);
+  Screenshot& operator=(const Screenshot&);
+
+  ~Screenshot();
+
+  SkBitmap image;
+
+  // Label for accessibility.
+  absl::optional<std::u16string> label;
+};
+
 // This struct contains the results of an InstallableManager::GetData call and
 // is passed to an InstallableCallback. Each pointer and reference is owned by
 // InstallableManager, and callers should copy any objects which they wish to
@@ -31,7 +45,7 @@
                   const GURL& splash_icon_url,
                   const SkBitmap* splash_icon,
                   bool has_maskable_splash_icon,
-                  const std::vector<SkBitmap>& screenshots,
+                  const std::vector<Screenshot>& screenshots,
                   bool valid_manifest,
                   bool worker_check_passed);
 
@@ -95,7 +109,7 @@
   const bool has_maskable_splash_icon;
 
   // The screenshots to show in the install UI.
-  const std::vector<SkBitmap>& screenshots;
+  const std::vector<Screenshot>& screenshots;
 
   // true if the site has a valid, installable web app manifest. If
   // |valid_manifest| or |worker_check_passed| was true and the site isn't
diff --git a/components/webapps/browser/installable/installable_manager.cc b/components/webapps/browser/installable/installable_manager.cc
index 6ceb923e..a38c3cbc 100644
--- a/components/webapps/browser/installable/installable_manager.cc
+++ b/components/webapps/browser/installable/installable_manager.cc
@@ -984,9 +984,9 @@
       // dimensions checks portrait vs landscape mode (1:2 vs 2:1 for instance).
       if (screenshots_.size() &&
           screenshot.dimensions().width() *
-                  screenshots_[0].dimensions().height() !=
+                  screenshots_[0].image.dimensions().height() !=
               screenshot.dimensions().height() *
-                  screenshots_[0].dimensions().width()) {
+                  screenshots_[0].image.dimensions().width()) {
         continue;
       }
 
@@ -995,7 +995,7 @@
       if (dimensions.second > dimensions.first * kMaximumScreenshotRatio)
         continue;
 
-      screenshots_.push_back(screenshot);
+      screenshots_.emplace_back(std::move(screenshot), url->label);
     }
 
     downloaded_screenshots_.clear();
diff --git a/components/webapps/browser/installable/installable_manager.h b/components/webapps/browser/installable/installable_manager.h
index dd81b14..ef51b63 100644
--- a/components/webapps/browser/installable/installable_manager.h
+++ b/components/webapps/browser/installable/installable_manager.h
@@ -270,7 +270,7 @@
   std::unique_ptr<ValidManifestProperty> valid_manifest_;
   std::unique_ptr<ServiceWorkerProperty> worker_;
   std::map<IconUsage, IconProperty> icons_;
-  std::vector<SkBitmap> screenshots_;
+  std::vector<Screenshot> screenshots_;
 
   // A map of screenshots downloaded. Used temporarily until images are moved to
   // the screenshots_ member.
diff --git a/components/webapps/browser/installable/installable_task_queue.cc b/components/webapps/browser/installable/installable_task_queue.cc
index 3cfde7c..55f8a97 100644
--- a/components/webapps/browser/installable/installable_task_queue.cc
+++ b/components/webapps/browser/installable/installable_task_queue.cc
@@ -7,6 +7,7 @@
 #include <map>
 #include <utility>
 
+#include "components/webapps/browser/installable/installable_data.h"
 #include "third_party/blink/public/mojom/manifest/manifest.mojom.h"
 
 namespace webapps {
@@ -78,16 +79,16 @@
     if (task.callback) {
       std::move(task.callback)
           .Run(InstallableData({code}, GURL(), manifest, GURL(), nullptr, false,
-                               GURL(), nullptr, false, std::vector<SkBitmap>(),
-                               false, false));
+                               GURL(), nullptr, false,
+                               std::vector<Screenshot>(), false, false));
     }
   }
   for (InstallableTask& task : paused_tasks) {
     if (task.callback) {
       std::move(task.callback)
           .Run(InstallableData({code}, GURL(), manifest, GURL(), nullptr, false,
-                               GURL(), nullptr, false, std::vector<SkBitmap>(),
-                               false, false));
+                               GURL(), nullptr, false,
+                               std::vector<Screenshot>(), false, false));
     }
   }
 }
diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn
index 321d067..8372ecd 100644
--- a/content/browser/BUILD.gn
+++ b/content/browser/BUILD.gn
@@ -1314,17 +1314,17 @@
     "navigation_or_document_handle.h",
     "navigation_subresource_loader_params.cc",
     "navigation_subresource_loader_params.h",
-    "net/browser_online_state_observer.cc",
-    "net/browser_online_state_observer.h",
-    "net/cookie_store_factory.cc",
-    "net/network_errors_listing_ui.cc",
-    "net/network_errors_listing_ui.h",
-    "net/network_quality_observer_impl.cc",
-    "net/network_quality_observer_impl.h",
-    "net/reporting_service_proxy.cc",
-    "net/reporting_service_proxy.h",
-    "net/socket_broker_impl.cc",
-    "net/socket_broker_impl.h",
+    "network/browser_online_state_observer.cc",
+    "network/browser_online_state_observer.h",
+    "network/cookie_store_factory.cc",
+    "network/network_errors_listing_ui.cc",
+    "network/network_errors_listing_ui.h",
+    "network/network_quality_observer_impl.cc",
+    "network/network_quality_observer_impl.h",
+    "network/reporting_service_proxy.cc",
+    "network/reporting_service_proxy.h",
+    "network/socket_broker_impl.cc",
+    "network/socket_broker_impl.h",
     "network_context_client_base_impl.cc",
     "network_context_client_base_impl.h",
     "network_sandbox_grant_result.h",
@@ -1390,12 +1390,12 @@
     "permissions/permission_service_impl.h",
 
     # TODO(crbug.com/1327384): Remove `permission_util.*`.
-    "net/cross_origin_embedder_policy_reporter.cc",
-    "net/cross_origin_embedder_policy_reporter.h",
-    "net/cross_origin_opener_policy_reporter.cc",
-    "net/cross_origin_opener_policy_reporter.h",
-    "net/http_cache_backend_file_operations_factory.cc",
-    "net/http_cache_backend_file_operations_factory.h",
+    "network/cross_origin_embedder_policy_reporter.cc",
+    "network/cross_origin_embedder_policy_reporter.h",
+    "network/cross_origin_opener_policy_reporter.cc",
+    "network/cross_origin_opener_policy_reporter.h",
+    "network/http_cache_backend_file_operations_factory.cc",
+    "network/http_cache_backend_file_operations_factory.h",
     "permissions/permission_util.cc",
     "permissions/permission_util.h",
     "picture_in_picture/document_picture_in_picture_window_controller_impl.cc",
@@ -2413,8 +2413,8 @@
       "media/key_system_support_win.cc",
       "media/key_system_support_win.h",
       "memory/swap_metrics_driver_impl_win.cc",
-      "net/network_service_process_tracker_win.cc",
-      "net/network_service_process_tracker_win.h",
+      "network/network_service_process_tracker_win.cc",
+      "network/network_service_process_tracker_win.h",
       "renderer_host/direct_manipulation_event_handler_win.cc",
       "renderer_host/direct_manipulation_event_handler_win.h",
       "renderer_host/direct_manipulation_helper_win.cc",
diff --git a/content/browser/accessibility/browser_accessibility_cocoa.h b/content/browser/accessibility/browser_accessibility_cocoa.h
index 51c5a34..0676f51 100644
--- a/content/browser/accessibility/browser_accessibility_cocoa.h
+++ b/content/browser/accessibility/browser_accessibility_cocoa.h
@@ -129,7 +129,6 @@
 @property(nonatomic, readonly) NSNumber* expanded;
 @property(nonatomic, readonly) NSNumber* focused;
 @property(nonatomic, readonly) id header;
-@property(nonatomic, readonly) NSString* help;
 // Index of a row, column, or tree item.
 @property(nonatomic, readonly) NSNumber* index;
 @property(nonatomic, readonly) NSNumber* treeItemRowIndex;
diff --git a/content/browser/accessibility/browser_accessibility_cocoa.mm b/content/browser/accessibility/browser_accessibility_cocoa.mm
index ad324f6..90ba5fa 100644
--- a/content/browser/accessibility/browser_accessibility_cocoa.mm
+++ b/content/browser/accessibility/browser_accessibility_cocoa.mm
@@ -339,13 +339,6 @@
   return attributed_text;
 }
 
-// Returns an autoreleased copy of the AXNodeData's attribute.
-NSString* NSStringForStringAttribute(BrowserAccessibility* browserAccessibility,
-                                     StringAttribute attribute) {
-  return base::SysUTF8ToNSString(
-      browserAccessibility->GetStringAttribute(attribute));
-}
-
 // GetState checks the bitmask used in AXNodeData to check
 // if the given state was set on the accessibility object.
 bool GetState(BrowserAccessibility* accessibility, ax::mojom::State state) {
@@ -607,7 +600,6 @@
       {NSAccessibilityExpandedAttribute, @"expanded"},
       {NSAccessibilityFocusedAttribute, @"focused"},
       {NSAccessibilityHeaderAttribute, @"header"},
-      {NSAccessibilityHelpAttribute, @"help"},
       {NSAccessibilityIndexAttribute, @"index"},
       {NSAccessibilityInsertionPointLineNumberAttribute,
        @"insertionPointLineNumber"},
@@ -871,13 +863,6 @@
   return nil;
 }
 
-- (NSString*)help {
-  if (![self instanceActive])
-    return nil;
-  return NSStringForStringAttribute(_owner,
-                                    ax::mojom::StringAttribute::kDescription);
-}
-
 - (NSNumber*)index {
   if (![self instanceActive])
     return nil;
@@ -2477,7 +2462,6 @@
                        NSAccessibilityEnabledAttribute,
                        NSAccessibilityEndTextMarkerAttribute,
                        NSAccessibilityFocusedAttribute,
-                       NSAccessibilityHelpAttribute,
                        NSAccessibilityLinkedUIElementsAttribute,
                        NSAccessibilityParentAttribute,
                        NSAccessibilityPositionAttribute,
diff --git a/content/browser/accessibility/browser_accessibility_manager.cc b/content/browser/accessibility/browser_accessibility_manager.cc
index fbd81294..16419ac 100644
--- a/content/browser/accessibility/browser_accessibility_manager.cc
+++ b/content/browser/accessibility/browser_accessibility_manager.cc
@@ -1873,11 +1873,6 @@
   return GetBrowserAccessibilityRoot()->ApproximateHitTest(blink_screen_point);
 }
 
-void BrowserAccessibilityManager::DetachFromParentManager() {
-  connected_to_parent_tree_node_ = false;
-  delegate_ = nullptr;
-}
-
 void BrowserAccessibilityManager::BuildAXTreeHitTestCache() {
   auto* root = GetBrowserAccessibilityRoot();
   if (!root)
diff --git a/content/browser/accessibility/browser_accessibility_manager.h b/content/browser/accessibility/browser_accessibility_manager.h
index 411143c6..3ba3f73 100644
--- a/content/browser/accessibility/browser_accessibility_manager.h
+++ b/content/browser/accessibility/browser_accessibility_manager.h
@@ -532,10 +532,6 @@
   BrowserAccessibility* ApproximateHitTest(
       const gfx::Point& blink_screen_point) const;
 
-  // Detaches this instance from its parent manager. Useful during
-  // deconstruction.
-  void DetachFromParentManager();
-
   // Wrapper for converting the AXNode* returned by RetargetForEvents
   // to a BrowserAccessibility*. This is often needed.
   BrowserAccessibility* RetargetBrowserAccessibilityForEvents(
diff --git a/content/browser/accessibility/cross_platform_accessibility_browsertest.cc b/content/browser/accessibility/cross_platform_accessibility_browsertest.cc
index 9ba11feb..7208010d 100644
--- a/content/browser/accessibility/cross_platform_accessibility_browsertest.cc
+++ b/content/browser/accessibility/cross_platform_accessibility_browsertest.cc
@@ -1918,7 +1918,8 @@
 #endif
 
 #if defined(IS_FAST_BUILD)  // Avoid flakiness on slower debug/sanitizer builds.
-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_LACROS)
+// TODO(crbug.com/1179057): Test is flaky on multiple platforms.
+#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC)
 #define MAYBE_DocumentSelectionChangesAreNotBatched \
   DISABLED_DocumentSelectionChangesAreNotBatched
 #else
diff --git a/content/browser/accessibility/dump_accessibility_scripts_browsertest.cc b/content/browser/accessibility/dump_accessibility_scripts_browsertest.cc
index af0a6459..f9481bd8 100644
--- a/content/browser/accessibility/dump_accessibility_scripts_browsertest.cc
+++ b/content/browser/accessibility/dump_accessibility_scripts_browsertest.cc
@@ -288,6 +288,10 @@
   RunTypedTest<kMacAttributes>("ax-has-popup.html");
 }
 
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityScriptTest, AXHelp) {
+  RunTypedTest<kMacAttributes>("ax-help.html");
+}
+
 IN_PROC_BROWSER_TEST_P(DumpAccessibilityScriptTest, AXHighestEditableAncestor) {
   RunTypedTest<kMacAttributes>("ax-highest-editable-ancestor.html");
 }
diff --git a/content/browser/audio/audio_service.cc b/content/browser/audio/audio_service.cc
index 26a28409..5c193184 100644
--- a/content/browser/audio/audio_service.cc
+++ b/content/browser/audio/audio_service.cc
@@ -6,6 +6,7 @@
 
 #include "base/command_line.h"
 #include "base/metrics/field_trial_params.h"
+#include "base/strings/strcat.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/task/deferred_sequenced_task_runner.h"
 #include "base/threading/sequence_local_storage_slot.h"
@@ -28,6 +29,11 @@
 #include "services/audio/service_factory.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
 
+#if BUILDFLAG(IS_WIN) && BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+#include "media/audio/win/audio_edid_scan_win.h"
+#include "media/audio/win/audio_manager_win.h"
+#endif  // BUILDFLAG(IS_WIN) && BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+
 namespace content {
 
 namespace {
@@ -93,7 +99,8 @@
 }
 
 void LaunchAudioServiceInProcess(
-    mojo::PendingReceiver<audio::mojom::AudioService> receiver) {
+    mojo::PendingReceiver<audio::mojom::AudioService> receiver,
+    uint32_t codec_bitmask) {
   // NOTE: If BrowserMainLoop is uninitialized, we have no AudioManager. In
   // this case we discard the receiver. The remote will always discard
   // messages. This is to work around unit testing environments where no
@@ -101,6 +108,10 @@
   if (!BrowserMainLoop::GetInstance())
     return;
 
+#if BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO) && BUILDFLAG(IS_WIN)
+  media::AudioManagerWin::SetBitstreamPassthroughBitmask(codec_bitmask);
+#endif
+
   // TODO(https://crbug.com/853254): Remove
   // BrowserMainLoop::GetAudioManager().
   audio::Service::GetInProcessTaskRunner()->PostTask(
@@ -118,38 +129,40 @@
 }
 
 void LaunchAudioServiceOutOfProcess(
-    mojo::PendingReceiver<audio::mojom::AudioService> receiver) {
+    mojo::PendingReceiver<audio::mojom::AudioService> receiver,
+    uint32_t codec_bitmask) {
+  std::vector<std::string> switches;
+#if BUILDFLAG(IS_MAC)
+  // On Mac, the audio service requires a CFRunLoop provided by a
+  // UI MessageLoop type, to run AVFoundation and CoreAudio code.
+  // See https://crbug.com/834581.
+  switches.push_back(switches::kMessageLoopTypeUi);
+#elif BUILDFLAG(IS_WIN)
+  if (GetContentClient()->browser()->ShouldEnableAudioProcessHighPriority())
+    switches.push_back(switches::kAudioProcessHighPriority);
+#if BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+  switches.push_back(base::StrCat({switches::kAudioCodecsFromEDID, "=",
+                                   base::NumberToString(codec_bitmask)}));
+#endif  // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+#endif  // BUILDFLAG(IS_WIN)
   ServiceProcessHost::Launch(
       std::move(receiver),
       ServiceProcessHost::Options()
           .WithDisplayName("Audio Service")
-#if BUILDFLAG(IS_MAC)
-          // On Mac, the audio service requires a CFRunLoop provided by a
-          // UI MessageLoop type, to run AVFoundation and CoreAudio code.
-          // See https://crbug.com/834581.
-          .WithExtraCommandLineSwitches({switches::kMessageLoopTypeUi})
-#elif BUILDFLAG(IS_WIN)
-          .WithExtraCommandLineSwitches(
-              GetContentClient()
-                      ->browser()
-                      ->ShouldEnableAudioProcessHighPriority()
-                  ? std::vector<std::string>(
-                        {switches::kAudioProcessHighPriority})
-                  : std::vector<std::string>())
-#endif
+          .WithExtraCommandLineSwitches(std::move(switches))
           .Pass());
 }
 
-void LaunchAudioService(mojo::Remote<audio::mojom::AudioService>* remote) {
-  auto receiver = remote->BindNewPipeAndPassReceiver();
+void LaunchAudioService(
+    mojo::PendingReceiver<audio::mojom::AudioService> receiver,
+    uint32_t codec_bitmask) {
+  // The static storage slot in GetAudioService() prevents LaunchAudioService
+  // from being called more than once.
   if (IsAudioServiceOutOfProcess()) {
-    LaunchAudioServiceOutOfProcess(std::move(receiver));
-    if (auto idle_timeout = GetAudioServiceProcessIdleTimeout())
-      remote->reset_on_idle_timeout(*idle_timeout);
+    LaunchAudioServiceOutOfProcess(std::move(receiver), codec_bitmask);
   } else {
-    LaunchAudioServiceInProcess(std::move(receiver));
+    LaunchAudioServiceInProcess(std::move(receiver), codec_bitmask);
   }
-  remote->reset_on_disconnect();
 }
 
 }  // namespace
@@ -165,8 +178,27 @@
       mojo::Remote<audio::mojom::AudioService>>
       remote_slot;
   auto& remote = remote_slot.GetOrCreateValue();
-  if (!remote)
-    LaunchAudioService(&remote);
+  if (!remote) {
+    auto receiver = remote.BindNewPipeAndPassReceiver();
+#if BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO) && BUILDFLAG(IS_WIN)
+    // The EDID scan is done in a COM STA thread and the result
+    // passed to the audio service launcher.
+    base::ThreadPool::CreateCOMSTATaskRunner(
+        {base::MayBlock(), base::TaskPriority::USER_BLOCKING,
+         base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN})
+        ->PostTaskAndReplyWithResult(
+            FROM_HERE, base::BindOnce(&media::ScanEdidBitstreams),
+            base::BindOnce(&LaunchAudioService, std::move(receiver)));
+#else
+    LaunchAudioService(std::move(receiver), 0);
+#endif  // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO) && BUILDFLAG(IS_WIN)
+    if (IsAudioServiceOutOfProcess()) {
+      auto idle_timeout = GetAudioServiceProcessIdleTimeout();
+      if (idle_timeout)
+        remote.reset_on_idle_timeout(*idle_timeout);
+    }
+    remote.reset_on_disconnect();
+  }
   return *remote.get();
 }
 
diff --git a/content/browser/back_forward_cache_browsertest.cc b/content/browser/back_forward_cache_browsertest.cc
index 881e4ab7..818547cf 100644
--- a/content/browser/back_forward_cache_browsertest.cc
+++ b/content/browser/back_forward_cache_browsertest.cc
@@ -1750,8 +1750,9 @@
   }
 }
 
+// TODO(https://crbug.com/1275493): Flaky on various builders.
 IN_PROC_BROWSER_TEST_F(BackForwardCacheBrowserTest,
-                       SubframeTextInputStateUpdated) {
+                       DISABLED_SubframeTextInputStateUpdated) {
   ASSERT_TRUE(embedded_test_server()->Start());
   GURL url_1(embedded_test_server()->GetURL(
       "a.com", "/cross_site_iframe_factory.html?a(b(a))"));
diff --git a/content/browser/background_fetch/background_fetch_data_manager.cc b/content/browser/background_fetch/background_fetch_data_manager.cc
index 7863d1ec..7b15014e 100644
--- a/content/browser/background_fetch/background_fetch_data_manager.cc
+++ b/content/browser/background_fetch/background_fetch_data_manager.cc
@@ -11,6 +11,7 @@
 #include "base/observer_list.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/time/time.h"
+#include "components/services/storage/public/cpp/buckets/bucket_locator.h"
 #include "components/services/storage/public/mojom/cache_storage_control.mojom.h"
 #include "content/browser/background_fetch/background_fetch_constants.h"
 #include "content/browser/background_fetch/background_fetch_data_manager_observer.h"
@@ -100,7 +101,8 @@
   network::CrossOriginEmbedderPolicy cross_origin_embedder_policy;
 
   storage_partition_->GetCacheStorageControl()->AddReceiver(
-      cross_origin_embedder_policy, mojo::NullRemote(), storage_key,
+      cross_origin_embedder_policy, mojo::NullRemote(),
+      storage::BucketLocator::ForDefaultBucket(storage_key),
       storage::mojom::CacheStorageOwner::kBackgroundFetch,
       remote.BindNewPipeAndPassReceiver());
 
diff --git a/content/browser/browser_interface_binders.cc b/content/browser/browser_interface_binders.cc
index c85af56..9cf7dd9 100644
--- a/content/browser/browser_interface_binders.cc
+++ b/content/browser/browser_interface_binders.cc
@@ -36,7 +36,7 @@
 #include "content/browser/media/midi_host.h"
 #include "content/browser/media/session/media_session_service_impl.h"
 #include "content/browser/ml/ml_service_factory.h"
-#include "content/browser/net/reporting_service_proxy.h"
+#include "content/browser/network/reporting_service_proxy.h"
 #include "content/browser/picture_in_picture/picture_in_picture_service_impl.h"
 #include "content/browser/preloading/prerender/prerender_internals.mojom.h"
 #include "content/browser/preloading/prerender/prerender_internals_ui.h"
@@ -1346,6 +1346,8 @@
 #endif
   map->Add<blink::mojom::BucketManagerHost>(base::BindRepeating(
       &ServiceWorkerHost::CreateBucketManagerHost, base::Unretained(host)));
+  map->Add<blink::mojom::WebUsbService>(base::BindRepeating(
+      &ServiceWorkerHost::BindUsbService, base::Unretained(host)));
 
   // RenderProcessHost binders
   map->Add<media::mojom::VideoDecodePerfHistory>(BindServiceWorkerReceiver(
diff --git a/content/browser/browser_main_loop.cc b/content/browser/browser_main_loop.cc
index c6af082..2f8c0be 100644
--- a/content/browser/browser_main_loop.cc
+++ b/content/browser/browser_main_loop.cc
@@ -78,7 +78,7 @@
 #include "content/browser/media/media_internals.h"
 #include "content/browser/media/media_keys_listener_manager_impl.h"
 #include "content/browser/metrics/histogram_synchronizer.h"
-#include "content/browser/net/browser_online_state_observer.h"
+#include "content/browser/network/browser_online_state_observer.h"
 #include "content/browser/network_service_instance_impl.h"
 #include "content/browser/renderer_host/media/media_stream_manager.h"
 #include "content/browser/renderer_host/render_process_host_impl.h"
diff --git a/content/browser/cache_storage/cache_storage_context_impl.cc b/content/browser/cache_storage/cache_storage_context_impl.cc
index b8c2d3dd..06bc0d65 100644
--- a/content/browser/cache_storage/cache_storage_context_impl.cc
+++ b/content/browser/cache_storage/cache_storage_context_impl.cc
@@ -104,18 +104,25 @@
     const network::CrossOriginEmbedderPolicy& cross_origin_embedder_policy,
     mojo::PendingRemote<network::mojom::CrossOriginEmbedderPolicyReporter>
         coep_reporter,
-    const blink::StorageKey& storage_key,
+    const storage::BucketLocator& bucket_locator,
     storage::mojom::CacheStorageOwner owner,
     mojo::PendingReceiver<blink::mojom::CacheStorage> receiver) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
 
-  quota_manager_proxy_->UpdateOrCreateBucket(
-      storage::BucketInitParams::ForDefaultBucket(storage_key),
-      base::SequencedTaskRunnerHandle::Get(),
-      base::BindOnce(&CacheStorageContextImpl::AddReceiverWithBucketInfo,
-                     weak_factory_.GetWeakPtr(), cross_origin_embedder_policy,
-                     std::move(coep_reporter), storage_key, owner,
-                     std::move(receiver)));
+  if (bucket_locator.is_default) {
+    DCHECK_EQ(storage::BucketId(), bucket_locator.id);
+    quota_manager_proxy_->UpdateOrCreateBucket(
+        storage::BucketInitParams::ForDefaultBucket(bucket_locator.storage_key),
+        base::SequencedTaskRunnerHandle::Get(),
+        base::BindOnce(&CacheStorageContextImpl::AddReceiverWithBucketInfo,
+                       weak_factory_.GetWeakPtr(), cross_origin_embedder_policy,
+                       std::move(coep_reporter), bucket_locator.storage_key,
+                       owner, std::move(receiver)));
+  } else {
+    dispatcher_host_->AddReceiver(
+        cross_origin_embedder_policy, std::move(coep_reporter),
+        bucket_locator.storage_key, bucket_locator, owner, std::move(receiver));
+  }
 }
 
 void CacheStorageContextImpl::GetAllStorageKeysInfo(
diff --git a/content/browser/cache_storage/cache_storage_context_impl.h b/content/browser/cache_storage/cache_storage_context_impl.h
index 19e6fbf..1a31d8fc 100644
--- a/content/browser/cache_storage/cache_storage_context_impl.h
+++ b/content/browser/cache_storage/cache_storage_context_impl.h
@@ -34,6 +34,7 @@
 }
 
 namespace storage {
+struct BucketLocator;
 struct BucketInfo;
 }
 
@@ -71,7 +72,7 @@
       const network::CrossOriginEmbedderPolicy& cross_origin_embedder_policy,
       mojo::PendingRemote<network::mojom::CrossOriginEmbedderPolicyReporter>
           coep_reporter_remote,
-      const blink::StorageKey& storage_key,
+      const storage::BucketLocator& bucket,
       storage::mojom::CacheStorageOwner owner,
       mojo::PendingReceiver<blink::mojom::CacheStorage> receiver) override;
   void DeleteForStorageKey(const blink::StorageKey& storage_key) override;
diff --git a/content/browser/cache_storage/cache_storage_context_unittest.cc b/content/browser/cache_storage/cache_storage_context_unittest.cc
index d7eb790..86b5e51 100644
--- a/content/browser/cache_storage/cache_storage_context_unittest.cc
+++ b/content/browser/cache_storage/cache_storage_context_unittest.cc
@@ -9,6 +9,7 @@
 #include "base/test/task_environment.h"
 #include "base/threading/thread.h"
 #include "components/services/storage/public/cpp/buckets/bucket_info.h"
+#include "components/services/storage/public/cpp/buckets/bucket_locator.h"
 #include "components/services/storage/public/cpp/buckets/constants.h"
 #include "components/services/storage/public/cpp/quota_error_or.h"
 #include "components/services/storage/public/mojom/storage_usage_info.mojom.h"
@@ -60,7 +61,8 @@
       const blink::StorageKey& storage_key) {
     network::CrossOriginEmbedderPolicy cross_origin_embedder_policy;
     cache_storage_context_->AddReceiver(
-        cross_origin_embedder_policy, mojo::NullRemote(), storage_key,
+        cross_origin_embedder_policy, mojo::NullRemote(),
+        storage::BucketLocator::ForDefaultBucket(storage_key),
         storage::mojom::CacheStorageOwner::kCacheAPI,
         std::move(cache_storage_receiver));
   }
diff --git a/content/browser/cache_storage/cache_storage_control_wrapper.cc b/content/browser/cache_storage/cache_storage_control_wrapper.cc
index 1c9a8301..f385b42 100644
--- a/content/browser/cache_storage/cache_storage_control_wrapper.cc
+++ b/content/browser/cache_storage/cache_storage_control_wrapper.cc
@@ -64,16 +64,16 @@
     const network::CrossOriginEmbedderPolicy& cross_origin_embedder_policy,
     mojo::PendingRemote<network::mojom::CrossOriginEmbedderPolicyReporter>
         coep_reporter_remote,
-    const blink::StorageKey& storage_key,
+    const storage::BucketLocator& bucket,
     storage::mojom::CacheStorageOwner owner,
     mojo::PendingReceiver<blink::mojom::CacheStorage> receiver) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
 
   if (storage_policy_observer_)
-    storage_policy_observer_->StartTrackingOrigin(storage_key.origin());
+    storage_policy_observer_->StartTrackingOrigin(bucket.storage_key.origin());
   cache_storage_control_->AddReceiver(cross_origin_embedder_policy,
-                                      std::move(coep_reporter_remote),
-                                      storage_key, owner, std::move(receiver));
+                                      std::move(coep_reporter_remote), bucket,
+                                      owner, std::move(receiver));
 }
 
 void CacheStorageControlWrapper::DeleteForStorageKey(
diff --git a/content/browser/cache_storage/cache_storage_control_wrapper.h b/content/browser/cache_storage/cache_storage_control_wrapper.h
index 01902503..9024ee3 100644
--- a/content/browser/cache_storage/cache_storage_control_wrapper.h
+++ b/content/browser/cache_storage/cache_storage_control_wrapper.h
@@ -45,7 +45,7 @@
       const network::CrossOriginEmbedderPolicy& cross_origin_embedder_policy,
       mojo::PendingRemote<network::mojom::CrossOriginEmbedderPolicyReporter>
           coep_reporter_remote,
-      const blink::StorageKey& storage_key,
+      const storage::BucketLocator& bucket,
       storage::mojom::CacheStorageOwner owner,
       mojo::PendingReceiver<blink::mojom::CacheStorage> receiver) override;
   void DeleteForStorageKey(const blink::StorageKey& storage_key) override;
diff --git a/content/browser/cache_storage/cache_storage_manager.cc b/content/browser/cache_storage/cache_storage_manager.cc
index 58d6292..5396c3c 100644
--- a/content/browser/cache_storage/cache_storage_manager.cc
+++ b/content/browser/cache_storage/cache_storage_manager.cc
@@ -234,9 +234,7 @@
     // implemented. That means these index files will always use the
     // origin-based path format. Populate our BucketLocator with enough
     // data to construct the appropriate path from it below.
-    bucket_locator.is_default = true;
-    bucket_locator.storage_key = storage_key;
-    bucket_locator.type = blink::mojom::StorageType::kTemporary;
+    bucket_locator = storage::BucketLocator::ForDefaultBucket(storage_key);
     // TODO(https://crbug.com/1218097): Once enough time has passed it should be
     // safe to treat this case as an index validation error.
   }
diff --git a/content/browser/devtools/devtools_trust_token_browsertest.cc b/content/browser/devtools/devtools_trust_token_browsertest.cc
index 4c200b8..de690c3b 100644
--- a/content/browser/devtools/devtools_trust_token_browsertest.cc
+++ b/content/browser/devtools/devtools_trust_token_browsertest.cc
@@ -5,7 +5,7 @@
 #include "build/build_config.h"
 #include "content/browser/devtools/protocol/devtools_protocol_test_support.h"
 #include "content/browser/devtools/protocol/network.h"
-#include "content/browser/net/trust_token_browsertest.h"
+#include "content/browser/network/trust_token_browsertest.h"
 #include "content/browser/renderer_host/render_frame_host_impl.h"
 #include "content/browser/web_contents/web_contents_impl.h"
 #include "content/public/test/browser_test.h"
diff --git a/content/browser/devtools/devtools_url_loader_interceptor.cc b/content/browser/devtools/devtools_url_loader_interceptor.cc
index 120842aa..421d9858 100644
--- a/content/browser/devtools/devtools_url_loader_interceptor.cc
+++ b/content/browser/devtools/devtools_url_loader_interceptor.cc
@@ -422,6 +422,7 @@
   bool tainted_origin_ = false;
   bool fetch_cors_flag_ = false;
   std::string current_id_;
+  std::string redirected_request_id_;
 
   std::unique_ptr<BodyReader> body_reader_;
   std::unique_ptr<ResponseMetadata> response_metadata_;
@@ -1321,6 +1322,9 @@
 
   if (head && head->headers)
     result->response_headers = head->headers;
+  if (!redirected_request_id_.empty())
+    result->redirected_request_id = redirected_request_id_;
+
   return result;
 }
 
@@ -1441,6 +1445,7 @@
   url_chain_.push_back(create_loader_params_->request.url);
 
   if (interceptor_) {
+    redirected_request_id_ = current_id_;
     // Pretend that each redirect hop is a new request -- this is for
     // compatibilty with URLRequestJob-based interception implementation.
     interceptor_->RemoveJob(current_id_);
diff --git a/content/browser/devtools/devtools_url_loader_interceptor.h b/content/browser/devtools/devtools_url_loader_interceptor.h
index 92e8f50..2eac44b 100644
--- a/content/browser/devtools/devtools_url_loader_interceptor.h
+++ b/content/browser/devtools/devtools_url_loader_interceptor.h
@@ -54,6 +54,7 @@
   protocol::Maybe<bool> is_download;
   protocol::Maybe<protocol::String> redirect_url;
   protocol::Maybe<protocol::String> renderer_request_id;
+  protocol::Maybe<protocol::String> redirected_request_id;
 };
 
 class DevToolsURLLoaderInterceptor {
diff --git a/content/browser/devtools/protocol/fetch_handler.cc b/content/browser/devtools/protocol/fetch_handler.cc
index ae58300e..bb2ffe8 100644
--- a/content/browser/devtools/protocol/fetch_handler.cc
+++ b/content/browser/devtools/protocol/fetch_handler.cc
@@ -447,7 +447,8 @@
       info->frame_id.ToString(),
       NetworkHandler::ResourceTypeToString(info->resource_type),
       std::move(error_reason), std::move(status_code), std::move(status_text),
-      std::move(response_headers), std::move(info->renderer_request_id));
+      std::move(response_headers), std::move(info->renderer_request_id),
+      std::move(info->redirected_request_id));
 }
 
 }  // namespace protocol
diff --git a/content/browser/first_party_sets/database/first_party_sets_database.cc b/content/browser/first_party_sets/database/first_party_sets_database.cc
index 5cee9039..1642949 100644
--- a/content/browser/first_party_sets/database/first_party_sets_database.cc
+++ b/content/browser/first_party_sets/database/first_party_sets_database.cc
@@ -161,6 +161,9 @@
   if (!SetPublicSets(browser_context_id, public_sets_version, sets))
     return false;
 
+  if (!InsertManualSets(browser_context_id, sets.manual_sets()))
+    return false;
+
   if (!InsertPolicyModifications(browser_context_id, config))
     return false;
 
@@ -327,13 +330,7 @@
     const base::flat_map<net::SchemefulSite, net::FirstPartySetEntry>&
         manual_sets) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-
-  if (!LazyInit())
-    return false;
-
-  sql::Transaction transaction(db_.get());
-  if (!transaction.Begin())
-    return false;
+  DCHECK_EQ(db_status_, InitStatus::kSuccess);
 
   static constexpr char kDeleteSql[] =
       "DELETE FROM manual_sets WHERE browser_context_id=?";
@@ -359,7 +356,7 @@
     if (!insert_statement.Run())
       return false;
   }
-  return transaction.Commit();
+  return true;
 }
 
 net::GlobalFirstPartySets FirstPartySetsDatabase::GetGlobalSets(
@@ -411,8 +408,14 @@
   if (!statement.Succeeded())
     return {};
 
-  // TODO(crbug.com/1363707): query & apply manual set.
-  return net::GlobalFirstPartySets(entries, /*aliases=*/{});
+  // Aliases are merged with entries inside of the public sets table so it is
+  // sufficient to declare the global sets object with only the entries field.
+  net::GlobalFirstPartySets global_sets(entries, /*aliases=*/{});
+
+  // Query & apply manual set.
+  global_sets.ApplyManuallySpecifiedSet(FetchManualSets(browser_context_id));
+
+  return global_sets;
 }
 
 std::vector<net::SchemefulSite> FirstPartySetsDatabase::FetchSitesToClear(
diff --git a/content/browser/first_party_sets/database/first_party_sets_database.h b/content/browser/first_party_sets/database/first_party_sets_database.h
index d5976b21..41b80cc 100644
--- a/content/browser/first_party_sets/database/first_party_sets_database.h
+++ b/content/browser/first_party_sets/database/first_party_sets_database.h
@@ -101,14 +101,6 @@
       const std::string& browser_context_id,
       const net::FirstPartySetsContextConfig& config);
 
-  // Stores the Manual Sets into manual_sets table, and returns true on success.
-  // Inserting new manual sets will wipe out pre-existing manual sets for the
-  // given 'browser_context_id'
-  [[nodiscard]] bool InsertManualSets(
-      const std::string& browser_context_id,
-      const base::flat_map<net::SchemefulSite, net::FirstPartySetEntry>&
-          manual_sets);
-
   // TODO(crbug.com/1219656): Consider returning absl::nullopt for all the
   // fetching methods when having query errors
 
@@ -131,10 +123,6 @@
   [[nodiscard]] net::FirstPartySetsContextConfig FetchPolicyModifications(
       const std::string& browser_context_id);
 
-  // Gets the previously-stored manual_sets for the `browser_context_id`.
-  [[nodiscard]] base::flat_map<net::SchemefulSite, net::FirstPartySetEntry>
-  FetchManualSets(const std::string& browser_context_id);
-
  private:
   FRIEND_TEST_ALL_PREFIXES(FirstPartySetsDatabaseTest,
                            SetPublicSets_InvalidVersion);
@@ -145,6 +133,18 @@
                                    const base::Version& sets_version,
                                    const net::GlobalFirstPartySets& sets);
 
+  // Stores the Manual Sets into manual_sets table, and returns true on success.
+  // Inserting new manual sets will wipe out pre-existing manual sets for the
+  // given 'browser_context_id'
+  [[nodiscard]] bool InsertManualSets(
+      const std::string& browser_context_id,
+      const base::flat_map<net::SchemefulSite, net::FirstPartySetEntry>&
+          manual_sets);
+
+  // Gets the previously-stored manual_sets for the `browser_context_id`.
+  [[nodiscard]] base::flat_map<net::SchemefulSite, net::FirstPartySetEntry>
+  FetchManualSets(const std::string& browser_context_id);
+
   // Called at the start of each public operation, and initializes the database
   // if it isn't already initialized.
   [[nodiscard]] bool LazyInit() VALID_CONTEXT_REQUIRED(sequence_checker_);
diff --git a/content/browser/first_party_sets/database/first_party_sets_database_unittest.cc b/content/browser/first_party_sets/database/first_party_sets_database_unittest.cc
index 8c51bf52..e2600545 100644
--- a/content/browser/first_party_sets/database/first_party_sets_database_unittest.cc
+++ b/content/browser/first_party_sets/database/first_party_sets_database_unittest.cc
@@ -274,6 +274,8 @@
   const std::string browser_context_id = "b";
   const std::string site = "https://aaa.test";
   const std::string primary = "https://bbb.test";
+  const std::string manual_site = "https://aaa.test";
+  const std::string manual_primary = "https://bbb.test";
 
   const std::string primary_site = "https://example.test";
   const std::string site_member1 = "https://member1.test";
@@ -289,6 +291,14 @@
                                             net::SiteType::kPrimary,
                                             absl::nullopt)}},
       /*aliases=*/{});
+  base::flat_map<net::SchemefulSite, net::FirstPartySetEntry> manual_sets = {
+      {net::SchemefulSite(GURL(manual_site)),
+       net::FirstPartySetEntry(net::SchemefulSite(GURL(manual_primary)),
+                               net::SiteType::kAssociated, absl::nullopt)},
+      {net::SchemefulSite(GURL(manual_primary)),
+       net::FirstPartySetEntry(net::SchemefulSite(GURL(manual_primary)),
+                               net::SiteType::kPrimary, absl::nullopt)}};
+  global_sets.ApplyManuallySpecifiedSet(manual_sets);
 
   net::FirstPartySetsContextConfig config(
       {{net::SchemefulSite(GURL(site_member1)),
@@ -350,6 +360,22 @@
   EXPECT_EQ("", s_config.ColumnString(2));
 
   EXPECT_FALSE(s_config.Step());
+
+  // ============ Verify persisting manual sets
+  const char kSelectManualSql[] =
+      "SELECT site,primary_site,site_type FROM manual_sets";
+  sql::Statement s_manual(db.GetUniqueStatement(kSelectManualSql));
+  EXPECT_TRUE(s_manual.Step());
+  EXPECT_EQ(manual_site, s_manual.ColumnString(0));
+  EXPECT_EQ(manual_primary, s_manual.ColumnString(1));
+  EXPECT_EQ(1, s_manual.ColumnInt(2));
+
+  EXPECT_TRUE(s_manual.Step());
+  EXPECT_EQ(manual_primary, s_manual.ColumnString(0));
+  EXPECT_EQ(manual_primary, s_manual.ColumnString(1));
+  EXPECT_EQ(0, s_manual.ColumnInt(2));
+
+  EXPECT_FALSE(s_manual.Step());
 }
 
 TEST_F(FirstPartySetsDatabaseTest, PersistSets_PreExistingDB) {
@@ -396,11 +422,31 @@
     EXPECT_EQ("", s_config.ColumnString(2));
 
     EXPECT_FALSE(s_config.Step());
+
+    // Verify data in the manual_sets table
+    static constexpr char kSelectManualSetsSql[] =
+        "SELECT browser_context_id,site,primary_site,site_type FROM "
+        "manual_sets";
+    sql::Statement s_manual_sets(db.GetUniqueStatement(kSelectManualSetsSql));
+    ASSERT_TRUE(s_manual_sets.Step());
+    ASSERT_EQ("b0", s_manual_sets.ColumnString(0));
+    ASSERT_EQ("https://ccc.test", s_manual_sets.ColumnString(1));
+    ASSERT_EQ("https://ddd.test", s_manual_sets.ColumnString(2));
+    ASSERT_EQ(1, s_manual_sets.ColumnInt(3));
+
+    ASSERT_TRUE(s_manual_sets.Step());
+    ASSERT_EQ("b0", s_manual_sets.ColumnString(0));
+    ASSERT_EQ("https://ddd.test", s_manual_sets.ColumnString(1));
+    ASSERT_EQ("https://ddd.test", s_manual_sets.ColumnString(2));
+    ASSERT_EQ(0, s_manual_sets.ColumnInt(3));
   }
   const base::Version version("0.0.2");
   const std::string site = "https://site1.test";
   const std::string primary = "https://site2.test";
 
+  const std::string manual_site = "https://manualsite1.test";
+  const std::string manual_primary = "https://manualsite2.test";
+
   const std::string primary_site = "https://example2.test";
   const std::string site_member1 = "https://member3.test";
   const std::string site_member2 = "https://member4.test";
@@ -416,6 +462,15 @@
                                             absl::nullopt)}},
       /*aliases=*/{});
 
+  base::flat_map<net::SchemefulSite, net::FirstPartySetEntry> manual_sets = {
+      {net::SchemefulSite(GURL(manual_site)),
+       net::FirstPartySetEntry(net::SchemefulSite(GURL(manual_primary)),
+                               net::SiteType::kAssociated, absl::nullopt)},
+      {net::SchemefulSite(GURL(manual_primary)),
+       net::FirstPartySetEntry(net::SchemefulSite(GURL(manual_primary)),
+                               net::SiteType::kPrimary, absl::nullopt)}};
+  global_sets.ApplyManuallySpecifiedSet(manual_sets);
+
   net::FirstPartySetsContextConfig config(
       {{net::SchemefulSite(GURL(site_member1)),
         net::FirstPartySetEntry(net::SchemefulSite(GURL(primary_site)),
@@ -479,6 +534,24 @@
   EXPECT_EQ(site_member2, s_config.ColumnString(1));
   EXPECT_EQ("", s_config.ColumnString(2));
   EXPECT_FALSE(s_config.Step());
+
+  // ============ Verify new manual sets overwrote pre-existing data
+  static constexpr char kSelectManualSetsSql[] =
+      "SELECT site,primary_site,site_type FROM manual_sets "
+      "WHERE browser_context_id=?";
+  sql::Statement s_manual_sets(db.GetUniqueStatement(kSelectManualSetsSql));
+  s_manual_sets.BindString(0, browser_context_id);
+  EXPECT_TRUE(s_manual_sets.Step());
+  EXPECT_EQ(manual_site, s_manual_sets.ColumnString(0));
+  EXPECT_EQ(manual_primary, s_manual_sets.ColumnString(1));
+  EXPECT_EQ(1, s_manual_sets.ColumnInt(2));
+
+  EXPECT_TRUE(s_manual_sets.Step());
+  EXPECT_EQ(manual_primary, s_manual_sets.ColumnString(0));
+  EXPECT_EQ(manual_primary, s_manual_sets.ColumnString(1));
+  EXPECT_EQ(0, s_manual_sets.ColumnInt(2));
+
+  EXPECT_FALSE(s_manual_sets.Step());
 }
 
 TEST_F(FirstPartySetsDatabaseTest, PersistSets_PreExistingVersion) {
@@ -730,118 +803,6 @@
   EXPECT_FALSE(s.Step());
 }
 
-TEST_F(FirstPartySetsDatabaseTest, InsertManualSets_NoPreExistingDB) {
-  const std::string browser_context_id = "b";
-  const std::string primary_site = "https://bbb.test";
-  const std::string site_member = "https://aaa.test";
-
-  base::flat_map<net::SchemefulSite, net::FirstPartySetEntry> input = {
-      {net::SchemefulSite(GURL(site_member)),
-       net::FirstPartySetEntry(net::SchemefulSite(GURL(primary_site)),
-                               net::SiteType::kAssociated, absl::nullopt)},
-      {net::SchemefulSite(GURL(primary_site)),
-       net::FirstPartySetEntry(net::SchemefulSite(GURL(primary_site)),
-                               net::SiteType::kPrimary, absl::nullopt)}};
-
-  OpenDatabase();
-  // Trigger the lazy-initialization.
-  EXPECT_TRUE(db()->InsertManualSets(browser_context_id, input));
-  CloseDatabase();
-
-  sql::Database db;
-  EXPECT_TRUE(db.Open(db_path()));
-  EXPECT_EQ(2u, CountManualSetsEntries(&db));
-
-  const char kSelectSql[] =
-      "SELECT browser_context_id,site,primary_site,site_type FROM manual_sets";
-  sql::Statement s(db.GetUniqueStatement(kSelectSql));
-  EXPECT_TRUE(s.Step());
-  EXPECT_EQ(browser_context_id, s.ColumnString(0));
-  EXPECT_EQ(site_member, s.ColumnString(1));
-  EXPECT_EQ(primary_site, s.ColumnString(2));
-  EXPECT_EQ(1, s.ColumnInt(3));
-
-  EXPECT_TRUE(s.Step());
-  EXPECT_EQ(browser_context_id, s.ColumnString(0));
-  EXPECT_EQ(primary_site, s.ColumnString(1));
-  EXPECT_EQ(primary_site, s.ColumnString(2));
-  EXPECT_EQ(0, s.ColumnInt(3));
-
-  EXPECT_FALSE(s.Step());
-}
-
-TEST_F(FirstPartySetsDatabaseTest, InsertManualSets_PreExistingDB) {
-  ASSERT_TRUE(
-      sql::test::CreateDatabaseFromSQL(db_path(), GetSqlFilePath("v1.sql")));
-
-  const std::string browser_context_id = "b2";
-  // Verify data in the pre-existing DB, and set `pre_run_count`.
-  {
-    sql::Database db;
-    ASSERT_TRUE(db.Open(db_path()));
-    ASSERT_EQ(kTableCount, sql::test::CountSQLTables(&db));
-    ASSERT_EQ(2u, CountManualSetsEntries(&db));
-
-    const char kSelectSql[] =
-        "SELECT browser_context_id,site,primary_site,site_type FROM "
-        "manual_sets WHERE browser_context_id=?";
-    sql::Statement s(db.GetUniqueStatement(kSelectSql));
-    s.BindString(0, browser_context_id);
-    ASSERT_TRUE(s.Step());
-    ASSERT_EQ("b2", s.ColumnString(0));
-    ASSERT_EQ("https://aaa.test", s.ColumnString(1));
-    ASSERT_EQ("https://bbb.test", s.ColumnString(2));
-    ASSERT_EQ(1, s.ColumnInt(3));
-
-    ASSERT_TRUE(s.Step());
-    ASSERT_EQ("b2", s.ColumnString(0));
-    ASSERT_EQ("https://bbb.test", s.ColumnString(1));
-    ASSERT_EQ("https://bbb.test", s.ColumnString(2));
-    ASSERT_EQ(0, s.ColumnInt(3));
-    ASSERT_FALSE(s.Step());
-  }
-
-  const std::string primary_site = "https://ddd.test";
-  const std::string site_member = "https://ccc.test";
-
-  base::flat_map<net::SchemefulSite, net::FirstPartySetEntry> input = {
-      {net::SchemefulSite(GURL(site_member)),
-       net::FirstPartySetEntry(net::SchemefulSite(GURL(primary_site)),
-                               net::SiteType::kAssociated, absl::nullopt)},
-      {net::SchemefulSite(GURL(primary_site)),
-       net::FirstPartySetEntry(net::SchemefulSite(GURL(primary_site)),
-                               net::SiteType::kPrimary, absl::nullopt)}};
-
-  OpenDatabase();
-  // Trigger the lazy-initialization.
-  EXPECT_TRUE(db()->InsertManualSets(browser_context_id, input));
-  CloseDatabase();
-
-  // Verify the inserted data overwrote the pre-existing data.
-  sql::Database db;
-  EXPECT_TRUE(db.Open(db_path()));
-  EXPECT_EQ(kTableCount, sql::test::CountSQLTables(&db));
-  EXPECT_EQ(2u, CountPolicyModificationsEntries(&db));
-
-  const char kSelectSql[] =
-      "SELECT browser_context_id,site,primary_site,site_type FROM manual_sets "
-      "WHERE browser_context_id=?";
-  sql::Statement s(db.GetUniqueStatement(kSelectSql));
-  s.BindString(0, browser_context_id);
-  EXPECT_TRUE(s.Step());
-  EXPECT_EQ(browser_context_id, s.ColumnString(0));
-  EXPECT_EQ(site_member, s.ColumnString(1));
-  EXPECT_EQ(primary_site, s.ColumnString(2));
-  EXPECT_EQ(1, s.ColumnInt(3));
-
-  EXPECT_TRUE(s.Step());
-  EXPECT_EQ(browser_context_id, s.ColumnString(0));
-  EXPECT_EQ(primary_site, s.ColumnString(1));
-  EXPECT_EQ(primary_site, s.ColumnString(2));
-  EXPECT_EQ(0, s.ColumnInt(3));
-  EXPECT_FALSE(s.Step());
-}
-
 TEST_F(FirstPartySetsDatabaseTest, FetchSitesToClear_NoPreExistingDB) {
   OpenDatabase();
   EXPECT_EQ(std::vector<net::SchemefulSite>(), db()->FetchSitesToClear("b"));
@@ -1017,43 +978,20 @@
   }
   const net::SchemefulSite aaa(GURL("https://aaa.test"));
   const net::SchemefulSite bbb(GURL("https://bbb.test"));
+  const net::SchemefulSite ccc(GURL("https://ccc.test"));
+  const net::SchemefulSite ddd(GURL("https://ddd.test"));
   OpenDatabase();
   EXPECT_THAT(
-      db()->GetGlobalSets("b0").FindEntries({aaa, bbb},
+      db()->GetGlobalSets("b0").FindEntries({aaa, bbb, ccc, ddd},
                                             net::FirstPartySetsContextConfig()),
       UnorderedElementsAre(
           Pair(aaa, net::FirstPartySetEntry(bbb, net::SiteType::kAssociated,
                                             absl::nullopt)),
           Pair(bbb, net::FirstPartySetEntry(bbb, net::SiteType::kPrimary,
+                                            absl::nullopt)),
+          Pair(ccc, net::FirstPartySetEntry(ddd, net::SiteType::kAssociated,
+                                            absl::nullopt)),
+          Pair(ddd, net::FirstPartySetEntry(ddd, net::SiteType::kPrimary,
                                             absl::nullopt))));
 }
-
-TEST_F(FirstPartySetsDatabaseTest, FetchManualSets_NoPreExistingDB) {
-  OpenDatabase();
-  EXPECT_THAT(db()->FetchManualSets("b"), IsEmpty());
-}
-
-TEST_F(FirstPartySetsDatabaseTest, FetchManualSets) {
-  ASSERT_TRUE(
-      sql::test::CreateDatabaseFromSQL(db_path(), GetSqlFilePath("v1.sql")));
-
-  // Verify data in the pre-existing DB.
-  {
-    sql::Database db;
-    EXPECT_TRUE(db.Open(db_path()));
-    EXPECT_EQ(kTableCount, sql::test::CountSQLTables(&db));
-    EXPECT_EQ(2u, CountManualSetsEntries(&db));
-  }
-  base::flat_map<net::SchemefulSite, net::FirstPartySetEntry> res = {
-      {net::SchemefulSite(GURL("https://aaa.test")),
-       net::FirstPartySetEntry({net::SchemefulSite(GURL("https://bbb.test"))},
-                               net::SiteType::kAssociated, absl::nullopt)},
-      {net::SchemefulSite(GURL("https://bbb.test")),
-       net::FirstPartySetEntry({net::SchemefulSite(GURL("https://bbb.test"))},
-                               net::SiteType::kPrimary, absl::nullopt)},
-  };
-  OpenDatabase();
-  EXPECT_THAT(db()->FetchManualSets("b2"), res);
-}
-
 }  // namespace content
diff --git a/content/browser/gpu/gpu_process_host.cc b/content/browser/gpu/gpu_process_host.cc
index e5099bc9..9dbf10b0 100644
--- a/content/browser/gpu/gpu_process_host.cc
+++ b/content/browser/gpu/gpu_process_host.cc
@@ -42,6 +42,9 @@
 #include "content/browser/gpu/gpu_disk_cache_factory.h"
 #include "content/browser/gpu/gpu_main_thread_factory.h"
 #include "content/browser/gpu/gpu_memory_buffer_manager_singleton.h"
+#include "content/browser/storage_partition_impl.h"
+#include "content/browser/worker_host/dedicated_worker_host.h"
+#include "content/browser/worker_host/dedicated_worker_service_impl.h"
 #include "content/common/child_process.mojom.h"
 #include "content/common/child_process_host_impl.h"
 #include "content/common/in_process_child_thread_params.h"
@@ -71,9 +74,11 @@
 #include "mojo/public/cpp/bindings/generic_pending_receiver.h"
 #include "mojo/public/cpp/bindings/pending_receiver.h"
 #include "mojo/public/cpp/bindings/pending_remote.h"
+#include "net/base/network_isolation_key.h"
 #include "sandbox/policy/mojom/sandbox.mojom.h"
 #include "sandbox/policy/sandbox_type.h"
 #include "sandbox/policy/switches.h"
+#include "third_party/blink/public/common/tokens/tokens.h"
 #include "ui/base/ui_base_features.h"
 #include "ui/base/ui_base_switches.h"
 #include "ui/display/display_switches.h"
@@ -1067,6 +1072,41 @@
 }
 #endif
 
+std::string GpuProcessHost::GetIsolationKey(
+    int32_t process_id,
+    const blink::WebGPUExecutionContextToken& token) {
+  if (token.Is<blink::DocumentToken>()) {
+    // TODO(dawn:549) Add DocumentToken support when it is ready.
+    return "";
+  } else if (token.Is<blink::DedicatedWorkerToken>()) {
+    // Return an empty isolation key if the process host or the worker host is
+    // gone. This may happen if the worker is destroyed (or being destroyed) in
+    // between when we are trying to get the isolation key.
+    RenderProcessHost* render_process_host =
+        RenderProcessHost::FromID(process_id);
+    if (!render_process_host ||
+        !render_process_host->IsInitializedAndNotDead()) {
+      return "";
+    }
+    DedicatedWorkerHost* dedicated_worker_host =
+        static_cast<StoragePartitionImpl*>(
+            render_process_host->GetStoragePartition())
+            ->GetDedicatedWorkerService()
+            ->GetDedicatedWorkerHostFromToken(
+                token.GetAs<blink::DedicatedWorkerToken>());
+    if (!dedicated_worker_host) {
+      return "";
+    }
+
+    auto isolation_key =
+        dedicated_worker_host->GetNetworkIsolationKey().ToCacheKeyString();
+    return isolation_key ? *isolation_key : "";
+  }
+
+  NOTREACHED();
+  return "";
+}
+
 void GpuProcessHost::BlockDomainsFrom3DAPIs(const std::set<GURL>& urls,
                                             gpu::DomainGuilt guilt) {
   GpuDataManagerImpl::GetInstance()->BlockDomainsFrom3DAPIs(urls, guilt);
diff --git a/content/browser/gpu/gpu_process_host.h b/content/browser/gpu/gpu_process_host.h
index a21b058..e7af67f 100644
--- a/content/browser/gpu/gpu_process_host.h
+++ b/content/browser/gpu/gpu_process_host.h
@@ -171,6 +171,9 @@
   void DidUpdateOverlayInfo(const gpu::OverlayInfo& overlay_info) override;
   void DidUpdateDXGIInfo(gfx::mojom::DXGIInfoPtr dxgi_info) override;
 #endif
+  std::string GetIsolationKey(
+      int32_t process_id,
+      const blink::WebGPUExecutionContextToken& token) override;
   void BlockDomainsFrom3DAPIs(const std::set<GURL>& urls,
                               gpu::DomainGuilt guilt) override;
   void DisableGpuCompositing() override;
diff --git a/content/browser/media/media_internals.cc b/content/browser/media/media_internals.cc
index d3a008d4..3a431ae 100644
--- a/content/browser/media/media_internals.cc
+++ b/content/browser/media/media_internals.cc
@@ -110,6 +110,8 @@
       return "dtsxp2";
     case media::AudioParameters::AUDIO_BITSTREAM_IEC61937:
       return "iec61937";
+    case media::AudioParameters::AUDIO_BITSTREAM_DTS_HD_MA:
+      return "dtshd_ma";
     case media::AudioParameters::AUDIO_FAKE:
       return "fake";
   }
diff --git a/content/browser/net_info_browsertest.cc b/content/browser/net_info_browsertest.cc
index f7007ceb..52d7916 100644
--- a/content/browser/net_info_browsertest.cc
+++ b/content/browser/net_info_browsertest.cc
@@ -11,7 +11,7 @@
 #include "base/strings/string_number_conversions.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "build/build_config.h"
-#include "content/browser/net/network_quality_observer_impl.h"
+#include "content/browser/network/network_quality_observer_impl.h"
 #include "content/public/browser/render_process_host.h"
 #include "content/public/common/content_switches.h"
 #include "content/public/test/browser_test.h"
diff --git a/content/browser/net/DEPS b/content/browser/network/DEPS
similarity index 100%
rename from content/browser/net/DEPS
rename to content/browser/network/DEPS
diff --git a/content/browser/net/DIR_METADATA b/content/browser/network/DIR_METADATA
similarity index 100%
rename from content/browser/net/DIR_METADATA
rename to content/browser/network/DIR_METADATA
diff --git a/content/browser/net/OWNERS b/content/browser/network/OWNERS
similarity index 84%
rename from content/browser/net/OWNERS
rename to content/browser/network/OWNERS
index 49fc7fd1e..61547fc50 100644
--- a/content/browser/net/OWNERS
+++ b/content/browser/network/OWNERS
@@ -1,4 +1,5 @@
 file://net/OWNERS
+file://services/network/OWNERS
 
 # Trust Tokens-related files.
 per-file *trust_token*=file://services/network/trust_tokens/OWNERS
diff --git a/content/browser/net/accept_header_browsertest.cc b/content/browser/network/accept_header_browsertest.cc
similarity index 100%
rename from content/browser/net/accept_header_browsertest.cc
rename to content/browser/network/accept_header_browsertest.cc
diff --git a/content/browser/net/browser_online_state_observer.cc b/content/browser/network/browser_online_state_observer.cc
similarity index 86%
rename from content/browser/net/browser_online_state_observer.cc
rename to content/browser/network/browser_online_state_observer.cc
index 3fb5a35..22706e9 100644
--- a/content/browser/net/browser_online_state_observer.cc
+++ b/content/browser/network/browser_online_state_observer.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 "content/browser/net/browser_online_state_observer.h"
+#include "content/browser/network/browser_online_state_observer.h"
 
 #include "content/common/renderer.mojom.h"
 #include "content/public/browser/render_process_host.h"
@@ -37,8 +37,8 @@
   net::NetworkChangeNotifier::ConnectionType connection_type;
   net::NetworkChangeNotifier::GetMaxBandwidthAndConnectionType(
       &max_bandwidth_mbps, &connection_type);
-  rph->GetRendererInterface()->OnNetworkConnectionChanged(
-      connection_type, max_bandwidth_mbps);
+  rph->GetRendererInterface()->OnNetworkConnectionChanged(connection_type,
+                                                          max_bandwidth_mbps);
 }
 
 }  // namespace content
diff --git a/content/browser/net/browser_online_state_observer.h b/content/browser/network/browser_online_state_observer.h
similarity index 85%
rename from content/browser/net/browser_online_state_observer.h
rename to content/browser/network/browser_online_state_observer.h
index 8fdbebaa..67c5929 100644
--- a/content/browser/net/browser_online_state_observer.h
+++ b/content/browser/network/browser_online_state_observer.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 CONTENT_BROWSER_NET_BROWSER_ONLINE_STATE_OBSERVER_H_
-#define CONTENT_BROWSER_NET_BROWSER_ONLINE_STATE_OBSERVER_H_
+#ifndef CONTENT_BROWSER_NETWORK_BROWSER_ONLINE_STATE_OBSERVER_H_
+#define CONTENT_BROWSER_NETWORK_BROWSER_ONLINE_STATE_OBSERVER_H_
 
 #include "content/public/browser/render_process_host_creation_observer.h"
 #include "net/base/network_change_notifier.h"
@@ -35,4 +35,4 @@
 
 }  // namespace content
 
-#endif  // CONTENT_BROWSER_NET_BROWSER_ONLINE_STATE_OBSERVER_H_
+#endif  // CONTENT_BROWSER_NETWORK_BROWSER_ONLINE_STATE_OBSERVER_H_
diff --git a/content/browser/net/cookie_store_factory.cc b/content/browser/network/cookie_store_factory.cc
similarity index 100%
rename from content/browser/net/cookie_store_factory.cc
rename to content/browser/network/cookie_store_factory.cc
diff --git a/content/browser/net/cross_origin_embedder_policy_reporter.cc b/content/browser/network/cross_origin_embedder_policy_reporter.cc
similarity index 98%
rename from content/browser/net/cross_origin_embedder_policy_reporter.cc
rename to content/browser/network/cross_origin_embedder_policy_reporter.cc
index 0940aff..e06426a 100644
--- a/content/browser/net/cross_origin_embedder_policy_reporter.cc
+++ b/content/browser/network/cross_origin_embedder_policy_reporter.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 "content/browser/net/cross_origin_embedder_policy_reporter.h"
+#include "content/browser/network/cross_origin_embedder_policy_reporter.h"
 
 #include "base/strings/string_piece.h"
 #include "base/values.h"
diff --git a/content/browser/net/cross_origin_embedder_policy_reporter.h b/content/browser/network/cross_origin_embedder_policy_reporter.h
similarity index 94%
rename from content/browser/net/cross_origin_embedder_policy_reporter.h
rename to content/browser/network/cross_origin_embedder_policy_reporter.h
index 47990f29..4e77e28 100644
--- a/content/browser/net/cross_origin_embedder_policy_reporter.h
+++ b/content/browser/network/cross_origin_embedder_policy_reporter.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 CONTENT_BROWSER_NET_CROSS_ORIGIN_EMBEDDER_POLICY_REPORTER_H_
-#define CONTENT_BROWSER_NET_CROSS_ORIGIN_EMBEDDER_POLICY_REPORTER_H_
+#ifndef CONTENT_BROWSER_NETWORK_CROSS_ORIGIN_EMBEDDER_POLICY_REPORTER_H_
+#define CONTENT_BROWSER_NETWORK_CROSS_ORIGIN_EMBEDDER_POLICY_REPORTER_H_
 
 #include <initializer_list>
 #include <string>
@@ -102,4 +102,4 @@
 
 }  // namespace content
 
-#endif  // CONTENT_BROWSER_NET_CROSS_ORIGIN_EMBEDDER_POLICY_REPORTER_H_
+#endif  // CONTENT_BROWSER_NETWORK_CROSS_ORIGIN_EMBEDDER_POLICY_REPORTER_H_
diff --git a/content/browser/net/cross_origin_embedder_policy_reporter_unittest.cc b/content/browser/network/cross_origin_embedder_policy_reporter_unittest.cc
similarity index 99%
rename from content/browser/net/cross_origin_embedder_policy_reporter_unittest.cc
rename to content/browser/network/cross_origin_embedder_policy_reporter_unittest.cc
index c51d54fc..42a63341 100644
--- a/content/browser/net/cross_origin_embedder_policy_reporter_unittest.cc
+++ b/content/browser/network/cross_origin_embedder_policy_reporter_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 "content/browser/net/cross_origin_embedder_policy_reporter.h"
+#include "content/browser/network/cross_origin_embedder_policy_reporter.h"
 
 #include <vector>
 
diff --git a/content/browser/net/cross_origin_opener_policy_reporter.cc b/content/browser/network/cross_origin_opener_policy_reporter.cc
similarity index 99%
rename from content/browser/net/cross_origin_opener_policy_reporter.cc
rename to content/browser/network/cross_origin_opener_policy_reporter.cc
index 885b421..943abbbf 100644
--- a/content/browser/net/cross_origin_opener_policy_reporter.cc
+++ b/content/browser/network/cross_origin_opener_policy_reporter.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 "content/browser/net/cross_origin_opener_policy_reporter.h"
+#include "content/browser/network/cross_origin_opener_policy_reporter.h"
 
 #include "base/memory/raw_ptr.h"
 #include "base/values.h"
diff --git a/content/browser/net/cross_origin_opener_policy_reporter.h b/content/browser/network/cross_origin_opener_policy_reporter.h
similarity index 94%
rename from content/browser/net/cross_origin_opener_policy_reporter.h
rename to content/browser/network/cross_origin_opener_policy_reporter.h
index 5490cdd..98dc607 100644
--- a/content/browser/net/cross_origin_opener_policy_reporter.h
+++ b/content/browser/network/cross_origin_opener_policy_reporter.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 CONTENT_BROWSER_NET_CROSS_ORIGIN_OPENER_POLICY_REPORTER_H_
-#define CONTENT_BROWSER_NET_CROSS_ORIGIN_OPENER_POLICY_REPORTER_H_
+#ifndef CONTENT_BROWSER_NETWORK_CROSS_ORIGIN_OPENER_POLICY_REPORTER_H_
+#define CONTENT_BROWSER_NETWORK_CROSS_ORIGIN_OPENER_POLICY_REPORTER_H_
 
 #include <string>
 
@@ -97,4 +97,4 @@
 
 }  // namespace content
 
-#endif  // CONTENT_BROWSER_NET_CROSS_ORIGIN_OPENER_POLICY_REPORTER_H_
+#endif  // CONTENT_BROWSER_NETWORK_CROSS_ORIGIN_OPENER_POLICY_REPORTER_H_
diff --git a/content/browser/net/cross_origin_opener_policy_reporter_unittest.cc b/content/browser/network/cross_origin_opener_policy_reporter_unittest.cc
similarity index 98%
rename from content/browser/net/cross_origin_opener_policy_reporter_unittest.cc
rename to content/browser/network/cross_origin_opener_policy_reporter_unittest.cc
index 5cb0346..ed1252b 100644
--- a/content/browser/net/cross_origin_opener_policy_reporter_unittest.cc
+++ b/content/browser/network/cross_origin_opener_policy_reporter_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 "content/browser/net/cross_origin_opener_policy_reporter.h"
+#include "content/browser/network/cross_origin_opener_policy_reporter.h"
 
 #include <memory>
 #include <vector>
diff --git a/content/browser/net/cross_origin_opener_policy_reporting_browsertest.cc b/content/browser/network/cross_origin_opener_policy_reporting_browsertest.cc
similarity index 100%
rename from content/browser/net/cross_origin_opener_policy_reporting_browsertest.cc
rename to content/browser/network/cross_origin_opener_policy_reporting_browsertest.cc
diff --git a/content/browser/net/dns_https_protocol_upgrade_browsertest.cc b/content/browser/network/dns_https_protocol_upgrade_browsertest.cc
similarity index 100%
rename from content/browser/net/dns_https_protocol_upgrade_browsertest.cc
rename to content/browser/network/dns_https_protocol_upgrade_browsertest.cc
diff --git a/content/browser/net/http_cache_backend_file_operations_factory.cc b/content/browser/network/http_cache_backend_file_operations_factory.cc
similarity index 98%
rename from content/browser/net/http_cache_backend_file_operations_factory.cc
rename to content/browser/network/http_cache_backend_file_operations_factory.cc
index 6996b05b..33abd7e 100644
--- a/content/browser/net/http_cache_backend_file_operations_factory.cc
+++ b/content/browser/network/http_cache_backend_file_operations_factory.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 "content/browser/net/http_cache_backend_file_operations_factory.h"
+#include "content/browser/network/http_cache_backend_file_operations_factory.h"
 
 #include "base/files/file.h"
 #include "base/files/file_util.h"
diff --git a/content/browser/net/http_cache_backend_file_operations_factory.h b/content/browser/network/http_cache_backend_file_operations_factory.h
similarity index 81%
rename from content/browser/net/http_cache_backend_file_operations_factory.h
rename to content/browser/network/http_cache_backend_file_operations_factory.h
index f99ddb60..a0a8b05 100644
--- a/content/browser/net/http_cache_backend_file_operations_factory.h
+++ b/content/browser/network/http_cache_backend_file_operations_factory.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 CONTENT_BROWSER_NET_HTTP_CACHE_BACKEND_FILE_OPERATIONS_FACTORY_H_
-#define CONTENT_BROWSER_NET_HTTP_CACHE_BACKEND_FILE_OPERATIONS_FACTORY_H_
+#ifndef CONTENT_BROWSER_NETWORK_HTTP_CACHE_BACKEND_FILE_OPERATIONS_FACTORY_H_
+#define CONTENT_BROWSER_NETWORK_HTTP_CACHE_BACKEND_FILE_OPERATIONS_FACTORY_H_
 
 #include "base/files/file_path.h"
 #include "content/common/content_export.h"
@@ -31,4 +31,4 @@
 
 }  // namespace content
 
-#endif  // CONTENT_BROWSER_NET_HTTP_CACHE_BACKEND_FILE_OPERATIONS_FACTORY_H_
+#endif  // CONTENT_BROWSER_NETWORK_HTTP_CACHE_BACKEND_FILE_OPERATIONS_FACTORY_H_
diff --git a/content/browser/net/http_cookie_browsertest.cc b/content/browser/network/http_cookie_browsertest.cc
similarity index 99%
rename from content/browser/net/http_cookie_browsertest.cc
rename to content/browser/network/http_cookie_browsertest.cc
index a08f490..fff427a 100644
--- a/content/browser/net/http_cookie_browsertest.cc
+++ b/content/browser/network/http_cookie_browsertest.cc
@@ -36,7 +36,6 @@
 using ::testing::Key;
 using ::testing::UnorderedElementsAre;
 
-
 // This file contains tests for cookie access via HTTP requests.
 // See also (tests for cookie access via JavaScript):
 // //content/browser/renderer_host/cookie_browsertest.cc
diff --git a/content/browser/net/network_errors_listing_ui.cc b/content/browser/network/network_errors_listing_ui.cc
similarity index 94%
rename from content/browser/net/network_errors_listing_ui.cc
rename to content/browser/network/network_errors_listing_ui.cc
index 94e32ff..949f8f3 100644
--- a/content/browser/net/network_errors_listing_ui.cc
+++ b/content/browser/network/network_errors_listing_ui.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 "content/browser/net/network_errors_listing_ui.h"
+#include "content/browser/network/network_errors_listing_ui.h"
 
 #include <memory>
 #include <utility>
@@ -19,9 +19,9 @@
 #include "net/log/net_log_util.h"
 
 static const char kNetworkErrorDataFile[] = "network-error-data.json";
-static const char kErrorCodeField[]  = "errorCode";
+static const char kErrorCodeField[] = "errorCode";
 static const char kErrorCodesDataName[] = "errorCodes";
-static const char kErrorIdField[]  = "errorId";
+static const char kErrorIdField[] = "errorId";
 static const char kNetworkErrorKey[] = "netError";
 
 namespace content {
@@ -67,7 +67,7 @@
   std::move(callback).Run(base::RefCountedString::TakeString(&json_string));
 }
 
-} // namespace
+}  // namespace
 
 NetworkErrorsListingUI::NetworkErrorsListingUI(WebUI* web_ui)
     : WebUIController(web_ui) {
diff --git a/content/browser/net/network_errors_listing_ui.h b/content/browser/network/network_errors_listing_ui.h
similarity index 83%
rename from content/browser/net/network_errors_listing_ui.h
rename to content/browser/network/network_errors_listing_ui.h
index a1a47935..2916157d 100644
--- a/content/browser/net/network_errors_listing_ui.h
+++ b/content/browser/network/network_errors_listing_ui.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 CONTENT_BROWSER_NET_NETWORK_ERRORS_LISTING_UI_H_
-#define CONTENT_BROWSER_NET_NETWORK_ERRORS_LISTING_UI_H_
+#ifndef CONTENT_BROWSER_NETWORK_NETWORK_ERRORS_LISTING_UI_H_
+#define CONTENT_BROWSER_NETWORK_NETWORK_ERRORS_LISTING_UI_H_
 
 #include "content/public/browser/web_ui_controller.h"
 #include "content/public/browser/web_ui_data_source.h"
@@ -34,4 +34,4 @@
 
 }  // namespace content
 
-#endif  // CONTENT_BROWSER_NET_NETWORK_ERRORS_LISTING_UI_H_
+#endif  // CONTENT_BROWSER_NETWORK_NETWORK_ERRORS_LISTING_UI_H_
diff --git a/content/browser/net/network_field_trial_browsertest.cc b/content/browser/network/network_field_trial_browsertest.cc
similarity index 100%
rename from content/browser/net/network_field_trial_browsertest.cc
rename to content/browser/network/network_field_trial_browsertest.cc
diff --git a/content/browser/net/network_quality_observer_impl.cc b/content/browser/network/network_quality_observer_impl.cc
similarity index 98%
rename from content/browser/net/network_quality_observer_impl.cc
rename to content/browser/network/network_quality_observer_impl.cc
index 0d9a7a4..c390032 100644
--- a/content/browser/net/network_quality_observer_impl.cc
+++ b/content/browser/network/network_quality_observer_impl.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 "content/browser/net/network_quality_observer_impl.h"
+#include "content/browser/network/network_quality_observer_impl.h"
 
 #include "base/metrics/histogram_macros.h"
 #include "content/common/renderer.mojom.h"
diff --git a/content/browser/net/network_quality_observer_impl.h b/content/browser/network/network_quality_observer_impl.h
similarity index 91%
rename from content/browser/net/network_quality_observer_impl.h
rename to content/browser/network/network_quality_observer_impl.h
index 9abcf8b..5d2bb8c 100644
--- a/content/browser/net/network_quality_observer_impl.h
+++ b/content/browser/network/network_quality_observer_impl.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 CONTENT_BROWSER_NET_NETWORK_QUALITY_OBSERVER_IMPL_H_
-#define CONTENT_BROWSER_NET_NETWORK_QUALITY_OBSERVER_IMPL_H_
+#ifndef CONTENT_BROWSER_NETWORK_NETWORK_QUALITY_OBSERVER_IMPL_H_
+#define CONTENT_BROWSER_NETWORK_NETWORK_QUALITY_OBSERVER_IMPL_H_
 
 #include <stdint.h>
 
@@ -61,4 +61,4 @@
 
 }  // namespace content
 
-#endif  // CONTENT_BROWSER_NET_NETWORK_QUALITY_OBSERVER_IMPL_H_
+#endif  // CONTENT_BROWSER_NETWORK_NETWORK_QUALITY_OBSERVER_IMPL_H_
diff --git a/content/browser/net/network_quality_observer_impl_unittest.cc b/content/browser/network/network_quality_observer_impl_unittest.cc
similarity index 96%
rename from content/browser/net/network_quality_observer_impl_unittest.cc
rename to content/browser/network/network_quality_observer_impl_unittest.cc
index 34c40c4..35d65ca 100644
--- a/content/browser/net/network_quality_observer_impl_unittest.cc
+++ b/content/browser/network/network_quality_observer_impl_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 "content/browser/net/network_quality_observer_impl.h"
+#include "content/browser/network/network_quality_observer_impl.h"
 
 #include "base/run_loop.h"
 #include "base/test/metrics/histogram_tester.h"
diff --git a/content/browser/net/network_service_memory_cache_browsertest.cc b/content/browser/network/network_service_memory_cache_browsertest.cc
similarity index 100%
rename from content/browser/net/network_service_memory_cache_browsertest.cc
rename to content/browser/network/network_service_memory_cache_browsertest.cc
diff --git a/content/browser/net/network_service_process_tracker_win.cc b/content/browser/network/network_service_process_tracker_win.cc
similarity index 97%
rename from content/browser/net/network_service_process_tracker_win.cc
rename to content/browser/network/network_service_process_tracker_win.cc
index 94bb6c7..fc38c31 100644
--- a/content/browser/net/network_service_process_tracker_win.cc
+++ b/content/browser/network/network_service_process_tracker_win.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 "content/browser/net/network_service_process_tracker_win.h"
+#include "content/browser/network/network_service_process_tracker_win.h"
 
 #include "base/no_destructor.h"
 #include "base/process/process.h"
diff --git a/content/browser/net/network_service_process_tracker_win.h b/content/browser/network/network_service_process_tracker_win.h
similarity index 70%
rename from content/browser/net/network_service_process_tracker_win.h
rename to content/browser/network/network_service_process_tracker_win.h
index 6416f797..d7273a9 100644
--- a/content/browser/net/network_service_process_tracker_win.h
+++ b/content/browser/network/network_service_process_tracker_win.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 CONTENT_BROWSER_NET_NETWORK_SERVICE_PROCESS_TRACKER_WIN_H_
-#define CONTENT_BROWSER_NET_NETWORK_SERVICE_PROCESS_TRACKER_WIN_H_
+#ifndef CONTENT_BROWSER_NETWORK_NETWORK_SERVICE_PROCESS_TRACKER_WIN_H_
+#define CONTENT_BROWSER_NETWORK_NETWORK_SERVICE_PROCESS_TRACKER_WIN_H_
 
 #include "base/process/process.h"
 #include "content/common/content_export.h"
@@ -17,4 +17,4 @@
 
 }  // namespace content
 
-#endif  // CONTENT_BROWSER_NET_NETWORK_SERVICE_PROCESS_TRACKER_WIN_H_
+#endif  // CONTENT_BROWSER_NETWORK_NETWORK_SERVICE_PROCESS_TRACKER_WIN_H_
diff --git a/content/browser/net/network_service_process_tracker_win_browsertest.cc b/content/browser/network/network_service_process_tracker_win_browsertest.cc
similarity index 96%
rename from content/browser/net/network_service_process_tracker_win_browsertest.cc
rename to content/browser/network/network_service_process_tracker_win_browsertest.cc
index 1aef0753..c2edba6f 100644
--- a/content/browser/net/network_service_process_tracker_win_browsertest.cc
+++ b/content/browser/network/network_service_process_tracker_win_browsertest.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 "content/browser/net/network_service_process_tracker_win.h"
+#include "content/browser/network/network_service_process_tracker_win.h"
 
 #include <windows.h>
 
diff --git a/content/browser/net/reporting_service_proxy.cc b/content/browser/network/reporting_service_proxy.cc
similarity index 99%
rename from content/browser/net/reporting_service_proxy.cc
rename to content/browser/network/reporting_service_proxy.cc
index 1ab56a0..843b823 100644
--- a/content/browser/net/reporting_service_proxy.cc
+++ b/content/browser/network/reporting_service_proxy.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 "content/browser/net/reporting_service_proxy.h"
+#include "content/browser/network/reporting_service_proxy.h"
 
 #include <memory>
 #include <string>
diff --git a/content/browser/net/reporting_service_proxy.h b/content/browser/network/reporting_service_proxy.h
similarity index 86%
rename from content/browser/net/reporting_service_proxy.h
rename to content/browser/network/reporting_service_proxy.h
index b717b89..6c95887 100644
--- a/content/browser/net/reporting_service_proxy.h
+++ b/content/browser/network/reporting_service_proxy.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 CONTENT_BROWSER_NET_REPORTING_SERVICE_PROXY_H_
-#define CONTENT_BROWSER_NET_REPORTING_SERVICE_PROXY_H_
+#ifndef CONTENT_BROWSER_NETWORK_REPORTING_SERVICE_PROXY_H_
+#define CONTENT_BROWSER_NETWORK_REPORTING_SERVICE_PROXY_H_
 
 #include "mojo/public/cpp/bindings/pending_receiver.h"
 #include "third_party/blink/public/mojom/reporting/reporting.mojom.h"
@@ -32,4 +32,4 @@
 
 }  // namespace content
 
-#endif  // CONTENT_BROWSER_NET_REPORTING_SERVICE_PROXY_H_
+#endif  // CONTENT_BROWSER_NETWORK_REPORTING_SERVICE_PROXY_H_
diff --git a/content/browser/net/sandboxed_http_cache_browsertest.cc b/content/browser/network/sandboxed_http_cache_browsertest.cc
similarity index 99%
rename from content/browser/net/sandboxed_http_cache_browsertest.cc
rename to content/browser/network/sandboxed_http_cache_browsertest.cc
index 3513d72f..6f27c61 100644
--- a/content/browser/net/sandboxed_http_cache_browsertest.cc
+++ b/content/browser/network/sandboxed_http_cache_browsertest.cc
@@ -14,7 +14,7 @@
 #include "base/test/scoped_feature_list.h"
 #include "base/threading/thread_restrictions.h"
 #include "build/build_config.h"
-#include "content/browser/net/http_cache_backend_file_operations_factory.h"
+#include "content/browser/network/http_cache_backend_file_operations_factory.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/network_service_instance.h"
 #include "content/public/browser/page.h"
diff --git a/content/browser/net/sandboxed_nqe_browsertest.cc b/content/browser/network/sandboxed_nqe_browsertest.cc
similarity index 100%
rename from content/browser/net/sandboxed_nqe_browsertest.cc
rename to content/browser/network/sandboxed_nqe_browsertest.cc
diff --git a/content/browser/net/sandboxed_socket_broker_browsertest.cc b/content/browser/network/sandboxed_socket_broker_browsertest.cc
similarity index 99%
rename from content/browser/net/sandboxed_socket_broker_browsertest.cc
rename to content/browser/network/sandboxed_socket_broker_browsertest.cc
index d8fb8b2a1..d7244486 100644
--- a/content/browser/net/sandboxed_socket_broker_browsertest.cc
+++ b/content/browser/network/sandboxed_socket_broker_browsertest.cc
@@ -6,7 +6,7 @@
 #include "base/run_loop.h"
 #include "base/test/scoped_feature_list.h"
 #include "content/browser/buildflags.h"
-#include "content/browser/net/socket_broker_impl.h"
+#include "content/browser/network/socket_broker_impl.h"
 #include "content/public/browser/browser_context.h"
 #include "content/public/browser/network_service_instance.h"
 #include "content/public/browser/storage_partition.h"
diff --git a/content/browser/net/socket_broker_impl.cc b/content/browser/network/socket_broker_impl.cc
similarity index 94%
rename from content/browser/net/socket_broker_impl.cc
rename to content/browser/network/socket_broker_impl.cc
index 4d93a9d..2a781f56 100644
--- a/content/browser/net/socket_broker_impl.cc
+++ b/content/browser/network/socket_broker_impl.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 "content/browser/net/socket_broker_impl.h"
+#include "content/browser/network/socket_broker_impl.h"
 
 #include <errno.h>
 
@@ -22,7 +22,7 @@
 #include <winsock2.h>
 
 #include "base/scoped_generic.h"
-#include "content/browser/net/network_service_process_tracker_win.h"
+#include "content/browser/network/network_service_process_tracker_win.h"
 #endif
 
 namespace content {
diff --git a/content/browser/net/socket_broker_impl.h b/content/browser/network/socket_broker_impl.h
similarity index 88%
rename from content/browser/net/socket_broker_impl.h
rename to content/browser/network/socket_broker_impl.h
index ee1acbf..4da44cc 100644
--- a/content/browser/net/socket_broker_impl.h
+++ b/content/browser/network/socket_broker_impl.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 CONTENT_BROWSER_NET_SOCKET_BROKER_IMPL_H_
-#define CONTENT_BROWSER_NET_SOCKET_BROKER_IMPL_H_
+#ifndef CONTENT_BROWSER_NETWORK_SOCKET_BROKER_IMPL_H_
+#define CONTENT_BROWSER_NETWORK_SOCKET_BROKER_IMPL_H_
 
 #include "content/common/content_export.h"
 #include "mojo/public/cpp/bindings/receiver_set.h"
@@ -38,4 +38,4 @@
 };
 
 }  // namespace content
-#endif  // CONTENT_BROWSER_NET_SOCKET_BROKER_IMPL_H_
+#endif  // CONTENT_BROWSER_NETWORK_SOCKET_BROKER_IMPL_H_
diff --git a/content/browser/net/socket_broker_impl_unittest.cc b/content/browser/network/socket_broker_impl_unittest.cc
similarity index 100%
rename from content/browser/net/socket_broker_impl_unittest.cc
rename to content/browser/network/socket_broker_impl_unittest.cc
diff --git a/content/browser/net/split_cache_browsertest.cc b/content/browser/network/split_cache_browsertest.cc
similarity index 100%
rename from content/browser/net/split_cache_browsertest.cc
rename to content/browser/network/split_cache_browsertest.cc
diff --git a/content/browser/net/transferable_socket_browsertest.cc b/content/browser/network/transferable_socket_browsertest.cc
similarity index 100%
rename from content/browser/net/transferable_socket_browsertest.cc
rename to content/browser/network/transferable_socket_browsertest.cc
diff --git a/content/browser/net/trust_token_browsertest.cc b/content/browser/network/trust_token_browsertest.cc
similarity index 99%
rename from content/browser/net/trust_token_browsertest.cc
rename to content/browser/network/trust_token_browsertest.cc
index 6c10fa2..dc27090 100644
--- a/content/browser/net/trust_token_browsertest.cc
+++ b/content/browser/network/trust_token_browsertest.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 "content/browser/net/trust_token_browsertest.h"
+#include "content/browser/network/trust_token_browsertest.h"
 
 #include <memory>
 #include <string>
@@ -1766,10 +1766,10 @@
     // This assertion helps guard against the brittleness of deserializing
     // "true", in case we refactor the parameter's type.
     static_assert(
-        std::is_same<decltype(
-                         network::features::kPlatformProvidedTrustTokenIssuance
-                             .default_value),
-                     const bool>::value,
+        std::is_same<
+            decltype(network::features::kPlatformProvidedTrustTokenIssuance
+                         .default_value),
+            const bool>::value,
         "Need to update this initialization logic if the type of the param "
         "changes.");
     features_.InitAndEnableFeatureWithParameters(
diff --git a/content/browser/net/trust_token_browsertest.h b/content/browser/network/trust_token_browsertest.h
similarity index 95%
rename from content/browser/net/trust_token_browsertest.h
rename to content/browser/network/trust_token_browsertest.h
index ef6f0f7..fd14d88 100644
--- a/content/browser/net/trust_token_browsertest.h
+++ b/content/browser/network/trust_token_browsertest.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 CONTENT_BROWSER_NET_TRUST_TOKEN_BROWSERTEST_H_
-#define CONTENT_BROWSER_NET_TRUST_TOKEN_BROWSERTEST_H_
+#ifndef CONTENT_BROWSER_NETWORK_TRUST_TOKEN_BROWSERTEST_H_
+#define CONTENT_BROWSER_NETWORK_TRUST_TOKEN_BROWSERTEST_H_
 
 #include "base/test/scoped_feature_list.h"
 #include "build/build_config.h"
@@ -101,4 +101,4 @@
 
 }  // namespace content
 
-#endif  // CONTENT_BROWSER_NET_TRUST_TOKEN_BROWSERTEST_H_
+#endif  // CONTENT_BROWSER_NETWORK_TRUST_TOKEN_BROWSERTEST_H_
diff --git a/content/browser/net/trust_token_origin_trial_browsertest.cc b/content/browser/network/trust_token_origin_trial_browsertest.cc
similarity index 100%
rename from content/browser/net/trust_token_origin_trial_browsertest.cc
rename to content/browser/network/trust_token_origin_trial_browsertest.cc
diff --git a/content/browser/net/trust_token_parameters_browsertest.cc b/content/browser/network/trust_token_parameters_browsertest.cc
similarity index 100%
rename from content/browser/net/trust_token_parameters_browsertest.cc
rename to content/browser/network/trust_token_parameters_browsertest.cc
diff --git a/content/browser/network_service_client.h b/content/browser/network_service_client.h
index cfa2322..5f50a72 100644
--- a/content/browser/network_service_client.h
+++ b/content/browser/network_service_client.h
@@ -13,7 +13,7 @@
 #include "base/unguessable_token.h"
 #include "build/build_config.h"
 #include "content/browser/buildflags.h"
-#include "content/browser/net/socket_broker_impl.h"
+#include "content/browser/network/socket_broker_impl.h"
 #include "mojo/public/cpp/bindings/pending_receiver.h"
 #include "mojo/public/cpp/bindings/receiver.h"
 #include "mojo/public/cpp/bindings/receiver_set.h"
diff --git a/content/browser/network_service_instance_impl.cc b/content/browser/network_service_instance_impl.cc
index 40b4582..85164c8 100644
--- a/content/browser/network_service_instance_impl.cc
+++ b/content/browser/network_service_instance_impl.cc
@@ -36,8 +36,8 @@
 #include "content/browser/browser_main_loop.h"
 #include "content/browser/buildflags.h"
 #include "content/browser/first_party_sets/first_party_sets_handler_impl.h"
-#include "content/browser/net/http_cache_backend_file_operations_factory.h"
-#include "content/browser/net/socket_broker_impl.h"
+#include "content/browser/network/http_cache_backend_file_operations_factory.h"
+#include "content/browser/network/socket_broker_impl.h"
 #include "content/browser/network_sandbox_grant_result.h"
 #include "content/browser/network_service_client.h"
 #include "content/public/browser/browser_task_traits.h"
@@ -72,7 +72,7 @@
 #endif
 
 #if BUILDFLAG(IS_WIN)
-#include "content/browser/net/network_service_process_tracker_win.h"
+#include "content/browser/network/network_service_process_tracker_win.h"
 #endif
 
 namespace content {
diff --git a/content/browser/permissions/permission_controller_impl.cc b/content/browser/permissions/permission_controller_impl.cc
index dbdfa09..6cf8beb 100644
--- a/content/browser/permissions/permission_controller_impl.cc
+++ b/content/browser/permissions/permission_controller_impl.cc
@@ -206,40 +206,58 @@
 }
 
 PermissionControllerImpl::OverrideStatus
+PermissionControllerImpl::GrantOverridesForDevTools(
+    const absl::optional<url::Origin>& origin,
+    const std::vector<PermissionType>& permissions) {
+  return GrantPermissionOverrides(origin, permissions);
+}
+
+PermissionControllerImpl::OverrideStatus
 PermissionControllerImpl::SetOverrideForDevTools(
     const absl::optional<url::Origin>& origin,
     PermissionType permission,
     const blink::mojom::PermissionStatus& status) {
+  return SetPermissionOverride(origin, permission, status);
+}
+
+void PermissionControllerImpl::ResetOverridesForDevTools() {
+  ResetPermissionOverrides();
+}
+
+PermissionControllerImpl::OverrideStatus
+PermissionControllerImpl::SetPermissionOverride(
+    const absl::optional<url::Origin>& origin,
+    PermissionType permission,
+    const blink::mojom::PermissionStatus& status) {
   PermissionControllerDelegate* delegate =
       browser_context_->GetPermissionControllerDelegate();
-  if (delegate &&
-      !delegate->IsPermissionOverridableByDevTools(permission, origin)) {
+  if (delegate && !delegate->IsPermissionOverridable(permission, origin)) {
     return OverrideStatus::kOverrideNotSet;
   }
   const auto old_statuses = GetSubscriptionsStatuses(
       origin ? absl::make_optional(origin->GetURL()) : absl::nullopt);
-  devtools_permission_overrides_.Set(origin, permission, status);
+  permission_overrides_.Set(origin, permission, status);
   NotifyChangedSubscriptions(old_statuses);
 
   return OverrideStatus::kOverrideSet;
 }
 
 PermissionControllerImpl::OverrideStatus
-PermissionControllerImpl::GrantOverridesForDevTools(
+PermissionControllerImpl::GrantPermissionOverrides(
     const absl::optional<url::Origin>& origin,
     const std::vector<PermissionType>& permissions) {
   PermissionControllerDelegate* delegate =
       browser_context_->GetPermissionControllerDelegate();
   if (delegate) {
     for (const auto permission : permissions) {
-      if (!delegate->IsPermissionOverridableByDevTools(permission, origin))
+      if (!delegate->IsPermissionOverridable(permission, origin))
         return OverrideStatus::kOverrideNotSet;
     }
   }
 
   const auto old_statuses = GetSubscriptionsStatuses(
       origin ? absl::make_optional(origin->GetURL()) : absl::nullopt);
-  devtools_permission_overrides_.GrantPermissions(origin, permissions);
+  permission_overrides_.GrantPermissions(origin, permissions);
   // If any statuses changed because they lose overrides or the new overrides
   // modify their previous state (overridden or not), subscribers must be
   // notified manually.
@@ -248,9 +266,9 @@
   return OverrideStatus::kOverrideSet;
 }
 
-void PermissionControllerImpl::ResetOverridesForDevTools() {
+void PermissionControllerImpl::ResetPermissionOverrides() {
   const auto old_statuses = GetSubscriptionsStatuses();
-  devtools_permission_overrides_ = DevToolsPermissionOverrides();
+  permission_overrides_ = PermissionOverrides();
 
   // If any statuses changed because they lost their overrides, the subscribers
   // must be notified manually.
@@ -272,7 +290,7 @@
   url::Origin origin = render_frame_host->GetLastCommittedOrigin();
   for (const auto& permission : permissions) {
     absl::optional<blink::mojom::PermissionStatus> override_status =
-        devtools_permission_overrides_.Get(origin, permission);
+        permission_overrides_.Get(origin, permission);
     if (!override_status)
       permissions_without_overrides.push_back(permission);
     results.push_back(override_status);
@@ -325,7 +343,7 @@
   url::Origin origin = render_frame_host->GetLastCommittedOrigin();
   for (const auto& permission : permissions) {
     absl::optional<blink::mojom::PermissionStatus> override_status =
-        devtools_permission_overrides_.Get(origin, permission);
+        permission_overrides_.Get(origin, permission);
     if (!override_status)
       permissions_without_overrides.push_back(permission);
     results.push_back(override_status);
@@ -365,8 +383,8 @@
     const GURL& requesting_origin,
     const GURL& embedding_origin) {
   absl::optional<blink::mojom::PermissionStatus> status =
-      devtools_permission_overrides_.Get(url::Origin::Create(requesting_origin),
-                                         permission);
+      permission_overrides_.Get(url::Origin::Create(requesting_origin),
+                                permission);
   if (status)
     return *status;
 
@@ -385,7 +403,7 @@
     RenderProcessHost* render_process_host,
     const url::Origin& worker_origin) {
   absl::optional<blink::mojom::PermissionStatus> status =
-      devtools_permission_overrides_.Get(worker_origin, permission);
+      permission_overrides_.Get(worker_origin, permission);
   if (status.has_value())
     return *status;
 
@@ -402,8 +420,8 @@
     PermissionType permission,
     RenderFrameHost* render_frame_host) {
   absl::optional<blink::mojom::PermissionStatus> status =
-      devtools_permission_overrides_.Get(
-          render_frame_host->GetLastCommittedOrigin(), permission);
+      permission_overrides_.Get(render_frame_host->GetLastCommittedOrigin(),
+                                permission);
   if (status)
     return *status;
 
@@ -420,8 +438,8 @@
     PermissionType permission,
     RenderFrameHost* render_frame_host) {
   absl::optional<blink::mojom::PermissionStatus> status =
-      devtools_permission_overrides_.Get(
-          render_frame_host->GetLastCommittedOrigin(), permission);
+      permission_overrides_.Get(render_frame_host->GetLastCommittedOrigin(),
+                                permission);
   if (status)
     return PermissionResult(*status, PermissionStatusSource::UNSPECIFIED);
 
@@ -440,7 +458,7 @@
     PermissionType permission,
     const url::Origin& origin) {
   absl::optional<blink::mojom::PermissionStatus> status =
-      devtools_permission_overrides_.Get(origin, permission);
+      permission_overrides_.Get(origin, permission);
   if (status)
     return PermissionResult(*status, PermissionStatusSource::UNSPECIFIED);
 
@@ -484,7 +502,7 @@
   if (!subscription)
     return;
   absl::optional<blink::mojom::PermissionStatus> status_override =
-      devtools_permission_overrides_.Get(
+      permission_overrides_.Get(
           url::Origin::Create(subscription->requesting_origin),
           subscription->permission);
   if (!status_override.has_value())
diff --git a/content/browser/permissions/permission_controller_impl.h b/content/browser/permissions/permission_controller_impl.h
index 96ce357..f68c658 100644
--- a/content/browser/permissions/permission_controller_impl.h
+++ b/content/browser/permissions/permission_controller_impl.h
@@ -8,8 +8,8 @@
 #include "base/containers/id_map.h"
 #include "base/memory/raw_ptr.h"
 #include "content/common/content_export.h"
-#include "content/public/browser/devtools_permission_overrides.h"
 #include "content/public/browser/permission_controller.h"
+#include "content/public/browser/permission_overrides.h"
 #include "url/gurl.h"
 #include "url/origin.h"
 
@@ -42,7 +42,6 @@
   static PermissionControllerImpl* FromBrowserContext(
       BrowserContext* browser_context);
 
-  using PermissionOverrides = DevToolsPermissionOverrides::PermissionOverrides;
   enum class OverrideStatus { kOverrideNotSet, kOverrideSet };
 
   // For the given |origin|, grant permissions in |overrides| and reject all
@@ -57,6 +56,18 @@
       const blink::mojom::PermissionStatus& status);
   void ResetOverridesForDevTools();
 
+  // Sets status for |permissions| to GRANTED in |origin|, and DENIED
+  // for all others.
+  // Null |origin| grants permissions globally for context.
+  OverrideStatus GrantPermissionOverrides(
+      const absl::optional<url::Origin>& origin,
+      const std::vector<PermissionType>& permissions);
+  OverrideStatus SetPermissionOverride(
+      const absl::optional<url::Origin>& origin,
+      PermissionType permission,
+      const blink::mojom::PermissionStatus& status);
+  void ResetPermissionOverrides();
+
   void ResetPermission(PermissionType permission,
                        const GURL& requesting_origin,
                        const GURL& embedding_origin);
@@ -148,7 +159,7 @@
   void OnDelegatePermissionStatusChange(SubscriptionId subscription_id,
                                         blink::mojom::PermissionStatus status);
 
-  DevToolsPermissionOverrides devtools_permission_overrides_;
+  PermissionOverrides permission_overrides_;
 
   // Note that SubscriptionId is distinct from
   // PermissionControllerDelegate::SubscriptionId, and the concrete ID values
diff --git a/content/browser/permissions/permission_controller_impl_unittest.cc b/content/browser/permissions/permission_controller_impl_unittest.cc
index 56ffd73..8a63ed2f 100644
--- a/content/browser/permissions/permission_controller_impl_unittest.cc
+++ b/content/browser/permissions/permission_controller_impl_unittest.cc
@@ -60,7 +60,7 @@
            void(const std::vector<blink::mojom::PermissionStatus>&)> callback),
       (override));
   MOCK_METHOD(bool,
-              IsPermissionOverridableByDevTools,
+              IsPermissionOverridable,
               (PermissionType, const absl::optional<url::Origin>&),
               (override));
 };
@@ -160,7 +160,7 @@
   ~PermissionControllerImplTest() override {}
 
   void SetUp() override {
-    ON_CALL(*mock_manager(), IsPermissionOverridableByDevTools)
+    ON_CALL(*mock_manager(), IsPermissionOverridable)
         .WillByDefault(testing::Return(true));
   }
 
@@ -418,8 +418,8 @@
                 blink::mojom::PermissionStatus::DENIED));
 
   // Delegate will be called, but prevents override from being set.
-  EXPECT_CALL(*mock_manager(), IsPermissionOverridableByDevTools(
-                                   PermissionType::GEOLOCATION, testing::_))
+  EXPECT_CALL(*mock_manager(),
+              IsPermissionOverridable(PermissionType::GEOLOCATION, testing::_))
       .WillOnce(testing::Return(false));
   EXPECT_EQ(OverrideStatus::kOverrideNotSet,
             permission_controller()->SetOverrideForDevTools(
@@ -445,11 +445,11 @@
       kTestOrigin, PermissionType::BACKGROUND_SYNC,
       blink::mojom::PermissionStatus::ASK);
   // Delegate will be called, but prevents override from being set.
-  EXPECT_CALL(*mock_manager(), IsPermissionOverridableByDevTools(
-                                   PermissionType::GEOLOCATION, testing::_))
+  EXPECT_CALL(*mock_manager(),
+              IsPermissionOverridable(PermissionType::GEOLOCATION, testing::_))
       .WillOnce(testing::Return(false));
-  EXPECT_CALL(*mock_manager(), IsPermissionOverridableByDevTools(
-                                   PermissionType::MIDI, testing::_))
+  EXPECT_CALL(*mock_manager(),
+              IsPermissionOverridable(PermissionType::MIDI, testing::_))
       .WillOnce(testing::Return(true));
 
   // Since one cannot be overridden, none are overridden.
@@ -472,13 +472,13 @@
                                          /*render_process_host=*/nullptr,
                                          kTestOrigin));
 
-  EXPECT_CALL(*mock_manager(), IsPermissionOverridableByDevTools(
-                                   PermissionType::GEOLOCATION, testing::_))
+  EXPECT_CALL(*mock_manager(),
+              IsPermissionOverridable(PermissionType::GEOLOCATION, testing::_))
       .WillOnce(testing::Return(true));
-  EXPECT_CALL(*mock_manager(), IsPermissionOverridableByDevTools(
-                                   PermissionType::MIDI, testing::_))
+  EXPECT_CALL(*mock_manager(),
+              IsPermissionOverridable(PermissionType::MIDI, testing::_))
       .WillOnce(testing::Return(true));
-  EXPECT_CALL(*mock_manager(), IsPermissionOverridableByDevTools(
+  EXPECT_CALL(*mock_manager(), IsPermissionOverridable(
                                    PermissionType::BACKGROUND_SYNC, testing::_))
       .WillOnce(testing::Return(true));
   // If all can be set, overrides will be stored.
diff --git a/content/browser/renderer_host/code_cache_host_impl.cc b/content/browser/renderer_host/code_cache_host_impl.cc
index adb4342..80a7d8bd 100644
--- a/content/browser/renderer_host/code_cache_host_impl.cc
+++ b/content/browser/renderer_host/code_cache_host_impl.cc
@@ -12,6 +12,7 @@
 #include "base/strings/utf_string_conversions.h"
 #include "base/threading/thread.h"
 #include "build/build_config.h"
+#include "components/services/storage/public/cpp/buckets/bucket_locator.h"
 #include "components/services/storage/public/mojom/cache_storage_control.mojom.h"
 #include "content/browser/child_process_security_policy_impl.h"
 #include "content/browser/code_cache/generated_code_cache.h"
@@ -196,7 +197,8 @@
   // real StorageKey somehow.
   cache_storage_control->AddReceiver(
       cross_origin_embedder_policy, mojo::NullRemote(),
-      blink::StorageKey(cache_storage_origin),
+      storage::BucketLocator::ForDefaultBucket(
+          blink::StorageKey(cache_storage_origin)),
       storage::mojom::CacheStorageOwner::kCacheAPI,
       remote.BindNewPipeAndPassReceiver());
 
diff --git a/content/browser/renderer_host/cross_origin_opener_policy_access_report_manager.h b/content/browser/renderer_host/cross_origin_opener_policy_access_report_manager.h
index 46a1f49..bc5754c8 100644
--- a/content/browser/renderer_host/cross_origin_opener_policy_access_report_manager.h
+++ b/content/browser/renderer_host/cross_origin_opener_policy_access_report_manager.h
@@ -8,7 +8,7 @@
 #include <string>
 
 #include "base/values.h"
-#include "content/browser/net/cross_origin_opener_policy_reporter.h"
+#include "content/browser/network/cross_origin_opener_policy_reporter.h"
 
 namespace content {
 
diff --git a/content/browser/renderer_host/navigation_request.cc b/content/browser/renderer_host/navigation_request.cc
index 3dbd443..1485f53 100644
--- a/content/browser/renderer_host/navigation_request.cc
+++ b/content/browser/renderer_host/navigation_request.cc
@@ -48,8 +48,8 @@
 #include "content/browser/loader/navigation_url_loader.h"
 #include "content/browser/loader/object_navigation_fallback_body_loader.h"
 #include "content/browser/navigation_or_document_handle.h"
-#include "content/browser/net/cross_origin_embedder_policy_reporter.h"
-#include "content/browser/net/cross_origin_opener_policy_reporter.h"
+#include "content/browser/network/cross_origin_embedder_policy_reporter.h"
+#include "content/browser/network/cross_origin_opener_policy_reporter.h"
 #include "content/browser/network_service_instance_impl.h"
 #include "content/browser/origin_agent_cluster_isolation_state.h"
 #include "content/browser/origin_trials/origin_trials_utils.h"
diff --git a/content/browser/renderer_host/pending_beacon_browsertest.cc b/content/browser/renderer_host/pending_beacon_browsertest.cc
index 79ebe8c..d5cecea 100644
--- a/content/browser/renderer_host/pending_beacon_browsertest.cc
+++ b/content/browser/renderer_host/pending_beacon_browsertest.cc
@@ -294,6 +294,7 @@
   ASSERT_TRUE(WaitUntilPreviousDocumentDeleted());
 
   // The beacon should have been sent out after the page is gone.
+  WaitForAllBeaconsSent(total_beacon);
   EXPECT_EQ(sent_beacon_count(), total_beacon);
 }
 
@@ -311,6 +312,7 @@
   ASSERT_TRUE(WaitUntilPreviousDocumentDeleted());
 
   // The beacon should have been sent out after the page is gone.
+  WaitForAllBeaconsSent(total_beacon);
   EXPECT_EQ(sent_beacon_count(), total_beacon);
 }
 
@@ -692,6 +694,7 @@
   std::u16string expected_title = u"true/false/false/false";
   TitleWatcher title_watcher(web_contents(), expected_title);
   EXPECT_EQ(title_watcher.WaitAndGetTitle(), expected_title);
+  WaitForAllBeaconsSent(total_beacon);
   EXPECT_EQ(sent_beacon_count(), total_beacon);
 }
 
@@ -724,6 +727,7 @@
   std::u16string expected_title = u"true/false/false/false";
   TitleWatcher title_watcher(web_contents(), expected_title);
   EXPECT_EQ(title_watcher.WaitAndGetTitle(), expected_title);
+  WaitForAllBeaconsSent(total_beacon);
   EXPECT_EQ(sent_beacon_count(), total_beacon);
 }
 
@@ -756,6 +760,7 @@
   std::u16string expected_title = u"true/false/false/false";
   TitleWatcher title_watcher(web_contents(), expected_title);
   EXPECT_EQ(title_watcher.WaitAndGetTitle(), expected_title);
+  WaitForAllBeaconsSent(total_beacon);
   EXPECT_EQ(sent_beacon_count(), total_beacon);
 }
 
diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc
index f6f3f8fc..d16c8e91 100644
--- a/content/browser/renderer_host/render_frame_host_impl.cc
+++ b/content/browser/renderer_host/render_frame_host_impl.cc
@@ -83,8 +83,8 @@
 #include "content/browser/media/webaudio/audio_context_manager_impl.h"
 #include "content/browser/navigation_or_document_handle.h"
 #include "content/browser/navigation_subresource_loader_params.h"
-#include "content/browser/net/cross_origin_embedder_policy_reporter.h"
-#include "content/browser/net/cross_origin_opener_policy_reporter.h"
+#include "content/browser/network/cross_origin_embedder_policy_reporter.h"
+#include "content/browser/network/cross_origin_opener_policy_reporter.h"
 #include "content/browser/permissions/permission_controller_impl.h"
 #include "content/browser/permissions/permission_service_context.h"
 #include "content/browser/portal/portal.h"
@@ -9867,14 +9867,6 @@
     // in the renderer.
     render_accessibility_.reset();
   }
-
-  if (!ax_mode.has_mode(ui::kAXModeBasic.mode()) &&
-      browser_accessibility_manager_) {
-    // Missing either kWebContents and kNativeAPIs, so
-    // BrowserAccessibilityManager is no longer necessary.
-    browser_accessibility_manager_->DetachFromParentManager();
-    browser_accessibility_manager_.reset();
-  }
 }
 
 void RenderFrameHostImpl::RequestAXTreeSnapshot(
@@ -10962,6 +10954,14 @@
 
 void RenderFrameHostImpl::BindCacheStorage(
     mojo::PendingReceiver<blink::mojom::CacheStorage> receiver) {
+  BindCacheStorageInternal(
+      std::move(receiver),
+      storage::BucketLocator::ForDefaultBucket(storage_key()));
+}
+
+void RenderFrameHostImpl::BindCacheStorageInternal(
+    mojo::PendingReceiver<blink::mojom::CacheStorage> receiver,
+    const storage::BucketLocator& bucket_locator) {
   mojo::PendingRemote<network::mojom::CrossOriginEmbedderPolicyReporter>
       coep_reporter_remote;
   if (coep_reporter_) {
@@ -10969,8 +10969,8 @@
         coep_reporter_remote.InitWithNewPipeAndPassReceiver());
   }
   GetProcess()->BindCacheStorage(cross_origin_embedder_policy(),
-                                 std::move(coep_reporter_remote), storage_key(),
-                                 std::move(receiver));
+                                 std::move(coep_reporter_remote),
+                                 bucket_locator, std::move(receiver));
 }
 
 void RenderFrameHostImpl::BindInputInjectorReceiver(
@@ -14568,9 +14568,7 @@
 void RenderFrameHostImpl::BindCacheStorageForBucket(
     const storage::BucketInfo& bucket,
     mojo::PendingReceiver<blink::mojom::CacheStorage> receiver) {
-  // TODO(estade): pass the bucket rather than the storage key to support
-  // non-default buckets.
-  BindCacheStorage(std::move(receiver));
+  BindCacheStorageInternal(std::move(receiver), bucket.ToBucketLocator());
 }
 
 RenderFrameHostImpl::DocumentAssociatedData::DocumentAssociatedData(
diff --git a/content/browser/renderer_host/render_frame_host_impl.h b/content/browser/renderer_host/render_frame_host_impl.h
index 2d9bf0a..73895f3 100644
--- a/content/browser/renderer_host/render_frame_host_impl.h
+++ b/content/browser/renderer_host/render_frame_host_impl.h
@@ -42,7 +42,7 @@
 #include "content/browser/browser_interface_broker_impl.h"
 #include "content/browser/buckets/bucket_context.h"
 #include "content/browser/can_commit_status.h"
-#include "content/browser/net/cross_origin_opener_policy_reporter.h"
+#include "content/browser/network/cross_origin_opener_policy_reporter.h"
 #include "content/browser/preloading/prerender/prerender_host.h"
 #include "content/browser/renderer_host/back_forward_cache_metrics.h"
 #include "content/browser/renderer_host/browsing_context_state.h"
@@ -1907,6 +1907,7 @@
   void BindNFCReceiver(mojo::PendingReceiver<device::mojom::NFC> receiver);
 #endif
 
+  // Binds a `CacheStorage` object for the default bucket.
   void BindCacheStorage(
       mojo::PendingReceiver<blink::mojom::CacheStorage> receiver);
 
@@ -3578,6 +3579,10 @@
 
   TraceProto::LifecycleState LifecycleStateToProto() const;
 
+  void BindCacheStorageInternal(
+      mojo::PendingReceiver<blink::mojom::CacheStorage> receiver,
+      const storage::BucketLocator& bucket_locator);
+
   void DidEnterBackForwardCacheInternal();
   void WillLeaveBackForwardCacheInternal();
 
diff --git a/content/browser/renderer_host/render_frame_host_manager.cc b/content/browser/renderer_host/render_frame_host_manager.cc
index 3a5bfa7..d170099 100644
--- a/content/browser/renderer_host/render_frame_host_manager.cc
+++ b/content/browser/renderer_host/render_frame_host_manager.cc
@@ -26,7 +26,7 @@
 #include "base/trace_event/typed_macros.h"
 #include "build/build_config.h"
 #include "content/browser/child_process_security_policy_impl.h"
-#include "content/browser/net/cross_origin_opener_policy_reporter.h"
+#include "content/browser/network/cross_origin_opener_policy_reporter.h"
 #include "content/browser/process_lock.h"
 #include "content/browser/renderer_host/agent_scheduling_group_host.h"
 #include "content/browser/renderer_host/debug_urls.h"
diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc
index 0811fbc0..132e910 100644
--- a/content/browser/renderer_host/render_process_host_impl.cc
+++ b/content/browser/renderer_host/render_process_host_impl.cc
@@ -1898,13 +1898,13 @@
     const network::CrossOriginEmbedderPolicy& cross_origin_embedder_policy,
     mojo::PendingRemote<network::mojom::CrossOriginEmbedderPolicyReporter>
         coep_reporter_remote,
-    const blink::StorageKey& storage_key,
+    const storage::BucketLocator& bucket_locator,
     mojo::PendingReceiver<blink::mojom::CacheStorage> receiver) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
 
   storage_partition_impl_->GetCacheStorageControl()->AddReceiver(
       cross_origin_embedder_policy, std::move(coep_reporter_remote),
-      storage_key, storage::mojom::CacheStorageOwner::kCacheAPI,
+      bucket_locator, storage::mojom::CacheStorageOwner::kCacheAPI,
       std::move(receiver));
 }
 
diff --git a/content/browser/renderer_host/render_process_host_impl.h b/content/browser/renderer_host/render_process_host_impl.h
index 6ccade0..b77f4f5 100644
--- a/content/browser/renderer_host/render_process_host_impl.h
+++ b/content/browser/renderer_host/render_process_host_impl.h
@@ -297,7 +297,7 @@
       const network::CrossOriginEmbedderPolicy& cross_origin_embedder_policy,
       mojo::PendingRemote<network::mojom::CrossOriginEmbedderPolicyReporter>
           coep_reporter,
-      const blink::StorageKey& storage_key,
+      const storage::BucketLocator& bucket_locator,
       mojo::PendingReceiver<blink::mojom::CacheStorage> receiver) override;
   void BindIndexedDB(
       const blink::StorageKey& storage_key,
diff --git a/content/browser/service_worker/embedded_worker_instance.cc b/content/browser/service_worker/embedded_worker_instance.cc
index 47a0adb..52d7483 100644
--- a/content/browser/service_worker/embedded_worker_instance.cc
+++ b/content/browser/service_worker/embedded_worker_instance.cc
@@ -21,7 +21,7 @@
 #include "content/browser/devtools/network_service_devtools_observer.h"
 #include "content/browser/devtools/service_worker_devtools_agent_host.h"
 #include "content/browser/devtools/service_worker_devtools_manager.h"
-#include "content/browser/net/cross_origin_embedder_policy_reporter.h"
+#include "content/browser/network/cross_origin_embedder_policy_reporter.h"
 #include "content/browser/process_lock.h"
 #include "content/browser/renderer_host/render_process_host_impl.h"
 #include "content/browser/service_worker/embedded_worker_status.h"
@@ -34,11 +34,13 @@
 #include "content/browser/storage_partition_impl.h"
 #include "content/browser/url_loader_factory_getter.h"
 #include "content/browser/url_loader_factory_params_helper.h"
+#include "content/browser/usb/web_usb_service_impl.h"
 #include "content/common/content_switches_internal.h"
 #include "content/common/url_schemes.h"
 #include "content/public/browser/browser_task_traits.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/hid_delegate.h"
+#include "content/public/browser/usb_delegate.h"
 #include "content/public/browser/web_ui_url_loader_factory.h"
 #include "content/public/common/child_process_host.h"
 #include "content/public/common/content_client.h"
@@ -53,7 +55,6 @@
 #include "services/network/public/mojom/client_security_state.mojom.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
 #include "third_party/blink/public/common/features.h"
-#include "third_party/blink/public/common/storage_key/storage_key.h"
 #include "third_party/blink/public/mojom/loader/url_loader_factory_bundle.mojom.h"
 #include "third_party/blink/public/mojom/renderer_preference_watcher.mojom.h"
 #include "third_party/blink/public/mojom/service_worker/service_worker_object.mojom.h"
@@ -466,7 +467,8 @@
       // path should be better than making the execution get stuck.
       owner_version_->cross_origin_embedder_policy()) {
     BindCacheStorage(
-        params->provider_info->cache_storage.InitWithNewPipeAndPassReceiver());
+        params->provider_info->cache_storage.InitWithNewPipeAndPassReceiver(),
+        storage::BucketLocator::ForDefaultBucket(owner_version_->key()));
   }
 
   inflight_start_info_ = std::make_unique<StartInfo>(
@@ -764,9 +766,11 @@
 }
 
 void EmbeddedWorkerInstance::BindCacheStorage(
-    mojo::PendingReceiver<blink::mojom::CacheStorage> receiver) {
+    mojo::PendingReceiver<blink::mojom::CacheStorage> receiver,
+    const storage::BucketLocator& bucket_locator) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
-  pending_cache_storage_receivers_.push_back(std::move(receiver));
+  pending_cache_storage_requests_.emplace_back(std::move(receiver),
+                                               bucket_locator);
   BindCacheStorageInternal();
 }
 
@@ -775,11 +779,6 @@
     const url::Origin& origin,
     mojo::PendingReceiver<blink::mojom::HidService> receiver) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
-  auto* rph = static_cast<RenderProcessHostImpl*>(
-      RenderProcessHost::FromID(process_id()));
-  if (!rph)
-    return;
-
   HidDelegate* hid_delegate = GetContentClient()->browser()->GetHidDelegate();
   if (!hid_delegate) {
     return;
@@ -790,6 +789,19 @@
 }
 #endif  // !BUILDFLAG(IS_ANDROID)
 
+void EmbeddedWorkerInstance::BindUsbService(
+    const url::Origin& origin,
+    mojo::PendingReceiver<blink::mojom::WebUsbService> receiver) {
+  DCHECK_CURRENTLY_ON(BrowserThread::UI);
+  UsbDelegate* usb_delegate = GetContentClient()->browser()->GetUsbDelegate();
+  if (!usb_delegate) {
+    return;
+  }
+  if (usb_delegate->IsServiceWorkerAllowedForOrigin(origin)) {
+    WebUsbServiceImpl::Create(context_, origin, std::move(receiver));
+  }
+}
+
 base::WeakPtr<EmbeddedWorkerInstance> EmbeddedWorkerInstance::AsWeakPtr() {
   return weak_factory_.GetWeakPtr();
 }
@@ -1080,7 +1092,7 @@
   if (!coep)
     return;
 
-  for (auto& receiver : pending_cache_storage_receivers_) {
+  for (auto& request : pending_cache_storage_requests_) {
     mojo::PendingRemote<network::mojom::CrossOriginEmbedderPolicyReporter>
         coep_reporter_remote;
     if (coep_reporter_) {
@@ -1093,9 +1105,18 @@
       return;
 
     rph->BindCacheStorage(*coep, std::move(coep_reporter_remote),
-                          owner_version_->key(), std::move(receiver));
+                          request.bucket, std::move(request.receiver));
   }
-  pending_cache_storage_receivers_.clear();
+  pending_cache_storage_requests_.clear();
 }
 
+EmbeddedWorkerInstance::CacheStorageRequest::CacheStorageRequest(
+    mojo::PendingReceiver<blink::mojom::CacheStorage> receiver,
+    storage::BucketLocator bucket)
+    : receiver(std::move(receiver)), bucket(std::move(bucket)) {}
+
+EmbeddedWorkerInstance::CacheStorageRequest::CacheStorageRequest(
+    CacheStorageRequest&& other) = default;
+EmbeddedWorkerInstance::CacheStorageRequest::~CacheStorageRequest() = default;
+
 }  // namespace content
diff --git a/content/browser/service_worker/embedded_worker_instance.h b/content/browser/service_worker/embedded_worker_instance.h
index 76e62ff..73cd7cc9 100644
--- a/content/browser/service_worker/embedded_worker_instance.h
+++ b/content/browser/service_worker/embedded_worker_instance.h
@@ -19,6 +19,7 @@
 #include "base/observer_list.h"
 #include "base/threading/sequence_bound.h"
 #include "base/unguessable_token.h"
+#include "components/services/storage/public/cpp/buckets/bucket_locator.h"
 #include "content/browser/service_worker/embedded_worker_status.h"
 #include "content/browser/service_worker/service_worker_metrics.h"
 #include "content/common/content_export.h"
@@ -37,6 +38,7 @@
 #include "third_party/blink/public/mojom/service_worker/embedded_worker.mojom.h"
 #include "third_party/blink/public/mojom/service_worker/service_worker.mojom.h"
 #include "third_party/blink/public/mojom/service_worker/service_worker_installed_scripts_manager.mojom.h"
+#include "third_party/blink/public/mojom/usb/web_usb_service.mojom-forward.h"
 #include "third_party/blink/public/mojom/worker/subresource_loader_updater.mojom.h"
 #include "url/gurl.h"
 
@@ -228,13 +230,18 @@
       std::unique_ptr<blink::PendingURLLoaderFactoryBundle> subresource_bundle);
 
   void BindCacheStorage(
-      mojo::PendingReceiver<blink::mojom::CacheStorage> receiver);
+      mojo::PendingReceiver<blink::mojom::CacheStorage> receiver,
+      const storage::BucketLocator& bucket_locator);
 
 #if !BUILDFLAG(IS_ANDROID)
   void BindHidService(const url::Origin& origin,
                       mojo::PendingReceiver<blink::mojom::HidService> receiver);
 #endif  // !BUILDFLAG(IS_ANDROID)
 
+  void BindUsbService(
+      const url::Origin& origin,
+      mojo::PendingReceiver<blink::mojom::WebUsbService> receiver);
+
   base::WeakPtr<EmbeddedWorkerInstance> AsWeakPtr();
 
   // The below can only be called on the UI thread. The returned factory may be
@@ -381,10 +388,20 @@
   mojo::Remote<blink::mojom::SubresourceLoaderUpdater>
       subresource_loader_updater_;
 
+  struct CacheStorageRequest {
+    CacheStorageRequest(
+        mojo::PendingReceiver<blink::mojom::CacheStorage> receiver,
+        storage::BucketLocator bucket);
+    CacheStorageRequest(CacheStorageRequest&& other);
+    ~CacheStorageRequest();
+
+    mojo::PendingReceiver<blink::mojom::CacheStorage> receiver;
+    storage::BucketLocator bucket;
+  };
+
   // Hold in-flight CacheStorage requests. They will be bound when the
   // ServiceWorker COEP header will be known.
-  std::vector<mojo::PendingReceiver<blink::mojom::CacheStorage>>
-      pending_cache_storage_receivers_;
+  std::vector<CacheStorageRequest> pending_cache_storage_requests_;
 
   // COEP Reporter connected to the URLLoaderFactories that handles subresource
   // requests initiated from the service worker. The impl lives on the UI
diff --git a/content/browser/service_worker/service_worker_browsertest.cc b/content/browser/service_worker/service_worker_browsertest.cc
index ecf691af..68b5872 100644
--- a/content/browser/service_worker/service_worker_browsertest.cc
+++ b/content/browser/service_worker/service_worker_browsertest.cc
@@ -2278,7 +2278,8 @@
     network::CrossOriginEmbedderPolicy cross_origin_embedder_policy;
     cache_storage_control->AddReceiver(
         cross_origin_embedder_policy, mojo::NullRemote(),
-        blink::StorageKey(url::Origin::Create(origin)),
+        storage::BucketLocator::ForDefaultBucket(
+            blink::StorageKey(url::Origin::Create(origin))),
         storage::mojom::CacheStorageOwner::kCacheAPI,
         cache_storage_remote.InitWithNewPipeAndPassReceiver());
 
@@ -2541,7 +2542,7 @@
       const network::CrossOriginEmbedderPolicy& cross_origin_embedder_policy,
       mojo::PendingRemote<network::mojom::CrossOriginEmbedderPolicyReporter>
           coep_reporter_remote,
-      const blink::StorageKey& storage_key,
+      const storage::BucketLocator& bucket,
       storage::mojom::CacheStorageOwner owner,
       mojo::PendingReceiver<blink::mojom::CacheStorage> receiver) override {
     // The CodeCacheHostImpl should not try to add a receiver if the StorageKey
diff --git a/content/browser/service_worker/service_worker_host.cc b/content/browser/service_worker/service_worker_host.cc
index fc8809b0..fd87fbf2 100644
--- a/content/browser/service_worker/service_worker_host.cc
+++ b/content/browser/service_worker/service_worker_host.cc
@@ -92,7 +92,9 @@
 void ServiceWorkerHost::BindCacheStorage(
     mojo::PendingReceiver<blink::mojom::CacheStorage> receiver) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
-  version_->embedded_worker()->BindCacheStorage(std::move(receiver));
+  version_->embedded_worker()->BindCacheStorage(
+      std::move(receiver),
+      storage::BucketLocator::ForDefaultBucket(version_->key()));
 }
 
 #if !BUILDFLAG(IS_ANDROID)
@@ -104,6 +106,13 @@
 }
 #endif
 
+void ServiceWorkerHost::BindUsbService(
+    mojo::PendingReceiver<blink::mojom::WebUsbService> receiver) {
+  DCHECK_CURRENTLY_ON(BrowserThread::UI);
+  version_->embedded_worker()->BindUsbService(version_->key().origin(),
+                                              std::move(receiver));
+}
+
 net::NetworkIsolationKey ServiceWorkerHost::GetNetworkIsolationKey() const {
   // TODO(https://crbug.com/1147281): This is the NetworkIsolationKey of a
   // top-level browsing context, which shouldn't be use for ServiceWorkers used
@@ -210,8 +219,8 @@
 void ServiceWorkerHost::BindCacheStorageForBucket(
     const storage::BucketInfo& bucket,
     mojo::PendingReceiver<blink::mojom::CacheStorage> receiver) {
-  // TODO(estade): pass the bucket in order to support non-default buckets.
-  version_->embedded_worker()->BindCacheStorage(std::move(receiver));
+  version_->embedded_worker()->BindCacheStorage(std::move(receiver),
+                                                bucket.ToBucketLocator());
 }
 
 }  // namespace content
diff --git a/content/browser/service_worker/service_worker_host.h b/content/browser/service_worker/service_worker_host.h
index a3ba0ae..ad5dac6 100644
--- a/content/browser/service_worker/service_worker_host.h
+++ b/content/browser/service_worker/service_worker_host.h
@@ -35,6 +35,7 @@
 #include "third_party/blink/public/mojom/service_worker/service_worker_container.mojom.h"
 #include "third_party/blink/public/mojom/service_worker/service_worker_container_type.mojom.h"
 #include "third_party/blink/public/mojom/service_worker/service_worker_provider.mojom.h"
+#include "third_party/blink/public/mojom/usb/web_usb_service.mojom-forward.h"
 #include "third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom.h"
 #include "third_party/blink/public/mojom/webtransport/web_transport_connector.mojom.h"
 #include "url/origin.h"
@@ -93,6 +94,9 @@
   void BindHidService(mojo::PendingReceiver<blink::mojom::HidService> receiver);
 #endif  // !BUILDFLAG(IS_ANDROID)
 
+  void BindUsbService(
+      mojo::PendingReceiver<blink::mojom::WebUsbService> receiver);
+
   content::ServiceWorkerContainerHost* container_host() {
     return container_host_.get();
   }
diff --git a/content/browser/webid/idp_network_request_manager.cc b/content/browser/webid/idp_network_request_manager.cc
index bf011bb..be06e74 100644
--- a/content/browser/webid/idp_network_request_manager.cc
+++ b/content/browser/webid/idp_network_request_manager.cc
@@ -130,10 +130,6 @@
         })");
 }
 
-void AddCsrfHeader(network::ResourceRequest* request) {
-  request->headers.SetHeader(kSecFedCmCsrfHeader, kSecFedCmCsrfHeaderValue);
-}
-
 absl::optional<content::IdentityRequestAccount> ParseAccount(
     const base::Value& account,
     const std::string& client_id) {
@@ -317,6 +313,7 @@
 
 void OnManifestListParsed(
     IdpNetworkRequestManager::FetchManifestListCallback callback,
+    const GURL& manifest_list_url,
     FetchStatus fetch_status,
     data_decoder::DataDecoder::ValueOrError result) {
   if (callback.IsCancelled())
@@ -342,13 +339,17 @@
   }
 
   for (const auto& value : *list) {
-    const std::string* url = value.GetIfString();
-    if (!url) {
+    const std::string* url_str = value.GetIfString();
+    if (!url_str) {
       std::move(callback).Run(FetchStatus::kInvalidResponseError,
                               std::set<GURL>());
       return;
     }
-    urls.insert(GURL(*url));
+    GURL url(*url_str);
+    if (!url.is_valid()) {
+      url = manifest_list_url.Resolve(*url_str);
+    }
+    urls.insert(url);
   }
 
   std::move(callback).Run(FetchStatus::kSuccess, urls);
@@ -544,6 +545,7 @@
   if (!manifest_list_url) {
     base::SequencedTaskRunnerHandle::Get()->PostTask(
         FROM_HERE, base::BindOnce(&OnManifestListParsed, std::move(callback),
+                                  /*manifest_list_url=*/GURL(),
                                   FetchStatus::kHttpNotFoundError,
                                   data_decoder::DataDecoder::ValueOrError()));
     return;
@@ -553,11 +555,11 @@
       CreateUncredentialedResourceRequest(*manifest_list_url,
                                           /*send_referrer=*/false,
                                           /* follow_redirects= */ true);
-  DownloadJsonAndParse(
-      std::move(resource_request),
-      /*url_encoded_post_data=*/absl::nullopt,
-      base::BindOnce(&OnManifestListParsed, std::move(callback)),
-      maxResponseSizeInKiB * 1024);
+  DownloadJsonAndParse(std::move(resource_request),
+                       /*url_encoded_post_data=*/absl::nullopt,
+                       base::BindOnce(&OnManifestListParsed,
+                                      std::move(callback), *manifest_list_url),
+                       maxResponseSizeInKiB * 1024);
 }
 
 void IdpNetworkRequestManager::FetchManifest(
@@ -770,7 +772,6 @@
                                       kResponseBodyContentType);
   resource_request->destination =
       network::mojom::RequestDestination::kWebIdentity;
-  AddCsrfHeader(resource_request.get());
   if (send_referrer) {
     resource_request->referrer = relying_party_origin_.GetURL();
     // Since referrer_policy only affects redirects and we never send a
@@ -803,7 +804,6 @@
   auto resource_request = std::make_unique<network::ResourceRequest>();
   auto target_origin = url::Origin::Create(target_url);
   auto site_for_cookies = net::SiteForCookies::FromOrigin(target_origin);
-  AddCsrfHeader(resource_request.get());
   // We set the initiator to nullopt to denote browser-initiated so that this
   // request is considered first-party. We want to send first-party cookies
   // because this is not a real third-party request as it is mediated by the
diff --git a/content/browser/webid/idp_network_request_manager_unittest.cc b/content/browser/webid/idp_network_request_manager_unittest.cc
index 2de3dd55..e7187470 100644
--- a/content/browser/webid/idp_network_request_manager_unittest.cc
+++ b/content/browser/webid/idp_network_request_manager_unittest.cc
@@ -543,6 +543,20 @@
   "provider_urls": [1]
   })");
   EXPECT_EQ(FetchStatus::kInvalidResponseError, fetch_status);
+
+  // Relative URLs
+  std::tie(fetch_status, urls) = SendManifestListRequestAndWaitForResponse(R"({
+  "provider_urls": ["/fedcm.json"]
+  })");
+  EXPECT_EQ(FetchStatus::kSuccess, fetch_status);
+  EXPECT_EQ(std::set<GURL>{GURL("https://idp.test/fedcm.json")}, urls);
+
+  std::tie(fetch_status, urls) = SendManifestListRequestAndWaitForResponse(R"({
+  "provider_urls": ["fedcm.json"]
+  })");
+  EXPECT_EQ(FetchStatus::kSuccess, fetch_status);
+  EXPECT_EQ(std::set<GURL>{GURL("https://idp.test/.well-known/fedcm.json")},
+            urls);
 }
 
 // Test that the "alpha" value in the "branding" JSON is ignored.
diff --git a/content/browser/webid/webid_browsertest.cc b/content/browser/webid/webid_browsertest.cc
index a452b78..0c1c50e 100644
--- a/content/browser/webid/webid_browsertest.cc
+++ b/content/browser/webid/webid_browsertest.cc
@@ -11,6 +11,7 @@
 #include "base/feature_list.h"
 #include "base/memory/raw_ptr.h"
 #include "base/strings/string_number_conversions.h"
+#include "base/strings/stringprintf.h"
 #include "base/test/scoped_feature_list.h"
 #include "components/network_session_configurator/common/network_switches.h"
 #include "content/browser/webid/fake_identity_request_dialog_controller.h"
@@ -45,14 +46,27 @@
 namespace {
 
 constexpr char kRpHostName[] = "rp.example";
-constexpr char kIdpOrigin[] = "https://idp.example.org";
+
+// Use localhost for IDP so that the manifest list can be fetched from the test
+// server's custom port.
+// IdpNetworkRequestManager::ComputeManifestListUrl() does not enforce a
+// specific port if the IDP is localhost.
+constexpr char kIdpOrigin[] = "https://127.0.0.1";
+
 constexpr char kExpectedManifestPath[] = "/fedcm.json";
+constexpr char kExpectedManifestListPath[] = "/.well-known/web-identity";
 constexpr char kTestContentType[] = "application/json";
 constexpr char kIdpForbiddenHeader[] = "Sec-FedCM-CSRF";
 
 // Token value in //content/test/data/id_token_endpoint.json
 constexpr char kToken[] = "[not a real token]";
 
+bool IsGetRequestWithPath(const HttpRequest& request,
+                          const std::string& expected_path) {
+  return request.method == HttpMethod::METHOD_GET &&
+         request.relative_url == expected_path;
+}
+
 // This class implements the IdP logic, and responds to requests sent to the
 // test HTTP server.
 class IdpTestServer {
@@ -82,11 +96,16 @@
     }
 
     auto response = std::make_unique<BasicHttpResponse>();
-    if (IsManifestRequest(request)) {
+    if (IsGetRequestWithPath(request, kExpectedManifestPath)) {
       BuildManifestResponseFromDetails(*response.get(), manifest_details_);
       return response;
     }
 
+    if (IsGetRequestWithPath(request, kExpectedManifestListPath)) {
+      BuildManifestListResponse(*response.get());
+      return response;
+    }
+
     return nullptr;
   }
 
@@ -95,14 +114,6 @@
   }
 
  private:
-  bool IsManifestRequest(const HttpRequest& request) {
-    if (request.method == HttpMethod::METHOD_GET &&
-        request.relative_url == kExpectedManifestPath) {
-      return true;
-    }
-    return false;
-  }
-
   void BuildManifestResponseFromDetails(BasicHttpResponse& response,
                                         const ManifestDetails& details) {
     std::string content = ConvertToJsonDictionary(
@@ -114,6 +125,14 @@
     response.set_content_type(details.content_type);
   }
 
+  void BuildManifestListResponse(BasicHttpResponse& response) {
+    std::string content = base::StringPrintf("{\"provider_urls\": [\"%s\"]}",
+                                             kExpectedManifestPath);
+    response.set_code(net::HTTP_OK);
+    response.set_content(content);
+    response.set_content_type("application/json");
+  }
+
   std::string ConvertToJsonDictionary(
       const std::map<std::string, std::string>& data) {
     std::string out = "{";
@@ -171,9 +190,7 @@
     // from that used for other IdP transactions, to prevent data leakage.
     features.push_back(net::features::kSplitCacheByNetworkIsolationKey);
     features.push_back(features::kFedCm);
-    // TODO(https://1314987): Test manifest validation.
-    scoped_feature_list_.InitWithFeatures(features,
-                                          {features::kFedCmManifestValidation});
+    scoped_feature_list_.InitWithFeatures(features, {});
 
     command_line->AppendSwitch(switches::kIgnoreCertificateErrors);
   }
diff --git a/content/browser/webui/content_web_ui_configs.cc b/content/browser/webui/content_web_ui_configs.cc
index 8d63a30..93097699 100644
--- a/content/browser/webui/content_web_ui_configs.cc
+++ b/content/browser/webui/content_web_ui_configs.cc
@@ -12,7 +12,7 @@
 #include "content/browser/indexed_db/indexed_db_internals_ui.h"
 #include "content/browser/media/media_internals_ui.h"
 #include "content/browser/metrics/histograms_internals_ui.h"
-#include "content/browser/net/network_errors_listing_ui.h"
+#include "content/browser/network/network_errors_listing_ui.h"
 #include "content/browser/preloading/prerender/prerender_internals_ui.h"
 #include "content/browser/process_internals/process_internals_ui.h"
 #include "content/browser/quota/quota_internals_ui.h"
diff --git a/content/browser/worker_host/dedicated_worker_host.cc b/content/browser/worker_host/dedicated_worker_host.cc
index 2132a20f..922f7b6 100644
--- a/content/browser/worker_host/dedicated_worker_host.cc
+++ b/content/browser/worker_host/dedicated_worker_host.cc
@@ -675,15 +675,9 @@
 void DedicatedWorkerHost::BindCacheStorage(
     mojo::PendingReceiver<blink::mojom::CacheStorage> receiver) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
-  mojo::PendingRemote<network::mojom::CrossOriginEmbedderPolicyReporter>
-      coep_reporter;
-  if (GetWorkerCoepReporter()) {
-    GetWorkerCoepReporter()->Clone(
-        coep_reporter.InitWithNewPipeAndPassReceiver());
-  }
-  worker_process_host_->BindCacheStorage(cross_origin_embedder_policy(),
-                                         std::move(coep_reporter),
-                                         GetStorageKey(), std::move(receiver));
+  BindCacheStorageInternal(
+      std::move(receiver),
+      storage::BucketLocator::ForDefaultBucket(GetStorageKey()));
 }
 
 void DedicatedWorkerHost::CreateNestedDedicatedWorker(
@@ -994,9 +988,22 @@
 void DedicatedWorkerHost::BindCacheStorageForBucket(
     const storage::BucketInfo& bucket,
     mojo::PendingReceiver<blink::mojom::CacheStorage> receiver) {
-  // TODO(estade): pass the bucket rather than the storage key to support
-  // non-default buckets.
-  BindCacheStorage(std::move(receiver));
+  DCHECK_CURRENTLY_ON(BrowserThread::UI);
+  BindCacheStorageInternal(std::move(receiver), bucket.ToBucketLocator());
+}
+
+void DedicatedWorkerHost::BindCacheStorageInternal(
+    mojo::PendingReceiver<blink::mojom::CacheStorage> receiver,
+    const storage::BucketLocator& bucket_locator) {
+  mojo::PendingRemote<network::mojom::CrossOriginEmbedderPolicyReporter>
+      coep_reporter;
+  if (GetWorkerCoepReporter()) {
+    GetWorkerCoepReporter()->Clone(
+        coep_reporter.InitWithNewPipeAndPassReceiver());
+  }
+  worker_process_host_->BindCacheStorage(cross_origin_embedder_policy(),
+                                         std::move(coep_reporter),
+                                         bucket_locator, std::move(receiver));
 }
 
 blink::scheduler::WebSchedulerTrackedFeatures
diff --git a/content/browser/worker_host/dedicated_worker_host.h b/content/browser/worker_host/dedicated_worker_host.h
index 75fd5c90..ffd23d4 100644
--- a/content/browser/worker_host/dedicated_worker_host.h
+++ b/content/browser/worker_host/dedicated_worker_host.h
@@ -138,6 +138,9 @@
       mojo::PendingReceiver<blink::mojom::WakeLockService> receiver);
   void BindCacheStorage(
       mojo::PendingReceiver<blink::mojom::CacheStorage> receiver);
+  void BindCacheStorageInternal(
+      mojo::PendingReceiver<blink::mojom::CacheStorage> receiver,
+      const storage::BucketLocator& bucket_locator);
   void CreateCodeCacheHost(
       mojo::PendingReceiver<blink::mojom::CodeCacheHost> receiver);
   void CreateBroadcastChannelProvider(
diff --git a/content/browser/worker_host/dedicated_worker_host_factory_impl.h b/content/browser/worker_host/dedicated_worker_host_factory_impl.h
index ce4bfd81..ff5ab666 100644
--- a/content/browser/worker_host/dedicated_worker_host_factory_impl.h
+++ b/content/browser/worker_host/dedicated_worker_host_factory_impl.h
@@ -5,7 +5,7 @@
 #ifndef CONTENT_BROWSER_WORKER_HOST_DEDICATED_WORKER_HOST_FACTORY_IMPL_H_
 #define CONTENT_BROWSER_WORKER_HOST_DEDICATED_WORKER_HOST_FACTORY_IMPL_H_
 
-#include "content/browser/net/cross_origin_embedder_policy_reporter.h"
+#include "content/browser/network/cross_origin_embedder_policy_reporter.h"
 #include "content/common/content_export.h"
 #include "content/public/browser/global_routing_id.h"
 #include "mojo/public/cpp/bindings/pending_remote.h"
diff --git a/content/browser/worker_host/shared_worker_host.cc b/content/browser/worker_host/shared_worker_host.cc
index d6c6185..a1f159b 100644
--- a/content/browser/worker_host/shared_worker_host.cc
+++ b/content/browser/worker_host/shared_worker_host.cc
@@ -16,7 +16,7 @@
 #include "content/browser/code_cache/generated_code_cache_context.h"
 #include "content/browser/devtools/devtools_instrumentation.h"
 #include "content/browser/devtools/shared_worker_devtools_manager.h"
-#include "content/browser/net/cross_origin_embedder_policy_reporter.h"
+#include "content/browser/network/cross_origin_embedder_policy_reporter.h"
 #include "content/browser/renderer_host/code_cache_host_impl.h"
 #include "content/browser/renderer_host/private_network_access_util.h"
 #include "content/browser/renderer_host/render_frame_host_impl.h"
@@ -449,9 +449,22 @@
 void SharedWorkerHost::BindCacheStorageForBucket(
     const storage::BucketInfo& bucket,
     mojo::PendingReceiver<blink::mojom::CacheStorage> receiver) {
-  // TODO(estade): pass the bucket rather than the storage key to support
-  // non-default buckets.
-  BindCacheStorage(std::move(receiver));
+  DCHECK_CURRENTLY_ON(BrowserThread::UI);
+  BindCacheStorageInternal(std::move(receiver), bucket.ToBucketLocator());
+}
+
+void SharedWorkerHost::BindCacheStorageInternal(
+    mojo::PendingReceiver<blink::mojom::CacheStorage> receiver,
+    const storage::BucketLocator& bucket_locator) {
+  mojo::PendingRemote<network::mojom::CrossOriginEmbedderPolicyReporter>
+      coep_reporter;
+  if (coep_reporter_) {
+    coep_reporter_->Clone(coep_reporter.InitWithNewPipeAndPassReceiver());
+  }
+
+  GetProcessHost()->BindCacheStorage(cross_origin_embedder_policy(),
+                                     std::move(coep_reporter), bucket_locator,
+                                     std::move(receiver));
 }
 
 void SharedWorkerHost::AllowFileSystem(
@@ -498,16 +511,9 @@
 void SharedWorkerHost::BindCacheStorage(
     mojo::PendingReceiver<blink::mojom::CacheStorage> receiver) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
-
-  mojo::PendingRemote<network::mojom::CrossOriginEmbedderPolicyReporter>
-      coep_reporter;
-  if (coep_reporter_) {
-    coep_reporter_->Clone(coep_reporter.InitWithNewPipeAndPassReceiver());
-  }
-
-  GetProcessHost()->BindCacheStorage(cross_origin_embedder_policy(),
-                                     std::move(coep_reporter), GetStorageKey(),
-                                     std::move(receiver));
+  BindCacheStorageInternal(
+      std::move(receiver),
+      storage::BucketLocator::ForDefaultBucket(GetStorageKey()));
 }
 
 void SharedWorkerHost::CreateBroadcastChannelProvider(
diff --git a/content/browser/worker_host/shared_worker_host.h b/content/browser/worker_host/shared_worker_host.h
index 9e48c55e..c98a8be 100644
--- a/content/browser/worker_host/shared_worker_host.h
+++ b/content/browser/worker_host/shared_worker_host.h
@@ -265,6 +265,10 @@
   void OnClientConnectionLost();
   void OnWorkerConnectionLost();
 
+  void BindCacheStorageInternal(
+      mojo::PendingReceiver<blink::mojom::CacheStorage> receiver,
+      const storage::BucketLocator& bucket_locator);
+
   // Creates a network factory for subresource requests from this worker. The
   // network factory is meant to be passed to the renderer.
   mojo::PendingRemote<network::mojom::URLLoaderFactory>
diff --git a/content/common/BUILD.gn b/content/common/BUILD.gn
index e9acf39..bcc0a45 100644
--- a/content/common/BUILD.gn
+++ b/content/common/BUILD.gn
@@ -448,11 +448,6 @@
   # This interface is internal to content.
   visibility = [ "//content/*" ]
 
-  # indexed_db.mojom used a native typemap that was not available in Java.
-  # indexed_db.mojom was removed in an earlier commit.  This should be removed
-  # at some point.
-  cpp_only = true
-
   disable_variants = true
 
   sources = [
diff --git a/content/common/partition_alloc_support.cc b/content/common/partition_alloc_support.cc
index 51038f42..59fd482 100644
--- a/content/common/partition_alloc_support.cc
+++ b/content/common/partition_alloc_support.cc
@@ -467,7 +467,7 @@
   }
 
   if (!base::FeatureList::IsEnabled(
-          features::kLowerMemoryLimitForNonMainRenderers) ||
+          features::kLowerPAMemoryLimitForNonMainRenderers) ||
       has_main_frame)
     ::partition_alloc::ThreadCache::SetLargestCachedSize(largest_cached_size_);
 #endif  // defined(PA_THREAD_CACHE_SUPPORTED) &&
diff --git a/content/public/android/junit/src/org/chromium/content/browser/androidoverlay/DialogOverlayCoreTest.java b/content/public/android/junit/src/org/chromium/content/browser/androidoverlay/DialogOverlayCoreTest.java
index 0af5c0f98..7287f4635 100644
--- a/content/public/android/junit/src/org/chromium/content/browser/androidoverlay/DialogOverlayCoreTest.java
+++ b/content/public/android/junit/src/org/chromium/content/browser/androidoverlay/DialogOverlayCoreTest.java
@@ -17,9 +17,6 @@
 import android.view.SurfaceHolder;
 import android.view.WindowManager;
 
-// TODO(liberato): prior to M, this was ...policy.impl.PhoneWindow
-import com.android.internal.policy.PhoneWindow;
-
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -66,9 +63,8 @@
 
     /**
      * Robolectric shadow for PhoneWindow.  This one keeps track of takeSurface() calls.
-     * TODO(liberato): the @Impl specifies 'minSdk=M' in the robolectric source.
      */
-    @Implements(value = PhoneWindow.class, isInAndroidSdk = false)
+    @Implements(className = "com.android.internal.policy.PhoneWindow", isInAndroidSdk = false)
     public static class MyPhoneWindowShadow extends ShadowPhoneWindow {
         public MyPhoneWindowShadow() {}
 
diff --git a/content/public/android/junit/src/org/chromium/content/browser/input/TextInputStateTest.java b/content/public/android/junit/src/org/chromium/content/browser/input/TextInputStateTest.java
index 7ecd6b44..b094221 100644
--- a/content/public/android/junit/src/org/chromium/content/browser/input/TextInputStateTest.java
+++ b/content/public/android/junit/src/org/chromium/content/browser/input/TextInputStateTest.java
@@ -10,14 +10,14 @@
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.junit.runners.BlockJUnit4ClassRunner;
 
 import org.chromium.base.test.util.Feature;
+import org.chromium.testing.local.LocalRobolectricTestRunner;
 
 /**
  * Unit tests for {@TextInputState}.
  */
-@RunWith(BlockJUnit4ClassRunner.class)
+@RunWith(LocalRobolectricTestRunner.class)
 public class TextInputStateTest {
     @Test
     @Feature({"TextInput"})
diff --git a/content/public/browser/BUILD.gn b/content/public/browser/BUILD.gn
index 9687a62..7850414 100644
--- a/content/public/browser/BUILD.gn
+++ b/content/public/browser/BUILD.gn
@@ -143,8 +143,6 @@
     "devtools_manager_delegate.cc",
     "devtools_manager_delegate.h",
     "devtools_network_transaction_factory.h",
-    "devtools_permission_overrides.cc",
-    "devtools_permission_overrides.h",
     "devtools_socket_factory.h",
     "disallow_activation_reason.h",
     "document_picture_in_picture_window_controller.h",
@@ -288,6 +286,8 @@
     "permission_controller.h",
     "permission_controller_delegate.cc",
     "permission_controller_delegate.h",
+    "permission_overrides.cc",
+    "permission_overrides.h",
     "permission_result.cc",
     "permission_result.h",
     "picture_in_picture_window_controller.h",
diff --git a/content/public/browser/permission_controller_delegate.cc b/content/public/browser/permission_controller_delegate.cc
index 38950be..f9fecad7 100644
--- a/content/public/browser/permission_controller_delegate.cc
+++ b/content/public/browser/permission_controller_delegate.cc
@@ -8,7 +8,7 @@
 
 namespace content {
 
-bool PermissionControllerDelegate::IsPermissionOverridableByDevTools(
+bool PermissionControllerDelegate::IsPermissionOverridable(
     blink::PermissionType permission,
     const absl::optional<url::Origin>& origin) {
   return true;
diff --git a/content/public/browser/permission_controller_delegate.h b/content/public/browser/permission_controller_delegate.h
index b5897086..38e384ce 100644
--- a/content/public/browser/permission_controller_delegate.h
+++ b/content/public/browser/permission_controller_delegate.h
@@ -7,12 +7,15 @@
 
 #include "base/types/id_type.h"
 #include "content/common/content_export.h"
-#include "content/public/browser/devtools_permission_overrides.h"
 #include "content/public/browser/permission_result.h"
 #include "third_party/blink/public/mojom/permissions/permission_status.mojom.h"
 
 class GURL;
 
+namespace url {
+class Origin;
+}
+
 namespace blink {
 enum class PermissionType;
 }
@@ -129,9 +132,8 @@
   virtual void UnsubscribePermissionStatusChange(
       SubscriptionId subscription_id) = 0;
 
-  // Returns whether permission can be overridden by
-  // DevToolsPermissionOverrides.
-  virtual bool IsPermissionOverridableByDevTools(
+  // Returns whether permission can be overridden.
+  virtual bool IsPermissionOverridable(
       blink::PermissionType permission,
       const absl::optional<url::Origin>& origin);
 };
diff --git a/content/public/browser/devtools_permission_overrides.cc b/content/public/browser/permission_overrides.cc
similarity index 68%
rename from content/public/browser/devtools_permission_overrides.cc
rename to content/public/browser/permission_overrides.cc
index a92fcc9..b8d1b67 100644
--- a/content/public/browser/devtools_permission_overrides.cc
+++ b/content/public/browser/permission_overrides.cc
@@ -2,27 +2,26 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "content/public/browser/devtools_permission_overrides.h"
+#include "content/public/browser/permission_overrides.h"
 
 #include "base/no_destructor.h"
 #include "third_party/blink/public/common/permissions/permission_utils.h"
 
 namespace content {
-using PermissionOverrides = DevToolsPermissionOverrides::PermissionOverrides;
+using PermissionOverridesMap =
+    base::flat_map<blink::PermissionType, blink::mojom::PermissionStatus>;
 using PermissionStatus = blink::mojom::PermissionStatus;
 
-DevToolsPermissionOverrides::DevToolsPermissionOverrides() = default;
-DevToolsPermissionOverrides::~DevToolsPermissionOverrides() = default;
-DevToolsPermissionOverrides::DevToolsPermissionOverrides(
-    DevToolsPermissionOverrides&& other) = default;
-DevToolsPermissionOverrides& DevToolsPermissionOverrides::operator=(
-    DevToolsPermissionOverrides&& other) = default;
+PermissionOverrides::PermissionOverrides() = default;
+PermissionOverrides::~PermissionOverrides() = default;
+PermissionOverrides::PermissionOverrides(PermissionOverrides&& other) = default;
+PermissionOverrides& PermissionOverrides::operator=(
+    PermissionOverrides&& other) = default;
 
-void DevToolsPermissionOverrides::Set(
-    const absl::optional<url::Origin>& origin,
-    blink::PermissionType permission,
-    const blink::mojom::PermissionStatus& status) {
-  PermissionOverrides& origin_overrides =
+void PermissionOverrides::Set(const absl::optional<url::Origin>& origin,
+                              blink::PermissionType permission,
+                              const blink::mojom::PermissionStatus& status) {
+  PermissionOverridesMap& origin_overrides =
       overrides_[origin.value_or(global_overrides_origin_)];
   origin_overrides[permission] = status;
 
@@ -38,7 +37,7 @@
   }
 }
 
-absl::optional<PermissionStatus> DevToolsPermissionOverrides::Get(
+absl::optional<PermissionStatus> PermissionOverrides::Get(
     const url::Origin& origin,
     blink::PermissionType permission) const {
   auto current_override = overrides_.find(origin);
@@ -53,9 +52,9 @@
   return absl::nullopt;
 }
 
-const PermissionOverrides& DevToolsPermissionOverrides::GetAll(
+const PermissionOverridesMap& PermissionOverrides::GetAllForTest(
     const absl::optional<url::Origin>& origin) const {
-  static const base::NoDestructor<PermissionOverrides> empty_overrides;
+  static const base::NoDestructor<PermissionOverridesMap> empty_overrides;
   auto it = origin ? overrides_.find(*origin) : overrides_.end();
   if (it == overrides_.end())
     it = overrides_.find(global_overrides_origin_);
@@ -64,17 +63,16 @@
   return it->second;
 }
 
-void DevToolsPermissionOverrides::Reset(
-    const absl::optional<url::Origin>& origin) {
+void PermissionOverrides::Reset(const absl::optional<url::Origin>& origin) {
   overrides_.erase(origin.value_or(global_overrides_origin_));
 }
 
-void DevToolsPermissionOverrides::GrantPermissions(
+void PermissionOverrides::GrantPermissions(
     const absl::optional<url::Origin>& origin,
     const std::vector<blink::PermissionType>& permissions) {
   const std::vector<blink::PermissionType>& kAllPermissionTypes =
       blink::GetAllPermissionTypes();
-  PermissionOverrides granted_overrides;
+  PermissionOverridesMap granted_overrides;
   for (const auto& permission : kAllPermissionTypes)
     granted_overrides[permission] = PermissionStatus::DENIED;
   for (const auto& permission : permissions)
diff --git a/content/public/browser/devtools_permission_overrides.h b/content/public/browser/permission_overrides.h
similarity index 68%
rename from content/public/browser/devtools_permission_overrides.h
rename to content/public/browser/permission_overrides.h
index c3e1dda..da8cb46 100644
--- a/content/public/browser/devtools_permission_overrides.h
+++ b/content/public/browser/permission_overrides.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 CONTENT_PUBLIC_BROWSER_DEVTOOLS_PERMISSION_OVERRIDES_H_
-#define CONTENT_PUBLIC_BROWSER_DEVTOOLS_PERMISSION_OVERRIDES_H_
+#ifndef CONTENT_PUBLIC_BROWSER_PERMISSION_OVERRIDES_H_
+#define CONTENT_PUBLIC_BROWSER_PERMISSION_OVERRIDES_H_
 
 #include <vector>
 
@@ -20,19 +20,15 @@
 namespace content {
 
 // Maintains permission overrides for each origin.
-class CONTENT_EXPORT DevToolsPermissionOverrides {
+class CONTENT_EXPORT PermissionOverrides {
  public:
-  explicit DevToolsPermissionOverrides();
-  ~DevToolsPermissionOverrides();
-  DevToolsPermissionOverrides(DevToolsPermissionOverrides&& other);
-  DevToolsPermissionOverrides& operator=(DevToolsPermissionOverrides&& other);
+  PermissionOverrides();
+  ~PermissionOverrides();
+  PermissionOverrides(PermissionOverrides&& other);
+  PermissionOverrides& operator=(PermissionOverrides&& other);
 
-  DevToolsPermissionOverrides(const DevToolsPermissionOverrides&) = delete;
-  DevToolsPermissionOverrides& operator=(const DevToolsPermissionOverrides&) =
-      delete;
-
-  using PermissionOverrides =
-      base::flat_map<blink::PermissionType, blink::mojom::PermissionStatus>;
+  PermissionOverrides(const PermissionOverrides&) = delete;
+  PermissionOverrides& operator=(const PermissionOverrides&) = delete;
 
   // Set permission override for |permission| at |origin| to |status|.
   // Null |origin| specifies global overrides.
@@ -48,8 +44,8 @@
   // Get all overrides for particular |origin|, stored in |overrides|
   // if found. Will return empty overrides if none previously existed. Returns
   // global overrides when |origin| is nullptr.
-  const PermissionOverrides& GetAll(
-      const absl::optional<url::Origin>& origin) const;
+  const base::flat_map<blink::PermissionType, blink::mojom::PermissionStatus>&
+  GetAllForTest(const absl::optional<url::Origin>& origin) const;
 
   // Resets overrides for |origin|.
   // Null |origin| resets global overrides.
@@ -63,9 +59,12 @@
 
  private:
   url::Origin global_overrides_origin_;
-  base::flat_map<url::Origin, PermissionOverrides> overrides_;
+  base::flat_map<
+      url::Origin,
+      base::flat_map<blink::PermissionType, blink::mojom::PermissionStatus>>
+      overrides_;
 };
 
 }  // namespace content
 
-#endif  // CONTENT_PUBLIC_BROWSER_DEVTOOLS_PERMISSION_OVERRIDES_H_
+#endif  // CONTENT_PUBLIC_BROWSER_PERMISSION_OVERRIDES_H_
diff --git a/content/public/browser/render_process_host.h b/content/public/browser/render_process_host.h
index e272cec..6c57ccb 100644
--- a/content/public/browser/render_process_host.h
+++ b/content/public/browser/render_process_host.h
@@ -82,6 +82,10 @@
 struct CrossOriginEmbedderPolicy;
 }  // namespace network
 
+namespace storage {
+struct BucketLocator;
+}
+
 namespace url {
 class Origin;
 }  // namespace url
@@ -562,7 +566,7 @@
       const network::CrossOriginEmbedderPolicy& cross_origin_embedder_policy,
       mojo::PendingRemote<network::mojom::CrossOriginEmbedderPolicyReporter>
           coep_reporter_remote,
-      const blink::StorageKey& storage_key,
+      const storage::BucketLocator& bucket_locator,
       mojo::PendingReceiver<blink::mojom::CacheStorage> receiver) = 0;
   virtual void BindFileSystemManager(
       const blink::StorageKey& storage_key,
diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc
index 3dcec3ba..d56ebb4 100644
--- a/content/public/common/content_features.cc
+++ b/content/public/common/content_features.cc
@@ -611,8 +611,11 @@
 
 // Configures whether we set a lower limit for renderers that do not have a main
 // frame, similar to the limit that is already done for backgrounded renderers.
-BASE_FEATURE(kLowerMemoryLimitForNonMainRenderers,
-             "LowerMemoryLimitForNonMainRenderers",
+BASE_FEATURE(kLowerPAMemoryLimitForNonMainRenderers,
+             "LowerPAMemoryLimitForNonMainRenderers",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+BASE_FEATURE(kLowerV8MemoryLimitForNonMainRenderers,
+             "LowerV8MemoryLimitForNonMainRenderers",
              base::FEATURE_DISABLED_BY_DEFAULT);
 
 // The MBI mode controls whether or not communication over the
diff --git a/content/public/common/content_features.h b/content/public/common/content_features.h
index 40fc920e..7580b66 100644
--- a/content/public/common/content_features.h
+++ b/content/public/common/content_features.h
@@ -137,7 +137,8 @@
 CONTENT_EXPORT BASE_DECLARE_FEATURE(kLazyInitializeMediaControls);
 CONTENT_EXPORT BASE_DECLARE_FEATURE(kLegacyWindowsDWriteFontFallback);
 CONTENT_EXPORT BASE_DECLARE_FEATURE(kLogJsConsoleMessages);
-CONTENT_EXPORT BASE_DECLARE_FEATURE(kLowerMemoryLimitForNonMainRenderers);
+CONTENT_EXPORT BASE_DECLARE_FEATURE(kLowerPAMemoryLimitForNonMainRenderers);
+CONTENT_EXPORT BASE_DECLARE_FEATURE(kLowerV8MemoryLimitForNonMainRenderers);
 CONTENT_EXPORT BASE_DECLARE_FEATURE(kMBIMode);
 enum class MBIMode {
   // In this mode, the AgentSchedulingGroup will use the process-wide legacy IPC
diff --git a/content/public/test/mock_render_process_host.cc b/content/public/test/mock_render_process_host.cc
index 2df370a..5969604 100644
--- a/content/public/test/mock_render_process_host.cc
+++ b/content/public/test/mock_render_process_host.cc
@@ -536,7 +536,7 @@
 void MockRenderProcessHost::BindCacheStorage(
     const network::CrossOriginEmbedderPolicy&,
     mojo::PendingRemote<network::mojom::CrossOriginEmbedderPolicyReporter>,
-    const blink::StorageKey& storage_key,
+    const storage::BucketLocator& bucket_locator,
     mojo::PendingReceiver<blink::mojom::CacheStorage> receiver) {
   cache_storage_receiver_ = std::move(receiver);
 }
diff --git a/content/public/test/mock_render_process_host.h b/content/public/test/mock_render_process_host.h
index f759992..142e10e 100644
--- a/content/public/test/mock_render_process_host.h
+++ b/content/public/test/mock_render_process_host.h
@@ -207,7 +207,7 @@
   void BindCacheStorage(
       const network::CrossOriginEmbedderPolicy&,
       mojo::PendingRemote<network::mojom::CrossOriginEmbedderPolicyReporter>,
-      const blink::StorageKey& storage_key,
+      const storage::BucketLocator& bucket,
       mojo::PendingReceiver<blink::mojom::CacheStorage> receiver) override;
   void BindFileSystemManager(
       const blink::StorageKey& storage_key,
diff --git a/content/public/test/devtools_permission_overrides_unittest.cc b/content/public/test/permission_overrides_unittest.cc
similarity index 84%
rename from content/public/test/devtools_permission_overrides_unittest.cc
rename to content/public/test/permission_overrides_unittest.cc
index 39e95853..9d51ceb 100644
--- a/content/public/test/devtools_permission_overrides_unittest.cc
+++ b/content/public/test/permission_overrides_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 "content/public/browser/devtools_permission_overrides.h"
+#include "content/public/browser/permission_overrides.h"
 
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -16,18 +16,17 @@
 namespace {
 using blink::PermissionType;
 using blink::mojom::PermissionStatus;
-using PermissionOverrides = DevToolsPermissionOverrides::PermissionOverrides;
 using url::Origin;
 
-TEST(DevToolsPermissionOverridesTest, GetOriginNoOverrides) {
-  DevToolsPermissionOverrides overrides;
+TEST(PermissionOverridesTest, GetOriginNoOverrides) {
+  PermissionOverrides overrides;
   Origin url = Origin::Create(GURL("https://google.com/search?q=foo"));
 
   EXPECT_FALSE(overrides.Get(url, PermissionType::GEOLOCATION).has_value());
 }
 
-TEST(DevToolsPermissionOverridesTests, SetMidi) {
-  DevToolsPermissionOverrides overrides;
+TEST(PermissionOverridesTests, SetMidi) {
+  PermissionOverrides overrides;
   Origin url = Origin::Create(GURL("https://google.com/"));
   overrides.Set(url, PermissionType::MIDI_SYSEX, PermissionStatus::GRANTED);
 
@@ -52,8 +51,8 @@
             PermissionStatus::DENIED);
 }
 
-TEST(DevToolsPermissionOverridesTest, GetBasic) {
-  DevToolsPermissionOverrides overrides;
+TEST(PermissionOverridesTest, GetBasic) {
+  PermissionOverrides overrides;
   Origin url = Origin::Create(GURL("https://google.com/search?q=foo"));
   overrides.Set(url, PermissionType::GEOLOCATION, PermissionStatus::GRANTED);
 
@@ -61,8 +60,8 @@
             PermissionStatus::GRANTED);
 }
 
-TEST(DevToolsPermissionOverridesTest, GetAllStates) {
-  DevToolsPermissionOverrides overrides;
+TEST(PermissionOverridesTest, GetAllStates) {
+  PermissionOverrides overrides;
   Origin url = Origin::Create(GURL("https://google.com/search?q=foo"));
 
   // Override some settings.
@@ -81,8 +80,8 @@
             PermissionStatus::ASK);
 }
 
-TEST(DevToolsPermissionOverridesTest, GetReturnsNullOptionalIfMissingOverride) {
-  DevToolsPermissionOverrides overrides;
+TEST(PermissionOverridesTest, GetReturnsNullOptionalIfMissingOverride) {
+  PermissionOverrides overrides;
   Origin url = Origin::Create(GURL("https://google.com/search?q=foo"));
 
   // Override some settings.
@@ -100,12 +99,13 @@
                    .has_value());
 }
 
-TEST(DevToolsPermissionOverridesTest, GetAllOverrides) {
-  DevToolsPermissionOverrides overrides;
+TEST(PermissionOverridesTest, GetAllOverrides) {
+  PermissionOverrides overrides;
   Origin url = Origin::Create(GURL("https://google.com/search?q=foo"));
 
   // Override some settings.
-  PermissionOverrides expected_override_for_origin;
+  base::flat_map<blink::PermissionType, blink::mojom::PermissionStatus>
+      expected_override_for_origin;
   expected_override_for_origin[PermissionType::GEOLOCATION] =
       PermissionStatus::GRANTED;
   expected_override_for_origin[PermissionType::NOTIFICATIONS] =
@@ -117,13 +117,15 @@
   overrides.Set(url, PermissionType::NOTIFICATIONS, PermissionStatus::DENIED);
   overrides.Set(url, PermissionType::AUDIO_CAPTURE, PermissionStatus::ASK);
 
-  EXPECT_THAT(overrides.GetAll(url), testing::Eq(expected_override_for_origin));
-  EXPECT_THAT(overrides.GetAll(Origin::Create(GURL("https://imgur.com/"))),
-              testing::IsEmpty());
+  EXPECT_THAT(overrides.GetAllForTest(url),
+              testing::Eq(expected_override_for_origin));
+  EXPECT_THAT(
+      overrides.GetAllForTest(Origin::Create(GURL("https://imgur.com/"))),
+      testing::IsEmpty());
 }
 
-TEST(DevToolsPermissionOverridesTest, SameOriginSameOverrides) {
-  DevToolsPermissionOverrides overrides;
+TEST(PermissionOverridesTest, SameOriginSameOverrides) {
+  PermissionOverrides overrides;
   Origin url = Origin::Create(GURL("https://google.com/search?q=foo"));
 
   // Override some settings.
@@ -139,8 +141,8 @@
             PermissionStatus::ASK);
 }
 
-TEST(DevToolsPermissionOverridesTest, DifferentOriginExpectations) {
-  DevToolsPermissionOverrides overrides;
+TEST(PermissionOverridesTest, DifferentOriginExpectations) {
+  PermissionOverrides overrides;
   Origin url = Origin::Create(GURL("https://google.com/search?q=foo"));
 
   // Override some settings.
@@ -161,8 +163,8 @@
                    .has_value());
 }
 
-TEST(DevToolsPermissionOverridesTest, DifferentOriginsDifferentOverrides) {
-  DevToolsPermissionOverrides overrides;
+TEST(PermissionOverridesTest, DifferentOriginsDifferentOverrides) {
+  PermissionOverrides overrides;
   Origin first_url = Origin::Create(GURL("https://google.com/search?q=foo"));
   Origin second_url = Origin::Create(GURL("https://tumblr.com/fizz_buzz"));
 
@@ -183,8 +185,8 @@
       overrides.Get(second_url, PermissionType::GEOLOCATION).has_value());
 }
 
-TEST(DevToolsPermissionOverridesTest, ResetOneOrigin) {
-  DevToolsPermissionOverrides overrides;
+TEST(PermissionOverridesTest, ResetOneOrigin) {
+  PermissionOverrides overrides;
   Origin url = Origin::Create(GURL("https://google.com/search?q=foo"));
   Origin other_url = Origin::Create(GURL("https://pinterest.com/index.php"));
 
@@ -202,8 +204,8 @@
             PermissionStatus::GRANTED);
 }
 
-TEST(DevToolsPermissionOverridesTest, GrantPermissionsSetsSomeBlocksRest) {
-  DevToolsPermissionOverrides overrides;
+TEST(PermissionOverridesTest, GrantPermissionsSetsSomeBlocksRest) {
+  PermissionOverrides overrides;
   Origin url = Origin::Create(GURL("https://google.com/search?q=all"));
 
   overrides.GrantPermissions(
diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc
index 11d73308..17b6280 100644
--- a/content/renderer/render_thread_impl.cc
+++ b/content/renderer/render_thread_impl.cc
@@ -1658,7 +1658,11 @@
 }
 
 void RenderThreadImpl::OnRendererHidden() {
-  blink::MainThreadIsolate()->IsolateInBackgroundNotification();
+  if (!base::FeatureList::IsEnabled(
+          features::kLowerV8MemoryLimitForNonMainRenderers) ||
+      MainFrameCounter::has_main_frame()) {
+    blink::MainThreadIsolate()->IsolateInBackgroundNotification();
+  }
   // TODO(rmcilroy): Remove IdleHandler and replace it with an IdleTask
   // scheduled by the RendererScheduler - http://crbug.com/469210.
   if (!GetContentClient()->renderer()->RunIdleHandlerWhenWidgetsHidden())
diff --git a/content/shell/browser/shell_permission_manager.cc b/content/shell/browser/shell_permission_manager.cc
index 4ff209c7..a4fea6a 100644
--- a/content/shell/browser/shell_permission_manager.cc
+++ b/content/shell/browser/shell_permission_manager.cc
@@ -13,6 +13,7 @@
 #include "content/shell/common/shell_switches.h"
 #include "media/base/media_switches.h"
 #include "third_party/blink/public/common/permissions/permission_utils.h"
+#include "url/origin.h"
 
 using blink::PermissionType;
 
diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn
index ed9dbd2..45e3148 100644
--- a/content/test/BUILD.gn
+++ b/content/test/BUILD.gn
@@ -1341,20 +1341,20 @@
     "../browser/native_io/native_io_manager_browsertest.cc",
     "../browser/navigation_browsertest.cc",
     "../browser/navigation_mhtml_browsertest.cc",
-    "../browser/net/accept_header_browsertest.cc",
-    "../browser/net/dns_https_protocol_upgrade_browsertest.cc",
-    "../browser/net/http_cookie_browsertest.cc",
-    "../browser/net/network_field_trial_browsertest.cc",
-    "../browser/net/network_service_memory_cache_browsertest.cc",
-    "../browser/net/sandboxed_http_cache_browsertest.cc",
-    "../browser/net/sandboxed_nqe_browsertest.cc",
-    "../browser/net/sandboxed_socket_broker_browsertest.cc",
-    "../browser/net/split_cache_browsertest.cc",
-    "../browser/net/transferable_socket_browsertest.cc",
-    "../browser/net/trust_token_browsertest.cc",
-    "../browser/net/trust_token_browsertest.h",
-    "../browser/net/trust_token_origin_trial_browsertest.cc",
-    "../browser/net/trust_token_parameters_browsertest.cc",
+    "../browser/network/accept_header_browsertest.cc",
+    "../browser/network/dns_https_protocol_upgrade_browsertest.cc",
+    "../browser/network/http_cookie_browsertest.cc",
+    "../browser/network/network_field_trial_browsertest.cc",
+    "../browser/network/network_service_memory_cache_browsertest.cc",
+    "../browser/network/sandboxed_http_cache_browsertest.cc",
+    "../browser/network/sandboxed_nqe_browsertest.cc",
+    "../browser/network/sandboxed_socket_broker_browsertest.cc",
+    "../browser/network/split_cache_browsertest.cc",
+    "../browser/network/transferable_socket_browsertest.cc",
+    "../browser/network/trust_token_browsertest.cc",
+    "../browser/network/trust_token_browsertest.h",
+    "../browser/network/trust_token_origin_trial_browsertest.cc",
+    "../browser/network/trust_token_parameters_browsertest.cc",
     "../browser/net_info_browsertest.cc",
     "../browser/network_service_browsertest.cc",
     "../browser/network_service_restart_browsertest.cc",
@@ -1541,7 +1541,7 @@
 
   if (enable_reporting) {
     sources +=
-        [ "../browser/net/cross_origin_opener_policy_reporting_browsertest.cc" ]
+        [ "../browser/network/cross_origin_opener_policy_reporting_browsertest.cc" ]
   }
 
   if (use_viz_debugger) {
@@ -1790,7 +1790,7 @@
       "../browser/accessibility/ax_platform_node_textrangeprovider_win_browsertest.cc",
       "../browser/accessibility/ax_platform_node_win_browsertest.cc",
       "../browser/accessibility/hit_testing_win_browsertest.cc",
-      "../browser/net/network_service_process_tracker_win_browsertest.cc",
+      "../browser/network/network_service_process_tracker_win_browsertest.cc",
       "../browser/renderer_host/accessibility_object_lifetime_win_browsertest.cc",
       "../browser/renderer_host/accessibility_tree_linkage_win_browsertest.cc",
       "../browser/renderer_host/direct_manipulation_test_helper_win.cc",
@@ -2304,10 +2304,10 @@
     "../browser/mojo_binder_policy_applier_unittest.cc",
     "../browser/mojo_binder_policy_map_impl_unittest.cc",
     "../browser/native_io/native_io_manager_unittest.cc",
-    "../browser/net/cross_origin_embedder_policy_reporter_unittest.cc",
-    "../browser/net/cross_origin_opener_policy_reporter_unittest.cc",
-    "../browser/net/network_quality_observer_impl_unittest.cc",
-    "../browser/net/socket_broker_impl_unittest.cc",
+    "../browser/network/cross_origin_embedder_policy_reporter_unittest.cc",
+    "../browser/network/cross_origin_opener_policy_reporter_unittest.cc",
+    "../browser/network/network_quality_observer_impl_unittest.cc",
+    "../browser/network/socket_broker_impl_unittest.cc",
     "../browser/network_context_client_base_impl_unittest.cc",
     "../browser/network_service_instance_impl_unittest.cc",
     "../browser/notification_service_impl_unittest.cc",
@@ -2552,8 +2552,8 @@
     "../common/user_agent_unittest.cc",
     "../common/webplugininfo_unittest.cc",
     "../public/test/browser_task_environment_unittest.cc",
-    "../public/test/devtools_permission_overrides_unittest.cc",
     "../public/test/no_renderer_crashes_assertion_unittest.cc",
+    "../public/test/permission_overrides_unittest.cc",
     "../public/test/permission_type_unittest.cc",
     "../public/test/referrer_unittest.cc",
     "../public/test/test_utils_unittest.cc",
diff --git a/content/test/data/accessibility/mac/attributes/ax-help-expected.txt b/content/test/data/accessibility/mac/attributes/ax-help-expected.txt
new file mode 100644
index 0000000..d489ef0
--- /dev/null
+++ b/content/test/data/accessibility/mac/attributes/ax-help-expected.txt
@@ -0,0 +1,4 @@
+link.accessibilityAttributeNames.has(AXHelp)='yes'
+link.accessibilityAttributeValue(AXHelp)='help description'
+not_applicable.accessibilityAttributeNames.has(AXHelp)='yes'
+not_applicable.accessibilityAttributeValue(AXHelp)=NULL
diff --git a/content/test/data/accessibility/mac/attributes/ax-help.html b/content/test/data/accessibility/mac/attributes/ax-help.html
new file mode 100644
index 0000000..4df5c61
--- /dev/null
+++ b/content/test/data/accessibility/mac/attributes/ax-help.html
@@ -0,0 +1,10 @@
+<!--
+@SCRIPT:
+  link.accessibilityAttributeNames.has(AXHelp)
+  link.accessibilityAttributeValue(AXHelp)
+  not_applicable.accessibilityAttributeNames.has(AXHelp)
+  not_applicable.accessibilityAttributeValue(AXHelp)
+-->
+<!DOCTYPE html>
+<a id="link" href="#" title="help description">link text</a>
+<div id="not_applicable"></div>
diff --git a/content/test/data/first_party_sets/v0.init_too_old.sql b/content/test/data/first_party_sets/v0.init_too_old.sql
index ea30e34c..c8857be 100644
--- a/content/test/data/first_party_sets/v0.init_too_old.sql
+++ b/content/test/data/first_party_sets/v0.init_too_old.sql
@@ -66,7 +66,7 @@
 INSERT INTO browser_contexts_cleared VALUES('b0', 1);
 INSERT INTO policy_modifications VALUES('b2', 'https://member1.test','https://example.test'),
                                        ('b2', 'https://member2.test',NULL);
-INSERT INTO manual_sets VALUES('b2', 'https://aaa.test','https://bbb.test', 1),
-                              ('b2', 'https://bbb.test', 'https://bbb.test', 0);
+INSERT INTO manual_sets VALUES('b0', 'https://ccc.test','https://ddd.test', 1),
+                              ('b0', 'https://ddd.test', 'https://ddd.test', 0);
 
 COMMIT;
\ No newline at end of file
diff --git a/content/test/data/first_party_sets/v1.init_invalid_run_count.sql b/content/test/data/first_party_sets/v1.init_invalid_run_count.sql
index e02a64302..d6087287 100644
--- a/content/test/data/first_party_sets/v1.init_invalid_run_count.sql
+++ b/content/test/data/first_party_sets/v1.init_invalid_run_count.sql
@@ -66,7 +66,7 @@
 INSERT INTO browser_contexts_cleared VALUES('b0', 1);
 INSERT INTO policy_modifications VALUES('b2', 'https://member1.test','https://example.test'),
                                        ('b2', 'https://member2.test',NULL);
-INSERT INTO manual_sets VALUES('b2', 'https://aaa.test','https://bbb.test', 1),
-                              ('b2', 'https://bbb.test', 'https://bbb.test', 0);
+INSERT INTO manual_sets VALUES('b0', 'https://ccc.test','https://ddd.test', 1),
+                              ('b0', 'https://ddd.test', 'https://ddd.test', 0);
 
 COMMIT;
\ No newline at end of file
diff --git a/content/test/data/first_party_sets/v1.init_too_new.sql b/content/test/data/first_party_sets/v1.init_too_new.sql
index ee5f85d..5890c9a9 100644
--- a/content/test/data/first_party_sets/v1.init_too_new.sql
+++ b/content/test/data/first_party_sets/v1.init_too_new.sql
@@ -66,7 +66,7 @@
 INSERT INTO browser_contexts_cleared VALUES('b0', 1);
 INSERT INTO policy_modifications VALUES('b2', 'https://member1.test','https://example.test'),
                                        ('b2', 'https://member2.test',NULL);
-INSERT INTO manual_sets VALUES('b2', 'https://aaa.test','https://bbb.test', 1),
-                              ('b2', 'https://bbb.test', 'https://bbb.test', 0);
+INSERT INTO manual_sets VALUES('b0', 'https://ccc.test','https://ddd.test', 1),
+                              ('b0', 'https://ddd.test', 'https://ddd.test', 0);
 
 COMMIT;
\ No newline at end of file
diff --git a/content/test/data/first_party_sets/v1.sql b/content/test/data/first_party_sets/v1.sql
index f3ae912..bae165c 100644
--- a/content/test/data/first_party_sets/v1.sql
+++ b/content/test/data/first_party_sets/v1.sql
@@ -66,6 +66,6 @@
 INSERT INTO browser_contexts_cleared VALUES('b0', 1);
 INSERT INTO policy_modifications VALUES('b2', 'https://member1.test','https://example.test'),
                                        ('b2', 'https://member2.test',NULL);
-INSERT INTO manual_sets VALUES('b2', 'https://aaa.test','https://bbb.test', 1),
-                              ('b2', 'https://bbb.test', 'https://bbb.test', 0);
+INSERT INTO manual_sets VALUES('b0', 'https://ccc.test','https://ddd.test', 1),
+                              ('b0', 'https://ddd.test', 'https://ddd.test', 0);
 COMMIT;
\ No newline at end of file
diff --git a/content/test/gpu/gpu_tests/maps_integration_test.py b/content/test/gpu/gpu_tests/maps_integration_test.py
index beadad3..16f4b87 100644
--- a/content/test/gpu/gpu_tests/maps_integration_test.py
+++ b/content/test/gpu/gpu_tests/maps_integration_test.py
@@ -28,6 +28,11 @@
 
 _TEST_NAME = 'Maps_maps'
 
+_OFF_WHITE_TOP_ROW_DEVICES = {
+    'SM-A135M',
+    'SM-A235M',
+}
+
 
 class MapsIntegrationTest(expected_color_test.ExpectedColorTest):
   """Google Maps pixel tests.
@@ -121,6 +126,13 @@
       img_height = image_util.Height(screenshot)
       img_width = image_util.Width(screenshot)
       screenshot = image_util.Crop(screenshot, 0, 0, img_width, img_height - 20)
+    # For some reason, the top row of the screenshot is very slightly off-white
+    # instead of pure white, which messes with the crop boundaries. So, chop
+    # off the top row now.
+    if tab.browser.platform.GetDeviceTypeName() in _OFF_WHITE_TOP_ROW_DEVICES:
+      screenshot = image_util.Crop(screenshot, 0, 1,
+                                   image_util.Width(screenshot),
+                                   image_util.Height(screenshot) - 1)
     x1, y1, x2, y2 = _GetCropBoundaries(screenshot)
     screenshot = image_util.Crop(screenshot, x1, y1, x2 - x1, y2 - y1)
 
diff --git a/content/test/gpu/gpu_tests/maps_pixel_expectations.json b/content/test/gpu/gpu_tests/maps_pixel_expectations.json
index 83c97f9..432e6e1 100644
--- a/content/test/gpu/gpu_tests/maps_pixel_expectations.json
+++ b/content/test/gpu/gpu_tests/maps_pixel_expectations.json
@@ -26,6 +26,16 @@
       {
         "device_type": "Pixel 6",
         "scale_factor": 1.10375
+      },
+      {
+        "comment": "Samsung A13",
+        "device_type": "SM-A135M",
+        "scale_factor": 1.1025
+      },
+      {
+        "comment": "Samsung A23",
+        "device_type": "SM-A235M",
+        "scale_factor": 1.1025
       }
     ]
   },
diff --git a/content/test/gpu/gpu_tests/test_expectations/cast_streaming_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/cast_streaming_expectations.txt
index 17251e9..170bb79 100644
--- a/content/test/gpu/gpu_tests/test_expectations/cast_streaming_expectations.txt
+++ b/content/test/gpu/gpu_tests/test_expectations/cast_streaming_expectations.txt
@@ -9,7 +9,8 @@
 #         win win8 win10 ]
 # Devices
 # tags: [ android-nexus-5 android-nexus-5x android-pixel-2 android-pixel-4
-#             android-pixel-6 android-shield-android-tv
+#             android-pixel-6 android-shield-android-tv android-sm-a135m
+#             android-sm-a235m
 #         chromeos-board-amd64-generic chromeos-board-kevin chromeos-board-eve
 #         fuchsia-board-astro fuchsia-board-sherlock fuchsia-board-qemu-x64 ]
 # Platform
diff --git a/content/test/gpu/gpu_tests/test_expectations/context_lost_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/context_lost_expectations.txt
index 842f309..bdfbe61 100644
--- a/content/test/gpu/gpu_tests/test_expectations/context_lost_expectations.txt
+++ b/content/test/gpu/gpu_tests/test_expectations/context_lost_expectations.txt
@@ -9,7 +9,8 @@
 #         win win8 win10 ]
 # Devices
 # tags: [ android-nexus-5 android-nexus-5x android-pixel-2 android-pixel-4
-#             android-pixel-6 android-shield-android-tv
+#             android-pixel-6 android-shield-android-tv android-sm-a135m
+#             android-sm-a235m
 #         chromeos-board-amd64-generic chromeos-board-kevin chromeos-board-eve
 #         fuchsia-board-astro fuchsia-board-sherlock fuchsia-board-qemu-x64 ]
 # Platform
diff --git a/content/test/gpu/gpu_tests/test_expectations/gpu_process_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/gpu_process_expectations.txt
index 67203ef..7a365ea 100644
--- a/content/test/gpu/gpu_tests/test_expectations/gpu_process_expectations.txt
+++ b/content/test/gpu/gpu_tests/test_expectations/gpu_process_expectations.txt
@@ -9,7 +9,8 @@
 #         win win8 win10 ]
 # Devices
 # tags: [ android-nexus-5 android-nexus-5x android-pixel-2 android-pixel-4
-#             android-pixel-6 android-shield-android-tv
+#             android-pixel-6 android-shield-android-tv android-sm-a135m
+#             android-sm-a235m
 #         chromeos-board-amd64-generic chromeos-board-kevin chromeos-board-eve
 #         fuchsia-board-astro fuchsia-board-sherlock fuchsia-board-qemu-x64 ]
 # Platform
diff --git a/content/test/gpu/gpu_tests/test_expectations/hardware_accelerated_feature_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/hardware_accelerated_feature_expectations.txt
index 599eaa8..aac4ab4 100644
--- a/content/test/gpu/gpu_tests/test_expectations/hardware_accelerated_feature_expectations.txt
+++ b/content/test/gpu/gpu_tests/test_expectations/hardware_accelerated_feature_expectations.txt
@@ -9,7 +9,8 @@
 #         win win8 win10 ]
 # Devices
 # tags: [ android-nexus-5 android-nexus-5x android-pixel-2 android-pixel-4
-#             android-pixel-6 android-shield-android-tv
+#             android-pixel-6 android-shield-android-tv android-sm-a135m
+#             android-sm-a235m
 #         chromeos-board-amd64-generic chromeos-board-kevin chromeos-board-eve
 #         fuchsia-board-astro fuchsia-board-sherlock fuchsia-board-qemu-x64 ]
 # Platform
diff --git a/content/test/gpu/gpu_tests/test_expectations/info_collection_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/info_collection_expectations.txt
index a4d765bd..6ab739d 100644
--- a/content/test/gpu/gpu_tests/test_expectations/info_collection_expectations.txt
+++ b/content/test/gpu/gpu_tests/test_expectations/info_collection_expectations.txt
@@ -9,7 +9,8 @@
 #         win win8 win10 ]
 # Devices
 # tags: [ android-nexus-5 android-nexus-5x android-pixel-2 android-pixel-4
-#             android-pixel-6 android-shield-android-tv
+#             android-pixel-6 android-shield-android-tv android-sm-a135m
+#             android-sm-a235m
 #         chromeos-board-amd64-generic chromeos-board-kevin chromeos-board-eve
 #         fuchsia-board-astro fuchsia-board-sherlock fuchsia-board-qemu-x64 ]
 # Platform
diff --git a/content/test/gpu/gpu_tests/test_expectations/maps_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/maps_expectations.txt
index 9ba4c602..15f630c2 100644
--- a/content/test/gpu/gpu_tests/test_expectations/maps_expectations.txt
+++ b/content/test/gpu/gpu_tests/test_expectations/maps_expectations.txt
@@ -9,7 +9,8 @@
 #         win win8 win10 ]
 # Devices
 # tags: [ android-nexus-5 android-nexus-5x android-pixel-2 android-pixel-4
-#             android-pixel-6 android-shield-android-tv
+#             android-pixel-6 android-shield-android-tv android-sm-a135m
+#             android-sm-a235m
 #         chromeos-board-amd64-generic chromeos-board-kevin chromeos-board-eve
 #         fuchsia-board-astro fuchsia-board-sherlock fuchsia-board-qemu-x64 ]
 # Platform
diff --git a/content/test/gpu/gpu_tests/test_expectations/mediapipe_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/mediapipe_expectations.txt
index 5605b22..f7faff8 100644
--- a/content/test/gpu/gpu_tests/test_expectations/mediapipe_expectations.txt
+++ b/content/test/gpu/gpu_tests/test_expectations/mediapipe_expectations.txt
@@ -9,7 +9,8 @@
 #         win win8 win10 ]
 # Devices
 # tags: [ android-nexus-5 android-nexus-5x android-pixel-2 android-pixel-4
-#             android-pixel-6 android-shield-android-tv
+#             android-pixel-6 android-shield-android-tv android-sm-a135m
+#             android-sm-a235m
 #         chromeos-board-amd64-generic chromeos-board-kevin chromeos-board-eve
 #         fuchsia-board-astro fuchsia-board-sherlock fuchsia-board-qemu-x64 ]
 # Platform
diff --git a/content/test/gpu/gpu_tests/test_expectations/pixel_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/pixel_expectations.txt
index 3db1cdc..96a841c 100644
--- a/content/test/gpu/gpu_tests/test_expectations/pixel_expectations.txt
+++ b/content/test/gpu/gpu_tests/test_expectations/pixel_expectations.txt
@@ -9,7 +9,8 @@
 #         win win8 win10 ]
 # Devices
 # tags: [ android-nexus-5 android-nexus-5x android-pixel-2 android-pixel-4
-#             android-pixel-6 android-shield-android-tv
+#             android-pixel-6 android-shield-android-tv android-sm-a135m
+#             android-sm-a235m
 #         chromeos-board-amd64-generic chromeos-board-kevin chromeos-board-eve
 #         fuchsia-board-astro fuchsia-board-sherlock fuchsia-board-qemu-x64 ]
 # Platform
@@ -459,6 +460,16 @@
 crbug.com/1372173 [ fuchsia ] Pixel_VideoStreamFrom2DCanvas [ Failure ]
 crbug.com/1372173 [ fuchsia ] Pixel_VideoStreamFromWebGLCanvas [ Failure ]
 
+# Currently expected to fail on non-rooted devices since minidump collection
+# does not work yet, meaning that we can't verify that we crashed exactly once
+# as expected.
+crbug.com/1358240 [ android android-sm-a135m ] Pixel_Video_Context_Loss_VP9 [ Failure ]
+crbug.com/1358240 [ android android-sm-a235m ] Pixel_Video_Context_Loss_VP9 [ Failure ]
+
+crbug.com/1372144 [ android android-sm-a135m ] Pixel_CanvasDisplaySRGBAccelerated2D [ Failure ]
+crbug.com/1372144 [ android android-sm-a135m ] Pixel_CanvasLowLatencyWebGLAlphaFalse [ Failure ]
+crbug.com/1372141 [ android android-sm-a235m ] Pixel_CanvasLowLatencyWebGLAlphaFalse [ Failure ]
+
 #######################################################################
 # Automated Entries After This Point - Do Not Manually Add Below Here #
 #######################################################################
diff --git a/content/test/gpu/gpu_tests/test_expectations/power_measurement_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/power_measurement_expectations.txt
index 9a5f03c..f7245a2 100644
--- a/content/test/gpu/gpu_tests/test_expectations/power_measurement_expectations.txt
+++ b/content/test/gpu/gpu_tests/test_expectations/power_measurement_expectations.txt
@@ -9,7 +9,8 @@
 #         win win8 win10 ]
 # Devices
 # tags: [ android-nexus-5 android-nexus-5x android-pixel-2 android-pixel-4
-#             android-pixel-6 android-shield-android-tv
+#             android-pixel-6 android-shield-android-tv android-sm-a135m
+#             android-sm-a235m
 #         chromeos-board-amd64-generic chromeos-board-kevin chromeos-board-eve
 #         fuchsia-board-astro fuchsia-board-sherlock fuchsia-board-qemu-x64 ]
 # Platform
diff --git a/content/test/gpu/gpu_tests/test_expectations/screenshot_sync_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/screenshot_sync_expectations.txt
index ceb5b34..c51d5d1 100644
--- a/content/test/gpu/gpu_tests/test_expectations/screenshot_sync_expectations.txt
+++ b/content/test/gpu/gpu_tests/test_expectations/screenshot_sync_expectations.txt
@@ -9,7 +9,8 @@
 #         win win8 win10 ]
 # Devices
 # tags: [ android-nexus-5 android-nexus-5x android-pixel-2 android-pixel-4
-#             android-pixel-6 android-shield-android-tv
+#             android-pixel-6 android-shield-android-tv android-sm-a135m
+#             android-sm-a235m
 #         chromeos-board-amd64-generic chromeos-board-kevin chromeos-board-eve
 #         fuchsia-board-astro fuchsia-board-sherlock fuchsia-board-qemu-x64 ]
 # Platform
diff --git a/content/test/gpu/gpu_tests/test_expectations/trace_test_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/trace_test_expectations.txt
index fc93f4227..7710bc0 100644
--- a/content/test/gpu/gpu_tests/test_expectations/trace_test_expectations.txt
+++ b/content/test/gpu/gpu_tests/test_expectations/trace_test_expectations.txt
@@ -9,7 +9,8 @@
 #         win win8 win10 ]
 # Devices
 # tags: [ android-nexus-5 android-nexus-5x android-pixel-2 android-pixel-4
-#             android-pixel-6 android-shield-android-tv
+#             android-pixel-6 android-shield-android-tv android-sm-a135m
+#             android-sm-a235m
 #         chromeos-board-amd64-generic chromeos-board-kevin chromeos-board-eve
 #         fuchsia-board-astro fuchsia-board-sherlock fuchsia-board-qemu-x64 ]
 # Platform
diff --git a/content/test/gpu/gpu_tests/test_expectations/webcodecs_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/webcodecs_expectations.txt
index 7dfbfbf..aaf87412 100644
--- a/content/test/gpu/gpu_tests/test_expectations/webcodecs_expectations.txt
+++ b/content/test/gpu/gpu_tests/test_expectations/webcodecs_expectations.txt
@@ -9,7 +9,8 @@
 #         win win8 win10 ]
 # Devices
 # tags: [ android-nexus-5 android-nexus-5x android-pixel-2 android-pixel-4
-#             android-pixel-6 android-shield-android-tv
+#             android-pixel-6 android-shield-android-tv android-sm-a135m
+#             android-sm-a235m
 #         chromeos-board-amd64-generic chromeos-board-kevin chromeos-board-eve
 #         fuchsia-board-astro fuchsia-board-sherlock fuchsia-board-qemu-x64 ]
 # Platform
diff --git a/content/test/gpu/gpu_tests/test_expectations/webgl2_conformance_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/webgl2_conformance_expectations.txt
index 0469e89..648df081 100644
--- a/content/test/gpu/gpu_tests/test_expectations/webgl2_conformance_expectations.txt
+++ b/content/test/gpu/gpu_tests/test_expectations/webgl2_conformance_expectations.txt
@@ -9,7 +9,8 @@
 #         win win8 win10 ]
 # Devices
 # tags: [ android-nexus-5 android-nexus-5x android-pixel-2 android-pixel-4
-#             android-pixel-6 android-shield-android-tv
+#             android-pixel-6 android-shield-android-tv android-sm-a135m
+#             android-sm-a235m
 #         chromeos-board-amd64-generic chromeos-board-kevin chromeos-board-eve
 #         fuchsia-board-astro fuchsia-board-sherlock fuchsia-board-qemu-x64 ]
 # Platform
diff --git a/content/test/gpu/gpu_tests/test_expectations/webgl_conformance_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/webgl_conformance_expectations.txt
index 618985cd..2c57ea8 100644
--- a/content/test/gpu/gpu_tests/test_expectations/webgl_conformance_expectations.txt
+++ b/content/test/gpu/gpu_tests/test_expectations/webgl_conformance_expectations.txt
@@ -9,7 +9,8 @@
 #         win win8 win10 ]
 # Devices
 # tags: [ android-nexus-5 android-nexus-5x android-pixel-2 android-pixel-4
-#             android-pixel-6 android-shield-android-tv
+#             android-pixel-6 android-shield-android-tv android-sm-a135m
+#             android-sm-a235m
 #         chromeos-board-amd64-generic chromeos-board-kevin chromeos-board-eve
 #         fuchsia-board-astro fuchsia-board-sherlock fuchsia-board-qemu-x64 ]
 # Platform
@@ -213,6 +214,16 @@
 # a significant amount of emulation.
 crbug.com/1080411 [ chromeos chromeos-board-kevin ] WebglExtension_WEBGL_draw_buffers [ Skip ]
 
+# Extensions not available on Samsung A13s
+crbug.com/1372155 [ android android-sm-a135m ] WebglExtension_EXT_color_buffer_half_float [ Skip ]
+crbug.com/1372155 [ android android-sm-a135m arm ] WebglExtension_EXT_shader_texture_lod [ Skip ]
+crbug.com/1372155 [ android android-sm-a135m ] WebglExtension_OES_texture_float [ Skip ]
+crbug.com/1372155 [ android android-sm-a135m ] WebglExtension_OES_texture_float_linear [ Skip ]
+crbug.com/1372155 [ android android-sm-a135m ] WebglExtension_OES_texture_half_float [ Skip ]
+crbug.com/1372155 [ android android-sm-a135m ] WebglExtension_OES_texture_half_float_linear [ Skip ]
+crbug.com/1372155 [ android android-sm-a135m ] WebglExtension_WEBGL_color_buffer_float [ Skip ]
+crbug.com/1372155 [ android android-sm-a135m arm ] WebglExtension_WEBGL_draw_buffers [ Skip ]
+
 ###############################
 # Temporary Skip Expectations #
 ###############################
@@ -749,6 +760,15 @@
 # Failing test when experiment DrDc is enabled via fieldtrial_testing_config.json.
 crbug.com/1289303 [ android ] conformance/textures/misc/texture-video-transparent.html [ Failure ]
 
+# Samsung failures
+crbug.com/1372155 [ android android-sm-a135m ] conformance/glsl/bugs/constant-precision-qualifier.html [ Failure ]
+crbug.com/1372155 [ android android-sm-a135m ] conformance/misc/shader-precision-format.html [ Failure ]
+crbug.com/1372155 [ android android-sm-a135m ] conformance/offscreencanvas/context-lost-restored-worker.html [ Failure ]
+crbug.com/1372155 [ android android-sm-a135m ] conformance/offscreencanvas/context-lost-restored.html [ Failure ]
+crbug.com/1372155 [ android android-sm-a135m no-passthrough ] conformance/rendering/blending.html [ Failure ]
+crbug.com/1372155 [ android android-sm-a135m ] conformance/uniforms/uniform-samplers-test.html [ Failure ]
+crbug.com/1372149 [ android android-sm-a235m no-passthrough ] conformance/rendering/blending.html [ Failure ]
+
 ############
 # ChromeOS #
 ############
diff --git a/content/test/gpu/validate_tag_consistency.py b/content/test/gpu/validate_tag_consistency.py
index 6a4eefa..7cce7be 100755
--- a/content/test/gpu/validate_tag_consistency.py
+++ b/content/test/gpu/validate_tag_consistency.py
@@ -22,7 +22,8 @@
 #         win win8 win10 ]
 # Devices
 # tags: [ android-nexus-5 android-nexus-5x android-pixel-2 android-pixel-4
-#             android-pixel-6 android-shield-android-tv
+#             android-pixel-6 android-shield-android-tv android-sm-a135m
+#             android-sm-a235m
 #         chromeos-board-amd64-generic chromeos-board-kevin chromeos-board-eve
 #         fuchsia-board-astro fuchsia-board-sherlock fuchsia-board-qemu-x64 ]
 # Platform
diff --git a/content/utility/BUILD.gn b/content/utility/BUILD.gn
index fd128c39..362605e 100644
--- a/content/utility/BUILD.gn
+++ b/content/utility/BUILD.gn
@@ -9,6 +9,7 @@
 import("//media/gpu/args.gni")
 import("//media/media_options.gni")
 import("//printing/buildflags/buildflags.gni")
+import("//services/accessibility/buildflags.gni")
 
 source_set("utility") {
   # Only the public target should depend on this. All other targets (even
@@ -56,6 +57,7 @@
     "//net",
     "//printing/buildflags",
     "//sandbox",
+    "//services/accessibility:buildflags",
     "//services/audio",
     "//services/data_decoder:lib",
     "//services/data_decoder/public/cpp",
@@ -87,7 +89,6 @@
       "//ash/services/ime:sandbox_hook",
       "//chromeos/ash/components/assistant:buildflags",
       "//chromeos/services/tts:sandbox_hook",
-      "//services/accessibility:lib",
     ]
     if (use_vaapi || use_v4l2_codec) {
       deps += [ "//ash/components/arc/video_accelerator" ]
@@ -140,6 +141,10 @@
     deps += [ "//components/services/screen_ai:screen_ai_sandbox_hook" ]
   }
 
+  if (enable_accessibility_service) {
+    deps += [ "//services/accessibility:lib" ]
+  }
+
   if (enable_vr && !is_android) {
     deps += [
       "//content/services/isolated_xr_device:lib",
diff --git a/content/utility/services.cc b/content/utility/services.cc
index 359d567f..46e6b2d0 100644
--- a/content/utility/services.cc
+++ b/content/utility/services.cc
@@ -24,6 +24,7 @@
 #include "media/media_buildflags.h"
 #include "mojo/public/cpp/bindings/self_owned_receiver.h"
 #include "mojo/public/cpp/bindings/service_factory.h"
+#include "services/accessibility/buildflags.h"
 #include "services/audio/service_factory.h"
 #include "services/data_decoder/data_decoder_service.h"
 #include "services/network/network_service.h"
@@ -59,6 +60,8 @@
 
 #if BUILDFLAG(IS_WIN)
 #include "base/win/scoped_com_initializer.h"
+#include "media/audio/win/audio_manager_win.h"
+#include "media/base/media_switches.h"
 #include "sandbox/win/src/sandbox.h"
 extern sandbox::TargetServices* g_utility_target_services;
 #endif  // BUILDFLAG(IS_WIN)
@@ -91,11 +94,15 @@
 #endif  // (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH)) &&
         // (BUILDFLAG(USE_VAAPI) || BUILDFLAG(USE_V4L2_CODEC))
 
+#if BUILDFLAG(ENABLE_ACCESSIBILITY_SERVICE)
 #if BUILDFLAG(IS_CHROMEOS_ASH)
 #include "services/accessibility/accessibility_service_cros.h"  // nogncheck
+#elif  // !BUILDFLAG(IS_CHROMEOS_ASH)
+#include "services/accessibility/accessibility_service_chrome.h"  // nogncheck
+#endif  // !BUILDFLAG(IS_CHROMEOS_ASH)
 #include "services/accessibility/public/mojom/accessibility_service.mojom.h"  // nogncheck
 #include "ui/accessibility/accessibility_features.h"
-#endif  // BUILDFLAG(IS_CHROMEOS_ASH)
+#endif  // BUILDFLAG(ENABLE_ACCESSIBILITY_SERVICE)
 
 namespace content {
 
@@ -215,13 +222,27 @@
 #endif
 
 #if BUILDFLAG(IS_WIN)
-  if (base::CommandLine::ForCurrentProcess()->HasSwitch(
-          switches::kAudioProcessHighPriority)) {
+  auto* command_line = base::CommandLine::ForCurrentProcess();
+  if (command_line->HasSwitch(switches::kAudioProcessHighPriority)) {
     auto success =
         ::SetPriorityClass(::GetCurrentProcess(), ABOVE_NORMAL_PRIORITY_CLASS);
     DCHECK(success);
   }
-#endif
+
+#if BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+  // Codec Bitmask from main browser process is copied from AudioManagerWin
+  // to the command line when audio process is launched.  Set to the
+  // AudioManagerWin of the new audio process.
+  if (command_line->HasSwitch(switches::kAudioCodecsFromEDID)) {
+    uint32_t codec_bitmask = 0;
+    base::StringToUint(
+        command_line->GetSwitchValueASCII(switches::kAudioCodecsFromEDID),
+        &codec_bitmask);
+    media::AudioManagerWin::SetBitstreamPassthroughBitmask(codec_bitmask);
+  }
+#endif  // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+#endif  // BUILDFLAG(IS_WIN)
+
   return audio::CreateStandaloneService(std::move(receiver));
 }
 
@@ -249,12 +270,16 @@
       std::move(receiver));
 }
 
-#if BUILDFLAG(IS_CHROMEOS_ASH)
+#if BUILDFLAG(ENABLE_ACCESSIBILITY_SERVICE)
 auto RunAccessibilityService(
     mojo::PendingReceiver<ax::mojom::AccessibilityService> receiver) {
+#if BUILDFLAG(IS_CHROMEOS_ASH)
   return std::make_unique<ax::AccessibilityServiceCros>(std::move(receiver));
+#elif   // !BUILDFLAG(IS_CHROMEOS_ASH)
+  return std::make_unique<ax::AccessibilityServiceChrome>(std::move(reciver));
+#endif  // !BUILDFLAG(IS_CHROMEOS_ASH)
 }
-#endif  // BUILDFLAG(IS_CHROMEOS_ASH)
+#endif  // BUILDFLAG(ENABLE_ACCESSIBILITY_SERVICE)
 
 #if BUILDFLAG(IS_WIN)
 std::unique_ptr<media::MediaFoundationServiceBroker>
@@ -361,10 +386,10 @@
 #endif  // (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH)) &&
         // (BUILDFLAG(USE_VAAPI) || BUILDFLAG(USE_V4L2_CODEC))
 
-#if BUILDFLAG(IS_CHROMEOS_ASH)
+#if BUILDFLAG(ENABLE_ACCESSIBILITY_SERVICE)
   if (::features::IsAccessibilityServiceEnabled())
     services.Add(RunAccessibilityService);
-#endif  // BUILDFLAG(IS_CHROMEOS_ASH)
+#endif  // BUILDFLAG(ENABLE_ACCESSIBILITY_SERVICE)
 
   // Add new main-thread services above this line.
   GetContentClient()->utility()->RegisterMainThreadServices(services);
diff --git a/content/web_test/browser/web_test_bluetooth_adapter_provider.cc b/content/web_test/browser/web_test_bluetooth_adapter_provider.cc
index 46037e49..bdd339d3 100644
--- a/content/web_test/browser/web_test_bluetooth_adapter_provider.cc
+++ b/content/web_test/browser/web_test_bluetooth_adapter_provider.cc
@@ -932,9 +932,11 @@
   // Gatt connection. When called after after IsGattDiscoveryComplete runs
   // success callback with a new Gatt connection and notifies of services
   // discovered.
-  ON_CALL(*device, CreateGattConnection_(_))
-      .WillByDefault(RunCallbackWithFunctionResult<0 /* callback */>(
-          [adapter_ptr, device_ptr]() {
+  ON_CALL(*device, CreateGattConnection(_, _))
+      .WillByDefault(
+          [adapter_ptr, device_ptr](
+              BluetoothDevice::GattConnectionCallback callback,
+              absl::optional<BluetoothUUID> service_uuid) {
             std::vector<BluetoothRemoteGattService*> services =
                 device_ptr->GetMockServices();
 
@@ -946,10 +948,11 @@
             }
 
             device_ptr->SetConnected(true);
-            return std::make_unique<NiceMockBluetoothGattConnection>(
-                adapter_ptr, device_ptr->GetAddress());
-          },
-          /*error_code=*/absl::nullopt));
+            std::move(callback).Run(
+                std::make_unique<NiceMockBluetoothGattConnection>(
+                    adapter_ptr, device_ptr->GetAddress()),
+                /*error_code=*/absl::nullopt);
+          });
 
   // The first time this function is called we:
   // 1. Add a service (This indicates that this function has been called)
@@ -999,17 +1002,18 @@
                                  BluetoothUUID(kHealthThermometerUUID)})));
   NiceMockBluetoothDevice* device_ptr = device.get();
 
-  ON_CALL(*device, CreateGattConnection_(_))
+  ON_CALL(*device, CreateGattConnection(_, _))
       .WillByDefault(
-          Invoke([adapter_ptr, device_ptr](
-                     BluetoothDevice::GattConnectionCallback& callback) {
+          [adapter_ptr, device_ptr](
+              BluetoothDevice::GattConnectionCallback callback,
+              absl::optional<BluetoothUUID> service_uuid) {
             device_ptr->SetConnected(true);
             std::move(callback).Run(
                 std::make_unique<NiceMockBluetoothGattConnection>(
                     adapter_ptr, device_ptr->GetAddress()),
                 /*error_code=*/absl::nullopt);
             device_ptr->RunPendingCallbacks();
-          }));
+          });
 
   device->AddMockService(GetGenericAccessService(device.get()));
 
@@ -1201,17 +1205,18 @@
                                  BluetoothUUID(kHealthThermometerUUID)})));
   NiceMockBluetoothDevice* device_ptr = device.get();
 
-  ON_CALL(*device, CreateGattConnection_(_))
+  ON_CALL(*device, CreateGattConnection(_, _))
       .WillByDefault(
-          Invoke([adapter_ptr, device_ptr](
-                     BluetoothDevice::GattConnectionCallback& callback) {
+          [adapter_ptr, device_ptr](
+              BluetoothDevice::GattConnectionCallback callback,
+              absl::optional<BluetoothUUID> service_uuid) {
             device_ptr->SetConnected(true);
             std::move(callback).Run(
                 std::make_unique<NiceMockBluetoothGattConnection>(
                     adapter_ptr, device_ptr->GetAddress()),
                 /*error_code=*/absl::nullopt);
             device_ptr->RunPendingCallbacks();
-          }));
+          });
 
   device->AddMockService(GetGenericAccessService(device.get()));
 
@@ -1362,14 +1367,14 @@
       .WillByDefault(
           Invoke(device.get(), &MockBluetoothDevice::GetMockService));
 
-  ON_CALL(*device, CreateGattConnection_(_))
+  ON_CALL(*device, CreateGattConnection(_, _))
       .WillByDefault(RunOnceCallback<0>(
           /*connection=*/nullptr, BluetoothDevice::ERROR_UNSUPPORTED_DEVICE));
 
   auto* device_ptr = device.get();
-  ON_CALL(*device, Pair_(_, _))
+  ON_CALL(*device, Pair(_, _))
       .WillByDefault(
-          WithArg<1>([device_ptr](BluetoothDevice::ConnectCallback& callback) {
+          WithArg<1>([device_ptr](BluetoothDevice::ConnectCallback callback) {
             device_ptr->SetPaired(/*paired=*/true);
             base::SequencedTaskRunnerHandle::Get()->PostTask(
                 FROM_HERE, base::BindOnce(std::move(callback),
@@ -1416,16 +1421,17 @@
 
   MockBluetoothDevice* device_ptr = device.get();
 
-  ON_CALL(*device, CreateGattConnection_(_))
+  ON_CALL(*device, CreateGattConnection(_, _))
       .WillByDefault(
-          Invoke([adapter, device_ptr](
-                     BluetoothDevice::GattConnectionCallback& callback) {
+          [adapter, device_ptr](
+              BluetoothDevice::GattConnectionCallback callback,
+              absl::optional<BluetoothUUID> service_uuid) {
             device_ptr->SetConnected(true);
             std::move(callback).Run(
                 std::make_unique<NiceMockBluetoothGattConnection>(
                     adapter, device_ptr->GetAddress()),
                 /*error_code=*/absl::nullopt);
-          }));
+          });
 
   ON_CALL(*device, IsGattServicesDiscoveryComplete())
       .WillByDefault(Return(true));
@@ -1445,7 +1451,7 @@
   auto device(
       GetBaseDevice(adapter, device_name, uuids, makeMACAddress(error_code)));
 
-  ON_CALL(*device, CreateGattConnection_(_))
+  ON_CALL(*device, CreateGattConnection(_, _))
       .WillByDefault(RunOnceCallback<0>(/*connection=*/nullptr, error_code));
 
   return device;
diff --git a/device/bluetooth/bluetooth_strings.grd b/device/bluetooth/bluetooth_strings.grd
index 13d4882..35050d45 100644
--- a/device/bluetooth/bluetooth_strings.grd
+++ b/device/bluetooth/bluetooth_strings.grd
@@ -238,51 +238,6 @@
       <message name="IDS_BLUETOOTH_DEVICE_KEYBOARD_MOUSE_COMBO" desc="Text to identify Bluetooth devices of both keyboard and mouse class.">
       Keyboard/Mouse (<ph name="ADDRESS">$1<ex>12:34:56:78:9A:BC</ex></ph>)
       </message>
-      <message name="IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_COMPUTER" desc="accessibility description for a Bluetooth connectable computer device including its type.">
-      <ph name="DEVICE_NAME">$1<ex>Device XYZ</ex></ph>, Computer
-      </message>
-      <message name="IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_PHONE" desc="accessibility description for a Bluetooth connectable phone device including its type.">
-        <ph name="DEVICE_NAME">$1<ex>Device XYZ</ex></ph>, Phone
-      </message>
-      <message name="IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_MODEM" desc="accessibility description for a Bluetooth connectable modem device including its type.">
-        <ph name="DEVICE_NAME">$1<ex>Device XYZ</ex></ph>, Modem
-      </message>
-      <message name="IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_AUDIO" desc="accessibility description for a Bluetooth connectable audio device device including its type. These devices are typically speakers and headphones.">
-        <ph name="DEVICE_NAME">$1<ex>Device XYZ</ex></ph>, Audio device
-      </message>
-      <message name="IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_CAR_AUDIO" desc="accessibility description for a Bluetooth connectable car audio device including its type. These devices are typically a car's audio system.">
-        <ph name="DEVICE_NAME">$1<ex>Device XYZ</ex></ph>, Car audio device
-      </message>
-      <message name="IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_VIDEO" desc="accessibility description for a Bluetooth connectable video device including its type. These devices are typically a monitor or some other type of video display.">
-        <ph name="DEVICE_NAME">$1<ex>Device XYZ</ex></ph>, Video device
-      </message>
-      <message name="IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_PERIPHERAL" desc="accessibility description for a Bluetooth connectable peripheral device including its type. This type is used for a generic external peripheral device.">
-        <ph name="DEVICE_NAME">$1<ex>Device XYZ</ex></ph>, Peripheral
-      </message>
-      <message name="IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_JOYSTICK" desc="accessibility description for a Bluetooth connectable joystick device including its type. A joystick is a move-able stick mounted on based that is used to provide input.">
-        <ph name="DEVICE_NAME">$1<ex>Device XYZ</ex></ph>, Joystick
-      </message>
-      <message name="IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_GAMEPAD" desc="accessibility description for a Bluetooth connectable gamepad device including its type. A gamepad is a two-handed control device where the fingers and thumbs are used to provide input.">
-        <ph name="DEVICE_NAME">$1<ex>Device XYZ</ex></ph>, Gamepad
-      </message>
-      <message name="IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_KEYBOARD" desc="accessibility description for a Bluetooth connectable keyboard device including its type.">
-        <ph name="DEVICE_NAME">$1<ex>Device XYZ</ex></ph>, Keyboard
-      </message>
-      <message name="IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_MOUSE" desc="accessibility description for a Bluetooth connectable mouse device including its type.">
-        <ph name="DEVICE_NAME">$1<ex>Device XYZ</ex></ph>, Mouse
-      </message>
-      <message name="IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_TABLET" desc="accessibility description for a Bluetooth connectable tablet device including its type.">
-        <ph name="DEVICE_NAME">$1<ex>Device XYZ</ex></ph>, Tablet
-      </message>
-      <message name="IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_KEYBOARD_MOUSE_COMBO" desc="accessibility description for a Bluetooth connectable keyboard and mouse combo device including its type.">
-        <ph name="DEVICE_NAME">$1<ex>Device XYZ</ex></ph>, Keyboard and mouse combination
-      </message>
-      <message name="IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_UNKNOWN" desc="accessibility description for a device type that is not one of the known/supported device types for ChromeOS">
-        <ph name="DEVICE_NAME">$1<ex>Device XYZ</ex></ph>, Unknown device type
-      </message>
-      <message name="IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_AND_CONNECTION_STATUS" desc="accessibility description for a Bluetooth connectable device that includes its status. IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_* will be used as an input to DEVICE_NAME_AND_TYPE">
-        <ph name="DEVICE_NAME_AND_TYPE">$1<ex>Device XYZ, Audio Device</ex></ph> <ph name="CONNECTION_STATUS">$2<ex>Not connected</ex></ph>
-      </message>
     </messages>
   </release>
 </grit>
diff --git a/device/bluetooth/bluetooth_strings_grd/IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_AND_CONNECTION_STATUS.png.sha1 b/device/bluetooth/bluetooth_strings_grd/IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_AND_CONNECTION_STATUS.png.sha1
deleted file mode 100644
index 3cdee77..0000000
--- a/device/bluetooth/bluetooth_strings_grd/IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_AND_CONNECTION_STATUS.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-fb77f1fc922da677235a6cc7dcfcb31c9082897f
\ No newline at end of file
diff --git a/device/bluetooth/chromeos/bluetooth_utils.h b/device/bluetooth/chromeos/bluetooth_utils.h
index 34df3f8..e83127a 100644
--- a/device/bluetooth/chromeos/bluetooth_utils.h
+++ b/device/bluetooth/chromeos/bluetooth_utils.h
@@ -67,7 +67,7 @@
   kSettingsPairingDialog = 2,
   kBluetoothQuickSettings = 3,
   kStandalonePairingDialog = 4,
-  kPairedNotification = 5,
+  // [Deprecated] kPairedNotification = 5,
   kConnectionToast = 6,
   kDisconnectedToast = 7,
   kOobeHidDetection = 8,
diff --git a/device/bluetooth/dbus/bluetooth_device_client.cc b/device/bluetooth/dbus/bluetooth_device_client.cc
index f9a5ef0..2ceaac0 100644
--- a/device/bluetooth/dbus/bluetooth_device_client.cc
+++ b/device/bluetooth/dbus/bluetooth_device_client.cc
@@ -21,20 +21,10 @@
 #include "device/bluetooth/dbus/bluetooth_metrics_helper.h"
 #include "third_party/cros_system_api/dbus/service_constants.h"
 
-#if BUILDFLAG(IS_CHROMEOS_ASH)
-#include "ash/constants/ash_features.h"
-#endif  // BUILDFLAG(IS_CHROMEOS_ASH)
-
 namespace bluez {
 
 namespace {
 
-#if BUILDFLAG(IS_CHROMEOS_ASH)
-// TODO(b/213229904): Remove this constant and replace with
-// |bluetooth_device::kDisconnectOld| once it has been uprev'd.
-constexpr char kDisconnectOldPlaceholder[] = "DisconnectOld";
-#endif  // BUILDFLAG(IS_CHROMEOS_ASH)
-
 // Value returned for the the RSSI or TX power if it cannot be read.
 const int kUnknownPower = 127;
 
@@ -370,20 +360,8 @@
   void Disconnect(const dbus::ObjectPath& object_path,
                   base::OnceClosure callback,
                   ErrorCallback error_callback) override {
-// TODO(b/208933029): Only use the new disconnect method, e.g.
-// |bluetooth_device::kDisconnect|, once the Bluetooth revamp is fully launched.
-#if BUILDFLAG(IS_CHROMEOS_ASH)
-    // For the Bluetooth revamp we want to use an updated disconnect mechanism
-    // that does not disable auto-reconnect since we no longer provide a
-    // "connect" button for HID devices.
-    const char* method_name = ash::features::IsBluetoothRevampEnabled()
-                                  ? bluetooth_device::kDisconnect
-                                  : kDisconnectOldPlaceholder;
-#else   // BUILDFLAG(IS_CHROMEOS_ASH)
-    const char* method_name = bluetooth_device::kDisconnect;
-#endif  // BUILDFLAG(IS_CHROMEOS_ASH)
     dbus::MethodCall method_call(bluetooth_device::kBluetoothDeviceInterface,
-                                 method_name);
+                                 bluetooth_device::kDisconnect);
 
     dbus::ObjectProxy* object_proxy =
         object_manager_->GetObjectProxy(object_path);
diff --git a/device/bluetooth/test/mock_bluetooth_device.h b/device/bluetooth/test/mock_bluetooth_device.h
index 0a719b1..3159a70 100644
--- a/device/bluetooth/test/mock_bluetooth_device.h
+++ b/device/bluetooth/test/mock_bluetooth_device.h
@@ -62,38 +62,21 @@
   MOCK_CONST_METHOD0(ExpectingPasskey, bool());
   MOCK_CONST_METHOD0(ExpectingConfirmation, bool());
   MOCK_METHOD1(GetConnectionInfo, void(ConnectionInfoCallback callback));
-  void SetConnectionLatency(ConnectionLatency connection_latency,
-                            base::OnceClosure callback,
-                            ErrorCallback error_callback) override {
-    SetConnectionLatency_(connection_latency, callback, error_callback);
-  }
-  MOCK_METHOD3(SetConnectionLatency_,
+  MOCK_METHOD3(SetConnectionLatency,
                void(ConnectionLatency connection_latency,
-                    base::OnceClosure& callback,
-                    ErrorCallback& error_callback));
-  void Connect(BluetoothDevice::PairingDelegate* pairing_delegate,
-               ConnectCallback callback) override {
-    Connect_(pairing_delegate, callback);
-  }
-  MOCK_METHOD2(Connect_,
+                    base::OnceClosure callback,
+                    ErrorCallback error_callback));
+  MOCK_METHOD2(Connect,
                void(BluetoothDevice::PairingDelegate* pairing_delegate,
-                    ConnectCallback& callback));
+                    ConnectCallback callback));
 #if BUILDFLAG(IS_CHROMEOS)
-  void ConnectClassic(BluetoothDevice::PairingDelegate* pairing_delegate,
-                      ConnectCallback callback) override {
-    ConnectClassic_(pairing_delegate, callback);
-  }
-  MOCK_METHOD2(ConnectClassic_,
+  MOCK_METHOD2(ConnectClassic,
                void(BluetoothDevice::PairingDelegate* pairing_delegate,
-                    ConnectCallback& callback));
+                    ConnectCallback callback));
 #endif  // BUILDFLAG(IS_CHROMEOS)
-  void Pair(BluetoothDevice::PairingDelegate* pairing_delegate,
-            ConnectCallback callback) override {
-    Pair_(pairing_delegate, callback);
-  }
-  MOCK_METHOD2(Pair_,
+  MOCK_METHOD2(Pair,
                void(BluetoothDevice::PairingDelegate* pairing_delegate,
-                    ConnectCallback& callback));
+                    ConnectCallback callback));
   MOCK_METHOD1(SetPinCode, void(const std::string&));
   MOCK_METHOD1(SetPasskey, void(uint32_t));
   MOCK_METHOD0(ConfirmPairing, void());
@@ -113,13 +96,9 @@
                void(const BluetoothUUID& uuid,
                     ConnectToServiceCallback callback,
                     ConnectToServiceErrorCallback error_callback));
-  void CreateGattConnection(
-      GattConnectionCallback callback,
-      absl::optional<BluetoothUUID> service_uuid) override {
-    CreateGattConnection_(callback);
-  }
-  MOCK_METHOD1(CreateGattConnection_, void(GattConnectionCallback& callback));
-
+  MOCK_METHOD2(CreateGattConnection,
+               void(GattConnectionCallback callback,
+                    absl::optional<BluetoothUUID> service_uuid));
   MOCK_CONST_METHOD0(IsGattServicesDiscoveryComplete, bool());
 
   MOCK_CONST_METHOD0(GetGattServices,
diff --git a/device/fido/cable/fido_ble_connection_unittest.cc b/device/fido/cable/fido_ble_connection_unittest.cc
index 0c08826..ae2971d 100644
--- a/device/fido/cable/fido_ble_connection_unittest.cc
+++ b/device/fido/cable/fido_ble_connection_unittest.cc
@@ -145,8 +145,9 @@
   }
 
   void SetupConnectingFidoDevice(const std::string& device_address) {
-    ON_CALL(*fido_device_, CreateGattConnection_)
-        .WillByDefault(Invoke([this, &device_address](auto& callback) {
+    ON_CALL(*fido_device_, CreateGattConnection)
+        .WillByDefault(Invoke([this, &device_address](auto callback,
+                                                      auto service_uuid) {
           connection_ =
               new NiceMockBluetoothGattConnection(adapter_, device_address);
           std::move(callback).Run(
@@ -193,8 +194,8 @@
   }
 
   void SimulateGattConnectionError() {
-    EXPECT_CALL(*fido_device_, CreateGattConnection_)
-        .WillOnce(Invoke([](auto&& callback) {
+    EXPECT_CALL(*fido_device_, CreateGattConnection)
+        .WillOnce(Invoke([](auto callback, auto service_uuid) {
           base::ThreadTaskRunnerHandle::Get()->PostTask(
               FROM_HERE, base::BindOnce(std::move(callback),
                                         /*connection=*/nullptr,
diff --git a/device/vr/android/arcore/arcore_gl.cc b/device/vr/android/arcore/arcore_gl.cc
index 87e4288..27e8e85 100644
--- a/device/vr/android/arcore/arcore_gl.cc
+++ b/device/vr/android/arcore/arcore_gl.cc
@@ -31,19 +31,14 @@
 #include "device/vr/public/mojom/pose.h"
 #include "device/vr/public/mojom/vr_service.mojom.h"
 #include "device/vr/util/transform_utils.h"
-#include "gpu/ipc/common/gpu_memory_buffer_impl_android_hardware_buffer.h"
 #include "ui/display/display.h"
 #include "ui/display/screen.h"
 #include "ui/gfx/geometry/angle_conversions.h"
 #include "ui/gfx/geometry/transform_util.h"
 #include "ui/gfx/gpu_fence.h"
-#include "ui/gl/android/scoped_java_surface.h"
-#include "ui/gl/android/surface_texture.h"
 #include "ui/gl/gl_bindings.h"
 #include "ui/gl/gl_context.h"
 #include "ui/gl/gl_fence_android_native_fence_sync.h"
-#include "ui/gl/gl_fence_egl.h"
-#include "ui/gl/gl_image_ahardwarebuffer.h"
 #include "ui/gl/gl_surface.h"
 #include "ui/gl/gl_utils.h"
 #include "ui/gl/init/gl_factory.h"
diff --git a/docs/accessibility/browser/android.md b/docs/accessibility/browser/android.md
index 225a295f..6a016becc 100644
--- a/docs/accessibility/browser/android.md
+++ b/docs/accessibility/browser/android.md
@@ -410,7 +410,7 @@
 to test directly on the build bots, which is great when a test works locally but flakes
 or fails during builds. Let's look at some basic examples.
 
-First ensure that you have followed the basic [Android setup](https://chromium.googlesource.com/chromium/src/+/master/docs/android_build_instructions.md) guides and can
+First ensure that you have followed the basic [Android setup](https://chromium.googlesource.com/chromium/src/+/main/docs/android_build_instructions.md) guides and can
 successfully build the code. You should not proceed further until you can
 successfully run the command:
 
@@ -848,4 +848,4 @@
 to zoom web contents than the currently existing text scaling of AccessibilitySettings
 (which will be replaced).
 
-The Clank UI code for this feature has not been developed. More to come.
\ No newline at end of file
+The Clank UI code for this feature has not been developed. More to come.
diff --git a/docs/security/updates.md b/docs/security/updates.md
index 09742f4f..2911f6b9 100644
--- a/docs/security/updates.md
+++ b/docs/security/updates.md
@@ -123,7 +123,7 @@
 current and previous version numbers for all platforms and channels, see the
 [Chromium Release Dashboard][rel-dash].
 
-[release-cycle]: https://chromium.googlesource.com/chromium/src/+/master/docs/process/release_cycle.md
+[release-cycle]: https://chromium.googlesource.com/chromium/src/+/main/docs/process/release_cycle.md
 [ent-rel-notes]: https://support.google.com/chrome/a/answer/7679408
 [update-strategy]: https://support.google.com/chrome/a/answer/9982578
 [ent-support]: https://chromeenterprise.google/browser/support/
diff --git a/docs/testing/web_platform_tests_wptrunner.md b/docs/testing/web_platform_tests_wptrunner.md
index 0645edde..57517c16 100644
--- a/docs/testing/web_platform_tests_wptrunner.md
+++ b/docs/testing/web_platform_tests_wptrunner.md
@@ -92,7 +92,7 @@
 Each of these builders has an opt-in trybot mirror with the same name.
 To run one of these builders against a CL, click "Choose Tryjobs" in Gerrit,
 then search for the builder name.
-A [`Cq-Include-Trybots:`](https://chromium.googlesource.com/chromium/src/+/master/docs/contributing.md#cl-footer-reference)
+A [`Cq-Include-Trybots:`](https://chromium.googlesource.com/chromium/src/+/main/docs/contributing.md#cl-footer-reference)
 footer in the CL description can add a `wptrunner` builder to the default CQ
 builder set.
 Results for the bots use the existing layout test
diff --git a/extensions/browser/api/bluetooth/bluetooth_private_apitest.cc b/extensions/browser/api/bluetooth/bluetooth_private_apitest.cc
index 1a0e8df..8774b0a 100644
--- a/extensions/browser/api/bluetooth/bluetooth_private_apitest.cc
+++ b/extensions/browser/api/bluetooth/bluetooth_private_apitest.cc
@@ -291,7 +291,7 @@
       .Times(2)
       .WillOnce(Return(false))
       .WillOnce(Return(true));
-  EXPECT_CALL(*mock_device_, Connect_(_, _))
+  EXPECT_CALL(*mock_device_, Connect(_, _))
       .WillOnce(RunOnceCallback<1>(/*error_code=*/absl::nullopt));
   ASSERT_TRUE(RunExtensionTest("bluetooth_private/connect", {},
                                {.load_as_component = true}))
@@ -304,7 +304,7 @@
                   _, device::BluetoothAdapter::PAIRING_DELEGATE_PRIORITY_HIGH));
   EXPECT_CALL(*mock_device_, ExpectingConfirmation())
       .WillRepeatedly(Return(true));
-  EXPECT_CALL(*mock_device_, Pair_(_, _))
+  EXPECT_CALL(*mock_device_, Pair(_, _))
       .WillOnce(DoAll(
           WithoutArgs(Invoke(
               this,
diff --git a/extensions/browser/api/system_display/display_info_provider.cc b/extensions/browser/api/system_display/display_info_provider.cc
index ff7eeee..1cf520e 100644
--- a/extensions/browser/api/system_display/display_info_provider.cc
+++ b/extensions/browser/api/system_display/display_info_provider.cc
@@ -122,9 +122,9 @@
   for (const display::Display& display : displays) {
     api::system_display::DisplayUnitInfo unit =
         CreateDisplayUnitInfo(display, primary_id);
-    UpdateDisplayUnitInfoForPlatform(display, &unit);
     all_displays.push_back(std::move(unit));
   }
+  UpdateDisplayUnitInfoForPlatform(displays, all_displays);
   return all_displays;
 }
 
@@ -219,8 +219,8 @@
 }
 
 void DisplayInfoProvider::UpdateDisplayUnitInfoForPlatform(
-    const display::Display& display,
-    extensions::api::system_display::DisplayUnitInfo* unit) const {
+    const std::vector<display::Display>& displays,
+    DisplayUnitInfoList& units) const {
   NOTIMPLEMENTED_LOG_ONCE();
 }
 
diff --git a/extensions/browser/api/system_display/display_info_provider.h b/extensions/browser/api/system_display/display_info_provider.h
index 9fc64fe..89b6fa8 100644
--- a/extensions/browser/api/system_display/display_info_provider.h
+++ b/extensions/browser/api/system_display/display_info_provider.h
@@ -138,11 +138,12 @@
       int64_t primary_display_id);
 
  private:
-  // Update the content of the `unit` obtained for `display` using
-  // platform specific method. This must be safe to call off the ui thread.
+  // Update the content of each unit in `units` obtained from the corresponding
+  // display in `displays` using a platform specific method.
+  // This must be safe to call off the ui thread.
   virtual void UpdateDisplayUnitInfoForPlatform(
-      const display::Display& display,
-      api::system_display::DisplayUnitInfo* unit) const;
+      const std::vector<display::Display>& displays,
+      DisplayUnitInfoList& units) const;
 
   // DisplayObserver
   void OnDisplayAdded(const display::Display& new_display) override;
diff --git a/extensions/browser/mock_display_info_provider.cc b/extensions/browser/mock_display_info_provider.cc
index f2c0f66..503061b 100644
--- a/extensions/browser/mock_display_info_provider.cc
+++ b/extensions/browser/mock_display_info_provider.cc
@@ -96,23 +96,26 @@
 }
 
 void MockDisplayInfoProvider::UpdateDisplayUnitInfoForPlatform(
-    const display::Display& display,
-    extensions::api::system_display::DisplayUnitInfo* unit) const {
-  int64_t id = display.id();
-  unit->name = "DISPLAY NAME FOR " + base::NumberToString(id);
-  if (id == 1)
-    unit->mirroring_source_id = "0";
-  unit->is_primary = id == 0 ? true : false;
-  unit->is_internal = id == 0 ? true : false;
-  unit->is_enabled = true;
-  unit->rotation = (90 * id) % 360;
-  unit->dpi_x = 96.0;
-  unit->dpi_y = 96.0;
-  if (id == 0) {
-    unit->overscan.left = 20;
-    unit->overscan.top = 40;
-    unit->overscan.right = 60;
-    unit->overscan.bottom = 80;
+    const std::vector<display::Display>& displays,
+    DisplayUnitInfoList& units) const {
+  for (size_t i = 0; i < displays.size(); i++) {
+    int64_t id = displays[i].id();
+    units[i].name = "DISPLAY NAME FOR " + base::NumberToString(id);
+    if (id == 1)
+      units[i].mirroring_source_id = "0";
+
+    units[i].is_primary = (id == 0);
+    units[i].is_internal = (id == 0);
+    units[i].is_enabled = true;
+    units[i].rotation = (90 * id) % 360;
+    units[i].dpi_x = 96.0;
+    units[i].dpi_y = 96.0;
+    if (id == 0) {
+      units[i].overscan.left = 20;
+      units[i].overscan.top = 40;
+      units[i].overscan.right = 60;
+      units[i].overscan.bottom = 80;
+    }
   }
 }
 
diff --git a/extensions/browser/mock_display_info_provider.h b/extensions/browser/mock_display_info_provider.h
index 9a15c457..66e93e79 100644
--- a/extensions/browser/mock_display_info_provider.h
+++ b/extensions/browser/mock_display_info_provider.h
@@ -72,11 +72,11 @@
 
  private:
   // DisplayInfoProvider override.
-  // Update the content of the |unit| obtained for |display| using
-  // platform specific method.
+  // Update the content of each unit in `units` obtained from the corresponding
+  // display in `displays` using a platform specific method.
   void UpdateDisplayUnitInfoForPlatform(
-      const display::Display& display,
-      extensions::api::system_display::DisplayUnitInfo* unit) const override;
+      const std::vector<display::Display>& displays,
+      DisplayUnitInfoList& units) const override;
 
   std::unique_ptr<base::DictionaryValue> set_info_value_;
   std::string set_info_display_id_;
diff --git a/fuchsia_web/webengine/browser/web_engine_memory_inspector.cc b/fuchsia_web/webengine/browser/web_engine_memory_inspector.cc
index e5106d5..0705549 100644
--- a/fuchsia_web/webengine/browser/web_engine_memory_inspector.cc
+++ b/fuchsia_web/webengine/browser/web_engine_memory_inspector.cc
@@ -138,7 +138,7 @@
       base::trace_event::MemoryDumpLevelOfDetail::BACKGROUND,
       base::trace_event::MemoryDumpDeterminism::NONE, AllocatorDumpNames(),
       base::BindOnce(&WebEngineMemoryInspector::OnMemoryDumpComplete,
-                     weak_this_.GetWeakPtr(), base::TimeTicks::Now(),
+                     weak_this_.GetMutableWeakPtr(), base::TimeTicks::Now(),
                      context.suspend_task()));
 
   return fpromise::pending();
diff --git a/gpu/command_buffer/common/gpu_memory_buffer_support.cc b/gpu/command_buffer/common/gpu_memory_buffer_support.cc
index 047872e..b8723779 100644
--- a/gpu/command_buffer/common/gpu_memory_buffer_support.cc
+++ b/gpu/command_buffer/common/gpu_memory_buffer_support.cc
@@ -68,6 +68,16 @@
 
 GPU_EXPORT bool IsPlaneValidForGpuMemoryBufferFormat(gfx::BufferPlane plane,
                                                      gfx::BufferFormat format) {
+#if BUILDFLAG(IS_MAC)
+  // On macOS each plane of a YUV GpuMemoryBuffer must be sampled separately.
+  switch (format) {
+    case gfx::BufferFormat::YUV_420_BIPLANAR:
+    case gfx::BufferFormat::P010:
+      return plane == gfx::BufferPlane::Y || plane == gfx::BufferPlane::UV;
+    default:
+      return plane == gfx::BufferPlane::DEFAULT;
+  }
+#else
   switch (format) {
     case gfx::BufferFormat::YVU_420:
       return plane == gfx::BufferPlane::DEFAULT ||
@@ -79,6 +89,7 @@
     default:
       return plane == gfx::BufferPlane::DEFAULT;
   }
+#endif
   NOTREACHED();
   return false;
 }
@@ -96,7 +107,6 @@
       if (format == gfx::BufferFormat::P010) {
         return gfx::BufferFormat::R_16;
       }
-      NOTREACHED();
       break;
     case gfx::BufferPlane::UV:
       if (format == gfx::BufferFormat::YUV_420_BIPLANAR)
diff --git a/gpu/command_buffer/service/BUILD.gn b/gpu/command_buffer/service/BUILD.gn
index 5a70f4f8..6548a93 100644
--- a/gpu/command_buffer/service/BUILD.gn
+++ b/gpu/command_buffer/service/BUILD.gn
@@ -176,6 +176,7 @@
     "id_manager.h",
     "indexed_buffer_binding_host.cc",
     "indexed_buffer_binding_host.h",
+    "isolation_key_provider.h",
     "logger.cc",
     "logger.h",
     "mailbox_manager_dummy.cc",
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_unittest_textures.cc b/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_unittest_textures.cc
index a74f61fc1..362afa74 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_unittest_textures.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_unittest_textures.cc
@@ -38,8 +38,7 @@
 TEST_F(GLES2DecoderPassthroughTest, CreateAndTexStorage2DSharedImageCHROMIUM) {
   MemoryTypeTracker memory_tracker(nullptr);
   Mailbox mailbox = Mailbox::GenerateForSharedImage();
-  auto format =
-      viz::SharedImageFormat::SinglePlane(viz::ResourceFormat::RGBA_8888);
+  auto format = viz::SharedImageFormat::kRGBA_8888;
   auto backing = AllocateTextureAndCreateSharedImage(
       mailbox, format, gfx::Size(10, 10), gfx::ColorSpace(),
       kTopLeft_GrSurfaceOrigin, kPremul_SkAlphaType, 0);
@@ -103,8 +102,7 @@
   MemoryTypeTracker memory_tracker(nullptr);
   // Create a texture with kNewClientId.
   Mailbox mailbox = Mailbox::GenerateForSharedImage();
-  auto format =
-      viz::SharedImageFormat::SinglePlane(viz::ResourceFormat::RGBA_8888);
+  auto format = viz::SharedImageFormat::kRGBA_8888;
   std::unique_ptr<SharedImageRepresentationFactoryRef> shared_image =
       GetSharedImageManager()->Register(
           AllocateTextureAndCreateSharedImage(
@@ -140,8 +138,7 @@
       shared_images;
   for (int i = 0; i < 40; i++) {
     Mailbox mailbox = Mailbox::GenerateForSharedImage();
-    auto format =
-        viz::SharedImageFormat::SinglePlane(viz::ResourceFormat::RGBA_8888);
+    auto format = viz::SharedImageFormat::kRGBA_8888;
     std::unique_ptr<SharedImageRepresentationFactoryRef> shared_image =
         GetSharedImageManager()->Register(
             AllocateTextureAndCreateSharedImage(
@@ -209,8 +206,7 @@
   // Create a shared image.
   MemoryTypeTracker memory_tracker(nullptr);
   Mailbox mailbox = Mailbox::GenerateForSharedImage();
-  auto format =
-      viz::SharedImageFormat::SinglePlane(viz::ResourceFormat::RGBA_8888);
+  auto format = viz::SharedImageFormat::kRGBA_8888;
   auto shared_image_backing = AllocateTextureAndCreateSharedImage(
       mailbox, format, gfx::Size(10, 10), gfx::ColorSpace(),
       kTopLeft_GrSurfaceOrigin, kPremul_SkAlphaType, 0);
@@ -252,8 +248,7 @@
   // Create an uncleared shared image.
   MemoryTypeTracker memory_tracker(nullptr);
   Mailbox mailbox = Mailbox::GenerateForSharedImage();
-  auto format =
-      viz::SharedImageFormat::SinglePlane(viz::ResourceFormat::RGBA_8888);
+  auto format = viz::SharedImageFormat::kRGBA_8888;
   std::unique_ptr<SharedImageRepresentationFactoryRef> shared_image =
       GetSharedImageManager()->Register(
           AllocateTextureAndCreateSharedImage(
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_textures.cc b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_textures.cc
index a5c3adf..4866cb2 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_textures.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_textures.cc
@@ -3075,8 +3075,7 @@
 TEST_P(GLES2DecoderTest, CreateAndTexStorage2DSharedImageCHROMIUM) {
   MemoryTypeTracker memory_tracker(memory_tracker_.get());
   Mailbox mailbox = Mailbox::GenerateForSharedImage();
-  auto format =
-      viz::SharedImageFormat::SinglePlane(viz::ResourceFormat::RGBA_8888);
+  auto format = viz::SharedImageFormat::kRGBA_8888;
   std::unique_ptr<SharedImageRepresentationFactoryRef> shared_image =
       GetSharedImageManager()->Register(
           std::make_unique<TestImageBacking>(
@@ -3139,8 +3138,7 @@
   // Try to create a mailbox with kNewClientId.
   MemoryTypeTracker memory_tracker(memory_tracker_.get());
   Mailbox mailbox = Mailbox::GenerateForSharedImage();
-  auto format =
-      viz::SharedImageFormat::SinglePlane(viz::ResourceFormat::RGBA_8888);
+  auto format = viz::SharedImageFormat::kRGBA_8888;
   std::unique_ptr<SharedImageRepresentationFactoryRef> shared_image =
       GetSharedImageManager()->Register(
           std::make_unique<TestImageBacking>(
@@ -3165,8 +3163,7 @@
 TEST_P(GLES2DecoderTest, BeginEndSharedImageAccessCRHOMIUM) {
   MemoryTypeTracker memory_tracker(memory_tracker_.get());
   Mailbox mailbox = Mailbox::GenerateForSharedImage();
-  auto format =
-      viz::SharedImageFormat::SinglePlane(viz::ResourceFormat::RGBA_8888);
+  auto format = viz::SharedImageFormat::kRGBA_8888;
   std::unique_ptr<SharedImageRepresentationFactoryRef> shared_image =
       GetSharedImageManager()->Register(
           std::make_unique<TestImageBacking>(
@@ -3228,8 +3225,7 @@
   // Create a shared image.
   MemoryTypeTracker memory_tracker(memory_tracker_.get());
   Mailbox mailbox = Mailbox::GenerateForSharedImage();
-  auto format =
-      viz::SharedImageFormat::SinglePlane(viz::ResourceFormat::RGBA_8888);
+  auto format = viz::SharedImageFormat::kRGBA_8888;
   auto shared_image_backing = std::make_unique<TestImageBacking>(
       mailbox, format, gfx::Size(10, 10), gfx::ColorSpace(),
       kTopLeft_GrSurfaceOrigin, kPremul_SkAlphaType, 0, 0, kNewServiceId);
diff --git a/gpu/command_buffer/service/isolation_key_provider.h b/gpu/command_buffer/service/isolation_key_provider.h
new file mode 100644
index 0000000..7d64d30
--- /dev/null
+++ b/gpu/command_buffer/service/isolation_key_provider.h
@@ -0,0 +1,39 @@
+// Copyright (c) 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef GPU_COMMAND_BUFFER_SERVICE_ISOLATION_KEY_PROVIDER_H_
+#define GPU_COMMAND_BUFFER_SERVICE_ISOLATION_KEY_PROVIDER_H_
+
+#include "base/callback.h"
+#include "gpu/gpu_gles2_export.h"
+#include "third_party/blink/public/common/tokens/tokens.h"
+
+namespace gpu {
+
+// Interface that can be implemented and passed to users (i.e. decoders) to get
+// an isolation key given an token. Note that in most cases, the token is
+// passed via the client so it cannot necessarily be trusted. As a result, this
+// provider is a layer of security that may either do validation on the token,
+// or ask a trusted source for an isolation key given the client and frame. This
+// way, the potential vulnerability surface is limited to at most the
+// untrusted client.
+// TODO(dawn:549) The interface is taking a WebGPUExecutionContextToken since it
+//     is only used in WebGPU, and DocumentToken is not included in the default
+//     ExecutionContextToken yet. This interface may be updated to use the
+//     ExecutionContextToken should DocumentToken become a part of it.
+class GPU_GLES2_EXPORT IsolationKeyProvider {
+ public:
+  using GetIsolationKeyCallback =
+      base::OnceCallback<void(const std::string& isolation_key)>;
+
+  virtual void GetIsolationKey(const blink::WebGPUExecutionContextToken& token,
+                               GetIsolationKeyCallback cb) = 0;
+
+ protected:
+  virtual ~IsolationKeyProvider() = default;
+};
+
+}  // namespace gpu
+
+#endif  // GPU_COMMAND_BUFFER_SERVICE_ISOLATION_KEY_PROVIDER_H_
diff --git a/gpu/command_buffer/service/mocks.cc b/gpu/command_buffer/service/mocks.cc
index b9e55d82..7340fa1 100644
--- a/gpu/command_buffer/service/mocks.cc
+++ b/gpu/command_buffer/service/mocks.cc
@@ -73,6 +73,9 @@
 MockDecoderClient::MockDecoderClient() = default;
 MockDecoderClient::~MockDecoderClient() = default;
 
+MockIsolationKeyProvider::MockIsolationKeyProvider() = default;
+MockIsolationKeyProvider::~MockIsolationKeyProvider() = default;
+
 namespace gles2 {
 
 MockShaderTranslator::MockShaderTranslator() = default;
diff --git a/gpu/command_buffer/service/mocks.h b/gpu/command_buffer/service/mocks.h
index cef0721b..5e10fbe 100644
--- a/gpu/command_buffer/service/mocks.h
+++ b/gpu/command_buffer/service/mocks.h
@@ -20,6 +20,7 @@
 #include "gpu/command_buffer/common/cmd_buffer_common.h"
 #include "gpu/command_buffer/service/async_api_interface.h"
 #include "gpu/command_buffer/service/decoder_client.h"
+#include "gpu/command_buffer/service/isolation_key_provider.h"
 #include "gpu/command_buffer/service/memory_tracking.h"
 #include "gpu/command_buffer/service/program_cache.h"
 #include "gpu/command_buffer/service/shader_translator.h"
@@ -109,6 +110,18 @@
   MOCK_METHOD(void, HandleReturnData, (base::span<const uint8_t> data));
 };
 
+class MockIsolationKeyProvider : public IsolationKeyProvider {
+ public:
+  MockIsolationKeyProvider();
+  ~MockIsolationKeyProvider() override;
+
+  MOCK_METHOD(void,
+              GetIsolationKey,
+              (const blink::WebGPUExecutionContextToken& token,
+               GetIsolationKeyCallback cb),
+              (override));
+};
+
 namespace gles2 {
 
 class MockShaderTranslator : public ShaderTranslatorInterface {
diff --git a/gpu/command_buffer/service/shared_image/ahardwarebuffer_image_backing_factory.cc b/gpu/command_buffer/service/shared_image/ahardwarebuffer_image_backing_factory.cc
index a6211d7..a964eff 100644
--- a/gpu/command_buffer/service/shared_image/ahardwarebuffer_image_backing_factory.cc
+++ b/gpu/command_buffer/service/shared_image/ahardwarebuffer_image_backing_factory.cc
@@ -547,7 +547,7 @@
 
   // Check if the format is supported by AHardwareBuffer.
   if (!format_info.ahb_supported) {
-    LOG(ERROR) << "viz::ResourceFormat " << viz::ResourceFormatToString(format)
+    LOG(ERROR) << "viz::ResourceFormat " << format.ToString()
                << " not supported by AHardwareBuffer";
     return false;
   }
@@ -568,7 +568,7 @@
     // Check if the GL texture can be created from AHB with this format.
     if (!format_info.gl_supported) {
       LOG(ERROR)
-          << "viz::ResourceFormat " << viz::ResourceFormatToString(format)
+          << "viz::ResourceFormat " << format.ToString()
           << " can not be used to create a GL texture from AHardwareBuffer.";
       return false;
     }
diff --git a/gpu/command_buffer/service/shared_image/ahardwarebuffer_image_backing_factory_unittest.cc b/gpu/command_buffer/service/shared_image/ahardwarebuffer_image_backing_factory_unittest.cc
index 242f75cb..3450ad8 100644
--- a/gpu/command_buffer/service/shared_image/ahardwarebuffer_image_backing_factory_unittest.cc
+++ b/gpu/command_buffer/service/shared_image/ahardwarebuffer_image_backing_factory_unittest.cc
@@ -163,8 +163,7 @@
 
   // Create a backing using mailbox.
   auto mailbox = Mailbox::GenerateForSharedImage();
-  auto format =
-      viz::SharedImageFormat::SinglePlane(viz::ResourceFormat::RGBA_8888);
+  auto format = viz::SharedImageFormat::kRGBA_8888;
   gfx::Size size(1, 1);
   auto color_space = gfx::ColorSpace::CreateSRGB();
   GrSurfaceOrigin surface_origin = kTopLeft_GrSurfaceOrigin;
@@ -224,8 +223,7 @@
     return;
 
   auto mailbox = Mailbox::GenerateForSharedImage();
-  auto format =
-      viz::SharedImageFormat::SinglePlane(viz::ResourceFormat::RGBA_8888);
+  auto format = viz::SharedImageFormat::kRGBA_8888;
   gfx::Size size(4, 4);
 
   std::vector<uint8_t> initial_data(size.width() * size.height() * 4);
@@ -283,8 +281,7 @@
     return;
 
   auto mailbox = Mailbox::GenerateForSharedImage();
-  auto format =
-      viz::SharedImageFormat::SinglePlane(viz::ResourceFormat::RGBA_8888);
+  auto format = viz::SharedImageFormat::kRGBA_8888;
   gfx::Size size(0, 0);
   auto color_space = gfx::ColorSpace::CreateSRGB();
   GrSurfaceOrigin surface_origin = kTopLeft_GrSurfaceOrigin;
@@ -308,8 +305,7 @@
     return;
 
   auto mailbox = Mailbox::GenerateForSharedImage();
-  auto format =
-      viz::SharedImageFormat::SinglePlane(viz::ResourceFormat::RGBA_8888);
+  auto format = viz::SharedImageFormat::kRGBA_8888;
   gfx::Size size(256, 256);
   auto color_space = gfx::ColorSpace::CreateSRGB();
   GrSurfaceOrigin surface_origin = kTopLeft_GrSurfaceOrigin;
@@ -499,8 +495,7 @@
     SharedImageRepresentationFactory* shared_image_representation_factory)
     : size_(256, 256) {
   mailbox_ = Mailbox::GenerateForSharedImage();
-  auto format =
-      viz::SharedImageFormat::SinglePlane(viz::ResourceFormat::RGBA_8888);
+  auto format = viz::SharedImageFormat::kRGBA_8888;
   auto color_space = gfx::ColorSpace::CreateSRGB();
   GrSurfaceOrigin surface_origin = kTopLeft_GrSurfaceOrigin;
   SkAlphaType alpha_type = kPremul_SkAlphaType;
diff --git a/gpu/command_buffer/service/shared_image/compound_image_backing.cc b/gpu/command_buffer/service/shared_image/compound_image_backing.cc
index 6b605d1..ddf6c281 100644
--- a/gpu/command_buffer/service/shared_image/compound_image_backing.cc
+++ b/gpu/command_buffer/service/shared_image/compound_image_backing.cc
@@ -532,7 +532,7 @@
 
   dump->AddString("type", "", GetName());
   dump->AddString("dimensions", "", size().ToString());
-  dump->AddString("format", "", viz::ResourceFormatToString(format()));
+  dump->AddString("format", "", format().ToString());
   dump->AddString("usage", "", CreateLabelForSharedImageUsage(usage()));
 
   // Add ownership edge to `client_guid` which expresses shared ownership with
diff --git a/gpu/command_buffer/service/shared_image/d3d_image_backing.cc b/gpu/command_buffer/service/shared_image/d3d_image_backing.cc
index 172f3294..8147503 100644
--- a/gpu/command_buffer/service/shared_image/d3d_image_backing.cc
+++ b/gpu/command_buffer/service/shared_image/d3d_image_backing.cc
@@ -563,14 +563,13 @@
   const viz::SharedImageFormat viz_si_format = format();
   const WGPUTextureFormat wgpu_format = viz::ToWGPUFormat(viz_si_format);
   if (wgpu_format == WGPUTextureFormat_Undefined) {
-    LOG(ERROR) << "Unsupported viz format found: "
-               << viz::ResourceFormatToString(viz_si_format);
+    LOG(ERROR) << "Unsupported viz format found: " << viz_si_format.ToString();
     return nullptr;
   }
   const WGPUTextureUsageFlags usage = GetAllowedDawnUsages(wgpu_format);
   if (usage == WGPUTextureUsage_None) {
     LOG(ERROR) << "WGPUTextureUsage is unknown for viz format: "
-               << viz::ResourceFormatToString(viz_si_format);
+               << viz_si_format.ToString();
     return nullptr;
   }
 
diff --git a/gpu/command_buffer/service/shared_image/d3d_image_backing_factory_unittest.cc b/gpu/command_buffer/service/shared_image/d3d_image_backing_factory_unittest.cc
index ccb1660..e502cade 100644
--- a/gpu/command_buffer/service/shared_image/d3d_image_backing_factory_unittest.cc
+++ b/gpu/command_buffer/service/shared_image/d3d_image_backing_factory_unittest.cc
@@ -537,8 +537,7 @@
 
   // Create a backing using mailbox.
   auto mailbox = Mailbox::GenerateForSharedImage();
-  const auto format =
-      viz::SharedImageFormat::SinglePlane(viz::ResourceFormat::RGBA_8888);
+  const auto format = viz::SharedImageFormat::kRGBA_8888;
   const gfx::Size size(1, 1);
   const auto color_space = gfx::ColorSpace::CreateSRGB();
   const uint32_t usage =
@@ -624,8 +623,7 @@
 
   // Create a backing using mailbox.
   const auto mailbox = Mailbox::GenerateForSharedImage();
-  const auto format =
-      viz::SharedImageFormat::SinglePlane(viz::ResourceFormat::RGBA_8888);
+  const auto format = viz::SharedImageFormat::kRGBA_8888;
   const gfx::Size size(1, 1);
   const auto color_space = gfx::ColorSpace::CreateSRGB();
   const gpu::SurfaceHandle surface_handle = gpu::kNullSurfaceHandle;
@@ -696,8 +694,7 @@
 
   // Create a backing using mailbox.
   auto mailbox = Mailbox::GenerateForSharedImage();
-  const auto format =
-      viz::SharedImageFormat::SinglePlane(viz::ResourceFormat::RGBA_8888);
+  const auto format = viz::SharedImageFormat::kRGBA_8888;
   const gfx::Size size(1, 1);
   const auto color_space = gfx::ColorSpace::CreateSRGB();
   const uint32_t usage = SHARED_IMAGE_USAGE_GLES2 |
@@ -824,8 +821,7 @@
 
   // Create a backing using mailbox.
   auto mailbox = Mailbox::GenerateForSharedImage();
-  const auto format =
-      viz::SharedImageFormat::SinglePlane(viz::ResourceFormat::RGBA_8888);
+  const auto format = viz::SharedImageFormat::kRGBA_8888;
   const gfx::Size size(1, 1);
   const auto color_space = gfx::ColorSpace::CreateSRGB();
   const uint32_t usage = SHARED_IMAGE_USAGE_GLES2 |
@@ -923,8 +919,7 @@
 
   // Create a mailbox.
   auto mailbox = Mailbox::GenerateForSharedImage();
-  const auto format =
-      viz::SharedImageFormat::SinglePlane(viz::ResourceFormat::RGBA_8888);
+  const auto format = viz::SharedImageFormat::kRGBA_8888;
   const gfx::Size size(1, 1);
   const auto color_space = gfx::ColorSpace::CreateSRGB();
   const uint32_t usage =
@@ -1102,8 +1097,7 @@
 
   // Create a backing using mailbox.
   auto mailbox = Mailbox::GenerateForSharedImage();
-  const auto format =
-      viz::SharedImageFormat::SinglePlane(viz::ResourceFormat::RGBA_8888);
+  const auto format = viz::SharedImageFormat::kRGBA_8888;
   const gfx::Size size(1, 1);
   const auto color_space = gfx::ColorSpace::CreateSRGB();
   const uint32_t usage = SHARED_IMAGE_USAGE_GLES2 |
@@ -1234,8 +1228,7 @@
 
   // Create a backing using mailbox.
   auto mailbox = Mailbox::GenerateForSharedImage();
-  const auto format =
-      viz::SharedImageFormat::SinglePlane(viz::ResourceFormat::RGBA_8888);
+  const auto format = viz::SharedImageFormat::kRGBA_8888;
   const gfx::Size size(1, 1);
   const auto color_space = gfx::ColorSpace::CreateSRGB();
   const uint32_t usage = SHARED_IMAGE_USAGE_GLES2 |
diff --git a/gpu/command_buffer/service/shared_image/egl_image_backing_factory_unittest.cc b/gpu/command_buffer/service/shared_image/egl_image_backing_factory_unittest.cc
index 81eb988..c6a4fae 100644
--- a/gpu/command_buffer/service/shared_image/egl_image_backing_factory_unittest.cc
+++ b/gpu/command_buffer/service/shared_image/egl_image_backing_factory_unittest.cc
@@ -390,8 +390,8 @@
 }
 
 // High bit depth rendering is not supported on Android.
-const auto kSharedImageFormats = ::testing::Values(
-    viz::SharedImageFormat::SinglePlane(viz::ResourceFormat::RGBA_8888));
+const auto kSharedImageFormats =
+    ::testing::Values(viz::SharedImageFormat::kRGBA_8888);
 
 std::string TestParamToString(
     const testing::TestParamInfo<std::tuple<bool, viz::SharedImageFormat>>&
diff --git a/gpu/command_buffer/service/shared_image/external_vk_image_backing.cc b/gpu/command_buffer/service/shared_image/external_vk_image_backing.cc
index 3db486b..00cb394 100644
--- a/gpu/command_buffer/service/shared_image/external_vk_image_backing.cc
+++ b/gpu/command_buffer/service/shared_image/external_vk_image_backing.cc
@@ -656,8 +656,7 @@
       auto gl_format = gl_format_info.gl_format;
       auto gl_type = gl_format_info.gl_type;
       if (gl_format == GL_ZERO || gl_type == GL_ZERO)
-        LOG(FATAL) << "Not support format: "
-                   << viz::ResourceFormatToString(format());
+        LOG(FATAL) << "Not support format: " << format().ToString();
       api->glTexImage2DFn(GL_TEXTURE_2D, 0, gl_format, size().width(),
                           size().height(), 0, gl_format, gl_type, nullptr);
     }
@@ -1038,8 +1037,7 @@
   auto bytes_per_pixel = gl_format_info.bytes_per_pixel;
 
   if (gl_format == GL_ZERO) {
-    NOTREACHED() << "Not supported resource format="
-                 << viz::ResourceFormatToString(format());
+    NOTREACHED() << "Not supported resource format=" << format().ToString();
     return;
   }
 
@@ -1098,8 +1096,7 @@
   auto bytes_per_pixel = gl_format_info.bytes_per_pixel;
 
   if (gl_format == GL_ZERO) {
-    NOTREACHED() << "Not supported resource format="
-                 << viz::ResourceFormatToString(format());
+    NOTREACHED() << "Not supported resource format=" << format().ToString();
     return;
   }
 
@@ -1151,8 +1148,7 @@
   auto bytes_per_pixel = gl_format_info.bytes_per_pixel;
 
   if (gl_format == GL_ZERO) {
-    NOTREACHED() << "Not supported resource format="
-                 << viz::ResourceFormatToString(format());
+    NOTREACHED() << "Not supported resource format=" << format().ToString();
     return;
   }
 
diff --git a/gpu/command_buffer/service/shared_image/external_vk_image_backing_factory_unittest.cc b/gpu/command_buffer/service/shared_image/external_vk_image_backing_factory_unittest.cc
index df4f183..b8e0cde 100644
--- a/gpu/command_buffer/service/shared_image/external_vk_image_backing_factory_unittest.cc
+++ b/gpu/command_buffer/service/shared_image/external_vk_image_backing_factory_unittest.cc
@@ -155,8 +155,7 @@
   }
   // Create a backing using mailbox.
   auto mailbox = Mailbox::GenerateForSharedImage();
-  const auto format =
-      viz::SharedImageFormat::SinglePlane(viz::ResourceFormat::RGBA_8888);
+  const auto format = viz::SharedImageFormat::kRGBA_8888;
   const gfx::Size size(4, 4);
   const auto color_space = gfx::ColorSpace::CreateSRGB();
   const uint32_t usage =
@@ -280,8 +279,7 @@
   }
   // Create a backing using mailbox.
   auto mailbox = Mailbox::GenerateForSharedImage();
-  const auto format =
-      viz::SharedImageFormat::SinglePlane(viz::ResourceFormat::RGBA_8888);
+  const auto format = viz::SharedImageFormat::kRGBA_8888;
   const gfx::Size size(4, 4);
   const auto color_space = gfx::ColorSpace::CreateSRGB();
   const uint32_t usage =
diff --git a/gpu/command_buffer/service/shared_image/gl_texture_image_backing_factory_unittest.cc b/gpu/command_buffer/service/shared_image/gl_texture_image_backing_factory_unittest.cc
index b05f309..1ffec5a 100644
--- a/gpu/command_buffer/service/shared_image/gl_texture_image_backing_factory_unittest.cc
+++ b/gpu/command_buffer/service/shared_image/gl_texture_image_backing_factory_unittest.cc
@@ -203,8 +203,7 @@
 // Ensures that GLTextureImageBacking registers it's estimated size
 // with memory tracker.
 TEST_F(GLTextureImageBackingFactoryTest, EstimatedSize) {
-  auto format =
-      viz::SharedImageFormat::SinglePlane(viz::ResourceFormat::RGBA_8888);
+  auto format = viz::SharedImageFormat::kRGBA_8888;
   auto mailbox = Mailbox::GenerateForSharedImage();
   gfx::Size size(256, 256);
   auto color_space = gfx::ColorSpace::CreateSRGB();
@@ -579,7 +578,7 @@
 
 std::string TestParamToString(
     const testing::TestParamInfo<viz::SharedImageFormat>& param_info) {
-  return viz::ResourceFormatToString(param_info.param);
+  return param_info.param.ToString();
 }
 
 INSTANTIATE_TEST_SUITE_P(
diff --git a/gpu/command_buffer/service/shared_image/iosurface_image_backing_factory_unittest.cc b/gpu/command_buffer/service/shared_image/iosurface_image_backing_factory_unittest.cc
index 74f7fcf..41a4e050 100644
--- a/gpu/command_buffer/service/shared_image/iosurface_image_backing_factory_unittest.cc
+++ b/gpu/command_buffer/service/shared_image/iosurface_image_backing_factory_unittest.cc
@@ -150,8 +150,7 @@
   }
 
   Mailbox mailbox = Mailbox::GenerateForSharedImage();
-  viz::SharedImageFormat format =
-      viz::SharedImageFormat::SinglePlane(viz::ResourceFormat::RGBA_8888);
+  auto format = viz::SharedImageFormat::kRGBA_8888;
   gfx::Size size(256, 256);
   gfx::ColorSpace color_space = gfx::ColorSpace::CreateSRGB();
   GrSurfaceOrigin surface_origin = kTopLeft_GrSurfaceOrigin;
@@ -235,8 +234,7 @@
 
   // Create a backing using mailbox.
   auto mailbox = Mailbox::GenerateForSharedImage();
-  auto format =
-      viz::SharedImageFormat::SinglePlane(viz::ResourceFormat::RGBA_8888);
+  auto format = viz::SharedImageFormat::kRGBA_8888;
   gfx::Size size(1, 1);
   auto color_space = gfx::ColorSpace::CreateSRGB();
   GrSurfaceOrigin surface_origin = kTopLeft_GrSurfaceOrigin;
@@ -317,8 +315,7 @@
 
   // Create a backing using mailbox.
   auto mailbox = Mailbox::GenerateForSharedImage();
-  auto format =
-      viz::SharedImageFormat::SinglePlane(viz::ResourceFormat::RGBA_8888);
+  auto format = viz::SharedImageFormat::kRGBA_8888;
   gfx::Size size(1, 1);
   auto color_space = gfx::ColorSpace::CreateSRGB();
   GrSurfaceOrigin surface_origin = kTopLeft_GrSurfaceOrigin;
@@ -392,8 +389,7 @@
 
   // Create a backing using mailbox.
   auto mailbox = Mailbox::GenerateForSharedImage();
-  const auto format =
-      viz::SharedImageFormat::SinglePlane(viz::ResourceFormat::RGBA_8888);
+  const auto format = viz::SharedImageFormat::kRGBA_8888;
   const gfx::Size size(1, 1);
   const auto color_space = gfx::ColorSpace::CreateSRGB();
   GrSurfaceOrigin surface_origin = kTopLeft_GrSurfaceOrigin;
@@ -517,8 +513,7 @@
 TEST_F(IOSurfaceImageBackingFactoryTest, UnclearDawn_SkiaFails) {
   // Create a backing using mailbox.
   auto mailbox = Mailbox::GenerateForSharedImage();
-  const auto format =
-      viz::SharedImageFormat::SinglePlane(viz::ResourceFormat::RGBA_8888);
+  const auto format = viz::SharedImageFormat::kRGBA_8888;
   const gfx::Size size(1, 1);
   const auto color_space = gfx::ColorSpace::CreateSRGB();
   GrSurfaceOrigin surface_origin = kTopLeft_GrSurfaceOrigin;
@@ -613,8 +608,7 @@
 TEST_F(IOSurfaceImageBackingFactoryTest, SkiaAccessFirstFails) {
   // Create a mailbox.
   auto mailbox = Mailbox::GenerateForSharedImage();
-  const auto format =
-      viz::SharedImageFormat::SinglePlane(viz::ResourceFormat::RGBA_8888);
+  const auto format = viz::SharedImageFormat::kRGBA_8888;
   const gfx::Size size(1, 1);
   const auto color_space = gfx::ColorSpace::CreateSRGB();
   GrSurfaceOrigin surface_origin = kTopLeft_GrSurfaceOrigin;
diff --git a/gpu/command_buffer/service/shared_image/shared_image_backing.cc b/gpu/command_buffer/service/shared_image/shared_image_backing.cc
index f6b737f..c1aa62e 100644
--- a/gpu/command_buffer/service/shared_image/shared_image_backing.cc
+++ b/gpu/command_buffer/service/shared_image/shared_image_backing.cc
@@ -129,7 +129,7 @@
 
   dump->AddString("type", "", GetName());
   dump->AddString("dimensions", "", size().ToString());
-  dump->AddString("format", "", viz::ResourceFormatToString(format()));
+  dump->AddString("format", "", format().ToString());
   dump->AddString("usage", "", CreateLabelForSharedImageUsage(usage()));
 
   // Add ownership edge to `client_guid` which expresses shared ownership with
diff --git a/gpu/command_buffer/service/shared_image/shared_image_factory.cc b/gpu/command_buffer/service/shared_image/shared_image_factory.cc
index 760031d..17fa2bd 100644
--- a/gpu/command_buffer/service/shared_image/shared_image_factory.cc
+++ b/gpu/command_buffer/service/shared_image/shared_image_factory.cc
@@ -305,7 +305,7 @@
   DVLOG(1) << "CreateSharedImage[" << backing->GetName()
            << "] size=" << size.ToString()
            << " usage=" << CreateLabelForSharedImageUsage(usage)
-           << " resource_format=" << viz::ResourceFormatToString(format);
+           << " resource_format=" << format.ToString();
   return RegisterBacking(std::move(backing));
 }
 
@@ -334,7 +334,7 @@
     DVLOG(1) << "CreateSharedImagePixels[" << backing->GetName()
              << "] with pixels size=" << size.ToString()
              << " usage=" << CreateLabelForSharedImageUsage(usage)
-             << " resource_format=" << viz::ResourceFormatToString(format);
+             << " resource_format=" << format.ToString();
 
     backing->OnWriteSucceeded();
   }
@@ -574,7 +574,7 @@
 
   LOG(ERROR) << "Could not find SharedImageBackingFactory with params: usage: "
              << CreateLabelForSharedImageUsage(usage)
-             << ", format: " << viz::ResourceFormatToString(format)
+             << ", format: " << format.ToString()
              << ", share_between_threads: " << share_between_threads
              << ", gmb_type: " << GmbTypeToString(gmb_type);
   return nullptr;
diff --git a/gpu/command_buffer/service/shared_image/shared_image_manager_unittest.cc b/gpu/command_buffer/service/shared_image/shared_image_manager_unittest.cc
index cb02023..957f195 100644
--- a/gpu/command_buffer/service/shared_image/shared_image_manager_unittest.cc
+++ b/gpu/command_buffer/service/shared_image/shared_image_manager_unittest.cc
@@ -22,8 +22,7 @@
 
 std::unique_ptr<TestImageBacking> CreateImageBacking(size_t size_in_bytes) {
   auto mailbox = Mailbox::GenerateForSharedImage();
-  auto format =
-      viz::SharedImageFormat::SinglePlane(viz::ResourceFormat::RGBA_8888);
+  auto format = viz::SharedImageFormat::kRGBA_8888;
   gfx::Size size(256, 256);
   auto color_space = gfx::ColorSpace::CreateSRGB();
   auto surface_origin = kTopLeft_GrSurfaceOrigin;
@@ -41,8 +40,7 @@
   auto tracker = std::make_unique<MemoryTypeTracker>(nullptr);
 
   auto mailbox = Mailbox::GenerateForSharedImage();
-  auto format =
-      viz::SharedImageFormat::SinglePlane(viz::ResourceFormat::RGBA_8888);
+  auto format = viz::SharedImageFormat::kRGBA_8888;
   gfx::Size size(256, 256);
   auto color_space = gfx::ColorSpace::CreateSRGB();
   auto surface_origin = kTopLeft_GrSurfaceOrigin;
@@ -114,8 +112,7 @@
   auto tracker = std::make_unique<MemoryTypeTracker>(nullptr);
 
   auto mailbox = Mailbox::GenerateForSharedImage();
-  auto format =
-      viz::SharedImageFormat::SinglePlane(viz::ResourceFormat::RGBA_8888);
+  auto format = viz::SharedImageFormat::kRGBA_8888;
   gfx::Size size(256, 256);
   auto color_space = gfx::ColorSpace::CreateSRGB();
   auto surface_origin = kTopLeft_GrSurfaceOrigin;
@@ -147,8 +144,7 @@
   auto tracker2 = std::make_unique<MemoryTypeTracker>(nullptr);
 
   auto mailbox = Mailbox::GenerateForSharedImage();
-  auto format =
-      viz::SharedImageFormat::SinglePlane(viz::ResourceFormat::RGBA_8888);
+  auto format = viz::SharedImageFormat::kRGBA_8888;
   gfx::Size size(256, 256);
   auto color_space = gfx::ColorSpace::CreateSRGB();
   auto surface_origin = kTopLeft_GrSurfaceOrigin;
@@ -218,8 +214,7 @@
       &memory_tracker2, memory_tracker2.task_runner());
 
   auto mailbox = Mailbox::GenerateForSharedImage();
-  auto format =
-      viz::SharedImageFormat::SinglePlane(viz::ResourceFormat::RGBA_8888);
+  auto format = viz::SharedImageFormat::kRGBA_8888;
   gfx::Size size(256, 256);
   auto color_space = gfx::ColorSpace::CreateSRGB();
   auto surface_origin = kTopLeft_GrSurfaceOrigin;
diff --git a/gpu/command_buffer/service/shared_image/shared_image_representation_unittest.cc b/gpu/command_buffer/service/shared_image/shared_image_representation_unittest.cc
index ea128d21..8aea5ed 100644
--- a/gpu/command_buffer/service/shared_image/shared_image_representation_unittest.cc
+++ b/gpu/command_buffer/service/shared_image/shared_image_representation_unittest.cc
@@ -23,8 +23,7 @@
   void SetUp() override {
     tracker_ = std::make_unique<MemoryTypeTracker>(nullptr);
     mailbox_ = Mailbox::GenerateForSharedImage();
-    auto format =
-        viz::SharedImageFormat::SinglePlane(viz::ResourceFormat::RGBA_8888);
+    auto format = viz::SharedImageFormat::kRGBA_8888;
     gfx::Size size(256, 256);
     auto color_space = gfx::ColorSpace::CreateSRGB();
     auto surface_origin = kTopLeft_GrSurfaceOrigin;
diff --git a/gpu/command_buffer/service/shared_image/skia_gl_image_representation.cc b/gpu/command_buffer/service/shared_image/skia_gl_image_representation.cc
index e0ab8c4..38a6a26 100644
--- a/gpu/command_buffer/service/shared_image/skia_gl_image_representation.cc
+++ b/gpu/command_buffer/service/shared_image/skia_gl_image_representation.cc
@@ -76,6 +76,8 @@
 SkiaGLImageRepresentation::~SkiaGLImageRepresentation() {
   DCHECK_EQ(RepresentationAccessMode::kNone, mode_);
   surface_.reset();
+
+  DCHECK_EQ(!has_context(), context_state_->context_lost());
   if (!has_context())
     gl_representation_->OnContextLost();
 }
diff --git a/gpu/command_buffer/service/webgpu_decoder.cc b/gpu/command_buffer/service/webgpu_decoder.cc
index 94698146..59e86e7 100644
--- a/gpu/command_buffer/service/webgpu_decoder.cc
+++ b/gpu/command_buffer/service/webgpu_decoder.cc
@@ -23,12 +23,13 @@
     gles2::Outputter* outputter,
     const GpuPreferences& gpu_preferences,
     scoped_refptr<SharedContextState> shared_context_state,
-    const DawnCacheOptions& dawn_cache_options) {
+    const DawnCacheOptions& dawn_cache_options,
+    IsolationKeyProvider* isolation_key_provider) {
 #if BUILDFLAG(USE_DAWN)
   return CreateWebGPUDecoderImpl(
       client, command_buffer_service, shared_image_manager, memory_tracker,
       outputter, gpu_preferences, std::move(shared_context_state),
-      dawn_cache_options);
+      dawn_cache_options, isolation_key_provider);
 #else
   NOTREACHED();
   return nullptr;
diff --git a/gpu/command_buffer/service/webgpu_decoder.h b/gpu/command_buffer/service/webgpu_decoder.h
index 2ad7b3b1..e0ae6fb 100644
--- a/gpu/command_buffer/service/webgpu_decoder.h
+++ b/gpu/command_buffer/service/webgpu_decoder.h
@@ -16,6 +16,7 @@
 class DecoderClient;
 struct GpuFeatureInfo;
 struct GpuPreferences;
+class IsolationKeyProvider;
 class MemoryTracker;
 class SharedContextState;
 class SharedImageManager;
@@ -45,7 +46,8 @@
       gles2::Outputter* outputter,
       const GpuPreferences& gpu_preferences,
       scoped_refptr<SharedContextState> shared_context_state,
-      const DawnCacheOptions& dawn_cache_options = {});
+      const DawnCacheOptions& dawn_cache_options = {},
+      IsolationKeyProvider* isolation_key_provider = nullptr);
 
   WebGPUDecoder(const WebGPUDecoder&) = delete;
   WebGPUDecoder& operator=(const WebGPUDecoder&) = delete;
diff --git a/gpu/command_buffer/service/webgpu_decoder_impl.cc b/gpu/command_buffer/service/webgpu_decoder_impl.cc
index 1ad2bde..7de01a3 100644
--- a/gpu/command_buffer/service/webgpu_decoder_impl.cc
+++ b/gpu/command_buffer/service/webgpu_decoder_impl.cc
@@ -18,6 +18,7 @@
 #include "base/memory/ptr_util.h"
 #include "base/memory/raw_ptr.h"
 #include "base/numerics/checked_math.h"
+#include "base/task/bind_post_task.h"
 #include "base/trace_event/trace_event.h"
 #include "base/unguessable_token.h"
 #include "build/build_config.h"
@@ -31,6 +32,7 @@
 #include "gpu/command_buffer/service/dawn_service_memory_transfer_service.h"
 #include "gpu/command_buffer/service/dawn_service_serializer.h"
 #include "gpu/command_buffer/service/decoder_client.h"
+#include "gpu/command_buffer/service/isolation_key_provider.h"
 #include "gpu/command_buffer/service/shared_context_state.h"
 #include "gpu/command_buffer/service/shared_image/shared_image_factory.h"
 #include "gpu/command_buffer/service/shared_image/shared_image_manager.h"
@@ -39,6 +41,7 @@
 #include "gpu/command_buffer/service/webgpu_decoder.h"
 #include "gpu/config/gpu_preferences.h"
 #include "gpu/webgpu/callback.h"
+#include "third_party/abseil-cpp/absl/types/optional.h"
 #include "third_party/blink/public/common/tokens/tokens.h"
 #include "third_party/skia/include/core/SkPromiseImageTexture.h"
 #include "third_party/skia/include/gpu/GrBackendSemaphore.h"
@@ -124,7 +127,8 @@
       gles2::Outputter* outputter,
       const GpuPreferences& gpu_preferences,
       scoped_refptr<SharedContextState> shared_context_state,
-      std::unique_ptr<DawnCachingInterface> dawn_caching_interface_factory);
+      std::unique_ptr<DawnCachingInterface> dawn_caching_interface_factory,
+      IsolationKeyProvider* isolation_key_provider);
 
   WebGPUDecoderImpl(const WebGPUDecoderImpl&) = delete;
   WebGPUDecoderImpl& operator=(const WebGPUDecoderImpl&) = delete;
@@ -365,6 +369,15 @@
     uint16_t arg_count;  // How many arguments are expected for this command.
   };
 
+  // Since requesting a device may be a deferred operation depending on whether
+  // an isolation key has been assigned from the browser process asynchronously,
+  // define storable callbacks that invoke device creation to be scheduled
+  // later. The argument to the callback should be true iff the device request
+  // should be executed. Passing false will effectively cancel the request with
+  // RequestDeviceStatus_Unknown. Cancelling is used on destroy to ensure that
+  // all callbacks are resolved.
+  using QueuedRequestDeviceCallback = base::OnceCallback<void(bool)>;
+
   // A table of CommandInfo for all the commands.
   static const CommandInfo command_info[kNumCommands - kFirstWebGPUCommand];
 
@@ -400,6 +413,12 @@
                          WGPURequestDeviceCallback callback,
                          void* userdata);
 
+  QueuedRequestDeviceCallback CreateQueuedRequestDeviceCallback(
+      WGPUAdapter adapter,
+      const WGPUDeviceDescriptor* descriptor,
+      WGPURequestDeviceCallback callback,
+      void* userdata);
+
   class SharedImageRepresentationAndAccess;
 
   std::unique_ptr<SharedImageRepresentationAndAccess> AssociateMailboxDawn(
@@ -415,6 +434,11 @@
                                     WGPUDevice device,
                                     WGPUTextureUsage usage);
 
+  // Device creation requires that an isolation key has been set for the
+  // decoder. As a result, this callback also runs all queued device creation
+  // calls that were requested and queued before the isolation key was ready.
+  void OnGetIsolationKey(const std::string& isolation_key);
+
   scoped_refptr<SharedContextState> shared_context_state_;
   const GrContextType gr_context_type_;
 
@@ -431,11 +455,24 @@
   std::vector<std::string> force_enabled_toggles_;
   std::vector<std::string> force_disabled_toggles_;
   bool allow_unsafe_apis_;
-  blink::WebGPUExecutionContextToken execution_context_token_;
+
+  // Isolation key that is necessary for device requests. Optional to
+  // differentiate between an empty isolation key, and an unset one.
+  absl::optional<std::string> isolation_key_;
 
   std::unique_ptr<dawn::wire::WireServer> wire_server_;
   std::unique_ptr<DawnServiceSerializer> wire_serializer_;
 
+  // Raw pointer to the isolation key provider because the provider must outlive
+  // the decoder. Currently, the only implementation of the provider is
+  // GpuChannel which is required to outlive the decoder.
+  raw_ptr<IsolationKeyProvider> isolation_key_provider_;
+
+  // A queue of request device calls that were deferred because the decoder had
+  // yet to receive a notification from the browser process regarding the
+  // isolation key to use for devices created via this decoder.
+  std::vector<QueuedRequestDeviceCallback> queued_request_device_calls_;
+
   // Helper class whose derived implementations holds a representation
   // and its ScopedAccess, ensuring safe destruction order.
   class SharedImageRepresentationAndAccess {
@@ -1030,7 +1067,8 @@
     gles2::Outputter* outputter,
     const GpuPreferences& gpu_preferences,
     scoped_refptr<SharedContextState> shared_context_state,
-    const DawnCacheOptions& dawn_cache_options) {
+    const DawnCacheOptions& dawn_cache_options,
+    IsolationKeyProvider* isolation_key_provider) {
   // Construct a Dawn caching interface if the Dawn configurations enables it.
   // If a handle was set, pass the relevant handle and DecoderClient so that
   // writing to disk is enabled. Otherwise pass an incognito in-memory version.
@@ -1046,10 +1084,10 @@
     }
   }
 
-  return new WebGPUDecoderImpl(client, command_buffer_service,
-                               shared_image_manager, memory_tracker, outputter,
-                               gpu_preferences, std::move(shared_context_state),
-                               std::move(dawn_caching_interface));
+  return new WebGPUDecoderImpl(
+      client, command_buffer_service, shared_image_manager, memory_tracker,
+      outputter, gpu_preferences, std::move(shared_context_state),
+      std::move(dawn_caching_interface), isolation_key_provider);
 }
 
 WebGPUDecoderImpl::WebGPUDecoderImpl(
@@ -1060,7 +1098,8 @@
     gles2::Outputter* outputter,
     const GpuPreferences& gpu_preferences,
     scoped_refptr<SharedContextState> shared_context_state,
-    std::unique_ptr<DawnCachingInterface> dawn_caching_interface)
+    std::unique_ptr<DawnCachingInterface> dawn_caching_interface,
+    IsolationKeyProvider* isolation_key_provider)
     : WebGPUDecoder(client, command_buffer_service, outputter),
       shared_context_state_(std::move(shared_context_state)),
       gr_context_type_(gpu_preferences.gr_context_type),
@@ -1074,7 +1113,8 @@
       dawn_instance_(
           DawnInstance::Create(dawn_platform_.get(), gpu_preferences)),
       memory_transfer_service_(new DawnServiceMemoryTransferService(this)),
-      wire_serializer_(new DawnServiceSerializer(client)) {
+      wire_serializer_(new DawnServiceSerializer(client)),
+      isolation_key_provider_(isolation_key_provider) {
   enable_unsafe_webgpu_ = gpu_preferences.enable_unsafe_webgpu;
   use_webgpu_adapter_ = gpu_preferences.use_webgpu_adapter;
   force_enabled_toggles_ = gpu_preferences.enabled_dawn_features_list;
@@ -1104,6 +1144,17 @@
       this, wire_serializer_.get(), memory_transfer_service_.get(), wire_procs);
 
   wire_server_->InjectInstance(dawn_instance_->Get(), 1, 0);
+
+  // If there is no isolation key provider (or unsafe webgpu is not enabled), we
+  // don't want to wait for an isolation key to come when processing device
+  // requests. Therefore, we can set the isolation key to an empty string to
+  // avoid blocking and disable caching in Dawn. Note that the isolation key
+  // provider is not available in some testing scenarios and the in-process
+  // command buffer case.
+  // TODO(dawn:549) Enable by default when tested and DocumentToken is used.
+  if (isolation_key_provider_ == nullptr || !enable_unsafe_webgpu_) {
+    isolation_key_ = "";
+  }
 }
 
 WebGPUDecoderImpl::~WebGPUDecoderImpl() {
@@ -1111,6 +1162,13 @@
 }
 
 void WebGPUDecoderImpl::Destroy(bool have_context) {
+  // Resolve all outstanding callbacks for queued device requests if they
+  // exist.
+  for (auto& request : queued_request_device_calls_) {
+    std::move(request).Run(false);
+  }
+  queued_request_device_calls_.clear();
+
   associated_shared_image_map_.clear();
   for (auto [device, _] : known_device_metadata_) {
     dawn::native::GetProcs().deviceRelease(device);
@@ -1254,6 +1312,17 @@
     const WGPUDeviceDescriptor* descriptor,
     WGPURequestDeviceCallback callback,
     void* userdata) {
+  // We can only request a device if we have received an isolation key from an
+  // async gpu->browser mojo. As a result, we do a check here and if we don't
+  // have the isolation key yet, we queue this request to be handled as soon as
+  // we get an isolation key.
+  if (!isolation_key_) {
+    DCHECK_NE(isolation_key_provider_, nullptr);
+    queued_request_device_calls_.emplace_back(CreateQueuedRequestDeviceCallback(
+        adapter, descriptor, callback, userdata));
+    return;
+  }
+
   // Copy the descriptor so we can modify it.
   WGPUDeviceDescriptor desc =
       descriptor != nullptr ? *descriptor : WGPUDeviceDescriptor{};
@@ -1301,6 +1370,12 @@
   if (!enable_unsafe_webgpu_) {
     force_enabled_toggles.push_back("disallow_spirv");
   }
+  // Enable the blob cache only if we have an isolation key.
+  // TODO(dawn:549) Change the flag so that default is enabled.
+  if (enable_unsafe_webgpu_ && !isolation_key_->empty()) {
+    force_enabled_toggles.push_back("enable_blob_cache");
+  }
+
   for (const std::string& toggles : force_enabled_toggles_) {
     force_enabled_toggles.push_back(toggles.c_str());
   }
@@ -1314,6 +1389,16 @@
   dawn_toggles.chain.sType = WGPUSType_DawnTogglesDeviceDescriptor;
   desc.nextInChain = reinterpret_cast<WGPUChainedStruct*>(&dawn_toggles);
 
+  // Dawn caching isolation key information needs to be passed per device. If an
+  // isolation key is empty, we do not pass this extra descriptor to tell Dawn
+  // not to use the blob store caching.
+  WGPUDawnCacheDeviceDescriptor dawn_cache = {};
+  if (!isolation_key_->empty()) {
+    dawn_cache.isolationKey = isolation_key_->c_str();
+    dawn_cache.chain.sType = WGPUSType_DawnCacheDeviceDescriptor;
+    dawn_toggles.chain.next = reinterpret_cast<WGPUChainedStruct*>(&dawn_cache);
+  }
+
   bool called = false;
   auto* bound_callback = BindWGPUOnceCallback(
       [](
@@ -1353,6 +1438,86 @@
   CHECK(called);
 }
 
+namespace {
+
+// A deep copy of WGPUDeviceDescriptor copies owns a copy of all it's members.
+// Note that the deep copy does NOT copy/own chained structs.
+struct WGPUDeviceDescriptorDeepCopy : WGPUDeviceDescriptor {
+  explicit WGPUDeviceDescriptorDeepCopy(const WGPUDeviceDescriptor& desc)
+      : WGPUDeviceDescriptor(desc) {
+    // Since the deep copy does NOT copy chained structs, CHECK all relevant
+    // chained structs for safety.
+    CHECK_EQ(desc.nextInChain, nullptr);
+    CHECK(desc.requiredLimits == nullptr ||
+          desc.requiredLimits->nextInChain == nullptr);
+    CHECK_EQ(desc.defaultQueue.nextInChain, nullptr);
+
+    if (desc.label) {
+      device_label_ = std::string(desc.label);
+      label = device_label_.c_str();
+    }
+    if (desc.requiredFeatures) {
+      required_features_ = std::vector<WGPUFeatureName>(
+          desc.requiredFeatures,
+          desc.requiredFeatures + desc.requiredFeaturesCount);
+      requiredFeatures = required_features_.data();
+    }
+    if (desc.requiredLimits) {
+      required_limits_ = *desc.requiredLimits;
+      requiredLimits = &required_limits_;
+    }
+    if (desc.defaultQueue.label) {
+      queue_label_ = std::string(desc.defaultQueue.label);
+      defaultQueue.label = queue_label_.c_str();
+    }
+  }
+
+  // Memory backed members.
+  std::string device_label_;
+  std::string queue_label_;
+  std::vector<WGPUFeatureName> required_features_;
+  WGPURequiredLimits required_limits_;
+};
+
+}  // namespace
+
+WebGPUDecoderImpl::QueuedRequestDeviceCallback
+WebGPUDecoderImpl::CreateQueuedRequestDeviceCallback(
+    WGPUAdapter adapter,
+    const WGPUDeviceDescriptor* descriptor,
+    WGPURequestDeviceCallback callback,
+    void* userdata) {
+  // Add a reference to the adapter to ensure that the adapter was not deleted
+  // in between. The reference will be removed when the callback is ran later.
+  dawn::native::GetProcs().adapterReference(adapter);
+
+  // We need to create a deep copy of the descriptor for these queued requests
+  // since they are a temporary allocation that is freed at the end of
+  // RequestDeviceImpl.
+  std::unique_ptr<WGPUDeviceDescriptorDeepCopy> desc =
+      descriptor != nullptr
+          ? std::make_unique<WGPUDeviceDescriptorDeepCopy>(*descriptor)
+          : nullptr;
+
+  // Note that it is ok to bind the decoder as unretained in this case because
+  // the decoder's dtor explicitly resolves all these callbacks.
+  return base::BindOnce(
+      [](WebGPUDecoderImpl* decoder, WGPUAdapter adapter,
+         std::unique_ptr<WGPUDeviceDescriptor> descriptor,
+         WGPURequestDeviceCallback callback, void* userdata, bool run) {
+        if (run) {
+          DCHECK(decoder->isolation_key_);
+          decoder->RequestDeviceImpl(adapter, descriptor.get(), callback,
+                                     userdata);
+        } else {
+          callback(WGPURequestDeviceStatus_Unknown, nullptr,
+                   "Queued device request cancelled.", userdata);
+        }
+        dawn::native::GetProcs().adapterRelease(adapter);
+      },
+      base::Unretained(this), adapter, std::move(desc), callback, userdata);
+}
+
 void WebGPUDecoderImpl::DiscoverAdapters() {
 #if BUILDFLAG(DAWN_ENABLE_BACKEND_OPENGLES)
   if (use_webgpu_adapter_ == WebGPUAdapterName::kCompat) {
@@ -1832,6 +1997,20 @@
   return error::kNoError;
 }
 
+void WebGPUDecoderImpl::OnGetIsolationKey(const std::string& isolation_key) {
+  isolation_key_ = isolation_key;
+
+  // Iterate and run all the potentially queued request device requests.
+  for (auto& request : queued_request_device_calls_) {
+    std::move(request).Run(true);
+  }
+  queued_request_device_calls_.clear();
+
+  // The requests have been handled, but they may need to be flushed, so perform
+  // polling work.
+  PerformPollingWork();
+}
+
 error::Error WebGPUDecoderImpl::HandleSetWebGPUExecutionContextToken(
     uint32_t immediate_data_size,
     const volatile void* cmd_data) {
@@ -1840,24 +2019,33 @@
   uint32_t type(c.type);
   uint64_t high = uint64_t(c.high_high) << 32 | uint64_t(c.high_low);
   uint64_t low = uint64_t(c.low_high) << 32 | uint64_t(c.low_low);
-  base::UnguessableToken token = base::UnguessableToken::Deserialize(high, low);
+  base::UnguessableToken unguessable_token =
+      base::UnguessableToken::Deserialize(high, low);
+  blink::WebGPUExecutionContextToken execution_context_token;
   switch (type) {
     case blink::WebGPUExecutionContextToken::Base::template TypeIndex<
         blink::DocumentToken>::kValue: {
-      execution_context_token_ =
-          blink::WebGPUExecutionContextToken(blink::DocumentToken(token));
+      execution_context_token = blink::WebGPUExecutionContextToken(
+          blink::DocumentToken(unguessable_token));
       break;
     }
     case blink::WebGPUExecutionContextToken::Base::template TypeIndex<
         blink::DedicatedWorkerToken>::kValue: {
-      execution_context_token_ = blink::WebGPUExecutionContextToken(
-          blink::DedicatedWorkerToken(token));
+      execution_context_token = blink::WebGPUExecutionContextToken(
+          blink::DedicatedWorkerToken(unguessable_token));
       break;
     }
     default:
       NOTREACHED();
       return error::kInvalidArguments;
   }
+  if (enable_unsafe_webgpu_) {
+    isolation_key_provider_->GetIsolationKey(
+        execution_context_token,
+        base::BindPostTask(base::ThreadTaskRunnerHandle::Get(),
+                           base::BindOnce(&WebGPUDecoderImpl::OnGetIsolationKey,
+                                          weak_ptr_factory_.GetWeakPtr())));
+  }
   return error::kNoError;
 }
 
diff --git a/gpu/command_buffer/service/webgpu_decoder_impl.h b/gpu/command_buffer/service/webgpu_decoder_impl.h
index b544791f..5e983bd4 100644
--- a/gpu/command_buffer/service/webgpu_decoder_impl.h
+++ b/gpu/command_buffer/service/webgpu_decoder_impl.h
@@ -14,6 +14,7 @@
 class CommandBufferServiceBase;
 class DecoderClient;
 struct GpuPreferences;
+class IsolationKeyProvider;
 class MemoryTracker;
 class SharedContextState;
 class SharedImageManager;
@@ -35,7 +36,8 @@
     gles2::Outputter* outputter,
     const GpuPreferences& gpu_preferences,
     scoped_refptr<SharedContextState> shared_context_state,
-    const DawnCacheOptions& dawn_cache_options);
+    const DawnCacheOptions& dawn_cache_options,
+    IsolationKeyProvider* isolation_key_provider);
 
 }  // namespace webgpu
 }  // namespace gpu
diff --git a/gpu/command_buffer/service/webgpu_decoder_unittest.cc b/gpu/command_buffer/service/webgpu_decoder_unittest.cc
index a323880..ef4ea9f3 100644
--- a/gpu/command_buffer/service/webgpu_decoder_unittest.cc
+++ b/gpu/command_buffer/service/webgpu_decoder_unittest.cc
@@ -12,6 +12,7 @@
 #include "gpu/command_buffer/service/context_group.h"
 #include "gpu/command_buffer/service/decoder_client.h"
 #include "gpu/command_buffer/service/gpu_tracer.h"
+#include "gpu/command_buffer/service/mocks.h"
 #include "gpu/command_buffer/service/shared_context_state.h"
 #include "gpu/command_buffer/service/test_helper.h"
 #include "gpu/config/gpu_test_config.h"
@@ -20,6 +21,7 @@
 using ::testing::_;
 using ::testing::Return;
 using ::testing::SetArgPointee;
+using ::testing::StrictMock;
 
 namespace gpu {
 namespace webgpu {
@@ -30,13 +32,20 @@
 
   void SetUp() override {
     if (!WebGPUSupported()) {
-      return;
+      GTEST_SKIP() << "Test skipped because WebGPU isn't supported";
     }
     decoder_client_ = std::make_unique<FakeDecoderClient>();
     command_buffer_service_ = std::make_unique<FakeCommandBufferServiceBase>();
+
+    // Enable unsafe webgpu for unit testing.
+    // TODO(dawn:549) Remove this once caching can be enabled by default.
+    GpuPreferences preferences;
+    preferences.enable_unsafe_webgpu = true;
+
     decoder_.reset(WebGPUDecoder::Create(
         decoder_client_.get(), command_buffer_service_.get(), nullptr, nullptr,
-        &outputter_, GpuPreferences(), nullptr));
+        &outputter_, preferences, nullptr, DawnCacheOptions(),
+        &mock_isolation_key_provider_));
     ASSERT_EQ(decoder_->Initialize(GpuFeatureInfo()), ContextResult::kSuccess);
   }
 
@@ -56,6 +65,9 @@
   }
 
  protected:
+  // Mocks for testing.
+  StrictMock<MockIsolationKeyProvider> mock_isolation_key_provider_;
+
   std::unique_ptr<FakeCommandBufferServiceBase> command_buffer_service_;
   std::unique_ptr<WebGPUDecoder> decoder_;
   std::unique_ptr<FakeDecoderClient> decoder_client_;
@@ -63,15 +75,40 @@
 };
 
 TEST_F(WebGPUDecoderTest, DawnCommands) {
-  if (!WebGPUSupported()) {
-    LOG(ERROR) << "Test skipped because WebGPU isn't supported";
-    return;
-  }
-
   cmds::DawnCommands cmd;
   cmd.Init(0, 0, 0);
   EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
 }
 
+TEST_F(WebGPUDecoderTest, IsolationKeyFromDocument) {
+  blink::DocumentToken document_token;
+  blink::WebGPUExecutionContextToken wgpu_context_token(document_token);
+  uint64_t high = document_token->GetHighForSerialization();
+  uint64_t low = document_token->GetLowForSerialization();
+  EXPECT_CALL(mock_isolation_key_provider_,
+              GetIsolationKey(wgpu_context_token, _))
+      .Times(1);
+
+  cmds::SetWebGPUExecutionContextToken cmd;
+  cmd.Init(wgpu_context_token.variant_index(), high >> 32, high, low >> 32,
+           low);
+  ExecuteCmd(cmd);
+}
+
+TEST_F(WebGPUDecoderTest, IsolationKeyFromWorker) {
+  blink::DedicatedWorkerToken worker_token;
+  blink::WebGPUExecutionContextToken wgpu_context_token(worker_token);
+  uint64_t high = worker_token->GetHighForSerialization();
+  uint64_t low = worker_token->GetLowForSerialization();
+  EXPECT_CALL(mock_isolation_key_provider_,
+              GetIsolationKey(wgpu_context_token, _))
+      .Times(1);
+
+  cmds::SetWebGPUExecutionContextToken cmd;
+  cmd.Init(wgpu_context_token.variant_index(), high >> 32, high, low >> 32,
+           low);
+  ExecuteCmd(cmd);
+}
+
 }  // namespace webgpu
 }  // namespace gpu
diff --git a/gpu/config/gpu_finch_features.cc b/gpu/config/gpu_finch_features.cc
index eadc5483..7d593da0 100644
--- a/gpu/config/gpu_finch_features.cc
+++ b/gpu/config/gpu_finch_features.cc
@@ -145,7 +145,12 @@
 // Enables the use of out of process rasterization for canvas.
 BASE_FEATURE(kCanvasOopRasterization,
              "CanvasOopRasterization",
-             base::FEATURE_DISABLED_BY_DEFAULT);
+#if BUILDFLAG(IS_FUCHSIA)
+             base::FEATURE_ENABLED_BY_DEFAULT
+#else
+             base::FEATURE_DISABLED_BY_DEFAULT
+#endif
+);
 
 // Enables the use of MSAA in skia on Ice Lake and later intel architectures.
 BASE_FEATURE(kEnableMSAAOnNewIntelGPUs,
diff --git a/gpu/ipc/service/gpu_channel.cc b/gpu/ipc/service/gpu_channel.cc
index 94f1a37..11b35bf 100644
--- a/gpu/ipc/service/gpu_channel.cc
+++ b/gpu/ipc/service/gpu_channel.cc
@@ -629,6 +629,13 @@
   gpu_channel_manager_->RemoveChannel(client_id_);
 }
 
+void GpuChannel::GetIsolationKey(
+    const blink::WebGPUExecutionContextToken& token,
+    GetIsolationKeyCallback cb) {
+  gpu_channel_manager_->delegate()->GetIsolationKey(client_id_, token,
+                                                    std::move(cb));
+}
+
 void GpuChannel::OnCommandBufferScheduled(CommandBufferStub* stub) {
   scheduler_->EnableSequence(stub->sequence_id());
 }
diff --git a/gpu/ipc/service/gpu_channel.h b/gpu/ipc/service/gpu_channel.h
index e47f0d9..49f643b 100644
--- a/gpu/ipc/service/gpu_channel.h
+++ b/gpu/ipc/service/gpu_channel.h
@@ -23,6 +23,7 @@
 #include "build/build_config.h"
 #include "gpu/command_buffer/common/capabilities.h"
 #include "gpu/command_buffer/common/context_result.h"
+#include "gpu/command_buffer/service/isolation_key_provider.h"
 #include "gpu/command_buffer/service/sync_point_manager.h"
 #include "gpu/ipc/common/gpu_channel.mojom.h"
 #include "gpu/ipc/common/gpu_disk_cache_type.h"
@@ -54,7 +55,8 @@
 
 // Encapsulates an IPC channel between the GPU process and one renderer
 // process. On the renderer side there's a corresponding GpuChannelHost.
-class GPU_IPC_SERVICE_EXPORT GpuChannel : public IPC::Listener {
+class GPU_IPC_SERVICE_EXPORT GpuChannel : public IPC::Listener,
+                                          public IsolationKeyProvider {
  public:
   GpuChannel(const GpuChannel&) = delete;
   GpuChannel& operator=(const GpuChannel&) = delete;
@@ -123,6 +125,10 @@
   bool OnMessageReceived(const IPC::Message& msg) override;
   void OnChannelError() override;
 
+  // gpu::IsolationKeyProvider:
+  void GetIsolationKey(const blink::WebGPUExecutionContextToken& token,
+                       GetIsolationKeyCallback cb) override;
+
   void OnCommandBufferScheduled(CommandBufferStub* stub);
   void OnCommandBufferDescheduled(CommandBufferStub* stub);
 
diff --git a/gpu/ipc/service/gpu_channel_manager_delegate.h b/gpu/ipc/service/gpu_channel_manager_delegate.h
index 69dd274..df2c94d 100644
--- a/gpu/ipc/service/gpu_channel_manager_delegate.h
+++ b/gpu/ipc/service/gpu_channel_manager_delegate.h
@@ -10,6 +10,7 @@
 #include "gpu/config/gpu_info.h"
 #include "gpu/ipc/common/gpu_disk_cache_type.h"
 #include "gpu/ipc/common/surface_handle.h"
+#include "third_party/blink/public/common/tokens/tokens.h"
 
 class GURL;
 
@@ -53,6 +54,14 @@
                                const std::string& key,
                                const std::string& shader) = 0;
 
+  // Tells the delegate to ask for a unique isolation key given a client id and
+  // identifying token on the client.
+  using GetIsolationKeyCallback =
+      base::OnceCallback<void(const std::string& isolation_key)>;
+  virtual void GetIsolationKey(int client_id,
+                               const blink::WebGPUExecutionContextToken& token,
+                               GetIsolationKeyCallback cb) = 0;
+
   // Cleanly exits the GPU process in response to an error. This will not exit
   // with in-process GPU as that would also exit the browser. This can only be
   // called from the GPU thread.
diff --git a/gpu/ipc/service/gpu_channel_test_common.cc b/gpu/ipc/service/gpu_channel_test_common.cc
index 74a3261..b1f3ad7 100644
--- a/gpu/ipc/service/gpu_channel_test_common.cc
+++ b/gpu/ipc/service/gpu_channel_test_common.cc
@@ -55,6 +55,9 @@
   void StoreBlobToDisk(const gpu::GpuDiskCacheHandle& handle,
                        const std::string& key,
                        const std::string& shader) override {}
+  void GetIsolationKey(int client_id,
+                       const blink::WebGPUExecutionContextToken& token,
+                       GetIsolationKeyCallback cb) override {}
   void MaybeExitOnContextLost() override { is_exiting_ = true; }
   bool IsExiting() const override { return is_exiting_; }
 #if BUILDFLAG(IS_WIN)
diff --git a/gpu/ipc/service/webgpu_command_buffer_stub.cc b/gpu/ipc/service/webgpu_command_buffer_stub.cc
index bbba779..6dc65372 100644
--- a/gpu/ipc/service/webgpu_command_buffer_stub.cc
+++ b/gpu/ipc/service/webgpu_command_buffer_stub.cc
@@ -124,7 +124,7 @@
   std::unique_ptr<webgpu::WebGPUDecoder> decoder(webgpu::WebGPUDecoder::Create(
       this, command_buffer_.get(), manager->shared_image_manager(),
       memory_tracker_.get(), manager->outputter(), manager->gpu_preferences(),
-      std::move(shared_context_state), dawn_cache_options));
+      std::move(shared_context_state), dawn_cache_options, channel_));
 
   sync_point_client_state_ =
       channel_->sync_point_manager()->CreateSyncPointClientState(
diff --git a/headless/lib/browser/headless_permission_manager.cc b/headless/lib/browser/headless_permission_manager.cc
index 85eb01fe..f8503c0e 100644
--- a/headless/lib/browser/headless_permission_manager.cc
+++ b/headless/lib/browser/headless_permission_manager.cc
@@ -10,6 +10,7 @@
 #include "content/public/browser/permission_result.h"
 #include "third_party/blink/public/common/permissions/permission_utils.h"
 #include "url/gurl.h"
+#include "url/origin.h"
 
 namespace headless {
 
diff --git "a/infra/config/generated/builders/ci/Android Release \050Nexus 5X\051/properties.json" "b/infra/config/generated/builders/ci/Android Release \050Nexus 5X\051/properties.json"
index e11b5423..212c462 100644
--- "a/infra/config/generated/builders/ci/Android Release \050Nexus 5X\051/properties.json"
+++ "b/infra/config/generated/builders/ci/Android Release \050Nexus 5X\051/properties.json"
@@ -46,10 +46,6 @@
       ],
       "mirroring_builder_group_and_names": [
         {
-          "builder": "android-marshmallow-arm64-rel",
-          "group": "tryserver.chromium.android"
-        },
-        {
           "builder": "gpu-try-android-m-nexus-5x-64",
           "group": "tryserver.chromium.android"
         }
diff --git a/infra/config/generated/builders/ci/android-marshmallow-arm64-rel/properties.json b/infra/config/generated/builders/ci/android-marshmallow-arm64-rel/properties.json
deleted file mode 100644
index d3f9c10..0000000
--- a/infra/config/generated/builders/ci/android-marshmallow-arm64-rel/properties.json
+++ /dev/null
@@ -1,69 +0,0 @@
-{
-  "$build/chromium_tests_builder_config": {
-    "builder_config": {
-      "builder_db": {
-        "entries": [
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "android-marshmallow-arm64-rel",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-android-archive",
-              "builder_group": "chromium.android",
-              "execution_mode": "COMPILE_AND_TEST",
-              "legacy_android_config": {
-                "config": "main_builder"
-              },
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "download_vr_test_apks",
-                  "mb"
-                ],
-                "build_config": "Release",
-                "config": "android",
-                "target_bits": 64,
-                "target_platform": "android"
-              },
-              "legacy_gclient_config": {
-                "apply_configs": [
-                  "android",
-                  "enable_reclient"
-                ],
-                "config": "chromium"
-              }
-            }
-          }
-        ]
-      },
-      "builder_ids": [
-        {
-          "bucket": "ci",
-          "builder": "android-marshmallow-arm64-rel",
-          "project": "chromium"
-        }
-      ],
-      "mirroring_builder_group_and_names": [
-        {
-          "builder": "android-marshmallow-arm64-rel",
-          "group": "tryserver.chromium.android"
-        }
-      ]
-    }
-  },
-  "$build/reclient": {
-    "instance": "rbe-chromium-trusted",
-    "jobs": 500,
-    "metrics_project": "chromium-reclient-metrics"
-  },
-  "$recipe_engine/resultdb/test_presentation": {
-    "column_keys": [],
-    "grouping_keys": [
-      "status",
-      "v.test_suite"
-    ]
-  },
-  "builder_group": "chromium.android",
-  "recipe": "chromium"
-}
\ No newline at end of file
diff --git a/infra/config/generated/builders/ci/android-marshmallow-x86-rel-non-cq/properties.json b/infra/config/generated/builders/ci/android-marshmallow-x86-rel-non-cq/properties.json
deleted file mode 100644
index 9c0904f..0000000
--- a/infra/config/generated/builders/ci/android-marshmallow-x86-rel-non-cq/properties.json
+++ /dev/null
@@ -1,69 +0,0 @@
-{
-  "$build/chromium_tests_builder_config": {
-    "builder_config": {
-      "builder_db": {
-        "entries": [
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "android-marshmallow-x86-rel-non-cq",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-android-archive",
-              "builder_group": "chromium.android",
-              "execution_mode": "COMPILE_AND_TEST",
-              "legacy_android_config": {
-                "config": "x86_builder"
-              },
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "mb"
-                ],
-                "build_config": "Release",
-                "config": "android",
-                "target_bits": 32,
-                "target_platform": "android"
-              },
-              "legacy_gclient_config": {
-                "apply_configs": [
-                  "android",
-                  "enable_wpr_tests",
-                  "enable_reclient"
-                ],
-                "config": "chromium"
-              }
-            }
-          }
-        ]
-      },
-      "builder_ids": [
-        {
-          "bucket": "ci",
-          "builder": "android-marshmallow-x86-rel-non-cq",
-          "project": "chromium"
-        }
-      ],
-      "mirroring_builder_group_and_names": [
-        {
-          "builder": "android-marshmallow-x86-rel-non-cq",
-          "group": "tryserver.chromium.android"
-        }
-      ]
-    }
-  },
-  "$build/reclient": {
-    "instance": "rbe-chromium-trusted",
-    "jobs": 500,
-    "metrics_project": "chromium-reclient-metrics"
-  },
-  "$recipe_engine/resultdb/test_presentation": {
-    "column_keys": [],
-    "grouping_keys": [
-      "status",
-      "v.test_suite"
-    ]
-  },
-  "builder_group": "chromium.android",
-  "recipe": "chromium"
-}
\ No newline at end of file
diff --git a/infra/config/generated/builders/ci/android-marshmallow-x86-rel/properties.json b/infra/config/generated/builders/ci/android-marshmallow-x86-rel/properties.json
deleted file mode 100644
index f78f1fa..0000000
--- a/infra/config/generated/builders/ci/android-marshmallow-x86-rel/properties.json
+++ /dev/null
@@ -1,69 +0,0 @@
-{
-  "$build/chromium_tests_builder_config": {
-    "builder_config": {
-      "builder_db": {
-        "entries": [
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "android-marshmallow-x86-rel",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-android-archive",
-              "builder_group": "chromium.android",
-              "execution_mode": "COMPILE_AND_TEST",
-              "legacy_android_config": {
-                "config": "x86_builder"
-              },
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "mb"
-                ],
-                "build_config": "Release",
-                "config": "android",
-                "target_bits": 32,
-                "target_platform": "android"
-              },
-              "legacy_gclient_config": {
-                "apply_configs": [
-                  "android",
-                  "enable_wpr_tests",
-                  "enable_reclient"
-                ],
-                "config": "chromium"
-              }
-            }
-          }
-        ]
-      },
-      "builder_ids": [
-        {
-          "bucket": "ci",
-          "builder": "android-marshmallow-x86-rel",
-          "project": "chromium"
-        }
-      ],
-      "mirroring_builder_group_and_names": [
-        {
-          "builder": "android-marshmallow-x86-rel",
-          "group": "tryserver.chromium.android"
-        }
-      ]
-    }
-  },
-  "$build/reclient": {
-    "instance": "rbe-chromium-trusted",
-    "jobs": 500,
-    "metrics_project": "chromium-reclient-metrics"
-  },
-  "$recipe_engine/resultdb/test_presentation": {
-    "column_keys": [],
-    "grouping_keys": [
-      "status",
-      "v.test_suite"
-    ]
-  },
-  "builder_group": "chromium.android",
-  "recipe": "chromium"
-}
\ No newline at end of file
diff --git a/infra/config/generated/builders/ci/linux-blink-wpt-reset-rel/properties.json b/infra/config/generated/builders/ci/linux-blink-wpt-reset-rel/properties.json
index 1788ce76..13a845e 100644
--- a/infra/config/generated/builders/ci/linux-blink-wpt-reset-rel/properties.json
+++ b/infra/config/generated/builders/ci/linux-blink-wpt-reset-rel/properties.json
@@ -36,6 +36,11 @@
       ]
     }
   },
+  "$build/reclient": {
+    "instance": "rbe-chromium-trusted",
+    "jobs": 250,
+    "metrics_project": "chromium-reclient-metrics"
+  },
   "$recipe_engine/resultdb/test_presentation": {
     "column_keys": [],
     "grouping_keys": [
diff --git a/infra/config/generated/builders/try/android-marshmallow-arm64-rel-compilator/properties.json b/infra/config/generated/builders/try/android-marshmallow-arm64-rel-compilator/properties.json
deleted file mode 100644
index 613b442..0000000
--- a/infra/config/generated/builders/try/android-marshmallow-arm64-rel-compilator/properties.json
+++ /dev/null
@@ -1,112 +0,0 @@
-{
-  "$build/chromium_tests_builder_config": {
-    "builder_config": {
-      "builder_db": {
-        "entries": [
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "Android Release (Nexus 5X)",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-gpu-archive",
-              "builder_group": "chromium.gpu",
-              "execution_mode": "COMPILE_AND_TEST",
-              "legacy_android_config": {
-                "config": "main_builder"
-              },
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "download_vr_test_apks",
-                  "mb"
-                ],
-                "build_config": "Release",
-                "config": "android",
-                "target_bits": 64,
-                "target_platform": "android"
-              },
-              "legacy_gclient_config": {
-                "apply_configs": [
-                  "android",
-                  "enable_reclient"
-                ],
-                "config": "chromium"
-              }
-            }
-          },
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "android-marshmallow-arm64-rel",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-android-archive",
-              "builder_group": "chromium.android",
-              "execution_mode": "COMPILE_AND_TEST",
-              "legacy_android_config": {
-                "config": "main_builder"
-              },
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "download_vr_test_apks",
-                  "mb"
-                ],
-                "build_config": "Release",
-                "config": "android",
-                "target_bits": 64,
-                "target_platform": "android"
-              },
-              "legacy_gclient_config": {
-                "apply_configs": [
-                  "android",
-                  "enable_reclient"
-                ],
-                "config": "chromium"
-              }
-            }
-          }
-        ]
-      },
-      "builder_ids": [
-        {
-          "bucket": "ci",
-          "builder": "Android Release (Nexus 5X)",
-          "project": "chromium"
-        },
-        {
-          "bucket": "ci",
-          "builder": "android-marshmallow-arm64-rel",
-          "project": "chromium"
-        }
-      ]
-    }
-  },
-  "$build/code_coverage": {
-    "coverage_test_types": [
-      "unit",
-      "overall"
-    ],
-    "use_java_coverage": true
-  },
-  "$build/flakiness": {
-    "check_for_flakiness": true
-  },
-  "$build/goma": {
-    "enable_ats": true,
-    "jobs": 300,
-    "rpc_extra_params": "?prod",
-    "server_host": "goma.chromium.org",
-    "use_luci_auth": true
-  },
-  "$recipe_engine/resultdb/test_presentation": {
-    "column_keys": [],
-    "grouping_keys": [
-      "status",
-      "v.test_suite"
-    ]
-  },
-  "builder_group": "tryserver.chromium.android",
-  "recipe": "chromium/compilator"
-}
\ No newline at end of file
diff --git a/infra/config/generated/builders/try/android-marshmallow-arm64-rel/properties.json b/infra/config/generated/builders/try/android-marshmallow-arm64-rel/properties.json
deleted file mode 100644
index 3edd6d33..0000000
--- a/infra/config/generated/builders/try/android-marshmallow-arm64-rel/properties.json
+++ /dev/null
@@ -1,109 +0,0 @@
-{
-  "$build/chromium_orchestrator": {
-    "compilator": "android-marshmallow-arm64-rel-compilator",
-    "compilator_watcher_git_revision": "7809a690bbd935bcb3b4d922e24cabe168aaabc8"
-  },
-  "$build/chromium_tests_builder_config": {
-    "builder_config": {
-      "builder_db": {
-        "entries": [
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "Android Release (Nexus 5X)",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-gpu-archive",
-              "builder_group": "chromium.gpu",
-              "execution_mode": "COMPILE_AND_TEST",
-              "legacy_android_config": {
-                "config": "main_builder"
-              },
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "download_vr_test_apks",
-                  "mb"
-                ],
-                "build_config": "Release",
-                "config": "android",
-                "target_bits": 64,
-                "target_platform": "android"
-              },
-              "legacy_gclient_config": {
-                "apply_configs": [
-                  "android",
-                  "enable_reclient"
-                ],
-                "config": "chromium"
-              }
-            }
-          },
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "android-marshmallow-arm64-rel",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-android-archive",
-              "builder_group": "chromium.android",
-              "execution_mode": "COMPILE_AND_TEST",
-              "legacy_android_config": {
-                "config": "main_builder"
-              },
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "download_vr_test_apks",
-                  "mb"
-                ],
-                "build_config": "Release",
-                "config": "android",
-                "target_bits": 64,
-                "target_platform": "android"
-              },
-              "legacy_gclient_config": {
-                "apply_configs": [
-                  "android",
-                  "enable_reclient"
-                ],
-                "config": "chromium"
-              }
-            }
-          }
-        ]
-      },
-      "builder_ids": [
-        {
-          "bucket": "ci",
-          "builder": "Android Release (Nexus 5X)",
-          "project": "chromium"
-        },
-        {
-          "bucket": "ci",
-          "builder": "android-marshmallow-arm64-rel",
-          "project": "chromium"
-        }
-      ]
-    }
-  },
-  "$build/code_coverage": {
-    "coverage_test_types": [
-      "unit",
-      "overall"
-    ],
-    "use_java_coverage": true
-  },
-  "$build/flakiness": {
-    "check_for_flakiness": true
-  },
-  "$recipe_engine/resultdb/test_presentation": {
-    "column_keys": [],
-    "grouping_keys": [
-      "status",
-      "v.test_suite"
-    ]
-  },
-  "builder_group": "tryserver.chromium.android",
-  "recipe": "chromium/orchestrator"
-}
\ No newline at end of file
diff --git a/infra/config/generated/builders/try/android-marshmallow-x86-rel-compilator/properties.json b/infra/config/generated/builders/try/android-marshmallow-x86-rel-compilator/properties.json
deleted file mode 100644
index 6899b4a..0000000
--- a/infra/config/generated/builders/try/android-marshmallow-x86-rel-compilator/properties.json
+++ /dev/null
@@ -1,78 +0,0 @@
-{
-  "$build/chromium_tests_builder_config": {
-    "builder_config": {
-      "builder_db": {
-        "entries": [
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "android-marshmallow-x86-rel",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-android-archive",
-              "builder_group": "chromium.android",
-              "execution_mode": "COMPILE_AND_TEST",
-              "legacy_android_config": {
-                "config": "x86_builder"
-              },
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "mb"
-                ],
-                "build_config": "Release",
-                "config": "android",
-                "target_bits": 32,
-                "target_platform": "android"
-              },
-              "legacy_gclient_config": {
-                "apply_configs": [
-                  "android",
-                  "enable_wpr_tests",
-                  "enable_reclient"
-                ],
-                "config": "chromium"
-              }
-            }
-          }
-        ]
-      },
-      "builder_ids": [
-        {
-          "bucket": "ci",
-          "builder": "android-marshmallow-x86-rel",
-          "project": "chromium"
-        }
-      ],
-      "rts_config": {
-        "condition": "QUICK_RUN_ONLY"
-      }
-    }
-  },
-  "$build/code_coverage": {
-    "coverage_test_types": [
-      "unit",
-      "overall"
-    ],
-    "use_java_coverage": true
-  },
-  "$build/flakiness": {
-    "check_for_flakiness": true
-  },
-  "$build/goma": {
-    "enable_ats": true,
-    "jobs": 300,
-    "rpc_extra_params": "?prod",
-    "server_host": "goma.chromium.org",
-    "use_luci_auth": true
-  },
-  "$recipe_engine/resultdb/test_presentation": {
-    "column_keys": [],
-    "grouping_keys": [
-      "status",
-      "v.test_suite"
-    ]
-  },
-  "builder_group": "tryserver.chromium.android",
-  "recipe": "chromium/compilator"
-}
\ No newline at end of file
diff --git a/infra/config/generated/builders/try/android-marshmallow-x86-rel-non-cq/properties.json b/infra/config/generated/builders/try/android-marshmallow-x86-rel-non-cq/properties.json
deleted file mode 100644
index 33fc6f72..0000000
--- a/infra/config/generated/builders/try/android-marshmallow-x86-rel-non-cq/properties.json
+++ /dev/null
@@ -1,64 +0,0 @@
-{
-  "$build/chromium_tests_builder_config": {
-    "builder_config": {
-      "builder_db": {
-        "entries": [
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "android-marshmallow-x86-rel-non-cq",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-android-archive",
-              "builder_group": "chromium.android",
-              "execution_mode": "COMPILE_AND_TEST",
-              "legacy_android_config": {
-                "config": "x86_builder"
-              },
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "mb"
-                ],
-                "build_config": "Release",
-                "config": "android",
-                "target_bits": 32,
-                "target_platform": "android"
-              },
-              "legacy_gclient_config": {
-                "apply_configs": [
-                  "android",
-                  "enable_wpr_tests",
-                  "enable_reclient"
-                ],
-                "config": "chromium"
-              }
-            }
-          }
-        ]
-      },
-      "builder_ids": [
-        {
-          "bucket": "ci",
-          "builder": "android-marshmallow-x86-rel-non-cq",
-          "project": "chromium"
-        }
-      ]
-    }
-  },
-  "$build/goma": {
-    "enable_ats": true,
-    "rpc_extra_params": "?prod",
-    "server_host": "goma.chromium.org",
-    "use_luci_auth": true
-  },
-  "$recipe_engine/resultdb/test_presentation": {
-    "column_keys": [],
-    "grouping_keys": [
-      "status",
-      "v.test_suite"
-    ]
-  },
-  "builder_group": "tryserver.chromium.android",
-  "recipe": "chromium_trybot"
-}
\ No newline at end of file
diff --git a/infra/config/generated/builders/try/android-marshmallow-x86-rel/properties.json b/infra/config/generated/builders/try/android-marshmallow-x86-rel/properties.json
deleted file mode 100644
index 16ad27f3..0000000
--- a/infra/config/generated/builders/try/android-marshmallow-x86-rel/properties.json
+++ /dev/null
@@ -1,75 +0,0 @@
-{
-  "$build/chromium_orchestrator": {
-    "compilator": "android-marshmallow-x86-rel-compilator",
-    "compilator_watcher_git_revision": "7809a690bbd935bcb3b4d922e24cabe168aaabc8"
-  },
-  "$build/chromium_tests_builder_config": {
-    "builder_config": {
-      "builder_db": {
-        "entries": [
-          {
-            "builder_id": {
-              "bucket": "ci",
-              "builder": "android-marshmallow-x86-rel",
-              "project": "chromium"
-            },
-            "builder_spec": {
-              "build_gs_bucket": "chromium-android-archive",
-              "builder_group": "chromium.android",
-              "execution_mode": "COMPILE_AND_TEST",
-              "legacy_android_config": {
-                "config": "x86_builder"
-              },
-              "legacy_chromium_config": {
-                "apply_configs": [
-                  "mb"
-                ],
-                "build_config": "Release",
-                "config": "android",
-                "target_bits": 32,
-                "target_platform": "android"
-              },
-              "legacy_gclient_config": {
-                "apply_configs": [
-                  "android",
-                  "enable_wpr_tests",
-                  "enable_reclient"
-                ],
-                "config": "chromium"
-              }
-            }
-          }
-        ]
-      },
-      "builder_ids": [
-        {
-          "bucket": "ci",
-          "builder": "android-marshmallow-x86-rel",
-          "project": "chromium"
-        }
-      ],
-      "rts_config": {
-        "condition": "QUICK_RUN_ONLY"
-      }
-    }
-  },
-  "$build/code_coverage": {
-    "coverage_test_types": [
-      "unit",
-      "overall"
-    ],
-    "use_java_coverage": true
-  },
-  "$build/flakiness": {
-    "check_for_flakiness": true
-  },
-  "$recipe_engine/resultdb/test_presentation": {
-    "column_keys": [],
-    "grouping_keys": [
-      "status",
-      "v.test_suite"
-    ]
-  },
-  "builder_group": "tryserver.chromium.android",
-  "recipe": "chromium/orchestrator"
-}
\ No newline at end of file
diff --git a/infra/config/generated/luci/commit-queue.cfg b/infra/config/generated/luci/commit-queue.cfg
index 3f89c45..c21c6578 100644
--- a/infra/config/generated/luci/commit-queue.cfg
+++ b/infra/config/generated/luci/commit-queue.cfg
@@ -554,26 +554,6 @@
         includable_only: true
       }
       builders {
-        name: "chromium/try/android-marshmallow-arm64-rel"
-        includable_only: true
-      }
-      builders {
-        name: "chromium/try/android-marshmallow-arm64-rel-compilator"
-        includable_only: true
-      }
-      builders {
-        name: "chromium/try/android-marshmallow-x86-rel"
-        includable_only: true
-      }
-      builders {
-        name: "chromium/try/android-marshmallow-x86-rel-compilator"
-        includable_only: true
-      }
-      builders {
-        name: "chromium/try/android-marshmallow-x86-rel-non-cq"
-        includable_only: true
-      }
-      builders {
         name: "chromium/try/android-nougat-x86-rel"
         location_regexp: ".*"
         location_regexp_exclude: ".+/[+]/docs/.+"
diff --git a/infra/config/generated/luci/cr-buildbucket.cfg b/infra/config/generated/luci/cr-buildbucket.cfg
index a95e144..4ceb163 100644
--- a/infra/config/generated/luci/cr-buildbucket.cfg
+++ b/infra/config/generated/luci/cr-buildbucket.cfg
@@ -28335,258 +28335,6 @@
       }
     }
     builders {
-      name: "android-marshmallow-arm64-rel"
-      swarming_host: "chromium-swarm.appspot.com"
-      dimensions: "builderless:1"
-      dimensions: "cores:16"
-      dimensions: "cpu:x86-64"
-      dimensions: "free_space:standard"
-      dimensions: "os:Ubuntu-18.04"
-      dimensions: "pool:luci.chromium.ci"
-      dimensions: "ssd:1"
-      exe {
-        cipd_package: "infra/chromium/bootstrapper/${platform}"
-        cipd_version: "latest"
-        cmd: "bootstrapper"
-      }
-      properties:
-        '{'
-        '  "$bootstrap/exe": {'
-        '    "exe": {'
-        '      "cipd_package": "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build",'
-        '      "cipd_version": "refs/heads/main",'
-        '      "cmd": ['
-        '        "luciexe"'
-        '      ]'
-        '    }'
-        '  },'
-        '  "$bootstrap/properties": {'
-        '    "properties_file": "infra/config/generated/builders/ci/android-marshmallow-arm64-rel/properties.json",'
-        '    "top_level_project": {'
-        '      "ref": "refs/heads/main",'
-        '      "repo": {'
-        '        "host": "chromium.googlesource.com",'
-        '        "project": "chromium/src"'
-        '      }'
-        '    }'
-        '  },'
-        '  "builder_group": "chromium.android",'
-        '  "led_builder_is_bootstrapped": true,'
-        '  "recipe": "chromium"'
-        '}'
-      execution_timeout_secs: 14400
-      build_numbers: YES
-      service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
-      experiments {
-        key: "chromium_swarming.expose_merge_script_failures"
-        value: 10
-      }
-      experiments {
-        key: "luci.recipes.use_python3"
-        value: 100
-      }
-      resultdb {
-        enable: true
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "ci_test_results"
-          test_results {}
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://chrome/test:telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "blink_web_tests_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "(ninja://[^/]*blink_web_tests/.+)|(ninja://[^/]*blink_wpt_tests/.+)"
-            }
-          }
-        }
-        history_options {
-          use_invocation_timestamp: true
-        }
-      }
-    }
-    builders {
-      name: "android-marshmallow-x86-rel"
-      swarming_host: "chromium-swarm.appspot.com"
-      dimensions: "builderless:1"
-      dimensions: "cores:8"
-      dimensions: "cpu:x86-64"
-      dimensions: "free_space:standard"
-      dimensions: "os:Ubuntu-18.04"
-      dimensions: "pool:luci.chromium.ci"
-      dimensions: "ssd:0"
-      exe {
-        cipd_package: "infra/chromium/bootstrapper/${platform}"
-        cipd_version: "latest"
-        cmd: "bootstrapper"
-      }
-      properties:
-        '{'
-        '  "$bootstrap/exe": {'
-        '    "exe": {'
-        '      "cipd_package": "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build",'
-        '      "cipd_version": "refs/heads/main",'
-        '      "cmd": ['
-        '        "luciexe"'
-        '      ]'
-        '    }'
-        '  },'
-        '  "$bootstrap/properties": {'
-        '    "properties_file": "infra/config/generated/builders/ci/android-marshmallow-x86-rel/properties.json",'
-        '    "top_level_project": {'
-        '      "ref": "refs/heads/main",'
-        '      "repo": {'
-        '        "host": "chromium.googlesource.com",'
-        '        "project": "chromium/src"'
-        '      }'
-        '    }'
-        '  },'
-        '  "builder_group": "chromium.android",'
-        '  "led_builder_is_bootstrapped": true,'
-        '  "recipe": "chromium"'
-        '}'
-      execution_timeout_secs: 10800
-      build_numbers: YES
-      service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
-      experiments {
-        key: "chromium_swarming.expose_merge_script_failures"
-        value: 10
-      }
-      experiments {
-        key: "luci.recipes.use_python3"
-        value: 100
-      }
-      resultdb {
-        enable: true
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "ci_test_results"
-          test_results {}
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://chrome/test:telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "blink_web_tests_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "(ninja://[^/]*blink_web_tests/.+)|(ninja://[^/]*blink_wpt_tests/.+)"
-            }
-          }
-        }
-        history_options {
-          use_invocation_timestamp: true
-        }
-      }
-    }
-    builders {
-      name: "android-marshmallow-x86-rel-non-cq"
-      swarming_host: "chromium-swarm.appspot.com"
-      dimensions: "builderless:1"
-      dimensions: "cores:8"
-      dimensions: "cpu:x86-64"
-      dimensions: "free_space:standard"
-      dimensions: "os:Ubuntu-18.04"
-      dimensions: "pool:luci.chromium.ci"
-      dimensions: "ssd:0"
-      exe {
-        cipd_package: "infra/chromium/bootstrapper/${platform}"
-        cipd_version: "latest"
-        cmd: "bootstrapper"
-      }
-      properties:
-        '{'
-        '  "$bootstrap/exe": {'
-        '    "exe": {'
-        '      "cipd_package": "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build",'
-        '      "cipd_version": "refs/heads/main",'
-        '      "cmd": ['
-        '        "luciexe"'
-        '      ]'
-        '    }'
-        '  },'
-        '  "$bootstrap/properties": {'
-        '    "properties_file": "infra/config/generated/builders/ci/android-marshmallow-x86-rel-non-cq/properties.json",'
-        '    "top_level_project": {'
-        '      "ref": "refs/heads/main",'
-        '      "repo": {'
-        '        "host": "chromium.googlesource.com",'
-        '        "project": "chromium/src"'
-        '      }'
-        '    }'
-        '  },'
-        '  "builder_group": "chromium.android",'
-        '  "led_builder_is_bootstrapped": true,'
-        '  "recipe": "chromium"'
-        '}'
-      execution_timeout_secs: 10800
-      build_numbers: YES
-      service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
-      experiments {
-        key: "chromium_swarming.expose_merge_script_failures"
-        value: 10
-      }
-      experiments {
-        key: "luci.recipes.use_python3"
-        value: 100
-      }
-      resultdb {
-        enable: true
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "ci_test_results"
-          test_results {}
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "gpu_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://chrome/test:telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "blink_web_tests_ci_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "(ninja://[^/]*blink_web_tests/.+)|(ninja://[^/]*blink_wpt_tests/.+)"
-            }
-          }
-        }
-        history_options {
-          use_invocation_timestamp: true
-        }
-      }
-    }
-    builders {
       name: "android-nougat-x86-rel"
       swarming_host: "chromium-swarm.appspot.com"
       dimensions: "builderless:1"
@@ -57763,552 +57511,6 @@
       }
     }
     builders {
-      name: "android-marshmallow-arm64-rel"
-      swarming_host: "chromium-swarm.appspot.com"
-      dimensions: "cores:4"
-      dimensions: "cpu:x86-64"
-      dimensions: "os:Ubuntu-18.04"
-      dimensions: "pool:luci.chromium.try.orchestrator"
-      exe {
-        cipd_package: "infra/chromium/bootstrapper/${platform}"
-        cipd_version: "latest"
-        cmd: "bootstrapper"
-      }
-      properties:
-        '{'
-        '  "$bootstrap/exe": {'
-        '    "exe": {'
-        '      "cipd_package": "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build",'
-        '      "cipd_version": "refs/heads/main",'
-        '      "cmd": ['
-        '        "luciexe"'
-        '      ]'
-        '    }'
-        '  },'
-        '  "$bootstrap/properties": {'
-        '    "properties_file": "infra/config/generated/builders/try/android-marshmallow-arm64-rel/properties.json",'
-        '    "top_level_project": {'
-        '      "ref": "refs/heads/main",'
-        '      "repo": {'
-        '        "host": "chromium.googlesource.com",'
-        '        "project": "chromium/src"'
-        '      }'
-        '    }'
-        '  },'
-        '  "builder_group": "tryserver.chromium.android",'
-        '  "led_builder_is_bootstrapped": true,'
-        '  "recipe": "chromium/orchestrator"'
-        '}'
-      execution_timeout_secs: 14400
-      expiration_secs: 7200
-      grace_period {
-        seconds: 120
-      }
-      caches {
-        name: "unused_builder_cache"
-        path: "builder"
-      }
-      caches {
-        name: "win_toolchain"
-        path: "win_toolchain"
-      }
-      build_numbers: YES
-      service_account: "chromium-orchestrator@chops-service-accounts.iam.gserviceaccount.com"
-      task_template_canary_percentage {
-        value: 5
-      }
-      experiments {
-        key: "chromium_swarming.expose_merge_script_failures"
-        value: 20
-      }
-      experiments {
-        key: "enable_weetbix_queries"
-        value: 100
-      }
-      experiments {
-        key: "luci.recipes.use_python3"
-        value: 100
-      }
-      experiments {
-        key: "remove_src_checkout_experiment"
-        value: 100
-      }
-      experiments {
-        key: "weetbix.enable_weetbix_exonerations"
-        value: 100
-      }
-      experiments {
-        key: "weetbix.retry_weak_exonerations"
-        value: 100
-      }
-      resultdb {
-        enable: true
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "try_test_results"
-          test_results {}
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://chrome/test:telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "blink_web_tests_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "(ninja://[^/]*blink_web_tests/.+)|(ninja://[^/]*blink_wpt_tests/.+)"
-            }
-          }
-        }
-        history_options {
-          use_invocation_timestamp: true
-        }
-      }
-      description_html: "This is the orchestrator half of an orchestrator + compilator pair of builders. The compilator is <a href=\"https://ci.chromium.org/p/chromium/builders/try/android-marshmallow-arm64-rel-compilator\">android-marshmallow-arm64-rel-compilator</a>."
-    }
-    builders {
-      name: "android-marshmallow-arm64-rel-compilator"
-      swarming_host: "chromium-swarm.appspot.com"
-      dimensions: "builder:android-marshmallow-arm64-rel-compilator"
-      dimensions: "cores:64"
-      dimensions: "cpu:x86-64"
-      dimensions: "os:Ubuntu-18.04"
-      dimensions: "pool:luci.chromium.try"
-      dimensions: "ssd:1"
-      exe {
-        cipd_package: "infra/chromium/bootstrapper/${platform}"
-        cipd_version: "latest"
-        cmd: "bootstrapper"
-      }
-      properties:
-        '{'
-        '  "$bootstrap/exe": {'
-        '    "exe": {'
-        '      "cipd_package": "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build",'
-        '      "cipd_version": "refs/heads/main",'
-        '      "cmd": ['
-        '        "luciexe"'
-        '      ]'
-        '    }'
-        '  },'
-        '  "$bootstrap/properties": {'
-        '    "properties_file": "infra/config/generated/builders/try/android-marshmallow-arm64-rel-compilator/properties.json",'
-        '    "top_level_project": {'
-        '      "ref": "refs/heads/main",'
-        '      "repo": {'
-        '        "host": "chromium.googlesource.com",'
-        '        "project": "chromium/src"'
-        '      }'
-        '    }'
-        '  },'
-        '  "builder_group": "tryserver.chromium.android",'
-        '  "led_builder_is_bootstrapped": true,'
-        '  "recipe": "chromium/compilator"'
-        '}'
-      execution_timeout_secs: 14400
-      expiration_secs: 7200
-      grace_period {
-        seconds: 120
-      }
-      caches {
-        name: "win_toolchain"
-        path: "win_toolchain"
-      }
-      build_numbers: YES
-      service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com"
-      task_template_canary_percentage {
-        value: 5
-      }
-      experiments {
-        key: "chromium_swarming.expose_merge_script_failures"
-        value: 20
-      }
-      experiments {
-        key: "enable_weetbix_queries"
-        value: 100
-      }
-      experiments {
-        key: "luci.recipes.use_python3"
-        value: 100
-      }
-      experiments {
-        key: "weetbix.enable_weetbix_exonerations"
-        value: 100
-      }
-      experiments {
-        key: "weetbix.retry_weak_exonerations"
-        value: 100
-      }
-      resultdb {
-        enable: true
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "try_test_results"
-          test_results {}
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://chrome/test:telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "blink_web_tests_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "(ninja://[^/]*blink_web_tests/.+)|(ninja://[^/]*blink_wpt_tests/.+)"
-            }
-          }
-        }
-        history_options {
-          use_invocation_timestamp: true
-        }
-      }
-      description_html: "This is the compilator half of an orchestrator + compilator pair of builders. The orchestrator is <a href=\"https://ci.chromium.org/p/chromium/builders/try/android-marshmallow-arm64-rel\">android-marshmallow-arm64-rel</a>."
-    }
-    builders {
-      name: "android-marshmallow-x86-rel"
-      swarming_host: "chromium-swarm.appspot.com"
-      dimensions: "cores:4"
-      dimensions: "cpu:x86-64"
-      dimensions: "os:Ubuntu-18.04"
-      dimensions: "pool:luci.chromium.try.orchestrator"
-      exe {
-        cipd_package: "infra/chromium/bootstrapper/${platform}"
-        cipd_version: "latest"
-        cmd: "bootstrapper"
-      }
-      properties:
-        '{'
-        '  "$bootstrap/exe": {'
-        '    "exe": {'
-        '      "cipd_package": "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build",'
-        '      "cipd_version": "refs/heads/main",'
-        '      "cmd": ['
-        '        "luciexe"'
-        '      ]'
-        '    }'
-        '  },'
-        '  "$bootstrap/properties": {'
-        '    "properties_file": "infra/config/generated/builders/try/android-marshmallow-x86-rel/properties.json",'
-        '    "top_level_project": {'
-        '      "ref": "refs/heads/main",'
-        '      "repo": {'
-        '        "host": "chromium.googlesource.com",'
-        '        "project": "chromium/src"'
-        '      }'
-        '    }'
-        '  },'
-        '  "builder_group": "tryserver.chromium.android",'
-        '  "led_builder_is_bootstrapped": true,'
-        '  "recipe": "chromium/orchestrator"'
-        '}'
-      execution_timeout_secs: 14400
-      expiration_secs: 7200
-      grace_period {
-        seconds: 120
-      }
-      caches {
-        name: "unused_builder_cache"
-        path: "builder"
-      }
-      caches {
-        name: "win_toolchain"
-        path: "win_toolchain"
-      }
-      build_numbers: YES
-      service_account: "chromium-orchestrator@chops-service-accounts.iam.gserviceaccount.com"
-      task_template_canary_percentage {
-        value: 5
-      }
-      experiments {
-        key: "chromium_swarming.expose_merge_script_failures"
-        value: 20
-      }
-      experiments {
-        key: "enable_weetbix_queries"
-        value: 100
-      }
-      experiments {
-        key: "luci.recipes.use_python3"
-        value: 100
-      }
-      experiments {
-        key: "remove_src_checkout_experiment"
-        value: 100
-      }
-      experiments {
-        key: "weetbix.enable_weetbix_exonerations"
-        value: 100
-      }
-      experiments {
-        key: "weetbix.retry_weak_exonerations"
-        value: 100
-      }
-      resultdb {
-        enable: true
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "try_test_results"
-          test_results {}
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://chrome/test:telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "blink_web_tests_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "(ninja://[^/]*blink_web_tests/.+)|(ninja://[^/]*blink_wpt_tests/.+)"
-            }
-          }
-        }
-        history_options {
-          use_invocation_timestamp: true
-        }
-      }
-      description_html: "This is the orchestrator half of an orchestrator + compilator pair of builders. The compilator is <a href=\"https://ci.chromium.org/p/chromium/builders/try/android-marshmallow-x86-rel-compilator\">android-marshmallow-x86-rel-compilator</a>."
-    }
-    builders {
-      name: "android-marshmallow-x86-rel-compilator"
-      swarming_host: "chromium-swarm.appspot.com"
-      dimensions: "builder:android-marshmallow-x86-rel-compilator"
-      dimensions: "cores:32"
-      dimensions: "cpu:x86-64"
-      dimensions: "os:Ubuntu-18.04"
-      dimensions: "pool:luci.chromium.try"
-      dimensions: "ssd:1"
-      exe {
-        cipd_package: "infra/chromium/bootstrapper/${platform}"
-        cipd_version: "latest"
-        cmd: "bootstrapper"
-      }
-      properties:
-        '{'
-        '  "$bootstrap/exe": {'
-        '    "exe": {'
-        '      "cipd_package": "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build",'
-        '      "cipd_version": "refs/heads/main",'
-        '      "cmd": ['
-        '        "luciexe"'
-        '      ]'
-        '    }'
-        '  },'
-        '  "$bootstrap/properties": {'
-        '    "properties_file": "infra/config/generated/builders/try/android-marshmallow-x86-rel-compilator/properties.json",'
-        '    "top_level_project": {'
-        '      "ref": "refs/heads/main",'
-        '      "repo": {'
-        '        "host": "chromium.googlesource.com",'
-        '        "project": "chromium/src"'
-        '      }'
-        '    }'
-        '  },'
-        '  "builder_group": "tryserver.chromium.android",'
-        '  "led_builder_is_bootstrapped": true,'
-        '  "recipe": "chromium/compilator"'
-        '}'
-      execution_timeout_secs: 14400
-      expiration_secs: 7200
-      grace_period {
-        seconds: 120
-      }
-      caches {
-        name: "win_toolchain"
-        path: "win_toolchain"
-      }
-      build_numbers: YES
-      service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com"
-      task_template_canary_percentage {
-        value: 5
-      }
-      experiments {
-        key: "chromium_swarming.expose_merge_script_failures"
-        value: 20
-      }
-      experiments {
-        key: "enable_weetbix_queries"
-        value: 100
-      }
-      experiments {
-        key: "luci.recipes.use_python3"
-        value: 100
-      }
-      experiments {
-        key: "weetbix.enable_weetbix_exonerations"
-        value: 100
-      }
-      experiments {
-        key: "weetbix.retry_weak_exonerations"
-        value: 100
-      }
-      resultdb {
-        enable: true
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "try_test_results"
-          test_results {}
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://chrome/test:telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "blink_web_tests_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "(ninja://[^/]*blink_web_tests/.+)|(ninja://[^/]*blink_wpt_tests/.+)"
-            }
-          }
-        }
-        history_options {
-          use_invocation_timestamp: true
-        }
-      }
-      description_html: "This is the compilator half of an orchestrator + compilator pair of builders. The orchestrator is <a href=\"https://ci.chromium.org/p/chromium/builders/try/android-marshmallow-x86-rel\">android-marshmallow-x86-rel</a>."
-    }
-    builders {
-      name: "android-marshmallow-x86-rel-non-cq"
-      swarming_host: "chromium-swarm.appspot.com"
-      dimensions: "builderless:1"
-      dimensions: "cores:8"
-      dimensions: "cpu:x86-64"
-      dimensions: "os:Ubuntu-18.04"
-      dimensions: "pool:luci.chromium.try"
-      dimensions: "ssd:0"
-      exe {
-        cipd_package: "infra/chromium/bootstrapper/${platform}"
-        cipd_version: "latest"
-        cmd: "bootstrapper"
-      }
-      properties:
-        '{'
-        '  "$bootstrap/exe": {'
-        '    "exe": {'
-        '      "cipd_package": "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build",'
-        '      "cipd_version": "refs/heads/main",'
-        '      "cmd": ['
-        '        "luciexe"'
-        '      ]'
-        '    }'
-        '  },'
-        '  "$bootstrap/properties": {'
-        '    "properties_file": "infra/config/generated/builders/try/android-marshmallow-x86-rel-non-cq/properties.json",'
-        '    "top_level_project": {'
-        '      "ref": "refs/heads/main",'
-        '      "repo": {'
-        '        "host": "chromium.googlesource.com",'
-        '        "project": "chromium/src"'
-        '      }'
-        '    }'
-        '  },'
-        '  "builder_group": "tryserver.chromium.android",'
-        '  "led_builder_is_bootstrapped": true,'
-        '  "recipe": "chromium_trybot"'
-        '}'
-      execution_timeout_secs: 14400
-      expiration_secs: 7200
-      grace_period {
-        seconds: 120
-      }
-      caches {
-        name: "win_toolchain"
-        path: "win_toolchain"
-      }
-      build_numbers: YES
-      service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com"
-      task_template_canary_percentage {
-        value: 5
-      }
-      experiments {
-        key: "chromium_swarming.expose_merge_script_failures"
-        value: 20
-      }
-      experiments {
-        key: "enable_weetbix_queries"
-        value: 100
-      }
-      experiments {
-        key: "luci.recipes.use_python3"
-        value: 100
-      }
-      experiments {
-        key: "weetbix.enable_weetbix_exonerations"
-        value: 100
-      }
-      experiments {
-        key: "weetbix.retry_weak_exonerations"
-        value: 100
-      }
-      resultdb {
-        enable: true
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "try_test_results"
-          test_results {}
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "gpu_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "ninja://chrome/test:telemetry_gpu_integration_test[^/]*/.+"
-            }
-          }
-        }
-        bq_exports {
-          project: "chrome-luci-data"
-          dataset: "chromium"
-          table: "blink_web_tests_try_test_results"
-          test_results {
-            predicate {
-              test_id_regexp: "(ninja://[^/]*blink_web_tests/.+)|(ninja://[^/]*blink_wpt_tests/.+)"
-            }
-          }
-        }
-        history_options {
-          use_invocation_timestamp: true
-        }
-      }
-    }
-    builders {
       name: "android-nougat-x86-rel"
       swarming_host: "chromium-swarm.appspot.com"
       dimensions: "cores:4"
@@ -85479,10 +84681,11 @@
     builders {
       name: "mac-rel"
       swarming_host: "chromium-swarm.appspot.com"
+      dimensions: "builder:mac-rel"
       dimensions: "cores:2"
       dimensions: "cpu:x86-64"
       dimensions: "os:Ubuntu-18.04"
-      dimensions: "pool:luci.chromium.try.orchestrator"
+      dimensions: "pool:luci.chromium.try"
       exe {
         cipd_package: "infra/chromium/bootstrapper/${platform}"
         cipd_version: "latest"
@@ -85519,10 +84722,6 @@
         seconds: 120
       }
       caches {
-        name: "unused_builder_cache"
-        path: "builder"
-      }
-      caches {
         name: "win_toolchain"
         path: "win_toolchain"
       }
@@ -91575,10 +90774,11 @@
     builders {
       name: "win10_chromium_x64_rel_ng"
       swarming_host: "chromium-swarm.appspot.com"
+      dimensions: "builder:win10_chromium_x64_rel_ng"
       dimensions: "cores:2"
       dimensions: "cpu:x86-64"
       dimensions: "os:Ubuntu-18.04"
-      dimensions: "pool:luci.chromium.try.orchestrator"
+      dimensions: "pool:luci.chromium.try"
       exe {
         cipd_package: "infra/chromium/bootstrapper/${platform}"
         cipd_version: "latest"
@@ -91615,10 +90815,6 @@
         seconds: 120
       }
       caches {
-        name: "unused_builder_cache"
-        path: "builder"
-      }
-      caches {
         name: "win_toolchain"
         path: "win_toolchain"
       }
diff --git a/infra/config/generated/luci/luci-milo.cfg b/infra/config/generated/luci/luci-milo.cfg
index ebdeae23..35977298 100644
--- a/infra/config/generated/luci/luci-milo.cfg
+++ b/infra/config/generated/luci/luci-milo.cfg
@@ -1224,16 +1224,6 @@
     short_name: "P"
   }
   builders {
-    name: "buildbucket/luci.chromium.ci/android-marshmallow-arm64-rel"
-    category: "chromium.android|builder_tester|arm64"
-    short_name: "M"
-  }
-  builders {
-    name: "buildbucket/luci.chromium.ci/android-marshmallow-x86-rel"
-    category: "chromium.android|builder_tester|x86"
-    short_name: "M"
-  }
-  builders {
     name: "buildbucket/luci.chromium.ci/android-pie-arm64-rel"
     category: "chromium.android|on_cq"
     short_name: "P"
@@ -1751,122 +1741,107 @@
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.ci/fuchsia-arm64-cast"
-    category: "ci|arm64"
+    category: "gardener|ci|arm64"
     short_name: "cast"
   }
   builders {
     name: "buildbucket/luci.chromium.ci/Fuchsia ARM64"
-    category: "ci|arm64"
+    category: "gardener|ci|arm64"
     short_name: "rel"
   }
   builders {
     name: "buildbucket/luci.chromium.ci/fuchsia-x64-cast"
-    category: "ci|x64"
+    category: "gardener|ci|x64"
     short_name: "cast"
   }
   builders {
     name: "buildbucket/luci.chromium.ci/fuchsia-x64-dbg"
-    category: "ci|x64"
+    category: "gardener|ci|x64"
     short_name: "dbg"
   }
   builders {
     name: "buildbucket/luci.chromium.ci/Deterministic Fuchsia (dbg)"
-    category: "ci|x64"
+    category: "gardener|ci|x64"
     short_name: "det"
   }
   builders {
     name: "buildbucket/luci.chromium.ci/fuchsia-official"
-    category: "ci|x64"
+    category: "gardener|ci|x64"
     short_name: "off"
   }
   builders {
     name: "buildbucket/luci.chromium.ci/Fuchsia x64"
-    category: "ci|x64"
+    category: "gardener|ci|x64"
     short_name: "rel"
   }
   builders {
     name: "buildbucket/luci.chromium.ci/fuchsia-arm64-cast-receiver-rel"
-    category: "fuchsia ci|arm64"
+    category: "gardener|fuchsia ci|arm64"
     short_name: "cast-ng"
   }
   builders {
     name: "buildbucket/luci.chromium.ci/fuchsia-fyi-arm64-dbg"
-    category: "fuchsia ci|arm64"
+    category: "gardener|fuchsia ci|arm64"
     short_name: "dbg"
   }
   builders {
     name: "buildbucket/luci.chromium.ci/fuchsia-arm64-rel"
-    category: "fuchsia ci|arm64"
+    category: "gardener|fuchsia ci|arm64"
     short_name: "rel-ng"
   }
   builders {
     name: "buildbucket/luci.chromium.ci/fuchsia-fyi-x64-asan"
-    category: "fuchsia ci|x64"
+    category: "gardener|fuchsia ci|x64"
     short_name: "asan"
   }
   builders {
     name: "buildbucket/luci.chromium.ci/fuchsia-x64-cast-receiver-rel"
-    category: "fuchsia ci|x64"
+    category: "gardener|fuchsia ci|x64"
     short_name: "cast-ng"
   }
   builders {
     name: "buildbucket/luci.chromium.ci/fuchsia-fyi-x64-dbg"
-    category: "fuchsia ci|x64"
+    category: "gardener|fuchsia ci|x64"
     short_name: "dbg"
   }
   builders {
     name: "buildbucket/luci.chromium.ci/fuchsia-x64-rel"
-    category: "fuchsia ci|x64"
+    category: "gardener|fuchsia ci|x64"
     short_name: "rel-ng"
   }
   builders {
-    name: "buildbucket/luci.chrome.ci/fuchsia-builder-perf-fyi"
-    category: "p/chrome|arm64"
+    name: "buildbucket/luci.chrome.ci/fuchsia-builder-perf-arm64"
+    category: "gardener|p/chrome|arm64"
     short_name: "perf-bld"
   }
   builders {
     name: "buildbucket/luci.chrome.ci/fuchsia-fyi-arm64-size"
-    category: "p/chrome|arm64"
+    category: "gardener|p/chrome|arm64"
     short_name: "size"
   }
   builders {
     name: "buildbucket/luci.chrome.ci/fuchsia-builder-perf-x64"
-    category: "p/chrome|x64"
+    category: "gardener|p/chrome|x64"
     short_name: "perf-bld"
   }
   builders {
     name: "buildbucket/luci.chrome.ci/fuchsia-x64"
-    category: "p/chrome|x64"
+    category: "gardener|p/chrome|x64"
     short_name: "rel"
   }
   builders {
     name: "buildbucket/luci.chrome.ci/fuchsia-fyi-astro"
-    category: "hardware"
+    category: "gardener|hardware"
     short_name: "ast"
   }
   builders {
-    name: "buildbucket/luci.chrome.ci/fuchsia-fyi-atlas"
-    category: "hardware"
-    short_name: "atl"
-  }
-  builders {
-    name: "buildbucket/luci.chrome.ci/fuchsia-fyi-sherlock"
-    category: "hardware"
-    short_name: "sher"
-  }
-  builders {
-    name: "buildbucket/luci.chrome.ci/fuchsia-perf-fyi"
-    category: "hardware|perf"
+    name: "buildbucket/luci.chrome.ci/fuchsia-perf-ast"
+    category: "gardener|hardware|perf"
     short_name: "ast"
   }
   builders {
-    name: "buildbucket/luci.chrome.ci/fuchsia-perf-atlas-fyi"
-    category: "hardware|perf"
-    short_name: "atl"
-  }
-  builders {
-    name: "buildbucket/luci.chrome.ci/fuchsia-perf-sherlock-fyi"
-    category: "hardware|perf"
+    name: "buildbucket/luci.chrome.ci/fuchsia-perf-shk"
+    category: "gardener|hardware|perf"
     short_name: "sher"
   }
   builders {
@@ -1914,6 +1889,31 @@
     category: "fyi|clang"
     short_name: "x64"
   }
+  builders {
+    name: "buildbucket/luci.chrome.ci/fuchsia-fyi-atlas"
+    category: "fyi|hardware"
+    short_name: "atl"
+  }
+  builders {
+    name: "buildbucket/luci.chrome.ci/fuchsia-fyi-sherlock"
+    category: "fyi|hardware"
+    short_name: "sher"
+  }
+  builders {
+    name: "buildbucket/luci.chrome.ci/fuchsia-perf-fyi"
+    category: "fyi|hardware|perf"
+    short_name: "ast"
+  }
+  builders {
+    name: "buildbucket/luci.chrome.ci/fuchsia-perf-atlas-fyi"
+    category: "fyi|hardware|perf"
+    short_name: "atl"
+  }
+  builders {
+    name: "buildbucket/luci.chrome.ci/fuchsia-perf-sherlock-fyi"
+    category: "fyi|hardware|perf"
+    short_name: "sher"
+  }
   header {
     oncalls {
       name: "Chromium"
@@ -2612,18 +2612,6 @@
     name: "buildbucket/luci.chromium.try/android-cronet-x86-dbg-10-tests"
   }
   builders {
-    name: "buildbucket/luci.chromium.try/android-marshmallow-arm64-rel"
-  }
-  builders {
-    name: "buildbucket/luci.chromium.try/android-marshmallow-arm64-rel-compilator"
-  }
-  builders {
-    name: "buildbucket/luci.chromium.try/android-marshmallow-x86-rel"
-  }
-  builders {
-    name: "buildbucket/luci.chromium.try/android-marshmallow-x86-rel-compilator"
-  }
-  builders {
     name: "buildbucket/luci.chromium.try/android-nougat-x86-rel"
   }
   builders {
@@ -4207,11 +4195,6 @@
     short_name: "10"
   }
   builders {
-    name: "buildbucket/luci.chromium.ci/android-marshmallow-arm64-rel"
-    category: "builder_tester|arm64"
-    short_name: "M"
-  }
-  builders {
     name: "buildbucket/luci.chromium.ci/android-pie-arm64-coverage-experimental-rel"
     category: "builder_tester|arm64"
     short_name: "p-cov"
@@ -4227,16 +4210,6 @@
     short_name: "11"
   }
   builders {
-    name: "buildbucket/luci.chromium.ci/android-marshmallow-x86-rel"
-    category: "builder_tester|x86"
-    short_name: "M"
-  }
-  builders {
-    name: "buildbucket/luci.chromium.ci/android-marshmallow-x86-rel-non-cq"
-    category: "builder_tester|x86"
-    short_name: "M_non-cq"
-  }
-  builders {
     name: "buildbucket/luci.chromium.ci/android-pie-x86-rel"
     category: "builder_tester|x86"
     short_name: "P"
@@ -16215,21 +16188,6 @@
     name: "buildbucket/luci.chromium.try/android-inverse-fieldtrials-pie-x86-fyi-rel"
   }
   builders {
-    name: "buildbucket/luci.chromium.try/android-marshmallow-arm64-rel"
-  }
-  builders {
-    name: "buildbucket/luci.chromium.try/android-marshmallow-arm64-rel-compilator"
-  }
-  builders {
-    name: "buildbucket/luci.chromium.try/android-marshmallow-x86-rel"
-  }
-  builders {
-    name: "buildbucket/luci.chromium.try/android-marshmallow-x86-rel-compilator"
-  }
-  builders {
-    name: "buildbucket/luci.chromium.try/android-marshmallow-x86-rel-non-cq"
-  }
-  builders {
     name: "buildbucket/luci.chromium.try/android-nougat-x86-rel"
   }
   builders {
@@ -17387,21 +17345,6 @@
     name: "buildbucket/luci.chromium.try/android-inverse-fieldtrials-pie-x86-fyi-rel"
   }
   builders {
-    name: "buildbucket/luci.chromium.try/android-marshmallow-arm64-rel"
-  }
-  builders {
-    name: "buildbucket/luci.chromium.try/android-marshmallow-arm64-rel-compilator"
-  }
-  builders {
-    name: "buildbucket/luci.chromium.try/android-marshmallow-x86-rel"
-  }
-  builders {
-    name: "buildbucket/luci.chromium.try/android-marshmallow-x86-rel-compilator"
-  }
-  builders {
-    name: "buildbucket/luci.chromium.try/android-marshmallow-x86-rel-non-cq"
-  }
-  builders {
     name: "buildbucket/luci.chromium.try/android-nougat-x86-rel"
   }
   builders {
diff --git a/infra/config/generated/luci/luci-scheduler.cfg b/infra/config/generated/luci/luci-scheduler.cfg
index 45c7106..0c3f7116 100644
--- a/infra/config/generated/luci/luci-scheduler.cfg
+++ b/infra/config/generated/luci/luci-scheduler.cfg
@@ -4681,36 +4681,6 @@
   }
 }
 job {
-  id: "android-marshmallow-arm64-rel"
-  realm: "ci"
-  acl_sets: "ci"
-  buildbucket {
-    server: "cr-buildbucket.appspot.com"
-    bucket: "ci"
-    builder: "android-marshmallow-arm64-rel"
-  }
-}
-job {
-  id: "android-marshmallow-x86-rel"
-  realm: "ci"
-  acl_sets: "ci"
-  buildbucket {
-    server: "cr-buildbucket.appspot.com"
-    bucket: "ci"
-    builder: "android-marshmallow-x86-rel"
-  }
-}
-job {
-  id: "android-marshmallow-x86-rel-non-cq"
-  realm: "ci"
-  acl_sets: "ci"
-  buildbucket {
-    server: "cr-buildbucket.appspot.com"
-    bucket: "ci"
-    builder: "android-marshmallow-x86-rel-non-cq"
-  }
-}
-job {
   id: "android-nougat-x86-rel"
   realm: "ci"
   acl_sets: "ci"
@@ -7526,9 +7496,6 @@
   triggers: "android-cronet-x86-dbg"
   triggers: "android-cronet-x86-rel"
   triggers: "android-fieldtrial-rel"
-  triggers: "android-marshmallow-arm64-rel"
-  triggers: "android-marshmallow-x86-rel"
-  triggers: "android-marshmallow-x86-rel-non-cq"
   triggers: "android-nougat-x86-rel"
   triggers: "android-official"
   triggers: "android-pie-arm64-coverage-experimental-rel"
diff --git a/infra/config/subprojects/chromium/ci.star b/infra/config/subprojects/chromium/ci.star
index 56dc6af..a0715293 100644
--- a/infra/config/subprojects/chromium/ci.star
+++ b/infra/config/subprojects/chromium/ci.star
@@ -99,12 +99,15 @@
     ("win64-chrome", "win"),
 )]
 
+# Any builders that should be monitored by the Chrome-Fuchsia Gardener
+# should be in the "gardener" group.
 consoles.console_view(
     name = "sheriff.fuchsia",
     title = "Fuchsia Sheriff Console",
     ordering = {
-        None: ["ci", "fuchsia ci", "p/chrome", "hardware", "fyi"],
-        "fyi": ["arm64", "x64", "clang"],
+        None: ["gardener", "fyi"],
+        "gardener": ["ci", "fuchsia ci", "p/chrome", "hardware"],
+        "fyi": ["arm64", "x64", "clang", "hardware"],
     },
 )
 
@@ -115,16 +118,18 @@
     category = category,
     short_name = short_name,
 ) for name, category, short_name in (
-    ("fuchsia-builder-perf-fyi", "p/chrome|arm64", "perf-bld"),
-    ("fuchsia-builder-perf-x64", "p/chrome|x64", "perf-bld"),
-    ("fuchsia-fyi-arm64-size", "p/chrome|arm64", "size"),
-    ("fuchsia-fyi-astro", "hardware", "ast"),
-    ("fuchsia-fyi-atlas", "hardware", "atl"),
-    ("fuchsia-fyi-sherlock", "hardware", "sher"),
-    ("fuchsia-perf-atlas-fyi", "hardware|perf", "atl"),
-    ("fuchsia-perf-fyi", "hardware|perf", "ast"),
-    ("fuchsia-perf-sherlock-fyi", "hardware|perf", "sher"),
-    ("fuchsia-x64", "p/chrome|x64", "rel"),
+    ("fuchsia-builder-perf-arm64", "gardener|p/chrome|arm64", "perf-bld"),
+    ("fuchsia-builder-perf-x64", "gardener|p/chrome|x64", "perf-bld"),
+    ("fuchsia-fyi-arm64-size", "gardener|p/chrome|arm64", "size"),
+    ("fuchsia-fyi-astro", "gardener|hardware", "ast"),
+    ("fuchsia-fyi-atlas", "fyi|hardware", "atl"),
+    ("fuchsia-fyi-sherlock", "fyi|hardware", "sher"),
+    ("fuchsia-perf-ast", "gardener|hardware|perf", "ast"),
+    ("fuchsia-perf-atlas-fyi", "fyi|hardware|perf", "atl"),
+    ("fuchsia-perf-fyi", "fyi|hardware|perf", "ast"),
+    ("fuchsia-perf-sherlock-fyi", "fyi|hardware|perf", "sher"),
+    ("fuchsia-perf-shk", "gardener|hardware|perf", "sher"),
+    ("fuchsia-x64", "gardener|p/chrome|x64", "rel"),
 )]
 
 exec("./ci/checks.star")
diff --git a/infra/config/subprojects/chromium/ci/chromium.android.star b/infra/config/subprojects/chromium/ci/chromium.android.star
index 794d0a6..0d65671 100644
--- a/infra/config/subprojects/chromium/ci/chromium.android.star
+++ b/infra/config/subprojects/chromium/ci/chromium.android.star
@@ -1208,111 +1208,6 @@
 )
 
 ci.builder(
-    name = "android-marshmallow-arm64-rel",
-    builder_spec = builder_config.builder_spec(
-        gclient_config = builder_config.gclient_config(
-            config = "chromium",
-            apply_configs = [
-                "android",
-                "enable_reclient",
-            ],
-        ),
-        chromium_config = builder_config.chromium_config(
-            config = "android",
-            apply_configs = [
-                "download_vr_test_apks",
-                "mb",
-            ],
-            build_config = builder_config.build_config.RELEASE,
-            target_bits = 64,
-            target_platform = builder_config.target_platform.ANDROID,
-        ),
-        android_config = builder_config.android_config(
-            config = "main_builder",
-        ),
-        build_gs_bucket = "chromium-android-archive",
-    ),
-    branch_selector = branches.STANDARD_MILESTONE,
-    console_view_entry = consoles.console_view_entry(
-        category = "builder_tester|arm64",
-        short_name = "M",
-    ),
-    cores = 16,
-    cq_mirrors_console_view = "mirrors",
-    execution_timeout = 4 * time.hour,
-    tree_closing = False,
-    sheriff_rotations = args.ignore_default(None),
-    ssd = True,
-)
-
-ci.builder(
-    name = "android-marshmallow-x86-rel",
-    branch_selector = branches.STANDARD_MILESTONE,
-    builder_spec = builder_config.builder_spec(
-        gclient_config = builder_config.gclient_config(
-            config = "chromium",
-            apply_configs = [
-                "android",
-                "enable_wpr_tests",
-                "enable_reclient",
-            ],
-        ),
-        chromium_config = builder_config.chromium_config(
-            config = "android",
-            apply_configs = [
-                "mb",
-            ],
-            build_config = builder_config.build_config.RELEASE,
-            target_bits = 32,
-            target_platform = builder_config.target_platform.ANDROID,
-        ),
-        android_config = builder_config.android_config(
-            config = "x86_builder",
-        ),
-        build_gs_bucket = "chromium-android-archive",
-    ),
-    console_view_entry = consoles.console_view_entry(
-        category = "builder_tester|x86",
-        short_name = "M",
-    ),
-    cq_mirrors_console_view = "mirrors",
-    tree_closing = False,
-    sheriff_rotations = args.ignore_default(None),
-)
-
-ci.builder(
-    name = "android-marshmallow-x86-rel-non-cq",
-    builder_spec = builder_config.builder_spec(
-        gclient_config = builder_config.gclient_config(
-            config = "chromium",
-            apply_configs = [
-                "android",
-                "enable_wpr_tests",
-                "enable_reclient",
-            ],
-        ),
-        chromium_config = builder_config.chromium_config(
-            config = "android",
-            apply_configs = [
-                "mb",
-            ],
-            build_config = builder_config.build_config.RELEASE,
-            target_bits = 32,
-            target_platform = builder_config.target_platform.ANDROID,
-        ),
-        android_config = builder_config.android_config(
-            config = "x86_builder",
-        ),
-        build_gs_bucket = "chromium-android-archive",
-    ),
-    console_view_entry = consoles.console_view_entry(
-        category = "builder_tester|x86",
-        short_name = "M_non-cq",
-    ),
-    sheriff_rotations = args.ignore_default(None),
-)
-
-ci.builder(
     name = "android-nougat-x86-rel",
     branch_selector = branches.STANDARD_MILESTONE,
     builder_spec = builder_config.builder_spec(
diff --git a/infra/config/subprojects/chromium/ci/chromium.fuchsia.fyi.star b/infra/config/subprojects/chromium/ci/chromium.fuchsia.fyi.star
index 4a371b1..714e351a 100644
--- a/infra/config/subprojects/chromium/ci/chromium.fuchsia.fyi.star
+++ b/infra/config/subprojects/chromium/ci/chromium.fuchsia.fyi.star
@@ -52,7 +52,7 @@
         consoles.console_view_entry(
             branch_selector = branches.MAIN,
             console_view = "sheriff.fuchsia",
-            category = "fuchsia ci|arm64",
+            category = "gardener|fuchsia ci|arm64",
             short_name = "cast-ng",
         ),
     ],
@@ -92,7 +92,7 @@
         consoles.console_view_entry(
             branch_selector = branches.MAIN,
             console_view = "sheriff.fuchsia",
-            # TODO(crbug.com/1370134): Move to "fuchsia ci|arm64" once green.
+            # TODO(crbug.com/1372224): Move to "fuchsia ci|arm64" once green.
             category = "fyi|arm64",
             short_name = "chrome",
         ),
@@ -134,7 +134,7 @@
         consoles.console_view_entry(
             branch_selector = branches.MAIN,
             console_view = "sheriff.fuchsia",
-            category = "fuchsia ci|arm64",
+            category = "gardener|fuchsia ci|arm64",
             short_name = "rel-ng",
         ),
     ],
@@ -174,7 +174,7 @@
         consoles.console_view_entry(
             branch_selector = branches.MAIN,
             console_view = "sheriff.fuchsia",
-            category = "fuchsia ci|arm64",
+            category = "gardener|fuchsia ci|arm64",
             short_name = "dbg",
         ),
     ],
@@ -214,7 +214,7 @@
         consoles.console_view_entry(
             branch_selector = branches.MAIN,
             console_view = "sheriff.fuchsia",
-            category = "fuchsia ci|x64",
+            category = "gardener|fuchsia ci|x64",
             short_name = "asan",
         ),
     ],
@@ -252,7 +252,7 @@
         consoles.console_view_entry(
             branch_selector = branches.MAIN,
             console_view = "sheriff.fuchsia",
-            category = "fuchsia ci|x64",
+            category = "gardener|fuchsia ci|x64",
             short_name = "dbg",
         ),
     ],
@@ -291,7 +291,7 @@
         consoles.console_view_entry(
             branch_selector = branches.MAIN,
             console_view = "sheriff.fuchsia",
-            category = "fuchsia ci|x64",
+            category = "gardener|fuchsia ci|x64",
             short_name = "cast-ng",
         ),
     ],
@@ -329,7 +329,7 @@
         consoles.console_view_entry(
             branch_selector = branches.MAIN,
             console_view = "sheriff.fuchsia",
-            # TODO(crbug.com/1370134): Move to "fuchsia ci|x64" once green.
+            # TODO(crbug.com/1372224): Move to "fuchsia ci|x64" once green.
             category = "fyi|x64",
             short_name = "chrome",
         ),
@@ -368,7 +368,7 @@
         consoles.console_view_entry(
             branch_selector = branches.MAIN,
             console_view = "sheriff.fuchsia",
-            category = "fuchsia ci|x64",
+            category = "gardener|fuchsia ci|x64",
             short_name = "rel-ng",
         ),
     ],
diff --git a/infra/config/subprojects/chromium/ci/chromium.fuchsia.star b/infra/config/subprojects/chromium/ci/chromium.fuchsia.star
index 4130ab1..50e8d5d8 100644
--- a/infra/config/subprojects/chromium/ci/chromium.fuchsia.star
+++ b/infra/config/subprojects/chromium/ci/chromium.fuchsia.star
@@ -48,7 +48,7 @@
         consoles.console_view_entry(
             branch_selector = branches.MAIN,
             console_view = "sheriff.fuchsia",
-            category = "ci|x64",
+            category = "gardener|ci|x64",
             short_name = "det",
         ),
     ],
@@ -68,7 +68,7 @@
         consoles.console_view_entry(
             branch_selector = branches.MAIN,
             console_view = "sheriff.fuchsia",
-            category = "ci|arm64",
+            category = "gardener|ci|arm64",
             short_name = "rel",
         ),
     ],
@@ -104,7 +104,7 @@
         consoles.console_view_entry(
             branch_selector = branches.MAIN,
             console_view = "sheriff.fuchsia",
-            category = "ci|x64",
+            category = "gardener|ci|x64",
             short_name = "rel",
         ),
     ],
@@ -141,7 +141,7 @@
         consoles.console_view_entry(
             branch_selector = branches.MAIN,
             console_view = "sheriff.fuchsia",
-            category = "ci|arm64",
+            category = "gardener|ci|arm64",
             short_name = "cast",
         ),
     ],
@@ -181,7 +181,7 @@
         consoles.console_view_entry(
             branch_selector = branches.MAIN,
             console_view = "sheriff.fuchsia",
-            category = "ci|x64",
+            category = "gardener|ci|x64",
             short_name = "cast",
         ),
     ],
@@ -220,7 +220,7 @@
         consoles.console_view_entry(
             branch_selector = branches.MAIN,
             console_view = "sheriff.fuchsia",
-            category = "ci|x64",
+            category = "gardener|ci|x64",
             short_name = "dbg",
         ),
     ],
diff --git a/infra/config/subprojects/chromium/ci/chromium.fyi.star b/infra/config/subprojects/chromium/ci/chromium.fyi.star
index e06ee4a..3d6f9642 100644
--- a/infra/config/subprojects/chromium/ci/chromium.fyi.star
+++ b/infra/config/subprojects/chromium/ci/chromium.fyi.star
@@ -520,6 +520,8 @@
     ),
     goma_backend = None,
     os = os.LINUX_DEFAULT,
+    reclient_jobs = reclient.jobs.DEFAULT,
+    reclient_instance = reclient.instance.DEFAULT_TRUSTED,
 )
 
 ci.builder(
diff --git a/infra/config/subprojects/chromium/ci/chromium.star b/infra/config/subprojects/chromium/ci/chromium.star
index 2011e29..bac2af8f 100644
--- a/infra/config/subprojects/chromium/ci/chromium.star
+++ b/infra/config/subprojects/chromium/ci/chromium.star
@@ -152,7 +152,7 @@
         consoles.console_view_entry(
             branch_selector = branches.MAIN,
             console_view = "sheriff.fuchsia",
-            category = "ci|x64",
+            category = "gardener|ci|x64",
             short_name = "off",
         ),
     ],
diff --git a/infra/config/subprojects/chromium/try/tryserver.chromium.android.star b/infra/config/subprojects/chromium/try/tryserver.chromium.android.star
index 898e6a7..8759761 100644
--- a/infra/config/subprojects/chromium/try/tryserver.chromium.android.star
+++ b/infra/config/subprojects/chromium/try/tryserver.chromium.android.star
@@ -240,70 +240,6 @@
 )
 
 try_.orchestrator_builder(
-    name = "android-marshmallow-arm64-rel",
-    mirrors = [
-        "ci/android-marshmallow-arm64-rel",
-        "ci/Android Release (Nexus 5X)",
-    ],
-    check_for_flakiness = True,
-    compilator = "android-marshmallow-arm64-rel-compilator",
-    branch_selector = branches.STANDARD_MILESTONE,
-    main_list_view = "try",
-    use_java_coverage = True,
-    coverage_test_types = ["unit", "overall"],
-    # tryjob = try_.job(),
-    experiments = {
-        "remove_src_checkout_experiment": 100,
-    },
-    use_orchestrator_pool = True,
-)
-
-try_.compilator_builder(
-    name = "android-marshmallow-arm64-rel-compilator",
-    branch_selector = branches.STANDARD_MILESTONE,
-    check_for_flakiness = True,
-    cores = 64 if settings.is_main else 32,
-    main_list_view = "try",
-)
-
-try_.orchestrator_builder(
-    name = "android-marshmallow-x86-rel",
-    mirrors = [
-        "ci/android-marshmallow-x86-rel",
-    ],
-    try_settings = builder_config.try_settings(
-        rts_config = builder_config.rts_config(
-            condition = builder_config.rts_condition.QUICK_RUN_ONLY,
-        ),
-    ),
-    check_for_flakiness = True,
-    compilator = "android-marshmallow-x86-rel-compilator",
-    branch_selector = branches.STANDARD_MILESTONE,
-    main_list_view = "try",
-    use_java_coverage = True,
-    coverage_test_types = ["unit", "overall"],
-    # tryjob = try_.job(),
-    experiments = {
-        "remove_src_checkout_experiment": 100,
-    },
-    use_orchestrator_pool = True,
-)
-
-try_.compilator_builder(
-    name = "android-marshmallow-x86-rel-compilator",
-    branch_selector = branches.STANDARD_MILESTONE,
-    check_for_flakiness = True,
-    main_list_view = "try",
-)
-
-try_.builder(
-    name = "android-marshmallow-x86-rel-non-cq",
-    mirrors = [
-        "ci/android-marshmallow-x86-rel-non-cq",
-    ],
-)
-
-try_.orchestrator_builder(
     name = "android-nougat-x86-rel",
     mirrors = [
         "ci/android-nougat-x86-rel",
diff --git a/infra/config/subprojects/chromium/try/tryserver.chromium.mac.star b/infra/config/subprojects/chromium/try/tryserver.chromium.mac.star
index b6080f8..f0ca6d65 100644
--- a/infra/config/subprojects/chromium/try/tryserver.chromium.mac.star
+++ b/infra/config/subprojects/chromium/try/tryserver.chromium.mac.star
@@ -111,7 +111,9 @@
     experiments = {
         "remove_src_checkout_experiment": 100,
     },
-    use_orchestrator_pool = True,
+    # TODO (crbug.com/1372179): Use orchestrator pool once overloaded test pools
+    # are addressed
+    #use_orchestrator_pool = True,
 )
 
 try_.compilator_builder(
diff --git a/infra/config/subprojects/chromium/try/tryserver.chromium.win.star b/infra/config/subprojects/chromium/try/tryserver.chromium.win.star
index 91d3e6d..a1b7b60 100644
--- a/infra/config/subprojects/chromium/try/tryserver.chromium.win.star
+++ b/infra/config/subprojects/chromium/try/tryserver.chromium.win.star
@@ -194,7 +194,9 @@
     experiments = {
         "remove_src_checkout_experiment": 100,
     },
-    use_orchestrator_pool = True,
+    # TODO (crbug.com/1372179): Use orchestrator pool once overloaded test pools
+    # are addressed
+    #use_orchestrator_pool = True,
 )
 
 try_.compilator_builder(
diff --git a/ios/build/tools/update_deps.py b/ios/build/tools/update_deps.py
index 3f896ed..8518bfba 100755
--- a/ios/build/tools/update_deps.py
+++ b/ios/build/tools/update_deps.py
@@ -74,7 +74,7 @@
 
 
 def gn_format(gn_files):
-    """Format the file |gn_files|."""
+    """Format the file `gn_files`."""
     subprocess.check_call(["gn", "format"] + gn_files)
 
 
@@ -96,6 +96,27 @@
     return target_name
 
 
+def cleanup_redundant_deps(deps):
+    """If the list of `deps` contains only targets redundant with each
+    others, this method will return only one of them. Otherwise, return
+    all targets.
+    """
+    if len(deps) != 2:
+        """Currently only handle the string grit case where gn finds the
+        the string header in <path>:<target>_strings and
+        <path>:<target>_string_grit, so don't check if there is not
+        exactly two targets.
+        """
+        return deps
+    if (deps[1].endswith("_strings") and
+        deps[0] == deps[1] + "_grit"):
+        return [deps[0]]
+    if (deps[0].endswith("_strings") and
+        deps[1] == deps[0] + "_grit"):
+        return [deps[1]]
+    return deps
+
+
 def extract_missing_dependency(error, prefix, patterns, dependant_line,
                              dependee_line):
     """Parse gn error message for missing direct dependency."""
@@ -109,12 +130,16 @@
     if prefix and not dependant.startswith(prefix):
         return False, None
 
-    dependees = []
+    dependees_with_target = []
     index = dependee_line
     while lines[dependee_line].strip().startswith("//"):
-        dependees.append(remove_redundant_target_name(
-                             dependant, lines[dependee_line].strip()))
+        dependees_with_target.append(lines[dependee_line].strip())
         dependee_line += 1
+    dependees_with_target = cleanup_redundant_deps(dependees_with_target)
+
+    dependees = []
+    for dependee in dependees_with_target:
+        dependees.append(remove_redundant_target_name(dependant, dependee))
 
     return True, (dependant, dependees)
 
diff --git a/ios/chrome/app/strings/resources/ios_google_chrome_strings_te.xtb b/ios/chrome/app/strings/resources/ios_google_chrome_strings_te.xtb
index 4e4d5d5..8f4e6ef 100644
--- a/ios/chrome/app/strings/resources/ios_google_chrome_strings_te.xtb
+++ b/ios/chrome/app/strings/resources/ios_google_chrome_strings_te.xtb
@@ -1,7 +1,7 @@
 <?xml version="1.0" ?>
 <!DOCTYPE translationbundle>
 <translationbundle lang="te">
-<translation id="1143896152279775643">మీ పాస్‌వర్డ్ <ph name="EMAIL" /> కోసం Google పాస్‌వర్డ్ మేనేజర్‌కు సేవ్ చేయబడుతుంది.</translation>
+<translation id="1143896152279775643">మీ పాస్‌వర్డ్ <ph name="EMAIL" /> కోసం Google Password Managerకు సేవ్ చేయబడుతుంది.</translation>
 <translation id="1282031177488366470">Chrome ఫీచర్‌లు మరియు పనితీరును మెరుగుపరచడంలో సహాయపడండి</translation>
 <translation id="1462727070346936664">Chrome నుండి మరిన్ని ప్రయోజనాలను పొందడానికి సైన్ ఇన్ చేయండి.</translation>
 <translation id="1479202195792305274">మీరు మీ Google ఖాతాతో సైన్ ఇన్ చేసినప్పుడు, Chrome మీ పాస్‌వర్డ్‌లను చెక్ చేయగలదు.</translation>
@@ -27,7 +27,7 @@
 <translation id="2574249610672786438">Chromeను ఎక్కడ ఉపయోగించినా మీ ట్యాబ్‌లను చూసేందుకు, మీ పరికరాలన్నింటిలో సైన్ ఇన్ చేయండి</translation>
 <translation id="2576431527583832481">Chrome ఇప్పుడే మెరుగుపరచబడింది! కొత్త వెర్షన్ అందుబాటులో ఉంది.</translation>
 <translation id="257708665678654955">ఈ సైట్‌లోని <ph name="LANGUAGE_NAME" /> పేజీలను మీరు తర్వాతిసారి సందర్శించినప్పుడు, వాటిని అనువదించే సదుపాయాన్ని Google Chrome అందించాలని కోరుకుంటున్నారా?</translation>
-<translation id="2671426118752779020">మీరు మీ iPhoneలోని ఇతర యాప్‌లలో Google పాస్‌వర్డ్ మేనేజర్‌లో సేవ్ చేసిన పాస్‌వర్డ్‌లను ఉపయోగించవచ్చు.</translation>
+<translation id="2671426118752779020">మీరు మీ iPhoneలోని ఇతర యాప్‌లలో Google Password Managerలో సేవ్ చేసిన పాస్‌వర్డ్‌లను ఉపయోగించవచ్చు.</translation>
 <translation id="2689064829982324496">అన్ని వెబ్‌సైట్‌లలో మీ Google ఖాతా నుండి సైన్ అవుట్ చేయడానికి, <ph name="BEGIN_LINK" />Chrome నుండి సైన్ అవుట్ చేయండి<ph name="END_LINK" />.</translation>
 <translation id="2695886661449553974">Chrome అప్‌డేట్‌లు ఏమైనా ఉన్నాయో లేదో చెక్ చేయలేకపోయింది. తర్వాత మళ్లీ ట్రై చేయండి.</translation>
 <translation id="2732745070297234559">Chromeకు అన్ని పాస్‌వర్డ్‌లను చెక్ చేయడం సాధ్యపడలేదు. రేపు మళ్లీ ట్రై చేయండి.</translation>
@@ -98,7 +98,7 @@
 <translation id="7165736900384873061">Google Chrome QR స్కానర్‌ని వినియోగించండి</translation>
 <translation id="7173660919484573146">Chrome మీ పాస్‌వర్డ్‌లను ప్రమాణీకరణ ఉన్న వారు మాత్రమే యాక్సెస్ చేస్తున్నట్లు నిర్ధారించడం కోసం ఫేస్ IDని ఉపయోగిస్తుంది.</translation>
 <translation id="7187993566681480880">Chromeలో మిమ్మల్ని సురక్షితంగా ఉంచుతుంది, మీరు సైన్ ఇన్ చేసినప్పుడు ఇతర Google యాప్‌లలో మీ భద్రతను మెరుగుపరచడానికి ఉపయోగించబడవచ్చు.</translation>
-<translation id="72119412072970160">మీరు మీ iPadలోని ఇతర యాప్‌లలో Google పాస్‌వర్డ్ మేనేజర్‌లో సేవ్ చేసిన పాస్‌వర్డ్‌లను ఉపయోగించవచ్చు.</translation>
+<translation id="72119412072970160">మీరు మీ iPadలోని ఇతర యాప్‌లలో Google Password Managerలో సేవ్ చేసిన పాస్‌వర్డ్‌లను ఉపయోగించవచ్చు.</translation>
 <translation id="7261678641327190792">Chrome మీ పాస్‌వర్డ్‌లను చెక్ చేయలేకపోయింది</translation>
 <translation id="7272930098487145294">ఇమేజ్‌లను సేవ్ చేయడానికి, మీ ఫోటోలకు జోడించడం కోసం Chromeని అనుమతించడానికి సెట్టింగ్‌లపై ట్యాప్ చేయండి</translation>
 <translation id="7275945473750112644">మీ ఖాతా <ph name="HOSTED_DOMAIN" /> ద్వారా మేనేజ్ చేయబడుతుంది, కాబట్టి మీ Chrome డేటా ఈ పరికరం నుండి క్లియర్ చేయబడుతుంది</translation>
@@ -127,7 +127,7 @@
 <translation id="8540666473246803645">Google Chrome</translation>
 <translation id="8736550665979974340">Google Chromeతో సురక్షితంగా ఉండండి</translation>
 <translation id="8772179140489533211">Chromeకు సైన్ ఇన్ చేయడానికి ప్రాంప్ట్‌లను చూపండి.</translation>
-<translation id="8788269841521769222">మీరు ఈ పాస్‌వర్డ్‌ను గుర్తుపెట్టుకోవాల్సిన అవసరం లేదు. ఇది <ph name="EMAIL" /> కోసం Google పాస్‌వర్డ్ మేనేజర్‌కు సేవ్ చేయబడుతుంది</translation>
+<translation id="8788269841521769222">మీరు ఈ పాస్‌వర్డ్‌ను గుర్తుపెట్టుకోవాల్సిన అవసరం లేదు. ఇది <ph name="EMAIL" /> కోసం Google Password Managerకు సేవ్ చేయబడుతుంది</translation>
 <translation id="8897749957032330183">పాస్‌వర్డ్‌లు ఈ పరికరంలోని Google Password Managerలో సేవ్ చేయబడతాయి.</translation>
 <translation id="8969290730818637510">ఆన్‌లో ఉన్నప్పుడు:
 <ph name="BEGIN_INDENT" />  • మీకు లాగానే Chromeను ఉపయోగించే వ్యక్తుల కోసం, దానిని మెరుగుపరచడంలో సహాయపడండి.<ph name="END_INDENT" />
diff --git a/ios/chrome/app/strings/resources/ios_strings_bg.xtb b/ios/chrome/app/strings/resources/ios_strings_bg.xtb
index cfae25a..58e6ff5 100644
--- a/ios/chrome/app/strings/resources/ios_strings_bg.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_bg.xtb
@@ -19,6 +19,7 @@
 <translation id="1076421457278169141">Кодът бе сканиран</translation>
 <translation id="1076785341346483463">Синхронизиране с управляван профил</translation>
 <translation id="1084365883616172403">Публикацията във Facebook е завършена.</translation>
+<translation id="1085696779717592361">Използване на Chrome по подразбиране</translation>
 <translation id="1103523840287552314">Винаги да се превежда от <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Приемам и напред</translation>
 <translation id="110724200315609752">Превключване към отворения прозорец</translation>
@@ -34,6 +35,7 @@
 <translation id="1165039591588034296">Грешка</translation>
 <translation id="1172898394251786223">Следващото поле</translation>
 <translation id="1176932207622159128">Изобр. не може да се запази</translation>
+<translation id="1177414119866731261">Отворете менюто на Chrome.</translation>
 <translation id="1181037720776840403">Премахване</translation>
 <translation id="1207113853726624428">Ново търсене</translation>
 <translation id="1209206284964581585">Скриване засега</translation>
@@ -110,6 +112,7 @@
 <translation id="1740468249224277719">Докоснете двукратно, за да инсталирате.</translation>
 <translation id="1752547299766512813">Запазени пароли</translation>
 <translation id="1753905327828125965">Ползвани</translation>
+<translation id="1789803444939621101">Добре дошли отново, <ph name="USER_NAME" /></translation>
 <translation id="1803264062614276815">Име на титуляря на картата</translation>
 <translation id="1809939268435598390">Изтриване на папката</translation>
 <translation id="1813414402673211292">Изчистване на данните за сърфирането</translation>
@@ -163,6 +166,7 @@
 <translation id="2302742851632557585">Промяна на паролата на уебсайта</translation>
 <translation id="2316709634732130529">Ползване на предложената парола</translation>
 <translation id="2320166752086256636">Скриване на клавиатурата</translation>
+<translation id="2328842561016935977">Изберете „Пароли“, след което докоснете „Добавяне“.</translation>
 <translation id="2351097562818989364">Настройките ви за превод са нулирани.</translation>
 <translation id="235789365079050412">Декларация за поверителност на Google</translation>
 <translation id="2359043044084662842">Превод</translation>
@@ -221,6 +225,7 @@
 <translation id="2781331604911854368">Вкл.</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2783054063075604403">Не може да се създаде връзка</translation>
+<translation id="2786701870377699570">Търсене на раздели в синхронизираните устройства</translation>
 <translation id="2800683595868705743">Излизане от превключвателя на раздели</translation>
 <translation id="2815198996063984598">2. Докоснете „Стандартно прилож. за браузър“.</translation>
 <translation id="2820289420301699633">Администраторът ви контролира Chrome и има достъп до данните в браузъра</translation>
@@ -244,6 +249,7 @@
 <translation id="2923448633003185837">Поставяне и старт</translation>
 <translation id="292639812446257861">Означаване като непрочетено</translation>
 <translation id="2932085390869194046">Предложение за парола...</translation>
+<translation id="2932765531295814441">Ръчно добавяне на пароли</translation>
 <translation id="2952581218264071393">1. Отворете настройките на Chrome.</translation>
 <translation id="2958718410589002129">Пароли</translation>
 <translation id="2961210776189273067">Обръщение</translation>
@@ -279,6 +285,7 @@
 <translation id="3181954750937456830">„Безопасно сърфиране“ (защитава вас и устройството ви от опасни сайтове)</translation>
 <translation id="3184767182050912705">Отключване с <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation>
 <translation id="3207960819495026254">С отметка</translation>
+<translation id="3214379938835224220">Излязохте от профила си при нулирането на своя iPad. Докоснете бутона за продължаване по-долу, за да влезете отново.</translation>
 <translation id="3224641773458703735">За да експортирате паролите, трябва първо да зададете код за достъп на устройството си.</translation>
 <translation id="3227137524299004712">Микрофон</translation>
 <translation id="3240426699337459095">Връзката е копирана</translation>
@@ -296,6 +303,7 @@
 <translation id="3329904751041170572">Не можа да се установи връзка със сървъра.</translation>
 <translation id="3335947283844343239">Повторно отваряне на затворения раздел</translation>
 <translation id="3371831930909698441">Налице е превод. Опциите са достъпни в долната част на екрана.</translation>
+<translation id="3377063233124932127">Запазените ви отметки, пароли и др. вече се показват най-горе.</translation>
 <translation id="3393920035788932672">Изск. прозорци са разр.</translation>
 <translation id="3399930248910934354">Отваряне на настройките на Chrome</translation>
 <translation id="3404744938087714423">Излизането от профила ще изключи синхронизирането.</translation>
@@ -318,11 +326,13 @@
 <translation id="3519193562722059437">Отворете раздел, за да сърфирате в мрежата.</translation>
 <translation id="3527085408025491307">Папка</translation>
 <translation id="3529024052484145543">Няма защита</translation>
+<translation id="3530206579861815432">Можете бързо да намирате отворените и наскоро затворените раздели на синхронизираните си устройства.</translation>
 <translation id="3533202363250687977">Затв. на разделите „инкогнито“</translation>
 <translation id="3533436815740441613">Нов раздел</translation>
 <translation id="3551320343578183772">Затваряне на раздела</translation>
 <translation id="3581564640715911333">Извеждане на предложения за превод на страниците, написани на други езици</translation>
 <translation id="3588820906588687999">Отваряне на изображението в нов раздел</translation>
+<translation id="3595252146048399851">Винаги можете да изберете какво да се синхронизира от <ph name="BEGIN_LINK" />настройките<ph name="END_LINK" />. Google може да персонализира Търсене и други услуги въз основа на историята ви.</translation>
 <translation id="3603009562372709545">Копиране на URL адреса на връзката</translation>
 <translation id="3607167657931203000">Автоматично попълване на данни</translation>
 <translation id="3609785682760573515">Синхронизира се...</translation>
@@ -371,6 +381,7 @@
 <translation id="4018310736049373830">Управление на активността</translation>
 <translation id="4038354071007134711">Няма приложение, което може да отвори файла.</translation>
 <translation id="4042870976416480368">Търсене в страницата</translation>
+<translation id="40433179647657191">Можете да създадете и споделите директна връзка към  откроена от вас част от страница.</translation>
 <translation id="4049507953662678203">Уверете се, че сте свързани с мрежа, и опитайте отново.</translation>
 <translation id="4063300985191096908">Към емисията</translation>
 <translation id="408404951701638773">До лентата за търсене вече се стига по-лесно</translation>
@@ -388,11 +399,13 @@
 <translation id="4181841719683918333">Езици</translation>
 <translation id="4187450337729239226">Поставяне и търсене</translation>
 <translation id="4223967053752765281">Организацията ви изключи функцията за влизане в профил. Пак можете да преглеждате отметките, историята, паролите и другите си настройки на това устройство. В случай че направите промени, те няма да се синхронизират с профила ви.</translation>
+<translation id="4232900911558558076">Разглеждане на новото меню</translation>
 <translation id="4233831822770018312">Редактиране на разрешенията</translation>
 <translation id="4236584471598725073">Цената се проследява</translation>
 <translation id="4237377247299956313">Докоснете <ph name="BEGIN_BOLD" />Стандартно прилож. за браузър<ph name="END_BOLD" />.</translation>
 <translation id="424315890655130736">Въвеждане на пропуск</translation>
 <translation id="4249955472157341256">Сортиране по актуалност</translation>
+<translation id="42618743927498729">Ще получавате сигнал при понижение на цената в който и да е сайт.</translation>
 <translation id="4263576668337963058">Показване на наличните действия за страницата</translation>
 <translation id="4267380167363222949">Следващият раздел</translation>
 <translation id="4272631900155121838">За да сканирате код за бърза реакция, активирайте камерата от настройките</translation>
@@ -535,6 +548,7 @@
 <translation id="5388358297987318779">Отваряне на изображението</translation>
 <translation id="5407969256130905701">Отхвърляне на промените</translation>
 <translation id="5416022985862681400">Последните 7 дни</translation>
+<translation id="5423269318075950257">Следене на цената</translation>
 <translation id="543338862236136125">Редактиране на паролата</translation>
 <translation id="5433691172869980887">Потребителското име е копирано</translation>
 <translation id="5439599923922718668">Често посещавани</translation>
@@ -554,11 +568,15 @@
 <translation id="5556459405103347317">Повторно зареждане</translation>
 <translation id="556042886152191864">Бутон</translation>
 <translation id="5580834567471114021">Да се добави ли към списъка за четене по-късно?</translation>
+<translation id="5597915316964418992">Отворете мрежата с раздели.</translation>
 <translation id="560322036295180549">Изключено от организацията ви</translation>
 <translation id="5614553682702429503">Да се запази ли паролата?</translation>
 <translation id="5626245204502895507">Понастоящем файлът не можа да бъде изтеглен.</translation>
 <translation id="5631164295104953411">Добавяне на начин на плащане</translation>
+<translation id="5636282538000367086">Научете какви са новите неща в Chrome</translation>
+<translation id="5652623411397330904">Продуктите, които следите, ще се показват тук.</translation>
 <translation id="5659593005791499971">Имейл</translation>
+<translation id="5669335982068190158">Излязохте от профила си при нулирането на своя iPhone. Докоснете бутона за продължаване по-долу, за да влезете отново.</translation>
 <translation id="5669528293118408608">www</translation>
 <translation id="567881659373499783">Версия <ph name="PRODUCT_VERSION" /></translation>
 <translation id="5690398455483874150">{count,plural, =1{Показва се 1 прозорец на Chrome}other{Показват се {count} прозореца на Chrome}}</translation>
@@ -569,6 +587,7 @@
 <translation id="5724941645893276623">За да сърфирате в мрежата частно, добавете нов раздел</translation>
 <translation id="5728700505257787410">За съжаление при влизането в профила ви възникна проблем.</translation>
 <translation id="5731784586962650619">Пароли в други приложения</translation>
+<translation id="5733084997078800044">Съвет за Chrome</translation>
 <translation id="5737974891429562743">Данните за вход в профила не са актуални. Актуализирайте ги, за да започне синхронизирането.</translation>
 <translation id="5738385766833540397">Управлявайте начините, по които получавате сигнали за понижение на цената за продукти, които следите</translation>
 <translation id="5738887413654608789">Това ви позволява да откривате подходящи уеб страници въз основа на заобикалящата ви среда.</translation>
@@ -582,6 +601,7 @@
 <translation id="5812974770859303494">Добавяне към...</translation>
 <translation id="581659025233126501">Включване на синхронизирането</translation>
 <translation id="5819208479324046259">Управлява се от <ph name="MANAGER" />. <ph name="BEGIN_LINK" />Научете повече<ph name="END_LINK" /></translation>
+<translation id="5833643789537100742">Можете да запазвате паролите, начините на плащане и адресите за Chrome, така че по-късно да се попълват автоматично.</translation>
 <translation id="5846482154967366008">Търсеща машина</translation>
 <translation id="5854790677617711513">По-стари от 30 дни</translation>
 <translation id="5857090052475505287">Нова папка</translation>
@@ -597,6 +617,7 @@
 <translation id="5913600720976431809">Опции за превод на страницата</translation>
 <translation id="5938160824633642847">Хранилището на устройството ви е почти пълно. Освободете място и опитайте отново.</translation>
 <translation id="5948291296578561264">Това ви позволява да запазвате снимки във фотобиблиотеката си.</translation>
+<translation id="5951816930277761335">Споделете връзката.</translation>
 <translation id="5955891643922670672">Гледате офлайн версията</translation>
 <translation id="5957613098218939406">Още опции</translation>
 <translation id="5963939892571022323">Не може да се създаде връзка към откроения текст.</translation>
@@ -636,6 +657,7 @@
 <translation id="6189413832092199491">Непрочетени</translation>
 <translation id="6196207969502475924">Гласово търсене</translation>
 <translation id="6202364442240589072">{COUNT,plural, =1{Затваряне на {COUNT} раздел}other{Затваряне на {COUNT} раздела}}</translation>
+<translation id="6219550825416862075">Добре дошли отново</translation>
 <translation id="6219688215832490856">Никога да не се превежда</translation>
 <translation id="6223816392543092032">Получете отметките, историята, паролите и другите си настройки на всичките си устройства.</translation>
 <translation id="6231782223312638214">Предложени</translation>
@@ -723,6 +745,7 @@
 Докато сте в режим „инкогнито“, сайтовете не могат да използват „бисквитки“, за да следят активността ви при сърфиране в различни сайтове, например с цел персонализиране на реклами.</translation>
 <translation id="6674571176963658787">За да стартирате синхронизирането, въведете пропуска си</translation>
 <translation id="667999046851023355">Документ</translation>
+<translation id="6684906340059221832">Следени цени</translation>
 <translation id="6710079714193676716">Управлява се от организацията ви. Някои функции може да не са достъпни. <ph name="BEGIN_LINK" />Научете повече<ph name="END_LINK" /></translation>
 <translation id="6713747756340119864">Google Apps</translation>
 <translation id="6730682669179532099">Паролите не могат да бъдат експортирани</translation>
@@ -756,6 +779,7 @@
 <translation id="6945221475159498467">Избиране</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="6973630695168034713">Папки</translation>
+<translation id="6975148662438928529">Излязохте от профила си <ph name="USER_NAME" /> при нулирането на своя iPad. Докоснете бутона за продължаване по-долу, за да влезете отново.</translation>
 <translation id="6979158407327259162">Google Диск</translation>
 <translation id="6988572888918530647">Управление на профила ви в Google</translation>
 <translation id="6989674195860388998">Промяна от настройките…</translation>
@@ -789,12 +813,16 @@
 <translation id="7265758999917665941">Никога за този сайт</translation>
 <translation id="7272437679830969316">Паролата не бе копирана поради неуспешно удостоверяване.</translation>
 <translation id="7291368939935408496">Паролите се подготвят...</translation>
+<translation id="730958329302570991">Можете лесно да добавяте пароли за сайтове към Google Мениджър на пароли по всяко време.</translation>
 <translation id="7313347584264171202">Тук ще се показват разделите ви в режим „инкогнито“</translation>
+<translation id="7315813263062036945">Докоснете иконата за търсене горе вляво.</translation>
 <translation id="7336264872878993241">Изтеглено: <ph name="PERCENT" />%</translation>
 <translation id="7340958967809483333">Опции за Discover</translation>
 <translation id="7346909386216857016">Добре, разбрах</translation>
 <translation id="734758817008927353">Опции за запазване на картата</translation>
+<translation id="7351537303876921605">Докоснете „Създаване на връзка“ в контекстното меню.</translation>
 <translation id="7353432112255316844">Потвърдете, че сте вие</translation>
+<translation id="7356359962760467032">Спиране на следенето на цената</translation>
 <translation id="7383797227493018512">Списък за четене</translation>
 <translation id="7398893703713203428">Създаване на връзка</translation>
 <translation id="739941347996872055">Предишният раздел</translation>
@@ -815,6 +843,7 @@
 <translation id="750493650310597496">Избрахте 0</translation>
 <translation id="7508728395076009983">За да заключите разделите си в режим „инкогнито“, настройте Touch ID, Face ID или код за достъп.</translation>
 <translation id="7514365320538308">Изтегляне</translation>
+<translation id="7531345132340165516">Настоящ сайт</translation>
 <translation id="7537586195939242955">Понастоящем пропускът не може да се инсталира в Passbook.</translation>
 <translation id="7554791636758816595">Нов раздел</translation>
 <translation id="7561196759112975576">Винаги</translation>
@@ -825,6 +854,7 @@
 <translation id="7638584964844754484">Неправилен пропуск</translation>
 <translation id="7646263789464975852">„Меню → Настройки → Проверка на безопасността“</translation>
 <translation id="7646772052135772216">Синхронизирането на паролите не работи.</translation>
+<translation id="764827086632467055">Докоснете „Стандартно прилож. за браузър“.</translation>
 <translation id="7649070708921625228">Помощ</translation>
 <translation id="7658239707568436148">Отказ</translation>
 <translation id="7671141431838911305">INSTALL</translation>
@@ -847,6 +877,7 @@
 <translation id="784551991304901159">За да виждате съдържание, изберете опцията за включване в менюто</translation>
 <translation id="7853202427316060426">Активност</translation>
 <translation id="7856733331829174190">Неуспешно изтегляне</translation>
+<translation id="785938070103630874">Отворете „Пароли“, „Начини на плащане“ или „Адрес“ и изберете „Още“.</translation>
 <translation id="7859704718976024901">История на сърфирането</translation>
 <translation id="7884694604461143138">История на търсенията (намерени: <ph name="COUNT" />)</translation>
 <translation id="7887198238286927132">За да защити поверителността ви, Chrome няма да попълни автоматично това поле.</translation>
@@ -866,6 +897,7 @@
 <translation id="7971521879845308059">Изск. прозорци: Блокиране</translation>
 <translation id="797413074872316787">Включете синхронизирането, за да се възползвате от синхронизиране и персонализиране на всички устройства.</translation>
 <translation id="7978018860671536736">3. Докоснете „Автоматично попълване на паролите“.</translation>
+<translation id="7981908678811807838">Следенето на цените не е възможно за този сайт.</translation>
 <translation id="7982789257301363584">Мрежа</translation>
 <translation id="7987685713885608670">За допълнителна сигурност шифровайте паролите на устройството си, преди да бъдат запазени в мениджъра на паролите в Google.</translation>
 <translation id="7993619969781047893">Функциите в някои сайтове може да не работят правилно</translation>
@@ -901,11 +933,13 @@
 <translation id="8237382152611443140">Отворете настройките за автоматично попълване на паролите.</translation>
 <translation id="8261506727792406068">Изтриване</translation>
 <translation id="8271720166617117963">Приемане и вход</translation>
+<translation id="8278938988428169257">Въведете дума или фраза.</translation>
 <translation id="8281781826761538115">Стандартно – <ph name="DEFAULT_LOCALE" /></translation>
 <translation id="8281886186245836920">Пропускане</translation>
 <translation id="8283172974887967105">Задаване…</translation>
 <translation id="8299417921174340354">За да използвате паролите, трябва първо да зададете код за достъп на устройството си.</translation>
 <translation id="8299613349954694191">Отворете раздел в режим „инкогнито“, за да сърфирате частно в мрежата.</translation>
+<translation id="8316944564970119719">Въведете сайт и парола и ги запазете</translation>
 <translation id="8319076807703933069">Ново търсене</translation>
 <translation id="8323906514956095947">Докоснете и задръжте, за да видите още опции за разделите</translation>
 <translation id="8328777765163860529">Затваряне на всички</translation>
@@ -933,6 +967,7 @@
 <translation id="8533670235862049797">Безопасно сърфиране е включено</translation>
 <translation id="8534481786647257214">Публикацията в Google+ е завършена.</translation>
 <translation id="8548878600947630424">Търсене в страницата...</translation>
+<translation id="8558480467877843976">Вече можете да използвате Chrome всеки път, когато преглеждате съобщения, документи и други приложения или докоснете връзки в тях.</translation>
 <translation id="8588404856427128947">Изключено</translation>
 <translation id="8590913940444621808">Без запитване</translation>
 <translation id="8591976964826315682">Блокиране на „бисквитките“ на трети страни в режим „инкогнито“</translation>
@@ -950,6 +985,8 @@
 <translation id="8721297211384281569">Меню „Инструменти“</translation>
 <translation id="8725066075913043281">Опитайте отново</translation>
 <translation id="8730621377337864115">Готово</translation>
+<translation id="8731388423028622182">Излязохте от профила си <ph name="USER_NAME" /> при нулирането на своя iPhone. Докоснете бутона за продължаване по-долу, за да влезете отново.</translation>
+<translation id="87371078663613140">Разгледайте опциите в лентата с менюта.</translation>
 <translation id="8741995161408053644">Възможно е в профила ви в Google да има други видове история на сърфиране, съхранявани на адрес <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" />.</translation>
 <translation id="8750037785291841318">Тук ще се показват разделите ви</translation>
 <translation id="8756969031206844760">Да се актуализира ли паролата?</translation>
@@ -967,10 +1004,13 @@
 <translation id="8868471676553493380">{count,plural, =1{{count} раздел}other{{count} раздела}}</translation>
 <translation id="8870413625673593573">Наскоро затворени</translation>
 <translation id="8876882697946675716">Синхронизирайте устройствата си</translation>
+<translation id="8877287418679067891">Задаване като браузър по подразбиране в настройките…</translation>
 <translation id="8881801611828450202">Търсене на изобр. със: <ph name="SEARCH_ENGINE" /></translation>
 <translation id="8891935667620843985">Връзките могат да се отварят автоматично в Chrome, като го направите стандартното си приложение за браузър.</translation>
 <translation id="8898822736010347272">Изпраща до Google URL адресите на някои от посетените от вас страници, ограничена системна информация и част от съдържанието на страниците, за да помага за откриването на нови заплахи и да защитава всички потребители на мрежата.</translation>
 <translation id="8909135823018751308">Споделяне…</translation>
+<translation id="8911759861431145525">Докоснете „Добавяне“ и въведете информацията си.</translation>
+<translation id="891658175948553296">Откройте текст в сайт.</translation>
 <translation id="8917490105272468696">Да, ще участвам</translation>
 <translation id="8928133177108699615">Настолна</translation>
 <translation id="8952559610785099500">Добавяне на парола</translation>
@@ -1008,6 +1048,7 @@
 <translation id="9203116392574189331">Handoff</translation>
 <translation id="9223358826628549784">Сигналите за сривове са изпратени.</translation>
 <translation id="952704832371081537">Отказ</translation>
+<translation id="953008885340860025">Не сте в профила си в Chrome</translation>
 <translation id="959066944189734975">Следвате <ph name="CHANNEL_NAME" /></translation>
 <translation id="981498610235328462">Организацията ви разрешава да влизате само с определени профили. Неразрешените профили са скрити.</translation>
 <translation id="984509647832111802">Синхронизирането не работи.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_bs.xtb b/ios/chrome/app/strings/resources/ios_strings_bs.xtb
index 933c167..a966128 100644
--- a/ios/chrome/app/strings/resources/ios_strings_bs.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_bs.xtb
@@ -434,6 +434,7 @@
 <translation id="4502566650163919158">Provjeri sada</translation>
 <translation id="4505980578794259603">Posljednja provjera: <ph name="TIME" />.</translation>
 <translation id="4508750114462689118">Zatvaranje promocije za prijavu</translation>
+<translation id="4520798012560649652">Saznajte više o anonimnom načinu rada</translation>
 <translation id="4526249700380860531">Prikaz spremljenih zaporki i upravljanje njima na <ph name="BEGIN_LINK" />passwords.google.com<ph name="END_LINK" /></translation>
 <translation id="452750746583162491">Pregledajte sinhronizirane podatke</translation>
 <translation id="4536418791685807335">Pokušajte se ponovo prijaviti.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ca.xtb b/ios/chrome/app/strings/resources/ios_strings_ca.xtb
index 32dfb96..cb8297c 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ca.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ca.xtb
@@ -19,6 +19,7 @@
 <translation id="1076421457278169141">S'ha escanejat el codi</translation>
 <translation id="1076785341346483463">Sincronitza amb el compte gestionat</translation>
 <translation id="1084365883616172403">S'ha completat la publicació a Facebook.</translation>
+<translation id="1085696779717592361">Utilitza Chrome de manera predeterminada</translation>
 <translation id="1103523840287552314">Tradueix sempre el text en <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Accepta i continua</translation>
 <translation id="110724200315609752">Canvia a la finestra oberta</translation>
@@ -34,6 +35,7 @@
 <translation id="1165039591588034296">Error</translation>
 <translation id="1172898394251786223">Camp següent</translation>
 <translation id="1176932207622159128">No es pot desar.</translation>
+<translation id="1177414119866731261">Obre el menú de Chrome</translation>
 <translation id="1181037720776840403">Suprimeix</translation>
 <translation id="1207113853726624428">Cerca nova</translation>
 <translation id="1209206284964581585">Amaga per ara</translation>
@@ -110,6 +112,7 @@
 <translation id="1740468249224277719">Feu doble toc per instal·lar l'aplicació.</translation>
 <translation id="1752547299766512813">Desa les contrasenyes</translation>
 <translation id="1753905327828125965">Els més visitats</translation>
+<translation id="1789803444939621101">Et donem la benvinguda de nou, <ph name="USER_NAME" /></translation>
 <translation id="1803264062614276815">Nom del titular de la targeta</translation>
 <translation id="1809939268435598390">Suprimeix la carpeta</translation>
 <translation id="1813414402673211292">Esborra dades navegació</translation>
@@ -163,6 +166,7 @@
 <translation id="2302742851632557585">Canvia la contrasenya al lloc web</translation>
 <translation id="2316709634732130529">Utilitza la contrasenya suggerida</translation>
 <translation id="2320166752086256636">Amaga el teclat</translation>
+<translation id="2328842561016935977">Toca Contrasenyes i, a continuació, toca Afegeix</translation>
 <translation id="2351097562818989364">S'ha restablert la configuració del Traductor.</translation>
 <translation id="235789365079050412">Política de privadesa de Google</translation>
 <translation id="2359043044084662842">Tradueix</translation>
@@ -221,6 +225,7 @@
 <translation id="2781331604911854368">Activat</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2783054063075604403">No es pot crear l'enllaç</translation>
+<translation id="2786701870377699570">Cerca pestanyes als dispositius sincronitzats</translation>
 <translation id="2800683595868705743">Surt del selector de pestanyes</translation>
 <translation id="2815198996063984598">2. Toca Aplicació de navegador predeterminada.</translation>
 <translation id="2820289420301699633">El teu administrador té control sobre Chrome i pot accedir a les dades associades</translation>
@@ -244,6 +249,7 @@
 <translation id="2923448633003185837">Enganxa i ves-hi</translation>
 <translation id="292639812446257861">Marca com a no llegit</translation>
 <translation id="2932085390869194046">Suggereix una contrasenya...</translation>
+<translation id="2932765531295814441">Afegeix contrasenyes manualment</translation>
 <translation id="2952581218264071393">1. Obre la configuració de Chrome.</translation>
 <translation id="2958718410589002129">Contrasenyes</translation>
 <translation id="2961210776189273067">Títol</translation>
@@ -279,6 +285,7 @@
 <translation id="3181954750937456830">Navegació segura (us protegeix a tu i al teu dispositiu de llocs web perillosos)</translation>
 <translation id="3184767182050912705">Desbloqueja amb <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation>
 <translation id="3207960819495026254">S'ha afegit a les adreces d'interès.</translation>
+<translation id="3214379938835224220">Se t'ha tancat la sessió com a part del restabliment de l'iPad. Per iniciar-la, toca Continua, més avall.</translation>
 <translation id="3224641773458703735">Per exportar les contrasenyes, primer has d'establir una contrasenya al dispositiu.</translation>
 <translation id="3227137524299004712">Micròfon</translation>
 <translation id="3240426699337459095">S'ha copiat l'enllaç.</translation>
@@ -296,6 +303,7 @@
 <translation id="3329904751041170572">No s'ha pogut connectar amb el servidor.</translation>
 <translation id="3335947283844343239">Torna a obrir la pestanya tancada</translation>
 <translation id="3371831930909698441">El Traductor està disponible. Tens opcions a la part inferior de la pantalla</translation>
+<translation id="3377063233124932127">Ara, les adreces d'interès, les contrasenyes i altres dades desades es troben a la part superior.</translation>
 <translation id="3393920035788932672">Finestres emergents permeses</translation>
 <translation id="3399930248910934354">Obre la configuració de Chrome</translation>
 <translation id="3404744938087714423">Tancar la sessió desactiva la sincronització.</translation>
@@ -318,11 +326,13 @@
 <translation id="3519193562722059437">Obriu una pestanya per navegar pel web.</translation>
 <translation id="3527085408025491307">Carpeta</translation>
 <translation id="3529024052484145543">No és segur</translation>
+<translation id="3530206579861815432">Troba ràpidament les pestanyes obertes i les tancades recentment en tots els teus dispositius sincronitzats.</translation>
 <translation id="3533202363250687977">Tanca totes les pestanyes d'incògnit</translation>
 <translation id="3533436815740441613">Pestanya nova</translation>
 <translation id="3551320343578183772">Tanca la pestanya</translation>
 <translation id="3581564640715911333">Proposa traduir les pàgines en altres idiomes</translation>
 <translation id="3588820906588687999">Obre la imatge en una pestanya nova</translation>
+<translation id="3595252146048399851">Pots anar a la <ph name="BEGIN_LINK" />configuració<ph name="END_LINK" /> en qualsevol moment per decidir què vols sincronitzar. És possible que Google personalitzi la Cerca i altres serveis en funció del teu historial.</translation>
 <translation id="3603009562372709545">Copia l'URL de l'enllaç</translation>
 <translation id="3607167657931203000">Dades d'Emplenament automàtic</translation>
 <translation id="3609785682760573515">S'està sincronitzant...</translation>
@@ -371,6 +381,7 @@
 <translation id="4018310736049373830">Gestiona l'activitat</translation>
 <translation id="4038354071007134711">Cap aplicació del dispos. no pot obrir el fitxer.</translation>
 <translation id="4042870976416480368">Cerca a la pàgina</translation>
+<translation id="40433179647657191">Crea i comparteix un enllaç directe a una part d'una pàgina que hagis marcat.</translation>
 <translation id="4049507953662678203">Assegureu-vos que teniu una connexió a la xarxa i torneu-ho a provar.</translation>
 <translation id="4063300985191096908">Ves al feed</translation>
 <translation id="408404951701638773">Ara és més fàcil accedir a la barra de cerca</translation>
@@ -388,11 +399,13 @@
 <translation id="4181841719683918333">Idiomes</translation>
 <translation id="4187450337729239226">Enganxa i cerca</translation>
 <translation id="4223967053752765281">La teva organització ha desactivat l'inici de sessió. Encara pots veure les adreces d'interès, l'historial, les contrasenyes i altres opcions de configuració en aquest dispositiu. Si fas canvis, no se sincronitzaran amb el teu compte.</translation>
+<translation id="4232900911558558076">Explora el menú nou</translation>
 <translation id="4233831822770018312">Edita els permisos</translation>
 <translation id="4236584471598725073">Estàs fent un seguiment del preu</translation>
 <translation id="4237377247299956313">Toca <ph name="BEGIN_BOLD" />Aplicació de navegador predeterminada<ph name="END_BOLD" />.</translation>
 <translation id="424315890655130736">Introduïu la frase de contrasenya</translation>
 <translation id="4249955472157341256">Ordena per Més recents</translation>
+<translation id="42618743927498729">Rep una alerta si el preu baixa en qualsevol lloc web.</translation>
 <translation id="4263576668337963058">Mostra les accions de pàgina disponibles</translation>
 <translation id="4267380167363222949">Pestanya següent</translation>
 <translation id="4272631900155121838">Per poder escanejar un codi QR, activa la càmera a la configuració</translation>
@@ -535,6 +548,7 @@
 <translation id="5388358297987318779">Obre una imatge</translation>
 <translation id="5407969256130905701">Descarta els canvis</translation>
 <translation id="5416022985862681400">7 darrers dies</translation>
+<translation id="5423269318075950257">Fes un seguiment del preu</translation>
 <translation id="543338862236136125">Edita la contrasenya</translation>
 <translation id="5433691172869980887">S'ha copiat el nom d'usuari</translation>
 <translation id="5439599923922718668">Visitats amb freqüència</translation>
@@ -554,11 +568,15 @@
 <translation id="5556459405103347317">Torna a carregar</translation>
 <translation id="556042886152191864">Botó</translation>
 <translation id="5580834567471114021">Vols afegir-la a la llista de lectura per a més tard?</translation>
+<translation id="5597915316964418992">Obre la quadrícula de pestanyes</translation>
 <translation id="560322036295180549">Desactivat per l'organització</translation>
 <translation id="5614553682702429503">Vols desar la contrasenya?</translation>
 <translation id="5626245204502895507">No s'ha pogut baixar el fitxer en aquest moment.</translation>
 <translation id="5631164295104953411">Afegeix una forma de pagament</translation>
+<translation id="5636282538000367086">Descobreix les novetats de Chrome</translation>
+<translation id="5652623411397330904">Els productes que segueixis es mostraran aquí.</translation>
 <translation id="5659593005791499971">Adreça electrònica</translation>
+<translation id="5669335982068190158">Se t'ha tancat la sessió com a part del restabliment de l'iPhone. Per iniciar-la, toca Continua, més avall.</translation>
 <translation id="5669528293118408608">www</translation>
 <translation id="567881659373499783">Versió <ph name="PRODUCT_VERSION" /></translation>
 <translation id="5690398455483874150">{count,plural, =1{Es mostra 1 finestra de Chrome}other{Es mostren {count} finestres de Chrome}}</translation>
@@ -569,6 +587,7 @@
 <translation id="5724941645893276623">Per navegar pel web de manera privada, obre una pestanya nova</translation>
 <translation id="5728700505257787410">S'ha produït un problema en iniciar la sessió al vostre compte.</translation>
 <translation id="5731784586962650619">Contrasenyes en altres aplicacions</translation>
+<translation id="5733084997078800044">Consell de Chrome</translation>
 <translation id="5737974891429562743">Actualitza les dades d'inici de sessió del compte per iniciar la sincronització.</translation>
 <translation id="5738385766833540397">Gestiona com reps les alertes de baixada de preu dels productes que segueixes</translation>
 <translation id="5738887413654608789">Això et permet detectar pàgines web rellevants del teu entorn.</translation>
@@ -582,6 +601,7 @@
 <translation id="5812974770859303494">Afegeix a...</translation>
 <translation id="581659025233126501">Activa la sincronització</translation>
 <translation id="5819208479324046259">Gestionat per <ph name="MANAGER" />. <ph name="BEGIN_LINK" />Més informació<ph name="END_LINK" /></translation>
+<translation id="5833643789537100742">Desa les contrasenyes, les formes de pagament i les adreces perquè Chrome les empleni automàticament més endavant.</translation>
 <translation id="5846482154967366008">Motor de cerca</translation>
 <translation id="5854790677617711513">Anterior a 30 dies</translation>
 <translation id="5857090052475505287">Carpeta nova</translation>
@@ -597,6 +617,7 @@
 <translation id="5913600720976431809">Opcions per traduir la pàgina</translation>
 <translation id="5938160824633642847">El dispositiu està gairebé ple. Allibera espai i torna-ho a provar.</translation>
 <translation id="5948291296578561264">Et permet desar fotos a la biblioteca de fotos.</translation>
+<translation id="5951816930277761335">Comparteix l'enllaç</translation>
 <translation id="5955891643922670672">Se n'està mostrant la versió sense connexió</translation>
 <translation id="5957613098218939406">Més opcions</translation>
 <translation id="5963939892571022323">No es pot crear un enllaç al text marcat.</translation>
@@ -636,6 +657,7 @@
 <translation id="6189413832092199491">No llegits</translation>
 <translation id="6196207969502475924">Cerca per veu</translation>
 <translation id="6202364442240589072">{COUNT,plural, =1{Tanca {COUNT} pestanya}other{Tanca {COUNT} pestanyes}}</translation>
+<translation id="6219550825416862075">Et donem la benvinguda de nou</translation>
 <translation id="6219688215832490856">No tradueixis mai</translation>
 <translation id="6223816392543092032">Accedeix a les adreces d'interès, l'historial, les contrasenyes i altres opcions de configuració en tots els dispositius.</translation>
 <translation id="6231782223312638214">Suggerida</translation>
@@ -723,6 +745,7 @@
 En mode d'incògnit, els llocs web no poden fer servir galetes per veure la teva activitat de navegació en diferents llocs web, per exemple, per personalitzar els anuncis.</translation>
 <translation id="6674571176963658787">Per iniciar la sincronització, introdueix la frase de contrasenya</translation>
 <translation id="667999046851023355">Document</translation>
+<translation id="6684906340059221832">S'està fent un seguiment dels preus</translation>
 <translation id="6710079714193676716">Gestionat per la teva organització. Pot ser que algunes funcions no estiguin disponibles. <ph name="BEGIN_LINK" />Més informació<ph name="END_LINK" /></translation>
 <translation id="6713747756340119864">Google Apps</translation>
 <translation id="6730682669179532099">No es poden exportar les contrasenyes</translation>
@@ -756,6 +779,7 @@
 <translation id="6945221475159498467">Selecciona</translation>
 <translation id="6965382102122355670">D'acord</translation>
 <translation id="6973630695168034713">Carpetes</translation>
+<translation id="6975148662438928529">S'ha tancat la sessió del teu compte <ph name="USER_NAME" /> com a part del restabliment de l'iPad. Per iniciar-la, toca Continua, més avall.</translation>
 <translation id="6979158407327259162">Google Drive</translation>
 <translation id="6988572888918530647">Gestiona el teu Compte de Google</translation>
 <translation id="6989674195860388998">Canvia a Configuració…</translation>
@@ -789,12 +813,16 @@
 <translation id="7265758999917665941">Mai per a aquest lloc web</translation>
 <translation id="7272437679830969316">No es pot verificar la teva identitat. La contrasenya no s'ha copiat.</translation>
 <translation id="7291368939935408496">S'estan preparant les contrasenyes...</translation>
+<translation id="730958329302570991">Afegeix fàcilment contrasenyes de llocs web al gestor de contrasenyes de Google en qualsevol moment.</translation>
 <translation id="7313347584264171202">Trobaràs les pestanyes d'incògnit aquí</translation>
+<translation id="7315813263062036945">A la part superior esquerra, toca la icona de cerca</translation>
 <translation id="7336264872878993241"><ph name="PERCENT" /> per cent baixat</translation>
 <translation id="7340958967809483333">Opcions per a Discover</translation>
 <translation id="7346909386216857016">D'acord</translation>
 <translation id="734758817008927353">Opcions per desar la targeta</translation>
+<translation id="7351537303876921605">Al menú contextual, toca Crea un enllaç</translation>
 <translation id="7353432112255316844">Verifica la teva identitat</translation>
+<translation id="7356359962760467032">Deixa de fer un seguiment dels preus</translation>
 <translation id="7383797227493018512">Llista de lectura</translation>
 <translation id="7398893703713203428">Crea un enllaç</translation>
 <translation id="739941347996872055">Pestanya anterior</translation>
@@ -815,6 +843,7 @@
 <translation id="750493650310597496">No se n'ha seleccionat cap</translation>
 <translation id="7508728395076009983">Per bloquejar les pestanyes d'incògnit, configura Touch ID, Face ID o una contrasenya.</translation>
 <translation id="7514365320538308">Baixa</translation>
+<translation id="7531345132340165516">Lloc web actual</translation>
 <translation id="7537586195939242955">No es pot instal·lar el passi a Passbook en aquest moment.</translation>
 <translation id="7554791636758816595">Pestanya nova</translation>
 <translation id="7561196759112975576">Sempre</translation>
@@ -825,6 +854,7 @@
 <translation id="7638584964844754484">La frase de contrasenya és incorrecta</translation>
 <translation id="7646263789464975852">Menú → Configuració → Comprovació de seguretat</translation>
 <translation id="7646772052135772216">La sincronització de contrasenyes no funciona</translation>
+<translation id="764827086632467055">Toca Aplicació de navegador predeterminada</translation>
 <translation id="7649070708921625228">Ajuda</translation>
 <translation id="7658239707568436148">Cancel·la</translation>
 <translation id="7671141431838911305">INSTAL·LA</translation>
@@ -847,6 +877,7 @@
 <translation id="784551991304901159">Per veure contingut, al menú, selecciona Activa</translation>
 <translation id="7853202427316060426">Activitat</translation>
 <translation id="7856733331829174190">No s'ha pogut baixar</translation>
+<translation id="785938070103630874">Obre les contrasenyes, les formes de pagament o l'adreça i altres dades</translation>
 <translation id="7859704718976024901">Historial de navegació</translation>
 <translation id="7884694604461143138">Historial de cerques (n'hem trobat <ph name="COUNT" />)</translation>
 <translation id="7887198238286927132">Amb la finalitat de protegir la teva privadesa, Chrome no emplenarà aquest camp automàticament.</translation>
@@ -866,6 +897,7 @@
 <translation id="7971521879845308059">Bloqueig de finestres emerg.</translation>
 <translation id="797413074872316787">Per sincronitzar i personalitzar el contingut en tots els dispositius, activa la sincronització.</translation>
 <translation id="7978018860671536736">3. Toca Emplenament automàtic de contrasenyes.</translation>
+<translation id="7981908678811807838">El seguiment de preus no està disponible per a aquest lloc web.</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>
 <translation id="7993619969781047893">Pot ser que les funcions d'alguns llocs web no funcionin</translation>
@@ -901,11 +933,13 @@
 <translation id="8237382152611443140">Obre la configuració de l'emplenament automàtic de contrasenyes.</translation>
 <translation id="8261506727792406068">Suprimeix</translation>
 <translation id="8271720166617117963">Accepta i inicia la sessió</translation>
+<translation id="8278938988428169257">Introdueix una paraula o una frase</translation>
 <translation id="8281781826761538115">Idioma predeterminat: <ph name="DEFAULT_LOCALE" /></translation>
 <translation id="8281886186245836920">Omet</translation>
 <translation id="8283172974887967105">Estableix…</translation>
 <translation id="8299417921174340354">Per utilitzar les contrasenyes, primer has d'establir una contrasenya al dispositiu.</translation>
 <translation id="8299613349954694191">Obre una pestanya d'incògnit per navegar pel web de manera privada.</translation>
+<translation id="8316944564970119719">Introdueix el lloc web i la contrasenya i, a continuació, desa els canvis</translation>
 <translation id="8319076807703933069">Cerca nova</translation>
 <translation id="8323906514956095947">Mantén premut el botó per veure més opcions de pestanyes</translation>
 <translation id="8328777765163860529">Tanca-ho tot</translation>
@@ -933,6 +967,7 @@
 <translation id="8533670235862049797">La funció Navegació segura està activada</translation>
 <translation id="8534481786647257214">S'ha completat la publicació a Google+.</translation>
 <translation id="8548878600947630424">Cerca a la pàgina...</translation>
+<translation id="8558480467877843976">Ara pots utilitzar Chrome cada vegada que naveguis o toquis enllaços en missatges, documents i altres aplicacions.</translation>
 <translation id="8588404856427128947">Desactivada</translation>
 <translation id="8590913940444621808">No ho demanis mai</translation>
 <translation id="8591976964826315682">Bloqueja les galetes de tercers en mode d'incògnit</translation>
@@ -950,6 +985,8 @@
 <translation id="8721297211384281569">Menú Eines</translation>
 <translation id="8725066075913043281">Torna-ho a provar</translation>
 <translation id="8730621377337864115">Fet</translation>
+<translation id="8731388423028622182">S'ha tancat la sessió del teu compte <ph name="USER_NAME" /> com a part del restabliment de l'iPhone. Per iniciar-la, toca Continua, més avall.</translation>
+<translation id="87371078663613140">Explora les opcions a la barra de menú</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="8750037785291841318">Trobaràs les pestanyes aquí</translation>
 <translation id="8756969031206844760">Vols actualitzar la contrasenya?</translation>
@@ -967,10 +1004,13 @@
 <translation id="8868471676553493380">{count,plural, =1{{count} pestanya}other{{count} pestanyes}}</translation>
 <translation id="8870413625673593573">Tancades recentment</translation>
 <translation id="8876882697946675716">Mantén els dispositius sincronitzats</translation>
+<translation id="8877287418679067891">Estableix com a predeterminat a Configuració...</translation>
 <translation id="8881801611828450202">Cerca aquesta imatge a <ph name="SEARCH_ENGINE" /></translation>
 <translation id="8891935667620843985">Pots obrir enllaços automàticament a l'aplicació Chrome convertint-la en la predeterminada com a navegador.</translation>
 <translation id="8898822736010347272">Envia a Google els URL d'algunes pàgines que visites, informació limitada del sistema i part del contingut de les pàgines per ajudar a detectar amenaces noves i protegir tothom al web.</translation>
 <translation id="8909135823018751308">Comparteix...</translation>
+<translation id="8911759861431145525">Toca Afegeix i, a continuació, introdueix la teva informació</translation>
+<translation id="891658175948553296">Marca text en un lloc web</translation>
 <translation id="8917490105272468696">Sí, ho accepto</translation>
 <translation id="8928133177108699615">Ordinador</translation>
 <translation id="8952559610785099500">Afegeix una contrasenya</translation>
@@ -1008,6 +1048,7 @@
 <translation id="9203116392574189331">Handoff</translation>
 <translation id="9223358826628549784">L'informe d'error s'ha enviat.</translation>
 <translation id="952704832371081537">Cancel·la</translation>
+<translation id="953008885340860025">S'ha tancat la sessió de Chrome</translation>
 <translation id="959066944189734975">Segueixes <ph name="CHANNEL_NAME" /></translation>
 <translation id="981498610235328462">La teva organització només et permet iniciar la sessió amb determinats comptes. Els comptes no admesos s'amaguen.</translation>
 <translation id="984509647832111802">La sincronització no funciona.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_cy.xtb b/ios/chrome/app/strings/resources/ios_strings_cy.xtb
index 9dfc852..808deee4 100644
--- a/ios/chrome/app/strings/resources/ios_strings_cy.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_cy.xtb
@@ -19,6 +19,7 @@
 <translation id="1076421457278169141">Mae'r cod wedi'i sganio</translation>
 <translation id="1076785341346483463">Cysoni Gyda Chyfrif a Reolir</translation>
 <translation id="1084365883616172403">Wedi gorffen postio i Facebook.</translation>
+<translation id="1085696779717592361">Defnyddiwch Chrome yn Ddiofyn</translation>
 <translation id="1103523840287552314">Cyfieithu <ph name="LANGUAGE" /> bob amser</translation>
 <translation id="1104948393051856124">Derbyn a Pharhau</translation>
 <translation id="110724200315609752">Newid i ffenestr sydd ar Agor</translation>
@@ -34,6 +35,7 @@
 <translation id="1165039591588034296">Gwall</translation>
 <translation id="1172898394251786223">Maes nesaf</translation>
 <translation id="1176932207622159128">Methu â Chadw'r Llun</translation>
+<translation id="1177414119866731261">Agorwch y ddewislen Chrome</translation>
 <translation id="1181037720776840403">Dileu</translation>
 <translation id="1207113853726624428">Chwiliad newydd</translation>
 <translation id="1209206284964581585">Cuddio am nawr</translation>
@@ -82,6 +84,7 @@
 <translation id="152234381334907219">Erioed wedi'i gadw</translation>
 <translation id="1523341279170789507">Caniatáu'r Holl Gwcis</translation>
 <translation id="1524563461097350801">Dim diolch</translation>
+<translation id="1531836666020185856">Wedi'i gynnwys</translation>
 <translation id="1535268707340844072">Mae'n bosib y bydd eich gosodiad presennol yn achosi i rai gwefannau dorri. I reoli cwcis ar gyfer pob gwefan, gweler <ph name="BEGIN_LINK" />Gosodiadau Cwcis<ph name="END_LINK" />.</translation>
 <translation id="1540800554400757039">Cyfeiriad 1</translation>
 <translation id="1545749641540134597">Sganio Cod QR</translation>
@@ -109,6 +112,7 @@
 <translation id="1740468249224277719">Tapiwch ddwywaith i'w osod.</translation>
 <translation id="1752547299766512813">Cadw Cyfrineiriau</translation>
 <translation id="1753905327828125965">Yr Ymwelwyd â Nhw'r Mwyaf</translation>
+<translation id="1789803444939621101">Croeso'n ôl, <ph name="USER_NAME" /></translation>
 <translation id="1803264062614276815">Enw Deiliad y Cerdyn</translation>
 <translation id="1809939268435598390">Dileu Ffolder</translation>
 <translation id="1813414402673211292">Clirio Data Pori</translation>
@@ -162,6 +166,7 @@
 <translation id="2302742851632557585">Newid Cyfrinair ar y Wefan</translation>
 <translation id="2316709634732130529">Defnyddio'r cyfrinair a awgrymir</translation>
 <translation id="2320166752086256636">Cuddio bysellfwrdd</translation>
+<translation id="2328842561016935977">Tapiwch Cyfrineiriau Yna Tapiwch Ychwanegu</translation>
 <translation id="2351097562818989364">Mae eich gosodiadau cyfieithu wedi'u hailosod.</translation>
 <translation id="235789365079050412">Polisi Preifatrwydd Google</translation>
 <translation id="2359043044084662842">Cyfieithu</translation>
@@ -220,6 +225,7 @@
 <translation id="2781331604911854368">Ymlaen</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2783054063075604403">Methu â Chreu Dolen</translation>
+<translation id="2786701870377699570">Chwilio Tabiau ar draws Dyfeisiau sydd wedi'u Cysoni</translation>
 <translation id="2800683595868705743">Gadael y Newidiwr Tabiau</translation>
 <translation id="2815198996063984598">2. Tapiwch Ap Pori Diofyn</translation>
 <translation id="2820289420301699633">Mae gan eich gweinyddwr reolaeth dros Chrome a gall gael mynediad at ei ddata</translation>
@@ -243,6 +249,7 @@
 <translation id="2923448633003185837">Gludo a mynd</translation>
 <translation id="292639812446257861">Marcio fel heb ei Ddarllen</translation>
 <translation id="2932085390869194046">Awgrymu Cyfrinair...</translation>
+<translation id="2932765531295814441">Ychwanegu Cyfrineiriau yn Bwrpasol</translation>
 <translation id="2952581218264071393">1. Agorwch Osodiadau Chrome</translation>
 <translation id="2958718410589002129">Cyfrineiriau</translation>
 <translation id="2961210776189273067">Teitl</translation>
@@ -278,6 +285,7 @@
 <translation id="3181954750937456830">Pori'n Ddiogel (yn eich amddiffyn chi a'ch dyfais rhag gwefannau peryglus)</translation>
 <translation id="3184767182050912705">Datgloi Gyda <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation>
 <translation id="3207960819495026254">Wedi rhoi nod tudalen ar gyfer</translation>
+<translation id="3214379938835224220">Cawsoch eich allgofnodi fel rhan o'ch ailosodiad iPad. Tapiwch parhau isod i fewngofnodi.</translation>
 <translation id="3224641773458703735">I allforio cyfrineiriau, rhaid i chi osod cod pas ar eich dyfais yn gyntaf.</translation>
 <translation id="3227137524299004712">Meicroffon</translation>
 <translation id="3240426699337459095">Cafodd y ddolen ei chopïo</translation>
@@ -295,6 +303,7 @@
 <translation id="3329904751041170572">Methu â chysylltu â'r gweinydd.</translation>
 <translation id="3335947283844343239">Ailagor Tab sydd wedi'i Gau</translation>
 <translation id="3371831930909698441">Mae cyfieithiad ar gael. Mae opsiynau ar gael yn agos at waelod y sgrîn.</translation>
+<translation id="3377063233124932127">Mae eich nodau tudalen, cyfrineiriau a rhagor bellach wedi'u cadw ar y brig.</translation>
 <translation id="3393920035788932672">Caniateir ffenestri naid</translation>
 <translation id="3399930248910934354">Agorwch Osodiadau Chrome</translation>
 <translation id="3404744938087714423">Bydd allgofnodi'n diffodd cysoni.</translation>
@@ -317,11 +326,13 @@
 <translation id="3519193562722059437">Agorwch dab i bori'r we.</translation>
 <translation id="3527085408025491307">Ffolder</translation>
 <translation id="3529024052484145543">Ddim yn ddiogel</translation>
+<translation id="3530206579861815432">Dod o hyd i dabiau sydd ar agor a'r rhai sydd wedi'u cau yn ddiweddar yn gyflym ar draws eich dyfeisiau sydd wedi'u cysoni.</translation>
 <translation id="3533202363250687977">Cau Pob Tab Anhysbys</translation>
 <translation id="3533436815740441613">Tab Newydd</translation>
 <translation id="3551320343578183772">Cau'r Tab</translation>
 <translation id="3581564640715911333">Cynnig cyfieithu tudalennau mewn ieithoedd eraill</translation>
 <translation id="3588820906588687999">Agor y Llun Mewn Tab Newydd</translation>
+<translation id="3595252146048399851">Gallwch bob amser ddewis beth i'w gysoni yn y <ph name="BEGIN_LINK" />gosodiadau<ph name="END_LINK" />. Gall Google bersonoleiddio Search a gwasanaethau eraill yn seiliedig ar eich hanes.</translation>
 <translation id="3603009562372709545">Copïo Dolen URL</translation>
 <translation id="3607167657931203000">Data Awtolenwi</translation>
 <translation id="3609785682760573515">Wrthi’n cysoni...</translation>
@@ -370,6 +381,7 @@
 <translation id="4018310736049373830">Rheoli gweithgarwch</translation>
 <translation id="4038354071007134711">Ni all unrhyw ap ar y ddyfais hon agor y ffeil.</translation>
 <translation id="4042870976416480368">Chwilio'r Dudalen</translation>
+<translation id="40433179647657191">Creu a rhannu dolen uniongyrchol i ran o dudalen rydych wedi'i hamlygu.</translation>
 <translation id="4049507953662678203">Gwnewch yn siŵr bod gennych gysylltiad rhwydwaith, a rhowch gynnig arall arni.</translation>
 <translation id="4063300985191096908">Mynd i'r Ffrwd</translation>
 <translation id="408404951701638773">Mae'n haws cyrraedd y bar chwilio bellach</translation>
@@ -387,11 +399,13 @@
 <translation id="4181841719683918333">Ieithoedd</translation>
 <translation id="4187450337729239226">Gludo a Chwilio</translation>
 <translation id="4223967053752765281">Mae eich sefydliad wedi diffodd mewngofnodi. Gallwch weld eich nodau tudalen, eich hanes, eich cyfrineiriau a'ch gosodiadau eraill ar y ddyfais hon o hyd. Os byddwch yn gwneud newidiadau, ni fyddant yn cysoni i'ch cyfrif.</translation>
+<translation id="4232900911558558076">Archwiliwch y Ddewislen Newydd</translation>
 <translation id="4233831822770018312">Golygu Caniatadau</translation>
 <translation id="4236584471598725073">Yn Dilyn y Pris</translation>
 <translation id="4237377247299956313">Tapiwch <ph name="BEGIN_BOLD" />Ap Pori Diofyn<ph name="END_BOLD" /></translation>
 <translation id="424315890655130736">Rhowch Gyfrinymadrodd</translation>
 <translation id="4249955472157341256">Trefnu yn ôl Diweddaraf</translation>
+<translation id="42618743927498729">Cael rhybudd os bydd y pris yn gostwng ar unrhyw wefan.</translation>
 <translation id="4263576668337963058">Dangos y camau gweithredu sydd ar gael ar y dudalen</translation>
 <translation id="4267380167363222949">Tab Nesaf</translation>
 <translation id="4272631900155121838">I sganio cod QR, galluogwch y camera yn y gosodiadau</translation>
@@ -534,6 +548,7 @@
 <translation id="5388358297987318779">Agor Llun</translation>
 <translation id="5407969256130905701">Cael Gwared ar Newidiadau?</translation>
 <translation id="5416022985862681400">Y 7 diwrnod diwethaf</translation>
+<translation id="5423269318075950257">Dilyn y Pris</translation>
 <translation id="543338862236136125">Golygu cyfrinair</translation>
 <translation id="5433691172869980887">Copïwyd enw defnyddiwr</translation>
 <translation id="5439599923922718668">Ymwelir yn aml</translation>
@@ -553,11 +568,15 @@
 <translation id="5556459405103347317">Ail-lwytho</translation>
 <translation id="556042886152191864">Botwm</translation>
 <translation id="5580834567471114021">Ychwanegu at y Rhestr Ddarllen ar gyfer Nes Ymlaen?</translation>
+<translation id="5597915316964418992">Agorwch y Grid Tabiau</translation>
 <translation id="560322036295180549">Wedi'i ddiffodd gan eich sefydliad</translation>
 <translation id="5614553682702429503">Cadw'r cyfrinair?</translation>
 <translation id="5626245204502895507">Ni ellid lawrlwytho'r ffeil ar yr adeg hon.</translation>
 <translation id="5631164295104953411">Ychwanegu Dull Talu</translation>
+<translation id="5636282538000367086">Darganfod beth sy'n newydd yn Chrome</translation>
+<translation id="5652623411397330904">Bydd y cynhyrchion rydych yn eu holrhain yn ymddangos yma.</translation>
 <translation id="5659593005791499971">E-bost</translation>
+<translation id="5669335982068190158">Cawsoch eich allgofnodi fel rhan o'ch ailosodiad iPhone. Tapiwch parhau isod i fewngofnodi.</translation>
 <translation id="5669528293118408608">www</translation>
 <translation id="567881659373499783">Fersiwn <ph name="PRODUCT_VERSION" /></translation>
 <translation id="5690398455483874150">{count,plural, =1{Nawr yn dangos 1 ffenestr Chrome}zero{Nawr yn dangos {count} ffenestr Chrome}two{Nawr yn dangos {count} ffenestr Chrome}few{Nawr yn dangos {count} ffenestr Chrome}many{Nawr yn dangos {count} ffenestr Chrome}other{Nawr yn dangos {count} ffenestr Chrome}}</translation>
@@ -568,6 +587,7 @@
 <translation id="5724941645893276623">I bori'r we yn breifat, ychwanegwch dab newydd</translation>
 <translation id="5728700505257787410">Mae'n ddrwg gennym, bu problem wrth fewngofnodi i'ch cyfrif.</translation>
 <translation id="5731784586962650619">Cyfrineiriau Mewn Apiau Eraill</translation>
+<translation id="5733084997078800044">Awgrym Chrome</translation>
 <translation id="5737974891429562743">Mae manylion mewngofnodi'r cyfrif yn hen. Diweddarwch i ddechrau cysoni.</translation>
 <translation id="5738385766833540397">Rheoli sut rydych yn derbyn rhybuddion gostyngiadau prisiau ar gyfer cynhyrchion rydych yn eu holrhain</translation>
 <translation id="5738887413654608789">Mae hyn yn caniatáu i chi ddarganfod tudalennau gwe perthnasol yn seiliedig ar eich amgylchedd.</translation>
@@ -581,6 +601,7 @@
 <translation id="5812974770859303494">Ychwanegu At...</translation>
 <translation id="581659025233126501">Troi Cysoni Ymlaen</translation>
 <translation id="5819208479324046259">Rheolir gan <ph name="MANAGER" />. <ph name="BEGIN_LINK" />Dysgu rhagor<ph name="END_LINK" /></translation>
+<translation id="5833643789537100742">Gallwch gadw cyfrineiriau, dulliau talu a chyfeiriadau er mwyn i Chrome eu llenwi'n awtomatig yn ddiweddarach.</translation>
 <translation id="5846482154967366008">Peiriant Chwilio</translation>
 <translation id="5854790677617711513">Hŷn na 30 diwrnod</translation>
 <translation id="5857090052475505287">Ffolder Newydd</translation>
@@ -596,6 +617,7 @@
 <translation id="5913600720976431809">Dewisiadau i Gyfieithu'r dudalen</translation>
 <translation id="5938160824633642847">Mae'ch dyfais bron yn llawn. Crëwch ragor o le a rhowch gynnig arall arni.</translation>
 <translation id="5948291296578561264">Mae hyn yn eich galluogi i gadw lluniau i'ch llyfrgell luniau.</translation>
+<translation id="5951816930277761335">Rhannu'r Ddolen</translation>
 <translation id="5955891643922670672">Dyma'r Fersiwn All-lein</translation>
 <translation id="5957613098218939406">Rhagor o Ddewisiadau</translation>
 <translation id="5963939892571022323">Ni ellir creu dolen i'r testun a amlygir.</translation>
@@ -635,6 +657,7 @@
 <translation id="6189413832092199491">Heb eu darllen</translation>
 <translation id="6196207969502475924">Chwilio â Llais</translation>
 <translation id="6202364442240589072">{COUNT,plural, =1{Cau {COUNT} Tab}zero{Cau {COUNT} Tab}two{Cau {COUNT} Dab}few{Cau {COUNT} Thab}many{Cau {COUNT} Thab}other{Cau {COUNT} Tab}}</translation>
+<translation id="6219550825416862075">Croeso'n Ôl</translation>
 <translation id="6219688215832490856">Peidio Byth â Chyfieithu</translation>
 <translation id="6223816392543092032">Cael eich nodau tudalen, eich hanes, eich cyfrineiriau a gosodiadau eraill ar eich holl ddyfeisiau.</translation>
 <translation id="6231782223312638214">Awgrymir</translation>
@@ -722,6 +745,7 @@
 Pan fyddwch yn y modd Anhysbys, ni all gwefannau ddefnyddio cwcis i weld eich gweithgarwch pori ar draws gwahanol wefannau, er enghraifft, i bersonoleiddio hysbysebion.</translation>
 <translation id="6674571176963658787">I ddechrau cysoni, rhowch eich cyfrinymadrodd</translation>
 <translation id="667999046851023355">Dogfen</translation>
+<translation id="6684906340059221832">Olrhain Prisiau</translation>
 <translation id="6710079714193676716">Rheolir gan eich sefydliad. Mae'n bosib na fydd rhai nodweddion ar gael. <ph name="BEGIN_LINK" />Dysgu rhagor<ph name="END_LINK" /></translation>
 <translation id="6713747756340119864">Apiau Google</translation>
 <translation id="6730682669179532099">Methu ag Allforio Cyfrineiriau</translation>
@@ -755,6 +779,7 @@
 <translation id="6945221475159498467">Dewis</translation>
 <translation id="6965382102122355670">Iawn</translation>
 <translation id="6973630695168034713">Ffolderi</translation>
+<translation id="6975148662438928529">Cawsoch eich allgofnodi o'ch cyfrif <ph name="USER_NAME" /> fel rhan o'ch ailosodiad iPad. Tapiwch parhau isod i fewngofnodi.</translation>
 <translation id="6979158407327259162">Google Drive</translation>
 <translation id="6988572888918530647">Rheoli'ch Cyfrif Google</translation>
 <translation id="6989674195860388998">Newid yn y Gosodiadau…</translation>
@@ -788,12 +813,16 @@
 <translation id="7265758999917665941">Byth ar gyfer y Wefan hon</translation>
 <translation id="7272437679830969316">Methu â chadarnhau'ch hunaniaeth. Ni chopïwyd y cyfrinair.</translation>
 <translation id="7291368939935408496">Wrthi'n Paratoi Cyfrineiriau...</translation>
+<translation id="730958329302570991">Gallwch ychwanegu cyfrineiriau gwefan yn hawdd at Reolwr Cyfrineiriau Google unrhyw bryd.</translation>
 <translation id="7313347584264171202">Byddwch yn gweld eich tabiau Anhysbys yma</translation>
+<translation id="7315813263062036945">Ar y Chwith Uchaf, Tapiwch yr Eicon Chwilio</translation>
 <translation id="7336264872878993241">Mae <ph name="PERCENT" /> y cant wedi'i lawrlwytho</translation>
 <translation id="7340958967809483333">Dewisiadau ar gyfer Discover</translation>
 <translation id="7346909386216857016">Iawn, rwy'n deall</translation>
 <translation id="734758817008927353">Dewisiadau i Gadw Cerdyn</translation>
+<translation id="7351537303876921605">Tapiwch Creu Dolen yn y Ddewislen Cyd-destunol</translation>
 <translation id="7353432112255316844">Cadarnhewch Mai Chi Sydd Yno</translation>
+<translation id="7356359962760467032">Stopio olrhain prisiau</translation>
 <translation id="7383797227493018512">Rhestr Ddarllen</translation>
 <translation id="7398893703713203428">Creu Dolen</translation>
 <translation id="739941347996872055">Tab Blaenorol</translation>
@@ -814,6 +843,7 @@
 <translation id="750493650310597496">Ni ddewisir yr un ohonynt</translation>
 <translation id="7508728395076009983">I gloi eich tabiau anhysbys, gosodwch Touch ID, Face ID, neu God Pas.</translation>
 <translation id="7514365320538308">Lawrlwytho</translation>
+<translation id="7531345132340165516">Gwefan Bresennol</translation>
 <translation id="7537586195939242955">Mae'n ddrwg gennym, ni ellir gosod y Passbook ar yr adeg hon.</translation>
 <translation id="7554791636758816595">Tab Newydd</translation>
 <translation id="7561196759112975576">Bob tro</translation>
@@ -824,6 +854,7 @@
 <translation id="7638584964844754484">Cyfrinymadrodd anghywir</translation>
 <translation id="7646263789464975852">Dewislen → Gosodiadau → Gwiriad Diogelwch</translation>
 <translation id="7646772052135772216">Nid yw cysoni cyfrineiriau'n gweithio</translation>
+<translation id="764827086632467055">Tapiwch Ap Pori Diofyn</translation>
 <translation id="7649070708921625228">Cymorth</translation>
 <translation id="7658239707568436148">Canslo</translation>
 <translation id="7671141431838911305">GOSOD</translation>
@@ -846,6 +877,7 @@
 <translation id="784551991304901159">I weld cynnwys, dewiswch Troi Ymlaen o'r ddewislen</translation>
 <translation id="7853202427316060426">Gweithgarwch</translation>
 <translation id="7856733331829174190">Wedi methu â Lawrlwytho</translation>
+<translation id="785938070103630874">Agorwch Cyfrineiriau, Dulliau Talu neu Cyfeiriad a Rhagor</translation>
 <translation id="7859704718976024901">Hanes Pori</translation>
 <translation id="7884694604461143138">Hanes Chwilio (Wedi dod o hyd i <ph name="COUNT" />)</translation>
 <translation id="7887198238286927132">Er mwyn amddiffyn eich preifatrwydd, ni fydd Chrome yn llenwi'r maes hwn yn awtomatig.</translation>
@@ -865,6 +897,7 @@
 <translation id="7971521879845308059">Rhwystro ffenestri naid</translation>
 <translation id="797413074872316787">I gysoni a phersonoleiddio ar draws dyfeisiau, trowch gysoni ymlaen.</translation>
 <translation id="7978018860671536736">3. Tapiwch Awtolenwi Cyfrineiriau</translation>
+<translation id="7981908678811807838">Nid yw olrhain prisiau ar gael ar gyfer y wefan hon.</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>
 <translation id="7993619969781047893">Mae'n bosib y bydd nodweddion ar rai gwefannau yn torri</translation>
@@ -900,11 +933,13 @@
 <translation id="8237382152611443140">Agorwch y Gosodiadau Awtolenwi Cyfrinair</translation>
 <translation id="8261506727792406068">Dileu</translation>
 <translation id="8271720166617117963">Derbyn a Mewngofnodi</translation>
+<translation id="8278938988428169257">Rhowch Air neu Ymadrodd</translation>
 <translation id="8281781826761538115">Diofyn - <ph name="DEFAULT_LOCALE" /></translation>
 <translation id="8281886186245836920">Neidio</translation>
 <translation id="8283172974887967105">Gosod…</translation>
 <translation id="8299417921174340354">I ddefnyddio cyfrineiriau, rhaid i chi osod cod pas ar eich dyfais yn gyntaf.</translation>
 <translation id="8299613349954694191">Gallwch agor tab Anhysbys i bori'r we yn breifat.</translation>
+<translation id="8316944564970119719">Rhowch y Wefan a'r Cyfrinair a Chadwch</translation>
 <translation id="8319076807703933069">Chwiliad Newydd</translation>
 <translation id="8323906514956095947">Cyffyrddwch a daliwch i weld rhagor o ddewisiadau tab</translation>
 <translation id="8328777765163860529">Cau Pob Un</translation>
@@ -932,6 +967,7 @@
 <translation id="8533670235862049797">Mae Pori'n Ddiogel ymlaen</translation>
 <translation id="8534481786647257214">Postiad Google+ wedi'i gwblhau.</translation>
 <translation id="8548878600947630424">Chwilio'r Dudalen...</translation>
+<translation id="8558480467877843976">Gallwch bellach ddefnyddio Chrome unrhyw bryd y byddwch yn pori neu'n tapio dolenni mewn negeseuon, dogfennau ac apiau eraill.</translation>
 <translation id="8588404856427128947">Diffodd</translation>
 <translation id="8590913940444621808">Peidio Byth â Gofyn</translation>
 <translation id="8591976964826315682">Rhwystro Cwcis Trydydd Parti yn y Modd Anhysbys</translation>
@@ -949,6 +985,8 @@
 <translation id="8721297211384281569">Dewislen Offer</translation>
 <translation id="8725066075913043281">Rhoi cynnig arall arni</translation>
 <translation id="8730621377337864115">Wedi gorffen</translation>
+<translation id="8731388423028622182">Cawsoch eich allgofnodi o'ch cyfrif <ph name="USER_NAME" /> fel rhan o'ch ailosodiad iPhone. Tapiwch parhau isod i fewngofnodi.</translation>
+<translation id="87371078663613140">Archwiliwch yr opsiynau yn y bar dewislen</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="8750037785291841318">Byddwch yn gweld eich tabiau yma</translation>
 <translation id="8756969031206844760">Diweddaru'r cyfrinair?</translation>
@@ -966,10 +1004,13 @@
 <translation id="8868471676553493380">{count,plural, =1{{count} Tab}zero{{count} Tab}two{{count} Dab}few{{count} Thab}many{{count} Thab}other{{count} Tab}}</translation>
 <translation id="8870413625673593573">Wedi'u Cau yn Ddiweddar</translation>
 <translation id="8876882697946675716">Cadwch Eich Dyfeisiau Yn Gyson</translation>
+<translation id="8877287418679067891">Gwneud yn Ddiofyn yn y Gosodiadau...</translation>
 <translation id="8881801611828450202">Chwilio <ph name="SEARCH_ENGINE" /> ar gyfer y Llun Hwn</translation>
 <translation id="8891935667620843985">Gallwch agor dolenni yn Chrome yn awtomatig drwy ei osod fel eich Ap Porwr Diofyn.</translation>
 <translation id="8898822736010347272">Yn anfon cyfeiriadau URL o rai tudalennau rydych yn ymweld â nhw, gwybodaeth system gyfyngedig, a rhywfaint o gynnwys tudalen at Google, i helpu i ddarganfod bygythiadau newydd ac i amddiffyn pawb ar y we.</translation>
 <translation id="8909135823018751308">Rhannu…</translation>
+<translation id="8911759861431145525">Tapiwch Ychwanegu yna Rhowch Eich Gwybodaeth</translation>
+<translation id="891658175948553296">Amlygu Testun ar Wefan</translation>
 <translation id="8917490105272468696">Iawn, Rwy'n Cydsynio</translation>
 <translation id="8928133177108699615">Bwrdd gwaith</translation>
 <translation id="8952559610785099500">Ychwanegu Cyfrinair</translation>
@@ -1007,6 +1048,7 @@
 <translation id="9203116392574189331">Trosglwyddo</translation>
 <translation id="9223358826628549784">Wedi anfon adroddiad am doriad.</translation>
 <translation id="952704832371081537">Canslo</translation>
+<translation id="953008885340860025">Mae Chrome wedi'i Allgofnodi</translation>
 <translation id="959066944189734975">Rydych yn dilyn <ph name="CHANNEL_NAME" /></translation>
 <translation id="981498610235328462">Mae eich sefydliad yn caniatáu i chi fewngofnodi gyda rhai cyfrifon yn unig Mae cyfrifon na chaniateir yn cael eu cuddio.</translation>
 <translation id="984509647832111802">Nid yw Cysoni'n Gweithio.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_da.xtb b/ios/chrome/app/strings/resources/ios_strings_da.xtb
index eda1755..3756e36 100644
--- a/ios/chrome/app/strings/resources/ios_strings_da.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_da.xtb
@@ -19,6 +19,7 @@
 <translation id="1076421457278169141">Koden er scannet</translation>
 <translation id="1076785341346483463">Synkroniser med managerstyret konto</translation>
 <translation id="1084365883616172403">Indlæg delt på Facebook.</translation>
+<translation id="1085696779717592361">Brug Chrome som standard</translation>
 <translation id="1103523840287552314">Oversæt altid <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Acceptér og fortsæt</translation>
 <translation id="110724200315609752">Skift til åbent vindue</translation>
@@ -34,6 +35,7 @@
 <translation id="1165039591588034296">Fejl</translation>
 <translation id="1172898394251786223">Næste felt</translation>
 <translation id="1176932207622159128">Billedet kan ikke gemmes</translation>
+<translation id="1177414119866731261">Åbn Chrome-menuen</translation>
 <translation id="1181037720776840403">Fjern</translation>
 <translation id="1207113853726624428">Ny søgning</translation>
 <translation id="1209206284964581585">Skjul indtil videre</translation>
@@ -110,6 +112,7 @@
 <translation id="1740468249224277719">Tryk to gange for at installere.</translation>
 <translation id="1752547299766512813">Gem adgangskoder</translation>
 <translation id="1753905327828125965">Mest besøgte</translation>
+<translation id="1789803444939621101">Velkommen tilbage, <ph name="USER_NAME" /></translation>
 <translation id="1803264062614276815">Kortindehaverens navn</translation>
 <translation id="1809939268435598390">Slet mappe</translation>
 <translation id="1813414402673211292">Ryd browserdata</translation>
@@ -163,6 +166,7 @@
 <translation id="2302742851632557585">Skift adgangskode på website</translation>
 <translation id="2316709634732130529">Brug foreslået adgangskode</translation>
 <translation id="2320166752086256636">Skjul tastaturet</translation>
+<translation id="2328842561016935977">Tryk på Adgangskoder efterfulgt af Tilføj</translation>
 <translation id="2351097562818989364">Dine oversættelsesindstillinger er nulstillet.</translation>
 <translation id="235789365079050412">Googles privatlivspolitik</translation>
 <translation id="2359043044084662842">Oversæt</translation>
@@ -221,6 +225,7 @@
 <translation id="2781331604911854368">Til</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2783054063075604403">Der kunne ikke oprettes et link</translation>
+<translation id="2786701870377699570">Søg efter faner på synkroniserede enheder</translation>
 <translation id="2800683595868705743">Luk Faneskift</translation>
 <translation id="2815198996063984598">2. Tryk på Standardbrowserapp</translation>
 <translation id="2820289420301699633">Din administrator har kontrol over Chrome og har adgang til browserens data</translation>
@@ -244,6 +249,7 @@
 <translation id="2923448633003185837">Indsæt og fortsæt</translation>
 <translation id="292639812446257861">Markér som ulæst</translation>
 <translation id="2932085390869194046">Foreslå adgangskode...</translation>
+<translation id="2932765531295814441">Tilføj adgangskoder manuelt</translation>
 <translation id="2952581218264071393">1. Åbn indstillingerne for Chrome</translation>
 <translation id="2958718410589002129">Adgangskoder</translation>
 <translation id="2961210776189273067">Titel</translation>
@@ -279,6 +285,7 @@
 <translation id="3181954750937456830">Beskyttet browsing (beskytter dig og din enhed mod farlige websites)</translation>
 <translation id="3184767182050912705">Lås op med <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation>
 <translation id="3207960819495026254">Gemt som bogmærke</translation>
+<translation id="3214379938835224220">Du blev logget ud som en del af nulstillingen af din iPad. Tryk på Fortsæt nedenfor for at logge ind.</translation>
 <translation id="3224641773458703735">Angiv en adgangskode på din enhed, før du kan eksportere adgangskoder.</translation>
 <translation id="3227137524299004712">Mikrofon</translation>
 <translation id="3240426699337459095">Linket er kopieret</translation>
@@ -296,6 +303,7 @@
 <translation id="3329904751041170572">Der kunne ikke oprettes forbindelse til serveren.</translation>
 <translation id="3335947283844343239">Åbn lukket fane igen</translation>
 <translation id="3371831930909698441">Oversættelse er tilgængelig. Du finder indstillingerne nederst på skærmen.</translation>
+<translation id="3377063233124932127">Du finder nu dine gemte bogmærker, adgangskoder m.m. øverst.</translation>
 <translation id="3393920035788932672">Pop op-vinduer tilladt</translation>
 <translation id="3399930248910934354">Åbn indstillingerne for Chrome</translation>
 <translation id="3404744938087714423">Synkronisering deaktiveres, når du logger ud</translation>
@@ -318,11 +326,13 @@
 <translation id="3519193562722059437">Åbn en fane for at søge på nettet.</translation>
 <translation id="3527085408025491307">Mappe</translation>
 <translation id="3529024052484145543">Ikke sikker</translation>
+<translation id="3530206579861815432">Find hurtigt åbne og nyligt lukkede faner på dine synkroniserede enheder.</translation>
 <translation id="3533202363250687977">Luk alle inkognitofaner</translation>
 <translation id="3533436815740441613">Ny fane</translation>
 <translation id="3551320343578183772">Luk fanen</translation>
 <translation id="3581564640715911333">Tilbyd at oversætte sider på andre sprog</translation>
 <translation id="3588820906588687999">Åbn billede på ny fane</translation>
+<translation id="3595252146048399851">Du kan altid vælge, hvad der skal synkroniseres, i <ph name="BEGIN_LINK" />indstillingerne<ph name="END_LINK" />. Google kan tilpasse Søgning og andre tjenester baseret på din historik.</translation>
 <translation id="3603009562372709545">Kopiér linkets webadresse</translation>
 <translation id="3607167657931203000">AutoFyld-data</translation>
 <translation id="3609785682760573515">Synkroniserer…</translation>
@@ -371,6 +381,7 @@
 <translation id="4018310736049373830">Administrer aktivitet</translation>
 <translation id="4038354071007134711">Ingen apps på denne enhed, der kan åbne filen.</translation>
 <translation id="4042870976416480368">Find på siden</translation>
+<translation id="40433179647657191">Opret og del et direkte link til en del af en side, du har fremhævet.</translation>
 <translation id="4049507953662678203">Sørg for, at du har forbindelse til et netværk, og prøv igen.</translation>
 <translation id="4063300985191096908">Gå til feed</translation>
 <translation id="408404951701638773">Nu er det nemmere at bruge søgefeltet</translation>
@@ -388,11 +399,13 @@
 <translation id="4181841719683918333">Sprog</translation>
 <translation id="4187450337729239226">Indsæt og søg</translation>
 <translation id="4223967053752765281">Din organisation har deaktiveret login. Du kan stadig se din historik samt dine bogmærker, adgangskoder og andre indstillinger på din enhed. Hvis du foretager nogen ændringer, bliver de dog ikke synkroniseret med din konto.</translation>
+<translation id="4232900911558558076">Se den nye menu</translation>
 <translation id="4233831822770018312">Rediger tilladelser</translation>
 <translation id="4236584471598725073">Der holdes øje med prisen</translation>
 <translation id="4237377247299956313">Tryk på <ph name="BEGIN_BOLD" />Standardbrowserapp<ph name="END_BOLD" /></translation>
 <translation id="424315890655130736">Angiv adgangssætning</translation>
 <translation id="4249955472157341256">Sortér efter seneste</translation>
+<translation id="42618743927498729">Få en underretning, hvis prisen falder på et website.</translation>
 <translation id="4263576668337963058">Vis tilgængelige sidehandlinger</translation>
 <translation id="4267380167363222949">Næste fane</translation>
 <translation id="4272631900155121838">Aktivér kameraet i Indstillinger for at scanne en QR-kode</translation>
@@ -535,6 +548,7 @@
 <translation id="5388358297987318779">Åbn billede</translation>
 <translation id="5407969256130905701">Kassér ændringer</translation>
 <translation id="5416022985862681400">De seneste syv dage</translation>
+<translation id="5423269318075950257">Hold øje med prisudviklingen</translation>
 <translation id="543338862236136125">Rediger adgangskode</translation>
 <translation id="5433691172869980887">Brugernavnet er kopieret</translation>
 <translation id="5439599923922718668">Ofte besøgt</translation>
@@ -554,11 +568,15 @@
 <translation id="5556459405103347317">Genindlæs</translation>
 <translation id="556042886152191864">Knap</translation>
 <translation id="5580834567471114021">Vil du føje siden til læselisten?</translation>
+<translation id="5597915316964418992">Åbn fanegitteret</translation>
 <translation id="560322036295180549">Deaktiveret af din organisation</translation>
 <translation id="5614553682702429503">Vil du gemme adgangskoden?</translation>
 <translation id="5626245204502895507">Filen kunne ikke downloades på nuværende tidspunkt.</translation>
 <translation id="5631164295104953411">Tilføj betalingsmetode</translation>
+<translation id="5636282538000367086">Se nyheder i Chrome</translation>
+<translation id="5652623411397330904">De produkter, hvis pris du holder øje med, vises her.</translation>
 <translation id="5659593005791499971">Mail</translation>
+<translation id="5669335982068190158">Du er blevet logget ud som en del af nulstillingen af din iPhone. Tryk på Fortsæt nedenfor for at logge ind.</translation>
 <translation id="5669528293118408608">www</translation>
 <translation id="567881659373499783">Version <ph name="PRODUCT_VERSION" /></translation>
 <translation id="5690398455483874150">{count,plural, =1{Viser nu 1 Chrome-vindue}one{Viser nu {count} Chrome-vindue}other{Viser nu {count} Chrome-vinduer}}</translation>
@@ -569,6 +587,7 @@
 <translation id="5724941645893276623">Tilføj en ny fane for at surfe privat på nettet</translation>
 <translation id="5728700505257787410">Der var et problem med at logge ind på din konto.</translation>
 <translation id="5731784586962650619">Adgangskoder i andre apps</translation>
+<translation id="5733084997078800044">Tip til Chrome</translation>
 <translation id="5737974891429562743">Loginoplysningerne for kontoen er forældede. Opdater dem for at påbegynde synkroniseringen.</translation>
 <translation id="5738385766833540397">Administrer, hvordan du modtager underretninger om prisfald på produkter, du holder øje med</translation>
 <translation id="5738887413654608789">Dette giver dig mulighed for at opdage relevante websider baseret på dine omgivelser.</translation>
@@ -582,6 +601,7 @@
 <translation id="5812974770859303494">Føj til...</translation>
 <translation id="581659025233126501">Aktivér synkronisering</translation>
 <translation id="5819208479324046259">Administreres af <ph name="MANAGER" /> <ph name="BEGIN_LINK" />Få flere oplysninger<ph name="END_LINK" /></translation>
+<translation id="5833643789537100742">Gem adgangskoder, betalingsmetoder og adresser, så Chrome automatisk kan udfylde disse oplysninger senere.</translation>
 <translation id="5846482154967366008">Søgemaskine</translation>
 <translation id="5854790677617711513">Ældre end 30 dage</translation>
 <translation id="5857090052475505287">Ny mappe</translation>
@@ -597,6 +617,7 @@
 <translation id="5913600720976431809">Valgmuligheder for oversættelse af side</translation>
 <translation id="5938160824633642847">Din enhed er ved at løbe tør for plads. Frigør plads, og prøv igen.</translation>
 <translation id="5948291296578561264">Dermed kan du gemme fotos i din fotosamling.</translation>
+<translation id="5951816930277761335">Del linket</translation>
 <translation id="5955891643922670672">Viser offlineversion</translation>
 <translation id="5957613098218939406">Flere valgmuligheder</translation>
 <translation id="5963939892571022323">Der kan ikke oprettes et link til fremhævningen.</translation>
@@ -636,6 +657,7 @@
 <translation id="6189413832092199491">Ulæst</translation>
 <translation id="6196207969502475924">Talesøgning</translation>
 <translation id="6202364442240589072">{COUNT,plural, =1{Luk {COUNT} fane}one{Luk {COUNT} fane}other{Luk {COUNT} faner}}</translation>
+<translation id="6219550825416862075">Velkommen tilbage</translation>
 <translation id="6219688215832490856">Oversæt aldrig</translation>
 <translation id="6223816392543092032">Få dine bogmærker, din historik, dine adgangskoder og andre indstillinger på alle dine enheder.</translation>
 <translation id="6231782223312638214">Foreslået</translation>
@@ -723,6 +745,7 @@
 Når du er i Inkognito, kan websites ikke bruge cookies til at se din browserhistorik på forskellige websites for f.eks. at tilpasse annoncer.</translation>
 <translation id="6674571176963658787">Angiv din adgangssætning for at starte synkroniseringen</translation>
 <translation id="667999046851023355">Dokument</translation>
+<translation id="6684906340059221832">Overvågning af priser</translation>
 <translation id="6710079714193676716">Administreret af din organisation. Nogle funktioner er muligvis ikke tilgængelige. <ph name="BEGIN_LINK" />Få flere oplysninger<ph name="END_LINK" /></translation>
 <translation id="6713747756340119864">Google Apps</translation>
 <translation id="6730682669179532099">Der kan ikke eksporteres adgangskoder</translation>
@@ -756,6 +779,7 @@
 <translation id="6945221475159498467">Vælg</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="6973630695168034713">Mapper</translation>
+<translation id="6975148662438928529">Du blev logget ud af din konto <ph name="USER_NAME" /> som en del af nulstillingen af din iPad. Tryk på Fortsæt nedenfor for at logge ind.</translation>
 <translation id="6979158407327259162">Google Drev</translation>
 <translation id="6988572888918530647">Administrer din Google-konto</translation>
 <translation id="6989674195860388998">Skift i Indstillinger…</translation>
@@ -789,12 +813,16 @@
 <translation id="7265758999917665941">Aldrig for dette website</translation>
 <translation id="7272437679830969316">Din identitet kunne ikke bekræftes. Adgangskoden blev ikke kopieret.</translation>
 <translation id="7291368939935408496">Forbereder adgangskoder...</translation>
+<translation id="730958329302570991">Du kan til enhver tid nemt føje adgangskoder til websites til Google Adgangskodeadministrator.</translation>
 <translation id="7313347584264171202">Her finder du dine inkognitofaner</translation>
+<translation id="7315813263062036945">Tryk på søgeikonet øverst til venstre</translation>
 <translation id="7336264872878993241"><ph name="PERCENT" /> procent er downloadet</translation>
 <translation id="7340958967809483333">Indstillinger for Discover</translation>
 <translation id="7346909386216857016">OK</translation>
 <translation id="734758817008927353">Valgmuligheder for at gemme kort</translation>
+<translation id="7351537303876921605">Tryk på Opret link i genvejsmenuen</translation>
 <translation id="7353432112255316844">Bekræft din identitet</translation>
+<translation id="7356359962760467032">Stop prisovervågning</translation>
 <translation id="7383797227493018512">Læseliste</translation>
 <translation id="7398893703713203428">Opret link</translation>
 <translation id="739941347996872055">Forrige fane</translation>
@@ -815,6 +843,7 @@
 <translation id="750493650310597496">0 valgt</translation>
 <translation id="7508728395076009983">Du kan låse dine inkognitofaner ved at konfigurere Touch ID, Face ID eller en adgangskode.</translation>
 <translation id="7514365320538308">Download</translation>
+<translation id="7531345132340165516">Aktuelt website</translation>
 <translation id="7537586195939242955">Din adgangssætning kan ikke installeres på Passbook lige nu.</translation>
 <translation id="7554791636758816595">Ny fane</translation>
 <translation id="7561196759112975576">Altid</translation>
@@ -825,6 +854,7 @@
 <translation id="7638584964844754484">Forkert adgangssætning</translation>
 <translation id="7646263789464975852">Menu → Indstillinger → Sikkerhedstjek</translation>
 <translation id="7646772052135772216">Synkronisering af adgangskoder fungerer ikke</translation>
+<translation id="764827086632467055">Tryk på Standardbrowserapp</translation>
 <translation id="7649070708921625228">Hjælp</translation>
 <translation id="7658239707568436148">Annuller</translation>
 <translation id="7671141431838911305">INSTALLER</translation>
@@ -847,6 +877,7 @@
 <translation id="784551991304901159">Vælg Aktivér i menuen for at se indhold</translation>
 <translation id="7853202427316060426">Aktivitet</translation>
 <translation id="7856733331829174190">Downloaden mislykkedes</translation>
+<translation id="785938070103630874">Åbn Adgangskoder, Betalingsmetoder, Adresse m.m.</translation>
 <translation id="7859704718976024901">Browserhistorik</translation>
 <translation id="7884694604461143138">Søgehistorik (<ph name="COUNT" /> blev fundet)</translation>
 <translation id="7887198238286927132">Af hensyn til beskyttelsen af dine personlige oplysninger autofylder Chrome ikke dette felt.</translation>
@@ -866,6 +897,7 @@
 <translation id="7971521879845308059">Bloker pop op-vinduer</translation>
 <translation id="797413074872316787">Aktivér synkronisering for at synkronisere og tilpasse på alle dine enheder.</translation>
 <translation id="7978018860671536736">3. Tryk på Autoudfyld adgangskoder</translation>
+<translation id="7981908678811807838">Prisovervågning er ikke tilgængelig for dette website.</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>
 <translation id="7993619969781047893">Funktioner på visse websites fungerer muligvis ikke</translation>
@@ -901,11 +933,13 @@
 <translation id="8237382152611443140">Åbn indstillingerne for Autoudfyld adgangskoder</translation>
 <translation id="8261506727792406068">Slet</translation>
 <translation id="8271720166617117963">Acceptér og log ind</translation>
+<translation id="8278938988428169257">Angiv et ord eller en sætning</translation>
 <translation id="8281781826761538115">Standardsprog – <ph name="DEFAULT_LOCALE" /></translation>
 <translation id="8281886186245836920">Spring over</translation>
 <translation id="8283172974887967105">Angiv…</translation>
 <translation id="8299417921174340354">Før du kan bruge adgangskoder, skal du angive en adgangskode på din enhed.</translation>
 <translation id="8299613349954694191">Åbn en inkognitofane for at bruge nettet privat.</translation>
+<translation id="8316944564970119719">Angiv website og adgangskode, og gem derefter</translation>
 <translation id="8319076807703933069">Ny søgning</translation>
 <translation id="8323906514956095947">Tryk og hold nede for at se flere faneindstillinger</translation>
 <translation id="8328777765163860529">Luk alt</translation>
@@ -933,6 +967,7 @@
 <translation id="8533670235862049797">Beskyttet browsing er aktiveret</translation>
 <translation id="8534481786647257214">Indlæg delt på Google+.</translation>
 <translation id="8548878600947630424">Find på siden...</translation>
+<translation id="8558480467877843976">Du kan nu bruge Chrome, hver gang du browser eller trykker på links i meddelelser, dokumenter og andre apps.</translation>
 <translation id="8588404856427128947">Fra</translation>
 <translation id="8590913940444621808">Spørg aldrig</translation>
 <translation id="8591976964826315682">Bloker tredjepartscookies i inkognito</translation>
@@ -950,6 +985,8 @@
 <translation id="8721297211384281569">Menuen Værktøjer</translation>
 <translation id="8725066075913043281">Forsøg igen</translation>
 <translation id="8730621377337864115">Udfør</translation>
+<translation id="8731388423028622182">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.</translation>
+<translation id="87371078663613140">Se valgmulighederne i menulinjen</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="8750037785291841318">Her finder du dine faner</translation>
 <translation id="8756969031206844760">Vil du opdatere adgangskoden?</translation>
@@ -967,10 +1004,13 @@
 <translation id="8868471676553493380">{count,plural, =1{{count} fane}one{{count} fane}other{{count} faner}}</translation>
 <translation id="8870413625673593573">Senest lukkede</translation>
 <translation id="8876882697946675716">Bevar synkroniseringen af dine enheder</translation>
+<translation id="8877287418679067891">Angiv som standard i Indstillinger...</translation>
 <translation id="8881801611828450202">Søg på <ph name="SEARCH_ENGINE" /> efter dette billede</translation>
 <translation id="8891935667620843985">Du kan åbne links i Chrome automatisk ved at angive Chrome som din standardbrowserapp.</translation>
 <translation id="8898822736010347272">Sender webadresser på visse sider, du besøger, begrænsede systemoplysninger og indhold fra visse sider til Google med henblik på at opdage nye trusler og beskytte brugerne på nettet.</translation>
 <translation id="8909135823018751308">Del…</translation>
+<translation id="8911759861431145525">Tryk på Tilføj, og angiv derefter dine oplysninger</translation>
+<translation id="891658175948553296">Fremhæv tekst på et website</translation>
 <translation id="8917490105272468696">Ja tak</translation>
 <translation id="8928133177108699615">Computer</translation>
 <translation id="8952559610785099500">Tilføj adgangskode</translation>
@@ -1008,6 +1048,7 @@
 <translation id="9203116392574189331">Handoff</translation>
 <translation id="9223358826628549784">Der er sendt en nedbrudsrapport.</translation>
 <translation id="952704832371081537">Annuller</translation>
+<translation id="953008885340860025">Chrome er logget ud</translation>
 <translation id="959066944189734975">Du følger <ph name="CHANNEL_NAME" /></translation>
 <translation id="981498610235328462">Din organisation tillader kun login med bestemte konti. Konti, der ikke tillades, skjules.</translation>
 <translation id="984509647832111802">Synkronisering fungerer ikke.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_el.xtb b/ios/chrome/app/strings/resources/ios_strings_el.xtb
index 4b91c28..f88ec546 100644
--- a/ios/chrome/app/strings/resources/ios_strings_el.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_el.xtb
@@ -19,6 +19,7 @@
 <translation id="1076421457278169141">Ο κώδικας σαρώθηκε</translation>
 <translation id="1076785341346483463">Συγχρονισμός με διαχειριζόμενο λογαριασμό</translation>
 <translation id="1084365883616172403">Η ανάρτηση στο Facebook ολοκληρώθηκε.</translation>
+<translation id="1085696779717592361">Χρήση του Chrome από προεπιλογή</translation>
 <translation id="1103523840287552314">Να μεταφράζονται πάντα τα <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Αποδοχή και συνέχεια</translation>
 <translation id="110724200315609752">Εναλλαγή σε ανοικτό παράθυρο</translation>
@@ -34,6 +35,7 @@
 <translation id="1165039591588034296">Σφάλμα</translation>
 <translation id="1172898394251786223">Επόμενο πεδίο</translation>
 <translation id="1176932207622159128">Αδύνατη αποθ.εικόνας</translation>
+<translation id="1177414119866731261">Ανοίξτε το μενού Chrome</translation>
 <translation id="1181037720776840403">Κατάργηση</translation>
 <translation id="1207113853726624428">Νέα αναζήτηση</translation>
 <translation id="1209206284964581585">Προσωρινή απόκρυψη</translation>
@@ -110,6 +112,7 @@
 <translation id="1740468249224277719">Πατήστε δύο φορές για εγκατάσταση.</translation>
 <translation id="1752547299766512813">Απ. κωδ. πρόσβ.</translation>
 <translation id="1753905327828125965">Πιο Δημοφιλή</translation>
+<translation id="1789803444939621101">Καλώς ορίσατε πάλι, <ph name="USER_NAME" /></translation>
 <translation id="1803264062614276815">Όνομα κατόχου κάρτας</translation>
 <translation id="1809939268435598390">Διαγραφή φακέλου</translation>
 <translation id="1813414402673211292">Διαγραφή δεδ. περιήγ.</translation>
@@ -163,6 +166,7 @@
 <translation id="2302742851632557585">Αλλαγή κωδικού πρόσβασης στον ιστότοπο</translation>
 <translation id="2316709634732130529">Χρ. προτ. κωδ. πρόσ.</translation>
 <translation id="2320166752086256636">Απόκρυψη πληκτρολογίου</translation>
+<translation id="2328842561016935977">Πατήστε Κωδικοί πρόσβασης και, στη συνέχεια, Προσθήκη</translation>
 <translation id="2351097562818989364">Έγινε επαναφορά ρυθμίσεων μετάφρασης.</translation>
 <translation id="235789365079050412">Πολιτική απορρήτου της Google</translation>
 <translation id="2359043044084662842">Μετάφραση</translation>
@@ -221,6 +225,7 @@
 <translation id="2781331604911854368">Ενεργό</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2783054063075604403">Δεν είναι δυνατή η δημιουργία συνδέσμου</translation>
+<translation id="2786701870377699570">Αναζήτηση στις καρτέλες στις συγχρονισμένες συσκευές</translation>
 <translation id="2800683595868705743">Αποχώρηση από την εναλλαγή καρτελών</translation>
 <translation id="2815198996063984598">2. Πατήστε Προεπιλεγμένη εφαρμογή προγράμματος περιήγησης.</translation>
 <translation id="2820289420301699633">Ο διαχειριστής σας έχει τον έλεγχο του Chrome και μπορεί να αποκτήσει πρόσβαση στα δεδομένα του</translation>
@@ -244,6 +249,7 @@
 <translation id="2923448633003185837">Επικόλληση και μετάβαση</translation>
 <translation id="292639812446257861">Επισ. ως μη αναγνωσμένων</translation>
 <translation id="2932085390869194046">Πρόταση για κωδικό πρόσβασης…</translation>
+<translation id="2932765531295814441">Προσθήκη κωδικών πρόσβασης με μη αυτόματο τρόπο</translation>
 <translation id="2952581218264071393">1. Ανοίξτε τις Ρυθμίσεις του Chrome.</translation>
 <translation id="2958718410589002129">Κωδικοί πρόσβασης</translation>
 <translation id="2961210776189273067">Τίτλος</translation>
@@ -279,6 +285,7 @@
 <translation id="3181954750937456830">Ασφαλής περιήγηση (προστατεύει εσάς και τη συσκευή σας από επικίνδυνους ιστοτόπους)</translation>
 <translation id="3184767182050912705">Ξεκλείδωμα με <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation>
 <translation id="3207960819495026254">Προστέθηκε στους σελιδοδείκτες</translation>
+<translation id="3214379938835224220">Αποσυνδεθήκατε στο πλαίσιο της επαναφοράς του iPad. Πατήστε συνέχεια παρακάτω για να συνδεθείτε.</translation>
 <translation id="3224641773458703735">Για να εξαγάγετε τους κωδικούς πρόσβασης, θα πρέπει πρώτα να ορίσετε έναν κωδικό πρόσβασης στη συσκευή σας.</translation>
 <translation id="3227137524299004712">Μικρόφωνο</translation>
 <translation id="3240426699337459095">Ο σύνδεσμος αντιγράφηκε</translation>
@@ -296,6 +303,7 @@
 <translation id="3329904751041170572">Δεν ήταν δυνατή η σύνδεση στο διακομιστή.</translation>
 <translation id="3335947283844343239">Εκ Νέου Άνοιγμα Κλεισμένης Καρτέλας</translation>
 <translation id="3371831930909698441">Διατίθεται μετάφραση. Διαθέσιμες επιλογές κοντά στο κάτω μέρος της οθόνης.</translation>
+<translation id="3377063233124932127">Πλέον οι αποθηκευμένοι σελιδοδείκτες, κωδικοί πρόσβασης και άλλα δεδομένα βρίσκονται στο επάνω μέρος.</translation>
 <translation id="3393920035788932672">Επιτρέπ. τα αναδυόμ.</translation>
 <translation id="3399930248910934354">Ανοίξτε τις Ρυθμίσεις του Chrome.</translation>
 <translation id="3404744938087714423">Με την αποσύνδεση, ο συγχρονισμός απενεργοποιείται.</translation>
@@ -318,11 +326,13 @@
 <translation id="3519193562722059437">Άνοιγμα καρτέλας για περιήγηση στον ιστό</translation>
 <translation id="3527085408025491307">Φάκελος</translation>
 <translation id="3529024052484145543">Μη ασφαλής</translation>
+<translation id="3530206579861815432">Βρείτε γρήγορα τις ανοιχτές καρτέλες και τις καρτέλες που κλείσατε πρόσφατα σε όλες τις συγχρονισμένες συσκευές σας.</translation>
 <translation id="3533202363250687977">Κλείσιμο όλων των καρτελών ανώνυμης περιήγησης</translation>
 <translation id="3533436815740441613">Νέα καρτέλα</translation>
 <translation id="3551320343578183772">Κλείσιμο Καρτέλας</translation>
 <translation id="3581564640715911333">Προσφορά για μετάφραση σελίδων σε άλλες γλώσσες</translation>
 <translation id="3588820906588687999">Άνοιγμα εικόνας σε νέα καρτέλα</translation>
+<translation id="3595252146048399851">Μπορείτε πάντα να επιλέξετε τα στοιχεία που θέλετε να συγχρονίσετε στις <ph name="BEGIN_LINK" />ρυθμίσεις<ph name="END_LINK" />. Η Google μπορεί να εξατομικεύει την Αναζήτηση και άλλες υπηρεσίες με βάση το ιστορικό σας.</translation>
 <translation id="3603009562372709545">Αντιγραφή διεύθυνσης URL συνδέσμου</translation>
 <translation id="3607167657931203000">Δεδομένα Αυτόματης συμπλήρωσης</translation>
 <translation id="3609785682760573515">Συγχρονισμός…</translation>
@@ -371,6 +381,7 @@
 <translation id="4018310736049373830">Διαχείριση δραστηριότητας</translation>
 <translation id="4038354071007134711">Καμία εφαρμογή στη συσκευή για άνοιγμα αρχείου.</translation>
 <translation id="4042870976416480368">Εύρεση στη σελίδα</translation>
+<translation id="40433179647657191">Δημιουργήστε και μοιραστείτε έναν απευθείας σύνδεσμο προς ένα τμήμα μιας σελίδας που έχετε επισημάνει.</translation>
 <translation id="4049507953662678203">Βεβαιωθείτε ότι έχετε μια σύνδεση δικτύου και δοκιμάστε ξανά.</translation>
 <translation id="4063300985191096908">Μετάβαση στη Ροή</translation>
 <translation id="408404951701638773">Η πρόσβαση στη γραμμή αναζήτησης είναι πλέον πιο εύκολη</translation>
@@ -388,11 +399,13 @@
 <translation id="4181841719683918333">Γλώσσες</translation>
 <translation id="4187450337729239226">Επικόλληση και αναζήτηση</translation>
 <translation id="4223967053752765281">Η σύνδεση απενεργοποιήθηκε από τον οργανισμό σας. Μπορείτε ακόμη να δείτε τους σελιδοδείκτες, το ιστορικό, τους κωδικούς πρόσβασης και άλλες ρυθμίσεις σε αυτήν τη συσκευή. Εάν πραγματοποιήσετε αλλαγές, δεν θα συγχρονιστούν στον λογαριασμό σας.</translation>
+<translation id="4232900911558558076">Εξερευνήστε το νέο μενού</translation>
 <translation id="4233831822770018312">Επεξεργασία αδειών</translation>
 <translation id="4236584471598725073">Παρακολούθηση τιμής</translation>
 <translation id="4237377247299956313">Πατήστε <ph name="BEGIN_BOLD" />Προεπιλεγμένη εφαρμογή προγράμματος περιήγησης<ph name="END_BOLD" />.</translation>
 <translation id="424315890655130736">Εισαγωγή φράσης πρόσβασης</translation>
 <translation id="4249955472157341256">Ταξινόμηση με βάση την πιο πρόσφατη</translation>
+<translation id="42618743927498729">Λάβετε μια ειδοποίηση σε περίπτωση πτώσης τιμής σε οποιονδήποτε ιστότοπο.</translation>
 <translation id="4263576668337963058">Εμφάνιση διαθέσιμων ενεργειών σελίδας</translation>
 <translation id="4267380167363222949">Επόμενη καρτέλα</translation>
 <translation id="4272631900155121838">Για να σαρώσετε έναν κώδικα QR, ενεργοποιήστε την κάμερα από τις ρυθμίσεις</translation>
@@ -535,6 +548,7 @@
 <translation id="5388358297987318779">Άνοιγμα εικόνας</translation>
 <translation id="5407969256130905701">Απόρριψη αλλαγών</translation>
 <translation id="5416022985862681400">Τελευταίες 7 ημέρες</translation>
+<translation id="5423269318075950257">Παρακολούθηση τιμής</translation>
 <translation id="543338862236136125">Επεξεργασία κωδικού πρόσβασης</translation>
 <translation id="5433691172869980887">Το όνομα χρήστη αντιγράφηκε</translation>
 <translation id="5439599923922718668">Συχνές επισκέψεις</translation>
@@ -554,11 +568,15 @@
 <translation id="5556459405103347317">Επαναφόρτωση</translation>
 <translation id="556042886152191864">Κουμπί</translation>
 <translation id="5580834567471114021">Προσθήκη στη Λίστα ανάγνωσης για αργότερα;</translation>
+<translation id="5597915316964418992">Ανοίξτε το Πλέγμα καρτελών</translation>
 <translation id="560322036295180549">Απενεργοποιήθηκε από τον οργανισμό σας.</translation>
 <translation id="5614553682702429503">Αποθήκευση κωδικού πρόσβασης;</translation>
 <translation id="5626245204502895507">Δεν ήταν δυνατή η λήψη του αρχείου αυτή τη φορά.</translation>
 <translation id="5631164295104953411">Προσθήκη τρόπου πληρωμής</translation>
+<translation id="5636282538000367086">Μάθετε τι νέο υπάρχει στο Chrome</translation>
+<translation id="5652623411397330904">Τα προϊόντα που παρακολουθείτε θα εμφανίζονται εδώ.</translation>
 <translation id="5659593005791499971">Ηλεκτρονικό ταχυδρομείο</translation>
+<translation id="5669335982068190158">Αποσυνδεθήκατε στο πλαίσιο της επαναφοράς του iPhone. Πατήστε συνέχεια παρακάτω για να συνδεθείτε.</translation>
 <translation id="5669528293118408608">www</translation>
 <translation id="567881659373499783">Έκδοση <ph name="PRODUCT_VERSION" /></translation>
 <translation id="5690398455483874150">{count,plural, =1{Δεν εμφανίζεται 1 παράθυρο του Chrome}other{Δεν εμφανίζονται {count} παράθυρα του Chrome}}</translation>
@@ -569,6 +587,7 @@
 <translation id="5724941645893276623">Για να περιηγηθείτε στον ιστό ιδιωτικά, προσθέστε μια νέα καρτέλα.</translation>
 <translation id="5728700505257787410">Παρουσιάστηκε πρόβλημα με τη σύνδεση στον λογαριασμό σας.</translation>
 <translation id="5731784586962650619">Κωδικοί πρόσβασης σε άλλες εφαρμογές</translation>
+<translation id="5733084997078800044">Συμβουλή για το Chrome</translation>
 <translation id="5737974891429562743">Τα στοιχεία σύνδεσης λογαριασμού δεν είναι ενημερωμένα. Ενημερώστε τα για να ξεκινήσει ο συγχρονισμός.</translation>
 <translation id="5738385766833540397">Διαχειριστείτε τον τρόπο με τον οποίο λαμβάνετε τις ειδοποιήσεις πτώσεων τιμών για τα προϊόντα που παρακολουθείτε</translation>
 <translation id="5738887413654608789">Αυτό σας επιτρέπει να ανακαλύψετε σχετικές ιστοσελίδες βάσει του περιβάλλοντός σας.</translation>
@@ -582,6 +601,7 @@
 <translation id="5812974770859303494">Προσθήκη σε…</translation>
 <translation id="581659025233126501">Ενεργοποίηση συγχρονισμού</translation>
 <translation id="5819208479324046259">Διαχείριση από <ph name="MANAGER" />. <ph name="BEGIN_LINK" />Μάθετε περισσότερα<ph name="END_LINK" /></translation>
+<translation id="5833643789537100742">Αποθηκεύστε κωδικούς πρόσβασης, τρόπους πληρωμής και διευθύνσεις για αυτόματη συμπλήρωση από το Chrome αργότερα.</translation>
 <translation id="5846482154967366008">Μηχανή αναζήτησης</translation>
 <translation id="5854790677617711513">Παλαιότερο από 30 ημέρες</translation>
 <translation id="5857090052475505287">Νέος φάκελος</translation>
@@ -597,6 +617,7 @@
 <translation id="5913600720976431809">Επιλογές για τη Μετάφραση σελίδας</translation>
 <translation id="5938160824633642847">Ο αποθηκευτικός χώρος της συσκευής σας έχει σχεδόν γεμίσει. Απελευθερώστε χώρο και προσπαθήστε ξανά.</translation>
 <translation id="5948291296578561264">Σας επιτρέπει να αποθηκεύετε φωτογραφίες στη βιβλιοθήκη φωτογραφιών σας.</translation>
+<translation id="5951816930277761335">Μοιραστείτε τον σύνδεσμο</translation>
 <translation id="5955891643922670672">Προβολή έκδοσης εκτός σύνδεσης</translation>
 <translation id="5957613098218939406">Περισσότερες επιλογές</translation>
 <translation id="5963939892571022323">Δεν είναι δυνατή η δημιουργία συνδέσμου προς την επισήμανση.</translation>
@@ -636,6 +657,7 @@
 <translation id="6189413832092199491">Μη αναγνωσμένα</translation>
 <translation id="6196207969502475924">Φωνητική αναζήτηση</translation>
 <translation id="6202364442240589072">{COUNT,plural, =1{Κλείσιμο {COUNT} καρτέλας}other{Κλείσιμο {COUNT} καρτελών}}</translation>
+<translation id="6219550825416862075">Καλώς ορίσατε και πάλι</translation>
 <translation id="6219688215832490856">Να μην γίνεται ποτέ μετάφραση</translation>
 <translation id="6223816392543092032">Μεταφέρετε όλους τους σελιδοδείκτες, το ιστορικό, τους κωδικούς πρόσβασης και άλλες ρυθμίσεις σας σε όλες τις συσκευές σας.</translation>
 <translation id="6231782223312638214">Προτεινόμενο</translation>
@@ -724,6 +746,7 @@
 Ενώ βρίσκεστε σε κατάσταση ανώνυμης περιήγησης, οι ιστότοποι δεν μπορούν να χρησιμοποιούν τα cookie για να βλέπουν τη δραστηριότητα περιήγησής σας σε διαφορετικούς ιστοτόπους όπως, για παράδειγμα, για την εξατομίκευση των διαφημίσεων.</translation>
 <translation id="6674571176963658787">Για να ξεκινήσετε τον συγχρονισμό, εισαγάγετε τη φράση πρόσβασης.</translation>
 <translation id="667999046851023355">Έγγραφο</translation>
+<translation id="6684906340059221832">Γίνεται παρακολούθηση τιμών</translation>
 <translation id="6710079714193676716">Διαχειριζόμενο από τον οργανισμό σας. Ορισμένες λειτουργίες ενδέχεται να μην είναι διαθέσιμες. <ph name="BEGIN_LINK" />Μάθετε περισσότερα<ph name="END_LINK" /></translation>
 <translation id="6713747756340119864">Google Apps</translation>
 <translation id="6730682669179532099">Δεν είναι δυνατή η εξαγωγή κωδικών πρόσβασης</translation>
@@ -757,6 +780,7 @@
 <translation id="6945221475159498467">Επιλογή</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="6973630695168034713">Φάκελοι</translation>
+<translation id="6975148662438928529">Αποσυνδεθήκατε από τον λογαριασμό σας <ph name="USER_NAME" /> στο πλαίσιο της επαναφοράς του iPad. Πατήστε συνέχεια παρακάτω για να συνδεθείτε.</translation>
 <translation id="6979158407327259162">Google Drive</translation>
 <translation id="6988572888918530647">Διαχείριση Λογαριασμού Google</translation>
 <translation id="6989674195860388998">Κάντε την αλλαγή στις Ρυθμίσεις…</translation>
@@ -790,12 +814,16 @@
 <translation id="7265758999917665941">Ποτέ για αυτόν τον ιστότοπο</translation>
 <translation id="7272437679830969316">Δεν είναι δυνατή η επαλήθευση της ταυτότητας σας. Ο κωδικός πρόσβασης δεν αντιγράφηκε.</translation>
 <translation id="7291368939935408496">Προετοιμασία κωδικών πρόσβασης…</translation>
+<translation id="730958329302570991">Προσθέστε με ευκολία κωδικούς πρόσβασης ιστοτόπων στον Διαχειριστή κωδικών πρόσβασης Google ανά πάσα στιγμή.</translation>
 <translation id="7313347584264171202">Εδώ θα βρείτε τις καρτέλες ανώνυμης περιήγησής σας</translation>
+<translation id="7315813263062036945">Επάνω αριστερά, πατήστε το εικονίδιο Αναζήτηση.</translation>
 <translation id="7336264872878993241">Έγινε λήψη του <ph name="PERCENT" /> τοις εκατό</translation>
 <translation id="7340958967809483333">Επιλογές για Discover</translation>
 <translation id="7346909386216857016">OK, το κατάλαβα</translation>
 <translation id="734758817008927353">Επιλογές για την Αποθήκευση κάρτας</translation>
+<translation id="7351537303876921605">Πατήστε Δημιουργία συνδέσμου στο μενού περιβάλλοντος</translation>
 <translation id="7353432112255316844">Επαλήθευση ταυτότητας</translation>
+<translation id="7356359962760467032">Διακοπή της παρακολούθησης τιμών</translation>
 <translation id="7383797227493018512">Λίστα ανάγνωσης</translation>
 <translation id="7398893703713203428">Δημιουργία συνδέσμου</translation>
 <translation id="739941347996872055">Προηγούμενη καρτέλα</translation>
@@ -816,6 +844,7 @@
 <translation id="750493650310597496">0 στοιχεία επιλεγμένα</translation>
 <translation id="7508728395076009983">Για να κλειδώσετε τις καρτέλες ανώνυμης περιήγησης, ρυθμίστε το Touch ID, το Face ID ή έναν κωδικό πρόσβασης.</translation>
 <translation id="7514365320538308">Λήψη</translation>
+<translation id="7531345132340165516">Τρέχων ιστότοπος</translation>
 <translation id="7537586195939242955">Δεν είναι δυνατή η εγκατάσταση του πάσου σας στο Passbook.</translation>
 <translation id="7554791636758816595">Νέα καρτέλα</translation>
 <translation id="7561196759112975576">Πάντα</translation>
@@ -826,6 +855,7 @@
 <translation id="7638584964844754484">Εσφαλμένη φράση πρόσβασης</translation>
 <translation id="7646263789464975852">Μενού → Ρυθμίσεις → Έλεγχος ασφαλείας</translation>
 <translation id="7646772052135772216">Ο συγχρονισμός κωδικών πρόσβασης δεν λειτουργεί</translation>
+<translation id="764827086632467055">Πατήστε Προεπιλεγμένη εφαρμογή προγράμματος περιήγησης.</translation>
 <translation id="7649070708921625228">Βοήθεια</translation>
 <translation id="7658239707568436148">Ακύρωση</translation>
 <translation id="7671141431838911305">ΕΓΚΑΤΑΣΤΑΣΗ</translation>
@@ -848,6 +878,7 @@
 <translation id="784551991304901159">Για εμφάνιση περιεχομένου, από το μενού, επιλέξτε Ενεργοποίηση</translation>
 <translation id="7853202427316060426">Δραστηριότητα</translation>
 <translation id="7856733331829174190">Δεν ήταν δυνατή η λήψη</translation>
+<translation id="785938070103630874">Ανοίξτε τους κωδικούς πρόσβασης, τους τρόπους πληρωμής, τη διεύθυνση και άλλα</translation>
 <translation id="7859704718976024901">Ιστορικό περιήγησης</translation>
 <translation id="7884694604461143138">Ιστορικό αναζήτησης (Βρέθηκαν <ph name="COUNT" />)</translation>
 <translation id="7887198238286927132">Προκειμένου να προστατεύσει το απόρρητό σας, το Chrome δεν θα συμπληρώνει αυτόματα αυτό το πεδίο.</translation>
@@ -867,6 +898,7 @@
 <translation id="7971521879845308059">Αποκ. αναδυόμ.</translation>
 <translation id="797413074872316787">Για συγχρονισμό και εξατομίκευση σε διάφορες συσκευές, ενεργοποιήστε τον συγχρονισμό.</translation>
 <translation id="7978018860671536736">3. Πατήστε Αυτόματη συμπλήρωση κωδικών πρόσβασης</translation>
+<translation id="7981908678811807838">Η παρακολούθηση τιμών δεν είναι διαθέσιμη για αυτόν τον ιστότοπο.</translation>
 <translation id="7982789257301363584">Δίκτυο</translation>
 <translation id="7987685713885608670">Για επιπλέον ασφάλεια, κρυπτογραφήστε τους κωδικούς πρόσβασης στη συσκευή σας προτού αποθηκευτούν στον Διαχειριστή κωδικών πρόσβασης Google.</translation>
 <translation id="7993619969781047893">Μπορεί να παρουσιαστούν προβλήματα στις λειτουργίες ορισμένων ιστοτόπων.</translation>
@@ -902,11 +934,13 @@
 <translation id="8237382152611443140">Ανοίξτε τις Ρυθμίσεις της Αυτόματης συμπλήρωσης κωδικού πρόσβασης</translation>
 <translation id="8261506727792406068">Διαγραφή</translation>
 <translation id="8271720166617117963">Αποδοχή και σύνδεση</translation>
+<translation id="8278938988428169257">Εισαγάγετε μια λέξη ή φράση</translation>
 <translation id="8281781826761538115">Προεπιλογή - <ph name="DEFAULT_LOCALE" /></translation>
 <translation id="8281886186245836920">Παράβλεψη</translation>
 <translation id="8283172974887967105">Ορισμός…</translation>
 <translation id="8299417921174340354">Για τη χρήση κωδικών πρόσβασης, πρέπει πρώτα να ορίσετε έναν κωδικό πρόσβασης στη συσκευή σας.</translation>
 <translation id="8299613349954694191">Άνοιγμα καρτέλας ανώνυμης περιήγησης για ιδιωτική περιήγηση στον ιστό.</translation>
+<translation id="8316944564970119719">Εισαγάγετε τον ιστότοπο και τον κωδικό πρόσβασης και, στη συνέχεια, αποθηκεύστε</translation>
 <translation id="8319076807703933069">Νέα αναζήτηση</translation>
 <translation id="8323906514956095947">Αγγίξτε παρατεταμένα για περισσότερες επιλογές καρτελών</translation>
 <translation id="8328777765163860529">Κλείσιμο όλων</translation>
@@ -934,6 +968,7 @@
 <translation id="8533670235862049797">Η Ασφαλής περιήγηση είναι ενεργή.</translation>
 <translation id="8534481786647257214">Η ανάρτηση Google+ ολοκληρώθηκε.</translation>
 <translation id="8548878600947630424">Εύρεση στη σελίδα...</translation>
+<translation id="8558480467877843976">Μπορείτε πλέον να χρησιμοποιείτε το Chrome κάθε φορά που περιηγείστε ή πατάτε συνδέσμους σε μηνύματα, έγγραφα και άλλες εφαρμογές.</translation>
 <translation id="8588404856427128947">Ανενεργό</translation>
 <translation id="8590913940444621808">Να μην ερωτώμαι</translation>
 <translation id="8591976964826315682">Αποκλεισμός cookie τρίτου μέρους στην ανώνυμη περιήγηση</translation>
@@ -951,6 +986,8 @@
 <translation id="8721297211384281569">Μενού εργαλείων</translation>
 <translation id="8725066075913043281">Προσπαθήστε ξανά</translation>
 <translation id="8730621377337864115">Ολοκληρώθηκε</translation>
+<translation id="8731388423028622182">Αποσυνδεθήκατε από τον λογαριασμό σας <ph name="USER_NAME" /> στο πλαίσιο της επαναφοράς του iPhone. Πατήστε συνέχεια παρακάτω για να συνδεθείτε.</translation>
+<translation id="87371078663613140">Εξερευνήστε τις επιλογές στη γραμμή μενού</translation>
 <translation id="8741995161408053644">Ο Λογαριασμός σας Google ενδέχεται να διαθέτει άλλες μορφές ιστορικού περιήγησης στη διεύθυνση <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" />.</translation>
 <translation id="8750037785291841318">Εδώ θα βρείτε τις καρτέλες σας</translation>
 <translation id="8756969031206844760">Ενημέρωση κωδικού πρόσβασης;</translation>
@@ -968,10 +1005,13 @@
 <translation id="8868471676553493380">{count,plural, =1{{count} καρτέλα}other{{count} καρτέλες}}</translation>
 <translation id="8870413625673593573">Έκλεισαν πρόσφατα</translation>
 <translation id="8876882697946675716">Διατηρήστε συγχρονισμένες τις συσκευές σας</translation>
+<translation id="8877287418679067891">Ορισμός ως προεπιλεγμένου στις Ρυθμίσεις…</translation>
 <translation id="8881801611828450202">Αναζήτηση εικόνας σε <ph name="SEARCH_ENGINE" /></translation>
 <translation id="8891935667620843985">Μπορείτε να ανοίγετε συνδέσμους αυτόματα στο Chrome αν το ορίσετε ως προεπιλεγμένη εφαρμογή προγράμματος περιήγησης.</translation>
 <translation id="8898822736010347272">Στέλνει URL από ορισμένες σελίδες που επισκέπτεστε, περιορισμένες πληροφορίες συστήματος και ορισμένο περιεχόμενο σελίδας στην Google, για να συμβάλλει στην ανακάλυψη νέων απειλών και την προστασία όλων των χρηστών στον ιστό.</translation>
 <translation id="8909135823018751308">Κοινοποίηση…</translation>
+<translation id="8911759861431145525">Πατήστε Προσθήκη και έπειτα εισαγάγετε τα στοιχεία σας</translation>
+<translation id="891658175948553296">Επισημάνετε κείμενο σε έναν ιστότοπο</translation>
 <translation id="8917490105272468696">Ναι, συμφωνώ</translation>
 <translation id="8928133177108699615">Για υπολογιστή</translation>
 <translation id="8952559610785099500">Προσθήκη κωδικού πρόσβασης</translation>
@@ -1009,6 +1049,7 @@
 <translation id="9203116392574189331">Handoff</translation>
 <translation id="9223358826628549784">Η αναφορά σφάλματος εστάλη.</translation>
 <translation id="952704832371081537">Ακύρωση</translation>
+<translation id="953008885340860025">Έγινε αποσύνδεση από το Chrome</translation>
 <translation id="959066944189734975">Ακολουθείτε το κανάλι <ph name="CHANNEL_NAME" /></translation>
 <translation id="981498610235328462">Ο οργανισμός σας επιτρέπει να συνδέεστε μόνο με ορισμένους λογαριασμούς. Οι λογαριασμοί που δεν επιτρέπονται δεν εμφανίζονται.</translation>
 <translation id="984509647832111802">Ο συγχρονισμός δεν λειτουργεί.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb b/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb
index 9c60c5a..e7fef6f0 100644
--- a/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_en-GB.xtb
@@ -434,6 +434,7 @@
 <translation id="4502566650163919158">Check now</translation>
 <translation id="4505980578794259603">Last checked <ph name="TIME" />.</translation>
 <translation id="4508750114462689118">Close sign-in promo</translation>
+<translation id="4520798012560649652">Learn more about Incognito mode</translation>
 <translation id="4526249700380860531">View and manage saved passwords at <ph name="BEGIN_LINK" />passwords.google.com<ph name="END_LINK" /></translation>
 <translation id="452750746583162491">Review your synced data</translation>
 <translation id="4536418791685807335">Try signing in again.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_es.xtb b/ios/chrome/app/strings/resources/ios_strings_es.xtb
index 646ad5e..db0d905b 100644
--- a/ios/chrome/app/strings/resources/ios_strings_es.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_es.xtb
@@ -667,7 +667,7 @@
 <translation id="6389470377220713856">Nombre de la tarjeta</translation>
 <translation id="6403371459378431832">Sincroniza tus datos en todos los dispositivos</translation>
 <translation id="6406506848690869874">Sincronización</translation>
-<translation id="6410390304316730527">La función Navegación segura te protege frente a atacantes que pueden intentar engañarte para que realices alguna acción peligrosa, como instalar software malicioso o revelar información personal, incluidas contraseñas, números de teléfono o tarjetas de crédito. Si desactivas esta función, debes tener cuidado al navegar por sitios desconocidos o que no sean de confianza.</translation>
+<translation id="6410390304316730527">La función Navegación segura te protege frente a atacantes que pueden intentar engañarte para que realices alguna acción peligrosa, como instalar malware o revelar información personal, incluidas contraseñas, números de teléfono o tarjetas de crédito. Si desactivas esta función, debes tener cuidado al navegar por sitios desconocidos o que no sean de confianza.</translation>
 <translation id="6410883413783534063">Abre pestañas para visitar varias páginas al mismo tiempo</translation>
 <translation id="641799622251403418">Has iniciado sesión como <ph name="EMAIL" />.
 
diff --git a/ios/chrome/app/strings/resources/ios_strings_fi.xtb b/ios/chrome/app/strings/resources/ios_strings_fi.xtb
index d1152075..0892b38 100644
--- a/ios/chrome/app/strings/resources/ios_strings_fi.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_fi.xtb
@@ -19,6 +19,7 @@
 <translation id="1076421457278169141">Koodi skannattiin.</translation>
 <translation id="1076785341346483463">Synkronoi hallinnoidun tilin kanssa</translation>
 <translation id="1084365883616172403">Facebook-viesti julkaistu.</translation>
+<translation id="1085696779717592361">Chromen käyttö oletuksena</translation>
 <translation id="1103523840287552314">Käännä <ph name="LANGUAGE" /> aina</translation>
 <translation id="1104948393051856124">Hyväksy ja jatka</translation>
 <translation id="110724200315609752">Vaihda avoimeen ikkunaan</translation>
@@ -34,6 +35,7 @@
 <translation id="1165039591588034296">Virhe</translation>
 <translation id="1172898394251786223">Seuraava kenttä</translation>
 <translation id="1176932207622159128">Kuvaa ei voi tall.</translation>
+<translation id="1177414119866731261">Avaa Chrome-valikko</translation>
 <translation id="1181037720776840403">Poista</translation>
 <translation id="1207113853726624428">Uusi haku</translation>
 <translation id="1209206284964581585">Piilota toistaiseksi</translation>
@@ -110,6 +112,7 @@
 <translation id="1740468249224277719">Asenna kaksoisnapauttamalla.</translation>
 <translation id="1752547299766512813">Tall. salasanat</translation>
 <translation id="1753905327828125965">Käydyimmät</translation>
+<translation id="1789803444939621101">Tervetuloa takaisin, <ph name="USER_NAME" /></translation>
 <translation id="1803264062614276815">Kortinhaltijan nimi</translation>
 <translation id="1809939268435598390">Poista kansio</translation>
 <translation id="1813414402673211292">Poista selaustiedot</translation>
@@ -163,6 +166,7 @@
 <translation id="2302742851632557585">Vaihda salasana verkkosivustolla</translation>
 <translation id="2316709634732130529">Käytä salasanaehdotusta</translation>
 <translation id="2320166752086256636">Piilota näppäimistö</translation>
+<translation id="2328842561016935977">Valitse "Salasanat" ja sitten "Lisää".</translation>
 <translation id="2351097562818989364">Käännösasetukset on nollattu.</translation>
 <translation id="235789365079050412">Googlen tietosuojakäytäntö</translation>
 <translation id="2359043044084662842">Käännä</translation>
@@ -221,6 +225,7 @@
 <translation id="2781331604911854368">Päällä</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2783054063075604403">Linkkiä ei voi luoda</translation>
+<translation id="2786701870377699570">Välilehtien haku synkronoiduilta laitteilta</translation>
 <translation id="2800683595868705743">Sulje välilehden vaihtaja</translation>
 <translation id="2815198996063984598">2. Valitse Oletusselain</translation>
 <translation id="2820289420301699633">Järjestelmänvalvoja hallitsee Chromea ja pääsee sen dataan</translation>
@@ -244,6 +249,7 @@
 <translation id="2923448633003185837">Liitä ja siirry</translation>
 <translation id="292639812446257861">Merkitse lukemattomaksi</translation>
 <translation id="2932085390869194046">Ehdota salasanaa…</translation>
+<translation id="2932765531295814441">Salasanojen manuaalinen lisääminen</translation>
 <translation id="2952581218264071393">1. Avaa Chromen asetukset</translation>
 <translation id="2958718410589002129">Salasanat</translation>
 <translation id="2961210776189273067">Titteli</translation>
@@ -279,6 +285,7 @@
 <translation id="3181954750937456830">Selaussuoja (suojaa sinua ja laitettasi vaarallisilta sivustoilta)</translation>
 <translation id="3184767182050912705"><ph name="BIOMETRIC_AUTHENITCATION_TYPE" /> avaa lukituksen</translation>
 <translation id="3207960819495026254">Kirjanmerkeissä</translation>
+<translation id="3214379938835224220">Sinut kirjattiin ulos, kun iPad nollattiin. Kirjaudu sisään valitsemalla alta "Jatka".</translation>
 <translation id="3224641773458703735">Jos haluat viedä salasanoja, sinun on ensin määritettävä laitteellesi tunnuskoodi.</translation>
 <translation id="3227137524299004712">Mikrofoni</translation>
 <translation id="3240426699337459095">Linkki kopioitu</translation>
@@ -296,6 +303,7 @@
 <translation id="3329904751041170572">Palvelimeen ei saada yhteyttä.</translation>
 <translation id="3335947283844343239">Avaa suljettu välilehti uudelleen</translation>
 <translation id="3371831930909698441">Kääntäjä on käytössä. Asetukset löytyvät näytön alalaidasta.</translation>
+<translation id="3377063233124932127">Tallennetut kirjanmerkit, salasanat ja muut tiedot ovat nyt ylhäällä.</translation>
 <translation id="3393920035788932672">Ponnahdusikk. sallittu</translation>
 <translation id="3399930248910934354">Avaa Chromen asetukset</translation>
 <translation id="3404744938087714423">Uloskirjautuminen poistaa synkronoinnin käytöstä.</translation>
@@ -318,11 +326,13 @@
 <translation id="3519193562722059437">Avaa välilehti selailua varten.</translation>
 <translation id="3527085408025491307">Kansio</translation>
 <translation id="3529024052484145543">Ei turvallinen</translation>
+<translation id="3530206579861815432">Löydä kaikilla synkronoiduilla laitteilla auki olevia tai äskettäin suljettuja välilehtiä nopeasti.</translation>
 <translation id="3533202363250687977">Sulje kaikki incognito-välilehdet</translation>
 <translation id="3533436815740441613">Uusi välilehti</translation>
 <translation id="3551320343578183772">Sulje välilehti</translation>
 <translation id="3581564640715911333">Tarjoudu kääntämään vierailla kielillä kirjoitettuja sivuja</translation>
 <translation id="3588820906588687999">Avaa kuva uudessa välilehdessä</translation>
+<translation id="3595252146048399851">Voit valita synkronoitavan sisällön <ph name="BEGIN_LINK" />asetuksista<ph name="END_LINK" />. Google voi personoida Hakua ja muita palveluita historiasi perusteella.</translation>
 <translation id="3603009562372709545">Kopioi linkin URL-osoite</translation>
 <translation id="3607167657931203000">Automaattisen täytön tiedot</translation>
 <translation id="3609785682760573515">Synkronoidaan…</translation>
@@ -371,6 +381,7 @@
 <translation id="4018310736049373830">Ylläpidä toimintaa</translation>
 <translation id="4038354071007134711">Mikään laitteen sovellus ei voi avata tiedostoa.</translation>
 <translation id="4042870976416480368">Hae sivulta</translation>
+<translation id="40433179647657191">Luo ja jaa suora linkki korostamaasi sivun kohtaan.</translation>
 <translation id="4049507953662678203">Varmista, että käytössäsi on verkkoyhteys, ja yritä uudelleen.</translation>
 <translation id="4063300985191096908">Siirry fiidiin</translation>
 <translation id="408404951701638773">Hakukenttä on nyt helpommin käytettävissä</translation>
@@ -388,11 +399,13 @@
 <translation id="4181841719683918333">Kielet</translation>
 <translation id="4187450337729239226">Liitä ja hae</translation>
 <translation id="4223967053752765281">Organisaatiosi on laittanut sisäänkirjautumisen pois päältä. Voit edelleen nähdä kirjanmerkit, historian, salasanat ja muut asetukset tällä laitteella. Jos teet muutoksia, niitä ei synkronoida tilillesi.</translation>
+<translation id="4232900911558558076">Tutustu uuteen valikkoon</translation>
 <translation id="4233831822770018312">Muokkaa lupia</translation>
 <translation id="4236584471598725073">Hintaa seurataan</translation>
 <translation id="4237377247299956313">Valitse <ph name="BEGIN_BOLD" />Oletusselainsovellus<ph name="END_BOLD" /></translation>
 <translation id="424315890655130736">Anna tunnuslause</translation>
 <translation id="4249955472157341256">Lajittele viimeisimmät ensimmäisiksi</translation>
+<translation id="42618743927498729">Voit saada ilmoituksen, jos hinta laskee jollakin sivustolla.</translation>
 <translation id="4263576668337963058">Näytä käytettävissä olevat sivutoiminnot</translation>
 <translation id="4267380167363222949">Seuraava välilehti</translation>
 <translation id="4272631900155121838">Jos haluat skannata QR-koodin, ota kamera käyttöön asetuksissa.</translation>
@@ -535,6 +548,7 @@
 <translation id="5388358297987318779">Avaa kuva</translation>
 <translation id="5407969256130905701">Hylkää muutokset</translation>
 <translation id="5416022985862681400">Viimeiset 7 päivää</translation>
+<translation id="5423269318075950257">Hintaseuranta</translation>
 <translation id="543338862236136125">Muokkaa salasanaa</translation>
 <translation id="5433691172869980887">Käyttäjänimi kopioitu</translation>
 <translation id="5439599923922718668">Usein avatut</translation>
@@ -554,11 +568,15 @@
 <translation id="5556459405103347317">Lataa uudelleen</translation>
 <translation id="556042886152191864">Painike</translation>
 <translation id="5580834567471114021">Lisätäänkö lukulistalle myöhempää käyttöä varten?</translation>
+<translation id="5597915316964418992">Avaa välilehtiruudukko</translation>
 <translation id="560322036295180549">Organisaatiosi on laittanut tämän pois päältä</translation>
 <translation id="5614553682702429503">Tallennetaanko salasana?</translation>
 <translation id="5626245204502895507">Tiedostoa ei voi ladata tällä hetkellä.</translation>
 <translation id="5631164295104953411">Lisää maksutapa</translation>
+<translation id="5636282538000367086">Uutta Chromessa</translation>
+<translation id="5652623411397330904">Seuraamasi tuotteet näkyvät täällä.</translation>
 <translation id="5659593005791499971">Sähköposti</translation>
+<translation id="5669335982068190158">Sinut kirjattiin ulos, kun iPhone nollattiin. Kirjaudu sisään valitsemalla alta "Jatka".</translation>
 <translation id="5669528293118408608">www</translation>
 <translation id="567881659373499783">Versio <ph name="PRODUCT_VERSION" /></translation>
 <translation id="5690398455483874150">{count,plural, =1{Nyt näytetään 1 Chrome-ikkuna}other{Nyt näytetään {count} Chrome-ikkunaa}}</translation>
@@ -569,6 +587,7 @@
 <translation id="5724941645893276623">Jos haluat selata verkkoa yksityisesti, lisää uusi välilehti</translation>
 <translation id="5728700505257787410">Tiliin kirjautuminen epäonnistui.</translation>
 <translation id="5731784586962650619">Salasanat muissa sovelluksissa</translation>
+<translation id="5733084997078800044">Chrome-vinkki</translation>
 <translation id="5737974891429562743">Tilin kirjautumistiedot ovat vanhentuneet. Aloita synkronointi päivittämällä.</translation>
 <translation id="5738385766833540397">Valitse, miten saat hinnanlaskuilmoituksia seuraamistasi tuotteista</translation>
 <translation id="5738887413654608789">Tämän avulla voit löytää sinua ympäröiviin asioihin liittyviä verkkosivuja.</translation>
@@ -582,6 +601,7 @@
 <translation id="5812974770859303494">Lisää…</translation>
 <translation id="581659025233126501">Laita synkronointi päälle</translation>
 <translation id="5819208479324046259">Ylläpitäjä on <ph name="MANAGER" />. <ph name="BEGIN_LINK" />Lue lisää<ph name="END_LINK" /></translation>
+<translation id="5833643789537100742">Tallenna salasanat, maksutavat ja osoitteet Chromen automaattista täyttöä varten.</translation>
 <translation id="5846482154967366008">Hakukone</translation>
 <translation id="5854790677617711513">Yli 30 päivää vanhat</translation>
 <translation id="5857090052475505287">Uusi kansio</translation>
@@ -597,6 +617,7 @@
 <translation id="5913600720976431809">Sivun käännösvalinnat</translation>
 <translation id="5938160824633642847">Laite on lähes täynnä. Vapauta tilaa ja yritä uudelleen.</translation>
 <translation id="5948291296578561264">Tämän avulla voit tallentaa kuvia kuvakirjastoon.</translation>
+<translation id="5951816930277761335">Jaa linkki</translation>
 <translation id="5955891643922670672">Näytetään offline-versio</translation>
 <translation id="5957613098218939406">Lisäasetukset</translation>
 <translation id="5963939892571022323">Korostukseen ei voi luoda linkkiä.</translation>
@@ -636,6 +657,7 @@
 <translation id="6189413832092199491">Lukematon</translation>
 <translation id="6196207969502475924">Puhehaku</translation>
 <translation id="6202364442240589072">{COUNT,plural, =1{Sulje {COUNT} välilehti}other{Sulje {COUNT} välilehteä}}</translation>
+<translation id="6219550825416862075">Tervetuloa takaisin</translation>
 <translation id="6219688215832490856">Älä käännä koskaan</translation>
 <translation id="6223816392543092032">Käytä kirjanmerkkejäsi, historiaasi, salasanojasi ja muita asetuksiasi kaikilla laitteillasi</translation>
 <translation id="6231782223312638214">Ehdotukset</translation>
@@ -723,6 +745,7 @@
 Kun olet incognito-tilassa, sivustot eivät näe selaustoimintaasi eri sivustoilla evästeiden kautta esim. personoidakseen mainoksia.</translation>
 <translation id="6674571176963658787">Aloita synkronointi lisäämällä tunnuslause</translation>
 <translation id="667999046851023355">Dokumentti</translation>
+<translation id="6684906340059221832">Hintoja seurataan</translation>
 <translation id="6710079714193676716">Organisaatiosi ylläpitämä. Kaikki ominaisuudet eivät välttämättä ole saatavilla. <ph name="BEGIN_LINK" />Lue lisää<ph name="END_LINK" /></translation>
 <translation id="6713747756340119864">Google Apps</translation>
 <translation id="6730682669179532099">Salasanojen vienti epäonnistui</translation>
@@ -756,6 +779,7 @@
 <translation id="6945221475159498467">Valitse</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="6973630695168034713">Kansiot</translation>
+<translation id="6975148662438928529">Sinut kirjattiin ulos tililtä <ph name="USER_NAME" />, kun iPad nollattiin. Kirjaudu sisään valitsemalla alta "Jatka".</translation>
 <translation id="6979158407327259162">Google Drive</translation>
 <translation id="6988572888918530647">Hallinnoi Google-tiliäsi</translation>
 <translation id="6989674195860388998">Vaihda asetuksissa…</translation>
@@ -789,12 +813,16 @@
 <translation id="7265758999917665941">Ei koskaan tälle sivustolle</translation>
 <translation id="7272437679830969316">Henkilöllisyytesi vahvistaminen ei onnistunut. Salasanaa ei kopioitu.</translation>
 <translation id="7291368939935408496">Valmistellaan salasanoja…</translation>
+<translation id="730958329302570991">Voit helposti lisätä sivustojen salasanoja Googlen Salasanoihin milloin tahansa.</translation>
 <translation id="7313347584264171202">Näet incognito-välilehtesi täällä</translation>
+<translation id="7315813263062036945">Kosketa näytön vasemmassa yläkulmassa olevaa Hakukuvaketta.</translation>
 <translation id="7336264872878993241"><ph name="PERCENT" /> prosenttia ladattu</translation>
 <translation id="7340958967809483333">Discover-asetukset</translation>
 <translation id="7346909386216857016">Selvä</translation>
 <translation id="734758817008927353">Kortin tallentamisvaihtoehdot</translation>
+<translation id="7351537303876921605">Valitse kontekstivalikosta "Luo linkki"</translation>
 <translation id="7353432112255316844">Todenna henkilöllisyytesi</translation>
+<translation id="7356359962760467032">Lopeta hintaseuranta</translation>
 <translation id="7383797227493018512">Lukulista</translation>
 <translation id="7398893703713203428">Luo linkki</translation>
 <translation id="739941347996872055">Edellinen välilehti</translation>
@@ -815,6 +843,7 @@
 <translation id="750493650310597496">0 valittu</translation>
 <translation id="7508728395076009983">Jos haluat lukita incognito-välilehdet, ota käyttöön Touch ID, Face ID tai tunnuskoodi.</translation>
 <translation id="7514365320538308">Lataa</translation>
+<translation id="7531345132340165516">Nykyinen sivusto</translation>
 <translation id="7537586195939242955">Passiasi ei voi asentaa Passbookiin tällä hetkellä.</translation>
 <translation id="7554791636758816595">Uusi välilehti</translation>
 <translation id="7561196759112975576">Aina</translation>
@@ -825,6 +854,7 @@
 <translation id="7638584964844754484">Väärä tunnuslause.</translation>
 <translation id="7646263789464975852">Valikko → Asetukset → Turvatarkistus</translation>
 <translation id="7646772052135772216">Salasanojen synkronointi ei toimi</translation>
+<translation id="764827086632467055">Valitse Oletusselainsovellus</translation>
 <translation id="7649070708921625228">Ohje</translation>
 <translation id="7658239707568436148">Peru</translation>
 <translation id="7671141431838911305">ASENNA</translation>
@@ -847,6 +877,7 @@
 <translation id="784551991304901159">Voit nähdä sisältöä valitsemalla valikosta Laita päälle</translation>
 <translation id="7853202427316060426">Tapahtumat</translation>
 <translation id="7856733331829174190">Lataus epäonnistui</translation>
+<translation id="785938070103630874">Avaa esimerkiksi Salasanat, Maksutavat tai Osoite</translation>
 <translation id="7859704718976024901">Selaushistoria</translation>
 <translation id="7884694604461143138">Hae historiasta (<ph name="COUNT" /> löytyi)</translation>
 <translation id="7887198238286927132">Tietojesi suojaamiseksi Chrome ei täytä tätä kenttää automaattisesti.</translation>
@@ -866,6 +897,7 @@
 <translation id="7971521879845308059">Estä ponn.ikk.</translation>
 <translation id="797413074872316787">Ota synkronointi käyttöön, niin sisältö synkronoidaan ja personoidaan eri laitteilla.</translation>
 <translation id="7978018860671536736">3. Valitse Automaattisen täytön salasanat</translation>
+<translation id="7981908678811807838">Hintaseuranta ei ole käytettävissä tällä sivustolla.</translation>
 <translation id="7982789257301363584">Verkko</translation>
 <translation id="7987685713885608670">Salasanat kannattaa salata turvallisuussyistä laitteella ennen niiden tallentamista Googlen Salasanojen ylläpitoon.</translation>
 <translation id="7993619969781047893">Joidenkin sivustojen ominaisuudet saattavat lakata toimimasta</translation>
@@ -901,11 +933,13 @@
 <translation id="8237382152611443140">Avaa automaattisen täytön salasana-asetukset</translation>
 <translation id="8261506727792406068">Poista</translation>
 <translation id="8271720166617117963">Hyväksy ja kirjaudu sisään</translation>
+<translation id="8278938988428169257">Lisää sana tai ilmaus</translation>
 <translation id="8281781826761538115">Oletus – <ph name="DEFAULT_LOCALE" /></translation>
 <translation id="8281886186245836920">Ohita</translation>
 <translation id="8283172974887967105">Valitse…</translation>
 <translation id="8299417921174340354">Salasanojen käyttöä varten sinun on ensin asetettava laitteellesi tunnuskoodi.</translation>
 <translation id="8299613349954694191">Selaa verkkoa yksityisesti avaamalla incognito-välilehden.</translation>
+<translation id="8316944564970119719">Lisää sivusto ja salasana ja sitten tallenna</translation>
 <translation id="8319076807703933069">Uusi haku</translation>
 <translation id="8323906514956095947">Katso lisää välilehtiasetuksia painamalla pitkään</translation>
 <translation id="8328777765163860529">Sulje kaikki</translation>
@@ -933,6 +967,7 @@
 <translation id="8533670235862049797">Selaussuoja on päällä</translation>
 <translation id="8534481786647257214">Google+ -viesti julkaistu.</translation>
 <translation id="8548878600947630424">Haku sivulta...</translation>
+<translation id="8558480467877843976">Voit nyt käyttää Chromea aina selatessasi ja kun napautat linkkejä viesteissä, dokumenteissa tai muissa sovelluksissa.</translation>
 <translation id="8588404856427128947">Pois päältä</translation>
 <translation id="8590913940444621808">Älä kysy ikinä</translation>
 <translation id="8591976964826315682">Estä kolmannen osapuolen evästeet incognito-tilassa</translation>
@@ -950,6 +985,8 @@
 <translation id="8721297211384281569">Työkalut-valikko</translation>
 <translation id="8725066075913043281">Yritä uudelleen</translation>
 <translation id="8730621377337864115">Valmis</translation>
+<translation id="8731388423028622182">Sinut kirjattiin ulos tililtä <ph name="USER_NAME" />, kun iPhone nollattiin. Kirjaudu sisään valitsemalla alta "Jatka".</translation>
+<translation id="87371078663613140">Tutustu valikkopalkkiin</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="8750037785291841318">Näet välilehtesi täällä</translation>
 <translation id="8756969031206844760">Päivitetäänkö salasana?</translation>
@@ -967,10 +1004,13 @@
 <translation id="8868471676553493380">{count,plural, =1{{count} välilehti}other{{count} välilehteä}}</translation>
 <translation id="8870413625673593573">Hiljattain suljetut</translation>
 <translation id="8876882697946675716">Pidä laitteesi synkronoituina</translation>
+<translation id="8877287418679067891">Muuta oletusselaimeksi asetuksissa…</translation>
 <translation id="8881801611828450202">Hae kuvaa seuraavasta palvelusta: <ph name="SEARCH_ENGINE" /></translation>
 <translation id="8891935667620843985">Voit avata linkkejä Chromessa automaattisesti tekemällä siitä oletusselainsovelluksesi.</translation>
 <translation id="8898822736010347272">Lähettää Googlelle joidenkin vierailemiesi sivujen URL-osoitteita, rajallisia järjestelmätietoja ja osia sivujen sisällöstä auttaakseen löytämään uusia uhkia ja suojaamaan kaikkia verkon käyttäjiä.</translation>
 <translation id="8909135823018751308">Jaa…</translation>
+<translation id="8911759861431145525">Valitse "Lisää" ja lisää sitten tiedot</translation>
+<translation id="891658175948553296">Korosta sivuston tekstiä</translation>
 <translation id="8917490105272468696">Kyllä</translation>
 <translation id="8928133177108699615">Työpöytä</translation>
 <translation id="8952559610785099500">Lisää salasana</translation>
@@ -1008,6 +1048,7 @@
 <translation id="9203116392574189331">Handoff</translation>
 <translation id="9223358826628549784">Virheraportti lähetettiin.</translation>
 <translation id="952704832371081537">Peru</translation>
+<translation id="953008885340860025">Olet kirjautunut ulos Chromesta</translation>
 <translation id="959066944189734975">Seuraat tätä: <ph name="CHANNEL_NAME" /></translation>
 <translation id="981498610235328462">Organisaatiosi sallii sinun kirjautua sisään vain tietyillä tileillä. Kielletyt tilit on piilotettu.</translation>
 <translation id="984509647832111802">Synkronointi ei toimi.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fil.xtb b/ios/chrome/app/strings/resources/ios_strings_fil.xtb
index 0af2f4ef..79c42c0 100644
--- a/ios/chrome/app/strings/resources/ios_strings_fil.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_fil.xtb
@@ -19,6 +19,7 @@
 <translation id="1076421457278169141">Na-scan na ang code</translation>
 <translation id="1076785341346483463">I-sync sa Pinapamahalaang Account</translation>
 <translation id="1084365883616172403">Kumpleto na ang pag-post sa Facebook.</translation>
+<translation id="1085696779717592361">Gamitin ang Chrome Bilang Default</translation>
 <translation id="1103523840287552314">Palaging i-translate ang <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Tanggapin at Magpatuloy</translation>
 <translation id="110724200315609752">Lumipat sa Nakabukas na Window</translation>
@@ -34,6 +35,7 @@
 <translation id="1165039591588034296">Error</translation>
 <translation id="1172898394251786223">Susunod na field</translation>
 <translation id="1176932207622159128">Di Ma-save Larawan</translation>
+<translation id="1177414119866731261">Buksan ang Menu ng Chrome</translation>
 <translation id="1181037720776840403">Alisin</translation>
 <translation id="1207113853726624428">Bagong Paghahanap</translation>
 <translation id="1209206284964581585">Itago sa ngayon</translation>
@@ -110,6 +112,7 @@
 <translation id="1740468249224277719">I-double tap upang i-install.</translation>
 <translation id="1752547299766512813">I-save ang Mga Password</translation>
 <translation id="1753905327828125965">Most Visited</translation>
+<translation id="1789803444939621101">Maligayang Pagbabalik, <ph name="USER_NAME" /></translation>
 <translation id="1803264062614276815">Pangalan ng Cardholder</translation>
 <translation id="1809939268435598390">I-delete ang Folder</translation>
 <translation id="1813414402673211292">I-clear Data sa Pag-browse</translation>
@@ -163,6 +166,7 @@
 <translation id="2302742851632557585">Palitan ang Password sa Website</translation>
 <translation id="2316709634732130529">Gamitin ang Iminumungkahing Password</translation>
 <translation id="2320166752086256636">Itago ang keyboard</translation>
+<translation id="2328842561016935977">I-tap ang Mga Password at Pagkatapos ay I-tap ang Idagdag</translation>
 <translation id="2351097562818989364">Na-reset ang iyong mga setting sa pag-translate.</translation>
 <translation id="235789365079050412">Patakaran sa Privacy ng Google</translation>
 <translation id="2359043044084662842">I-translate</translation>
@@ -221,6 +225,7 @@
 <translation id="2781331604911854368">Naka-on</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2783054063075604403">Hindi Makagawa ng Link</translation>
+<translation id="2786701870377699570">Maghanap sa Mga Tab sa Lahat ng Naka-sync na Device</translation>
 <translation id="2800683595868705743">Umalis sa Tagalipat ng Tab</translation>
 <translation id="2815198996063984598">2. I-tap ang Default na Browser App</translation>
 <translation id="2820289420301699633">May kontrol ang iyong administrator sa Chrome at maa-access niya ang data nito</translation>
@@ -244,6 +249,7 @@
 <translation id="2923448633003185837">Mag-paste at Umalis</translation>
 <translation id="292639812446257861">Markahan Bilang Hindi pa Nababasa</translation>
 <translation id="2932085390869194046">Magmungkahi ng Password...</translation>
+<translation id="2932765531295814441">Manual na Magdagdag ng Mga Password</translation>
 <translation id="2952581218264071393">1. Buksan ang Mga Setting ng Chrome</translation>
 <translation id="2958718410589002129">Mga Password</translation>
 <translation id="2961210776189273067">Pamagat</translation>
@@ -279,6 +285,7 @@
 <translation id="3181954750937456830">Ligtas na Pag-browse (pinoprotektahan ka at ang iyong device mula sa mga mapanganib na site)</translation>
 <translation id="3184767182050912705">I-unlock Gamit ang <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation>
 <translation id="3207960819495026254">Naka-bookmark</translation>
+<translation id="3214379938835224220">Na-sign out ka bilang bahagi ng pag-reset ng iyong iPad. I-tap ang magpatuloy sa ibaba para mag-sign in.</translation>
 <translation id="3224641773458703735">Upang makapag-export ng mga password, kinakailangan mo munang magtakda ng passcode sa iyong device.</translation>
 <translation id="3227137524299004712">Mikropono</translation>
 <translation id="3240426699337459095">Nakopya ang link</translation>
@@ -296,6 +303,7 @@
 <translation id="3329904751041170572">Hindi makakonekta sa server.</translation>
 <translation id="3335947283844343239">Muling buksan ang Nakasarang Tab</translation>
 <translation id="3371831930909698441">Available ang pagsasalin. May mga opsyon malapit sa ibaba ng screen.</translation>
+<translation id="3377063233124932127">Nasa taas na ngayon ang iyong mga naka-save na bookmark, password, at higit pa.</translation>
 <translation id="3393920035788932672">Pinapayagan ang Mga Pop-up</translation>
 <translation id="3399930248910934354">Buksan ang Mga Setting ng Chrome</translation>
 <translation id="3404744938087714423">Mao-off ang pag-sync kung magsa-sign out.</translation>
@@ -318,11 +326,13 @@
 <translation id="3519193562722059437">Magbukas ng tab upang i-browse ang web.</translation>
 <translation id="3527085408025491307">Folder</translation>
 <translation id="3529024052484145543">Hindi secure</translation>
+<translation id="3530206579861815432">Mabilis na maghanap ng mga bukas at kamakailang isinarang tab sa lahat ng iyong naka-sync na device.</translation>
 <translation id="3533202363250687977">Isara ang Lahat ng Tab na Incognito</translation>
 <translation id="3533436815740441613">Bagong Tab</translation>
 <translation id="3551320343578183772">Isara ang Tab</translation>
 <translation id="3581564640715911333">Mag-alok na mag-translate ng mga page sa iba pang wika</translation>
 <translation id="3588820906588687999">Buksan ang Larawan sa Bagong Tab</translation>
+<translation id="3595252146048399851">Mapipili mo kung ano ang isi-sync anumang oras sa <ph name="BEGIN_LINK" />mga setting<ph name="END_LINK" />. Puwedeng i-personalize ng Google ang Search at iba pang serbisyo batay sa iyong history.</translation>
 <translation id="3603009562372709545">Kopyahin ang URL ng Link</translation>
 <translation id="3607167657931203000">Mag-autofill ng Data</translation>
 <translation id="3609785682760573515">Nagsi-sync...</translation>
@@ -371,6 +381,7 @@
 <translation id="4018310736049373830">Pamahalaan ang Aktibidad</translation>
 <translation id="4038354071007134711">Walang application sa device ang makakabukas nito.</translation>
 <translation id="4042870976416480368">Hanapin sa Page</translation>
+<translation id="40433179647657191">Gumawa at magbahagi ng direktang link sa isang bahagi ng page na na-highlight mo.</translation>
 <translation id="4049507953662678203">Tiyaking mayroon kang koneksyon sa network, at subukang muli.</translation>
 <translation id="4063300985191096908">Pumunta Sa Feed</translation>
 <translation id="408404951701638773">Mas madali nang puntahan ang search bar</translation>
@@ -388,11 +399,13 @@
 <translation id="4181841719683918333">Mga Wika</translation>
 <translation id="4187450337729239226">I-paste at Maghanap</translation>
 <translation id="4223967053752765281">Na-off ng iyong organisasyon ang pag-sign in. Makikita mo pa rin ang iyong mga bookmark, history, password, at iba pang setting sa device na ito. Kung gagawa ka ng mga pagbabago, hindi masi-sync ang mga ito sa iyong account.</translation>
+<translation id="4232900911558558076">I-explore ang Bagong Menu</translation>
 <translation id="4233831822770018312">I-edit ang Mga Pahintulot</translation>
 <translation id="4236584471598725073">Sinusubaybayan ang Presyo</translation>
 <translation id="4237377247299956313">I-tap ang <ph name="BEGIN_BOLD" />Default na Browser App<ph name="END_BOLD" /></translation>
 <translation id="424315890655130736">Ilagay ang Passphrase</translation>
 <translation id="4249955472157341256">Pagbukud-bukurin ayon sa Pinakabago</translation>
+<translation id="42618743927498729">Makatanggap ng alerto kung bababa ang presyo sa alinmang site.</translation>
 <translation id="4263576668337963058">Ipakita ang mga available na pagkilos sa page</translation>
 <translation id="4267380167363222949">Susunod na Tab</translation>
 <translation id="4272631900155121838">Upang mag-scan ng QR code, i-enable ang camera mula sa mga setting</translation>
@@ -535,6 +548,7 @@
 <translation id="5388358297987318779">Buksan ang Larawan</translation>
 <translation id="5407969256130905701">I-discard ang Mga Pagbabago</translation>
 <translation id="5416022985862681400">Huling 7 Araw</translation>
+<translation id="5423269318075950257">Subaybayan ang Presyo</translation>
 <translation id="543338862236136125">I-edit ang password</translation>
 <translation id="5433691172869980887">Nakopya ang username</translation>
 <translation id="5439599923922718668">Madalas na Binibisita</translation>
@@ -554,11 +568,15 @@
 <translation id="5556459405103347317">I-reload</translation>
 <translation id="556042886152191864">Pindutan</translation>
 <translation id="5580834567471114021">Idagdag sa Listahan ng Babasahin para sa Ibang Pagkakataon?</translation>
+<translation id="5597915316964418992">Buksan ang Grid ng Tab</translation>
 <translation id="560322036295180549">Na-off ng iyong organisasyon</translation>
 <translation id="5614553682702429503">I-save ang password?</translation>
 <translation id="5626245204502895507">Hindi mada-download sa ngayon ang file.</translation>
 <translation id="5631164295104953411">Magdagdag ng Paraan ng Pagbabayad</translation>
+<translation id="5636282538000367086">Alamin kung ano'ng bago sa Chrome</translation>
+<translation id="5652623411397330904">Lalabas dito ang mga produktong sinusubaybayan mo.</translation>
 <translation id="5659593005791499971">Email</translation>
+<translation id="5669335982068190158">Na-sign out ka bilang bahagi ng pag-reset ng iyong iPhone. I-tap ang magpatuloy sa ibaba para mag-sign in.</translation>
 <translation id="5669528293118408608">www</translation>
 <translation id="567881659373499783">Bersyon <ph name="PRODUCT_VERSION" /></translation>
 <translation id="5690398455483874150">{count,plural, =1{Nagpapakita ngayon ng 1 window ng Chrome}one{Nagpapakita ngayon ng {count} window ng Chrome}other{Nagpapakita ngayon ng {count} na window ng Chrome}}</translation>
@@ -569,6 +587,7 @@
 <translation id="5724941645893276623">Para pribadong mag-browse sa web, magdagdag ng bagong tab</translation>
 <translation id="5728700505257787410">Paumanhin, may problema sa pag-sign in sa iyong account.</translation>
 <translation id="5731784586962650619">Mga Password sa Iba Pang App</translation>
+<translation id="5733084997078800044">Tip sa Chrome</translation>
 <translation id="5737974891429562743">Luma na ang mga detalye ng pag-sign in sa account. I-update upang simulan ang pag-sync.</translation>
 <translation id="5738385766833540397">Pamahalaan kung paano mo matatanggap ang mga alerto sa pagbaba ng presyo para sa mga produktong tina-track mo</translation>
 <translation id="5738887413654608789">Nagbibigay-daan ito sa iyo na tumuklas ng mga nauugnay na web page batay sa iyong paligid.</translation>
@@ -582,6 +601,7 @@
 <translation id="5812974770859303494">Idagdag Sa...</translation>
 <translation id="581659025233126501">I-on ang Pag-sync</translation>
 <translation id="5819208479324046259">Pinapamahalaan ng <ph name="MANAGER" />. <ph name="BEGIN_LINK" />Matuto pa<ph name="END_LINK" /></translation>
+<translation id="5833643789537100742">Mag-save ng mga password, paraan ng pagbabayad, at address para i-autofill ng Chrome sa ibang pagkakataon.</translation>
 <translation id="5846482154967366008">Search Engine</translation>
 <translation id="5854790677617711513">Mas matagal sa 30 araw</translation>
 <translation id="5857090052475505287">Bagong Folder</translation>
@@ -597,6 +617,7 @@
 <translation id="5913600720976431809">Mga opsyon para Isalin ang page</translation>
 <translation id="5938160824633642847">Malapit nang mapuno ang iyong device. Magbakante ng espasyo at subukang muli.</translation>
 <translation id="5948291296578561264">Binibigyang-daan ka nito na mag-save ng mga larawan sa iyong library ng larawan.</translation>
+<translation id="5951816930277761335">Ibahagi ang Link</translation>
 <translation id="5955891643922670672">Tinitingnan ang Offline na Bersyon</translation>
 <translation id="5957613098218939406">Higit Pang Mga Opsyon</translation>
 <translation id="5963939892571022323">Hindi makagawa ng link sa highlight.</translation>
@@ -636,6 +657,7 @@
 <translation id="6189413832092199491">Hindi pa nababasa</translation>
 <translation id="6196207969502475924">Paghahanap gamit ang boses</translation>
 <translation id="6202364442240589072">{COUNT,plural, =1{Isara ang {COUNT} Tab}one{Isara ang {COUNT} Tab}other{Isara ang {COUNT} na Tab}}</translation>
+<translation id="6219550825416862075">Maligayang Pagbabalik</translation>
 <translation id="6219688215832490856">Huwag Kailanman I-translate</translation>
 <translation id="6223816392543092032">Kunin ang iyong mga bookmark, history, password, at iba pang setting sa lahat ng device mo.</translation>
 <translation id="6231782223312638214">Iminungkahi</translation>
@@ -723,6 +745,7 @@
 Habang nasa Incognito, hindi magagamit ng mga site ang cookies para makita ang iyong aktibidad sa pag-browse sa iba't ibang site, halimbawa, para mag-personalize ng mga ad.</translation>
 <translation id="6674571176963658787">Para simulan ang pag-sync, ilagay ang iyong passphrase</translation>
 <translation id="667999046851023355">Dokumento</translation>
+<translation id="6684906340059221832">Mga Sinusubaybayang Presyo</translation>
 <translation id="6710079714193676716">Pinapamahalaan ng iyong organisasyon. Posibleng hindi available ang ilang feature. <ph name="BEGIN_LINK" />Matuto pa<ph name="END_LINK" /></translation>
 <translation id="6713747756340119864">Google Apps</translation>
 <translation id="6730682669179532099">Hindi Ma-export ang Mga Password</translation>
@@ -756,6 +779,7 @@
 <translation id="6945221475159498467">Pumili</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="6973630695168034713">Mga Folder</translation>
+<translation id="6975148662438928529">Na-sign out ka sa iyong account na <ph name="USER_NAME" /> bilang bahagi ng pag-reset ng iyong iPad. I-tap ang magpatuloy sa ibaba para mag-sign in.</translation>
 <translation id="6979158407327259162">Google Drive</translation>
 <translation id="6988572888918530647">Pamahalaan ang Iyong Google Account</translation>
 <translation id="6989674195860388998">Lumipat sa Mga Setting…</translation>
@@ -789,12 +813,16 @@
 <translation id="7265758999917665941">Hindi Kailanman Para sa Site na Ito</translation>
 <translation id="7272437679830969316">Hindi ma-verify ang iyong pagkakakilanlan. Hindi nakopya ang password.</translation>
 <translation id="7291368939935408496">Inihahanda ang Mga Password...</translation>
+<translation id="730958329302570991">Magdagdag ng mga password ng site sa Google Password Manager anumang oras nang walang kahirap-hirap.</translation>
 <translation id="7313347584264171202">Makikita mo rito ang iyong mga tab na Incognito</translation>
+<translation id="7315813263062036945">Sa Kaliwang Bahagi sa Itaas, I-tap ang Icon ng Search.</translation>
 <translation id="7336264872878993241"><ph name="PERCENT" /> (na) porsyento ang na-download na</translation>
 <translation id="7340958967809483333">Mga opsyon para sa Discover</translation>
 <translation id="7346909386216857016">Ok, nakuha ko</translation>
 <translation id="734758817008927353">Mga opsyon para Mag-save ng Card</translation>
+<translation id="7351537303876921605">I-tap ang Gumawa ng Link sa Menu ng Konteksto</translation>
 <translation id="7353432112255316844">I-verify na Ikaw Ito</translation>
+<translation id="7356359962760467032">Ihinto ang pagsubaybay sa presyo</translation>
 <translation id="7383797227493018512">Listahan ng Babasahin</translation>
 <translation id="7398893703713203428">Gumawa ng Link</translation>
 <translation id="739941347996872055">Nakaraang Tab</translation>
@@ -815,6 +843,7 @@
 <translation id="750493650310597496">0 ang napili</translation>
 <translation id="7508728395076009983">Para ma-lock ang iyong mga tab na Incognito, ma-set up ang Touch ID, Face ID, o Passcode.</translation>
 <translation id="7514365320538308">I-download</translation>
+<translation id="7531345132340165516">Kasalukuyang Site</translation>
 <translation id="7537586195939242955">Paumahin, hindi ma-install ngayon ang Pass mo sa Passbook.</translation>
 <translation id="7554791636758816595">Bagong Tab</translation>
 <translation id="7561196759112975576">Palagi</translation>
@@ -825,6 +854,7 @@
 <translation id="7638584964844754484">Maling passphrase</translation>
 <translation id="7646263789464975852">Menu → Mga Setting → Pag-check sa Kaligtasan</translation>
 <translation id="7646772052135772216">Hindi gumagana ang pag-sync ng password</translation>
+<translation id="764827086632467055">I-tap ang Default na Browser App</translation>
 <translation id="7649070708921625228">Tulong</translation>
 <translation id="7658239707568436148">Kanselahin</translation>
 <translation id="7671141431838911305">INSTALL</translation>
@@ -847,6 +877,7 @@
 <translation id="784551991304901159">Para makakita ng content, piliin ang I-on mula sa menu</translation>
 <translation id="7853202427316060426">Aktibidad</translation>
 <translation id="7856733331829174190">Hindi Ma-download</translation>
+<translation id="785938070103630874">Buksan ang Mga Password, Paraan ng Pagbabayad, o Address at Higit Pa</translation>
 <translation id="7859704718976024901">History ng Pag-browse</translation>
 <translation id="7884694604461143138">History ng Paghahanap (<ph name="COUNT" /> ang Nakita)</translation>
 <translation id="7887198238286927132">Para protektahan ang iyong privacy, hindi io-autofill ng Chrome ang field na ito.</translation>
@@ -866,6 +897,7 @@
 <translation id="7971521879845308059">I-block ang Mga Pop-up</translation>
 <translation id="797413074872316787">Para mag-sync at mag-personalize sa mga device, i-on ang pag-sync.</translation>
 <translation id="7978018860671536736">3. I-tap ang I-autofill ang Mga Password</translation>
+<translation id="7981908678811807838">Hindi available ang pagsubaybay sa presyo para sa site na ito.</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>
 <translation id="7993619969781047893">Posibleng masira ang mga feature sa ilang site</translation>
@@ -901,11 +933,13 @@
 <translation id="8237382152611443140">Buksan ang Mga Setting ng Pag-autofill ng Password</translation>
 <translation id="8261506727792406068">I-delete</translation>
 <translation id="8271720166617117963">Tanggapin at Mag-sign in</translation>
+<translation id="8278938988428169257">Maglagay ng Salita o Parirala</translation>
 <translation id="8281781826761538115">Default - <ph name="DEFAULT_LOCALE" /></translation>
 <translation id="8281886186245836920">Laktawan</translation>
 <translation id="8283172974887967105">Itakda…</translation>
 <translation id="8299417921174340354">Para gumamit ng mga password, dapat ka munang magtakda ng passcode sa iyong device.</translation>
 <translation id="8299613349954694191">Magbukas ng tab na Incognito para pribadong i-browse ang web.</translation>
+<translation id="8316944564970119719">Ilagay ang Site at Password, at Pagkatapos ay I-save</translation>
 <translation id="8319076807703933069">Bagong Paghahanap</translation>
 <translation id="8323906514956095947">Pindutin nang matagal para sa higit pang opsyon sa tab</translation>
 <translation id="8328777765163860529">Isara Lahat</translation>
@@ -933,6 +967,7 @@
 <translation id="8533670235862049797">Naka-on ang Ligtas na Pag-browse</translation>
 <translation id="8534481786647257214">Kumpleto na ang pag-post sa Google+.</translation>
 <translation id="8548878600947630424">Hanapin sa page...</translation>
+<translation id="8558480467877843976">Magagamit mo na ngayon ang Chrome sa tuwing magbo-browse o magta-tap ka ng mga link sa mga mensahe, dokumento, at iba pang app.</translation>
 <translation id="8588404856427128947">Naka-off</translation>
 <translation id="8590913940444621808">Huwag Magtanong</translation>
 <translation id="8591976964826315682">I-block ang Third-Party na Cookies sa Incognito</translation>
@@ -950,6 +985,8 @@
 <translation id="8721297211384281569">Menu ng Mga Tool</translation>
 <translation id="8725066075913043281">Muling subukan</translation>
 <translation id="8730621377337864115">Tapos na</translation>
+<translation id="8731388423028622182">Na-sign out ka sa iyong account na <ph name="USER_NAME" /> bilang bahagi ng pag-reset ng iyong iPhone. I-tap ang magpatuloy sa ibaba para mag-sign in.</translation>
+<translation id="87371078663613140">I-explore ang mga opsyon sa menu bar</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="8750037785291841318">Makikita mo rito ang iyong mga tab</translation>
 <translation id="8756969031206844760">I-update ang password?</translation>
@@ -967,10 +1004,13 @@
 <translation id="8868471676553493380">{count,plural, =1{{count} Tab}one{{count} Tab}other{{count} na Tab}}</translation>
 <translation id="8870413625673593573">Recently Closed</translation>
 <translation id="8876882697946675716">Panatilihing Naka-sync ang Iyong Mga Device</translation>
+<translation id="8877287418679067891">Gawing Default sa Mga Setting...</translation>
 <translation id="8881801611828450202">Hanapin sa <ph name="SEARCH_ENGINE" /> ang Larawang Ito</translation>
 <translation id="8891935667620843985">Awtomatiko mong mabubuksan ang mga link sa Chrome sa pamamagitan ng pagtatakda nito bilang iyong Default na Browser App.</translation>
 <translation id="8898822736010347272">Nagpapadala ng mga URL ng ilang page na binibisita mo, limitadong impormasyon ng system, at ilang content ng page sa Google, para makatulong na tumuklas ng mga bagong banta at protektahan ang lahat ng nasa web.</translation>
 <translation id="8909135823018751308">Ibahagi…</translation>
+<translation id="8911759861431145525">I-tap ang Idagdag at pagkatapos ay Ilagay ang Iyong Impormasyon</translation>
+<translation id="891658175948553296">Mag-highlight ng Text sa isang Site</translation>
 <translation id="8917490105272468696">Oo, Tinatanggap Ko</translation>
 <translation id="8928133177108699615">Desktop</translation>
 <translation id="8952559610785099500">Magdagdag ng Password</translation>
@@ -1008,6 +1048,7 @@
 <translation id="9203116392574189331">Handoff</translation>
 <translation id="9223358826628549784">Nagpadala ng ulat sa pag-crash.</translation>
 <translation id="952704832371081537">Kanselahin</translation>
+<translation id="953008885340860025">Naka-sign Out ang Chrome</translation>
 <translation id="959066944189734975">Sinusubaybayan mo ang <ph name="CHANNEL_NAME" /></translation>
 <translation id="981498610235328462">Pinapayagan ka lang ng iyong organisasyon na mag-sign in gamit ang ilang partikular na account. Nakatago ang mga account na hindi pinapayagan.</translation>
 <translation id="984509647832111802">Hindi Gumagana ang Pag-sync.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_gu.xtb b/ios/chrome/app/strings/resources/ios_strings_gu.xtb
index 0cc702c..f552636 100644
--- a/ios/chrome/app/strings/resources/ios_strings_gu.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_gu.xtb
@@ -19,6 +19,7 @@
 <translation id="1076421457278169141">કોડ સ્કેન કર્યો</translation>
 <translation id="1076785341346483463">મેનેજ કરેલા એકાઉન્ટ સાથે સિંક કરો</translation>
 <translation id="1084365883616172403">Facebook પોસ્ટ પૂર્ણ કરી છે.</translation>
+<translation id="1085696779717592361">ડિફૉલ્ટ તરીકે Chromeનો ઉપયોગ કરો</translation>
 <translation id="1103523840287552314"><ph name="LANGUAGE" />નો હંમેશાં અનુવાદ કરો</translation>
 <translation id="1104948393051856124">સ્વીકારો અને ચાલુ રાખો</translation>
 <translation id="110724200315609752">ખુલ્લી વિંડો પર સ્વિચ કરો</translation>
@@ -34,6 +35,7 @@
 <translation id="1165039591588034296">ભૂલ</translation>
 <translation id="1172898394251786223">આગલું ફીલ્ડ</translation>
 <translation id="1176932207622159128">ફોટા સાચવી શકતું નથી</translation>
+<translation id="1177414119866731261">Chrome મેનૂ ખોલો</translation>
 <translation id="1181037720776840403">કાઢી નાખો</translation>
 <translation id="1207113853726624428">નવી શોધ</translation>
 <translation id="1209206284964581585">હમણાં માટે છુપાવો</translation>
@@ -110,6 +112,7 @@
 <translation id="1740468249224277719">ઇન્સ્ટૉલ કરવા માટે બે વાર ટૅપ કરો.</translation>
 <translation id="1752547299766512813">પાસવર્ડ સાચવો</translation>
 <translation id="1753905327828125965">સૌથી વધુ જોવાયેલ</translation>
+<translation id="1789803444939621101">આપનું ફરી સ્વાગત છે, <ph name="USER_NAME" /></translation>
 <translation id="1803264062614276815">કાર્ડધારકનું નામ</translation>
 <translation id="1809939268435598390">ફોલ્ડર ડિલીટ કરો</translation>
 <translation id="1813414402673211292">બ્રાઉઝિંગ ડેટા સાફ કરો</translation>
@@ -163,6 +166,7 @@
 <translation id="2302742851632557585">વેબસાઇટ પર પાસવર્ડ બદલો</translation>
 <translation id="2316709634732130529">સૂચવેલ પાસવર્ડનો ઉપયોગ કરો</translation>
 <translation id="2320166752086256636">કીબોર્ડ છુપાવો</translation>
+<translation id="2328842561016935977">પાસવર્ડ પર ટૅપ કરો પછી ઉમેરો પર ટૅપ કરો</translation>
 <translation id="2351097562818989364">તમારા અનુવાદ સેટિંગ રીસેટ કરવામાં આવ્યા છે.</translation>
 <translation id="235789365079050412">Google પ્રાઇવસી પૉલિસી</translation>
 <translation id="2359043044084662842">અનુવાદ કરો</translation>
@@ -221,6 +225,7 @@
 <translation id="2781331604911854368">ચાલુ</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2783054063075604403">લિંક બનાવી શકાતી નથી</translation>
+<translation id="2786701870377699570">સિંક કરેલા તમામ ડિવાઇસ પર ટૅબ શોધો</translation>
 <translation id="2800683595868705743">ટેબ સ્વિચર છોડી દો</translation>
 <translation id="2815198996063984598">2. ડિફૉલ્ટ બ્રાઉઝર ઍપ પર ટૅપ કરો</translation>
 <translation id="2820289420301699633">તમારા વ્યવસ્થાપક Chrome પર નિયંત્રણ ધરાવે છે અને તેનો ડેટા ઍક્સેસ કરી શકે છે</translation>
@@ -244,6 +249,7 @@
 <translation id="2923448633003185837">પેસ્ટ કરો અને જાઓ</translation>
 <translation id="292639812446257861">વાંચ્યા વગરની તરીકે ચિહ્નિત કરો</translation>
 <translation id="2932085390869194046">પાસવર્ડ સૂચવો...</translation>
+<translation id="2932765531295814441">પાસવર્ડ મેન્યુઅલી દાખલ કરો</translation>
 <translation id="2952581218264071393">1. Chrome સેટિંગ ખોલો</translation>
 <translation id="2958718410589002129">પાસવર્ડ</translation>
 <translation id="2961210776189273067">શીર્ષક</translation>
@@ -279,6 +285,7 @@
 <translation id="3181954750937456830">Safe Browsing (તમારું અને તમારા ડિવાઇસનું જોખમી સાઇટથી રક્ષણ કરે છે)</translation>
 <translation id="3184767182050912705"><ph name="BIOMETRIC_AUTHENITCATION_TYPE" /> વડે અનલૉક કરો</translation>
 <translation id="3207960819495026254">બુકમાર્ક કરેલ</translation>
+<translation id="3214379938835224220">તમારા iPadની રીસેટ પ્રક્રિયાને કારણે તમને સાઇન આઉટ કરવામાં આવ્યા હતા. સાઇન ઇન કરવા માટે નીચે ચાલુ રાખો બટન પર ટૅપ કરો.</translation>
 <translation id="3224641773458703735">પાસવર્ડના નિકાસ માટે, તમારે સૌથી પહેલા તમારા ઉપકરણ પર એક પાસકોડ સેટ કરવો આવશ્યક છે.</translation>
 <translation id="3227137524299004712">માઇક્રોફોન</translation>
 <translation id="3240426699337459095">લિંક કૉપિ કરી</translation>
@@ -296,6 +303,7 @@
 <translation id="3329904751041170572">સર્વરથી કનેક્ટ કરી શક્યું નથી.</translation>
 <translation id="3335947283844343239">બંધ કરેલું ટૅબ ફરીથી ખોલો</translation>
 <translation id="3371831930909698441">અનુવાદ ઉપલબ્ધ છે. વિકલ્પો સ્ક્રીનની નીચેની બાજુએ ઉપલબ્ધ રહે છે.</translation>
+<translation id="3377063233124932127">હવે તમારા બુકમાર્ક, પાસવર્ડ અને બીજું ઘણું સૌથી ઉપર રહે છે.</translation>
 <translation id="3393920035788932672">પૉપ-અપ્સ મંજૂર છે</translation>
 <translation id="3399930248910934354">Chrome સેટિંગ ખોલો</translation>
 <translation id="3404744938087714423">સાઇન આઉટ કરવાથી સિંકની સુવિધા બંધ થઈ જાય છે.</translation>
@@ -318,11 +326,13 @@
 <translation id="3519193562722059437">વેબ બ્રાઉઝ કરવા ટેબ ખોલો.</translation>
 <translation id="3527085408025491307">ફોલ્ડર</translation>
 <translation id="3529024052484145543">સુરક્ષિત નથી</translation>
+<translation id="3530206579861815432">તમારા સિંક કરેલા બધા ડિવાઇસ પર ખુલ્લા અને તાજેતરમાં બંધ કરેલા બધા ટૅબને ઝડપથી શોધો.</translation>
 <translation id="3533202363250687977">બધાં છૂપા ટૅબ બંધ કરો</translation>
 <translation id="3533436815740441613">નવું ટૅબ</translation>
 <translation id="3551320343578183772">ટૅબ બંધ કરો</translation>
 <translation id="3581564640715911333">પેજનો અન્ય ભાષાઓમાં અનુવાદ કરવાનું ઑફર કરો</translation>
 <translation id="3588820906588687999">નવા ટેબમાં છબી ખોલો</translation>
+<translation id="3595252146048399851">શું સિંક કરવું, તે તમે <ph name="BEGIN_LINK" />સેટિંગ<ph name="END_LINK" />માં જઈને કોઈપણ સમયે પસંદ કરી શકો છો. Google તમારા ઇતિહાસના આધારે Search અને અન્ય સેવાઓને મનગમતી બનાવી શકે છે.</translation>
 <translation id="3603009562372709545">લિંક URL કૉપિ કરો</translation>
 <translation id="3607167657931203000">સ્વતઃભરણ ડેટા</translation>
 <translation id="3609785682760573515">સમન્વય કરી રહ્યું છે...</translation>
@@ -371,6 +381,7 @@
 <translation id="4018310736049373830">પ્રવૃત્તિને મેનેજ કરો</translation>
 <translation id="4038354071007134711">આ ઉપકરણ પર કોઈ ઍપ્લિકેશન ફાઇલને ખોલી શકતી નથી.</translation>
 <translation id="4042870976416480368">પેજમાં શોધો</translation>
+<translation id="40433179647657191">તમે હાઇલાઇટ કરેલા પેજના ભાગની ડાયરેક્ટ લિંક બનાવો અને શેર કરો.</translation>
 <translation id="4049507953662678203">તમારી પાસે નેટવર્ક કનેક્શન છે તેની ખાતરી કરો અને ફરીથી પ્રયાસ કરો.</translation>
 <translation id="4063300985191096908">ફીડ પર જાઓ</translation>
 <translation id="408404951701638773">શોધ બાર સુધી પહોંચવું હવે વધુ સરળ છે</translation>
@@ -388,11 +399,13 @@
 <translation id="4181841719683918333">ભાષાઓ</translation>
 <translation id="4187450337729239226">પેસ્ટ કરો અને શોધો</translation>
 <translation id="4223967053752765281">તમારી સંસ્થાએ સાઇન ઇન કરવાનું બંધ કર્યું છે. તમે હજુ પણ આ ડિવાઇસ પરના તમારા બુકમાર્ક, ઇતિહાસ, પાસવર્ડ અને અન્ય સેટિંગ જોઈ શકો છો. જો તમે ફેરફારો કરશો, તો તે તમારા એકાઉન્ટ સાથે સિંક કરવામાં આવશે નહીં.</translation>
+<translation id="4232900911558558076">નવા મેનૂ વિશે શોધખોળ કરો</translation>
 <translation id="4233831822770018312">ફેરફાર કરવાની પરવાનગીઓ</translation>
 <translation id="4236584471598725073">કિંમત ટ્રૅક કરી રહ્યાં છીએ</translation>
 <translation id="4237377247299956313"><ph name="BEGIN_BOLD" />ડિફૉલ્ટ બ્રાઉઝર ઍપ<ph name="END_BOLD" /> પર ટૅપ કરો</translation>
 <translation id="424315890655130736">પાસફ્રેઝ દાખલ કરો</translation>
 <translation id="4249955472157341256">નવીનતમ મુજબ સૉર્ટ કરો</translation>
+<translation id="42618743927498729">જો કોઈપણ સાઇટ પર કિંમતમાં ઘટાડો થાય, તો અલર્ટ મેળવો.</translation>
 <translation id="4263576668337963058">પેજ માટે ઉપલબ્ધ ક્રિયાઓ બતાવો</translation>
 <translation id="4267380167363222949">આગલી ટૅબ</translation>
 <translation id="4272631900155121838">QR કોડને સ્કૅન કરવા માટે, સેટિંગમાંથી કૅમેરા ચાલુ કરો</translation>
@@ -535,6 +548,7 @@
 <translation id="5388358297987318779">છબી ખોલો</translation>
 <translation id="5407969256130905701">ફેરફારો કાઢી નાખો</translation>
 <translation id="5416022985862681400">છેલ્લા 7 દિવસ</translation>
+<translation id="5423269318075950257">કિંમત ટ્રૅક કરો</translation>
 <translation id="543338862236136125">પાસવર્ડમાં ફેરફાર કરો</translation>
 <translation id="5433691172869980887">વપરાશકર્તાનામ કૉપિ કર્યું</translation>
 <translation id="5439599923922718668">વારંવાર મુલાકાત લેવાયેલી વેબસાઇટ</translation>
@@ -554,11 +568,15 @@
 <translation id="5556459405103347317">ફરીથી લોડ કરો</translation>
 <translation id="556042886152191864">બટન</translation>
 <translation id="5580834567471114021">પછીથી વાંચવા માટેની વાંચન સૂચિમાં ઉમેરીએ?</translation>
+<translation id="5597915316964418992">ટૅબ ગ્રિડ ખોલો</translation>
 <translation id="560322036295180549">તમારી સંસ્થા દ્વારા આ સુવિધા બંધ કરવામાં આવી છે</translation>
 <translation id="5614553682702429503">પાસવર્ડ સાચવીએ?</translation>
 <translation id="5626245204502895507">ફાઇલ આ સમયે ડાઉનલોડ કરી શકાઈ નથી.</translation>
 <translation id="5631164295104953411">ચુકવણીની પદ્ધતિ ઉમેરો</translation>
+<translation id="5636282538000367086">Chromeમાં નવું શું છે તે શોધો</translation>
+<translation id="5652623411397330904">તમે ટ્રૅક કરો તે પ્રોડક્ટ અહીં બતાવવામાં આવશે.</translation>
 <translation id="5659593005791499971">ઇમેઇલ</translation>
+<translation id="5669335982068190158">તમારા iPhoneની રીસેટ પ્રક્રિયાને કારણે તમને સાઇન આઉટ કરવામાં આવ્યા હતા. સાઇન ઇન કરવા માટે નીચે ચાલુ રાખો બટન પર ટૅપ કરો.</translation>
 <translation id="5669528293118408608">www</translation>
 <translation id="567881659373499783">વર્ઝન <ph name="PRODUCT_VERSION" /></translation>
 <translation id="5690398455483874150">{count,plural, =1{હમણાં 1 Chrome વિન્ડો બતાવવામાં આવી રહી છે}one{હમણાં {count} Chrome વિન્ડો બતાવવામાં આવી રહી છે}other{હમણાં {count} Chrome વિન્ડો બતાવવામાં આવી રહી છે}}</translation>
@@ -569,6 +587,7 @@
 <translation id="5724941645893276623">વેબને ખાનગી રીતે બ્રાઉઝ કરવા માટે, નવી ટૅબ ઉમેરો</translation>
 <translation id="5728700505257787410">માફ કરશો, તમારા એકાઉન્ટમાં સાઇન ઇન કરવામાં સમસ્યા હતી.</translation>
 <translation id="5731784586962650619">અન્ય ઍપમાંના પાસવર્ડ</translation>
+<translation id="5733084997078800044">Chrome વિશેની ટિપ</translation>
 <translation id="5737974891429562743">એકાઉન્ટ સાઇન ઇન વિગતો જૂની થઈ ગઈ છે. સિંકને પ્રારંભ કરવા માટે અપડેટ કરો.</translation>
 <translation id="5738385766833540397">તમે ટ્રૅક કરો છો તે પ્રોડક્ટની કિંમતમાં ઘટાડા વિશેના અલર્ટ મેળવવાની રીત મેનેજ કરો</translation>
 <translation id="5738887413654608789">આ તમને તમારી આસપાસના વાતાવરણના આધારે સુસંગત વેબ પેજને શોધવા દે છે.</translation>
@@ -582,6 +601,7 @@
 <translation id="5812974770859303494">આમાં ઉમેરો...</translation>
 <translation id="581659025233126501">સિંક કરવાનું ચાલુ કરો</translation>
 <translation id="5819208479324046259"><ph name="MANAGER" /> દ્વારા મેનેજ કરવામાં આવેલું બ્રાઉઝર. <ph name="BEGIN_LINK" />વધુ જાણો<ph name="END_LINK" /></translation>
+<translation id="5833643789537100742">Chrome માટે પાસવર્ડ, ચુકવણી પદ્ધતિઓ અને સરનામા સાચવો કે જેથી પછીથી ઑટોમૅટિક રીતે ભરી શકાય.</translation>
 <translation id="5846482154967366008">શોધ એન્જિન</translation>
 <translation id="5854790677617711513">30 દિવસ કરતા જૂનો</translation>
 <translation id="5857090052475505287">નવું ફોલ્ડર</translation>
@@ -597,6 +617,7 @@
 <translation id="5913600720976431809">પેજનો અનુવાદ કરવા માટેના વિકલ્પો</translation>
 <translation id="5938160824633642847">તમારું ઉપકરણ લગભગ ભરાઈ ગયું છે. સ્પેસ બનાવો અને ફરી પ્રયાસ કરો.</translation>
 <translation id="5948291296578561264">આ તમને તમારી ફોટો લાઇબ્રેરીમાં ફોટો સાચવવા દે છે.</translation>
+<translation id="5951816930277761335">લિંક શેર કરો</translation>
 <translation id="5955891643922670672">ઑફલાઇન વર્ઝન જોઈ રહ્યા છે</translation>
 <translation id="5957613098218939406">વધુ વિકલ્પો</translation>
 <translation id="5963939892571022323">હાઇલાઇટ કરેલી ટેક્સ્ટની લિંક બનાવી શકાતી નથી.</translation>
@@ -636,6 +657,7 @@
 <translation id="6189413832092199491">વાંચ્યા વગરની</translation>
 <translation id="6196207969502475924">વૉઇસ શોધ</translation>
 <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT} ટૅબ બંધ કરો}one{{COUNT} ટૅબ બંધ કરો}other{{COUNT} ટૅબ બંધ કરો}}</translation>
+<translation id="6219550825416862075">આપનું ફરી સ્વાગત છે</translation>
 <translation id="6219688215832490856">ક્યારેય અનુવાદ કરશો નહીં</translation>
 <translation id="6223816392543092032">તમારા તમામ ડિવાઇસ પર તમારા બુકમાર્ક, ઇતિહાસ, પાસવર્ડ અને અન્ય સેટિંગ મેળવો.</translation>
 <translation id="6231782223312638214">સૂચવેલા</translation>
@@ -723,6 +745,7 @@
 જ્યારે છૂપા મોડમાં હો, ત્યારે વિભિન્ન સાઇટ પરની તમારી બ્રાઉઝિંગ પ્રવૃત્તિ જોવા માટે, સાઇટ કુકીનો ઉપયોગ કરી શકશે નહીં, ઉદાહરણ તરીકે, જાહેરાતોને વ્યક્તિગત બનાવવા માટે.</translation>
 <translation id="6674571176963658787">સિંક કરવાનું શરૂ કરવા માટે, તમારો પાસફ્રેઝ દાખલ કરો</translation>
 <translation id="667999046851023355">દસ્તાવેજ</translation>
+<translation id="6684906340059221832">ટ્રૅક કરવામાં આવી રહેલી કિંમતો</translation>
 <translation id="6710079714193676716">તમારી સંસ્થા દ્વારા મેનેજ કરવામાં આવે છે. અમુક સુવિધાઓ અનુપલબ્ધ હોઈ શકે છે. <ph name="BEGIN_LINK" />વધુ જાણો<ph name="END_LINK" /></translation>
 <translation id="6713747756340119864">Google Apps</translation>
 <translation id="6730682669179532099">બધા પાસવર્ડ નિકાસ કરી શકાતાં નથી</translation>
@@ -756,6 +779,7 @@
 <translation id="6945221475159498467">પસંદ કરો</translation>
 <translation id="6965382102122355670">બરાબર, સમજાઇ ગયું</translation>
 <translation id="6973630695168034713">ફોલ્ડર્સ</translation>
+<translation id="6975148662438928529">તમારી iPad રીસેટ પ્રક્રિયાના ભાગ તરીકે તમારા એકાઉન્ટ <ph name="USER_NAME" />માંથી તમને સાઇન આઉટ કરવામાં આવ્યા હતા. સાઇન ઇન કરવા માટે નીચે ચાલુ રાખો બટન પર ટૅપ કરો.</translation>
 <translation id="6979158407327259162">Google Drive</translation>
 <translation id="6988572888918530647">તમારા Google એકાઉન્ટને મેનેજ કરો</translation>
 <translation id="6989674195860388998">સેટિંગ પર સ્વિચ કરો…</translation>
@@ -789,12 +813,16 @@
 <translation id="7265758999917665941">આ સાઇટ માટે ક્યારેય નહીં</translation>
 <translation id="7272437679830969316">તમારી ઓળખની ચકાસણી કરી શકાતી નથી. પાસવર્ડ કૉપિ કરેલો નથી.</translation>
 <translation id="7291368939935408496">પાસવર્ડ તૈયાર કરી રહ્યાં છીએ…</translation>
+<translation id="730958329302570991">Google Password Managerમાં કોઈપણ સમયે સાઇટના પાસવર્ડ સરળતાથી ઉમેરો.</translation>
 <translation id="7313347584264171202">તમને તમારી છૂપી ટૅબ અહીં મળશે</translation>
+<translation id="7315813263062036945">ઉપર ડાબી બાજુએ, શોધો આઇકન પર ટૅપ કરો</translation>
 <translation id="7336264872878993241"><ph name="PERCENT" /> ટકા ડાઉનલોડ થઈ</translation>
 <translation id="7340958967809483333">Discover માટેના વિકલ્પો</translation>
 <translation id="7346909386216857016">બરાબર, સમજાઇ ગયું</translation>
 <translation id="734758817008927353">કાર્ડ સાચવવા માટેના વિકલ્પો</translation>
+<translation id="7351537303876921605">સંદર્ભ મેનૂમાં લિંક બનાવો પર ટૅપ કરો</translation>
 <translation id="7353432112255316844">આ તમે જ છો તેની ચકાસણી કરો</translation>
+<translation id="7356359962760467032">કિંમત ટ્રૅક કરવાનું રોકો</translation>
 <translation id="7383797227493018512">વાંચન સૂચિ</translation>
 <translation id="7398893703713203428">લિંક બનાવો</translation>
 <translation id="739941347996872055">પાછલી ટૅબ</translation>
@@ -815,6 +843,7 @@
 <translation id="750493650310597496">0 પસંદ કર્યાં</translation>
 <translation id="7508728395076009983">તમારી છુપી ટૅબને લૉક કરવા માટે, ટચ ID, ચહેરાના ID કે પાસકોડનું સેટઅપ કરો.</translation>
 <translation id="7514365320538308">ડાઉનલોડ કરો</translation>
+<translation id="7531345132340165516">વર્તમાન સાઇટ</translation>
 <translation id="7537586195939242955">માફ કરશો, તમારો પાસ આ સમયે પાસબુક પર ઇન્સ્ટોલ કરી શકાતો નથી.</translation>
 <translation id="7554791636758816595">નવું ટૅબ</translation>
 <translation id="7561196759112975576">હંમેશાં</translation>
@@ -825,6 +854,7 @@
 <translation id="7638584964844754484">ખોટો પાસફ્રેઝ</translation>
 <translation id="7646263789464975852">મેનૂ → સેટિંગ → સલામતી માટે તપાસ</translation>
 <translation id="7646772052135772216">પાસવર્ડ સિંક કાર્ય કરતું નથી</translation>
+<translation id="764827086632467055">ડિફૉલ્ટ બ્રાઉઝર ઍપ પર ટૅપ કરો</translation>
 <translation id="7649070708921625228">સહાય</translation>
 <translation id="7658239707568436148">રદ કરો</translation>
 <translation id="7671141431838911305">ઇન્સ્ટોલ કરો</translation>
@@ -847,6 +877,7 @@
 <translation id="784551991304901159">કન્ટેન્ટ જોવા માટે, મેનૂમાંથી 'ચાલુ કરો' પસંદ કરો</translation>
 <translation id="7853202427316060426">પ્રવૃત્તિ</translation>
 <translation id="7856733331829174190">ડાઉનલોડ ન કરી શક્યાં</translation>
+<translation id="785938070103630874">પાસવર્ડ, ચુકવણી પદ્ધતિઓ અથવા સરનામું વગેરે ખોલો</translation>
 <translation id="7859704718976024901">બ્રાઉઝિંગ ઇતિહાસ</translation>
 <translation id="7884694604461143138">શોધ ઇતિહાસ (<ph name="COUNT" /> મળ્યાં)</translation>
 <translation id="7887198238286927132">તમારી પ્રાઇવસીની સુરક્ષા કરવા માટે, Chrome આ ફીલ્ડ સ્વતઃ નહીં ભરે.</translation>
@@ -866,6 +897,7 @@
 <translation id="7971521879845308059">પૉપ-અપ્સ અવરોધિત કરો</translation>
 <translation id="797413074872316787">એકથી વધુ ડિવાઇસને સિંક અને મનગમતા બનાવવા માટે, સિંકની સુવિધા ચાલુ કરો.</translation>
 <translation id="7978018860671536736">3. પાસવર્ડ માટે ઑટોમૅટિક રીતે ભરવાની સુવિધા પર ટૅપ કરો</translation>
+<translation id="7981908678811807838">આ સાઇટ માટે કિંમત ટ્રૅક કરવાની સુવિધા ઉપલબ્ધ નથી.</translation>
 <translation id="7982789257301363584">નેટવર્ક</translation>
 <translation id="7987685713885608670">વધારાની સલામતી માટે, તમારા પાસવર્ડ Google પાસવર્ડ મેનેજરમાં સાચવવામાં આવે એ પહેલાં એમને તમારા ડિવાઇસમાં એન્ક્રિપ્ટ કરો.</translation>
 <translation id="7993619969781047893">અમુક સાઇટ પરની સુવિધાઓને કદાચ બંધ કરવામાં આવી શકે</translation>
@@ -901,11 +933,13 @@
 <translation id="8237382152611443140">પાસવર્ડ ઑટોમૅટિક રીતે ભરવાની સુવિધાનાં સેટિંગ ખોલો</translation>
 <translation id="8261506727792406068">ડિલીટ કરો</translation>
 <translation id="8271720166617117963">સ્વીકારો અને સાઇન ઇન કરો</translation>
+<translation id="8278938988428169257">શબ્દ અથવા શબ્દસમૂહ દાખલ કરો</translation>
 <translation id="8281781826761538115">ડિફૉલ્ટ - <ph name="DEFAULT_LOCALE" /></translation>
 <translation id="8281886186245836920">છોડો</translation>
 <translation id="8283172974887967105">સેટ કરો…</translation>
 <translation id="8299417921174340354">પાસવર્ડનો ઉપયોગ કરવા માટે, તમારે પહેલા તમારા ડિવાઇસ પર પાસકોડ સેટ કરવો આવશ્યક છે.</translation>
 <translation id="8299613349954694191">ખાનગી રૂપે વેબ બ્રાઉઝ કરવા છૂપી ટૅબ ખોલો.</translation>
+<translation id="8316944564970119719">સાઇટ અને પાસવર્ડ દાખલ કરો, પછી સાચવો</translation>
 <translation id="8319076807703933069">નવી શોધ</translation>
 <translation id="8323906514956095947">ટૅબના વધુ વિકલ્પો માટે, ટચ કરીને થોડીવાર દબાવી રાખો</translation>
 <translation id="8328777765163860529">બધું બંધ કરો</translation>
@@ -933,6 +967,7 @@
 <translation id="8533670235862049797">Safe Browsingની સુવિધા ચાલુ છે</translation>
 <translation id="8534481786647257214">Google+ પોસ્ટ પૂર્ણ કરેલ છે.</translation>
 <translation id="8548878600947630424">પેજમાં શોધો...</translation>
+<translation id="8558480467877843976">હવે તમે કોઈપણ સમયે બ્રાઉઝ કરીને અથવા મેસેજ, દસ્તાવેજો અને અન્ય ઍપમાં લિંક પર ટૅપ કરીને Chromeનો ઉપયોગ કરી શકો છો.</translation>
 <translation id="8588404856427128947">બંધ</translation>
 <translation id="8590913940444621808">ક્યારેય પૂછશો નહીં</translation>
 <translation id="8591976964826315682">ત્રીજા પક્ષની કુકીને છૂપા મોડમાં બ્લૉક કરો</translation>
@@ -950,6 +985,8 @@
 <translation id="8721297211384281569">સાધન મેનૂ</translation>
 <translation id="8725066075913043281">ફરી પ્રયાસ કરો</translation>
 <translation id="8730621377337864115">થઈ ગયું</translation>
+<translation id="8731388423028622182">તમારી iPhone રીસેટ પ્રક્રિયાના ભાગ તરીકે તમારા એકાઉન્ટ <ph name="USER_NAME" />માંથી તમને સાઇન આઉટ કરવામાં આવ્યા હતા. સાઇન ઇન કરવા માટે નીચે ચાલુ રાખો બટન પર ટૅપ કરો.</translation>
+<translation id="87371078663613140">મેનૂ બારના વિકલ્પો વિશે શોધખોળ કરો</translation>
 <translation id="8741995161408053644">તમારા Google એકાઉન્ટમાં <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /> પર બ્રાઉઝિંગ ઇતિહાસના બીજા સ્વરૂપો હોય શકે.</translation>
 <translation id="8750037785291841318">તમને તમારી ટૅબ અહીં મળશે</translation>
 <translation id="8756969031206844760">પાસવર્ડ અપડેટ કરીએ?</translation>
@@ -967,10 +1004,13 @@
 <translation id="8868471676553493380">{count,plural, =1{{count} ટૅબ}one{{count} ટૅબ}other{{count} ટૅબ}}</translation>
 <translation id="8870413625673593573">તાજેતરમાં બંધ કરેલા</translation>
 <translation id="8876882697946675716">તમારા ડિવાઇસને સિંક કરેલું રાખો</translation>
+<translation id="8877287418679067891">સેટિંગમાં ડિફૉલ્ટ બનાવો…</translation>
 <translation id="8881801611828450202"><ph name="SEARCH_ENGINE" /> પર આ છબી શોધો</translation>
 <translation id="8891935667620843985">તમે Chromeને તમારી ડિફૉલ્ટ બ્રાઉઝર ઍપ બનાવીને ઑટોમૅટિક રીતે તેમાં લિંક ખોલી શકો છો.</translation>
 <translation id="8898822736010347272">વેબ પરના નવા જોખમો શોધી કાઢવા અને દરેક વ્યક્તિની સુરક્ષિતતામાં સહાય કરવા માટે, તમે મુલાકાત લેતા અમુક પેજના URLs, સિસ્ટમની મર્યાદિત માહિતી અને પેજનું અમુક કન્ટેન્ટ Googleને મોકલે છે.</translation>
 <translation id="8909135823018751308">શેર કરો…</translation>
+<translation id="8911759861431145525">ઉમેરો પર ટૅપ કરો અને પછી તમારી માહિતી દાખલ કરો</translation>
+<translation id="891658175948553296">સાઇટ પરની ટેક્સ્ટને હાઇલાઇટ કરો</translation>
 <translation id="8917490105272468696">હા, હું સંમત છું</translation>
 <translation id="8928133177108699615">ડેસ્કટૉપ</translation>
 <translation id="8952559610785099500">પાસવર્ડ ઉમેરો</translation>
@@ -1008,6 +1048,7 @@
 <translation id="9203116392574189331">હેન્ડઓફ</translation>
 <translation id="9223358826628549784">ક્રૅશ રિપોર્ટ મોકલ્યો.</translation>
 <translation id="952704832371081537">રદ કરો</translation>
+<translation id="953008885340860025">Chromeમાંથી સાઇન આઉટ થયા</translation>
 <translation id="959066944189734975">તમે <ph name="CHANNEL_NAME" />ને ફૉલો કરી રહ્યાં છો</translation>
 <translation id="981498610235328462">તમારી સંસ્થા માત્ર અમુક ચોક્કસ એકાઉન્ટ વડે તમને સાઇન ઇન કરવાની મંજૂરી આપે છે. મંજૂરી ન હોય એવા એકાઉન્ટને છુપાવવામાં આવે છે.</translation>
 <translation id="984509647832111802">સિંકની સુવિધા કામ કરી રહી નથી.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hu.xtb b/ios/chrome/app/strings/resources/ios_strings_hu.xtb
index 0d7104d..4163c83 100644
--- a/ios/chrome/app/strings/resources/ios_strings_hu.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_hu.xtb
@@ -19,6 +19,7 @@
 <translation id="1076421457278169141">Kód beolvasva</translation>
 <translation id="1076785341346483463">Szinkronizálás felügyelt fiókkal</translation>
 <translation id="1084365883616172403">A Facebook-bejegyzés kész.</translation>
+<translation id="1085696779717592361">A Chrome használata alapértelmezettként</translation>
 <translation id="1103523840287552314"><ph name="LANGUAGE" /> - mindig legyen lefordítva</translation>
 <translation id="1104948393051856124">Elfogadás és folytatás</translation>
 <translation id="110724200315609752">Váltás megnyitott ablakra</translation>
@@ -34,6 +35,7 @@
 <translation id="1165039591588034296">Hiba</translation>
 <translation id="1172898394251786223">Következő mező</translation>
 <translation id="1176932207622159128">A kép nem menthető</translation>
+<translation id="1177414119866731261">Chrome-menü megnyitása</translation>
 <translation id="1181037720776840403">Eltávolítás</translation>
 <translation id="1207113853726624428">Új keresés</translation>
 <translation id="1209206284964581585">Elrejtés ideiglenesen</translation>
@@ -110,6 +112,7 @@
 <translation id="1740468249224277719">A telepítéshez koppintson duplán.</translation>
 <translation id="1752547299766512813">Jelszómentés</translation>
 <translation id="1753905327828125965">Leggyakrabban látogatott</translation>
+<translation id="1789803444939621101">Üdvözöljük ismét, kedves <ph name="USER_NAME" />!</translation>
 <translation id="1803264062614276815">Kártyatulajdonos neve</translation>
 <translation id="1809939268435598390">Mappa törlése</translation>
 <translation id="1813414402673211292">Böngészési adatok törlése</translation>
@@ -163,6 +166,7 @@
 <translation id="2302742851632557585">Jelszómódosítás a webhelyen</translation>
 <translation id="2316709634732130529">Javasolt jelszó használata</translation>
 <translation id="2320166752086256636">Billentyűzet elrejtése</translation>
+<translation id="2328842561016935977">Koppintson a Jelszavak, majd a Hozzáadás elemre</translation>
 <translation id="2351097562818989364">A fordítási beállítások visszaállítása megtörtént.</translation>
 <translation id="235789365079050412">Google Adatvédelmi irányelvek</translation>
 <translation id="2359043044084662842">Fordítás</translation>
@@ -221,6 +225,7 @@
 <translation id="2781331604911854368">Be</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2783054063075604403">Nem sikerült a link létrehozása</translation>
+<translation id="2786701870377699570">Keresés a lapokon a szinkronizált eszközökön</translation>
 <translation id="2800683595868705743">Kilépés a lapváltóból</translation>
 <translation id="2815198996063984598">2. Koppintson az Alapértelmezett böngésző lehetőségre.</translation>
 <translation id="2820289420301699633">A Chrome a rendszergazda irányítása alatt van, aki hozzáférhet a hozzá tartozó adatokhoz is</translation>
@@ -244,6 +249,7 @@
 <translation id="2923448633003185837">Beillesztés és ugrás</translation>
 <translation id="292639812446257861">Megjelölés olvasatlanként</translation>
 <translation id="2932085390869194046">Jelszó ajánlása…</translation>
+<translation id="2932765531295814441">Jelszavak hozzáadása manuálisan</translation>
 <translation id="2952581218264071393">1. Nyissa meg a Chrome beállításait.</translation>
 <translation id="2958718410589002129">Jelszavak</translation>
 <translation id="2961210776189273067">Cím</translation>
@@ -279,6 +285,7 @@
 <translation id="3181954750937456830">Biztonságos Böngészés (megvédi Önt és eszközét a veszélyes webhelyekkel szemben)</translation>
 <translation id="3184767182050912705">Feloldás a következővel: <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation>
 <translation id="3207960819495026254">Könyvjelző rögzítve</translation>
+<translation id="3214379938835224220">Az iPad visszaállítása során a rendszer kijelentkeztette Önt. A bejelentkezéshez koppintson a Folytatás gombra alább.</translation>
 <translation id="3224641773458703735">A jelszavak exportálásához előbb be kell állítania az eszközön a biztonsági kódot.</translation>
 <translation id="3227137524299004712">Mikrofon</translation>
 <translation id="3240426699337459095">Link másolva</translation>
@@ -296,6 +303,7 @@
 <translation id="3329904751041170572">Nem lehet kapcsolódni a szerverhez.</translation>
 <translation id="3335947283844343239">Bezárt lap megnyitása</translation>
 <translation id="3371831930909698441">Rendelkezésre áll fordítás. A beállítások a képernyő alsó részén találhatók.</translation>
+<translation id="3377063233124932127">Mostantól a mentett könyvjelzők, jelszavak és egyebek felül jelennek meg.</translation>
 <translation id="3393920035788932672">Pop-up megengedett</translation>
 <translation id="3399930248910934354">Chrome-beállítások megnyitása</translation>
 <translation id="3404744938087714423">A kijelentkezéssel kikapcsol a szinkronizálás.</translation>
@@ -318,11 +326,13 @@
 <translation id="3519193562722059437">Nyisson meg egy lapot a böngészéshez.</translation>
 <translation id="3527085408025491307">Mappa</translation>
 <translation id="3529024052484145543">Nem biztonságos</translation>
+<translation id="3530206579861815432">Gyorsan megtalálhatja a megnyitott és a nemrégiben bezárt lapokat a szinkronizált eszközökön.</translation>
 <translation id="3533202363250687977">Összes inkognitó lap bezárása</translation>
 <translation id="3533436815740441613">Új lap</translation>
 <translation id="3551320343578183772">Lap bezárása</translation>
 <translation id="3581564640715911333">Más nyelvű oldalak fordításának felajánlása</translation>
 <translation id="3588820906588687999">Kép megnyitása új lapon</translation>
+<translation id="3595252146048399851">A <ph name="BEGIN_LINK" />beállítások<ph name="END_LINK" /> között bármikor módosíthatja a szinkronizálni kívánt elemeket. A Google az Ön előzményei alapján személyre szabhatja a Keresőt és más szolgáltatásokat.</translation>
 <translation id="3603009562372709545">Link URL-jének másolása</translation>
 <translation id="3607167657931203000">Automatikus kitöltés adatai</translation>
 <translation id="3609785682760573515">Szinkronizálás...</translation>
@@ -371,6 +381,7 @@
 <translation id="4018310736049373830">Tevékenység kezelése</translation>
 <translation id="4038354071007134711">Nincs alkalmazás, amellyel megnyitható ez a fájl.</translation>
 <translation id="4042870976416480368">Keresés az oldalon</translation>
+<translation id="40433179647657191">Létrehozhat és megoszthat az oldal kiemelt részére mutató közvetlen linket.</translation>
 <translation id="4049507953662678203">Győződjön meg róla, hogy rendelkezik hálózati kapcsolattal, majd próbálja újra.</translation>
 <translation id="4063300985191096908">Hírcsatorna megnyitása</translation>
 <translation id="408404951701638773">Mostantól egyszerűbb a keresés a keresősávban</translation>
@@ -388,11 +399,13 @@
 <translation id="4181841719683918333">Nyelvek</translation>
 <translation id="4187450337729239226">Beillesztés és keresés</translation>
 <translation id="4223967053752765281">Szervezete kikapcsolta a bejelentkezést. Továbbra is láthatja könyvjelzőit, előzményeit, jelszavait és más beállításait ezen az eszközön. A módosítások azonban nem szinkronizálódnak az Ön fiókjába.</translation>
+<translation id="4232900911558558076">Az új menü felfedezése</translation>
 <translation id="4233831822770018312">Engedélyek módosítása</translation>
 <translation id="4236584471598725073">Ár nyomon követve</translation>
 <translation id="4237377247299956313">Koppintson az <ph name="BEGIN_BOLD" />Alapértelmezett böngésző<ph name="END_BOLD" /> lehetőségre.</translation>
 <translation id="424315890655130736">Összetett jelszó megadása</translation>
 <translation id="4249955472157341256">Rendezés a legutóbbiak szerint</translation>
+<translation id="42618743927498729">Értesítést kaphat, ha valamelyik webhelyen csökken az ár.</translation>
 <translation id="4263576668337963058">Rendelkezésre álló oldalműveletek megjelenítése</translation>
 <translation id="4267380167363222949">Következő lap</translation>
 <translation id="4272631900155121838">QR-kód beolvasásához engedélyezze a kamerát a beállítások között</translation>
@@ -535,6 +548,7 @@
 <translation id="5388358297987318779">Kép megnyitása</translation>
 <translation id="5407969256130905701">Módosítások elvetése</translation>
 <translation id="5416022985862681400">Legutóbbi 7 nap</translation>
+<translation id="5423269318075950257">Ár nyomon követése</translation>
 <translation id="543338862236136125">Jelszó módosítása</translation>
 <translation id="5433691172869980887">Felhasználónév vágólapra másolva</translation>
 <translation id="5439599923922718668">Gyakran látogatott webhelyek</translation>
@@ -554,11 +568,15 @@
 <translation id="5556459405103347317">Újratöltés</translation>
 <translation id="556042886152191864">Gomb</translation>
 <translation id="5580834567471114021">Felveszi az Olvasólistára, hogy később elolvashassa?</translation>
+<translation id="5597915316964418992">Nyissa meg a laprácsot</translation>
 <translation id="560322036295180549">Kikapcsolta a szervezete</translation>
 <translation id="5614553682702429503">Szeretné elmenteni a jelszót?</translation>
 <translation id="5626245204502895507">A fájlt jelenleg nem lehet letölteni.</translation>
 <translation id="5631164295104953411">Fizetési mód hozzáadása</translation>
+<translation id="5636282538000367086">A Chrome újdonságai</translation>
+<translation id="5652623411397330904">Az Ön által nyomon követett termékek itt jelennek meg.</translation>
 <translation id="5659593005791499971">E-mail</translation>
+<translation id="5669335982068190158">Az iPhone visszaállítása során a rendszer kijelentkeztette Önt. A bejelentkezéshez koppintson a Folytatás gombra alább.</translation>
 <translation id="5669528293118408608">www</translation>
 <translation id="567881659373499783">Verzió: <ph name="PRODUCT_VERSION" /></translation>
 <translation id="5690398455483874150">{count,plural, =1{Jelenleg 1 Chrome-ablak jelenik meg}other{Jelenleg {count} Chrome-ablak jelenik meg}}</translation>
@@ -569,6 +587,7 @@
 <translation id="5724941645893276623">Ha privát módon szeretne böngészni az interneten, nyisson meg egy új lapot.</translation>
 <translation id="5728700505257787410">A fiókjába történő bejelentkezés során hiba történt.</translation>
 <translation id="5731784586962650619">Más alkalmazásoknál használt jelszavak</translation>
+<translation id="5733084997078800044">Chrome-tipp</translation>
 <translation id="5737974891429562743">A fiók bejelentkezési adatai elavultak. Frissítsen a szinkronizálás megkezdéséhez.</translation>
 <translation id="5738385766833540397">Kezelheti a nyomon követett termékekkel kapcsolatos árcsökkenési értesítések fogadásának módját</translation>
 <translation id="5738887413654608789">Lehetővé teszi a felhasználó számára, hogy közvetlen környezete alapján fedezzen fel releváns weboldalakat.</translation>
@@ -582,6 +601,7 @@
 <translation id="5812974770859303494">Hozzáadás…</translation>
 <translation id="581659025233126501">Szinkronizálás bekapcsolása</translation>
 <translation id="5819208479324046259">Kezelő: <ph name="MANAGER" />. <ph name="BEGIN_LINK" />További információ<ph name="END_LINK" />.</translation>
+<translation id="5833643789537100742">Mentheti a jelszavakat, a fizetési módokat és címeket a Chrome-ban a későbbi automatikus kitöltéshez.</translation>
 <translation id="5846482154967366008">Keresőmotor</translation>
 <translation id="5854790677617711513">30 napnál régebbi</translation>
 <translation id="5857090052475505287">Új mappa</translation>
@@ -597,6 +617,7 @@
 <translation id="5913600720976431809">Az oldal lefordításával kapcsolatos beállítások</translation>
 <translation id="5938160824633642847">Az eszköz tárhelye majdnem megtelt. Szabadítson fel helyet, és próbálja újra.</translation>
 <translation id="5948291296578561264">Segítségével fotókat menthet a fotótárba.</translation>
+<translation id="5951816930277761335">Ossza meg a linket</translation>
 <translation id="5955891643922670672">Offline verzió</translation>
 <translation id="5957613098218939406">További lehetőségek</translation>
 <translation id="5963939892571022323">Nem lehet linket létrehozni a kiemelt szöveghez.</translation>
@@ -636,6 +657,7 @@
 <translation id="6189413832092199491">Olvasatlan</translation>
 <translation id="6196207969502475924">Hangalapú keresés</translation>
 <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT} lap bezárása}other{{COUNT} lap bezárása}}</translation>
+<translation id="6219550825416862075">Üdvözöljük ismét!</translation>
 <translation id="6219688215832490856">Soha ne fordítsa le</translation>
 <translation id="6223816392543092032">Bármely eszközéről hozzáférhet könyvjelzőihez, előzményeihez, jelszavaihoz és egyéb beállításaihoz.</translation>
 <translation id="6231782223312638214">Javasolt</translation>
@@ -723,6 +745,7 @@
 Inkognitó módban a webhelyek nem használhatnak cookie-kat arra, hogy megfigyeljék más webhelyekre is vonatkozó böngészési tevékenységeit; így például a hirdetések személyre szabásához sem.</translation>
 <translation id="6674571176963658787">A szinkronizálás megkezdéséhez adja meg összetett jelszavát.</translation>
 <translation id="667999046851023355">Dokumentum</translation>
+<translation id="6684906340059221832">Árak nyomon követése</translation>
 <translation id="6710079714193676716">Az Ön szervezete kezeli. Előfordulhat, hogy egyes funkciók nem állnak rendelkezésre. <ph name="BEGIN_LINK" />További információ<ph name="END_LINK" />.</translation>
 <translation id="6713747756340119864">Google Apps</translation>
 <translation id="6730682669179532099">Nem sikerült a jelszavak exportálása</translation>
@@ -756,6 +779,7 @@
 <translation id="6945221475159498467">Kiválasztás</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="6973630695168034713">Mappák</translation>
+<translation id="6975148662438928529">Az iPad visszaállításakor a rendszer kijelentkeztette <ph name="USER_NAME" /> fiókjából. A bejelentkezéshez koppintson a Folytatás gombra alább.</translation>
 <translation id="6979158407327259162">Google Drive</translation>
 <translation id="6988572888918530647">Google-fiók kezelése</translation>
 <translation id="6989674195860388998">Váltás a Beállítások menüben…</translation>
@@ -789,12 +813,16 @@
 <translation id="7265758999917665941">Ezen a webhelyen soha</translation>
 <translation id="7272437679830969316">Nem sikerült ellenőrizni a személyazonosságát. A jelszó nem lett másolva.</translation>
 <translation id="7291368939935408496">Jelszavak előkészítése…</translation>
+<translation id="730958329302570991">Bármikor egyszerűen hozzáadhatja a webhelyekhez tartozó jelszavakat a Google Jelszókezelőhöz.</translation>
 <translation id="7313347584264171202">Itt láthatja majd az inkognitó lapjait</translation>
+<translation id="7315813263062036945">Koppintson a bal felső sarokban lévő Keresés ikonra</translation>
 <translation id="7336264872878993241"><ph name="PERCENT" /> százalék letöltve</translation>
 <translation id="7340958967809483333">A Discover beállításai</translation>
 <translation id="7346909386216857016">Rendben, értem</translation>
 <translation id="734758817008927353">A kártya mentésével kapcsolatos beállítások</translation>
+<translation id="7351537303876921605">Koppintson a Link létrehozása elemre a helyi menüben</translation>
 <translation id="7353432112255316844">Igazolja személyazonosságát</translation>
+<translation id="7356359962760467032">Árkövetés leállítása</translation>
 <translation id="7383797227493018512">Olvasási lista</translation>
 <translation id="7398893703713203428">Link létrehozása</translation>
 <translation id="739941347996872055">Előző lap</translation>
@@ -815,6 +843,7 @@
 <translation id="750493650310597496">0 kiválasztva</translation>
 <translation id="7508728395076009983">Az inkognitó lapok bezárásához állítsa be a következőket: Touch ID, Face ID vagy jelkód.</translation>
 <translation id="7514365320538308">Letöltés</translation>
+<translation id="7531345132340165516">Jelenlegi webhely</translation>
 <translation id="7537586195939242955">Sajnos jelenleg nem lehet létrehozni a kupont a Passbookban.</translation>
 <translation id="7554791636758816595">Új lap</translation>
 <translation id="7561196759112975576">Mindig</translation>
@@ -825,6 +854,7 @@
 <translation id="7638584964844754484">Hibás összetett jelszó</translation>
 <translation id="7646263789464975852">Menü → Beállítások → Biztonsági ellenőrzés</translation>
 <translation id="7646772052135772216">Nem működik a jelszavak szinkronizálása</translation>
+<translation id="764827086632467055">Koppintson az Alapértelmezett böngésző lehetőségre</translation>
 <translation id="7649070708921625228">Súgó</translation>
 <translation id="7658239707568436148">Mégse</translation>
 <translation id="7671141431838911305">TELEPÍTÉS</translation>
@@ -847,6 +877,7 @@
 <translation id="784551991304901159">Tartalmak megjelenítéséhez válassza a Bekapcsolás lehetőséget a menüben</translation>
 <translation id="7853202427316060426">Aktivitás</translation>
 <translation id="7856733331829174190">Nem sikerült letölteni</translation>
+<translation id="785938070103630874">Válassza ki a jelszavakat, a fizetési módokat, a címeket vagy az egyéb lehetőségeket</translation>
 <translation id="7859704718976024901">Böngészési előzmények</translation>
 <translation id="7884694604461143138">Keresési előzmények (<ph name="COUNT" /> elem található)</translation>
 <translation id="7887198238286927132">Adatai védelme érdekében a Chrome nem tölti ki automatikusan ezt a mezőt.</translation>
@@ -866,6 +897,7 @@
 <translation id="7971521879845308059">Pop-upok tiltása</translation>
 <translation id="797413074872316787">Az eszközök közötti szinkronizáláshoz és személyre szabáshoz kapcsolja be a szinkronizálást.</translation>
 <translation id="7978018860671536736">3. Koppintson az AutoFill Passwords (Jelszavak automatikus kitöltése) lehetőségre</translation>
+<translation id="7981908678811807838">Az árkövetés nem áll rendelkezésre ennél a webhelynél.</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>
 <translation id="7993619969781047893">Előfordulhat, hogy bizonyos webhelyek funkciói nem működnek megfelelően</translation>
@@ -901,11 +933,13 @@
 <translation id="8237382152611443140">Nyissa meg az automatikus kitöltés jelszóbeállításait.</translation>
 <translation id="8261506727792406068">Törlés</translation>
 <translation id="8271720166617117963">Elfogadás és bejelentkezés</translation>
+<translation id="8278938988428169257">Írjon be egy szót vagy kifejezést</translation>
 <translation id="8281781826761538115">Alapértelmezett – <ph name="DEFAULT_LOCALE" /></translation>
 <translation id="8281886186245836920">Kihagyás</translation>
 <translation id="8283172974887967105">Beállítás…</translation>
 <translation id="8299417921174340354">A jelszavak használatához előbb be kell állítania az eszközön a biztonsági kódot.</translation>
 <translation id="8299613349954694191">Nyisson meg egy inkognitó lapot a privát böngészéshez.</translation>
+<translation id="8316944564970119719">Adja meg és mentse el a webhelyet és a jelszót</translation>
 <translation id="8319076807703933069">Új keresés</translation>
 <translation id="8323906514956095947">Nyomva tartva további lapbeállításokat láthat</translation>
 <translation id="8328777765163860529">Összes bezárása</translation>
@@ -933,6 +967,7 @@
 <translation id="8533670235862049797">A Biztonságos Böngészés be van kapcsolva</translation>
 <translation id="8534481786647257214">A Google+-bejegyzés kész.</translation>
 <translation id="8548878600947630424">Keresés az oldalon...</translation>
+<translation id="8558480467877843976">Mostantól mindig a Chrome-ot használhatja, amikor üzenetekben, dokumentumokban és más alkalmazásokban linkekre kattint (illetve böngészik köztük).</translation>
 <translation id="8588404856427128947">Kikapcsolva</translation>
 <translation id="8590913940444621808">Ne kérdezzen rá</translation>
 <translation id="8591976964826315682">Harmadik felektől származó cookie-k letiltása Inkognitó módban</translation>
@@ -950,6 +985,8 @@
 <translation id="8721297211384281569">Eszközök menü</translation>
 <translation id="8725066075913043281">Újrapróbálás</translation>
 <translation id="8730621377337864115">Kész</translation>
+<translation id="8731388423028622182">Az iPhone visszaállításakor a rendszer kijelentkeztette <ph name="USER_NAME" /> fiókjából. A bejelentkezéshez koppintson a Folytatás gombra alább.</translation>
+<translation id="87371078663613140">Fedezze fel a menüsorban rendelkezésre álló beállításokat</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="8750037785291841318">Itt láthatja majd a lapjait</translation>
 <translation id="8756969031206844760">Szeretné frissíteni a jelszót?</translation>
@@ -967,10 +1004,13 @@
 <translation id="8868471676553493380">{count,plural, =1{{count} lap}other{{count} lap}}</translation>
 <translation id="8870413625673593573">Mostanában bezárt</translation>
 <translation id="8876882697946675716">Biztosítsa, hogy eszközei szinkronban maradjanak</translation>
+<translation id="8877287418679067891">Beállítás alapértelmezettként a Beállításokban…</translation>
 <translation id="8881801611828450202">Kép keresése a(z) <ph name="SEARCH_ENGINE" /> segítségével</translation>
 <translation id="8891935667620843985">Ha szeretné, hogy automatikusan a Chrome nyissa meg a linkeket, állítsa be alapértelmezett böngészőként.</translation>
 <translation id="8898822736010347272">Egyes felkeresett oldalak URL-jeit, korlátozott rendszer-információkat és bizonyos oldaltartalmakat küld el a Google-nak, hogy könnyebben felfedezhetők legyenek az internetezőkre leselkedő új veszélyek, és meg lehessen védeni a felhasználókat.</translation>
 <translation id="8909135823018751308">Megosztás...</translation>
+<translation id="8911759861431145525">Koppintson a Hozzáadás elemre, majd adja meg az adatait</translation>
+<translation id="891658175948553296">Jelöljön ki szöveget egy webhelyen</translation>
 <translation id="8917490105272468696">Igen, elfogadom</translation>
 <translation id="8928133177108699615">Asztali</translation>
 <translation id="8952559610785099500">Jelszó hozzáadása</translation>
@@ -1008,6 +1048,7 @@
 <translation id="9203116392574189331">Átadás</translation>
 <translation id="9223358826628549784">Hibajelentés elküldve.</translation>
 <translation id="952704832371081537">Mégse</translation>
+<translation id="953008885340860025">Kijelentkezett a Chrome-ból</translation>
 <translation id="959066944189734975">Követi a következőt: <ph name="CHANNEL_NAME" /></translation>
 <translation id="981498610235328462">Szervezete csak bizonyos fiókokkal engedélyezi a bejelentkezést. A nem engedélyezett fiókokat elrejti a rendszer.</translation>
 <translation id="984509647832111802">A szinkronizálás nem működik.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_id.xtb b/ios/chrome/app/strings/resources/ios_strings_id.xtb
index 8bc42a9..e8a9c0a 100644
--- a/ios/chrome/app/strings/resources/ios_strings_id.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_id.xtb
@@ -19,6 +19,7 @@
 <translation id="1076421457278169141">Kode telah dipindai</translation>
 <translation id="1076785341346483463">Sinkronkan dengan Akun Terkelola</translation>
 <translation id="1084365883616172403">Kirim Facebook selesai.</translation>
+<translation id="1085696779717592361">Gunakan Chrome secara Default</translation>
 <translation id="1103523840287552314">Selalu terjemahkan <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Terima &amp; Lanjutkan</translation>
 <translation id="110724200315609752">Alihkan ke Jendela yang Terbuka</translation>
@@ -34,6 +35,7 @@
 <translation id="1165039591588034296">Kesalahan</translation>
 <translation id="1172898394251786223">Bidang berikutnya</translation>
 <translation id="1176932207622159128">Gambar Tak Disimpan</translation>
+<translation id="1177414119866731261">Buka Menu Chrome</translation>
 <translation id="1181037720776840403">Hapus</translation>
 <translation id="1207113853726624428">Penelusuran Baru</translation>
 <translation id="1209206284964581585">Sembunyikan untuk saat ini</translation>
@@ -110,6 +112,7 @@
 <translation id="1740468249224277719">Ketuk dua kali untuk memasang.</translation>
 <translation id="1752547299766512813">Simpan Sandi</translation>
 <translation id="1753905327828125965">Sering Dibuka</translation>
+<translation id="1789803444939621101">Selamat Datang Kembali, <ph name="USER_NAME" /></translation>
 <translation id="1803264062614276815">Nama Pemegang Kartu</translation>
 <translation id="1809939268435598390">Hapus Folder</translation>
 <translation id="1813414402673211292">Hapus Data Penjelajahan</translation>
@@ -163,6 +166,7 @@
 <translation id="2302742851632557585">Ubah Sandi di Situs</translation>
 <translation id="2316709634732130529">Gunakan Sandi yang Disarankan</translation>
 <translation id="2320166752086256636">Sembunyikan keyboard</translation>
+<translation id="2328842561016935977">Ketuk Sandi, lalu Ketuk Tambahkan</translation>
 <translation id="2351097562818989364">Setelan terjemah telah direset.</translation>
 <translation id="235789365079050412">Kebijakan Privasi Google</translation>
 <translation id="2359043044084662842">Terjemahkan</translation>
@@ -221,6 +225,7 @@
 <translation id="2781331604911854368">Aktif</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2783054063075604403">Tidak Dapat Membuat Link</translation>
+<translation id="2786701870377699570">Telusuri Tab di Seluruh Perangkat yang Disinkronkan</translation>
 <translation id="2800683595868705743">Tutup Pengalih Tab</translation>
 <translation id="2815198996063984598">2. Ketuk Aplikasi Browser Default</translation>
 <translation id="2820289420301699633">Administrator dapat mengontrol Chrome dan dapat mengakses datanya</translation>
@@ -244,6 +249,7 @@
 <translation id="2923448633003185837">Tempel dan Buka</translation>
 <translation id="292639812446257861">Tandai Belum Dibaca</translation>
 <translation id="2932085390869194046">Sarankan Sandi...</translation>
+<translation id="2932765531295814441">Tambahkan Sandi secara Manual</translation>
 <translation id="2952581218264071393">1. Buka Setelan Chrome</translation>
 <translation id="2958718410589002129">Sandi</translation>
 <translation id="2961210776189273067">Gelar</translation>
@@ -279,6 +285,7 @@
 <translation id="3181954750937456830">Safe Browsing (melindungi Anda dan perangkat dari situs berbahaya)</translation>
 <translation id="3184767182050912705">Buka Kunci dengan <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation>
 <translation id="3207960819495026254">Diberi bookmark</translation>
+<translation id="3214379938835224220">Anda telah logout sebagai bagian dari proses reset iPad. Ketuk lanjutkan di bawah untuk login.</translation>
 <translation id="3224641773458703735">Untuk mengekspor sandi, Anda harus menyetel kode sandi di perangkat terlebih dahulu.</translation>
 <translation id="3227137524299004712">Mikrofon</translation>
 <translation id="3240426699337459095">Tautan disalin</translation>
@@ -296,6 +303,7 @@
 <translation id="3329904751041170572">Tidak dapat terhubung ke server.</translation>
 <translation id="3335947283844343239">Buka Kembali Tab yang Ditutup</translation>
 <translation id="3371831930909698441">Terjemahan tersedia. Opsi tersedia di dekat bagian bawah layar.</translation>
+<translation id="3377063233124932127">Kini bookmark, sandi, dan data tersimpan lainnya ada di bagian atas.</translation>
 <translation id="3393920035788932672">Pop-up Diizinkan</translation>
 <translation id="3399930248910934354">Buka Setelan Chrome</translation>
 <translation id="3404744938087714423">Logout akan menonaktifkan sinkronisasi.</translation>
@@ -318,11 +326,13 @@
 <translation id="3519193562722059437">Buka tab untuk menjelajahi web.</translation>
 <translation id="3527085408025491307">Folder</translation>
 <translation id="3529024052484145543">Tidak aman</translation>
+<translation id="3530206579861815432">Temukan dengan cepat tab yang terbuka atau yang baru saja ditutup di semua perangkat yang disinkronkan.</translation>
 <translation id="3533202363250687977">Tutup Semua Tab Samaran</translation>
 <translation id="3533436815740441613">Tab Baru</translation>
 <translation id="3551320343578183772">Tutup Tab</translation>
 <translation id="3581564640715911333">Tawarkan penerjemahan halaman ke dalam bahasa lain</translation>
 <translation id="3588820906588687999">Buka Gambar di Tab Baru</translation>
+<translation id="3595252146048399851">Anda dapat memilih jenis data yang akan disinkronkan di <ph name="BEGIN_LINK" />setelan<ph name="END_LINK" /> kapan saja. Google dapat mempersonalisasi Penelusuran dan layanan lainnya berdasarkan histori Anda.</translation>
 <translation id="3603009562372709545">Salin URL Tautan</translation>
 <translation id="3607167657931203000">Data Isi-Otomatis</translation>
 <translation id="3609785682760573515">Menyinkronkan...</translation>
@@ -371,6 +381,7 @@
 <translation id="4018310736049373830">Kelola Aktivitas</translation>
 <translation id="4038354071007134711">Tidak ada aplikasi di perangkat ini yang dapat membuka file.</translation>
 <translation id="4042870976416480368">Cari di Halaman</translation>
+<translation id="40433179647657191">Buat dan bagikan link langsung ke bagian halaman yang telah Anda tandai.</translation>
 <translation id="4049507953662678203">Pastikan Anda memiliki koneksi jaringan dan coba lagi.</translation>
 <translation id="4063300985191096908">Buka Feed</translation>
 <translation id="408404951701638773">Kotak penelusuran kini lebih mudah dijangkau</translation>
@@ -388,11 +399,13 @@
 <translation id="4181841719683918333">Bahasa</translation>
 <translation id="4187450337729239226">Tempel dan Telusuri</translation>
 <translation id="4223967053752765281">Organisasi Anda menonaktifkan login. Anda tetap dapat melihat bookmark, histori, sandi, dan setelan lainnya di perangkat ini. Jika Anda membuat perubahan, perubahan tersebut tidak akan disinkronkan ke akun Anda.</translation>
+<translation id="4232900911558558076">Jelajahi Menu Baru</translation>
 <translation id="4233831822770018312">Edit Izin</translation>
 <translation id="4236584471598725073">Memantau Harga</translation>
 <translation id="4237377247299956313">Ketuk <ph name="BEGIN_BOLD" />Aplikasi Browser Default<ph name="END_BOLD" /></translation>
 <translation id="424315890655130736">Masukkan Frasa Sandi</translation>
 <translation id="4249955472157341256">Urutkan menurut yang Terbaru</translation>
+<translation id="42618743927498729">Dapatkan notifikasi jika ada diskon di situs mana pun.</translation>
 <translation id="4263576668337963058">Tampilkan tindakan halaman yang tersedia</translation>
 <translation id="4267380167363222949">Tab Berikutnya</translation>
 <translation id="4272631900155121838">Untuk memindai kode QR, aktifkan kamera dari setelan</translation>
@@ -535,6 +548,7 @@
 <translation id="5388358297987318779">Buka Gambar</translation>
 <translation id="5407969256130905701">Hapus Perubahan</translation>
 <translation id="5416022985862681400">7 Hari Terakhir</translation>
+<translation id="5423269318075950257">Pantau Harga</translation>
 <translation id="543338862236136125">Edit sandi</translation>
 <translation id="5433691172869980887">Nama pengguna disalin</translation>
 <translation id="5439599923922718668">Sering Dikunjungi</translation>
@@ -554,11 +568,15 @@
 <translation id="5556459405103347317">Muat ulang</translation>
 <translation id="556042886152191864">Tombol</translation>
 <translation id="5580834567471114021">Tambahkan ke Daftar Bacaan untuk Dibaca Nanti?</translation>
+<translation id="5597915316964418992">Buka Petak Tab</translation>
 <translation id="560322036295180549">Dinonaktifkan oleh organisasi Anda</translation>
 <translation id="5614553682702429503">Simpan sandi?</translation>
 <translation id="5626245204502895507">File tidak dapat didownload saat ini.</translation>
 <translation id="5631164295104953411">Tambahkan Metode Pembayaran</translation>
+<translation id="5636282538000367086">Temukan yang baru di Chrome</translation>
+<translation id="5652623411397330904">Produk yang Anda pantau akan muncul di sini.</translation>
 <translation id="5659593005791499971">Email</translation>
+<translation id="5669335982068190158">Anda telah logout sebagai bagian dari proses reset iPhone. Ketuk lanjutkan di bawah untuk login.</translation>
 <translation id="5669528293118408608">www</translation>
 <translation id="567881659373499783">Versi <ph name="PRODUCT_VERSION" /></translation>
 <translation id="5690398455483874150">{count,plural, =1{Saat ini menampilkan 1 jendela Chrome}other{Saat ini menampilkan {count} jendela Chrome}}</translation>
@@ -569,6 +587,7 @@
 <translation id="5724941645893276623">Untuk browsing web secara rahasia, tambahkan tab baru</translation>
 <translation id="5728700505257787410">Maaf, terjadi error saat masuk ke akun Anda.</translation>
 <translation id="5731784586962650619">Sandi di Aplikasi Lain</translation>
+<translation id="5733084997078800044">Tips Chrome</translation>
 <translation id="5737974891429562743">Detail proses masuk akun sudah tidak berlaku lagi. Perbarui untuk memulai sinkronisasi.</translation>
 <translation id="5738385766833540397">Kelola cara Anda menerima notifikasi diskon untuk produk yang dipantau</translation>
 <translation id="5738887413654608789">Hal ini memungkinkan Anda menemukan halaman web yang relevan berdasarkan berbagai hal di sekitar.</translation>
@@ -582,6 +601,7 @@
 <translation id="5812974770859303494">Tambahkan ke ...</translation>
 <translation id="581659025233126501">Aktifkan Sinkronisasi</translation>
 <translation id="5819208479324046259">Dikelola oleh <ph name="MANAGER" />. <ph name="BEGIN_LINK" />Pelajari lebih lanjut<ph name="END_LINK" /></translation>
+<translation id="5833643789537100742">Simpan sandi, metode pembayaran, dan alamat untuk Chrome agar diisi otomatis nantinya.</translation>
 <translation id="5846482154967366008">Mesin Telusur</translation>
 <translation id="5854790677617711513">Lebih dari 30 hari</translation>
 <translation id="5857090052475505287">Folder Baru</translation>
@@ -597,6 +617,7 @@
 <translation id="5913600720976431809">Opsi untuk Menerjemahkan halaman</translation>
 <translation id="5938160824633642847">Perangkat Anda hampir penuh. Kosongkan ruang penyimpanan dan coba lagi.</translation>
 <translation id="5948291296578561264">Tindakan ini memungkinkan Anda menyimpan foto ke koleksi foto.</translation>
+<translation id="5951816930277761335">Bagikan Link</translation>
 <translation id="5955891643922670672">Melihat Versi Offline</translation>
 <translation id="5957613098218939406">Opsi Lainnya</translation>
 <translation id="5963939892571022323">Link ke sorotan tidak dapat dibuat.</translation>
@@ -636,6 +657,7 @@
 <translation id="6189413832092199491">Belum dibaca</translation>
 <translation id="6196207969502475924">Penelusuran Suara</translation>
 <translation id="6202364442240589072">{COUNT,plural, =1{Tutup {COUNT} Tab}other{Tutup {COUNT} Tab}}</translation>
+<translation id="6219550825416862075">Selamat Datang Kembali</translation>
 <translation id="6219688215832490856">Jangan Pernah Terjemahkan</translation>
 <translation id="6223816392543092032">Dapatkan bookmark, histori, sandi, dan setelan lainnya di semua perangkat Anda.</translation>
 <translation id="6231782223312638214">Disarankan</translation>
@@ -723,6 +745,7 @@
 Selama dalam mode Samaran, situs tidak dapat menggunakan cookie untuk melihat aktivitas penjelajahan Anda di berbagai situs, misalnya untuk mempersonalisasi iklan.</translation>
 <translation id="6674571176963658787">Untuk memulai sinkronisasi, masukkan frasa sandi</translation>
 <translation id="667999046851023355">Dokumen</translation>
+<translation id="6684906340059221832">Memantau Harga</translation>
 <translation id="6710079714193676716">Dikelola oleh organisasi Anda. Beberapa fitur mungkin tidak tersedia. <ph name="BEGIN_LINK" />Pelajari lebih lanjut<ph name="END_LINK" /></translation>
 <translation id="6713747756340119864">Google Apps</translation>
 <translation id="6730682669179532099">Tidak Dapat Mengekspor Sandi</translation>
@@ -756,6 +779,7 @@
 <translation id="6945221475159498467">Pilih</translation>
 <translation id="6965382102122355670">Oke</translation>
 <translation id="6973630695168034713">Folder</translation>
+<translation id="6975148662438928529">Anda telah logout dari akun <ph name="USER_NAME" /> sebagai bagian dari proses reset iPad. Ketuk lanjutkan di bawah untuk login.</translation>
 <translation id="6979158407327259162">Google Drive</translation>
 <translation id="6988572888918530647">Kelola Akun Google Anda</translation>
 <translation id="6989674195860388998">Ubah di Setelan …</translation>
@@ -789,12 +813,16 @@
 <translation id="7265758999917665941">Jangan Pernah Untuk Situs Ini</translation>
 <translation id="7272437679830969316">Tidak dapat memverifikasi identitas. Sandi tidak disalin.</translation>
 <translation id="7291368939935408496">Mempersiapkan Sandi…</translation>
+<translation id="730958329302570991">Tambahkan sandi situs dengan mudah ke Pengelola Sandi Google kapan saja.</translation>
 <translation id="7313347584264171202">Tab Samaran Anda akan ditampilkan di sini</translation>
+<translation id="7315813263062036945">Di Kiri Atas, Ketuk Ikon Penelusuran</translation>
 <translation id="7336264872878993241"><ph name="PERCENT" /> persen berhasil didownload</translation>
 <translation id="7340958967809483333">Opsi untuk Discover</translation>
 <translation id="7346909386216857016">Oke, mengerti</translation>
 <translation id="734758817008927353">Opsi untuk Menyimpan Kartu</translation>
+<translation id="7351537303876921605">Ketuk Buat Link di Menu Konteks</translation>
 <translation id="7353432112255316844">Verifikasi Diri Anda</translation>
+<translation id="7356359962760467032">Hentikan pemantauan harga</translation>
 <translation id="7383797227493018512">Daftar Bacaan</translation>
 <translation id="7398893703713203428">Buat Link</translation>
 <translation id="739941347996872055">Tab Sebelumnya</translation>
@@ -815,6 +843,7 @@
 <translation id="750493650310597496">Tak ada yang dipilih</translation>
 <translation id="7508728395076009983">Untuk mengunci tab Samaran, siapkan Touch ID, Face ID, atau Kode Sandi.</translation>
 <translation id="7514365320538308">Download</translation>
+<translation id="7531345132340165516">Situs Ini</translation>
 <translation id="7537586195939242955">Maaf, Pass Anda tidak dapat dipasang ke Passbook saat ini.</translation>
 <translation id="7554791636758816595">Tab Baru</translation>
 <translation id="7561196759112975576">Selalu</translation>
@@ -825,6 +854,7 @@
 <translation id="7638584964844754484">Frasa sandi salah</translation>
 <translation id="7646263789464975852">Menu → Setelan → Pemeriksaan Keamanan</translation>
 <translation id="7646772052135772216">Sinkronisasi sandi tidak berfungsi</translation>
+<translation id="764827086632467055">Ketuk Aplikasi Browser Default</translation>
 <translation id="7649070708921625228">Bantuan</translation>
 <translation id="7658239707568436148">Batal</translation>
 <translation id="7671141431838911305">INSTAL</translation>
@@ -847,6 +877,7 @@
 <translation id="784551991304901159">Untuk melihat konten, pilih Aktifkan dari menu</translation>
 <translation id="7853202427316060426">Aktivitas</translation>
 <translation id="7856733331829174190">Tidak Dapat Mendownload</translation>
+<translation id="785938070103630874">Buka Sandi, Metode Pembayaran, atau Alamat, dan Lainnya</translation>
 <translation id="7859704718976024901">Histori Browsing</translation>
 <translation id="7884694604461143138">Histori Penelusuran (<ph name="COUNT" /> Ditemukan)</translation>
 <translation id="7887198238286927132">Untuk melindungi privasi Anda, Chrome tidak akan melakukan IsiOtomatis pada kolom ini.</translation>
@@ -866,6 +897,7 @@
 <translation id="7971521879845308059">Blokir Pop-up</translation>
 <translation id="797413074872316787">Untuk menyinkronkan dan mempersonalisasi berbagai perangkat, aktifkan sinkronisasi.</translation>
 <translation id="7978018860671536736">3. Ketuk AutoFill Passwords</translation>
+<translation id="7981908678811807838">Pemantauan harga tidak tersedia untuk situs ini.</translation>
 <translation id="7982789257301363584">Jaringan</translation>
 <translation id="7987685713885608670">Untuk keamanan tambahan, enkripsi sandi di perangkat Anda sebelum disimpan ke Pengelola Sandi Google.</translation>
 <translation id="7993619969781047893">Fitur pada beberapa situs mungkin error</translation>
@@ -901,11 +933,13 @@
 <translation id="8237382152611443140">Buka AutoFill Password di Settings</translation>
 <translation id="8261506727792406068">Hapus</translation>
 <translation id="8271720166617117963">Terima dan Login</translation>
+<translation id="8278938988428169257">Masukkan Kata atau Frasa</translation>
 <translation id="8281781826761538115">Default - <ph name="DEFAULT_LOCALE" /></translation>
 <translation id="8281886186245836920">Lewati</translation>
 <translation id="8283172974887967105">Setel …</translation>
 <translation id="8299417921174340354">Untuk menggunakan sandi, Anda harus menyetel kode sandi di perangkat terlebih dahulu.</translation>
 <translation id="8299613349954694191">Buka tab Samaran untuk menjelajahi web secara pribadi.</translation>
+<translation id="8316944564970119719">Masukkan Situs dan Sandi, lalu Simpan</translation>
 <translation id="8319076807703933069">Penelusuran Baru</translation>
 <translation id="8323906514956095947">Sentuh lama untuk opsi tab lainnya</translation>
 <translation id="8328777765163860529">Tutup Semua</translation>
@@ -933,6 +967,7 @@
 <translation id="8533670235862049797">Safe Browsing aktif</translation>
 <translation id="8534481786647257214">Kirim Google+ selesai.</translation>
 <translation id="8548878600947630424">Cari di halaman...</translation>
+<translation id="8558480467877843976">Anda kini dapat menggunakan Chrome kapan saja dengan mengakses atau mengetuk link di pesan, dokumen, dan aplikasi lainnya.</translation>
 <translation id="8588404856427128947">Nonaktif</translation>
 <translation id="8590913940444621808">Jangan Tanya</translation>
 <translation id="8591976964826315682">Blokir Cookie Pihak Ketiga dalam Mode Samaran</translation>
@@ -950,6 +985,8 @@
 <translation id="8721297211384281569">Menu Alat</translation>
 <translation id="8725066075913043281">Coba lagi</translation>
 <translation id="8730621377337864115">Selesai</translation>
+<translation id="8731388423028622182">Anda telah logout dari akun <ph name="USER_NAME" /> sebagai bagian dari proses reset iPhone. Ketuk lanjutkan di bawah untuk login.</translation>
+<translation id="87371078663613140">Jelajahi opsi di panel menu</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="8750037785291841318">Tab Anda akan ditampilkan di sini</translation>
 <translation id="8756969031206844760">Perbarui sandi?</translation>
@@ -967,10 +1004,13 @@
 <translation id="8868471676553493380">{count,plural, =1{{count} Tab}other{{count} Tab}}</translation>
 <translation id="8870413625673593573">Baru Saja Ditutup</translation>
 <translation id="8876882697946675716">Jaga Perangkat Anda Tetap Sinkron</translation>
+<translation id="8877287418679067891">Jadikan Default di Setelan ...</translation>
 <translation id="8881801611828450202">Telusuri Gambar Ini di <ph name="SEARCH_ENGINE" /></translation>
 <translation id="8891935667620843985">Anda dapat membuka link di Chrome secara otomatis dengan menjadikan Chrome sebagai Aplikasi Browser Default Anda.</translation>
 <translation id="8898822736010347272">Kirim URL beberapa halaman yang Anda kunjungi, informasi sistem terbatas, dan beberapa konten halaman ke Google untuk membantu menemukan ancaman baru dan melindungi semua orang di web.</translation>
 <translation id="8909135823018751308">Bagikan...</translation>
+<translation id="8911759861431145525">Ketuk Tambahkan, lalu Masukkan Info Anda</translation>
+<translation id="891658175948553296">Tandai Teks di Situs</translation>
 <translation id="8917490105272468696">Ya, Saya Setuju</translation>
 <translation id="8928133177108699615">Desktop</translation>
 <translation id="8952559610785099500">Tambahkan Sandi</translation>
@@ -1008,6 +1048,7 @@
 <translation id="9203116392574189331">Handoff</translation>
 <translation id="9223358826628549784">Laporan kerusakan terkirim.</translation>
 <translation id="952704832371081537">Batal</translation>
+<translation id="953008885340860025">Chrome Telah Logout</translation>
 <translation id="959066944189734975">Anda mengikuti <ph name="CHANNEL_NAME" /></translation>
 <translation id="981498610235328462">Organisasi mengizinkan Anda login hanya dengan akun tertentu. Akun yang tidak diizinkan akan disembunyikan.</translation>
 <translation id="984509647832111802">Sinkronisasi Tidak Berfungsi.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_kn.xtb b/ios/chrome/app/strings/resources/ios_strings_kn.xtb
index 5168725..a9a673c5 100644
--- a/ios/chrome/app/strings/resources/ios_strings_kn.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_kn.xtb
@@ -19,6 +19,7 @@
 <translation id="1076421457278169141">ಕೋಡ್‌ ಸ್ಕ್ಯಾನ್ ಮಾಡಲಾಗಿದೆ</translation>
 <translation id="1076785341346483463">ನಿರ್ವಹಿಸಲಾದ ಖಾತೆ ಬಳಸಿಕೊಂಡು ಸಿಂಕ್ ಮಾಡಿ</translation>
 <translation id="1084365883616172403">Facebook ಪೋಸ್ಟ್ ಪೂರ್ಣಗೊಂಡಿದೆ.</translation>
+<translation id="1085696779717592361">ಡಿಫಾಲ್ಟ್ ಆಗಿ Chrome ಅನ್ನು ಬಳಸಿ</translation>
 <translation id="1103523840287552314">ಯಾವಾಗಲೂ ಅನುವಾದಿಸಿ <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">ಅಂಗೀಕರಿಸಿ ಮತ್ತು ಮುಂದುವರಿಯಿರಿ</translation>
 <translation id="110724200315609752">ತೆರೆದ ವಿಂಡೋಗೆ ಬದಲಿಸಿ.</translation>
@@ -34,6 +35,7 @@
 <translation id="1165039591588034296">ದೋಷ</translation>
 <translation id="1172898394251786223">ಮುಂದಿನ ಕ್ಷೇತ್ರ</translation>
 <translation id="1176932207622159128">ಚಿತ್ರವನ್ನು ಉಳಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ</translation>
+<translation id="1177414119866731261">Chrome ಮೆನು ತೆರೆಯಿರಿ</translation>
 <translation id="1181037720776840403">ತೆಗೆದುಹಾಕು</translation>
 <translation id="1207113853726624428">ಹೊಸ ಹುಡುಕಾಟ</translation>
 <translation id="1209206284964581585">ಸದ್ಯಕ್ಕೆ ಮರೆಮಾಡಿ</translation>
@@ -110,6 +112,7 @@
 <translation id="1740468249224277719">ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಲು ಡಬಲ್ ಟ್ಯಾಪ್ ಮಾಡಿ.</translation>
 <translation id="1752547299766512813">ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಉಳಿಸಿ</translation>
 <translation id="1753905327828125965">ಅತಿಹೆಚ್ಚು ಬಾರಿ ಸಂದರ್ಶಿಸಿರುವುದು</translation>
+<translation id="1789803444939621101">ಮರಳಿ ಸುಸ್ವಾಗತ, <ph name="USER_NAME" /></translation>
 <translation id="1803264062614276815">ಕಾರ್ಡ್‌ಹೋಲ್ಡರ್ ಹೆಸರು</translation>
 <translation id="1809939268435598390">ಫೋಲ್ಡರ್‌ ಅಳಿಸಿ</translation>
 <translation id="1813414402673211292">ಬ್ರೌಸ್ ಆಗುತ್ತಿರುವ ಡಾಟಾವನ್ನು ತೆರವುಗೊಳಿಸಿ</translation>
@@ -163,6 +166,7 @@
 <translation id="2302742851632557585">ವೆಬ್‌ಸೈಟ್‌ನಲ್ಲಿ ಪಾಸ್‌ವರ್ಡ್ ಬದಲಾಯಿಸಿ</translation>
 <translation id="2316709634732130529">ಸೂಚಿಸಿರುವ ಪಾಸ್‌ವರ್ಡ್ ಬಳಸಿ</translation>
 <translation id="2320166752086256636">ಕೀಬೋರ್ಡ್ ಮರೆಮಾಡಿ</translation>
+<translation id="2328842561016935977">ಪಾಸ್‌ವರ್ಡ್‌ಗಳು ಎಂಬುದನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿ, ನಂತರ ಸೇರಿಸಿ ಎಂಬುದನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿ</translation>
 <translation id="2351097562818989364">ನಿಮ್ಮ ಅನುವಾದ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಮರು ಹೊಂದಿಸಲಾಗಿದೆ.</translation>
 <translation id="235789365079050412">Google ಗೌಪ್ಯತೆ ನೀತಿ</translation>
 <translation id="2359043044084662842">Translate</translation>
@@ -221,6 +225,7 @@
 <translation id="2781331604911854368">ಆನ್‌ ಆಗಿದೆ</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2783054063075604403">ಲಿಂಕ್ ಅನ್ನು ರಚಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ</translation>
+<translation id="2786701870377699570">ಸಿಂಕ್ ಮಾಡಲಾದ ಸಾಧನಗಳಾದ್ಯಂತ ಟ್ಯಾಬ್‌ಗಳನ್ನು ಹುಡುಕಿ</translation>
 <translation id="2800683595868705743">ಟ್ಯಾಬ್ ಸ್ವಿಚರ್ ತ್ಯಜಿಸಿ</translation>
 <translation id="2815198996063984598">2. ಡೀಫಾಲ್ಟ್ ಬ್ರೌಸರ್ ಆ್ಯಪ್ ಟ್ಯಾಪ್ ಮಾಡಿ</translation>
 <translation id="2820289420301699633">ನಿಮ್ಮ ನಿರ್ವಾಹಕರು Chrome ಮೇಲೆ ನಿಯಂತ್ರಣವನ್ನು ಹೊಂದಿದ್ದಾರೆ ಮತ್ತು ಅದರ ಡೇಟಾವನ್ನು ಪ್ರವೇಶಿಸಬಹುದು</translation>
@@ -244,6 +249,7 @@
 <translation id="2923448633003185837">ಅಂಟಿಸಿ ಮತ್ತು ಹೋಗಿ</translation>
 <translation id="292639812446257861">ಓದದಿರುವುದು ಎಂಬಂತೆ ಗುರುತಿಸಿ</translation>
 <translation id="2932085390869194046">ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಸೂಚಿಸಿ...</translation>
+<translation id="2932765531295814441">ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಹಸ್ತಚಾಲಿತವಾಗಿ ಸೇರಿಸಿ</translation>
 <translation id="2952581218264071393">1. Chrome ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ತೆರೆಯಿರಿ</translation>
 <translation id="2958718410589002129">ಪಾಸ್‌ವರ್ಡ್‌ಗಳು</translation>
 <translation id="2961210776189273067">ಶೀರ್ಷಿಕೆ</translation>
@@ -279,6 +285,7 @@
 <translation id="3181954750937456830">ಸುರಕ್ಷಿತ ಬ್ರೌಸಿಂಗ್ (ಅಪಾಯಕಾರಿ ಸೈಟ್‌ಗಳಿಂದ ನಿಮ್ಮನ್ನು ಮತ್ತು ನಿಮ್ಮ ಸಾಧನವನ್ನು ರಕ್ಷಿಸುತ್ತದೆ)</translation>
 <translation id="3184767182050912705"><ph name="BIOMETRIC_AUTHENITCATION_TYPE" /> ಬಳಸಿಕೊಂಡು ಅನ್‌ಲಾಕ್ ಮಾಡಿ</translation>
 <translation id="3207960819495026254">ಬುಕ್‌ಮಾರ್ಕ್‌ ಮಾಡಲಾಗಿದೆ</translation>
+<translation id="3214379938835224220">ನಿಮ್ಮ ಐಪ್ಯಾಡ್ ರೀಸೆಟ್‌ನ ಭಾಗವಾಗಿ ನಿಮ್ಮನ್ನು ಸೈನ್‌ಔಟ್ ಮಾಡಲಾಗಿದೆ. ಸೈನ್ ಇನ್ ಮಾಡಲು, ಕೆಳಗೆ ಮುಂದುವರಿಸಿ ಎಂಬುದನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿ.</translation>
 <translation id="3224641773458703735">ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ರಫ್ತು ಮಾಡಲು, ನೀವು ಮೊದಲು ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ಪಾಸ್‌ಕೋಡ್ ಅನ್ನು ಹೊಂದಿಸಬೇಕು.</translation>
 <translation id="3227137524299004712">ಮೈಕ್ರೋಫೋನ್</translation>
 <translation id="3240426699337459095">ಲಿಂಕ್ ನಕಲಿಸಲಾಗಿದೆ</translation>
@@ -296,6 +303,7 @@
 <translation id="3329904751041170572">ಸರ್ವರ್‌ಗೆ ಸಂಪರ್ಕಹೊಂದಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ.</translation>
 <translation id="3335947283844343239">ಮುಚ್ಚಿದ ಟ್ಯಾಬ್ ಮರುತೆರೆ</translation>
 <translation id="3371831930909698441">ಅನುವಾದ ಲಭ್ಯವಿದೆ. ಪರದೆಯ ಕೆಳಭಾಗದ ಸಮೀಪದಲ್ಲಿ ಆಯ್ಕೆಗಳು ಲಭ್ಯವಿವೆ.</translation>
+<translation id="3377063233124932127">ಇದೀಗ ನೀವು ಉಳಿಸಿದ ಬುಕ್‌ಮಾರ್ಕ್‌ಗಳು, ಪಾಸ್‌ವರ್ಡ್‌ಗಳು ಹಾಗೂ ಇನ್ನಷ್ಟು ವಿಷಯಗಳು ಮೇಲ್ಭಾಗದಲ್ಲಿ ಇರುತ್ತವೆ.</translation>
 <translation id="3393920035788932672">ಪಾಪ್-ಅಪ್‌ಗಳನ್ನು ಅನುಮತಿಸಲಾಗಿದೆ</translation>
 <translation id="3399930248910934354">Chrome ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ತೆರೆಯಿರಿ</translation>
 <translation id="3404744938087714423">ಸೈನ್ ಔಟ್ ಮಾಡುವುದರಿಂದ ಸಿಂಕ್ ಅನ್ನು ಆಫ್ ಮಾಡುತ್ತದೆ</translation>
@@ -318,11 +326,13 @@
 <translation id="3519193562722059437">ವೆಬ್ ಬ್ರೌಸ್ ಮಾಡಲು ಟ್ಯಾಬ್ ತೆರೆಯಿರಿ.</translation>
 <translation id="3527085408025491307">ಫೋಲ್ಡರ್</translation>
 <translation id="3529024052484145543">ಸುರಕ್ಷಿತವಾಗಿಲ್ಲ</translation>
+<translation id="3530206579861815432">ಸಿಂಕ್ ಮಾಡಲಾದ ನಿಮ್ಮ ಸಾಧನಗಳಾದ್ಯಂತ ತೆರೆದಿರುವ ಮತ್ತು ಇತ್ತೀಚೆಗೆ ಮುಚ್ಚಿದ ಟ್ಯಾಬ್‌ಗಳನ್ನು ತ್ವರಿತವಾಗಿ ಹುಡುಕಿ.</translation>
 <translation id="3533202363250687977">ಎಲ್ಲಾ ಅದೃಶ್ಯ ಟ್ಯಾಬ್‌ಗಳನ್ನು ಮುಚ್ಚಿ</translation>
 <translation id="3533436815740441613">ಹೊಸ ಟ್ಯಾಬ್</translation>
 <translation id="3551320343578183772">ಟ್ಯಾಬ್ ಅನ್ನು ಮುಚ್ಚಿ</translation>
 <translation id="3581564640715911333">ಪುಟಗಳನ್ನು ಇತರ ಭಾಷೆಗಳಲ್ಲಿ ಅನುವಾದಿಸಲು ಅವಕಾಶ ನೀಡಿ</translation>
 <translation id="3588820906588687999">ಚಿತ್ರವನ್ನು ಹೊಸ ಟ್ಯಾಬ್‌ನಲ್ಲಿ ತೆರೆಯಿರಿ</translation>
+<translation id="3595252146048399851">ಏನನ್ನು ಸಿಂಕ್ ಮಾಡಬೇಕು ಎಂಬುದನ್ನು <ph name="BEGIN_LINK" />ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ<ph name="END_LINK" /> ಯಾವಾಗ ಬೇಕಾದರೂ ನೀವು ಆಯ್ಕೆ ಮಾಡಬಹುದು. Google, ನಿಮ್ಮ ಇತಿಹಾಸವನ್ನು ಆಧರಿಸಿ, Search ಮತ್ತು ಇತರ ಸೇವೆಗಳನ್ನು ವೈಯಕ್ತೀಕರಿಸಬಹುದು.</translation>
 <translation id="3603009562372709545">ಲಿಂಕ್ URL ನಕಲಿಸಿ</translation>
 <translation id="3607167657931203000">ಸ್ವಯಂಭರ್ತಿ ಡೇಟಾ</translation>
 <translation id="3609785682760573515">ಸಿಂಕ್‌ ಮಾಡಲಾಗುತ್ತಿದೆ...</translation>
@@ -371,6 +381,7 @@
 <translation id="4018310736049373830">ಚಟುವಟಿಕೆ ನಿರ್ವಹಿಸಿ</translation>
 <translation id="4038354071007134711">ಫೈಲ್‌ ತೆರೆಯಬಹುದಾದ ಯಾವುದೇ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಈ ಸಾಧನದಲ್ಲಿ ಇಲ್ಲ.</translation>
 <translation id="4042870976416480368">ಪುಟದಲ್ಲಿ ಹುಡುಕಿ</translation>
+<translation id="40433179647657191">ನೀವು ಹೈಲೈಟ್ ಮಾಡಿರುವ ಪುಟದ ಭಾಗವೊಂದಕ್ಕೆ ನೇರ ಲಿಂಕ್ ಅನ್ನು ರಚಿಸಿ ಮತ್ತು ಹಂಚಿಕೊಳ್ಳಿ.</translation>
 <translation id="4049507953662678203">ನೀವು ನೆಟ್‌‌ವರ್ಕ್ ಸಂಪರ್ಕ ಹೊಂದಿರುವಿರಾ ಎಂಬುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ ಹಾಗೂ ಮತ್ತೊಮ್ಮೆ ಪ್ರಯತ್ನಿಸಿ.</translation>
 <translation id="4063300985191096908">ಫೀಡ್‌ಗೆ ಹೋಗಿ</translation>
 <translation id="408404951701638773">ಇದೀಗ ಹುಡುಕಾಟ ಪಟ್ಟಿಯನ್ನು ತಲುಪುವುದು ಸುಲಭವಾಗಿದೆ</translation>
@@ -388,11 +399,13 @@
 <translation id="4181841719683918333">ಭಾಷೆಗಳು</translation>
 <translation id="4187450337729239226">ಅಂಟಿಸಿ ಮತ್ತು ಹುಡುಕಿ</translation>
 <translation id="4223967053752765281">ನಿಮ್ಮ ಸಂಸ್ಥೆ ಸೈನ್ ಇನ್ ಅನ್ನು ಆಫ್ ಮಾಡಿದೆ. ನೀವು ಈಗಲೂ ಈ ಸಾಧನದಲ್ಲಿ ನಿಮ್ಮ ಎಲ್ಲಾ ಬುಕ್‌ಮಾರ್ಕ್‌ಗಳು, ಇತಿಹಾಸ, ಪಾಸ್‌ವರ್ಡ್‌ಗಳು ಮತ್ತು ಇತರ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ನೋಡಬಹುದು. ನೀವು ಬದಲಾವಣೆಗಳನ್ನು ಮಾಡಿದರೆ, ಅವುಗಳು ನಿಮ್ಮ ಖಾತೆಗೆ ಸಿಂಕ್ ಆಗುವುದಿಲ್ಲ.</translation>
+<translation id="4232900911558558076">ಹೊಸ ಮೆನುವನ್ನು ಎಕ್ಸ್‌ಪ್ಲೋರ್ ಮಾಡಿ</translation>
 <translation id="4233831822770018312">ಅನುಮತಿಗಳನ್ನು ಎಡಿಟ್ ಮಾಡಿ</translation>
 <translation id="4236584471598725073">ದರವನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಲಾಗುತ್ತಿದೆ</translation>
 <translation id="4237377247299956313"><ph name="BEGIN_BOLD" />ಡೀಫಾಲ್ಟ್ ಬ್ರೌಸರ್ ಆ್ಯಪ್<ph name="END_BOLD" /> ಟ್ಯಾಪ್ ಮಾಡಿ</translation>
 <translation id="424315890655130736">ಪಾಸ್‌ಫ್ರೇಸ್ ನಮೂದಿಸಿ</translation>
 <translation id="4249955472157341256">ಇತ್ತೀಚಿನ ಪ್ರಕಾರ ವಿಂಗಡಿಸಿ</translation>
+<translation id="42618743927498729">ಯಾವುದಾದರೂ ಸೈಟ್‌ನಲ್ಲಿ ಬೆಲೆ ಕಡಿಮೆಯಾದಾಗ ಎಚ್ಚರಿಕೆ ಪಡೆಯಿರಿ.</translation>
 <translation id="4263576668337963058">ಲಭ್ಯವಿರುವ ಪುಟದ ಕ್ರಿಯೆಗಳನ್ನು ತೋರಿಸಿ</translation>
 <translation id="4267380167363222949">ಮುಂದಿನ ಟ್ಯಾಬ್</translation>
 <translation id="4272631900155121838">QR ಕೋಡ್ ಅನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡಲು, ಸೆಟ್ಟಿಂಗ್‌ಗಳಿಂದ ಕ್ಯಾಮರಾವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ</translation>
@@ -535,6 +548,7 @@
 <translation id="5388358297987318779">ಚಿತ್ರವನ್ನು ತೆರೆಯಿರಿ</translation>
 <translation id="5407969256130905701">ಬದಲಾವಣೆಗಳನ್ನು ತ್ಯಜಿಸಿ</translation>
 <translation id="5416022985862681400">ಕಳೆದ 7 ದಿನಗಳಲ್ಲಿ</translation>
+<translation id="5423269318075950257">ಬೆಲೆಯನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಿ</translation>
 <translation id="543338862236136125">ಪಾಸ್‌ವರ್ಡ್ ಎಡಿಟ್ ಮಾಡಿ</translation>
 <translation id="5433691172869980887">ಬಳಕೆದಾರರ ಹೆಸರನ್ನು ನಕಲಿಸಲಾಗಿದೆ</translation>
 <translation id="5439599923922718668">ಆಗಾಗ್ಗೆ ಭೇಟಿ ನೀಡಿರುವುದು‌</translation>
@@ -554,11 +568,15 @@
 <translation id="5556459405103347317">ಮರುಲೋಡ್‌</translation>
 <translation id="556042886152191864">ಬಟನ್</translation>
 <translation id="5580834567471114021">ನಂತರಕ್ಕಾಗಿ ಓದುವ ಪಟ್ಟಿಗೆ ಸೇರಿಸಬೇಕೆ?</translation>
+<translation id="5597915316964418992">ಟ್ಯಾಬ್ ಗ್ರಿಡ್ ಅನ್ನು ತೆರೆಯಿರಿ</translation>
 <translation id="560322036295180549">ನಿಮ್ಮ ಸಂಸ್ಥೆಯವರು ಆಫ್ ಮಾಡಿದ್ದಾರೆ.</translation>
 <translation id="5614553682702429503">ಪಾಸ್‌ವರ್ಡ್ ಉಳಿಸುವುದೇ?</translation>
 <translation id="5626245204502895507">ಈ ಸಮಯದಲ್ಲಿ ಫೈಲ್ ಅನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ.</translation>
 <translation id="5631164295104953411">ಪಾವತಿ ವಿಧಾನವನ್ನು ಸೇರಿಸಿ</translation>
+<translation id="5636282538000367086">Chrome ನಲ್ಲಿ ಹೊಸತೇನಿದೆ ಎಂದು ನೋಡಿ</translation>
+<translation id="5652623411397330904">ನೀವು ಟ್ರ್ಯಾಕ್ ಮಾಡುವ ಉತ್ಪನ್ನಗಳು ಇಲ್ಲಿ ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತವೆ.</translation>
 <translation id="5659593005791499971">ಇಮೇಲ್</translation>
+<translation id="5669335982068190158">ನಿಮ್ಮ ಐಫೋನ್ ರೀಸೆಟ್‌ನ ಭಾಗವಾಗಿ ನಿಮ್ಮನ್ನು ಸೈನ್‌ಔಟ್ ಮಾಡಲಾಗಿದೆ. ಸೈನ್ ಇನ್ ಮಾಡಲು, ಕೆಳಗೆ ಮುಂದುವರಿಸಿ ಎಂಬುದನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿ.</translation>
 <translation id="5669528293118408608">www</translation>
 <translation id="567881659373499783">ಆವೃತ್ತಿ <ph name="PRODUCT_VERSION" /></translation>
 <translation id="5690398455483874150">{count,plural, =1{ಈಗ 1 Chrome ವಿಂಡೋವನ್ನು ತೋರಿಸುತ್ತಿದೆ}one{ಈಗ {count} Chrome ವಿಂಡೋಗಳನ್ನು ತೋರಿಸುತ್ತಿದೆ}other{ಈಗ {count} Chrome ವಿಂಡೋಗಳನ್ನು ತೋರಿಸುತ್ತಿದೆ}}</translation>
@@ -569,6 +587,7 @@
 <translation id="5724941645893276623">ವೆಬ್ ಅನ್ನು ಖಾಸಗಿಯಾಗಿ ಬ್ರೌಸ್ ಮಾಡಲು, ಹೊಸ ಟ್ಯಾಬ್ ಒಂದನ್ನು ಸೇರಿಸಿ</translation>
 <translation id="5728700505257787410">ಕ್ಷಮಿಸಿ, ನಿಮ್ಮ ಖಾತೆಗೆ ಸೈನ್ ಇನ್ ಮಾಡುವಲ್ಲಿ ಸಮಸ್ಯೆ ಇದೆ.</translation>
 <translation id="5731784586962650619">ಇತರ ಆ್ಯಪ್‌ಗಳಲ್ಲಿನ ಪಾಸ್‌ವರ್ಡ್‌ಗಳು</translation>
+<translation id="5733084997078800044">Chrome ಸಲಹೆ</translation>
 <translation id="5737974891429562743">ಖಾತೆಯ ಸೈನ್-ಇನ್ ವಿವರಗಳು ಹಳೆಯದಾಗಿವೆ. ಸಿಂಕ್ ಪ್ರಾರಂಭಿಸಲು ಅಪ್‌ಡೇಟ್ ಮಾಡಿ.</translation>
 <translation id="5738385766833540397">ನೀವು ಟ್ರ್ಯಾಕ್ ಮಾಡುವ ಉತ್ಪನ್ನಗಳ ಬೆಲೆ ಕುಸಿತದ ಎಚ್ಚರಿಕೆಗಳನ್ನು ನೀವು ಹೇಗೆ ಸ್ವೀಕರಿಸುತ್ತೀರಿ ಎಂಬುದನ್ನು ನಿರ್ವಹಿಸಿ</translation>
 <translation id="5738887413654608789">ನಿಮ್ಮ ಸುತ್ತಲಿನಲ್ಲಿರುವುದನ್ನು ಆಧರಿಸಿ, ಸಂಬಂಧಿಸಿದ ವೆಬ್ ಪುಟಗಳನ್ನು ಅನ್ವೇಷಿಸಲು ಇದು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.</translation>
@@ -582,6 +601,7 @@
 <translation id="5812974770859303494">ಇದಕ್ಕೆ ಸೇರಿಸಿ...</translation>
 <translation id="581659025233126501">ಸಿಂಕ್ ಆನ್ ಮಾಡಿ</translation>
 <translation id="5819208479324046259"><ph name="MANAGER" /> ಮೂಲಕ ನಿರ್ವಹಿಸಲಾಗುತ್ತಿದೆ. <ph name="BEGIN_LINK" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="END_LINK" /></translation>
+<translation id="5833643789537100742">ಆನಂತರ Chrome ಸ್ವಯಂಭರ್ತಿ ಮಾಡುವುದಕ್ಕಾಗಿ, ಪಾಸ್‌ವರ್ಡ್‌ಗಳು, ಪಾವತಿ ವಿಧಾನಗಳು ಮತ್ತು ವಿಳಾಸಗಳನ್ನು ಉಳಿಸಿ.</translation>
 <translation id="5846482154967366008">ಹುಡುಕಾಟ ಇಂಜಿನ್</translation>
 <translation id="5854790677617711513">30 ದಿನಗಳಿಗಿಂತ ಹಳೆಯದು</translation>
 <translation id="5857090052475505287">ಹೊಸ ಫೋಲ್ಡರ್</translation>
@@ -597,6 +617,7 @@
 <translation id="5913600720976431809">ಪುಟವನ್ನು ಅನುವಾದಿಸಲು ಆಯ್ಕೆಗಳು</translation>
 <translation id="5938160824633642847">ನಿಮ್ಮ ಸಾಧನ ಬಹುತೇಕ ಭರ್ತಿಯಾಗಿದೆ. ಸ್ಥಳಾವಕಾಶ ಮುಕ್ತಗೊಳಿಸಿ, ಪುನಃ ಪ್ರಯತ್ನಿಸಿ.</translation>
 <translation id="5948291296578561264">ನಿಮ್ಮ ಫೋಟೋ ಲೈಬ್ರರಿಗೆ ಫೋಟೋಗಳನ್ನು ಉಳಿಸಲು ಇದು ನಿಮ್ಮನ್ನು ಅನುಮತಿಸುತ್ತದೆ.</translation>
+<translation id="5951816930277761335">ಲಿಂಕ್ ಹಂಚಿಕೊಳ್ಳಿ</translation>
 <translation id="5955891643922670672">ಆಫ್‌ಲೈನ್ ಆವೃತ್ತಿ ಅನ್ನು ವೀಕ್ಷಿಸಲಾಗುತ್ತಿದೆ</translation>
 <translation id="5957613098218939406">ಇನ್ನಷ್ಟು ಆಯ್ಕೆಗಳು</translation>
 <translation id="5963939892571022323">ಹೈಲೈಟ್ ಮಾಡುವುದಕ್ಕಾಗಿ ಲಿಂಕ್ ಅನ್ನು ರಚಿಸಲು ಸಾದ್ಯವಿಲ್ಲ.</translation>
@@ -636,6 +657,7 @@
 <translation id="6189413832092199491">ಓದದಿರುವುದು</translation>
 <translation id="6196207969502475924">ಧ್ವನಿ ಹುಡುಕಾಟ</translation>
 <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT} ಟ್ಯಾಬ್ ಅನ್ನು ಮುಚ್ಚಿರಿ}one{{COUNT} ಟ್ಯಾಬ್‌ಗಳನ್ನು ಮುಚ್ಚಿರಿ}other{{COUNT} ಟ್ಯಾಬ್‌ಗಳನ್ನು ಮುಚ್ಚಿರಿ}}</translation>
+<translation id="6219550825416862075">ಮರಳಿ ಸುಸ್ವಾಗತ</translation>
 <translation id="6219688215832490856">ಎಂದಿಗೂ ಅನುವಾದಿಸಬೇಡಿ</translation>
 <translation id="6223816392543092032">ನಿಮ್ಮ ಎಲ್ಲಾ ಸಾಧನಗಳಲ್ಲಿ ನಿಮ್ಮದೇ ಆದ ಬುಕ್‌ಮಾರ್ಕ್‌‌ಗಳು, ಇತಿಹಾಸ, ಪಾಸ್‌ವರ್ಡ್‌ಗಳು ಹಾಗೂ ಇತರ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಪಡೆಯಿರಿ.</translation>
 <translation id="6231782223312638214">ಸಲಹೆ ಮಾಡಿರುವುದು</translation>
@@ -723,6 +745,7 @@
 ಅಜ್ಞಾತ ಮೋಡ್‌ನಲ್ಲಿ ಇರುವಾಗ, ಬೇರೆಬೇರೆ ಸೈಟ್‌ಗಳಾದ್ಯಂತ ನಿಮ್ಮ ಬ್ರೌಸಿಂಗ್ ಚಟುವಟಿಕೆಯನ್ನು ನೋಡಲು, ಉದಾಹರಣೆಗೆ, ಜಾಹೀರಾತುಗಳನ್ನು ವೈಯಕ್ತೀಕರಿಸುವುದಕ್ಕಾಗಿ ಕುಕೀಗಳನ್ನು ಬಳಸಲು ಸೈಟ್‌ಗಳಿಗೆ ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ.</translation>
 <translation id="6674571176963658787">ಸಿಂಕ್ ಪ್ರಾರಂಭಿಸಲು, ನಿಮ್ಮ ಪಾಸ್‌ಫ್ರೇಸ್ ಅನ್ನು ನಮೂದಿಸಿ</translation>
 <translation id="667999046851023355">ಡಾಕ್ಯುಮೆಂಟ್</translation>
+<translation id="6684906340059221832">ಬೆಲೆಗಳನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಲಾಗುತ್ತಿದೆ</translation>
 <translation id="6710079714193676716">ನಿಮ್ಮ ಸಂಸ್ಥೆಯ ಮೂಲಕ ನಿರ್ವಹಿಸಲಾಗುತ್ತದೆ. ಕೆಲವು ವೈಶಿಷ್ಟ್ಯಗಳು ಲಭ್ಯವಿಲ್ಲದಿರಬಹುದು. <ph name="BEGIN_LINK" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="END_LINK" /></translation>
 <translation id="6713747756340119864">Google Apps</translation>
 <translation id="6730682669179532099">ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಎಕ್ಸ್‌ಪೋರ್ಟ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ</translation>
@@ -756,6 +779,7 @@
 <translation id="6945221475159498467">ಆಯ್ಕೆಮಾಡಿ</translation>
 <translation id="6965382102122355670">ಸರಿ</translation>
 <translation id="6973630695168034713">ಫೋಲ್ಡರ್‌ಗಳು</translation>
+<translation id="6975148662438928529">ನಿಮ್ಮ ಐಪ್ಯಾಡ್ ರೀಸೆಟ್‌ನ ಭಾಗವಾಗಿ ನಿಮ್ಮ ಖಾತೆ <ph name="USER_NAME" /> ನಿಂದ ನಿಮ್ಮನ್ನು ಸೈನ್‌ಔಟ್ ಮಾಡಲಾಗಿದೆ. ಸೈನ್ ಇನ್ ಮಾಡಲು, ಕೆಳಗೆ ಮುಂದುವರಿಸಿ ಎಂಬುದನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿ.</translation>
 <translation id="6979158407327259162">Google Drive</translation>
 <translation id="6988572888918530647">ನಿಮ್ಮ Google ಖಾತೆಯನ್ನು ನಿರ್ವಹಿಸಿ</translation>
 <translation id="6989674195860388998">ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಬದಲಿಸಿ…</translation>
@@ -789,12 +813,16 @@
 <translation id="7265758999917665941">ಈ ಸೈಟ್‌ಗೆ ಎಂದಿಗೂ ಬೇಡ</translation>
 <translation id="7272437679830969316">ನಿಮ್ಮ ಗುರುತನ್ನು ಪರಿಶೀಲಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ಪಾಸ್‌ವರ್ಡ್‌ ಅನ್ನು ನಕಲಿಸಲಾಗಿಲ್ಲ.</translation>
 <translation id="7291368939935408496">ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಸಿದ್ಧಪಡಿಸಲಾಗುತ್ತಿದೆ...</translation>
+<translation id="730958329302570991">ಸೈಟ್ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಯಾವಾಗ ಬೇಕಾದರೂ Google Password Manager ನಲ್ಲಿ ಸುಲಭವಾಗಿ ಸೇರಿಸಿ.</translation>
 <translation id="7313347584264171202">ನಿಮ್ಮ ಅಜ್ಞಾತ ಟ್ಯಾಬ್‌ಗಳನ್ನು ಇಲ್ಲಿ ಕಾಣಬಹುದು</translation>
+<translation id="7315813263062036945">ಮೇಲೆ ಎಡಬದಿಯಲ್ಲಿ, Search ಐಕಾನ್ ಅನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿ</translation>
 <translation id="7336264872878993241"><ph name="PERCENT" /> ಪ್ರತಿಶತ ಡೌನ್‌ಲೋಡ್‌ ಮಾಡಲಾಗಿದೆ</translation>
 <translation id="7340958967809483333">Discover ಗಾಗಿ ಆಯ್ಕೆಗಳು</translation>
 <translation id="7346909386216857016">ಸರಿ, ಅರ್ಥವಾಯಿತು</translation>
 <translation id="734758817008927353">ಕಾರ್ಡ್ ಅನ್ನು ಉಳಿಸಲು ಆಯ್ಕೆಗಳು</translation>
+<translation id="7351537303876921605">ಸಂದರ್ಭದ ಮೆನುವಿನಲ್ಲಿ ಲಿಂಕ್ ರಚಿಸಿ ಎಂಬುದನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿ</translation>
 <translation id="7353432112255316844">ಇದು ನೀವೇ ಎಂಬುದನ್ನು ದೃಢೀಕರಿಸಿ</translation>
+<translation id="7356359962760467032">ಬೆಲೆ ಟ್ರ್ಯಾಕ್ ಮಾಡುವುದನ್ನು ನಿಲ್ಲಿಸಿ</translation>
 <translation id="7383797227493018512">ಓದುವ ಪಟ್ಟಿ</translation>
 <translation id="7398893703713203428">ಲಿಂಕ್ ರಚಿಸಿ</translation>
 <translation id="739941347996872055">ಹಿಂದಿನ ಟ್ಯಾಬ್</translation>
@@ -815,6 +843,7 @@
 <translation id="750493650310597496">0 ಆಯ್ಕೆ ಮಾಡಲಾಗಿದೆ</translation>
 <translation id="7508728395076009983">ನಿಮ್ಮ ಅಜ್ಞಾತ ಟ್ಯಾಬ್‌ಗಳನ್ನು ಲಾಕ್ ಮಾಡಲು, Touch ID, Face ID ಅಥವಾ ಪಾಸ್‌ಕೋಡ್ ಅನ್ನು ಸೆಟಪ್ ಮಾಡಿ.</translation>
 <translation id="7514365320538308">ಡೌನ್‌ಲೋಡ್</translation>
+<translation id="7531345132340165516">ಪ್ರಸ್ತುತ ಸೈಟ್</translation>
 <translation id="7537586195939242955">ಕ್ಷಮಿಸಿ, ಈ ಸಮಯದಲ್ಲಿ ನಿಮ್ಮ ಪಾಸ್ ಅನ್ನು ಪಾಸ್‌ಬುಕ್‌ನಲ್ಲಿ ಸ್ಥಾಪಿಸಲಾಗುವುದಿಲ್ಲ.</translation>
 <translation id="7554791636758816595">ಹೊಸ ಟ್ಯಾಬ್</translation>
 <translation id="7561196759112975576">ಯಾವಾಗಲೂ</translation>
@@ -825,6 +854,7 @@
 <translation id="7638584964844754484">ತಪ್ಪಾದ ಪಾಸ್‌ಫ್ರೇಸ್</translation>
 <translation id="7646263789464975852">ಮೆನು → ಸೆಟ್ಟಿಂಗ್‌ಗಳು → ಸುರಕ್ಷತೆಯ ಪರಿಶೀಲನೆ</translation>
 <translation id="7646772052135772216">ಪಾಸ್‌ವರ್ಡ್ ಸಿಂಕ್ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿಲ್ಲ</translation>
+<translation id="764827086632467055">ಡೀಫಾಲ್ಟ್ ಬ್ರೌಸರ್ ಆ್ಯಪ್ ಟ್ಯಾಪ್ ಮಾಡಿ</translation>
 <translation id="7649070708921625228">ಸಹಾಯ</translation>
 <translation id="7658239707568436148">ರದ್ದುಮಾಡಿ</translation>
 <translation id="7671141431838911305">ಇನ್‌ಸ್ಟಾಲ್</translation>
@@ -847,6 +877,7 @@
 <translation id="784551991304901159">ವಿಷಯವನ್ನು ನೋಡಲು, ಮೆನುವಿನಿಂದ 'ಆನ್ ಮಾಡಿ' ಆಯ್ಕೆಮಾಡಿ</translation>
 <translation id="7853202427316060426">ಚಟುವಟಿಕೆ</translation>
 <translation id="7856733331829174190">ಡೌನ್‌ಲೋಡ್‌ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ</translation>
+<translation id="785938070103630874">ಪಾಸ್‌ವರ್ಡ್‌ಗಳು, ಪಾವತಿ ವಿಧಾನಗಳು ಅಥವಾ ವಿಳಾಸ ಮತ್ತು ಇನ್ನಷ್ಟನ್ನು ತೆರೆಯಿರಿ</translation>
 <translation id="7859704718976024901">ಬ್ರೌಸಿಂಗ್ ಇತಿಹಾಸ</translation>
 <translation id="7884694604461143138">ಹುಡುಕಾಟದ ಇತಿಹಾಸ (<ph name="COUNT" /> ಪತ್ತೆಯಾಗಿದೆ)</translation>
 <translation id="7887198238286927132">ನಿಮ್ಮ ಗೌಪ್ಯತೆಯನ್ನು ರಕ್ಷಿಸಲು, Chrome ಈ ಫೀಲ್ಡ್ ಅನ್ನು ಸ್ವಯಂ ಭರ್ತಿ ಮಾಡುವುದಿಲ್ಲ.</translation>
@@ -866,6 +897,7 @@
 <translation id="7971521879845308059">ಪಾಪ್-ಅಪ್‌ಗಳನ್ನು ನಿರ್ಬಂಧಿಸಿ</translation>
 <translation id="797413074872316787">ಸಾಧನಗಳಾದ್ಯಂತ ಸಿಂಕ್ ಮಾಡಲು ಮತ್ತು ವೈಯಕ್ತೀಕರಿಸಲು, ಸಿಂಕ್ ಆನ್ ಮಾಡಿ.</translation>
 <translation id="7978018860671536736">3. ಸ್ವಯಂ ಭರ್ತಿ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿ</translation>
+<translation id="7981908678811807838">ಈ ಸೈಟ್‌ಗಾಗಿ ಬೆಲೆ ಟ್ರ್ಯಾಕಿಂಗ್ ಲಭ್ಯವಿಲ್ಲ.</translation>
 <translation id="7982789257301363584">ನೆಟ್‌ವರ್ಕ್</translation>
 <translation id="7987685713885608670">ಹೆಚ್ಚಿನ ಸುರಕ್ಷತೆಗಾಗಿ, ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು Google ಪಾಸ್‌ವರ್ಡ್ ನಿರ್ವಾಹಕದಲ್ಲಿ ಉಳಿಸುವ ಮೊದಲು ಅವುಗಳನ್ನು ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ಎನ್‌ಕ್ರಿಪ್ಟ್ ಮಾಡಿ.</translation>
 <translation id="7993619969781047893">ಕೆಲವು ಸೈಟ್‌ಗಳಲ್ಲಿನ ಫೀಚರ್‌ಗಳು ಕಾರ್ಯನಿರ್ವಹಿಸುವುದನ್ನು ನಿಲ್ಲಿಸಬಹುದು</translation>
@@ -901,11 +933,13 @@
 <translation id="8237382152611443140">ಸ್ವಯಂ ಭರ್ತಿ ಪಾಸ್‌ವರ್ಡ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ತೆರೆಯಿರಿ</translation>
 <translation id="8261506727792406068">ಅಳಿಸಿ</translation>
 <translation id="8271720166617117963">ಸಮ್ಮತಿಸಿ ಮತ್ತು ಸೈನ್‌ ಇನ್‌ ಮಾಡಿ</translation>
+<translation id="8278938988428169257">ಒಂದು ಪದ ಅಥವಾ ಪದಗುಚ್ಛವನ್ನು ನಮೂದಿಸಿ</translation>
 <translation id="8281781826761538115">ಡಿಫಾಲ್ಟ್ - <ph name="DEFAULT_LOCALE" /></translation>
 <translation id="8281886186245836920">ಸ್ಕಿಪ್‌</translation>
 <translation id="8283172974887967105">ಹೊಂದಿಸಿ…</translation>
 <translation id="8299417921174340354">ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಬಳಸಲು, ನೀವು ಮೊದಲು ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ಪಾಸ್‌ಕೋಡ್ ಅನ್ನು ಹೊಂದಿಸಬೇಕು.</translation>
 <translation id="8299613349954694191">ವೆಬ್ ಅನ್ನು ಖಾಸಗಿಯಾಗಿ ಬ್ರೌಸ್ ಮಾಡಲು ಅಜ್ಞಾತ ಟ್ಯಾಬ್ ತೆರೆಯಿರಿ.</translation>
+<translation id="8316944564970119719">ಸೈಟ್ ಮತ್ತು ಪಾಸ್‌ವರ್ಡ್ ನಮೂದಿಸಿ, ನಂತರ ಉಳಿಸಿ</translation>
 <translation id="8319076807703933069">ಹೊಸ ಹುಡುಕಾಟ</translation>
 <translation id="8323906514956095947">ಹೆಚ್ಚಿನ ಟ್ಯಾಬ್ ಆಯ್ಕೆಗಳಿಗಾಗಿ ಬಟನ್ ಅನ್ನು ಸ್ಪರ್ಶಿಸಿ ಮತ್ತು ಹೋಲ್ಡ್‌ ಮಾಡಿ</translation>
 <translation id="8328777765163860529">ಎಲ್ಲವನ್ನು ಮುಚ್ಚಿರಿ</translation>
@@ -933,6 +967,7 @@
 <translation id="8533670235862049797">ಸುರಕ್ಷಿತ ಬ್ರೌಸಿಂಗ್ ಆನ್ ಆಗಿದೆ</translation>
 <translation id="8534481786647257214">Google+ ಪೋಸ್ಟ್ ಪೂರ್ಣಗೊಂಡಿದೆ.</translation>
 <translation id="8548878600947630424">ಪುಟದಲ್ಲಿ ಹುಡುಕಿ...</translation>
+<translation id="8558480467877843976">ಇದೀಗ ನೀವು ಸಂದೇಶಗಳು, ಡಾಕ್ಯುಮೆಂಟ್‌ಗಳು ಮತ್ತು ಇತರ ಆ್ಯಪ್‌ಗಳಲ್ಲಿ ಲಿಂಕ್‌ಗಳನ್ನು ಬ್ರೌಸ್ ಮಾಡಿದಾಗ ಅಥವಾ ಟ್ಯಾಪ್ ಮಾಡಿದಾಗ, ಯಾವಾಗ ಬೇಕಾದರೂ Chrome ಅನ್ನು ಬಳಸಬಹುದು.</translation>
 <translation id="8588404856427128947">ಆಫ್</translation>
 <translation id="8590913940444621808">ಎಂದಿಗೂ ಕೇಳಬೇಡಿ</translation>
 <translation id="8591976964826315682">ಅದೃಶ್ಯ ಮೋಡ್‌ನಲ್ಲಿ ಥರ್ಡ್ ಪಾರ್ಟಿ ಕುಕೀಗಳನ್ನು ನಿರ್ಬಂಧಿಸಿ</translation>
@@ -950,6 +985,8 @@
 <translation id="8721297211384281569">ಪರಿಕರಗಳ ಮೆನು</translation>
 <translation id="8725066075913043281">ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ</translation>
 <translation id="8730621377337864115">ಮುಗಿದಿದೆ</translation>
+<translation id="8731388423028622182">ನಿಮ್ಮ ಐಫೋನ್ ರೀಸೆಟ್‌ನ ಭಾಗವಾಗಿ ನಿಮ್ಮ ಖಾತೆ <ph name="USER_NAME" /> ನಿಂದ ನಿಮ್ಮನ್ನು ಸೈನ್‌ಔಟ್ ಮಾಡಲಾಗಿದೆ. ಸೈನ್ ಇನ್ ಮಾಡಲು, ಕೆಳಗೆ ಮುಂದುವರಿಸಿ ಎಂಬುದನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿ.</translation>
+<translation id="87371078663613140">ಮೆನು ಬಾರ್‌ನಲ್ಲಿ ಆಯ್ಕೆಗಳನ್ನು ಎಕ್ಸ್‌ಪ್ಲೋರ್ ಮಾಡಿ</translation>
 <translation id="8741995161408053644">ನಿಮ್ಮ Google ಖಾತೆಯು <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /> ನಲ್ಲಿ ಬ್ರೌಸಿಂಗ್ ಇತಿಹಾಸದ ಇತರ ಪ್ರಕಾರಗಳನ್ನು ಹೊಂದಿರಬಹುದು.</translation>
 <translation id="8750037785291841318">ನಿಮ್ಮ ಟ್ಯಾಬ್‌ಗಳನ್ನು ನೀವು ಇಲ್ಲಿ ಕಾಣಬಹುದು</translation>
 <translation id="8756969031206844760">ಪಾಸ್‌ವರ್ಡ್ ಅಪ್‌ಡೇಟ್ ಮಾಡುವುದೇ?</translation>
@@ -967,10 +1004,13 @@
 <translation id="8868471676553493380">{count,plural, =1{{count} ಟ್ಯಾಬ್}one{{count} ಟ್ಯಾಬ್‌ಗಳು}other{{count} ಟ್ಯಾಬ್‌ಗಳು}}</translation>
 <translation id="8870413625673593573">ಇತ್ತೀಚೆಗೆ ಮುಚ್ಚಿರುವುದು</translation>
 <translation id="8876882697946675716">ನಿಮ್ಮ ಸಾಧನಗಳನ್ನು ಸಿಂಕ್‌ನಲ್ಲಿ ಇರಿಸಿ</translation>
+<translation id="8877287418679067891">ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಡೀಫಾಲ್ಟ್ ಮಾಡಿ…</translation>
 <translation id="8881801611828450202">ಈ ಚಿತ್ರಕ್ಕಾಗಿ <ph name="SEARCH_ENGINE" /> ನಲ್ಲಿ ಹುಡುಕಿ</translation>
 <translation id="8891935667620843985">Chrome ಅನ್ನು ನಿಮ್ಮ ಡೀಫಾಲ್ಟ್ ಬ್ರೌಸರ್ ಆ್ಯಪ್ ಮಾಡಿಕೊಳ್ಳುವ ಮೂಲಕ ಅದರಲ್ಲಿ ಲಿಂಕ್‌ಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ತೆರೆಯಿರಿ.</translation>
 <translation id="8898822736010347272">ಹೊಸ ಅಪಾಯಗಳನ್ನು ಕಂಡುಹಿಡಿಯಲು ಮತ್ತು ವೆಬ್‌ನಲ್ಲಿರುವ ಪ್ರತಿಯೊಬ್ಬರನ್ನು ರಕ್ಷಿಸುವುದಕ್ಕೆ ಸಹಾಯ ಮಾಡಲು, ನೀವು ಭೇಟಿ ನೀಡುವ ಕೆಲವು ಪುಟಗಳ URL ಗಳು, ಸೀಮಿತ ಸಿಸ್ಟಂ ಮಾಹಿತಿ ಮತ್ತು ಪುಟಗಳಲ್ಲಿನ ಕೆಲವು ಕಂಟೆಂಟ್ ಅನ್ನು Google ಗೆ ಕಳುಹಿಸುತ್ತದೆ.</translation>
 <translation id="8909135823018751308">ಹಂಚಿಕೊಳ್ಳು...</translation>
+<translation id="8911759861431145525">ಸೇರಿಸಿ ಎಂಬುದನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿ, ನಂತರ ನಿಮ್ಮ ಮಾಹಿತಿಯನ್ನು ನಮೂದಿಸಿ</translation>
+<translation id="891658175948553296">ಸೈಟ್‌ನಲ್ಲಿ ಪಠ್ಯವನ್ನು ಹೈಲೈಟ್ ಮಾಡಿ</translation>
 <translation id="8917490105272468696">ಹೌದು, ನಾನು ಒಪ್ಪಿಕೊಳ್ಳುತ್ತೇನೆ</translation>
 <translation id="8928133177108699615">ಡೆಸ್ಕ್‌ಟಾಪ್</translation>
 <translation id="8952559610785099500">ಪಾಸ್‌ವರ್ಡ್ ಸೇರಿಸಿ</translation>
@@ -1008,6 +1048,7 @@
 <translation id="9203116392574189331">ಹ್ಯಾಂಡ್ಆಫ್</translation>
 <translation id="9223358826628549784">ಕ್ರ್ಯಾಶ್ ವರದಿಯನ್ನು ಕಳುಹಿಸಲಾಗಿದೆ.</translation>
 <translation id="952704832371081537">ರದ್ದುಮಾಡಿ</translation>
+<translation id="953008885340860025">Chrome ನಿಂದ ಸೈನ್‌ಔಟ್ ಮಾಡಲಾಗಿದೆ</translation>
 <translation id="959066944189734975">ನೀವು <ph name="CHANNEL_NAME" /> ಅನ್ನು ಫಾಲೋ ಮಾಡುತ್ತಿದ್ದೀರಿ</translation>
 <translation id="981498610235328462">ಕೆಲವು ಖಾತೆಗಳ ಮೂಲಕ ಮಾತ್ರ ಸೈನ್ ಇನ್ ಮಾಡಲು ನಿಮ್ಮ ಸಂಸ್ಥೆ ನಿಮಗೆ ಅನುಮತಿ ನೀಡುತ್ತದೆ. ಅನುಮತಿಸದ ಖಾತೆಗಳನ್ನು ಮರೆಮಾಡಲಾಗಿದೆ.</translation>
 <translation id="984509647832111802">ಸಿಂಕ್ ಕೆಲಸ ಮಾಡುತ್ತಿಲ್ಲ.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_lo.xtb b/ios/chrome/app/strings/resources/ios_strings_lo.xtb
index 554e6637..d370ce4 100644
--- a/ios/chrome/app/strings/resources/ios_strings_lo.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_lo.xtb
@@ -19,6 +19,7 @@
 <translation id="1076421457278169141">ສະແກນລະຫັດແລ້ວ</translation>
 <translation id="1076785341346483463">ຊິ້ງໂດຍບັນຊີທີ່ມີການຈັດການ</translation>
 <translation id="1084365883616172403">ການ​ໂພ​ສ​ທ໌ Facebook ສຳ​ເລັດ.</translation>
+<translation id="1085696779717592361">ໃຊ້ Chrome ເປັນຄ່າເລີ່ມຕົ້ນ</translation>
 <translation id="1103523840287552314">ແປ <ph name="LANGUAGE" /> ຢູ່ສະເໝີ</translation>
 <translation id="1104948393051856124">ຍອມ​ຮັບ​ ແລະ​ສືບ​ຕໍ່</translation>
 <translation id="110724200315609752">ປ່ຽນເພື່ອເປີດໜ້າຈໍ</translation>
@@ -34,6 +35,7 @@
 <translation id="1165039591588034296">ຜິດພາດ</translation>
 <translation id="1172898394251786223">ຫ້ອງ​ໃສ່​ຂໍ້​ມູນ​ຕໍ່​ໄປ</translation>
 <translation id="1176932207622159128">ບໍ່​ສາ​ມາດ​ບັນ​ທຶກ​ຮູບ​ໄດ້</translation>
+<translation id="1177414119866731261">ເປີດເມນູ Chrome</translation>
 <translation id="1181037720776840403">ລຶບອອກ</translation>
 <translation id="1207113853726624428">ການຊອກຫາໃໝ່</translation>
 <translation id="1209206284964581585">ເຊື່ອງສຳລັບຕອນນີ້</translation>
@@ -82,6 +84,7 @@
 <translation id="152234381334907219">ຢ່າບັນທຶກ</translation>
 <translation id="1523341279170789507">ອະນຸຍາດຄຸກກີ້ທັງໝົດ</translation>
 <translation id="1524563461097350801">ບໍ່, ຂອບໃຈ</translation>
+<translation id="1531836666020185856">ແນະນຳ</translation>
 <translation id="1535268707340844072">ການຕັ້ງຄ່າປັດຈຸບັນຂອງທ່ານອາດຈະເຮັດໃຫ້ບາງເວັບໄຊເສຍຫາຍ. ເພື່ອຈັດການຄຸກກີ້ສຳລັບເວັບໄຊທັງໝົດ, ກະລຸນາເບິ່ງ <ph name="BEGIN_LINK" />ການຕັ້ງຄ່າຄຸກກີ້<ph name="END_LINK" />.</translation>
 <translation id="1540800554400757039">ທີ່ຢູ່ 1</translation>
 <translation id="1545749641540134597">ສະແກນລະຫັດ QR</translation>
@@ -109,6 +112,7 @@
 <translation id="1740468249224277719">ແຕະສອງຄັ້ງເພື່ອຕິດຕັ້ງ.</translation>
 <translation id="1752547299766512813">ບັນທຶກລະ​ຫັດ​ຜ່ານ</translation>
 <translation id="1753905327828125965">ເຂົ້າເບິ່ງ​ຫຼາຍ​ທີ່​ສຸດ</translation>
+<translation id="1789803444939621101">ຍິນດີຕ້ອນຮັບກັບມາ, <ph name="USER_NAME" /></translation>
 <translation id="1803264062614276815">ຊື່ຜູ້ຖືບັດ</translation>
 <translation id="1809939268435598390">ລຶບ​ໂຟລເດີ</translation>
 <translation id="1813414402673211292">ລຶບ​ຂໍ້​ມູນ​ການ​ທ່ອງ​ເນັດ</translation>
@@ -162,6 +166,7 @@
 <translation id="2302742851632557585">ປ່ຽນລະຫັດຜ່ານໃນເວັບໄຊ</translation>
 <translation id="2316709634732130529">ໃຊ້ລະຫັດຜ່ານທີ່ແນະນຳ</translation>
 <translation id="2320166752086256636">ເຊື່ອງ​ແປ້ນ​ພິມ</translation>
+<translation id="2328842561016935977">ແຕະລະຫັດຜ່ານຈາກນັ້ນແຕະເພີ່ມ</translation>
 <translation id="2351097562818989364">ການ​ຕັ້ງຄ່າ​ແປ​ພາ​ສາ​ຂອງ​ທ່ານ​ໄດ້​ຖືກຕັ້ງໃໝ່​ແລ້ວ.</translation>
 <translation id="235789365079050412">ນະໂຍບາຍຄວາມເປັນສ່ວນຕົວ Google</translation>
 <translation id="2359043044084662842">ແປພາສາ</translation>
@@ -220,6 +225,7 @@
 <translation id="2781331604911854368">ເປີດ</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2783054063075604403">ບໍ່ສາມາດສ້າງລິ້ງໄດ້</translation>
+<translation id="2786701870377699570">ຊອກຫາແຖບໃນອຸປະກອນທີ່ຊິ້ງຂໍ້ມູນໄວ້</translation>
 <translation id="2800683595868705743">ອອກ​ໄປ​ຈາກ​ປຸ່ມ​ຕົວ​ສະ​ຫຼັບ​ແຖບ</translation>
 <translation id="2815198996063984598">2. ແຕະແອັບໂປຣແກຣມທ່ອງເວັບເລີ່ມຕົ້ນ</translation>
 <translation id="2820289420301699633">ຜູ້ເບິ່ງແຍງລະບົບຂອງທ່ານສາມາດຄວບຄຸມ Chrome ແລະ ເຂົ້າເຖິງຂໍ້ມູນຂອງມັນໄດ້</translation>
@@ -243,6 +249,7 @@
 <translation id="2923448633003185837">ວາງໃສ່ ແລະ ຊອກຫາ</translation>
 <translation id="292639812446257861">ໝາຍວ່າຍັງບໍ່ໄດ້ອ່ານ</translation>
 <translation id="2932085390869194046">ແນະນຳລະຫັດຜ່ານ...</translation>
+<translation id="2932765531295814441">ເພີ່ມລະຫັດດ້ວຍຕົວເອງ</translation>
 <translation id="2952581218264071393">1. ເປີດການຕັ້ງຄ່າ Chrome</translation>
 <translation id="2958718410589002129">ລະຫັດຜ່ານ</translation>
 <translation id="2961210776189273067">ຊື່</translation>
@@ -278,6 +285,7 @@
 <translation id="3181954750937456830">Safe Browsing (ປົກປ້ອງທ່ານ ແລະ ອຸປະກອນຂອງທ່ານຈາກເວັບໄຊອັນຕະລາຍ)</translation>
 <translation id="3184767182050912705">ປົດລັອກດ້ວຍ <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation>
 <translation id="3207960819495026254">ໃສ່ບຸກ​ມາກ​໌​ແລ້ວ</translation>
+<translation id="3214379938835224220">ທ່ານອອກຈາກລະບົບເປັນສ່ວນໜຶ່ງຂອງການຣີເຊັດ iPad ທ່ານແລ້ວ. ແຕະສືບຕໍ່ທາງລຸ່ມເພື່ອເຂົ້າສູ່ລະບົບ.</translation>
 <translation id="3224641773458703735">ເພື່ອສົ່ງອອກລະຫັດຜ່ານ, ທ່ານຕ້ອງຕັ້ງລະຫັດຜ່ານໃນອຸປະກອນຂອງທ່ານກ່ອນ.</translation>
 <translation id="3227137524299004712">ໄມໂຄຣໂຟນ</translation>
 <translation id="3240426699337459095">ອັດ​ສຳ​ເນົາ​ລິ້ງ​ແລ້ວ</translation>
@@ -295,6 +303,7 @@
 <translation id="3329904751041170572">ບໍ່​ສາ​ມາດ​ເຊື່ອມ​ຕໍ່​ກັບ​ເຊີບ​ເວີ​ໄດ້.</translation>
 <translation id="3335947283844343239">ເປີດ​ແຖບ​ທີ່ປິດແລ້ວຄືນໃໝ່</translation>
 <translation id="3371831930909698441">ມີບໍລິການແປພາສາ. ມີຕົວເລືອກໃຫ້ນຳໃຊ້ຢູ່ໃກ້ລຸ່ມສຸດຂອງໜ້າຈໍ.</translation>
+<translation id="3377063233124932127">ຕອນນີ້ບຸກມາກ, ລະຫັດຜ່ານ ແລະ ອື່ນໆທີ່ບັນທຶກໄວ້ຂອງທ່ານແມ່ນຢູ່ເທິງສຸດ.</translation>
 <translation id="3393920035788932672">ອະ​ນຸ​ຍາດ​ໃຫ້ປັອບອັບແລ້ວ</translation>
 <translation id="3399930248910934354">ເປີດການຕັ້ງຄ່າ Chrome</translation>
 <translation id="3404744938087714423">ການອອກຈາກລະບົບຈະເປັນການປິດການຊິ້ງຂໍ້ມູນ.</translation>
@@ -317,11 +326,13 @@
 <translation id="3519193562722059437">ເປີດ​ແຖບ​ເພື່ອ​ທ່ອງ​ເວັບ.</translation>
 <translation id="3527085408025491307">ໂຟລເດີ</translation>
 <translation id="3529024052484145543">ບໍ່ປອດໄພ</translation>
+<translation id="3530206579861815432">ຊອກຫາແຖບທີ່ເປີດ ແລະ ປິດຫຼ້າສຸດໃນອຸປະກອນທີ່ຊິ້ງຂໍ້ມູນໄວ້ຂອງທ່ານ.</translation>
 <translation id="3533202363250687977">ປິດແຖບທີ່ບໍ່ເຜີຍຕົວຕົນທັງໝົດ</translation>
 <translation id="3533436815740441613">ແຖບໃໝ່</translation>
 <translation id="3551320343578183772">ປິດແຖບ</translation>
 <translation id="3581564640715911333">ໃຫ້ການແປໜ້າຕ່າງໆເປັນພາສາອື່ນ</translation>
 <translation id="3588820906588687999">ຮູບເປີດຢູ່ໃນແຖບໃໝ່</translation>
+<translation id="3595252146048399851">ທ່ານສາມາດເລືອກສິ່ງທີ່ຈະຊິ້ງຂໍ້ມູນໄດ້ໃນ <ph name="BEGIN_LINK" />ການຕັ້ງຄ່າ<ph name="END_LINK" />. Google ອາດປັບແຕ່ງການຊອກຫາ ແລະ ບໍລິການອື່ນໆຂອງ Google ໃຫ້ເປັນແບບສ່ວນຕົວໂດຍອ້າງອີງໃສ່ປະຫວັດຂອງທ່ານ.</translation>
 <translation id="3603009562372709545">ອັດ​ສຳ​ເນົາ URL ຂອງ​ລິ້ງ</translation>
 <translation id="3607167657931203000">ຕື່ມຂໍ້ມູນອັດຕະໂນມັດ</translation>
 <translation id="3609785682760573515">ກໍາລັງຊິງຄ໌...</translation>
@@ -370,6 +381,7 @@
 <translation id="4018310736049373830">ຈັດການການເຄື່ອນໄຫວ</translation>
 <translation id="4038354071007134711">ບໍ່​ມີ​ແອັບ​ພ​ລິ​ເຄ​ຊັນ​ໃດ​ຢູ່​ໃນ​ອຸ​ປະ​ກອນ​ນີ້​ສາ​ມາດ​ເປີດ​ໄຟ​ລ໌​ໄດ້.</translation>
 <translation id="4042870976416480368">ຊອກຫາໃນໜ້າ</translation>
+<translation id="40433179647657191">ສ້າງ ແລະ ແບ່ງປັນລິ້ງໂດຍກົງໄປຫາພາກສ່ວນຂອງໜ້າທີ່ທ່ານໄຮໄລ້ໄວ້.</translation>
 <translation id="4049507953662678203">ກະລຸນາກວດສອບວ່າທ່ານມີການເຊື່ອມຕໍ່ເຄືອຂ່າຍ ແລ້ວລອງອີກຄັ້ງ.</translation>
 <translation id="4063300985191096908">ໄປຫາຟີດ</translation>
 <translation id="408404951701638773">ດຽວນີ້ເຂົ້າຫາແຖບຊອກຫາໄດ້ງ່າຍກວ່າ</translation>
@@ -387,11 +399,13 @@
 <translation id="4181841719683918333">ພາສາ</translation>
 <translation id="4187450337729239226">ວາງ ແລະ ຊອກຫາ</translation>
 <translation id="4223967053752765281">ອົງການຂອງທ່ານປິດການເຂົ້າສູ່ລະບົບໄວ້ແລ້ວ. ທ່ານຍັງຄົງສາມາດເບິ່ງເຫັນບຸກມາກ, ປະຫວັດ, ລະຫັດຜ່ານ ແລະ ການຕັ້ງຄ່າອື່ນໆຂອງທ່ານຢູ່ອຸປະກອນນີ້ໄດ້. ຫາກທ່ານປ່ຽນແປງ, ພວກມັນຈະບໍ່ຊິ້ງຂໍ້ມູນໄປໃສ່ບັນຊີຂອງທ່ານ.</translation>
+<translation id="4232900911558558076">ສຳຫຼວດເມນູໃໝ່</translation>
 <translation id="4233831822770018312">ແກ້ໄຂການອະນຸຍາດ</translation>
 <translation id="4236584471598725073">ກຳລັງຕິດຕາມລາຄາ</translation>
 <translation id="4237377247299956313">ແຕະໃສ່ <ph name="BEGIN_BOLD" />ແອັບໂປຣແກຣມທ່ອງເວັບເລີ່ມຕົ້ນ<ph name="END_BOLD" /></translation>
 <translation id="424315890655130736">ປ້ອນວະລີຜ່ານ</translation>
 <translation id="4249955472157341256">ຈັດຮຽງຕາມຫຼ້າສຸດ</translation>
+<translation id="42618743927498729">ຮັບການແຈ້ງເຕືອນຫາກລາຄາຢູ່ເວັບໄຊຫຼຸດລົງ</translation>
 <translation id="4263576668337963058">ສະແດງຄຳສັ່ງໃນໜ້າທີ່ໃຊ້ໄດ້</translation>
 <translation id="4267380167363222949">ແຖບຕໍ່ໄປ</translation>
 <translation id="4272631900155121838">ເພື່ອສະແກນລະຫັດ QR, ໃຫ້ເປີດນຳໃຊ້ກ້ອງຖ່າຍຮູບຈາກການຕັ້ງຄ່າ</translation>
@@ -534,6 +548,7 @@
 <translation id="5388358297987318779">ຮູບເປີດ</translation>
 <translation id="5407969256130905701">ຍົກເລີກການປ່ຽນແປງ</translation>
 <translation id="5416022985862681400">7 ມື້ຫຼ້າສຸດ</translation>
+<translation id="5423269318075950257">ຕິດຕາມລາຄາ</translation>
 <translation id="543338862236136125">ແກ້ໄຂລະຫັດຜ່ານ</translation>
 <translation id="5433691172869980887">ສຳເນົາຊື່ຜູ້ໃຊ້ແລ້ວ</translation>
 <translation id="5439599923922718668">ເຂົ້າເບິ່ງເລື້ອຍໆ</translation>
@@ -553,11 +568,15 @@
 <translation id="5556459405103347317">ໂຫຼດຄືນໃໝ່</translation>
 <translation id="556042886152191864">ປຸ່ມ</translation>
 <translation id="5580834567471114021">ເພີ່ມໃສ່ລາຍຊື່ການອ່ານສຳລັບພາຍຫຼັງບໍ?</translation>
+<translation id="5597915316964418992">ເປີດຊ່ອງແຖບ</translation>
 <translation id="560322036295180549">ຖືກປິດໄວ້ໂດຍອົງການຂອງທ່ານ</translation>
 <translation id="5614553682702429503">ບັນທຶກລະຫັດຜ່ານໄວ້ບໍ?</translation>
 <translation id="5626245204502895507">ບໍ່​ສາ​ມາດ​ດາວ​ໂຫຼດ​ໄດ້​ໃນ​ເວ​ລາ​ນີ້.</translation>
 <translation id="5631164295104953411">ເພີ່ມວິທີການຈ່າຍເງິນ</translation>
+<translation id="5636282538000367086">ເບິ່ງວ່າມີຫຍັງໃໝ່ໃນ Chrome</translation>
+<translation id="5652623411397330904">ສິນຄ້າທີ່ທ່ານຕິດຕາມຈະສະແດງຢູ່ບ່ອນນີ້.</translation>
 <translation id="5659593005791499971">ອີເມວ</translation>
+<translation id="5669335982068190158">ທ່ານອອກຈາກລະບົບເປັນສ່ວນໜຶ່ງຂອງການຣີເຊັດ iPhone ທ່ານແລ້ວ. ແຕະສືບຕໍ່ທາງລຸ່ມເພື່ອເຂົ້າສູ່ລະບົບ.</translation>
 <translation id="5669528293118408608">www</translation>
 <translation id="567881659373499783">ລຸ້ນ <ph name="PRODUCT_VERSION" /></translation>
 <translation id="5690398455483874150">{count,plural, =1{ດຽວນີ້ກຳລັງສະແດງໜ້າຈໍ Chrome 1 ລາຍການ}other{ດຽວນີ້ກຳລັງສະແດງໜ້າຈໍ Chrome {count} ລາຍການ}}</translation>
@@ -568,6 +587,7 @@
 <translation id="5724941645893276623">ເພື່ອທ່ອງເວັບແບບເປັນສ່ວນຕົວ, ກະລຸນາເພີ່ມແຖບໃໝ່</translation>
 <translation id="5728700505257787410">ຂໍ​ອະ​ໄພ​, ມີ​ບັນ​ຫາ​ການເຂົ້າ​ສູ່​ບັນ​ຊີ​ລະ​ບົບ​ຂອງ​ທ່ານ.</translation>
 <translation id="5731784586962650619">ລະຫັດຜ່ານໃນແອັບອື່ນໆ</translation>
+<translation id="5733084997078800044">ເຄັດລັບ Chrome</translation>
 <translation id="5737974891429562743">ລາຍລະອຽດການເຂົ້າສູ່ລະບົບບັນຊີເກົ່າແລ້ວ. ອັບເດດເພື່ອເລີ່ມການຊິ້ງຂໍ້ມູນ.</translation>
 <translation id="5738385766833540397">ຈັດການວິທີທີ່ທ່ານຮັບການແຈ້ງເຕືອນການຫຼຸດລາຄາສຳລັບສິນຄ້າທີ່ທ່ານຕິດຕາມ</translation>
 <translation id="5738887413654608789">ນີ້ໃຫ້ທ່ານຄົ້ນພົບໜ້າເວັບທີ່ກ່ຽວຂ້ອງອີງຕາມສິ່ງທີ່ຢູ່ອ້ອມຮອບຕົວທ່ານ.</translation>
@@ -581,6 +601,7 @@
 <translation id="5812974770859303494">ເພີ່ມໃສ່...</translation>
 <translation id="581659025233126501">ເປີດໃຊ້ການຊິ້ງຂໍ້ມູນ</translation>
 <translation id="5819208479324046259">ຈັດການໂດຍ <ph name="MANAGER" /> <ph name="BEGIN_LINK" />ສຶກສາເພີ່ມເຕີມ<ph name="END_LINK" /></translation>
+<translation id="5833643789537100742">ບັນທຶກລະຫັດ, ວິທີການຈ່າຍເງິນ ແລະ ທີ່ຢູ່ສຳລັບ Chrome ເພື່ອຕື່ມຂໍ້ມູນອັດຕະໂນມັດໃນພາຍຫຼງ.</translation>
 <translation id="5846482154967366008">ເຄື່ອງ​ຈັກ​ຄົ້ນ​ຫາ</translation>
 <translation id="5854790677617711513">ເກົ່າກວ່າ 30 ມື້</translation>
 <translation id="5857090052475505287">ໂຟລເດີ​ໃຫມ່</translation>
@@ -596,6 +617,7 @@
 <translation id="5913600720976431809">ຕົວເລືອກໃນການແປໜ້າ</translation>
 <translation id="5938160824633642847">ອຸປະກອນຂອງທ່ານເກືອບເຕັມແລ້ວ. ກະລຸນາຂະຫຍາຍພື້ນທີ່ຫວ່າງ ແລະ ລອງອີກຄັ້ງ.</translation>
 <translation id="5948291296578561264">ນີ້ອະນຸຍາດໃຫ້ທ່ານບັນທຶກຮູບຖ່າຍໄວ້ໃນຫ້ອງສະໝຸດຮູບ.</translation>
+<translation id="5951816930277761335">ແບ່ງປັນລິ້ງ</translation>
 <translation id="5955891643922670672">ກຳລັງເບິ່ງເວີຊັນອອບລາຍ</translation>
 <translation id="5957613098218939406">ໂຕ​ເລືອກ​ເພີ່ມ​ເຕີມ</translation>
 <translation id="5963939892571022323">ສ້າງລິ້ງໄປຍັງໄຮໄລ້ບໍ່ໄດ້.</translation>
@@ -635,6 +657,7 @@
 <translation id="6189413832092199491">ຍັງບໍ່ໄດ້ອ່ານ</translation>
 <translation id="6196207969502475924">​ການຄົ້ນຫາ​ສຽງ</translation>
 <translation id="6202364442240589072">{COUNT,plural, =1{ປິດ {COUNT} ແຖບ}other{ປິດ {COUNT} ແຖບ}}</translation>
+<translation id="6219550825416862075">ຍິນດີຕ້ອນຮັບກັບມາ</translation>
 <translation id="6219688215832490856">ຢ່າແປ</translation>
 <translation id="6223816392543092032">ໃຊ້ບຸກມາກ, ປະຫວັດ, ລະຫັດຜ່ານ ແລະ ການຕັ້ງຄ່າອື່ນຂອງທ່ານຢູ່ໃນທຸກອຸປະກອນຂອງທ່ານ.</translation>
 <translation id="6231782223312638214">ແນະ​ນໍາແລ້ວ</translation>
@@ -722,6 +745,7 @@
 ເມື່ອຢູ່ໃນໂໝດບໍ່ເປີດເຜີຍຕົວຕົນ, ເວັບໄຊຈະບໍ່ສາມາດໃຊ້ຄຸກກີ້ເພື່ອເບິ່ງການເຄື່ອນໄຫວການທ່ອງເວັບຂອງທ່ານໃນເວັບໄຊຕ່າງໆໄດ້, ຕົວຢ່າງ: ເພື່ອປັບແຕ່ງໂຄສະນາໃຫ້ເປັນແບບສ່ວນຕົວ.</translation>
 <translation id="6674571176963658787">ເພື່ອເລີ່ມຊິ້ງຂໍ້ມູນ, ໃຫ້ໃສ່ລະຫັດຜ່ານຂອງທ່ານ</translation>
 <translation id="667999046851023355">ເອ​ກະ​ສານ</translation>
+<translation id="6684906340059221832">ກຳລັງຕິດຕາມລາຄາ</translation>
 <translation id="6710079714193676716">ຈັດການໂດຍອົງການຂອງທ່ານ. ບາງຄຸນສົມບັດອາດຈະບໍ່ພ້ອມໃຫ້ນຳໃຊ້. <ph name="BEGIN_LINK" />ສຶກສາເພີ່ມເຕີມ<ph name="END_LINK" /></translation>
 <translation id="6713747756340119864">Google Apps</translation>
 <translation id="6730682669179532099">ບໍ່ສາມາດສົ່ງລະຫັດຜ່ານອອກໄດ້</translation>
@@ -755,6 +779,7 @@
 <translation id="6945221475159498467">ເລືອກ</translation>
 <translation id="6965382102122355670">ຕົກລົງ</translation>
 <translation id="6973630695168034713">ໂຟ​ລ​ເດີ</translation>
+<translation id="6975148662438928529">ທ່ານອອກຈາກລະບົບບັນຊີ <ph name="USER_NAME" /> ຂອງທ່ານເປັນສ່ວນໜຶ່ງຂອງການຣີເຊັດ iPad ທ່ານແລ້ວ. ແຕະສືບຕໍ່ທາງລຸ່ມເພື່ອເຂົ້າສູ່ລະບົບ.</translation>
 <translation id="6979158407327259162">Google Drive</translation>
 <translation id="6988572888918530647">ຈັດການບັນຊີ Google ຂອງທ່ານ</translation>
 <translation id="6989674195860388998">ສະຫຼັບໃນການຕັ້ງຄ່າ…</translation>
@@ -788,12 +813,16 @@
 <translation id="7265758999917665941">ບໍ່ເລີຍສໍາລັບເວັບໄຊນີ້</translation>
 <translation id="7272437679830969316">ບໍ່ສາມາດພິສູດຢືນຢັນຕົວຕົນຂອງທ່ານໄດ້. ບໍ່ໄດ້ສຳເນົາລະຫັດຜ່ານ.</translation>
 <translation id="7291368939935408496">ກຳລັງກະກຽມລະຫັດຜ່ານ...</translation>
+<translation id="730958329302570991">ເພີ່ມລະຫັດຜ່ານເວັບໄຊໄປໃສ່ຕົວຈັດການລະຫັດຜ່ານ Google ຕອນໃດກໍໄດ້.</translation>
 <translation id="7313347584264171202">ທ່ານຈະເຫັນແຖບທີ່ບໍ່ເປີດເຜີຍຕົວຕົນຂອງທ່ານຢູ່ບ່ອນນີ້</translation>
+<translation id="7315813263062036945">ຢູ່ຊ້າຍເທິງ, ໃຫ້ແຕະໃສ່ໄອຄອນຊອກ</translation>
 <translation id="7336264872878993241"><ph name="PERCENT" /> ເປີ​ເຊັນ​ຖືກ​ດາວ​ໂຫຼດ​ແລ້ວ</translation>
 <translation id="7340958967809483333">ຕົວເລືອກສຳລັບ Discover</translation>
 <translation id="7346909386216857016">ຕົກລົງ, ເຂົ້າໃຈແລ້ວ</translation>
 <translation id="734758817008927353">ຕົວເລືອກໃນການບັນທຶກບັດ</translation>
+<translation id="7351537303876921605">ແຕະສ້າງລິ້ງໃນເມນູບໍລິບົດ</translation>
 <translation id="7353432112255316844">ຢັ້ງຢືນວ່າແມ່ນທ່ານແທ້</translation>
+<translation id="7356359962760467032">ຢຸດການຕິດຕາມລາຄາ</translation>
 <translation id="7383797227493018512">ລາຍການທີ່ຈະອ່ານ</translation>
 <translation id="7398893703713203428">ສ້າງລິ້ງ</translation>
 <translation id="739941347996872055">ແຖບກ່ອນໜ້າ</translation>
@@ -814,6 +843,7 @@
 <translation id="750493650310597496">0 ເລືອກແລ້ວ</translation>
 <translation id="7508728395076009983">ເພື່ອລັອກ incognito tab ຂອງທ່ານ, ໃຫ້ຕັ້ງຄ່າ Touch ID, Face ID ຫຼື ລະຫັດກ່ອນ.</translation>
 <translation id="7514365320538308">ດາວ​ໂຫລດ</translation>
+<translation id="7531345132340165516">ເວັບໄຊປັດຈຸບັນ</translation>
 <translation id="7537586195939242955">ຂໍ​ອະ​ໄພ​, ບັດຜ່ານ​ຂອງ​ທ່ານ​ບໍ່​ສາ​ມາດຕິດ​ຕັ້ງ​ໃສ່​ປຶ້ມ​ຜ່ານ​ໃນ​ເວ​ລາ​ນີ້​ໄດ້.</translation>
 <translation id="7554791636758816595">ແຖບ​ໃຫມ່</translation>
 <translation id="7561196759112975576">ຢູ່ສະເໝີ</translation>
@@ -824,6 +854,7 @@
 <translation id="7638584964844754484">ລະຫັດຜ່ານບໍ່ຖືກຕ້ອງ</translation>
 <translation id="7646263789464975852">ເມນູ → ການຕັ້ງຄ່າ → ການກວດສອບຄວາມປອດໄພ</translation>
 <translation id="7646772052135772216">ການຊິ້ງຂໍ້ມູນລະຫັດຜ່ານບໍ່ເຮັດວຽກ</translation>
+<translation id="764827086632467055">ແຕະແອັບໂປຣແກຣມທ່ອງເວັບເລີ່ມຕົ້ນ</translation>
 <translation id="7649070708921625228">ຊ່ວຍ​ເຫຼືອ</translation>
 <translation id="7658239707568436148">ຍົກ​ເລີກ​</translation>
 <translation id="7671141431838911305">​ຕິດ​ຕັ້ງ</translation>
@@ -846,6 +877,7 @@
 <translation id="784551991304901159">ເພື່ອເບິ່ງເນື້ອຫາ, ໃຫ້ເລືອກເປີດໃຊ້ຈາກເມນູ</translation>
 <translation id="7853202427316060426">ການເຄື່ອນໄຫວ</translation>
 <translation id="7856733331829174190">ບໍ່ສາມາດດາວໂຫລດໄດ້</translation>
+<translation id="785938070103630874">ເປີດລະຫັດຜ່ານ, ວິທີການຈ່າຍເງິນ ຫຼື ທີ່ຢູ່ ແລະ ືອື່ນ</translation>
 <translation id="7859704718976024901">ປະຫວັດການທ່ອງເວັບ</translation>
 <translation id="7884694604461143138">ປະ​ຫວັດ​ການ​ຊອກຫາ (ພົບ <ph name="COUNT" /> ລາຍການ)</translation>
 <translation id="7887198238286927132">ເພື່ອປົກປ້ອງຄວາມເປັນສ່ວນຕົວຂອງທ່ານ, Chrome ຈະບໍ່ຕື່ມຂໍ້ມູນໃສ່ຊ່ອງຂໍ້ມູນນີ້ໂດຍອັດຕະໂນມັດ.</translation>
@@ -865,6 +897,7 @@
 <translation id="7971521879845308059">ບລັອກປັອບອັບ</translation>
 <translation id="797413074872316787">ເພື່ອຊິ້ງຂໍ້ມູນ ແລະ ປັບແຕ່ງເປັນແບບສ່ວນຕົວຢູ່ອຸປະກອນຕ່າງໆ, ກະລຸນາເປີດການຊິ້ງຂໍ້ມູນກ່ອນ.</translation>
 <translation id="7978018860671536736">3. ແຕະໃສ່ການຕື່ມຂໍ້ມູນລະຫັດຜ່ານອັດຕະໂນມັດ</translation>
+<translation id="7981908678811807838">ບໍ່ສາມາດຕິດຕາມລາຄາສຳລັບເວັບໄຊນີ້ໄດ້.</translation>
 <translation id="7982789257301363584">ເຄືອ​ຂ່າຍ</translation>
 <translation id="7987685713885608670">ເພື່ອຄວາມປອດໄພເພີ່ມເຕີມ, ໃຫ້ເຂົ້າລະຫັດລະຫັດຜ່ານຢູ່ອຸປະກອນຂອງທ່ານກ່ອນທີ່ພວກມັນຈະຖືກບັນທຶກໄປໃສ່ຕົວຈັດການລະຫັດຜ່ານ Google.</translation>
 <translation id="7993619969781047893">ຄຸນສົມບັດໃນບາງເວັບໄຊອາດຈະໃຊ້ບໍ່ໄດ້</translation>
@@ -900,11 +933,13 @@
 <translation id="8237382152611443140">ເປີດການຕັ້ງຄ່າການຕື່ມຂໍ້ມູນລະຫັດຜ່ານອັດຕະໂນມັດ</translation>
 <translation id="8261506727792406068">ລຶບ</translation>
 <translation id="8271720166617117963">ຍອມຮັບ ແລະ ເຂົ້າສູ່ລະບົບ</translation>
+<translation id="8278938988428169257">ລະບຸຄຳສັບ ຫຼື ວະລີ</translation>
 <translation id="8281781826761538115">ຄ່າເລີ່ມຕົ້ນ - <ph name="DEFAULT_LOCALE" /></translation>
 <translation id="8281886186245836920">ຂ້າມ</translation>
 <translation id="8283172974887967105">ຕັ້ງ…</translation>
 <translation id="8299417921174340354">ເພື່ອໃຊ້ລະຫັດຜ່ານ, ທ່ານຕ້ອງຕັ້ງລະຫັດຜ່ານໃນອຸປະກອນຂອງທ່ານກ່ອນ.</translation>
 <translation id="8299613349954694191">ເປີດແຖບ​ບໍ່ເປີດເຜີຍຕົວຕົນເພື່ອທ່ອງເວັບແບບສ່ວນຕົວ.</translation>
+<translation id="8316944564970119719">ລະບຸເວັບໄຊ ແລະ ລະຫັດ, ຈາກນັ້ນບັນທຶກ</translation>
 <translation id="8319076807703933069">ຊອກຫາໃໝ່</translation>
 <translation id="8323906514956095947">ແຕະຄ້າງໄວ້ສຳລັບຕົວເລືອກເພີ່ມເຕີມຂອງແຖບ</translation>
 <translation id="8328777765163860529">ປິດທັງໝົດ</translation>
@@ -932,6 +967,7 @@
 <translation id="8533670235862049797">Safe Browsing ເປີດຢູ່</translation>
 <translation id="8534481786647257214">ການ​ໂພ​ສ​ທ໌ Google+ ສຳ​ເລັດ.</translation>
 <translation id="8548878600947630424">ຊອກ​ຫາ​ຢູ່​ໃນ​ຫນ້າ​...</translation>
+<translation id="8558480467877843976">ຕອນນີ້ທ່ານສາມາດໃຊ້ Chrome ຕອນໃດກໍໄດ້ທີ່ທ່ານເລືອກເບິ່ງ ຫຼື ແຕະລິ້ງໃນຂໍ້ຄວາມ, ເອກະສານ ແລະ ແອັບອື່ນໆ.</translation>
 <translation id="8588404856427128947">ປິດ</translation>
 <translation id="8590913940444621808">ຢ່າຖາມອີກ</translation>
 <translation id="8591976964826315682">ບລັອກຄຸກກີ້ພາກສ່ວນທີສາມໃນໂໝດບໍ່ເປີດເຜີຍຕົວຕົນ</translation>
@@ -949,6 +985,8 @@
 <translation id="8721297211384281569">ເມ​ນູ​ເຄື່ອງ​ມື</translation>
 <translation id="8725066075913043281">ລອງໃໝ່ອີກ</translation>
 <translation id="8730621377337864115">ສໍາເລັດ</translation>
+<translation id="8731388423028622182">ທ່ານອອກຈາກລະບົບບັນຊີ <ph name="USER_NAME" /> ຂອງທ່ານເປັນສ່ວນໜຶ່ງຂອງການຣີເຊັດ iPhone ທ່ານແລ້ວ. ແຕະສືບຕໍ່ທາງລຸ່ມເພື່ອເຂົ້າສູ່ລະບົບ.</translation>
+<translation id="87371078663613140">ສຳຫຼວດຕົວເລືອກໃນແຖບເມນູ</translation>
 <translation id="8741995161408053644">ບັນຊີ Google ຂອງທ່ານອາດຈະມີຮູບແບບອື່ນຂອງປະຫວັດການທ່ອງເວັບຢູ່ <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" />.</translation>
 <translation id="8750037785291841318">ທ່ານຈະເຫັນແຖບຂອງທ່ານຢູ່ບ່ອນນີ້</translation>
 <translation id="8756969031206844760">ອັບເດດລະຫັດຜ່ານບໍ?</translation>
@@ -966,10 +1004,13 @@
 <translation id="8868471676553493380">{count,plural, =1{{count} ແຖບ}other{{count} ແຖບ}}</translation>
 <translation id="8870413625673593573">ປິດ​ບໍ່​ດົນ​ມາ​ນີ້</translation>
 <translation id="8876882697946675716">ຊິ້ງຂໍ້ມູນອຸປະກອນຂອງທ່ານສະເໝີ</translation>
+<translation id="8877287418679067891">ຕັ້ງເປັນຄ່າເລີ່ມຕົ້ນໃນການຕັ້ງຄ່າ…</translation>
 <translation id="8881801611828450202">ຊອກຫາຮູບນີ້ໃນ <ph name="SEARCH_ENGINE" /></translation>
 <translation id="8891935667620843985">ທ່ານສາມາດເປີດລິ້ງຕ່າງໆໃນ Chrome ໂດຍອັດຕະໂນມັດໂດຍການເຮັດໃຫ້ມັນເປັນແອັບໂປຣແກຣມທ່ອງເວັບເລີ່ມຕົ້ນຂອງທ່ານ.</translation>
 <translation id="8898822736010347272">ສົ່ງ URL ຂອງບາງໜ້າທີ່ທ່ານເຂົ້າເບິ່ງ, ຂໍ້ມູນລະບົບທີ່ຈຳກັດ ແລະ ບາງເນື້ອຫາໃນໜ້າໃຫ້ Google ເພື່ອຊ່ວຍຄົ້ນພົບອັນຕະລາຍໃໝ່ ແລະ ປົກປ້ອງທຸກຄົນໃນເວັບ.</translation>
 <translation id="8909135823018751308">ແຊຣ໌...</translation>
+<translation id="8911759861431145525">ແຕະເພີ່ມແລ້ວລະບຸຂໍ້ມູນຂອງທ່ານ</translation>
+<translation id="891658175948553296">ໄຮໄລ້ຂໍ້ຄວາມຢູ່ເວັບໄຊ</translation>
 <translation id="8917490105272468696">ແມ່ນ, ຂ້ອຍເຂົ້າຮ່ວມ</translation>
 <translation id="8928133177108699615">ເດັສທັອບ</translation>
 <translation id="8952559610785099500">ເພີ່ມ​ລະ​ຫັດ​ຜ່ານ</translation>
@@ -1007,6 +1048,7 @@
 <translation id="9203116392574189331">Handoff</translation>
 <translation id="9223358826628549784">​ສົ່ງລາຍງານການຂັດຂ້ອງແລ້ວ.</translation>
 <translation id="952704832371081537">ຍົກເລີກ</translation>
+<translation id="953008885340860025">ອອກຈາກລະບົບ Chrome ແລ້ວ</translation>
 <translation id="959066944189734975">ທ່ານກຳລັງຕິດຕາມ <ph name="CHANNEL_NAME" /> ຢູ່</translation>
 <translation id="981498610235328462">ອົງການຂອງທ່ານອະນຸຍາດໃຫ້ທ່ານເຂົ້າສູ່ລະບົບດ້ວຍບັນຊີບາງຢ່າງເທົ່ານັ້ນ. ບັນຊີທີ່ບໍ່ໄດ້ຮັບອະນຸຍາດແມ່ນຖືກເຊື່ອງໄວ້.</translation>
 <translation id="984509647832111802">ການຊິ້ງຂໍ້ມູນບໍ່ເຮັດວຽກ.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_mk.xtb b/ios/chrome/app/strings/resources/ios_strings_mk.xtb
index 6ae17c8..2537e0f 100644
--- a/ios/chrome/app/strings/resources/ios_strings_mk.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_mk.xtb
@@ -434,6 +434,7 @@
 <translation id="4502566650163919158">Проверете сега</translation>
 <translation id="4505980578794259603">Последен пат проверено: <ph name="TIME" />.</translation>
 <translation id="4508750114462689118">Затвори ја промоцијата за најавување</translation>
+<translation id="4520798012560649652">Дознајте повеќе за режимот „Инкогнито“</translation>
 <translation id="4526249700380860531">Прикажи и управувај зачувани лозинки на <ph name="BEGIN_LINK" />passwords.google.com<ph name="END_LINK" /></translation>
 <translation id="452750746583162491">Прегледајте ги синхронизираните податоци</translation>
 <translation id="4536418791685807335">Обидете се да се најавите повторно.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_mr.xtb b/ios/chrome/app/strings/resources/ios_strings_mr.xtb
index 039be83..f37e2d12 100644
--- a/ios/chrome/app/strings/resources/ios_strings_mr.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_mr.xtb
@@ -19,6 +19,7 @@
 <translation id="1076421457278169141">कोड स्कॅन केला</translation>
 <translation id="1076785341346483463">व्यवस्थापित केलेले खाते सोबत सिंक करा</translation>
 <translation id="1084365883616172403">Facebook पोस्ट पूर्ण केले.</translation>
+<translation id="1085696779717592361">बाय डीफॉल्ट Chrome वापरा</translation>
 <translation id="1103523840287552314">नेहमी भाषांतर करा <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">स्वीकारा आणि सुरू ठेवा</translation>
 <translation id="110724200315609752">उघड्या विंडोवर स्विच करा</translation>
@@ -34,6 +35,7 @@
 <translation id="1165039591588034296">एरर</translation>
 <translation id="1172898394251786223">पुढील फील्ड</translation>
 <translation id="1176932207622159128">इमेज सेव्ह करू शकत नाही</translation>
+<translation id="1177414119866731261">Chrome मेनू उघडा</translation>
 <translation id="1181037720776840403">काढून टाका</translation>
 <translation id="1207113853726624428">नवीन शोध</translation>
 <translation id="1209206284964581585">आतासाठी लपवा</translation>
@@ -110,6 +112,7 @@
 <translation id="1740468249224277719">इंस्टॉल करण्यासाठी दोनदा टॅप करा.</translation>
 <translation id="1752547299766512813">पासवर्ड सेव्ह करा</translation>
 <translation id="1753905327828125965">सर्वाधिक भेट दिलेले</translation>
+<translation id="1789803444939621101"><ph name="USER_NAME" />, तुमचे पुन्हा स्वागत आहे</translation>
 <translation id="1803264062614276815">कार्डधारकाचे नाव</translation>
 <translation id="1809939268435598390">फोल्डर हटवा</translation>
 <translation id="1813414402673211292">ब्राउझिंग डेटा साफ करा</translation>
@@ -163,6 +166,7 @@
 <translation id="2302742851632557585">वेबसाइट वर पासवर्ड बदला</translation>
 <translation id="2316709634732130529">सुचवलेला पासवर्ड वापरा</translation>
 <translation id="2320166752086256636">कीबोर्ड लपवा</translation>
+<translation id="2328842561016935977">पासवर्ड वर टॅप करा त्यानंतर जोडा वर टॅप करा</translation>
 <translation id="2351097562818989364">आपल्या भाषांतर सेटिंग्ज रीसेट करण्यात आल्या आहेत.</translation>
 <translation id="235789365079050412">Google गोपनीयता धोरण</translation>
 <translation id="2359043044084662842">भाषांतर</translation>
@@ -221,6 +225,7 @@
 <translation id="2781331604911854368">सुरू</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2783054063075604403">लिंक तयार करता आली नाही</translation>
+<translation id="2786701870377699570">सर्व सिंक केलेल्या डिव्हाइसवर टॅब शोधा</translation>
 <translation id="2800683595868705743">टॅब स्विचर सोडा</translation>
 <translation id="2815198996063984598">२. डीफॉल्ट ब्राउझर अ‍ॅप वर टॅप करा</translation>
 <translation id="2820289420301699633">तुमच्या अ‍ॅडमिनिस्ट्रेटरचे Chrome वर नियंत्रण आहे आणि तो त्याचा डेटा अ‍ॅक्सेस करू शकतो</translation>
@@ -244,6 +249,7 @@
 <translation id="2923448633003185837">पेस्ट करा आणि जा</translation>
 <translation id="292639812446257861">न वाचलेले चिन्हांकित करा</translation>
 <translation id="2932085390869194046">पासवर्ड सुचवा...</translation>
+<translation id="2932765531295814441">पासवर्ड मॅन्युअली जोडा</translation>
 <translation id="2952581218264071393">१. Chrome सेटिंग्ज उघडा</translation>
 <translation id="2958718410589002129">पासवर्ड</translation>
 <translation id="2961210776189273067">शीर्षक</translation>
@@ -279,6 +285,7 @@
 <translation id="3181954750937456830">सुरक्षित ब्राउझिंग (तुम्हाला आणि तुमच्या डिव्हाइसना धोकादायक साइटपासून सुरक्षित ठेवते)</translation>
 <translation id="3184767182050912705"><ph name="BIOMETRIC_AUTHENITCATION_TYPE" /> वापरून अनलॉक करा</translation>
 <translation id="3207960819495026254">बुकमार्क केलेली</translation>
+<translation id="3214379938835224220">तुमच्या iPad रीसेटचा भाग म्हणून तुम्हाला साइन आउट केले गेले होते. साइन इन करण्यासाठी, सुरू ठेवा वर खाली टॅप करा.</translation>
 <translation id="3224641773458703735">पासवर्ड एक्सपोर्ट करण्यासाठी, तुम्ही प्रथम तुमच्या डिव्हाइसवर पासकोड सेट करणे आवश्यक आहे.</translation>
 <translation id="3227137524299004712">मायक्रोफोन</translation>
 <translation id="3240426699337459095">लिंक कॉपी केला</translation>
@@ -296,6 +303,7 @@
 <translation id="3329904751041170572">सर्व्हरशी कनेक्ट करू शकलो नाही.</translation>
 <translation id="3335947283844343239">बंद केलेले टॅब पुन्हा उघडा</translation>
 <translation id="3371831930909698441">भाषांतर उपलब्ध आहे. स्क्रीनच्या खाली पर्याय उपलब्ध आहेत.</translation>
+<translation id="3377063233124932127">तुमचे सेव्ह केलेले बुकमार्क, पासवर्ड आणि आणखी बऱ्याच गोष्टी आता सर्वात वरती आहेत.</translation>
 <translation id="3393920035788932672">पॉप-अपला अनुमती</translation>
 <translation id="3399930248910934354">Chrome सेटिंग्ज उघडा</translation>
 <translation id="3404744938087714423">साइन आउट केल्यामुळे सिंक करणे बंद होईल.</translation>
@@ -318,11 +326,13 @@
 <translation id="3519193562722059437">वेब ब्राउझ करण्‍यासाठी एक टॅब उघडा.</translation>
 <translation id="3527085408025491307">फोल्डर</translation>
 <translation id="3529024052484145543">सुरक्षित नाही</translation>
+<translation id="3530206579861815432">तुमच्या सिंक केलेल्या सर्व डिव्हाइसवर उघडे आणि अलीकडे बंद केलेले टॅब झटपट शोधा.</translation>
 <translation id="3533202363250687977">सर्व गुप्त टॅब बंद करा</translation>
 <translation id="3533436815740441613">नवीन टॅब</translation>
 <translation id="3551320343578183772">टॅब बंद करा</translation>
 <translation id="3581564640715911333">पेजचे अन्य भाषांमध्ये भाषांतर उपलब्ध करा</translation>
 <translation id="3588820906588687999">नवीन टॅबमध्ये इमेज उघडा</translation>
+<translation id="3595252146048399851">काय सिंक करायचे हे तुम्ही <ph name="BEGIN_LINK" />सेटिंग्ज<ph name="END_LINK" /> मध्ये कधीही निवडू शकता. Google तुमच्या इतिहासाच्या आधारे Search आणि इतर सेवा पर्सनलाइझ करू शकते.</translation>
 <translation id="3603009562372709545">लिंक URL कॉपी करा</translation>
 <translation id="3607167657931203000">ऑटोफिल डेटा</translation>
 <translation id="3609785682760573515">सिंक करत आहे...</translation>
@@ -371,6 +381,7 @@
 <translation id="4018310736049373830">अ‍ॅक्टिव्हिटी व्यवस्थापित करा</translation>
 <translation id="4038354071007134711">या डिव्हाइसवरील कोणतीही ॲप्लिकेशन फाइल उघडू शकत नाही.</translation>
 <translation id="4042870976416480368">पेजमध्ये शोधा</translation>
+<translation id="40433179647657191">तुम्ही हायलाइट केलेल्या पेजच्या भागाची थेट लिंक तयार करा आणि शेअर करा.</translation>
 <translation id="4049507953662678203">आपल्याकडे नेटवर्क कनेक्शन आहे हे सुनिश्चित करा आणि पुन्हा प्रयत्न करा.</translation>
 <translation id="4063300985191096908">फीड वर जा</translation>
 <translation id="408404951701638773">शोध बारवर पोहोचणे आता आणखी सोपे आहे</translation>
@@ -388,11 +399,13 @@
 <translation id="4181841719683918333">भाषा</translation>
 <translation id="4187450337729239226">पेस्ट करा आणि शोधा</translation>
 <translation id="4223967053752765281">तुमच्या संस्थेने साइन इन करणे बंद केले आहे. तुम्ही तरीही या डिव्हाइसवर तुमचे बुकमार्क, इतिहास, पासवर्ड आणि इतर सेटिंग्ज पाहू शकता. तुम्ही बदल केल्यास, ते तुमच्या खात्याशी सिंक केले जाणार नाहीत.</translation>
+<translation id="4232900911558558076">नवीन मेनू एक्सप्लोर करा</translation>
 <translation id="4233831822770018312">परवानग्या संपादित करा</translation>
 <translation id="4236584471598725073">किमतीचा माग ठेवत आहे</translation>
 <translation id="4237377247299956313"><ph name="BEGIN_BOLD" />डीफॉल्ट ब्राउझर अ‍ॅप<ph name="END_BOLD" /> वर टॅप करा</translation>
 <translation id="424315890655130736">सांकेतिक पासफ्रेझ एंटर करा</translation>
 <translation id="4249955472157341256">नवीनतम यानुसार क्रमाने लावा</translation>
+<translation id="42618743927498729">कोणत्याही साइटवर किंमत कमी झाल्यास सूचना मिळवा.</translation>
 <translation id="4263576668337963058">उपलब्ध असलेल्या पेज क्रिया दाखवा</translation>
 <translation id="4267380167363222949">पुढील टॅब</translation>
 <translation id="4272631900155121838">QR कोड स्कॅन करण्‍यासाठी, सेटिंग्ज मधून कॅमेरा सुरू करा</translation>
@@ -536,6 +549,7 @@
 <translation id="5388358297987318779">इमेज उघडा</translation>
 <translation id="5407969256130905701">बदल काढून टाका</translation>
 <translation id="5416022985862681400">मागील सात दिवस</translation>
+<translation id="5423269318075950257">किमतीचा माग ठेवा</translation>
 <translation id="543338862236136125">पासवर्ड संपादित करा</translation>
 <translation id="5433691172869980887">वापरकर्ता नाव कॉपी केले</translation>
 <translation id="5439599923922718668">वारंवार भेट दिलेली</translation>
@@ -555,11 +569,15 @@
 <translation id="5556459405103347317">रीलोड करा</translation>
 <translation id="556042886152191864">बटण</translation>
 <translation id="5580834567471114021">नंतर वाचण्यासाठी वाचन सूची मध्ये जोडायचे आहे का?</translation>
+<translation id="5597915316964418992">टॅब ग्रिड उघडा</translation>
 <translation id="560322036295180549">तुमच्या संस्थेने बंद केले</translation>
 <translation id="5614553682702429503">पासवर्ड सेव्ह करायचा आहे का?</translation>
 <translation id="5626245204502895507">यावेळी फाईल डाऊनलोड केली जाऊ शकली नाही.</translation>
 <translation id="5631164295104953411">पेमेंट पद्धत जोडा</translation>
+<translation id="5636282538000367086">Chrome मध्ये नवीन काय आहे ते शोधा</translation>
+<translation id="5652623411397330904">तुम्ही माग ठेवत असलेली उत्पादने येथे दिसतील.</translation>
 <translation id="5659593005791499971">ई-मेल</translation>
+<translation id="5669335982068190158">तुमच्या iPhone रीसेटचा भाग म्हणून तुम्हाला साइन आउट केले गेले होते. साइन इन करण्यासाठी, सुरू ठेवा वर खाली टॅप करा.</translation>
 <translation id="5669528293118408608">www</translation>
 <translation id="567881659373499783">आवृत्ती <ph name="PRODUCT_VERSION" /></translation>
 <translation id="5690398455483874150">{count,plural, =1{आता एक Chrome विंडो दाखवत आहे}other{आता {count} Chrome विंडो दाखवत आहे}}</translation>
@@ -570,6 +588,7 @@
 <translation id="5724941645893276623">वेब खाजगीरीत्‍या ब्राउझ करण्यासाठी नवीन टॅब जोडा</translation>
 <translation id="5728700505257787410">क्षमस्व, आपल्या खात्यामध्ये साइन इन करताना काहीतरी समस्या आली.</translation>
 <translation id="5731784586962650619">इतर अ‍ॅप्समधील पासवर्ड</translation>
+<translation id="5733084997078800044">Chrome शी संबंधित टीप</translation>
 <translation id="5737974891429562743">खाते साइन-इन तपशील कालबाह्य झाले आहेत. सिंक सुरू करण्यासाठी अपडेट करा.</translation>
 <translation id="5738385766833540397">तुम्ही माग ठेवत असलेल्या उत्पादनांसाठी तुम्हाला किमतीमध्ये घट झाल्याच्या सूचना कशा मिळतात ते व्यवस्थापित करा</translation>
 <translation id="5738887413654608789">हे तुम्हाला आपल्या सभोवतालच्या गोष्टींवर आधारित संबंधित वेब पेज शोधू देते.</translation>
@@ -583,6 +602,7 @@
 <translation id="5812974770859303494">यामध्ये जोडा...</translation>
 <translation id="581659025233126501">सिंक सुरू करा</translation>
 <translation id="5819208479324046259"><ph name="MANAGER" /> ने व्यवस्थापित केलेले. <ph name="BEGIN_LINK" />अधिक जाणून घ्या<ph name="END_LINK" /></translation>
+<translation id="5833643789537100742">Chrome चे पासवर्ड, पेमेंट पद्धती आणि ॲड्रेस नंतर ऑटोफिल करण्यासाठी सेव्ह करा.</translation>
 <translation id="5846482154967366008">शोध इंजीन</translation>
 <translation id="5854790677617711513">30 दिवसांपेक्षा जुना</translation>
 <translation id="5857090052475505287">नवीन फोल्डर</translation>
@@ -598,6 +618,7 @@
 <translation id="5913600720976431809">पेज भाषांतरित करण्यासाठी पर्याय</translation>
 <translation id="5938160824633642847">तुमचे डिव्हाइस जवळजवळ भरले आहे. जागा मोकळी करा आणि पुन्हा प्रयत्न करा.</translation>
 <translation id="5948291296578561264">हे तुम्हाला तुमच्या फोटो लायब्ररीवर फोटो सेव्ह करू देते.</translation>
+<translation id="5951816930277761335">लिंक शेअर करा</translation>
 <translation id="5955891643922670672">ऑफलाइन आवृत्ती पाहत आहे</translation>
 <translation id="5957613098218939406">अधिक पर्याय</translation>
 <translation id="5963939892571022323">हायलाइट करण्यासाठीची लिंक तयार करू शकत नाही.</translation>
@@ -637,6 +658,7 @@
 <translation id="6189413832092199491">न वाचलेले</translation>
 <translation id="6196207969502475924">व्हॉइस शोध</translation>
 <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT} टॅब बंद करा}other{{COUNT} टॅब बंद करा}}</translation>
+<translation id="6219550825416862075">पुन्हा स्वागत आहे</translation>
 <translation id="6219688215832490856">कधीही भाषांतर करू नका</translation>
 <translation id="6223816392543092032">तुमच्या सर्व डिव्हाइसवर तुमचे बुकमार्क, इतिहास, पासवर्ड आणि इतर सेटिंग्ज मिळवा.</translation>
 <translation id="6231782223312638214">सूचित</translation>
@@ -725,6 +747,7 @@
 गुप्त मोडमध्ये असताना, वेगवेगळ्या साइटवरील तुमची ब्राउझिंग अ‍ॅक्टिव्हिटी पाहण्यासाठी साइट कुकी वापरू शकत नाहीत, उदाहरणार्थ, जाहिराती पर्सनलाइझ करण्यासाठी.</translation>
 <translation id="6674571176963658787">सिंक सुरू करण्यासाठी तुमचा पासफ्रेझ एंटर करा</translation>
 <translation id="667999046851023355">दस्तऐवज</translation>
+<translation id="6684906340059221832">किमतींचा माग ठेवत आहे</translation>
 <translation id="6710079714193676716">तुमच्या संस्थेने व्यवस्थापित केलेला. काही वैशिष्ट्ये कदाचित उपलब्ध नसतील. <ph name="BEGIN_LINK" />अधिक जाणून घ्या<ph name="END_LINK" /></translation>
 <translation id="6713747756340119864">Google Apps</translation>
 <translation id="6730682669179532099">पासवर्ड एक्सपोर्ट करू शकत नाही</translation>
@@ -758,6 +781,7 @@
 <translation id="6945221475159498467">निवडा</translation>
 <translation id="6965382102122355670">ठीक आहे</translation>
 <translation id="6973630695168034713">फोल्डर</translation>
+<translation id="6975148662438928529">तुमच्या iPad रीसेटचा भाग म्हणून तुम्हाला <ph name="USER_NAME" /> खात्यामधून साइन आउट केले गेले होते. साइन इन करण्यासाठी, सुरू ठेवा वर खाली टॅप करा.</translation>
 <translation id="6979158407327259162">Google Drive</translation>
 <translation id="6988572888918530647">तुमचे Google खाते व्यवस्थापित करा</translation>
 <translation id="6989674195860388998">सेटिंग्ज मध्ये स्विच करा…</translation>
@@ -791,12 +815,16 @@
 <translation id="7265758999917665941">या साइटसाठी कधीही नाही</translation>
 <translation id="7272437679830969316">तुमच्या ओळखीची पडताळणी करता आली नाही. पासवर्ड कॉपी केला नाही.</translation>
 <translation id="7291368939935408496">पासवर्ड तयार करत आहे…</translation>
+<translation id="730958329302570991">Google Password Manager मध्ये साइटचे पासवर्ड कधीही सहजपणे जोडा.</translation>
 <translation id="7313347584264171202">तुमचे गुप्त टॅब तुम्हाला येथे सापडतील</translation>
+<translation id="7315813263062036945">सर्वात वरती डावीकडे, शोध आयकन वर टॅप करा</translation>
 <translation id="7336264872878993241"><ph name="PERCENT" /> टक्के डाउनलोड केले</translation>
 <translation id="7340958967809483333">Discover चे पर्याय</translation>
 <translation id="7346909386216857016">ठीक आहे, समजले</translation>
 <translation id="734758817008927353">कार्ड सेव्ह करण्यासाठी पर्याय</translation>
+<translation id="7351537303876921605">कॉंटेक्स्ट मेनू मध्ये लिंक तयार करा वर टॅप करा</translation>
 <translation id="7353432112255316844">हे तुम्हीच असल्याची पडताळणी करा</translation>
+<translation id="7356359962760467032">किमतीचा माग ठेवणे थांबवा</translation>
 <translation id="7383797227493018512">वाचन सूची</translation>
 <translation id="7398893703713203428">लिंक तयार करा</translation>
 <translation id="739941347996872055">मागील टॅब</translation>
@@ -817,6 +845,7 @@
 <translation id="750493650310597496">0 निवडले</translation>
 <translation id="7508728395076009983">तुमचे गुप्त टॅब लॉक करण्यासाठी, टच आयडी, फेस आयडी किंवा पासकोड सेट करा.</translation>
 <translation id="7514365320538308">डाउनलोड करा</translation>
+<translation id="7531345132340165516">सध्याची साइट</translation>
 <translation id="7537586195939242955">क्षमस्व, यावेळी तुमचा पास पासबुकमध्ये इंस्टॉल केला जाऊ शकत नाही.</translation>
 <translation id="7554791636758816595">नवीन टॅब</translation>
 <translation id="7561196759112975576">नेहमी</translation>
@@ -827,6 +856,7 @@
 <translation id="7638584964844754484">अयोग्य सांकेतिक पासफ्रेझ</translation>
 <translation id="7646263789464975852">मेनू → सेटिंग्ज → सुरक्षितता तपासणी</translation>
 <translation id="7646772052135772216">पासवर्ड सिंक काम करत नाही</translation>
+<translation id="764827086632467055">डीफॉल्ट ब्राउझर अ‍ॅप वर टॅप करा</translation>
 <translation id="7649070708921625228">मदत</translation>
 <translation id="7658239707568436148">रद्द करा</translation>
 <translation id="7671141431838911305">स्‍थापित करा</translation>
@@ -849,6 +879,7 @@
 <translation id="784551991304901159">आशय पाहण्यासाठी, मेनूमधून सुरू करा निवडा</translation>
 <translation id="7853202427316060426">गतिविधी</translation>
 <translation id="7856733331829174190">डाउनलोड करता आले नाही</translation>
+<translation id="785938070103630874">पासवर्ड, पेमेंट पद्धती किंवा ॲड्रेस आणि आणखी बरेच काही उघडा</translation>
 <translation id="7859704718976024901">ब्राउझिंग इतिहास</translation>
 <translation id="7884694604461143138">शोध इतिहास (<ph name="COUNT" /> आढळले)</translation>
 <translation id="7887198238286927132">तुमच्या गोपनीयतेचे संरक्षण करण्‍यासाठी, Chrome हा भाग ऑटोफिल करणार नाही.</translation>
@@ -868,6 +899,7 @@
 <translation id="7971521879845308059">पॉप-अप ब्लॉक करा</translation>
 <translation id="797413074872316787">सर्व डिव्हाइसवर सिंक आणि पर्सनलाइझ करण्यासाठी, सिंक सुरू करा.</translation>
 <translation id="7978018860671536736">३. AutoFill पासवर्ड वर टॅप करा</translation>
+<translation id="7981908678811807838">या साइटसाठी किमतीचा माग ठेवणे उपलब्ध नाही.</translation>
 <translation id="7982789257301363584">नेटवर्क</translation>
 <translation id="7987685713885608670">अतिरिक्त सुरक्षिततेसाठी, पासवर्ड हे Google पासवर्ड व्यवस्थापक यामध्ये सेव्ह केले जाण्यापूर्वी ते तुमच्या डिव्हाइसवर एंक्रिप्ट करा.</translation>
 <translation id="7993619969781047893">काही साइटवरील वैशिष्ट्यांमध्ये खंड पडू शकतो</translation>
@@ -903,11 +935,13 @@
 <translation id="8237382152611443140">AutoFill पासवर्ड सेटिंग्ज उघडा</translation>
 <translation id="8261506727792406068">हटवा</translation>
 <translation id="8271720166617117963">स्वीकार करा आणि साइन इन करा</translation>
+<translation id="8278938988428169257">शब्द किंवा वाक्य एंटर करा</translation>
 <translation id="8281781826761538115">डीफॉल्ट - <ph name="DEFAULT_LOCALE" /></translation>
 <translation id="8281886186245836920">वगळा</translation>
 <translation id="8283172974887967105">सेट करा…</translation>
 <translation id="8299417921174340354">पासवर्ड वापरण्यासाठी, तुम्ही आधी तुमच्या डिव्हाइसवर पासकोड सेट करणे आवश्यक आहे.</translation>
 <translation id="8299613349954694191">वेब खाजगीरीत्या ब्राउझ करण्‍यासाठी गुप्त टॅब उघडा.</translation>
+<translation id="8316944564970119719">साइट आणि पासवर्ड एंटर करा, त्यानंतर सेव्ह करा</translation>
 <translation id="8319076807703933069">नवीन शोध</translation>
 <translation id="8323906514956095947">आणखी टॅब पर्यायांसाठी स्पर्श करा आणि धरून ठेवा</translation>
 <translation id="8328777765163860529">सर्व बंद करा</translation>
@@ -935,6 +969,7 @@
 <translation id="8533670235862049797">सुरक्षित ब्राउझिंग सुरू आहे</translation>
 <translation id="8534481786647257214">Google+ पोस्ट पूर्ण केले.</translation>
 <translation id="8548878600947630424">पृष्ठामध्ये शोधा...</translation>
+<translation id="8558480467877843976">तुम्ही आता मेसेज, दस्तऐवज आणि इतर अ‍ॅप्समधील लिंक ब्राउझ करता किंवा त्यावर टॅप करता, तेव्हा Chrome कधीही वापरू शकता.</translation>
 <translation id="8588404856427128947">बंद करा</translation>
 <translation id="8590913940444621808">कधीही विचारू नका</translation>
 <translation id="8591976964826315682">तृतीय पक्ष कुकी गुप्त मोडमध्ये ब्लॉक करा</translation>
@@ -952,6 +987,8 @@
 <translation id="8721297211384281569">साधने मेनू</translation>
 <translation id="8725066075913043281">पुन्हा प्रयत्न करा</translation>
 <translation id="8730621377337864115">पूर्ण झाले</translation>
+<translation id="8731388423028622182">तुमच्या iPhone रीसेटचा भाग म्हणून तुम्हाला <ph name="USER_NAME" /> खात्यामधून साइन आउट केले गेले होते. साइन इन करण्यासाठी, सुरू ठेवा वर खाली टॅप करा.</translation>
+<translation id="87371078663613140">मेनू बारमधील पर्याय एक्सप्लोर करा</translation>
 <translation id="8741995161408053644">आपल्या Google खात्यात ब्राउझिंग इतिहासाची इतर स्वरूपे  <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /> वर असू शकतात.</translation>
 <translation id="8750037785291841318">तुमचे टॅब तुम्हाला येथे सापडतील</translation>
 <translation id="8756969031206844760">पासवर्ड अपडेट करायचा आहे का?</translation>
@@ -969,10 +1006,13 @@
 <translation id="8868471676553493380">{count,plural, =1{{count} टॅब}other{{count} टॅब}}</translation>
 <translation id="8870413625673593573">अलीकडे बंद</translation>
 <translation id="8876882697946675716">तुमची डिव्हाइस सिंकमध्ये ठेवा</translation>
+<translation id="8877287418679067891">सेटिंग्ज मध्ये डीफॉल्ट करा...</translation>
 <translation id="8881801611828450202">या इमेजसाठी <ph name="SEARCH_ENGINE" /> शोधा</translation>
 <translation id="8891935667620843985">तुम्ही Chrome ला तुमचे डीफॉल्ट ब्राउझर अ‍ॅप सेट करून त्यामध्ये आपोआप लिंक उघडू शकता.</translation>
 <translation id="8898822736010347272">नवीन धोके शोधण्यात आणि वेबवरील प्रत्येकाचे संरक्षण करण्यात मदत करण्यासाठी, तुम्ही भेट देत असलेल्या काही पेजच्या URL, मर्यादित सिस्टम माहिती आणि काही पेज आशय Google ला पाठवते.</translation>
 <translation id="8909135823018751308">शेअर करा...</translation>
+<translation id="8911759861431145525">जोडा वर टॅप करा, त्यानंतर तुमची माहिती एंटर करा</translation>
+<translation id="891658175948553296">साइट वरील मजकूर हायलाइट करा</translation>
 <translation id="8917490105272468696">होय, मला मान्य आहे</translation>
 <translation id="8928133177108699615">डेस्कटॉप</translation>
 <translation id="8952559610785099500">पासवर्ड जोडा</translation>
@@ -1010,6 +1050,7 @@
 <translation id="9203116392574189331">Handoff</translation>
 <translation id="9223358826628549784">क्रॅश अहवाल पाठवला.</translation>
 <translation id="952704832371081537">रद्द करा</translation>
+<translation id="953008885340860025">Chrome साइन आउट केले आहे</translation>
 <translation id="959066944189734975">तुम्ही <ph name="CHANNEL_NAME" /> ला फॉलो करत आहात</translation>
 <translation id="981498610235328462">तुमची संस्था तुम्हाला फक्त ठरावीक खाती वापरून साइन इन करण्याची अनुमती देते. अनुमती नसलेली खाती लपवली जातात.</translation>
 <translation id="984509647832111802">सिंक काम करत नाही.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ms.xtb b/ios/chrome/app/strings/resources/ios_strings_ms.xtb
index 9af760d..fc4a8e9 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ms.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ms.xtb
@@ -19,6 +19,7 @@
 <translation id="1076421457278169141">Kod diimbas</translation>
 <translation id="1076785341346483463">Segerakkan dengan Akaun Terurus</translation>
 <translation id="1084365883616172403">Catatan Facebook selesai.</translation>
+<translation id="1085696779717592361">Gunakan Chrome Secara Lalai</translation>
 <translation id="1103523840287552314">Sentiasa terjemahkan <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Terima &amp; Teruskan</translation>
 <translation id="110724200315609752">Tukar kepada Tetingkap Terbuka</translation>
@@ -34,6 +35,7 @@
 <translation id="1165039591588034296">Ralat</translation>
 <translation id="1172898394251786223">Medan seterusnya</translation>
 <translation id="1176932207622159128">Gagal Simpan Imej</translation>
+<translation id="1177414119866731261">Buka Menu Chrome</translation>
 <translation id="1181037720776840403">Alih keluar</translation>
 <translation id="1207113853726624428">Carian Baharu</translation>
 <translation id="1209206284964581585">Sorok sementara</translation>
@@ -82,6 +84,7 @@
 <translation id="152234381334907219">Tidak Pernah Disimpan</translation>
 <translation id="1523341279170789507">Benarkan Semua Kuki</translation>
 <translation id="1524563461097350801">Tidak Perlu</translation>
+<translation id="1531836666020185856">Ditampilkan</translation>
 <translation id="1535268707340844072">Tetapan semasa anda mungkin menyebabkan sesetengah tapak rosak. Untuk mengurus kuki bagi semua tapak, lihat <ph name="BEGIN_LINK" />Tetapan Kuki<ph name="END_LINK" />.</translation>
 <translation id="1540800554400757039">Alamat 1</translation>
 <translation id="1545749641540134597">Imbas Kod QR</translation>
@@ -109,6 +112,7 @@
 <translation id="1740468249224277719">Ketik dua kali untuk memasang.</translation>
 <translation id="1752547299766512813">Simpan K/Laluan</translation>
 <translation id="1753905327828125965">Paling Kerap Dilawati</translation>
+<translation id="1789803444939621101">Selamat kembali, <ph name="USER_NAME" /></translation>
 <translation id="1803264062614276815">Nama Pemegang Kad</translation>
 <translation id="1809939268435598390">Padam Folder</translation>
 <translation id="1813414402673211292">Kosongkan Data Semakan Imbas</translation>
@@ -162,6 +166,7 @@
 <translation id="2302742851632557585">Tukar Kata Laluan pada Tapak Web</translation>
 <translation id="2316709634732130529">Gunakan Kata Laluan yang Dicadangkan</translation>
 <translation id="2320166752086256636">Sembunyikan papan kekunci</translation>
+<translation id="2328842561016935977">Ketik Kata Laluan Kemudian Ketik Tambah</translation>
 <translation id="2351097562818989364">Tetapan terjemahan anda telah ditetapkan semula.</translation>
 <translation id="235789365079050412">Dasar Privasi Google</translation>
 <translation id="2359043044084662842">Terjemah</translation>
@@ -220,6 +225,7 @@
 <translation id="2781331604911854368">Hidupkan</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2783054063075604403">Tidak Dapat Membuat Pautan</translation>
+<translation id="2786701870377699570">Cari Tab Pada Semua Peranti Disegerakkan</translation>
 <translation id="2800683595868705743">Tinggalkan Penukar Tab</translation>
 <translation id="2815198996063984598">2. Ketik Apl Penyemak Imbas Lalai</translation>
 <translation id="2820289420301699633">Pentadbir anda boleh mengawal Chrome dan dapat mengakses data penyemak imbas itu</translation>
@@ -243,6 +249,7 @@
 <translation id="2923448633003185837">Tampal dan Pergi</translation>
 <translation id="292639812446257861">Tandakan Belum Dibaca</translation>
 <translation id="2932085390869194046">Cadangkan Kata Laluan...</translation>
+<translation id="2932765531295814441">Tambah Kata Laluan Secara Manual</translation>
 <translation id="2952581218264071393">1. Buka Tetapan Chrome</translation>
 <translation id="2958718410589002129">Kata laluan</translation>
 <translation id="2961210776189273067">Tajuk</translation>
@@ -278,6 +285,7 @@
 <translation id="3181954750937456830">Penyemakan Imbas Selamat (melindungi anda dan peranti anda daripada tapak yang berbahaya)</translation>
 <translation id="3184767182050912705">Buka Kunci dengan <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation>
 <translation id="3207960819495026254">Ditandai halaman</translation>
+<translation id="3214379938835224220">Anda telah dilog keluar sebagai sebahagian daripada tetapan semula iPad anda. Ketik teruskan di bawah untuk log masuk.</translation>
 <translation id="3224641773458703735">Untuk mengeksport kata laluan, mula-mula anda mesti menetapkan kod laluan pada peranti anda.</translation>
 <translation id="3227137524299004712">Mikrofon</translation>
 <translation id="3240426699337459095">Pautan disalin</translation>
@@ -295,6 +303,7 @@
 <translation id="3329904751041170572">Tidak dapat menyambung ke pelayan.</translation>
 <translation id="3335947283844343239">Buka Semula Tab Yang Ditutup</translation>
 <translation id="3371831930909698441">Terjemah tersedia. Pilihan tersedia berhampiran bahagian bawah skrin.</translation>
+<translation id="3377063233124932127">Kini penanda halaman, kata laluan anda yang disimpan dan pelbagai lagi berada di bahagian atas.</translation>
 <translation id="3393920035788932672">Pop Timbul Dibenarkn</translation>
 <translation id="3399930248910934354">Buka Tetapan Chrome</translation>
 <translation id="3404744938087714423">Tindakan log keluar mematikan penyegerakan.</translation>
@@ -317,11 +326,13 @@
 <translation id="3519193562722059437">Buka tab untuk menyemak imbas web.</translation>
 <translation id="3527085408025491307">Folder</translation>
 <translation id="3529024052484145543">Tidak selamat</translation>
+<translation id="3530206579861815432">Cari tab terbuka dan baru ditutup dengan pantas di seluruh peranti anda yang disegerakkan.</translation>
 <translation id="3533202363250687977">Tutup Semua Tab Inkognito</translation>
 <translation id="3533436815740441613">Tab Baharu</translation>
 <translation id="3551320343578183772">Tutup Tab</translation>
 <translation id="3581564640715911333">Tawaran untuk menterjemah halaman dalam bahasa lain</translation>
 <translation id="3588820906588687999">Buka Imej dalam Tab Baharu</translation>
+<translation id="3595252146048399851">Anda boleh memilih item yang hendak disegerakkan dalam <ph name="BEGIN_LINK" />tetapan<ph name="END_LINK" /> pada bila-bila masa. Google mungkin memeribadikan Carian dan perkhidmatan lain berdasarkan sejarah anda.</translation>
 <translation id="3603009562372709545">Salin URL Paut</translation>
 <translation id="3607167657931203000">Autolengkap Data</translation>
 <translation id="3609785682760573515">Menyegerakkan...</translation>
@@ -370,6 +381,7 @@
 <translation id="4018310736049373830">Urus Aktiviti</translation>
 <translation id="4038354071007134711">Tiada aplikasi pada peranti ini yang dapat membuka fail itu.</translation>
 <translation id="4042870976416480368">Cari dalam Halaman</translation>
+<translation id="40433179647657191">Buat dan kongsi pautan terus ke bahagian halaman yang telah anda serlahkan.</translation>
 <translation id="4049507953662678203">Pastikan anda mempunyai sambungan rangkaian dan cuba lagi.</translation>
 <translation id="4063300985191096908">Pergi Ke Suapan</translation>
 <translation id="408404951701638773">Kini bar Carian lebih mudah dicapai</translation>
@@ -387,11 +399,13 @@
 <translation id="4181841719683918333">Bahasa</translation>
 <translation id="4187450337729239226">Tampal dan Cari</translation>
 <translation id="4223967053752765281">Organisasi anda telah mematikan log masuk. Anda masih boleh melihat penanda halaman, sejarah, kata laluan dan tetapan anda yang lain pada peranti ini. Jika perubahan dibuat, perubahan itu tidak akan disegerakkan ke akaun anda.</translation>
+<translation id="4232900911558558076">Teroka Menu Baharu</translation>
 <translation id="4233831822770018312">Edit Kebenaran</translation>
 <translation id="4236584471598725073">Menjejak Harga</translation>
 <translation id="4237377247299956313">Ketik <ph name="BEGIN_BOLD" />Apl Penyemak Imbas Lalai<ph name="END_BOLD" /></translation>
 <translation id="424315890655130736">Masukkan Ungkapan Laluan</translation>
 <translation id="4249955472157341256">Isih mengikut yang Terbaharu</translation>
+<translation id="42618743927498729">Dapatkan makluman sekiranya harga turun pada mana-mana laman.</translation>
 <translation id="4263576668337963058">Tunjukkan tindakan halaman yang tersedia</translation>
 <translation id="4267380167363222949">Tab Seterusnya</translation>
 <translation id="4272631900155121838">Untuk mengimbas kod QR, dayakan kamera daripada tetapan</translation>
@@ -534,6 +548,7 @@
 <translation id="5388358297987318779">Buka Imej</translation>
 <translation id="5407969256130905701">Buang Perubahan</translation>
 <translation id="5416022985862681400">7 Hari Lalu</translation>
+<translation id="5423269318075950257">Jejaki Harga</translation>
 <translation id="543338862236136125">Edit kata laluan</translation>
 <translation id="5433691172869980887">Nama pengguna disalin</translation>
 <translation id="5439599923922718668">Kerap Dilawati</translation>
@@ -553,11 +568,15 @@
 <translation id="5556459405103347317">Muat Semula</translation>
 <translation id="556042886152191864">Butang</translation>
 <translation id="5580834567471114021">Tambahkan pada Senarai Bacaan untuk Kemudian?</translation>
+<translation id="5597915316964418992">Buka Grid Tab</translation>
 <translation id="560322036295180549">Dimatikan oleh organisasi anda</translation>
 <translation id="5614553682702429503">Simpan kata laluan?</translation>
 <translation id="5626245204502895507">Fail tidak boleh dimuat turun pada masa ini.</translation>
 <translation id="5631164295104953411">Tambahkan Kaedah Pembayaran</translation>
+<translation id="5636282538000367086">Ketahui perkara baharu dalam Chrome</translation>
+<translation id="5652623411397330904">Produk yang anda jejaki akan dipaparkan di sini.</translation>
 <translation id="5659593005791499971">E-mel</translation>
+<translation id="5669335982068190158">Anda telah dilog keluar sebagai sebahagian daripada tetapan semula iPhone anda. Ketik teruskan di bawah untuk log masuk.</translation>
 <translation id="5669528293118408608">www</translation>
 <translation id="567881659373499783">Versi <ph name="PRODUCT_VERSION" /></translation>
 <translation id="5690398455483874150">{count,plural, =1{Kini memaparkan 1 tetingkap Chrome}other{Kini memaparkan {count} tetingkap Chrome}}</translation>
@@ -568,6 +587,7 @@
 <translation id="5724941645893276623">Untuk menyemak imbas web secara sulit, tambah tab baharu</translation>
 <translation id="5728700505257787410">Maaf, terdapat masalah untuk log masuk ke akaun anda.</translation>
 <translation id="5731784586962650619">Kata Laluan Dalam Apl Lain</translation>
+<translation id="5733084997078800044">Petua Chrome</translation>
 <translation id="5737974891429562743">Butiran log masuk akaun sudah lapuk. Sila kemas kini untuk memulakan penyegerakan.</translation>
 <translation id="5738385766833540397">Urus cara anda menerima makluman penurunan harga untuk produk yang anda jejaki</translation>
 <translation id="5738887413654608789">Langkah ini membolehkan anda menemui halaman web yang berkaitan berdasarkan persekitaran anda.</translation>
@@ -581,6 +601,7 @@
 <translation id="5812974770859303494">Tambahkan pada...</translation>
 <translation id="581659025233126501">Hidupkan Penyegerakan</translation>
 <translation id="5819208479324046259">Diurus oleh <ph name="MANAGER" />. <ph name="BEGIN_LINK" />Ketahui lebih lanjut<ph name="END_LINK" /></translation>
+<translation id="5833643789537100742">Simpan kata laluan, kaedah pembayaran dan alamat untuk Chrome bagi autolengkap kemudian.</translation>
 <translation id="5846482154967366008">Enjin Carian</translation>
 <translation id="5854790677617711513">Lebih lama daripada 30 hari</translation>
 <translation id="5857090052475505287">Folder Baharu</translation>
@@ -596,6 +617,7 @@
 <translation id="5913600720976431809">Pilihan untuk Menterjemah halaman</translation>
 <translation id="5938160824633642847">Peranti anda hampir penuh. Kosongkan ruang dan cuba lagi.</translation>
 <translation id="5948291296578561264">Tindakan ini membolehkan anda menyimpan foto pada pustaka foto anda.</translation>
+<translation id="5951816930277761335">Kongsi Pautan</translation>
 <translation id="5955891643922670672">Melihat Versi Luar Talian</translation>
 <translation id="5957613098218939406">Lebih Banyak Pilihan</translation>
 <translation id="5963939892571022323">Pautan kepada serlahan tidak dapat dibuat.</translation>
@@ -635,6 +657,7 @@
 <translation id="6189413832092199491">Belum dibaca</translation>
 <translation id="6196207969502475924">Carian Suara</translation>
 <translation id="6202364442240589072">{COUNT,plural, =1{Tutup {COUNT} Tab}other{Tutup {COUNT} Tab}}</translation>
+<translation id="6219550825416862075">Selamat Kembali</translation>
 <translation id="6219688215832490856">Jangan Sekali-kali Terjemah</translation>
 <translation id="6223816392543092032">Dapatkan penanda halaman, sejarah, kata laluan dan tetapan anda yang lain pada semua peranti anda.</translation>
 <translation id="6231782223312638214">Dicadangkan</translation>
@@ -722,6 +745,7 @@
 Semasa dalam mod Inkognito, laman tidak boleh menggunakan kuki untuk melihat aktiviti penyemakan imbas merentas beberapa laman lain, contohnya, untuk memperibadikan iklan.</translation>
 <translation id="6674571176963658787">Untuk memulakan penyegerakan, masukkan ungkapan laluan anda</translation>
 <translation id="667999046851023355">Dokumen</translation>
+<translation id="6684906340059221832">Menjejak Harga</translation>
 <translation id="6710079714193676716">Diurus oleh organisasi anda. Sesetengah ciri mungkin tidak tersedia. <ph name="BEGIN_LINK" />Ketahui lebih lanjut<ph name="END_LINK" /></translation>
 <translation id="6713747756340119864">Google Apps</translation>
 <translation id="6730682669179532099">Tidak Dapat Mengeskport Kata Laluan</translation>
@@ -755,6 +779,7 @@
 <translation id="6945221475159498467">Pilih</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="6973630695168034713">Folder</translation>
+<translation id="6975148662438928529">Anda telah dilog keluar daripada akaun <ph name="USER_NAME" /> anda sebagai sebahagian daripada tetapan semula iPad anda. Ketik teruskan di bawah untuk log masuk.</translation>
 <translation id="6979158407327259162">Google Drive</translation>
 <translation id="6988572888918530647">Urus Google Account Anda</translation>
 <translation id="6989674195860388998">Tukar dalam Tetapan…</translation>
@@ -788,12 +813,16 @@
 <translation id="7265758999917665941">Jangan Sekali-kali untuk Tapak Ini</translation>
 <translation id="7272437679830969316">Tidak dapat mengesahkan identiti anda. Kata laluan tidak disalin.</translation>
 <translation id="7291368939935408496">Menyediakan Kata Laluan…</translation>
+<translation id="730958329302570991">Tambah kata laluan pada Google Password Manager dengan mudah pada bila-bila masa.</translation>
 <translation id="7313347584264171202">Anda dapat menemukan tab Inkognito anda di sini</translation>
+<translation id="7315813263062036945">Di Bahagian Atas Sebelah Kiri, ketik Ikon Search</translation>
 <translation id="7336264872878993241"><ph name="PERCENT" /> peratus dimuat turun</translation>
 <translation id="7340958967809483333">Pilihan untuk Discover</translation>
 <translation id="7346909386216857016">Ok, faham</translation>
 <translation id="734758817008927353">Pilihan untuk Simpan Kad</translation>
+<translation id="7351537303876921605">Ketik Cipta Pautan dalam Menu Konteks</translation>
 <translation id="7353432112255316844">Sahkan Orang Itu Ialah Anda</translation>
+<translation id="7356359962760467032">Hentikan penjejakan harga</translation>
 <translation id="7383797227493018512">Senarai Bacaan</translation>
 <translation id="7398893703713203428">Buat Pautan</translation>
 <translation id="739941347996872055">Tab Sebelumnya</translation>
@@ -814,6 +843,7 @@
 <translation id="750493650310597496">0 dipilih</translation>
 <translation id="7508728395076009983">Untuk mengunci tab Inkognito anda, sediakan Touch ID, Face ID atau Kod Laluan.</translation>
 <translation id="7514365320538308">Muat Turun</translation>
+<translation id="7531345132340165516">Laman Semasa</translation>
 <translation id="7537586195939242955">Maaf, Pas anda tidak boleh dipasang pd Passbook pd masa ini.</translation>
 <translation id="7554791636758816595">Tab Baharu</translation>
 <translation id="7561196759112975576">Sentiasa</translation>
@@ -824,6 +854,7 @@
 <translation id="7638584964844754484">Frasa laluan tidak betul</translation>
 <translation id="7646263789464975852">Menu → Tetapan → Semakan Keselamatan</translation>
 <translation id="7646772052135772216">Penyegerakan kata laluan tidak berfungsi</translation>
+<translation id="764827086632467055">Ketik Apl Penyemak Imbas Lalai</translation>
 <translation id="7649070708921625228">Bantuan</translation>
 <translation id="7658239707568436148">Batal</translation>
 <translation id="7671141431838911305">PASANG</translation>
@@ -846,6 +877,7 @@
 <translation id="784551991304901159">Untuk melihat kandungan, pilih Hidupkan daripada menu</translation>
 <translation id="7853202427316060426">Aktiviti</translation>
 <translation id="7856733331829174190">Tidak Dapat Memuat Turun</translation>
+<translation id="785938070103630874">Buka Kata Laluan, Kaedah Pembayaran atau Alamat dan Pelbagai Lagi</translation>
 <translation id="7859704718976024901">Sejarah Penyemakan Imbas</translation>
 <translation id="7884694604461143138">Sejarah Carian (<ph name="COUNT" /> Ditemukan)</translation>
 <translation id="7887198238286927132">Untuk melindungi privasi anda, Chrome tidak akan mengisi medan ini secara automatik.</translation>
@@ -865,6 +897,7 @@
 <translation id="7971521879845308059">Sekat P/Timbul</translation>
 <translation id="797413074872316787">Hidupkan penyegerakan untuk melakukan penyegerakan dan pemperibadian pada semua peranti.</translation>
 <translation id="7978018860671536736">3. Ketik Kata Laluan Autolengkap</translation>
+<translation id="7981908678811807838">Penjejakan harga tidak tersedia untuk laman ini.</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>
 <translation id="7993619969781047893">Ciri pada sesetengah tapak mungkin rosak</translation>
@@ -900,11 +933,13 @@
 <translation id="8237382152611443140">Buka Tetapan Kata Laluan Autolengkap</translation>
 <translation id="8261506727792406068">Padam</translation>
 <translation id="8271720166617117963">Terima dan Log masuk</translation>
+<translation id="8278938988428169257">Masukkan Perkataan atau Frasa</translation>
 <translation id="8281781826761538115">Lalai - <ph name="DEFAULT_LOCALE" /></translation>
 <translation id="8281886186245836920">Langkau</translation>
 <translation id="8283172974887967105">Tetapkan…</translation>
 <translation id="8299417921174340354">Untuk menggunakan kata laluan, anda mesti menetapkan kod laluan pada peranti anda dahulu.</translation>
 <translation id="8299613349954694191">Buka tab Inkognito untuk menyemak imbas web secara tertutup.</translation>
+<translation id="8316944564970119719">Masukkan Laman dan Kata Laluan, Kemudian Simpan</translation>
 <translation id="8319076807703933069">Carian Baharu</translation>
 <translation id="8323906514956095947">Sentuh &amp; tahan untuk melihat lagi pilihan tab</translation>
 <translation id="8328777765163860529">Tutup Semua</translation>
@@ -932,6 +967,7 @@
 <translation id="8533670235862049797">Penyemakan Imbas Selamat dihidupkan</translation>
 <translation id="8534481786647257214">Catatan Google+ selesai.</translation>
 <translation id="8548878600947630424">Cari dalam halaman...</translation>
+<translation id="8558480467877843976">Kini anda boleh menggunakan Chrome pada bila-bila masa anda menyemak imbas atau mengetik pautan dalam mesej, dokumen dan apl lain.</translation>
 <translation id="8588404856427128947">Mati</translation>
 <translation id="8590913940444621808">Jangan Tanya</translation>
 <translation id="8591976964826315682">Sekat Kuki Pihak Ketiga dalam Inkognito</translation>
@@ -949,6 +985,8 @@
 <translation id="8721297211384281569">Menu Alat</translation>
 <translation id="8725066075913043281">Cuba lagi</translation>
 <translation id="8730621377337864115">Selesai</translation>
+<translation id="8731388423028622182">Anda telah dilog keluar daripada akaun <ph name="USER_NAME" /> anda sebagai sebahagian daripada tetapan semula iPhone anda. Ketik teruskan di bawah untuk log masuk.</translation>
+<translation id="87371078663613140">Teroka pilihan dalam bar menu</translation>
 <translation id="8741995161408053644">Akaun Google anda mungkin mempunyai sejarah penyemakan imbas dalam bentuk lain di <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" />.</translation>
 <translation id="8750037785291841318">Anda dapat menemukan tab anda di sini</translation>
 <translation id="8756969031206844760">Kemas kini kata laluan?</translation>
@@ -966,10 +1004,13 @@
 <translation id="8868471676553493380">{count,plural, =1{{count} Tab}other{{count} Tab}}</translation>
 <translation id="8870413625673593573">Ditutup Baru-baru Ini</translation>
 <translation id="8876882697946675716">Pastikan Peranti Anda Segerak</translation>
+<translation id="8877287418679067891">Jadikan Lalai dalam Tetapan…</translation>
 <translation id="8881801611828450202">Cari Imej Ini di <ph name="SEARCH_ENGINE" /></translation>
 <translation id="8891935667620843985">Anda boleh membuka pautan dalam Chrome secara automatik dengan menjadikan Chrome sebagai Apl Penyemak Imbas Lalai anda.</translation>
 <translation id="8898822736010347272">Menghantar URL sesetengah halaman yang anda lawati, maklumat sistem yang terhad dan sebahagian kandungan halaman kepada Google untuk menemukan ancaman baharu dan melindungi semua pengguna web.</translation>
 <translation id="8909135823018751308">Kongsi…</translation>
+<translation id="8911759861431145525">Ketik Tambah kemudian Masukkan Maklumat Anda</translation>
+<translation id="891658175948553296">Serlahkan Teks pada Laman</translation>
 <translation id="8917490105272468696">Ya, Saya Ikut Serta</translation>
 <translation id="8928133177108699615">Desktop</translation>
 <translation id="8952559610785099500">Tambah Kata Laluan</translation>
@@ -1007,6 +1048,7 @@
 <translation id="9203116392574189331">Serah</translation>
 <translation id="9223358826628549784">Laporan ranap sistem dihantar.</translation>
 <translation id="952704832371081537">Batal</translation>
+<translation id="953008885340860025">Chrome sudah Dilog Keluar</translation>
 <translation id="959066944189734975">Anda mengikuti <ph name="CHANNEL_NAME" /></translation>
 <translation id="981498610235328462">Organisasi anda membenarkan anda log masuk dengan akaun tertentu sahaja. Akaun yang tidak dibenarkan disembunyikan.</translation>
 <translation id="984509647832111802">Penyegerakan Tidak Berfungsi.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_my.xtb b/ios/chrome/app/strings/resources/ios_strings_my.xtb
index 630dbdbb..0da56011 100644
--- a/ios/chrome/app/strings/resources/ios_strings_my.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_my.xtb
@@ -19,6 +19,7 @@
 <translation id="1076421457278169141">ကုဒ်ကို ဖတ်ပြီးပါပြီ</translation>
 <translation id="1076785341346483463">စီမံခန့်ခွဲထားသည့်အကောင့်ဖြင့် စင့်ခ်လုပ်ခြင်း</translation>
 <translation id="1084365883616172403">ဖေ့စ်ဘွတ်တွင် တင်ပြခြင်း ပြီးစီပါပြီ။</translation>
+<translation id="1085696779717592361">Chrome ကို မူရင်းသတ်မှတ်၍သုံးခြင်း</translation>
 <translation id="1103523840287552314"><ph name="LANGUAGE" />ကို အမြဲတမ်း ဘာသာပြန်ရန်</translation>
 <translation id="1104948393051856124">လက်ခံရန် &amp; ဆက်လုပ်ရန်</translation>
 <translation id="110724200315609752">'ဖွင့်ထားသော ဝင်းဒိုး' သို့ပြောင်းရန်</translation>
@@ -34,6 +35,7 @@
 <translation id="1165039591588034296">အမှား</translation>
 <translation id="1172898394251786223">ရှေ့ အကွက်</translation>
 <translation id="1176932207622159128">ရုပ်ပုံကို မသိမ်းဆည်းနိုင်ပါ။</translation>
+<translation id="1177414119866731261">Chrome မီနူးဖွင့်ပါ</translation>
 <translation id="1181037720776840403">ဖယ်ရှားရန်</translation>
 <translation id="1207113853726624428">ရှာဖွေမှု အသစ်</translation>
 <translation id="1209206284964581585">ယခု ဖျောက်ထားပါ</translation>
@@ -82,6 +84,7 @@
 <translation id="152234381334907219">ဘယ်တော့မှ သိမ်းဆည်းခြင်းမပြုပါ</translation>
 <translation id="1523341279170789507">ကွတ်ကီးအားလုံးကို ခွင့်ပြုရန်</translation>
 <translation id="1524563461097350801">မလိုပါ</translation>
+<translation id="1531836666020185856">အထူးဝန်ဆောင်မှုများ</translation>
 <translation id="1535268707340844072">သင့်လက်ရှိဆက်တင်များသည် အချို့ဝဘ်ဆိုက်များ အလုပ်လုပ်ခြင်းမှရပ်တန့်သွားစေနိုင်သည်။ ဝဘ်ဆိုက်အားလုံးအတွက် ကွတ်ကီးများကို စီမံရန် <ph name="BEGIN_LINK" />ကွတ်ကီးဆက်တင်များ<ph name="END_LINK" /> ကို ကြည့်ပါ။</translation>
 <translation id="1540800554400757039">လိပ်စာ: 1</translation>
 <translation id="1545749641540134597">QR ကုဒ်ကို ဖတ်ပါ</translation>
@@ -109,6 +112,7 @@
 <translation id="1740468249224277719">ထည့်သွင်းရန် နှစ်ချက်တို့ပါ။</translation>
 <translation id="1752547299766512813">စကားဝှက်များ သိမ်ဆည်းမည်</translation>
 <translation id="1753905327828125965">အများဆုံး ဝင်ကြည့်ခံခဲ့ရ</translation>
+<translation id="1789803444939621101">ပြန်လည်ကြိုဆိုပါသည် <ph name="USER_NAME" /></translation>
 <translation id="1803264062614276815">ကဒ်ကိုင်ဆောင်သူ၏ အမည်</translation>
 <translation id="1809939268435598390">ဖိုင်တွဲကို ဖျက်ရန်</translation>
 <translation id="1813414402673211292">ရွေးချယ်မှု ဒေတာကို ရှင်းလင်းမည်</translation>
@@ -162,6 +166,7 @@
 <translation id="2302742851632557585">ဝဘ်ဆိုက်ပေါ်ရှိ စကားဝှက်ပြောင်းရန်</translation>
 <translation id="2316709634732130529">အကြံပြုထားသည့် စကားဝှက်ကို သုံးရန်</translation>
 <translation id="2320166752086256636">ကီးဘုတ် ဝှက်ထားရန်</translation>
+<translation id="2328842561016935977">စကားဝှက်ကိုတို့ပြီး ထည့်ရန်ကိုတို့ပါ</translation>
 <translation id="2351097562818989364">သင်၏ ဘာသာပြန်ရေး ဆက်တင်များကို ပြန်သတ်မှတ်ခဲ့သည်။</translation>
 <translation id="235789365079050412">Google ကိုယ်ရေးအချက်အလက်လုံခြုံမှုဆိုင်ရာ မူဝါဒ</translation>
 <translation id="2359043044084662842">ဘာသာပြန်ရန်</translation>
@@ -220,6 +225,7 @@
 <translation id="2781331604911854368">ဖွင့်ထားသည်</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2783054063075604403">လင့်ခ်ကို ပြုလုပ်၍မရပါ</translation>
+<translation id="2786701870377699570">စင့်ခ်လုပ်ထားသော စက်များတွင် တဘ်ရှာဖွေခြင်း</translation>
 <translation id="2800683595868705743">တဘ် ခလုတ်ကို ထားရစ်ခဲ့ရန်</translation>
 <translation id="2815198996063984598">၂။ 'မူရင်း ဘရောင်ဇာအက်ပ်' ကို တို့ပါ</translation>
 <translation id="2820289420301699633">သင့်စီမံခန့်ခွဲသူက Chrome ကို ထိန်းချုပ်ခွင့်ရှိပြီး ၎င်း၏ဒေတာများကို ဝင်ကြည့်နိုင်သည်</translation>
@@ -243,6 +249,7 @@
 <translation id="2923448633003185837">ကူးထည့်ပြီး ဖွင့်ရန်</translation>
 <translation id="292639812446257861">မဖတ်ရသေးကြောင်း အမှတ်အသားလုပ်ရန်</translation>
 <translation id="2932085390869194046">စကားဝှက် အကြံပြုပါ…</translation>
+<translation id="2932765531295814441">စကားဝှက် ကိုယ်တိုင်ထည့်ခြင်း</translation>
 <translation id="2952581218264071393">၁။ 'Chrome ဆက်တင်များ' ဖွင့်ပါ</translation>
 <translation id="2958718410589002129">စကားဝှက်များ</translation>
 <translation id="2961210776189273067">ဂုဏ်ပုဒ်</translation>
@@ -278,6 +285,7 @@
 <translation id="3181954750937456830">အင်တာနက်ကို လုံခြုံစွာအသုံးပြုရေးစနစ် (သင်နှင့် သင့်စက်ကို အန္တရာယ်ရှိသည့် ဝဘ်ဆိုက်များမှ ကာကွယ်သည်)</translation>
 <translation id="3184767182050912705"><ph name="BIOMETRIC_AUTHENITCATION_TYPE" /> ဖြင့် လော့ခ်ဖွင့်ရန်</translation>
 <translation id="3207960819495026254">ဘွတ်မက်လုပ်ပြီး၏</translation>
+<translation id="3214379938835224220">သင့် iPad ပြင်ဆင်သတ်မှတ်မှု၏ လုပ်ဆောင်ချက်တစ်ခုအနေဖြင့် သင်ထွက်သွားသည်။ လက်မှတ်ထိုးဝင်ရန် အောက်ရှိရှေ့ဆက်ရန်ကို တို့ပါ။</translation>
 <translation id="3224641773458703735">စကားဝှက်များကို တင်ပို့ရန် သင့်စက်တွင် လျှို့ဝှက်ကုဒ်တစ်ခုကို ဦးစွာ သတ်မှတ်ရပါမည်။</translation>
 <translation id="3227137524299004712">မိုက်ခရိုဖုန်း</translation>
 <translation id="3240426699337459095">လင့်ခ်ကူးယူပြီးပါပြီ</translation>
@@ -295,6 +303,7 @@
 <translation id="3329904751041170572">ဆာဗာသို့ ချိတ်ဆက်၍ မရနိုင်ပါ။</translation>
 <translation id="3335947283844343239">ပိတ်ထားသည့် တဲဘ်ကို ပြန်ဖွင့်ရန်</translation>
 <translation id="3371831930909698441">ဘာသာပြန်နိုင်ပါသည်။ မျက်နှာပြင်အောက်ခြေအနီးတွင် ရွေးစရာများ ရှိသည်။</translation>
+<translation id="3377063233124932127">ယခု သင်သိမ်းထားသော လိပ်စာ၊ စကားဝှက် စသည်တို့သည် ထိပ်ဆုံးတွင် ရှိနေမည်။</translation>
 <translation id="3393920035788932672">ပေါ့အာပ်များကို ခွင့်ပြုထားသည်</translation>
 <translation id="3399930248910934354">'Chrome ဆက်တင်များ' ဖွင့်ရန်</translation>
 <translation id="3404744938087714423">ထွက်လိုက်ပါက စင့်ခ်လုပ်ခြင်းကို ပိတ်ပါမည်။</translation>
@@ -317,11 +326,13 @@
 <translation id="3519193562722059437">ဝဘ်ကို ကြည့်ရန် တဘ်တစ်ခု ဖွင့်ပါ။</translation>
 <translation id="3527085408025491307">ဖိုင်တွဲ</translation>
 <translation id="3529024052484145543">လုံခြုံမှုမရှိပါ</translation>
+<translation id="3530206579861815432">သင်၏ စင့်ခ်လုပ်ထားသောစက်များတွင် ဖွင့်ထားသော တဘ်နှင့် မကြာသေးမီက ပိတ်ထားသော တဘ်များကို အမြန်ရှာနိုင်သည်။</translation>
 <translation id="3533202363250687977">ရုပ်ဖျက်တဘ်များအားလုံး ပိတ်ရန်</translation>
 <translation id="3533436815740441613">တဘ်အသစ်</translation>
 <translation id="3551320343578183772">တဘ် ပိတ်ရန်</translation>
 <translation id="3581564640715911333">စာမျက်နှာများကို အခြားဘာသာစကားများဖြင့် ပြန်ဆိုရန် ကမ်းလှမ်းသည်</translation>
 <translation id="3588820906588687999">ရုပ်ပုံကို တက်ဘ်အသစ်တွင်ဖွင့်ရန်</translation>
+<translation id="3595252146048399851">စင့်ခ်လုပ်မည့်အရာကို <ph name="BEGIN_LINK" />ဆက်တင်များ<ph name="END_LINK" /> တွင် အချိန်မရွေး ရွေးနိုင်သည်။ Google က Search နှင့် အခြားဝန်ဆောင်မှုများကို သင့်မှတ်တမ်းပေါ်မူတည်၍ ပုဂ္ဂိုလ်ရေးသီးသန့် ပြုလုပ်နိုင်သည်။</translation>
 <translation id="3603009562372709545">လင့်ခ် URL ကို ကူးယူမည်</translation>
 <translation id="3607167657931203000">အလိုအလျောက် ဖြည့်စွက်ရန်ဒေတာ</translation>
 <translation id="3609785682760573515">စင့်က် လုပ်နေ...</translation>
@@ -370,6 +381,7 @@
 <translation id="4018310736049373830">လုပ်ဆောင်ချက်ကို စီမံခန့်ခွဲရန်</translation>
 <translation id="4038354071007134711">ဤကိရိယာပေါ်ရှိ မည်သည့်အပလီကေးရှင်းမှ ဖိုင်ကိုမဖွင့်နိုင်ပါ။</translation>
 <translation id="4042870976416480368">စာမျက်နှာတွင် ရှာရန်</translation>
+<translation id="40433179647657191">သင်မြင်သာထင်သာဖြစ်အောင်လုပ်ထားသည့် စာမျက်နှာ တစ်စိတ်တစ်ပိုင်းသို့ တိုက်ရိုက်လင့်ခ် ပြုလုပ်ပြီး မျှဝေနိုင်သည်။</translation>
 <translation id="4049507953662678203">ကွန်ယက်ချိတ်ဆက်မှု ရှိမရှိသေချာစေပြီး ထပ်စမ်းကြည့်ပါ။</translation>
 <translation id="4063300985191096908">ဖိဒ်သို့သွားရန်</translation>
 <translation id="408404951701638773">ရှာဖွေမှုဘားတန်းကို ယခုအခါ ပိုမိုလွယ်ကူစွာ အသုံးပြုနိုင်ပါပြီ</translation>
@@ -387,11 +399,13 @@
 <translation id="4181841719683918333">ဘာသာစကားများ</translation>
 <translation id="4187450337729239226">ကူးထည့်ပြီး ရှာရန်</translation>
 <translation id="4223967053752765281">လက်မှတ်ထိုးဝင်ခြင်းကို သင့်အဖွဲ့အစည်းက ပိတ်ထားသည်။ ဤစက်ပေါ်တွင် သင့်လိပ်စာ၊ မှတ်တမ်း၊ စကားဝှက်နှင့် အခြားဆက်တင်များကို ကြည့်နိုင်ပါသေးသည်။ အပြောင်းအလဲများ ပြုလုပ်ပါက ၎င်းတို့ကို သင်၏အကောင့်နှင့် စင့်ခ်လုပ်မည်မဟုတ်ပါ။</translation>
+<translation id="4232900911558558076">မီနူးသစ်ကို လေ့လာပါ</translation>
 <translation id="4233831822770018312">ခွင့်ပြုချက်များ ပြင်ဆင်ခြင်း</translation>
 <translation id="4236584471598725073">ဈေးနှုန်း စောင့်ကြည့်ခြင်း</translation>
 <translation id="4237377247299956313"><ph name="BEGIN_BOLD" />မူရင်း ဘရောင်ဇာအက်ပ်<ph name="END_BOLD" /> ကို တို့ပါ</translation>
 <translation id="424315890655130736">စကားဝှက်ကိုထည့်ပါ</translation>
 <translation id="4249955472157341256">နောက်ဆုံးရရှိမှုအလိုက် စီရန်</translation>
+<translation id="42618743927498729">ဝဘ်ဆိုက်တစ်ခုခုတွင် ဈေးကျသွားပါက သတိပေးချက် ရယူပါ။</translation>
 <translation id="4263576668337963058">ရနိုင်သော စာမျက်နှာဆိုင်ရာ လုပ်ဆောင်ချက်များ ပြရန်</translation>
 <translation id="4267380167363222949">နောက်တဘ်</translation>
 <translation id="4272631900155121838">QR ကုဒ်ကို ဖတ်ရန် ဆက်တင်ထဲတွင် ကင်မရာကို ဖွင့်ပါ</translation>
@@ -534,6 +548,7 @@
 <translation id="5388358297987318779">ရုပ်ပုံဖွင့်မည်</translation>
 <translation id="5407969256130905701">အပြောင်းအလဲများကို ဖယ်ပစ်ရန်</translation>
 <translation id="5416022985862681400">ပြီးခဲ့သည့် ၇ ရက်</translation>
+<translation id="5423269318075950257">ဈေးနှုန်း စောင့်ကြည့်ခြင်း</translation>
 <translation id="543338862236136125">စကားဝှက်ကို တည်းဖြတ်ခြင်း</translation>
 <translation id="5433691172869980887">အသုံးပြုသူအမည်ကို ကူးပြီးပါပြီ</translation>
 <translation id="5439599923922718668">မကြာခဏ ဝင်ကြည့်ခဲ့သည်</translation>
@@ -552,11 +567,15 @@
 <translation id="5556459405103347317">ပြန်တင်ရန်</translation>
 <translation id="556042886152191864">ခလုတ်</translation>
 <translation id="5580834567471114021">နောင်အတွက် ‘ဖတ်ရန် စာရင်း’ တွင် ထည့်မလား။</translation>
+<translation id="5597915316964418992">‘တဘ်ဇယားကွက်’ ဖွင့်ပါ</translation>
 <translation id="560322036295180549">သင်၏အဖွဲ့အစည်းက ပိတ်ထားသည်</translation>
 <translation id="5614553682702429503">စကားဝှက်ကို သိမ်းလိုပါသလား။</translation>
 <translation id="5626245204502895507">ဤဖိုင်ကို ယခုအချိန်တွင် ဒေါင်းလုဒ် လုပ်၍မရနိုင်ပါ။</translation>
 <translation id="5631164295104953411">ငွေပေးချေနည်းလမ်း ထည့်ရန်</translation>
+<translation id="5636282538000367086">Chrome တွင် အသစ်ပါဝင်မှုများကို ကြည့်လိုက်ပါ</translation>
+<translation id="5652623411397330904">သင်စောင့်ကြည့်သည့်ထုတ်ကုန်ကို ဤတွင်ပြမည်။</translation>
 <translation id="5659593005791499971">အီးမေးလ်</translation>
+<translation id="5669335982068190158">သင့် iPhone ပြင်ဆင်သတ်မှတ်မှု၏ လုပ်ဆောင်ချက်တစ်ခုအနေဖြင့် သင်ထွက်သွားသည်။ လက်မှတ်ထိုးဝင်ရန် အောက်ရှိရှေ့ဆက်ရန်ကို တို့ပါ။</translation>
 <translation id="5669528293118408608">www</translation>
 <translation id="567881659373499783">ဗားရှင်း <ph name="PRODUCT_VERSION" /></translation>
 <translation id="5690398455483874150">{count,plural, =1{ယခု Chrome ဝင်းဒိုး 1 ခုကို ပြထားသည်}other{ယခု Chrome ဝင်းဒိုး {count} ခုကို ပြထားသည်}}</translation>
@@ -567,6 +586,7 @@
 <translation id="5724941645893276623">ဝဘ်ကို သီးသန့်ကြည့်ရန် တဘ်အသစ်ဖွင့်ပါ</translation>
 <translation id="5728700505257787410">ဝမ်းနည်းပါသည်၊ သင့်အကောင့်သို့လက်မှတ်ထိုးဝင်ရာတွင် ပြဿနာတစ်ခုရှိနေသည်။</translation>
 <translation id="5731784586962650619">အခြားအက်ပ်များရှိ စကားဝှက်များ</translation>
+<translation id="5733084997078800044">Chrome အကြံပြုချက်</translation>
 <translation id="5737974891429562743">အကောင့် လက်မှတ်ထိုးဝင်ခြင်း အသေးစိတ်အချက်အလက်များသည် ဟောင်းနေပါပြီ။ စတင်၍ စင့်ခ်ပြုလုပ်နိုင်ရန် အပ်ဒိတ်လုပ်ပါ။</translation>
 <translation id="5738385766833540397">သင်စောင့်ကြည့်နေသည့် ထုတ်ကုန်များအတွက် ဈေးကျသည့် သတိပေးချက်များ ရယူပုံကို စီမံနိုင်သည်</translation>
 <translation id="5738887413654608789">ဤနည်းဖြင့် သင့်ပတ်ဝန်းကျင်ကိုလိုက်၍ သက်ဆိုင်ရာအင်တာနက်စာမျက်နှာများကို ရှာဖွေနိုင်ပါသည်။</translation>
@@ -580,6 +600,7 @@
 <translation id="5812974770859303494">ထည့်မည့်နေရာ...</translation>
 <translation id="581659025233126501">စင့်ခ်လုပ်ခြင်းကို ဖွင့်ရန်</translation>
 <translation id="5819208479324046259"><ph name="MANAGER" /> က စီမံခန့်ခွဲထားသည်။ <ph name="BEGIN_LINK" />ပိုမိုလေ့လာရန်<ph name="END_LINK" /></translation>
+<translation id="5833643789537100742">နောက်ပိုင်းတွင် အော်တိုဖြည့်ရန် Chrome အတွက် စကားဝှက်၊ ငွေပေးချေနည်းလမ်းနှင့် လိပ်စာများကို သိမ်းနိုင်သည်။</translation>
 <translation id="5846482154967366008">ရှာဖွေရေး အင်ဂျင်</translation>
 <translation id="5854790677617711513">ရက် ၃၀ ထက် ပိုဟောင်းသော</translation>
 <translation id="5857090052475505287">အကန့်အသစ်</translation>
@@ -595,6 +616,7 @@
 <translation id="5913600720976431809">စာမျက်နှာကို 'ဘာသာပြန်ရန်' ရွေးချယ်မှုများ</translation>
 <translation id="5938160824633642847">သင်၏ စက်ပစ္စည်းနေရာ ပြည့်ပါတော့မည်။ နေရာလွတ်လုပ်ပြီး ထပ်စမ်းကြည့်ပါ။</translation>
 <translation id="5948291296578561264">၎င်းသည်ဓာတ်ပုံများအား သင်၏ဓာတ်ပုံဒစ်ဂျစ်တိုက်သို့ သိမ်းဆည်းခွင့်ပေးပါသည်။</translation>
+<translation id="5951816930277761335">လင့်ခ် မျှဝေပါ</translation>
 <translation id="5955891643922670672">အောဖ့်လိုင်းဗားရှင်းဖြင့် ကြည့်ရှုနေသည်</translation>
 <translation id="5957613098218939406">နောက်ထပ် ရွေးချယ်စရာများ</translation>
 <translation id="5963939892571022323">မြင်သာအောင်လုပ်ထားသော စာသားသို့ လင့်ခ်ကို ပြုလုပ်၍မရပါ။</translation>
@@ -634,6 +656,7 @@
 <translation id="6189413832092199491">မဖတ်ရသေးသောစာ</translation>
 <translation id="6196207969502475924">အသံဖြင့် ရှာဖွေမှု</translation>
 <translation id="6202364442240589072">{COUNT,plural, =1{တဘ် {COUNT} ခု ပိတ်ရန်}other{တဘ် {COUNT} ခု ပိတ်ရန်}}</translation>
+<translation id="6219550825416862075">ပြန်လည်ကြိုဆိုပါသည်</translation>
 <translation id="6219688215832490856">ဘယ်တော့မှ ဘာသာမပြန်ပါနှင့်</translation>
 <translation id="6223816392543092032">သင်၏စက်အားလုံးတွင် လိပ်စာများ၊ မှတ်တမ်း၊ စကားဝှက်များနှင့် အခြားဆက်တင်များ ရယူပါ။</translation>
 <translation id="6231782223312638214">အကြံပေးထား</translation>
@@ -721,6 +744,7 @@
 ရုပ်ဖျက်မုဒ်သုံးနေစဉ် ဥပမာ- ကြော်ငြာများကို ပုဂ္ဂိုလ်ရေးသီးသန့်ပြုလုပ်ရန်အတွက် မတူညီသည့် ဝဘ်ဆိုက်များတစ်လျှောက်ရှိ သင့်ကြည့်ရှုခြင်းများကို မြင်ရရန် ဝဘ်ဆိုက်များက ကွတ်ကီးများကို မသုံးနိုင်ပါ။</translation>
 <translation id="6674571176963658787">စင့်ခ်လုပ်ခြင်းစတင်ရန် သင်၏စကားဝှက်စာ ထည့်ပါ</translation>
 <translation id="667999046851023355">စာတမ်း</translation>
+<translation id="6684906340059221832">ဈေးနှုန်းများ စောင့်ကြည့်ခြင်း</translation>
 <translation id="6710079714193676716">သင်၏ 'အဖွဲ့အစည်း' က စီမံခန့်ခွဲထားသည်။ ဝန်ဆောင်မှုအချို့ မရနိုင်ပါ။ <ph name="BEGIN_LINK" />ပိုမိုလေ့လာရန်<ph name="END_LINK" /></translation>
 <translation id="6713747756340119864">Google Apps</translation>
 <translation id="6730682669179532099">စကားဝှက်များကို တင်ပို့၍မရပါ</translation>
@@ -754,6 +778,7 @@
 <translation id="6945221475159498467">ရွေးရန်</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="6973630695168034713">ဖိုင်တွဲ</translation>
+<translation id="6975148662438928529">သင့် iPad ပြင်ဆင်သတ်မှတ်မှု၏ လုပ်ဆောင်ချက်တစ်ခုအနေဖြင့် သင့်အကောင့် <ph name="USER_NAME" /> မှ ထွက်သွားသည်။ လက်မှတ်ထိုးဝင်ရန် အောက်ရှိရှေ့ဆက်ရန်ကို တို့ပါ။</translation>
 <translation id="6979158407327259162">Google Drive</translation>
 <translation id="6988572888918530647">သင့် Google Account ကို စီမံခြင်း</translation>
 <translation id="6989674195860388998">‘ဆက်တင်များ’ တွင် ပြောင်းရန်…</translation>
@@ -787,12 +812,16 @@
 <translation id="7265758999917665941">ဤဝဘ်ဆိုက်အတွက် လုံးဝမလုပ်ရန်</translation>
 <translation id="7272437679830969316">သင်မည်သူမည်ဝါဖြစ်ကြောင်း အတည်ပြု၍ မရနိုင်ပါ။ စကားဝှက်ကို မိတ္ထူကူးမထားပါ။</translation>
 <translation id="7291368939935408496">စကားဝှက်များကို အသင့်ပြင်နေသည်...</translation>
+<translation id="730958329302570991">‘Google စကားဝှက်မန်နေဂျာ’ တွင် ဝဘ်ဆိုက်စကားဝှက်ကို အချိန်မရွေး လွယ်ကူစွာထည့်နိုင်သည်။</translation>
 <translation id="7313347584264171202">သင့်ရုပ်ဖျက်တဘ်များကို ဤနေရာတွင် ပြပါမည်</translation>
+<translation id="7315813263062036945">ဘယ်ဘက်ထိပ်ရှိ Search သင်္ကေတကို တို့ပါ</translation>
 <translation id="7336264872878993241"><ph name="PERCENT" /> ရာခိုင်နှုန်းဒေါင်းလုဒ်လုပ်ပြီးပါပြီ</translation>
 <translation id="7340958967809483333">Discover အတွက် ရွေးစရာများ</translation>
 <translation id="7346909386216857016">OK</translation>
 <translation id="734758817008927353">'ကတ်သိမ်းရန်' ရွေးချယ်မှုများ</translation>
+<translation id="7351537303876921605">အကြောင်းအရာမီနူးတွင် လင့်ခ်ပြုလုပ်ရန်ကို တို့ပါ</translation>
 <translation id="7353432112255316844">သင်ဖြစ်ကြောင်း အတည်ပြုရန်</translation>
+<translation id="7356359962760467032">ဈေးနှုန်းစောင့်ကြည့်ခြင်း ရပ်ရန်</translation>
 <translation id="7383797227493018512">ဖတ်ရန် စာရင်း</translation>
 <translation id="7398893703713203428">လင့်ခ် ပြုလုပ်ရန်</translation>
 <translation id="739941347996872055">ယခင်တဘ်</translation>
@@ -813,6 +842,7 @@
 <translation id="750493650310597496">0 ရွေးချယ်ထားပါသည်</translation>
 <translation id="7508728395076009983">သင့် ‘ရုပ်ဖျက်တဘ်များ' လော့ခ်လုပ်ရန် ‘တို့ထိ ID’၊ ’မျက်နှာ ID’ (သို့) ‘လျှို့ဝှက်ကုဒ်’ သတ်မှတ်ပါ။</translation>
 <translation id="7514365320538308">ဒေါင်းလုဒ်</translation>
+<translation id="7531345132340165516">လက်ရှိ ဝဘ်ဆိုက်</translation>
 <translation id="7537586195939242955">ဝမ်းနည်းပါသည်၊ သင့်လက်မှတ်ကို ယခုချိန်တွင် Passbook သို့ တပ်ဆင်၍ မရနိုင်ပါ။</translation>
 <translation id="7554791636758816595">တဘ် အသစ်</translation>
 <translation id="7561196759112975576">အမြဲတမ်း</translation>
@@ -823,6 +853,7 @@
 <translation id="7638584964844754484">စကားဝှက် မမှန်</translation>
 <translation id="7646263789464975852">မီနူး → ဆက်တင်များ → လုံခြုံရေး စစ်ဆေးမှု</translation>
 <translation id="7646772052135772216">စကားဝှက်စင့်ခ်လုပ်ခြင်းကို အသုံးပြု၍မရပါ</translation>
+<translation id="764827086632467055">မူရင်း ဘရောင်ဇာအက်ပ်ကို တို့ပါ</translation>
 <translation id="7649070708921625228">အကူအညီ</translation>
 <translation id="7658239707568436148">မလုပ်တော့</translation>
 <translation id="7671141431838911305">တပ်ဆင်မည်</translation>
@@ -845,6 +876,7 @@
 <translation id="784551991304901159">အကြောင်းအရာများကြည့်ရန် မီနူးမှ ‘ဖွင့်ရန်’ ကို ရွေးပါ</translation>
 <translation id="7853202427316060426">လုပ်ဆောင်ချက်</translation>
 <translation id="7856733331829174190">ဒေါင်းလုဒ် လုပ်၍မရပါ</translation>
+<translation id="785938070103630874">စကားဝှက်၊ ငွေပေးချေနည်းလမ်း (သို့) လိပ်စာ စသည်ကို ဖွင့်ပါ</translation>
 <translation id="7859704718976024901">ရှာဖွေမှု မှတ်တမ်း</translation>
 <translation id="7884694604461143138">ရှာဖွေမှတ်တမ်း (<ph name="COUNT" /> ခု တွေ့သည်)</translation>
 <translation id="7887198238286927132">သင်၏ ပုဂ္ဂိုလ်ရေးကို ကာကွယ်ရန် Chrome သည် ဤအကွက်တွင် အော်တိုဖြည့်မည် မဟုတ်ပါ။</translation>
@@ -864,6 +896,7 @@
 <translation id="7971521879845308059">ပေါ့အာပ်များ ပိတ်ဆို့မည်</translation>
 <translation id="797413074872316787">စက်အားလုံးတွင် စင့်ခ်လုပ်ရန်နှင့် ပုဂ္ဂိုလ်ရေးသီးသန့်လုပ်ရန် စင့်ခ်လုပ်ခြင်းကိုဖွင့်ပါ။</translation>
 <translation id="7978018860671536736">၃။ ‘စကားဝှက်များ အော်တိုဖြည့်ခြင်း’ ကိုတို့ပါ</translation>
+<translation id="7981908678811807838">ဈေးနှုန်းစောင့်ကြည့်ခြင်းကို ဤဝဘ်ဆိုက်အတွက် မရနိုင်ပါ။</translation>
 <translation id="7982789257301363584">ကွန်ရက်</translation>
 <translation id="7987685713885608670">လုံခြုံရေးပိုမိုကောင်းမွန်စေရန် စကားဝှက်များကို ‘Google စကားဝှက်မန်နေဂျာ’ သို့ မသိမ်းမီ သင်၏စက်၌ အသွင်ဝှက်ပါ။</translation>
 <translation id="7993619969781047893">အချို့ဝဘ်ဆိုက်များပေါ်ရှိ ဝန်ဆောင်မှုများ ရပ်သွားနိုင်ပါသည်</translation>
@@ -899,11 +932,13 @@
 <translation id="8237382152611443140">‘စကားဝှက် အော်တိုဖြည့်ဆက်တင်များ’ ဖွင့်ပါ</translation>
 <translation id="8261506727792406068">ဖျက်ရန်</translation>
 <translation id="8271720166617117963">လက်ခံပြီး လက်မှတ်ထိုးဝင်ရန်</translation>
+<translation id="8278938988428169257">စကားလုံး (သို့) စကားစု ထည့်ပါ</translation>
 <translation id="8281781826761538115">မူရင်း − <ph name="DEFAULT_LOCALE" /></translation>
 <translation id="8281886186245836920">ကျော်ရန်</translation>
 <translation id="8283172974887967105">သတ်မှတ်ရန်…</translation>
 <translation id="8299417921174340354">စကားဝှက်များသုံးရန် သင့်စက်တွင် လျှို့ဝှက်ကုဒ်တစ်ခုကို ဦးစွာ သတ်မှတ်ရပါမည်။</translation>
 <translation id="8299613349954694191">ဝဘ်ကို သီးသန့်ကြည့်ရှုရန် ရုပ်ဖျက်တဘ် ဖွင့်ပါ။</translation>
+<translation id="8316944564970119719">ဝဘ်ဆိုက်နှင့် စကားဝှက်ကိုထည့်ပြီး သိမ်းပါ</translation>
 <translation id="8319076807703933069">ရှာဖွေမှု အသစ်</translation>
 <translation id="8323906514956095947">နောက်ထပ် တဘ်ရွေးချယ်စရာများအတွက် တို့၍ဖိထားပါ</translation>
 <translation id="8328777765163860529">အားလုံး ပိတ်ရန်</translation>
@@ -931,6 +966,7 @@
 <translation id="8533670235862049797">'လုံခြုံစွာ ဖွင့်ကြည့်ခြင်း' ကို ဖွင့်ထားသည်</translation>
 <translation id="8534481786647257214">Google+ မှာ တင်ပြခြင်း ပြီးစီးပါပြီ။</translation>
 <translation id="8548878600947630424">...စာမျက်နှာတွင်ရှာပါ</translation>
+<translation id="8558480467877843976">ယခုအခါ မက်ဆေ့ဂျ်၊ မှတ်တမ်းနှင့် အခြားအက်ပ်များရှိ လင့်ခ်များကို ကြည့်ရှု (သို့) တို့ သည့်အချိန်တိုင်းတွင် Chrome ကို အသုံးပြုနိုင်သည်။</translation>
 <translation id="8588404856427128947">ပိတ်ရန်</translation>
 <translation id="8590913940444621808">ဘယ်တော့မှမမေးပါနှင့်</translation>
 <translation id="8591976964826315682">ရုပ်ဖျက်မုဒ်တွင် ပြင်ပအဖွဲ့၏ကွတ်ကီးများကို ပိတ်ထားရန်</translation>
@@ -948,6 +984,8 @@
 <translation id="8721297211384281569">ကိရိယာမီနျူး</translation>
 <translation id="8725066075913043281">ထပ် စမ်းကြည့်ရန်</translation>
 <translation id="8730621377337864115">ပြီးပါပြီ</translation>
+<translation id="8731388423028622182">သင့် iPhone ပြင်ဆင်သတ်မှတ်မှု၏ လုပ်ဆောင်ချက်တစ်ခုအနေဖြင့် သင့်အကောင့် <ph name="USER_NAME" /> မှ ထွက်သွားသည်။ လက်မှတ်ထိုးဝင်ရန် အောက်ရှိရှေ့ဆက်ရန်ကို တို့ပါ။</translation>
+<translation id="87371078663613140">မီနူးဘားရှိ ရွေးချယ်စရာများကို လေ့လာပါ</translation>
 <translation id="8741995161408053644"><ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /> ၌ သင့် Google အကောင့်၏ အခြားသော အင်တာနက်အသုံးပြုမှု မှတ်တမ်းများ ရှိနိုင်သည်။</translation>
 <translation id="8750037785291841318">သင့်တဘ်များကို ဤနေရာတွင် ပြပါမည်</translation>
 <translation id="8756969031206844760">စကားဝှက်ကို အပ်ဒိတ်လုပ်လိုပါသလား။</translation>
@@ -965,10 +1003,13 @@
 <translation id="8868471676553493380">{count,plural, =1{တဘ် {count} ခု}other{တဘ် {count} ခု}}</translation>
 <translation id="8870413625673593573">မကြာမီက ပိတ်ခဲ့</translation>
 <translation id="8876882697946675716">သင့်စက်များကို စင့်ခ်လုပ်ထားခြင်း</translation>
+<translation id="8877287418679067891">ဆက်တင်များတွင် မူရင်းသတ်မှတ်ရန်…</translation>
 <translation id="8881801611828450202">ဤရုပ်ပုံကို <ph name="SEARCH_ENGINE" /> တွင်ရှာရန်</translation>
 <translation id="8891935667620843985">Chrome ကို ‘မူရင်းဘရောင်ဇာအက်ပ်’ အဖြစ် သတ်မှတ်ပြီး ၎င်းဖြင့် လင့်ခ်များကို အလိုအလျောက် ဖွင့်နိုင်သည်။</translation>
 <translation id="8898822736010347272">အန္တရာယ်အသစ်များ ရှာဖွေရာ၌ အထောက်အကူဖြစ်စေရန်နှင့် ဝဘ်ပေါ်ရှိလူတိုင်းကို ကာကွယ်ရန် သင်ဝင်ကြည့်သည့် အချို့ဝဘ်ဆိုက်များ၏ URL များ၊ ကန့်သတ်ထားသည့် စနစ်အချက်အလက်များနှင့် အချို့သော ဝဘ်ဆိုက်ပါအကြောင်းအရာတို့ကို Google သို့ ပို့သည်။</translation>
 <translation id="8909135823018751308">ၐေမျှရန်...</translation>
+<translation id="8911759861431145525">ထည့်သွင်းရန်ကို တို့ပြီး သင့်အချက်အလက်ထည့်ပါ</translation>
+<translation id="891658175948553296">ဝဘ်ဆိုက်ရှိ စာသားကို မြင်သာထင်သာဖြစ်အောင်လုပ်ပါ</translation>
 <translation id="8917490105272468696">သဘောတူပါသည်</translation>
 <translation id="8928133177108699615">ဒက်စ်တော့</translation>
 <translation id="8952559610785099500">စကားဝှက် ထည့်ခြင်း</translation>
@@ -1006,6 +1047,7 @@
 <translation id="9203116392574189331">လက်မပါဘဲ</translation>
 <translation id="9223358826628549784">ပျက်စီးမှု အစီရင်ခံစာကို ပေးပို့ပြီးပါပြီ။</translation>
 <translation id="952704832371081537">မလုပ်တော့</translation>
+<translation id="953008885340860025">Chrome ထွက်သွားသည်</translation>
 <translation id="959066944189734975"><ph name="CHANNEL_NAME" /> ကို လိုက်ကြည့်နေသည်</translation>
 <translation id="981498610235328462">အကောင့်အချို့ဖြင့်သာ လက်မှတ်ထိုးဝင်ရန် သင့်အဖွဲ့အစည်းက ခွင့်ပြုထားသည်။ ခွင့်ပြုမထားသော အကောင့်များကို ဖျောက်ထားသည်။</translation>
 <translation id="984509647832111802">စင့်ခ်လုပ်၍ မရပါ။</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_nl.xtb b/ios/chrome/app/strings/resources/ios_strings_nl.xtb
index 8d6bdfa5..05eee3d1 100644
--- a/ios/chrome/app/strings/resources/ios_strings_nl.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_nl.xtb
@@ -19,6 +19,7 @@
 <translation id="1076421457278169141">Code gescand</translation>
 <translation id="1076785341346483463">Synchroniseren met beheerd account</translation>
 <translation id="1084365883616172403">Facebook-bericht voltooid.</translation>
+<translation id="1085696779717592361">Chrome standaard gebruiken</translation>
 <translation id="1103523840287552314"><ph name="LANGUAGE" /> altijd vertalen</translation>
 <translation id="1104948393051856124">Accepteren en doorgaan</translation>
 <translation id="110724200315609752">Overschakelen naar geopend venster</translation>
@@ -34,6 +35,7 @@
 <translation id="1165039591588034296">Fout</translation>
 <translation id="1172898394251786223">Volgend veld</translation>
 <translation id="1176932207622159128">Kan afbeelding niet opslaan</translation>
+<translation id="1177414119866731261">Open het Chrome-menu</translation>
 <translation id="1181037720776840403">Verwijderen</translation>
 <translation id="1207113853726624428">Nieuwe zoekopdracht</translation>
 <translation id="1209206284964581585">Voorlopig verbergen</translation>
@@ -110,6 +112,7 @@
 <translation id="1740468249224277719">Dubbeltik om te installeren.</translation>
 <translation id="1752547299766512813">Wachtwoorden opslaan</translation>
 <translation id="1753905327828125965">Meest bezocht</translation>
+<translation id="1789803444939621101">Welkom terug, <ph name="USER_NAME" /></translation>
 <translation id="1803264062614276815">Naam kaarthouder</translation>
 <translation id="1809939268435598390">Map verwijderen</translation>
 <translation id="1813414402673211292">Browsegegevens wissen</translation>
@@ -163,6 +166,7 @@
 <translation id="2302742851632557585">Wachtwoord wijzigen op website</translation>
 <translation id="2316709634732130529">Voorgesteld wachtwoord gebruiken</translation>
 <translation id="2320166752086256636">Toetsenbord verbergen</translation>
+<translation id="2328842561016935977">Tik op Wachtwoorden en daarna op Toevoegen</translation>
 <translation id="2351097562818989364">Je vertaalinstellingen zijn opnieuw ingesteld.</translation>
 <translation id="235789365079050412">Privacybeleid van Google</translation>
 <translation id="2359043044084662842">Vertalen</translation>
@@ -221,6 +225,7 @@
 <translation id="2781331604911854368">Aan</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2783054063075604403">Kan link niet maken</translation>
+<translation id="2786701870377699570">Tabbladen doorzoeken op gesynchroniseerde apparaten</translation>
 <translation id="2800683595868705743">Tabbladschakelaar verlaten</translation>
 <translation id="2815198996063984598">2. Tik op Standaard browser-app</translation>
 <translation id="2820289420301699633">Je beheerder beheert Chrome en heeft toegang tot de bijbehorende gegevens</translation>
@@ -244,6 +249,7 @@
 <translation id="2923448633003185837">Plakken en zoeken</translation>
 <translation id="292639812446257861">Markeren als ongelezen</translation>
 <translation id="2932085390869194046">Wachtwoord voorstellen…</translation>
+<translation id="2932765531295814441">Wachtwoorden handmatig toevoegen</translation>
 <translation id="2952581218264071393">1. Open de Chrome-instellingen</translation>
 <translation id="2958718410589002129">Wachtwoorden</translation>
 <translation id="2961210776189273067">Titel</translation>
@@ -279,6 +285,7 @@
 <translation id="3181954750937456830">Safe Browsing (hiermee worden jij en je apparaat beschermd tegen gevaarlijke sites)</translation>
 <translation id="3184767182050912705">Ontgrendelen met <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation>
 <translation id="3207960819495026254">Toegevoegd aan 'Bookmarks'</translation>
+<translation id="3214379938835224220">Je bent uitgelogd omdat je iPad wordt gereset. Tik hieronder op Doorgaan om in te loggen.</translation>
 <translation id="3224641773458703735">Als je wachtwoorden wilt exporteren, moet je eerst een toegangscode instellen op je apparaat.</translation>
 <translation id="3227137524299004712">Microfoon</translation>
 <translation id="3240426699337459095">Link gekopieerd</translation>
@@ -296,6 +303,7 @@
 <translation id="3329904751041170572">Kan geen verbinding maken met de server.</translation>
 <translation id="3335947283844343239">Open gesloten tabblad opnieuw</translation>
 <translation id="3371831930909698441">Vertalen is beschikbaar. Opties beschikbaar onderaan het scherm.</translation>
+<translation id="3377063233124932127">Je opgeslagen bookmarks, wachtwoorden enz. staan nu bovenaan.</translation>
 <translation id="3393920035788932672">Pop-ups toegestaan</translation>
 <translation id="3399930248910934354">Chrome-instellingen openen</translation>
 <translation id="3404744938087714423">Als je uitlogt, wordt synchronisatie uitgezet.</translation>
@@ -318,11 +326,13 @@
 <translation id="3519193562722059437">Open een tabblad om op internet te surfen.</translation>
 <translation id="3527085408025491307">Map</translation>
 <translation id="3529024052484145543">Niet beveiligd</translation>
+<translation id="3530206579861815432">Vind snel geopende en recent gesloten tabbladen op je gesynchroniseerde apparaten.</translation>
 <translation id="3533202363250687977">Alle incognitotabbladen sluiten</translation>
 <translation id="3533436815740441613">Nieuw tabblad</translation>
 <translation id="3551320343578183772">Tabblad sluiten</translation>
 <translation id="3581564640715911333">Aanbieden pagina's in andere talen te vertalen</translation>
 <translation id="3588820906588687999">Afbeelding openen op nieuw tabblad</translation>
+<translation id="3595252146048399851">Je kunt altijd in de <ph name="BEGIN_LINK" />instellingen<ph name="END_LINK" /> bepalen wat je wilt synchroniseren. Google kan Zoeken en andere services personaliseren op basis van je geschiedenis.</translation>
 <translation id="3603009562372709545">Link-URL kopiëren</translation>
 <translation id="3607167657931203000">Gegevens van Automatisch invullen</translation>
 <translation id="3609785682760573515">Synchroniseren...</translation>
@@ -371,6 +381,7 @@
 <translation id="4018310736049373830">Activiteit beheren</translation>
 <translation id="4038354071007134711">Geen app op dit apparaat kan het bestand openen.</translation>
 <translation id="4042870976416480368">Zoeken op pagina</translation>
+<translation id="40433179647657191">Maak en deel een rechtstreekse link naar een gemarkeerd deel van een pagina.</translation>
 <translation id="4049507953662678203">Zorg ervoor dat je beschikt over een netwerkverbinding en probeer het opnieuw.</translation>
 <translation id="4063300985191096908">Naar feed</translation>
 <translation id="408404951701638773">De zoekbalk is nu makkelijker bereikbaar</translation>
@@ -388,11 +399,13 @@
 <translation id="4181841719683918333">Talen</translation>
 <translation id="4187450337729239226">Plakken en zoeken</translation>
 <translation id="4223967053752765281">Je organisatie heeft inloggen uitgezet. Je bookmarks, geschiedenis, wachtwoorden en andere instellingen blijven zichtbaar op dit apparaat. Als je wijzigingen aanbrengt, worden deze niet gesynchroniseerd met je account.</translation>
+<translation id="4232900911558558076">Het nieuwe menu ontdekken</translation>
 <translation id="4233831822770018312">Rechten bewerken</translation>
 <translation id="4236584471598725073">Prijs wordt gevolgd</translation>
 <translation id="4237377247299956313">Tik op <ph name="BEGIN_BOLD" />Standaard browser-app<ph name="END_BOLD" /></translation>
 <translation id="424315890655130736">Wachtwoordzin opgeven</translation>
 <translation id="4249955472157341256">Sorteren op nieuwste</translation>
+<translation id="42618743927498729">Krijg een melding bij een prijsdaling op een site.</translation>
 <translation id="4263576668337963058">Beschikbare pagina-acties bekijken</translation>
 <translation id="4267380167363222949">Volgend tabblad</translation>
 <translation id="4272631900155121838">Als je een QR-code wilt scannen, zet je de camera aan via Instellingen</translation>
@@ -535,6 +548,7 @@
 <translation id="5388358297987318779">Afbeelding openen</translation>
 <translation id="5407969256130905701">Wijzigingen niet opslaan</translation>
 <translation id="5416022985862681400">Afgelopen 7 dagen</translation>
+<translation id="5423269318075950257">Prijs volgen</translation>
 <translation id="543338862236136125">Wachtwoord bewerken</translation>
 <translation id="5433691172869980887">Gebruikersnaam gekopieerd</translation>
 <translation id="5439599923922718668">Vaak bezocht</translation>
@@ -554,11 +568,15 @@
 <translation id="5556459405103347317">Opnieuw laden</translation>
 <translation id="556042886152191864">Knop</translation>
 <translation id="5580834567471114021">Toevoegen aan de leeslijst voor later?</translation>
+<translation id="5597915316964418992">Open het tabbladraster</translation>
 <translation id="560322036295180549">Uitgezet door je organisatie</translation>
 <translation id="5614553682702429503">Wachtwoord opslaan?</translation>
 <translation id="5626245204502895507">Het bestand kan momenteel niet worden gedownload.</translation>
 <translation id="5631164295104953411">Betaalmethode toevoegen</translation>
+<translation id="5636282538000367086">Ontdek wat er nieuw is in Chrome</translation>
+<translation id="5652623411397330904">De producten die je volgt, worden hier getoond.</translation>
 <translation id="5659593005791499971">E-mail</translation>
+<translation id="5669335982068190158">Je bent uitgelogd omdat je iPhone wordt gereset. Tik hieronder op Doorgaan om in te loggen.</translation>
 <translation id="5669528293118408608">www</translation>
 <translation id="567881659373499783">Versie <ph name="PRODUCT_VERSION" /></translation>
 <translation id="5690398455483874150">{count,plural, =1{Er wordt nu 1 Chrome-venster getoond}other{Er worden nu {count} Chrome-vensters getoond}}</translation>
@@ -569,6 +587,7 @@
 <translation id="5724941645893276623">Voeg een nieuw tabblad toe als je privé wilt browsen</translation>
 <translation id="5728700505257787410">Er is een probleem opgetreden met het inloggen op je account.</translation>
 <translation id="5731784586962650619">Wachtwoorden in andere apps</translation>
+<translation id="5733084997078800044">Chrome-tip</translation>
 <translation id="5737974891429562743">De inloggegevens voor het account zijn verouderd. Voer een update uit om te synchroniseren.</translation>
 <translation id="5738385766833540397">Beheren hoe je meldingen over prijsdalingen krijgt voor producten die je volgt</translation>
 <translation id="5738887413654608789">Hiermee kun je relevante webpagina's vinden op basis van je omgeving.</translation>
@@ -582,6 +601,7 @@
 <translation id="5812974770859303494">Toevoegen aan…</translation>
 <translation id="581659025233126501">Synchronisatie aanzetten</translation>
 <translation id="5819208479324046259">Beheerd door <ph name="MANAGER" />. <ph name="BEGIN_LINK" />Meer informatie<ph name="END_LINK" /></translation>
+<translation id="5833643789537100742">Sla wachtwoorden, betaalmethoden en adressen op zodat Chrome ze later automatisch kan invullen.</translation>
 <translation id="5846482154967366008">Zoekmachine</translation>
 <translation id="5854790677617711513">Ouder dan 30 dagen</translation>
 <translation id="5857090052475505287">Nieuwe map</translation>
@@ -597,6 +617,7 @@
 <translation id="5913600720976431809">Opties om de pagina te vertalen</translation>
 <translation id="5938160824633642847">Je apparaat is bijna vol. Maak ruimte vrij en probeer het opnieuw.</translation>
 <translation id="5948291296578561264">Hiermee kun je foto's opslaan in je fotobibliotheek.</translation>
+<translation id="5951816930277761335">Deel de link</translation>
 <translation id="5955891643922670672">Offline versie bekijken</translation>
 <translation id="5957613098218939406">Meer opties</translation>
 <translation id="5963939892571022323">Er kan geen link naar de markering worden gemaakt.</translation>
@@ -636,6 +657,7 @@
 <translation id="6189413832092199491">Ongelezen</translation>
 <translation id="6196207969502475924">Gesproken zoekopdrachten</translation>
 <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT} tabblad sluiten}other{{COUNT} tabbladen sluiten}}</translation>
+<translation id="6219550825416862075">Welkom terug</translation>
 <translation id="6219688215832490856">Nooit vertalen</translation>
 <translation id="6223816392543092032">Je bookmarks, geschiedenis, wachtwoorden en andere instellingen beschikbaar maken op al je apparaten.</translation>
 <translation id="6231782223312638214">Voorgesteld</translation>
@@ -723,6 +745,7 @@
 Als je de incognitomodus gebruikt, kunnen sites geen cookies gebruiken om je browse-activiteit op verschillende sites te bekijken, bijvoorbeeld om advertenties te personaliseren.</translation>
 <translation id="6674571176963658787">Geef je wachtwoordzin op om de synchronisatie te starten</translation>
 <translation id="667999046851023355">Document</translation>
+<translation id="6684906340059221832">Prijzen worden gevolgd</translation>
 <translation id="6710079714193676716">Beheerd door je organisatie. Sommige functies zijn mogelijk niet beschikbaar. <ph name="BEGIN_LINK" />Meer informatie<ph name="END_LINK" /></translation>
 <translation id="6713747756340119864">Google Apps</translation>
 <translation id="6730682669179532099">Wachtwoorden kunnen niet worden geëxporteerd</translation>
@@ -756,6 +779,7 @@
 <translation id="6945221475159498467">Selecteren</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="6973630695168034713">Mappen</translation>
+<translation id="6975148662438928529">Je bent uitgelogd van je account <ph name="USER_NAME" /> omdat je iPad wordt gereset. Tik hieronder op Doorgaan om in te loggen.</translation>
 <translation id="6979158407327259162">Google Drive</translation>
 <translation id="6988572888918530647">Je Google-account beheren</translation>
 <translation id="6989674195860388998">Aanpassen in Instellingen…</translation>
@@ -789,12 +813,16 @@
 <translation id="7265758999917665941">Nooit voor deze site</translation>
 <translation id="7272437679830969316">Kan je identiteit niet verifiëren. Wachtwoord niet gekopieerd.</translation>
 <translation id="7291368939935408496">Wachtwoorden voorbereiden...</translation>
+<translation id="730958329302570991">Voeg makkelijk sitewachtwoorden toe aan Google Wachtwoordmanager.</translation>
 <translation id="7313347584264171202">Hier vind je je incognitotabbladen</translation>
+<translation id="7315813263062036945">Tik linksboven op het icoon Zoeken</translation>
 <translation id="7336264872878993241"><ph name="PERCENT" /> procent gedownload</translation>
 <translation id="7340958967809483333">Opties voor Discover</translation>
 <translation id="7346909386216857016">OK, begrepen</translation>
 <translation id="734758817008927353">Opties om een kaart op te slaan</translation>
+<translation id="7351537303876921605">Tik op Link maken in het contextmenu</translation>
 <translation id="7353432112255316844">Bevestigen dat jij het bent</translation>
+<translation id="7356359962760467032">Prijzen niet meer volgen</translation>
 <translation id="7383797227493018512">Leeslijst</translation>
 <translation id="7398893703713203428">Link maken</translation>
 <translation id="739941347996872055">Vorig tabblad</translation>
@@ -815,6 +843,7 @@
 <translation id="750493650310597496">0 geselecteerd</translation>
 <translation id="7508728395076009983">Als je de incognitotabbladen wilt vergrendelen, stel je Touch ID, Face ID of een toegangscode in.</translation>
 <translation id="7514365320538308">Downloaden</translation>
+<translation id="7531345132340165516">Huidige site</translation>
 <translation id="7537586195939242955">Je pas kan momenteel niet worden geïnstalleerd in Passbook.</translation>
 <translation id="7554791636758816595">Nieuw tabblad</translation>
 <translation id="7561196759112975576">Altijd</translation>
@@ -825,6 +854,7 @@
 <translation id="7638584964844754484">Onjuiste wachtwoordzin</translation>
 <translation id="7646263789464975852">Menu → Instellingen → Veiligheidscheck</translation>
 <translation id="7646772052135772216">Wachtwoordsynchronisatie werkt niet</translation>
+<translation id="764827086632467055">Tik op Standaard browser-app</translation>
 <translation id="7649070708921625228">Hulp</translation>
 <translation id="7658239707568436148">Annuleren</translation>
 <translation id="7671141431838911305">INSTALLEER</translation>
@@ -847,6 +877,7 @@
 <translation id="784551991304901159">Als je content wilt zien, selecteer je Aanzetten in het menu</translation>
 <translation id="7853202427316060426">Activiteit</translation>
 <translation id="7856733331829174190">Kan niet downloaden</translation>
+<translation id="785938070103630874">Open Wachtwoorden, Betaalmethoden of Adres en meer</translation>
 <translation id="7859704718976024901">Browsegeschiedenis</translation>
 <translation id="7884694604461143138">Zoekgeschiedenis (<ph name="COUNT" /> gevonden)</translation>
 <translation id="7887198238286927132">Ter bescherming van je privacy wordt dit veld niet automatisch ingevuld door Chrome.</translation>
@@ -866,6 +897,7 @@
 <translation id="7971521879845308059">Pop-ups blokkeren</translation>
 <translation id="797413074872316787">Zet de synchronisatie aan om verschillende apparaten te synchroniseren en te personaliseren.</translation>
 <translation id="7978018860671536736">3. Tik op Wachtwoorden automatisch invullen</translation>
+<translation id="7981908678811807838">Prijzen volgen is niet beschikbaar voor deze site.</translation>
 <translation id="7982789257301363584">Netwerk</translation>
 <translation id="7987685713885608670">Voor extra beveiliging versleutel je je wachtwoorden op je apparaat voordat ze worden opgeslagen in Google Wachtwoordmanager.</translation>
 <translation id="7993619969781047893">Functies op bepaalde sites werken mogelijk niet meer</translation>
@@ -901,11 +933,13 @@
 <translation id="8237382152611443140">Open de instellingen voor het automatisch invullen van wachtwoorden</translation>
 <translation id="8261506727792406068">Verwijderen</translation>
 <translation id="8271720166617117963">Akkoord en inloggen</translation>
+<translation id="8278938988428169257">Geef een woord of woordgroep op</translation>
 <translation id="8281781826761538115">Standaard - <ph name="DEFAULT_LOCALE" /></translation>
 <translation id="8281886186245836920">Overslaan</translation>
 <translation id="8283172974887967105">Instellen…</translation>
 <translation id="8299417921174340354">Als je wachtwoorden wilt gebruiken, moet je eerst een toegangscode instellen op je apparaat.</translation>
 <translation id="8299613349954694191">Open een incognitotabblad om privé op internet te browsen.</translation>
+<translation id="8316944564970119719">Geef de site en het wachtwoord op en klik dan op Opslaan</translation>
 <translation id="8319076807703933069">Nieuwe zoekopdracht</translation>
 <translation id="8323906514956095947">Tik en houd vast voor meer tabbladopties</translation>
 <translation id="8328777765163860529">Alles sluiten</translation>
@@ -933,6 +967,7 @@
 <translation id="8533670235862049797">Safe Browsing staat aan</translation>
 <translation id="8534481786647257214">Google+ bericht voltooid.</translation>
 <translation id="8548878600947630424">Zoeken op deze pagina...</translation>
+<translation id="8558480467877843976">Je kunt Chrome nu gebruiken als je browset of op links in berichten, documenten en andere apps tikt.</translation>
 <translation id="8588404856427128947">Uit</translation>
 <translation id="8590913940444621808">Nooit vragen</translation>
 <translation id="8591976964826315682">Cookies van derden blokkeren in incognitomodus</translation>
@@ -950,6 +985,8 @@
 <translation id="8721297211384281569">Menu Extra</translation>
 <translation id="8725066075913043281">Opnieuw proberen</translation>
 <translation id="8730621377337864115">Klaar</translation>
+<translation id="8731388423028622182">Je bent uitgelogd van je account <ph name="USER_NAME" /> omdat je iPhone wordt gereset. Tik hieronder op Doorgaan om in te loggen.</translation>
+<translation id="87371078663613140">Bekijk de opties in de menubalk</translation>
 <translation id="8741995161408053644">Voor je Google-account kunnen andere vormen van browsegeschiedenis beschikbaar zijn via <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" />.</translation>
 <translation id="8750037785291841318">Hier vind je je tabbladen</translation>
 <translation id="8756969031206844760">Wachtwoord updaten?</translation>
@@ -967,10 +1004,13 @@
 <translation id="8868471676553493380">{count,plural, =1{{count} tabblad}other{{count} tabbladen}}</translation>
 <translation id="8870413625673593573">Recent gesloten</translation>
 <translation id="8876882697946675716">Je apparaten synchroniseren</translation>
+<translation id="8877287418679067891">Als standaard instellen in Instellingen…</translation>
 <translation id="8881801611828450202">Zoeken op <ph name="SEARCH_ENGINE" /> naar deze afbeelding</translation>
 <translation id="8891935667620843985">Je kunt links automatisch openen in Chrome door Chrome in te stellen als je standaard browser-app.</translation>
 <translation id="8898822736010347272">Stuurt URL's van sommige pagina's die je bezoekt, beperkte systeeminformatie en bepaalde paginacontent naar Google om nieuwe dreigingen te ontdekken en iedereen op internet te beschermen.</translation>
 <translation id="8909135823018751308">Delen</translation>
+<translation id="8911759861431145525">Tik op Toevoegen en geef je informatie op</translation>
+<translation id="891658175948553296">Markeer tekst op een site</translation>
 <translation id="8917490105272468696">Ja, aanzetten</translation>
 <translation id="8928133177108699615">Desktop</translation>
 <translation id="8952559610785099500">Wachtwoord toevoegen</translation>
@@ -1008,6 +1048,7 @@
 <translation id="9203116392574189331">Handoff</translation>
 <translation id="9223358826628549784">Crashrapport verzonden.</translation>
 <translation id="952704832371081537">Annuleren</translation>
+<translation id="953008885340860025">Chrome is uitgelogd</translation>
 <translation id="959066944189734975">Je volgt <ph name="CHANNEL_NAME" /></translation>
 <translation id="981498610235328462">Je organisatie vereist dat je alleen met bepaalde accounts inlogt. Niet-toegestane accounts zijn verborgen.</translation>
 <translation id="984509647832111802">Synchronisatie werkt niet.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_no.xtb b/ios/chrome/app/strings/resources/ios_strings_no.xtb
index 4503488..7a4629f 100644
--- a/ios/chrome/app/strings/resources/ios_strings_no.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_no.xtb
@@ -19,6 +19,7 @@
 <translation id="1076421457278169141">Koden er skannet</translation>
 <translation id="1076785341346483463">Synkroniser med administrert konto</translation>
 <translation id="1084365883616172403">Facebook-innlegget er fullført.</translation>
+<translation id="1085696779717592361">Bruk Chrome som standard</translation>
 <translation id="1103523840287552314">Oversett alltid <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Godta og fortsett</translation>
 <translation id="110724200315609752">Bytt til åpent vindu</translation>
@@ -34,6 +35,7 @@
 <translation id="1165039591588034296">Feil</translation>
 <translation id="1172898394251786223">Neste felt</translation>
 <translation id="1176932207622159128">Kan ikke lagre bildet</translation>
+<translation id="1177414119866731261">Åpne Chrome-menyen</translation>
 <translation id="1181037720776840403">Fjern</translation>
 <translation id="1207113853726624428">Nytt søk</translation>
 <translation id="1209206284964581585">Skjul for øyeblikket</translation>
@@ -110,6 +112,7 @@
 <translation id="1740468249224277719">Dobbelttrykk for å installere.</translation>
 <translation id="1752547299766512813">Lagre passord</translation>
 <translation id="1753905327828125965">Mest besøkt</translation>
+<translation id="1789803444939621101">Velkommen tilbake, ‏<ph name="USER_NAME" /></translation>
 <translation id="1803264062614276815">Kortinnehaverens navn</translation>
 <translation id="1809939268435598390">Slett mappen</translation>
 <translation id="1813414402673211292">Slett nettlesingsdata</translation>
@@ -163,6 +166,7 @@
 <translation id="2302742851632557585">Bytt passord på nettstedet</translation>
 <translation id="2316709634732130529">Bruk foreslått passord</translation>
 <translation id="2320166752086256636">Skjul tastaturet</translation>
+<translation id="2328842561016935977">Trykk på Passord og deretter på Legg til</translation>
 <translation id="2351097562818989364">Oversettelsesinnstillingene dine er tilbakestilt.</translation>
 <translation id="235789365079050412">Googles personvernregler</translation>
 <translation id="2359043044084662842">Oversett</translation>
@@ -210,7 +214,7 @@
 <translation id="2709516037105925701">Autofyll</translation>
 <translation id="271033894570825754">Ny</translation>
 <translation id="2712127207578915686">Kan ikke åpne filen</translation>
-<translation id="2718352093833049315">Bare når Wi-Fi er på</translation>
+<translation id="2718352093833049315">Bare når Wifi er på</translation>
 <translation id="2747003861858887689">Forrige felt</translation>
 <translation id="2749231692441336879">Følger <ph name="CHANNEL_NAME" /></translation>
 <translation id="2764831210418622012">nå nettopp</translation>
@@ -221,6 +225,7 @@
 <translation id="2781331604911854368">På</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2783054063075604403">Kan ikke opprette linken</translation>
+<translation id="2786701870377699570">Søk etter faner på synkroniserte enheter</translation>
 <translation id="2800683595868705743">Avslutt fanevelgeren</translation>
 <translation id="2815198996063984598">2. Trykk på Standard nettleserapp.</translation>
 <translation id="2820289420301699633">Administratoren din har kontroll over Chrome og tilgang til de tilhørende dataene</translation>
@@ -244,6 +249,7 @@
 <translation id="2923448633003185837">Lim inn og gå til</translation>
 <translation id="292639812446257861">Merk som ulest</translation>
 <translation id="2932085390869194046">Foreslå passord</translation>
+<translation id="2932765531295814441">Legg til passord manuelt</translation>
 <translation id="2952581218264071393">1. Åpne Chrome-innstillingene.</translation>
 <translation id="2958718410589002129">Passord</translation>
 <translation id="2961210776189273067">Tittel</translation>
@@ -279,6 +285,7 @@
 <translation id="3181954750937456830">Safe Browsing (beskytter deg og enheten din mot farlige nettsteder)</translation>
 <translation id="3184767182050912705">Lås opp med <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation>
 <translation id="3207960819495026254">Bokmerket</translation>
+<translation id="3214379938835224220">Du ble logget av som en del av tilbakestillingen av iPad. Trykk på Fortsett under for å logge på.</translation>
 <translation id="3224641773458703735">For å eksportere passordene må du først angi en adgangskode på enheten din.</translation>
 <translation id="3227137524299004712">Mikrofon</translation>
 <translation id="3240426699337459095">Linken er kopiert</translation>
@@ -296,6 +303,7 @@
 <translation id="3329904751041170572">Kunne ikke koble til tjeneren.</translation>
 <translation id="3335947283844343239">Åpne lukkede faner igjen</translation>
 <translation id="3371831930909698441">Oversetter er tilgjengelig. Du finner alternativer på nedre del av skjermen.</translation>
+<translation id="3377063233124932127">Nå finner du blant annet de lagrede bokmerkene og passordene dine øverst.</translation>
 <translation id="3393920035788932672">Tillat forgrunnsvinduer</translation>
 <translation id="3399930248910934354">Åpne Chrome-innstillingene</translation>
 <translation id="3404744938087714423">Hvis du logger av, blir synkronisering slått av.</translation>
@@ -318,11 +326,13 @@
 <translation id="3519193562722059437">Åpne en fane for å surfe på nettet.</translation>
 <translation id="3527085408025491307">Mappe</translation>
 <translation id="3529024052484145543">Ikke sikker</translation>
+<translation id="3530206579861815432">Du kan raskt finne åpne og nylig lukkede faner på alle de synkroniserte enhetene dine.</translation>
 <translation id="3533202363250687977">Lukk alle inkognitofaner</translation>
 <translation id="3533436815740441613">Ny fane</translation>
 <translation id="3551320343578183772">Lukk fanen</translation>
 <translation id="3581564640715911333">Tilby å oversette sider på andre språk</translation>
 <translation id="3588820906588687999">Åpne bildet i en ny fane</translation>
+<translation id="3595252146048399851">Du kan når som helst velge hva du vil synkronisere, i <ph name="BEGIN_LINK" />innstillingene<ph name="END_LINK" />. Google kan gi Søk og andre tjenester personlig preg basert på loggen din.</translation>
 <translation id="3603009562372709545">Kopiér linkadressen</translation>
 <translation id="3607167657931203000">Autofylldata</translation>
 <translation id="3609785682760573515">Synkroniserer …</translation>
@@ -371,6 +381,7 @@
 <translation id="4018310736049373830">Administrer aktivitet</translation>
 <translation id="4038354071007134711">Ingen apper på denne enheten kan åpne filen.</translation>
 <translation id="4042870976416480368">Finn på siden</translation>
+<translation id="40433179647657191">Opprett og del en direktelink til en del av en side du har markert.</translation>
 <translation id="4049507953662678203">Sørg for at du er koblet til et nettverk, og prøv igjen.</translation>
 <translation id="4063300985191096908">Gå til feeden</translation>
 <translation id="408404951701638773">Søkefeltet er nå enklere å finne</translation>
@@ -388,11 +399,13 @@
 <translation id="4181841719683918333">Språk</translation>
 <translation id="4187450337729239226">Lim inn og søk</translation>
 <translation id="4223967053752765281">Organisasjonen din har slått av pålogging. Du kan fremdeles se bokmerkene dine, loggen din, passordene dine og andre innstillinger på denne enheten. Hvis du gjør endringer, blir de ikke synkronisert med kontoen din.</translation>
+<translation id="4232900911558558076">Utforsk den nye menyen</translation>
 <translation id="4233831822770018312">Endre tillatelser</translation>
 <translation id="4236584471598725073">Sporer prisen</translation>
 <translation id="4237377247299956313">Trykk på <ph name="BEGIN_BOLD" />Standard nettleserapp<ph name="END_BOLD" /></translation>
 <translation id="424315890655130736">Skriv inn passordfrasen</translation>
 <translation id="4249955472157341256">Sorter etter nyeste</translation>
+<translation id="42618743927498729">Du får varsler hvis prisen settes ned på noe nettsted.</translation>
 <translation id="4263576668337963058">Vis tilgjengelige sidehandlinger</translation>
 <translation id="4267380167363222949">Neste fane</translation>
 <translation id="4272631900155121838">For å skanne QR-koder, slå på kameraet i innstillingene</translation>
@@ -535,6 +548,7 @@
 <translation id="5388358297987318779">Åpne bildet</translation>
 <translation id="5407969256130905701">Forkast endringer</translation>
 <translation id="5416022985862681400">De siste 7 dagene</translation>
+<translation id="5423269318075950257">Spor prisen</translation>
 <translation id="543338862236136125">Endre passordet</translation>
 <translation id="5433691172869980887">Brukernavnet er kopiert</translation>
 <translation id="5439599923922718668">Ofte besøkte</translation>
@@ -554,11 +568,15 @@
 <translation id="5556459405103347317">Last inn på nytt</translation>
 <translation id="556042886152191864">Knapp</translation>
 <translation id="5580834567471114021">Vil du legge til siden på leselisten for å lese den senere?</translation>
+<translation id="5597915316964418992">Åpne fanerutenettet</translation>
 <translation id="560322036295180549">Organisasjonen din har slått av denne funksjonen</translation>
 <translation id="5614553682702429503">Vil du lagre passordet?</translation>
 <translation id="5626245204502895507">Filen kan ikke lastes ned for øyeblikket.</translation>
 <translation id="5631164295104953411">Legg til betalingsmåte</translation>
+<translation id="5636282538000367086">Finn ut hva som er nytt i Chrome</translation>
+<translation id="5652623411397330904">Produktene du sporer, vises her.</translation>
 <translation id="5659593005791499971">E-post</translation>
+<translation id="5669335982068190158">Du ble logget av som en del av tilbakestillingen av iPhone. Trykk på Fortsett under for å logge på.</translation>
 <translation id="5669528293118408608">www</translation>
 <translation id="567881659373499783">Versjon <ph name="PRODUCT_VERSION" /></translation>
 <translation id="5690398455483874150">{count,plural, =1{Viser nå 1 Chrome-vindu}other{Viser nå {count} Chrome-vinduer}}</translation>
@@ -569,6 +587,7 @@
 <translation id="5724941645893276623">For å surfe privat på nettet, legg til en ny fane</translation>
 <translation id="5728700505257787410">Det oppsto et problem ved pålogging til kontoen din.</translation>
 <translation id="5731784586962650619">Passord i andre apper</translation>
+<translation id="5733084997078800044">Chrome-tips</translation>
 <translation id="5737974891429562743">Påloggingsdetaljene for kontoen er utdatert. Oppdater for å starte synkroniseringen.</translation>
 <translation id="5738385766833540397">Administrer hvordan du mottar varsler om avslag for produkter du sporer</translation>
 <translation id="5738887413654608789">Med denne kan du oppdage relevante nettsider basert på omgivelsene dine.</translation>
@@ -582,6 +601,7 @@
 <translation id="5812974770859303494">Legg til i …</translation>
 <translation id="581659025233126501">Slå på synkronisering</translation>
 <translation id="5819208479324046259">Administreres av <ph name="MANAGER" />. <ph name="BEGIN_LINK" />Finn ut mer<ph name="END_LINK" /></translation>
+<translation id="5833643789537100742">Lagre passord, betalingsmåter og adresser slik at Chrome kan autofylle dem senere.</translation>
 <translation id="5846482154967366008">Søkemotor</translation>
 <translation id="5854790677617711513">Eldre enn 30 dager</translation>
 <translation id="5857090052475505287">Ny mappe</translation>
@@ -597,6 +617,7 @@
 <translation id="5913600720976431809">Alternativer for oversetting av siden</translation>
 <translation id="5938160824633642847">Enheten er nesten full. Frigjør plass og prøv på nytt.</translation>
 <translation id="5948291296578561264">Da kan du lagre bilder i bildebiblioteket ditt.</translation>
+<translation id="5951816930277761335">Del linken</translation>
 <translation id="5955891643922670672">Du ser en versjon uten nett</translation>
 <translation id="5957613098218939406">Flere alternativer</translation>
 <translation id="5963939892571022323">Kan ikke opprette noen link til den markerte teksten.</translation>
@@ -636,6 +657,7 @@
 <translation id="6189413832092199491">Ulest</translation>
 <translation id="6196207969502475924">Google Talesøk</translation>
 <translation id="6202364442240589072">{COUNT,plural, =1{Lukk {COUNT} fane}other{Lukk {COUNT} faner}}</translation>
+<translation id="6219550825416862075">Velkommen tilbake</translation>
 <translation id="6219688215832490856">Oversett aldri</translation>
 <translation id="6223816392543092032">Få bokmerkene, loggen, passordene og de andre innstillingene dine på alle enhetene du bruker.</translation>
 <translation id="6231782223312638214">Foreslått</translation>
@@ -723,6 +745,7 @@
 Når du er i Inkognito, kan ikke nettsteder bruke informasjonskapsler til å se nettleseraktiviteten din på andre nettsteder, for eksempel for å vise deg personlig tilpassede annonser.</translation>
 <translation id="6674571176963658787">For å starte synkroniseringen, skriv inn passordfrasen din</translation>
 <translation id="667999046851023355">Dokument</translation>
+<translation id="6684906340059221832">Sporer prisene</translation>
 <translation id="6710079714193676716">Administreres av organisasjonen din. Noen funksjoner er kanskje ikke tilgjengelige. <ph name="BEGIN_LINK" />Finn ut mer<ph name="END_LINK" /></translation>
 <translation id="6713747756340119864">Google Apps</translation>
 <translation id="6730682669179532099">Kan ikke eksportere passordene</translation>
@@ -756,6 +779,7 @@
 <translation id="6945221475159498467">Velg</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="6973630695168034713">Mapper</translation>
+<translation id="6975148662438928529">Du ble logget av kontoen din, <ph name="USER_NAME" />, som en del av tilbakestillingen av iPad. Trykk på Fortsett under for å logge på.</translation>
 <translation id="6979158407327259162">Google Disk</translation>
 <translation id="6988572888918530647">Administrer Google-kontoen din</translation>
 <translation id="6989674195860388998">Bytt i Innstillinger…</translation>
@@ -789,12 +813,16 @@
 <translation id="7265758999917665941">Aldri for dette nettstedet</translation>
 <translation id="7272437679830969316">Kan ikke bekrefte identiteten din. Passordet er ikke kopiert.</translation>
 <translation id="7291368939935408496">Klargjør passordene …</translation>
+<translation id="730958329302570991">Du kan enkelt legge til nettstedspassord i Google Passordlagring når som helst.</translation>
 <translation id="7313347584264171202">Her finner du inkognitofanene dine</translation>
+<translation id="7315813263062036945">Trykk på søkeikonet øverst til venstre</translation>
 <translation id="7336264872878993241"><ph name="PERCENT" /> prosent fullført</translation>
 <translation id="7340958967809483333">Alternativer for Discover</translation>
 <translation id="7346909386216857016">Greit</translation>
 <translation id="734758817008927353">Alternativer for lagring av kort</translation>
+<translation id="7351537303876921605">Trykk på Opprett link på den kontekstuelle menyen</translation>
 <translation id="7353432112255316844">Bekreft at det er deg</translation>
+<translation id="7356359962760467032">Stopp prissporing</translation>
 <translation id="7383797227493018512">Leseliste</translation>
 <translation id="7398893703713203428">Opprett link</translation>
 <translation id="739941347996872055">Forrige fane</translation>
@@ -815,6 +843,7 @@
 <translation id="750493650310597496">0 er valgt</translation>
 <translation id="7508728395076009983">For å låse inkognitofanene dine, konfigurer Touch ID, Face ID eller en sikkerhetskode.</translation>
 <translation id="7514365320538308">Last ned</translation>
+<translation id="7531345132340165516">Gjeldende nettsted</translation>
 <translation id="7537586195939242955">Tillatelsen din kan for øyeblikket ikke installeres i Passbook.</translation>
 <translation id="7554791636758816595">Ny fane</translation>
 <translation id="7561196759112975576">Alltid</translation>
@@ -825,6 +854,7 @@
 <translation id="7638584964844754484">Feil passordfrase</translation>
 <translation id="7646263789464975852">Meny → Innstillinger → Sikkerhetssjekk</translation>
 <translation id="7646772052135772216">Passordsynkronisering fungerer ikke</translation>
+<translation id="764827086632467055">Trykk på Standard nettleserapp</translation>
 <translation id="7649070708921625228">Hjelp</translation>
 <translation id="7658239707568436148">Avbryt</translation>
 <translation id="7671141431838911305">INSTALLER</translation>
@@ -847,6 +877,7 @@
 <translation id="784551991304901159">For å se innhold, velg «Slå på» på menyen</translation>
 <translation id="7853202427316060426">Aktivitet</translation>
 <translation id="7856733331829174190">Kunne ikke laste ned</translation>
+<translation id="785938070103630874">Åpne passord, betalingsmåter eller adresse med mer</translation>
 <translation id="7859704718976024901">Nettleserlogg</translation>
 <translation id="7884694604461143138">Søkelogg (fant <ph name="COUNT" />)</translation>
 <translation id="7887198238286927132">For å beskytte personvernet ditt fyller ikke Chrome automatisk ut dette feltet.</translation>
@@ -866,6 +897,7 @@
 <translation id="7971521879845308059">Blokkér forgrunnsvinduer</translation>
 <translation id="797413074872316787">For å synkronisere flere enheter og gi dem samme personlige preg, slå på synkronisering.</translation>
 <translation id="7978018860671536736">3. Trykk på Autofyll passord</translation>
+<translation id="7981908678811807838">Prissporing er ikke tilgjengelig for dette nettstedet.</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>
 <translation id="7993619969781047893">Det kan hende at funksjoner på enkelte nettsteder slutter å fungere</translation>
@@ -901,11 +933,13 @@
 <translation id="8237382152611443140">Åpne innstillinger for autofylling av passord</translation>
 <translation id="8261506727792406068">Slett</translation>
 <translation id="8271720166617117963">Godta og logg på</translation>
+<translation id="8278938988428169257">Skriv inn et ord eller uttrykk</translation>
 <translation id="8281781826761538115">Standard – <ph name="DEFAULT_LOCALE" /></translation>
 <translation id="8281886186245836920">Hopp over</translation>
 <translation id="8283172974887967105">Angi…</translation>
 <translation id="8299417921174340354">For å bruke passord må du først angi en adgangskode på enheten din.</translation>
 <translation id="8299613349954694191">Åpne en inkognitofane for å surfe privat på nettet.</translation>
+<translation id="8316944564970119719">Skriv inn nettsted og passord, og lagre deretter</translation>
 <translation id="8319076807703933069">Nytt søk</translation>
 <translation id="8323906514956095947">Trykk og hold inne for flere fanealternativer</translation>
 <translation id="8328777765163860529">Lukk alle</translation>
@@ -933,6 +967,7 @@
 <translation id="8533670235862049797">Safe Browsing er på</translation>
 <translation id="8534481786647257214">Google+-innlegget er fullført.</translation>
 <translation id="8548878600947630424">Finn på siden</translation>
+<translation id="8558480467877843976">Nå kan du bruke Chrome når du blar gjennom eller trykker på linker i meldinger, dokumenter og andre apper.</translation>
 <translation id="8588404856427128947">Av</translation>
 <translation id="8590913940444621808">Spør aldri</translation>
 <translation id="8591976964826315682">Blokkér informasjonskapsler fra tredjepart i inkognitomodus</translation>
@@ -950,6 +985,8 @@
 <translation id="8721297211384281569">Verktøy-menyen</translation>
 <translation id="8725066075913043281">Prøv på nytt</translation>
 <translation id="8730621377337864115">Ferdig</translation>
+<translation id="8731388423028622182">Du ble logget av kontoen din, <ph name="USER_NAME" />, som en del av tilbakestillingen av iPhone. Trykk på Fortsett under for å logge på.</translation>
+<translation id="87371078663613140">Utforsk alternativene på menylinjen</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="8750037785291841318">Her finner du fanene dine</translation>
 <translation id="8756969031206844760">Vil du oppdatere passordet?</translation>
@@ -967,10 +1004,13 @@
 <translation id="8868471676553493380">{count,plural, =1{{count} fane}other{{count} faner}}</translation>
 <translation id="8870413625673593573">Nylig lukket</translation>
 <translation id="8876882697946675716">Hold enhetene dine synkronisert</translation>
+<translation id="8877287418679067891">Angi som standard i innstillingene…</translation>
 <translation id="8881801611828450202">Søk etter dette bildet i <ph name="SEARCH_ENGINE" /></translation>
 <translation id="8891935667620843985">Du kan åpne linker i Chrome automatisk ved å angi Chrome som standard nettleserapp.</translation>
 <translation id="8898822736010347272">Sender nettadresser for noen av sidene du besøker, begrenset systeminformasjon og noe sideinnhold til Google for å bidra til å oppdage nye trusler og beskytte alle på nettet.</translation>
 <translation id="8909135823018751308">Del</translation>
+<translation id="8911759861431145525">Trykk på Legg til, og skriv inn informasjonen din</translation>
+<translation id="891658175948553296">Marker tekst på nettsteder</translation>
 <translation id="8917490105272468696">Ja, den er grei</translation>
 <translation id="8928133177108699615">Datamaskin</translation>
 <translation id="8952559610785099500">Legg til et passord</translation>
@@ -1008,6 +1048,7 @@
 <translation id="9203116392574189331">Handoff</translation>
 <translation id="9223358826628549784">Programstopprapporten er sendt.</translation>
 <translation id="952704832371081537">Avbryt</translation>
+<translation id="953008885340860025">Chrome er logget av</translation>
 <translation id="959066944189734975">Du følger <ph name="CHANNEL_NAME" /></translation>
 <translation id="981498610235328462">Organisasjonen din lar deg kun logge på med visse kontoer. Kontoer som ikke tillates, er skjult.</translation>
 <translation id="984509647832111802">Synkroniseringen fungerer ikke.</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 7b8e191..d2804541 100644
--- a/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb
@@ -19,6 +19,7 @@
 <translation id="1076421457278169141">Código digitalizado</translation>
 <translation id="1076785341346483463">Sincronize com uma conta gerida</translation>
 <translation id="1084365883616172403">Publicação no Facebook concluída.</translation>
+<translation id="1085696779717592361">Use o Chrome por predefinição</translation>
 <translation id="1103523840287552314">Traduzir sempre <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Aceitar e Continuar</translation>
 <translation id="110724200315609752">Mudar para a janela aberta</translation>
@@ -34,6 +35,7 @@
 <translation id="1165039591588034296">Erro</translation>
 <translation id="1172898394251786223">Campo seguinte</translation>
 <translation id="1176932207622159128">Não é Possível Guardar a Imagem</translation>
+<translation id="1177414119866731261">Abra o menu do Chrome</translation>
 <translation id="1181037720776840403">Remover</translation>
 <translation id="1207113853726624428">Nova pesquisa</translation>
 <translation id="1209206284964581585">Ocultar para já</translation>
@@ -110,6 +112,7 @@
 <translation id="1740468249224277719">Toque duas vezes para instalar.</translation>
 <translation id="1752547299766512813">Guardar Palavras-passe</translation>
 <translation id="1753905327828125965">Mais visitados</translation>
+<translation id="1789803444939621101">Damos-lhe as boas-vindas de volta, <ph name="USER_NAME" /></translation>
 <translation id="1803264062614276815">Nome do titular do cartão</translation>
 <translation id="1809939268435598390">Eliminar pasta</translation>
 <translation id="1813414402673211292">Limpar dados de navegação</translation>
@@ -163,6 +166,7 @@
 <translation id="2302742851632557585">Alterar palavra-passe no Website</translation>
 <translation id="2316709634732130529">Utilizar palavra-passe sugerida</translation>
 <translation id="2320166752086256636">Ocultar teclado</translation>
+<translation id="2328842561016935977">Toque em Palavras-passe e, de seguida, em Adicionar</translation>
 <translation id="2351097562818989364">As definições de tradução foram repostas.</translation>
 <translation id="235789365079050412">Política de Privacidade da Google</translation>
 <translation id="2359043044084662842">Traduzir</translation>
@@ -221,6 +225,7 @@
 <translation id="2781331604911854368">Ativado</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2783054063075604403">Não é possível criar o link</translation>
+<translation id="2786701870377699570">Pesquise separadores em dispositivos sincronizados</translation>
 <translation id="2800683595868705743">Sair do Comutador de separadores</translation>
 <translation id="2815198996063984598">2. Toque em App de navegador predefinida.</translation>
 <translation id="2820289420301699633">O administrador controla o Chrome e consegue aceder aos respetivos dados</translation>
@@ -244,6 +249,7 @@
 <translation id="2923448633003185837">Colar e ir</translation>
 <translation id="292639812446257861">Marcar como não lidas</translation>
 <translation id="2932085390869194046">Sugerir palavra-passe…</translation>
+<translation id="2932765531295814441">Adicione palavras-passe manualmente</translation>
 <translation id="2952581218264071393">1. Abra as definições do Chrome.</translation>
 <translation id="2958718410589002129">Palavras-passe</translation>
 <translation id="2961210776189273067">Título</translation>
@@ -279,6 +285,7 @@
 <translation id="3181954750937456830">Navegação segura (protege o utilizador e o seu dispositivo contra sites perigosos)</translation>
 <translation id="3184767182050912705">Desbloquear com <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation>
 <translation id="3207960819495026254">Adicionado aos marcadores</translation>
+<translation id="3214379938835224220">Como parte da reposição do iPad, a sua sessão foi terminada. Toque em Continuar abaixo para iniciar sessão.</translation>
 <translation id="3224641773458703735">Para exportar palavras-passe, tem de definir primeiro um código secreto no dispositivo.</translation>
 <translation id="3227137524299004712">Microfone</translation>
 <translation id="3240426699337459095">Link copiado</translation>
@@ -296,6 +303,7 @@
 <translation id="3329904751041170572">Não foi possível ligar ao servidor.</translation>
 <translation id="3335947283844343239">Reabrir separador fechado</translation>
 <translation id="3371831930909698441">A tradução está disponível. Opções disponíveis junto à parte inferior do ecrã.</translation>
+<translation id="3377063233124932127">Agora, os seus marcadores, palavras-passe e outros itens guardados estão na parte superior.</translation>
 <translation id="3393920035788932672">Pop-ups Permitidos</translation>
 <translation id="3399930248910934354">Abrir definições do Chrome</translation>
 <translation id="3404744938087714423">Terminar sessão desativa a sincronização.</translation>
@@ -318,11 +326,13 @@
 <translation id="3519193562722059437">Abra um separador para navegar na Web.</translation>
 <translation id="3527085408025491307">Pasta</translation>
 <translation id="3529024052484145543">Inseguro</translation>
+<translation id="3530206579861815432">Encontre rapidamente separadores abertos e fechados recentemente nos seus dispositivos sincronizados.</translation>
 <translation id="3533202363250687977">Fechar todos os separadores de navegação anónima</translation>
 <translation id="3533436815740441613">Novo separador</translation>
 <translation id="3551320343578183772">Fechar Separador</translation>
 <translation id="3581564640715911333">Proponha a tradução de páginas noutros idiomas</translation>
 <translation id="3588820906588687999">Abrir imagem num novo separador</translation>
+<translation id="3595252146048399851">Pode escolher o que quer sincronizar nas <ph name="BEGIN_LINK" />definições<ph name="END_LINK" />. A Google pode personalizar a Pesquisa e outros serviços com base no seu histórico.</translation>
 <translation id="3603009562372709545">Copiar URL do Link</translation>
 <translation id="3607167657931203000">Dados de preenchimento automático</translation>
 <translation id="3609785682760573515">A sincronizar…</translation>
@@ -371,6 +381,7 @@
 <translation id="4018310736049373830">Gerir atividade</translation>
 <translation id="4038354071007134711">Nenhuma app neste disp. pode abrir o ficheiro.</translation>
 <translation id="4042870976416480368">Localizar na página</translation>
+<translation id="40433179647657191">Crie e partilhe um link direto para parte de uma página que realçou.</translation>
 <translation id="4049507953662678203">Certifique-se de que tem uma ligação de rede e tente novamente.</translation>
 <translation id="4063300985191096908">Aceder ao feed</translation>
 <translation id="408404951701638773">Agora é mais fácil aceder à barra de pesquisa</translation>
@@ -388,11 +399,13 @@
 <translation id="4181841719683918333">Idiomas</translation>
 <translation id="4187450337729239226">Colar e pesquisar</translation>
 <translation id="4223967053752765281">A sua organização desativou o início de sessão. Ainda pode ver os seus marcadores, histórico, palavras-passe e outras definições neste dispositivo. Se fizer alterações, estes não serão sincronizadas com a sua conta.</translation>
+<translation id="4232900911558558076">Explore o novo menu</translation>
 <translation id="4233831822770018312">Edite as autorizações</translation>
 <translation id="4236584471598725073">A monitorizar o preço</translation>
 <translation id="4237377247299956313">Toque em <ph name="BEGIN_BOLD" />App de navegador predefinida<ph name="END_BOLD" /></translation>
 <translation id="424315890655130736">Introduzir frase de acesso</translation>
 <translation id="4249955472157341256">Ordenar por mais recente</translation>
+<translation id="42618743927498729">Obtenha um alerta se o preço descer em qualquer site.</translation>
 <translation id="4263576668337963058">Mostrar ações de página disponíveis</translation>
 <translation id="4267380167363222949">Separador seguinte</translation>
 <translation id="4272631900155121838">Para ler um código QR, ative a câmara nas definições</translation>
@@ -535,6 +548,7 @@
 <translation id="5388358297987318779">Abrir Imagem</translation>
 <translation id="5407969256130905701">Rejeitar alterações</translation>
 <translation id="5416022985862681400">Últimos 7 dias</translation>
+<translation id="5423269318075950257">Monitorize o preço</translation>
 <translation id="543338862236136125">Editar palavra-passe</translation>
 <translation id="5433691172869980887">Nome de utilizador copiado</translation>
 <translation id="5439599923922718668">Visitados frequentemente</translation>
@@ -554,11 +568,15 @@
 <translation id="5556459405103347317">Recarregar</translation>
 <translation id="556042886152191864">Botão</translation>
 <translation id="5580834567471114021">Pretende adicionar à Lista de leitura para ler mais tarde?</translation>
+<translation id="5597915316964418992">Abra a grelha de separadores</translation>
 <translation id="560322036295180549">Desativado pela sua entidade</translation>
 <translation id="5614553682702429503">Pretende guardar a palavra-passe?</translation>
 <translation id="5626245204502895507">De momento não é possível transferir o ficheiro.</translation>
 <translation id="5631164295104953411">Adicionar método de pagamento</translation>
+<translation id="5636282538000367086">Conheça as novidades do Chrome</translation>
+<translation id="5652623411397330904">Os produtos que monitorizar aparecem aqui.</translation>
 <translation id="5659593005791499971">Email</translation>
+<translation id="5669335982068190158">Como parte da reposição do iPhone, a sua sessão foi terminada. Toque em Continuar abaixo para iniciar sessão.</translation>
 <translation id="5669528293118408608">www</translation>
 <translation id="567881659373499783">Versão <ph name="PRODUCT_VERSION" /></translation>
 <translation id="5690398455483874150">{count,plural, =1{A mostrar 1 janela do Chrome agora}other{A mostrar {count} janelas do Chrome agora}}</translation>
@@ -569,6 +587,7 @@
 <translation id="5724941645893276623">Para navegar na Web em privado, adicione um novo separador.</translation>
 <translation id="5728700505257787410">Lamentamos, mas houve um problema ao iniciar sessão na sua conta.</translation>
 <translation id="5731784586962650619">Palavras-passe noutras apps</translation>
+<translation id="5733084997078800044">Sugestão do Chrome</translation>
 <translation id="5737974891429562743">Os detalhes de início de sessão na conta estão desatualizados. Atualize-os para iniciar a sincronização.</translation>
 <translation id="5738385766833540397">Faça a gestão da forma como recebe alertas de descida do preço relativos a produtos que monitoriza</translation>
 <translation id="5738887413654608789">Isto permite descobrir páginas Web relevantes com base no ambiente à sua volta.</translation>
@@ -582,6 +601,7 @@
 <translation id="5812974770859303494">Adicionar a…</translation>
 <translation id="581659025233126501">Ativar sincronização</translation>
 <translation id="5819208479324046259">Gerido por <ph name="MANAGER" />. <ph name="BEGIN_LINK" />Saiba mais<ph name="END_LINK" /></translation>
+<translation id="5833643789537100742">Guarde palavras-passe, métodos de pagamento e moradas para o Chrome preencher automaticamente mais tarde.</translation>
 <translation id="5846482154967366008">Motor de Pesquisa</translation>
 <translation id="5854790677617711513">Com mais de 30 dias</translation>
 <translation id="5857090052475505287">Nova pasta</translation>
@@ -597,6 +617,7 @@
 <translation id="5913600720976431809">Opções de tradução da página</translation>
 <translation id="5938160824633642847">O dispositivo está quase cheio. Liberte espaço e tente novamente.</translation>
 <translation id="5948291296578561264">Isto permite-lhe guardar fotos na sua biblioteca de fotos.</translation>
+<translation id="5951816930277761335">Partilhe o link</translation>
 <translation id="5955891643922670672">Ver a versão offline</translation>
 <translation id="5957613098218939406">Mais opções</translation>
 <translation id="5963939892571022323">Não é possível criar um link para o realce.</translation>
@@ -636,6 +657,7 @@
 <translation id="6189413832092199491">Não lidas</translation>
 <translation id="6196207969502475924">Pesquisa por Voz</translation>
 <translation id="6202364442240589072">{COUNT,plural, =1{Fechar {COUNT} separador}other{Fechar {COUNT} separadores}}</translation>
+<translation id="6219550825416862075">Damos-lhe as boas-vindas de volta</translation>
 <translation id="6219688215832490856">Nunca traduzir</translation>
 <translation id="6223816392543092032">Obtenha os seus marcadores, histórico, palavras-passe e outras definições em todos os dispositivos.</translation>
 <translation id="6231782223312638214">Sugerido</translation>
@@ -723,6 +745,7 @@
 Quando estiver na Navegação anónima, os sites não podem utilizar cookies para ver a sua atividade de navegação em diferentes sites, por exemplo, para personalizar anúncios.</translation>
 <translation id="6674571176963658787">Para iniciar a sincronização, introduza a sua frase de acesso</translation>
 <translation id="667999046851023355">Documento</translation>
+<translation id="6684906340059221832">A monitorizar os preços</translation>
 <translation id="6710079714193676716">Gerido pela sua entidade. Algumas funcionalidades podem estar indisponíveis. <ph name="BEGIN_LINK" />Saiba mais<ph name="END_LINK" /></translation>
 <translation id="6713747756340119864">Google Apps</translation>
 <translation id="6730682669179532099">Não é possível exportar palavras-passe</translation>
@@ -756,6 +779,7 @@
 <translation id="6945221475159498467">Selecionar</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="6973630695168034713">Pastas</translation>
+<translation id="6975148662438928529">Como parte da reposição do iPad, a sua sessão na conta <ph name="USER_NAME" /> foi terminada. Toque em Continuar abaixo para iniciar sessão.</translation>
 <translation id="6979158407327259162">Google Drive</translation>
 <translation id="6988572888918530647">Faça a gestão da sua Conta Google</translation>
 <translation id="6989674195860388998">Alterar nas Definições…</translation>
@@ -789,12 +813,16 @@
 <translation id="7265758999917665941">Nunca para este site</translation>
 <translation id="7272437679830969316">Não é possível validar a sua identidade. Palavra-passe não copiada.</translation>
 <translation id="7291368939935408496">A preparar palavras-passe…</translation>
+<translation id="730958329302570991">Adicione facilmente palavras-passe de sites ao Gestor de Palavras-passe da Google em qualquer altura.</translation>
 <translation id="7313347584264171202">Os seus separadores de navegação anónima serão apresentados aqui</translation>
+<translation id="7315813263062036945">Na parte superior esquerda, toque no ícone da Pesquisa</translation>
 <translation id="7336264872878993241"><ph name="PERCENT" /> por cento transferido</translation>
 <translation id="7340958967809483333">Opções para o Discover</translation>
 <translation id="7346909386216857016">OK</translation>
 <translation id="734758817008927353">Opções para guardar o cartão</translation>
+<translation id="7351537303876921605">Toque em Criar link no menu de contexto</translation>
 <translation id="7353432112255316844">Validar identidade</translation>
+<translation id="7356359962760467032">Parar monitorização de preços</translation>
 <translation id="7383797227493018512">Lista de leitura</translation>
 <translation id="7398893703713203428">Criar link</translation>
 <translation id="739941347996872055">Separador anterior</translation>
@@ -815,6 +843,7 @@
 <translation id="750493650310597496">0 selecionados</translation>
 <translation id="7508728395076009983">Para bloquear os separadores de navegação anónima, configure o Touch ID, o Face ID ou um código secreto.</translation>
 <translation id="7514365320538308">Transferir</translation>
+<translation id="7531345132340165516">Site atual</translation>
 <translation id="7537586195939242955">De momento não é possível instalar a sua Palavra-passe no Passbook.</translation>
 <translation id="7554791636758816595">Novo separador</translation>
 <translation id="7561196759112975576">Sempre</translation>
@@ -825,6 +854,7 @@
 <translation id="7638584964844754484">Frase de acesso incorreta</translation>
 <translation id="7646263789464975852">Menu → Definições → Verificação de segurança</translation>
 <translation id="7646772052135772216">A sincronização de palavras-passe não está a funcionar</translation>
+<translation id="764827086632467055">Toque em App de navegador predefinida</translation>
 <translation id="7649070708921625228">Ajuda</translation>
 <translation id="7658239707568436148">Cancelar</translation>
 <translation id="7671141431838911305">INSTALAR</translation>
@@ -847,6 +877,7 @@
 <translation id="784551991304901159">Para ver o conteúdo, selecione Ativar no menu</translation>
 <translation id="7853202427316060426">Atividade</translation>
 <translation id="7856733331829174190">Impossível transferir</translation>
+<translation id="785938070103630874">Abra palavras-passe, métodos de pagamento, moradas e muito mais</translation>
 <translation id="7859704718976024901">Histórico de navegação</translation>
 <translation id="7884694604461143138">Histórico de pesquisas (<ph name="COUNT" /> encontrado[s])</translation>
 <translation id="7887198238286927132">Para proteger a sua privacidade, o Chrome não irá preencher automaticamente este campo.</translation>
@@ -866,6 +897,7 @@
 <translation id="7971521879845308059">Bloquear Pop-ups</translation>
 <translation id="797413074872316787">Para sincronizar e personalizar dados entre dispositivos, ative a sincronização.</translation>
 <translation id="7978018860671536736">3. Toque em Preenchimento automático de palavras-passe</translation>
+<translation id="7981908678811807838">A monitorização de preços não está disponível para este site.</translation>
 <translation id="7982789257301363584">Rede</translation>
 <translation id="7987685713885608670">Para maior segurança, encripte as palavras-passe no seu dispositivo antes de serem guardadas no Gestor de palavras-passe da Google.</translation>
 <translation id="7993619969781047893">As funcionalidades em alguns sites podem falhar.</translation>
@@ -901,11 +933,13 @@
 <translation id="8237382152611443140">Abra as Definições do preenchimento automático de palavras-passe</translation>
 <translation id="8261506727792406068">Eliminar</translation>
 <translation id="8271720166617117963">Aceitar e iniciar sessão</translation>
+<translation id="8278938988428169257">Introduza uma palavra ou uma expressão</translation>
 <translation id="8281781826761538115">Predefinição – <ph name="DEFAULT_LOCALE" /></translation>
 <translation id="8281886186245836920">Ignorar</translation>
 <translation id="8283172974887967105">Definir…</translation>
 <translation id="8299417921174340354">Para utilizar palavras-passe, tem de definir primeiro um código secreto no dispositivo.</translation>
 <translation id="8299613349954694191">Abra um separador de navegação anónima para navegar na Web de forma privada.</translation>
+<translation id="8316944564970119719">Introduza o site e a palavra-passe e, em seguida, guarde</translation>
 <translation id="8319076807703933069">Nova pesquisa</translation>
 <translation id="8323906514956095947">Toque sem soltar para obter mais opções de separadores.</translation>
 <translation id="8328777765163860529">Fechar Tudo</translation>
@@ -933,6 +967,7 @@
 <translation id="8533670235862049797">A Navegação segura está ativada.</translation>
 <translation id="8534481786647257214">Publicação no Google+ concluído.</translation>
 <translation id="8548878600947630424">Localizar na página...</translation>
+<translation id="8558480467877843976">Agora, pode usar o Chrome sempre que navegar ou tocar em links de mensagens, documentos e outras apps.</translation>
 <translation id="8588404856427128947">Desativada</translation>
 <translation id="8590913940444621808">Nunca perguntar</translation>
 <translation id="8591976964826315682">Bloquear cookies de terceiros na Navegação anónima</translation>
@@ -950,6 +985,8 @@
 <translation id="8721297211384281569">Menu Ferramentas</translation>
 <translation id="8725066075913043281">Tentar novamente</translation>
 <translation id="8730621377337864115">Concluído</translation>
+<translation id="8731388423028622182">Como parte da reposição do iPhone, a sua sessão na conta <ph name="USER_NAME" /> foi terminada. Toque em Continuar abaixo para iniciar sessão.</translation>
+<translation id="87371078663613140">Explore as opções na barra de menu</translation>
 <translation id="8741995161408053644">A sua Conta Google pode ter outras formas do histórico de navegação em <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" />.</translation>
 <translation id="8750037785291841318">Os seus separadores serão apresentados aqui</translation>
 <translation id="8756969031206844760">Pretende atualizar a palavra-passe?</translation>
@@ -967,10 +1004,13 @@
 <translation id="8868471676553493380">{count,plural, =1{{count} separador}other{{count} separadores}}</translation>
 <translation id="8870413625673593573">Fechadas recentemente</translation>
 <translation id="8876882697946675716">Mantenha os seus dispositivos sincronizados</translation>
+<translation id="8877287418679067891">Predefinir nas Definições…</translation>
 <translation id="8881801611828450202">Pesquisar esta imagem no <ph name="SEARCH_ENGINE" /></translation>
 <translation id="8891935667620843985">Pode abrir links no Chrome automaticamente ao torná-lo a sua app de navegador predefinida.</translation>
 <translation id="8898822736010347272">Envia URLs de algumas páginas que visita, informações limitadas do sistema e algum conteúdo das páginas para a Google para ajudar a detetar novas ameaças e a proteger todos os utilizadores na Web.</translation>
 <translation id="8909135823018751308">Partilhar…</translation>
+<translation id="8911759861431145525">Toque em Adicionar e introduza as suas informações</translation>
+<translation id="891658175948553296">Realce texto num site</translation>
 <translation id="8917490105272468696">Sim, aceito</translation>
 <translation id="8928133177108699615">Computador</translation>
 <translation id="8952559610785099500">Adicione uma palavra-passe</translation>
@@ -1008,6 +1048,7 @@
 <translation id="9203116392574189331">Entrega</translation>
 <translation id="9223358826628549784">Relatório de falha enviado.</translation>
 <translation id="952704832371081537">Cancelar</translation>
+<translation id="953008885340860025">Sessão terminada no Chrome</translation>
 <translation id="959066944189734975">Está a seguir <ph name="CHANNEL_NAME" /></translation>
 <translation id="981498610235328462">A sua organização permite-lhe iniciar sessão apenas com determinadas contas. As contas que não estão autorizadas estão ocultas.</translation>
 <translation id="984509647832111802">A sincronização não está a funcionar.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sl.xtb b/ios/chrome/app/strings/resources/ios_strings_sl.xtb
index aa930db..52232177 100644
--- a/ios/chrome/app/strings/resources/ios_strings_sl.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_sl.xtb
@@ -19,6 +19,7 @@
 <translation id="1076421457278169141">Koda je bila optično prebrana</translation>
 <translation id="1076785341346483463">Sinhronizacija z upravljanim računom</translation>
 <translation id="1084365883616172403">Objava v Facebooku je dokončana.</translation>
+<translation id="1085696779717592361">Privzeto uporabljajte Chrome</translation>
 <translation id="1103523840287552314">Vedno prevedi ta jezik: <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Sprejmi in nadaljuj</translation>
 <translation id="110724200315609752">Preklop na odprto okno</translation>
@@ -34,6 +35,7 @@
 <translation id="1165039591588034296">Napaka</translation>
 <translation id="1172898394251786223">Naslednje polje</translation>
 <translation id="1176932207622159128">Slike ni mog. shran.</translation>
+<translation id="1177414119866731261">Odprite Chromov meni</translation>
 <translation id="1181037720776840403">Odstrani</translation>
 <translation id="1207113853726624428">Novo iskanje</translation>
 <translation id="1209206284964581585">Zaenkrat skrij</translation>
@@ -110,6 +112,7 @@
 <translation id="1740468249224277719">Dvakrat se dotaknite, če želite namestiti.</translation>
 <translation id="1752547299766512813">Shranjena gesla</translation>
 <translation id="1753905327828125965">Najpogosteje obiskane</translation>
+<translation id="1789803444939621101">Dobrodošli nazaj, <ph name="USER_NAME" /></translation>
 <translation id="1803264062614276815">Ime imetnika kartice</translation>
 <translation id="1809939268435598390">Izbriši mapo</translation>
 <translation id="1813414402673211292">Brisanje podatkov brskanja</translation>
@@ -163,6 +166,7 @@
 <translation id="2302742851632557585">Spremeni geslo na spletnem mestu</translation>
 <translation id="2316709634732130529">Uporabi predlagano geslo</translation>
 <translation id="2320166752086256636">Skrij tipkovnico</translation>
+<translation id="2328842561016935977">Dotaknite se »Passwords« (Gesla) in nato »Add« (Dodaj)</translation>
 <translation id="2351097562818989364">Nastavitve za prevajanje so ponastavljene.</translation>
 <translation id="235789365079050412">Googlov pravilnik o zasebnosti</translation>
 <translation id="2359043044084662842">Prevedi</translation>
@@ -221,6 +225,7 @@
 <translation id="2781331604911854368">Vklopljeno</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2783054063075604403">Povezave ni mogoče ustvariti</translation>
+<translation id="2786701870377699570">Iskanje zavihkov v sinhroniziranih napravah</translation>
 <translation id="2800683595868705743">Leave Tab Switcher</translation>
 <translation id="2815198996063984598">2. Dotaknite se možnosti za privzeto aplikacijo za brskanje.</translation>
 <translation id="2820289420301699633">Skrbnik ima nadzor nad Chromom in lahko dostopa do podatkov v njem.</translation>
@@ -244,6 +249,7 @@
 <translation id="2923448633003185837">Prilepi in nadaljuj</translation>
 <translation id="292639812446257861">Označi kot neprebrano</translation>
 <translation id="2932085390869194046">Predlagaj geslo …</translation>
+<translation id="2932765531295814441">Ročno dodajanje gesel</translation>
 <translation id="2952581218264071393">1. Odprite nastavitve brskalnika Chrome.</translation>
 <translation id="2958718410589002129">Gesla</translation>
 <translation id="2961210776189273067">Naslov</translation>
@@ -279,6 +285,7 @@
 <translation id="3181954750937456830">Varno brskanje (ščiti vas in napravo pred nevarnimi spletnimi mesti)</translation>
 <translation id="3184767182050912705">Odklepanje s tem: <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation>
 <translation id="3207960819495026254">Dodano med zaznamke</translation>
+<translation id="3214379938835224220">Bili ste odjavljeni zarad ponastavitve iPada. Spodaj se dotaknite gumba za nadaljevanje, če se želite prijaviti.</translation>
 <translation id="3224641773458703735">Če želite izvoziti gesla, morate najprej nastaviti geslo v napravi.</translation>
 <translation id="3227137524299004712">Mikrofon</translation>
 <translation id="3240426699337459095">Povezava kopirana</translation>
@@ -296,6 +303,7 @@
 <translation id="3329904751041170572">Povezave s strežnikom ni mogoče vzpostaviti.</translation>
 <translation id="3335947283844343239">Znova odpri zaprt zavihek</translation>
 <translation id="3371831930909698441">Prevod je na voljo. Možnosti so na voljo pri dnu zaslona.</translation>
+<translation id="3377063233124932127">Zdaj so shranjeni zaznamki, gesla in drugo na vrhu.</translation>
 <translation id="3393920035788932672">Pojavna okna so dovoljena</translation>
 <translation id="3399930248910934354">Odpri nastavitve Chroma</translation>
 <translation id="3404744938087714423">Če se odjavite, se izklopi sinhronizacija.</translation>
@@ -318,11 +326,13 @@
 <translation id="3519193562722059437">Open a tab to browse the web.</translation>
 <translation id="3527085408025491307">Mapa</translation>
 <translation id="3529024052484145543">Ni varno</translation>
+<translation id="3530206579861815432">Hitro poiščite odprte in nedavno zaprte zavihke v sinhroniziranih napravah.</translation>
 <translation id="3533202363250687977">Zapri vse anonimne zavihke</translation>
 <translation id="3533436815740441613">Nov zavihek</translation>
 <translation id="3551320343578183772">Zapri zavihek</translation>
 <translation id="3581564640715911333">Ponudi prevajanje strani v drugih jezikih</translation>
 <translation id="3588820906588687999">Odpri sliko na novem zavihku</translation>
+<translation id="3595252146048399851">V <ph name="BEGIN_LINK" />nastavitvah<ph name="END_LINK" /> lahko kadar koli izberete, kaj želite sinhronizirati. Google lahko prilagodi Iskanje Google in druge storitve glede na vašo zgodovino.</translation>
 <translation id="3603009562372709545">Kopiraj URL povezave</translation>
 <translation id="3607167657931203000">Autofill Data</translation>
 <translation id="3609785682760573515">Sinhroniziranje ...</translation>
@@ -371,6 +381,7 @@
 <translation id="4018310736049373830">Upravljanje dejavnosti</translation>
 <translation id="4038354071007134711">Nobena aplikacija v tej napravi ne more odpreti datoteke.</translation>
 <translation id="4042870976416480368">Najdi na strani</translation>
+<translation id="40433179647657191">Ustvarite in delite neposredno povezavo do dela strani, ki ste ga označili.</translation>
 <translation id="4049507953662678203">Make sure you have a network connection, and try again.</translation>
 <translation id="4063300985191096908">Na vir</translation>
 <translation id="408404951701638773">Vrstico za iskanje je zdaj preprosteje doseči</translation>
@@ -388,11 +399,13 @@
 <translation id="4181841719683918333">Jeziki</translation>
 <translation id="4187450337729239226">Lepljenje in iskanje</translation>
 <translation id="4223967053752765281">Organizacija je izklopila prijavo. Še vedno si lahko ogledate zaznamke, zgodovino, gesla in druge nastavitve v tej napravi. Če naredite spremembe, ne bodo sinhronizirane z računom.</translation>
+<translation id="4232900911558558076">Raziščite novi meni</translation>
 <translation id="4233831822770018312">Urejanje dovoljenj</translation>
 <translation id="4236584471598725073">Spremljanje cene</translation>
 <translation id="4237377247299956313">Dotaknite se možnosti za <ph name="BEGIN_BOLD" />privzeto aplikacijo za brskanje<ph name="END_BOLD" />.</translation>
 <translation id="424315890655130736">Vnos gesla</translation>
 <translation id="4249955472157341256">Razvrsti glede na najnovejše</translation>
+<translation id="42618743927498729">Prejmite opozorilo, če se cena zniža na katerem koli spletnem mestu.</translation>
 <translation id="4263576668337963058">Prikaži razpoložljiva dejanja na strani</translation>
 <translation id="4267380167363222949">Naslednji zavihek</translation>
 <translation id="4272631900155121838">Če želite optično prebrati kodo QR, v nastavitvah omogočite fotoaparat</translation>
@@ -535,6 +548,7 @@
 <translation id="5388358297987318779">Odpri sliko</translation>
 <translation id="5407969256130905701">Zavrzi spremembe</translation>
 <translation id="5416022985862681400">Zadnjih 7 dni</translation>
+<translation id="5423269318075950257">Spremljanje cene</translation>
 <translation id="543338862236136125">Uredi geslo</translation>
 <translation id="5433691172869980887">Uporabniško ime kopirano</translation>
 <translation id="5439599923922718668">Pogosto obiskano</translation>
@@ -554,11 +568,15 @@
 <translation id="5556459405103347317">Znova naloži</translation>
 <translation id="556042886152191864">Gumb</translation>
 <translation id="5580834567471114021">Želite dodati na bralni seznam za pozneje?</translation>
+<translation id="5597915316964418992">Odprite mrežo zavihkov</translation>
 <translation id="560322036295180549">Izklopila organizacija.</translation>
 <translation id="5614553682702429503">Želite shraniti geslo?</translation>
 <translation id="5626245204502895507">Datoteke trenutno ni mogoče prenesti.</translation>
 <translation id="5631164295104953411">Dodajanje plačilnega sredstva</translation>
+<translation id="5636282538000367086">Oglejte si novosti v Chromu</translation>
+<translation id="5652623411397330904">Izdelki, ki jih spremljate, bodo prikazani tukaj.</translation>
 <translation id="5659593005791499971">E-pošta</translation>
+<translation id="5669335982068190158">Bili ste odjavljeni zaradi ponastavitve iPhona. Spodaj se dotaknite gumba za nadaljevanje, če se želite prijaviti.</translation>
 <translation id="5669528293118408608">www</translation>
 <translation id="567881659373499783">Različica <ph name="PRODUCT_VERSION" /></translation>
 <translation id="5690398455483874150">{count,plural, =1{Prikaz 1 Chromovega okna}one{Prikaz {count} Chromovega okna}two{Prikaz {count} Chromovih oken}few{Prikaz {count} Chromovih oken}other{Prikaz {count} Chromovih oken}}</translation>
@@ -569,6 +587,7 @@
 <translation id="5724941645893276623">Če želite zasebno brskati po spletu, dodajte nov zavihek</translation>
 <translation id="5728700505257787410">Žal je bila pri prijavi v račun težava.</translation>
 <translation id="5731784586962650619">Gesla v drugih aplikacijah</translation>
+<translation id="5733084997078800044">Nasvet za Chrome</translation>
 <translation id="5737974891429562743">Account sign-in details are out of date. Update to start sync.</translation>
 <translation id="5738385766833540397">Upravljanje načina prejemanja opozoril o znižanju cen za izdelke, ki jih spremljate.</translation>
 <translation id="5738887413654608789">To vam omogoča odkrivanje pomembnih spletnih strani glede na vašo okolico.</translation>
@@ -582,6 +601,7 @@
 <translation id="5812974770859303494">Dodaj v …</translation>
 <translation id="581659025233126501">Vklopi sinhronizacijo</translation>
 <translation id="5819208479324046259">Brskalnik upravlja podjetje <ph name="MANAGER" />. <ph name="BEGIN_LINK" />Več o tem<ph name="END_LINK" /></translation>
+<translation id="5833643789537100742">Shranjevanje gesel, plačilnih sredstev in naslovov za Chrome za samodejno izpolnjevanje pozneje.</translation>
 <translation id="5846482154967366008">Iskalnik</translation>
 <translation id="5854790677617711513">Starejše od 30 dni</translation>
 <translation id="5857090052475505287">Nova mapa</translation>
@@ -597,6 +617,7 @@
 <translation id="5913600720976431809">Možnosti za prevod strani</translation>
 <translation id="5938160824633642847">Shramba naprave je skoraj polna. Sprostite prostor in poskusite znova.</translation>
 <translation id="5948291296578561264">S tem je mogoče shranjevati fotografije v knjižnico fotografij.</translation>
+<translation id="5951816930277761335">Deljenje povezave</translation>
 <translation id="5955891643922670672">Ogled različice brez povezave</translation>
 <translation id="5957613098218939406">Več možnosti</translation>
 <translation id="5963939892571022323">Povezave do označitve ni bilo mogoče ustvariti.</translation>
@@ -636,6 +657,7 @@
 <translation id="6189413832092199491">Neprebrano</translation>
 <translation id="6196207969502475924">Glasovno iskanje</translation>
 <translation id="6202364442240589072">{COUNT,plural, =1{Zapri {COUNT} zavihek}one{Zapri {COUNT} zavihek}two{Zapri {COUNT} zavihka}few{Zapri {COUNT} zavihke}other{Zapri {COUNT} zavihkov}}</translation>
+<translation id="6219550825416862075">Dobrodošli nazaj</translation>
 <translation id="6219688215832490856">Nikoli ne prevedi</translation>
 <translation id="6223816392543092032">Dostopajte do zaznamkov, zgodovine, gesel in drugih nastavitev v vseh napravah.</translation>
 <translation id="6231782223312638214">Predlagano</translation>
@@ -723,6 +745,7 @@
 Ko uporabljate anonimni način, spletna mesta ne smejo uporabljati piškotkov za ogled dejavnosti brskanja na različnih spletnih mestih, na primer za osebno prilagajanje oglasov.</translation>
 <translation id="6674571176963658787">Če želite začeti sinhronizacijo, vnesite geslo.</translation>
 <translation id="667999046851023355">Dokument</translation>
+<translation id="6684906340059221832">Spremljanje cen</translation>
 <translation id="6710079714193676716">Upravlja vaša organizacija. Nekatere funkcije morda niso na voljo. <ph name="BEGIN_LINK" />Več o tem<ph name="END_LINK" /></translation>
 <translation id="6713747756340119864">Google Apps</translation>
 <translation id="6730682669179532099">Gesel ni mogoče izvoziti</translation>
@@ -756,6 +779,7 @@
 <translation id="6945221475159498467">Izberi</translation>
 <translation id="6965382102122355670">V redu</translation>
 <translation id="6973630695168034713">Mape</translation>
+<translation id="6975148662438928529">Zaradi ponastavitve iPada ste bili odjavljeni iz računa <ph name="USER_NAME" />. Spodaj se dotaknite gumba za nadaljevanje, če se želite prijaviti.</translation>
 <translation id="6979158407327259162">Google Drive</translation>
 <translation id="6988572888918530647">Upravljanje računa Google</translation>
 <translation id="6989674195860388998">Preklop v nastavitvah …</translation>
@@ -789,12 +813,16 @@
 <translation id="7265758999917665941">Nikoli za to spletno mesto</translation>
 <translation id="7272437679830969316">Identitete ni mogoče preveriti. Geslo ni kopirano.</translation>
 <translation id="7291368939935408496">Pripravljanje gesel ...</translation>
+<translation id="730958329302570991">Kadar koli lahko preprosto dodate gesla za spletna mesta v Googlovega upravitelja gesel.</translation>
 <translation id="7313347584264171202">Tu bodo prikazani anonimni zavihki</translation>
+<translation id="7315813263062036945">V zgornjem levem kotu se dotaknite ikone za iskanje</translation>
 <translation id="7336264872878993241">Preneseno: <ph name="PERCENT" /> %</translation>
 <translation id="7340958967809483333">Možnosti za Odkrivanje</translation>
 <translation id="7346909386216857016">V redu, razumem</translation>
 <translation id="734758817008927353">Možnosti za shranjevanje kartic</translation>
+<translation id="7351537303876921605">V kontekstnem meniju se dotaknite »Create Link« (Ustvari povezavo)</translation>
 <translation id="7353432112255316844">Potrditev identitete</translation>
+<translation id="7356359962760467032">Ustavi spremljanje cen</translation>
 <translation id="7383797227493018512">Seznam za branje</translation>
 <translation id="7398893703713203428">Ustvari povezavo</translation>
 <translation id="739941347996872055">Prejšnji zavihek</translation>
@@ -815,6 +843,7 @@
 <translation id="750493650310597496">0 izbranih</translation>
 <translation id="7508728395076009983">Če želite zakleniti anonimne zavihke, nastavite funkcijo Touch ID ali Face ID oziroma geslo.</translation>
 <translation id="7514365320538308">Prenos</translation>
+<translation id="7531345132340165516">Trenutna stran</translation>
 <translation id="7537586195939242955">Elementa trenutno ni mogoče namesiti v Passbook.</translation>
 <translation id="7554791636758816595">Nov zavihek</translation>
 <translation id="7561196759112975576">Vedno</translation>
@@ -825,6 +854,7 @@
 <translation id="7638584964844754484">Napačno geslo</translation>
 <translation id="7646263789464975852">Meni → Nastavitve → Varnostno preverjanje</translation>
 <translation id="7646772052135772216">Sinhronizacija gesel ne deluje</translation>
+<translation id="764827086632467055">Dotaknite se možnosti za privzeto aplikacijo za brskanje.</translation>
 <translation id="7649070708921625228">Pomoč</translation>
 <translation id="7658239707568436148">Prekliči</translation>
 <translation id="7671141431838911305">NAMESTI</translation>
@@ -847,6 +877,7 @@
 <translation id="784551991304901159">Če si želite ogledati vsebino, v meniju izberite možnost »Vklopi«.</translation>
 <translation id="7853202427316060426">Dejavnost</translation>
 <translation id="7856733331829174190">Prenos ni uspel</translation>
+<translation id="785938070103630874">Odprite gesla, plačilna sredstva ali naslov in drugo</translation>
 <translation id="7859704718976024901">Zgodovina brskanja</translation>
 <translation id="7884694604461143138">Zgodovina iskanja (najdeno: <ph name="COUNT" />)</translation>
 <translation id="7887198238286927132">Chrome zaradi varovanja vaše zasebnosti ne bo samodejno izpolnil tega polja.</translation>
@@ -866,6 +897,7 @@
 <translation id="7971521879845308059">Blokiraj pojavna okna</translation>
 <translation id="797413074872316787">Če želite sinhronizirati in prilagajati v vseh napravah, vklopite sinhronizacijo.</translation>
 <translation id="7978018860671536736">3. Dotaknite se »Samodejno izpolnjevanje gesel«.</translation>
+<translation id="7981908678811807838">Spremljanje cen ni na voljo za to spletno mesto.</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>
 <translation id="7993619969781047893">Funkcije na nekaterih spletnih mestih morda ne bodo delovale</translation>
@@ -901,11 +933,13 @@
 <translation id="8237382152611443140">Odprite nastavitve za samodejno izpolnjevanje gesel.</translation>
 <translation id="8261506727792406068">Izbriši</translation>
 <translation id="8271720166617117963">Sprejem in prijava</translation>
+<translation id="8278938988428169257">Vnesite besedo ali besedno zvezo</translation>
 <translation id="8281781826761538115">Privzeto - <ph name="DEFAULT_LOCALE" /></translation>
 <translation id="8281886186245836920">Preskoči</translation>
 <translation id="8283172974887967105">Nastavi …</translation>
 <translation id="8299417921174340354">Če želite uporabiti gesla, morate najprej nastaviti geslo v napravi.</translation>
 <translation id="8299613349954694191">Odpiranje anonimnega zavihka za zasebno brskanje po spletu.</translation>
+<translation id="8316944564970119719">Vnesite spletno mesto in geslo, nato shranite.</translation>
 <translation id="8319076807703933069">Novo iskanje</translation>
 <translation id="8323906514956095947">Pridržite za več možnosti zavihkov</translation>
 <translation id="8328777765163860529">Zapri vse</translation>
@@ -933,6 +967,7 @@
 <translation id="8533670235862049797">Varno brskanje je vklopljeno</translation>
 <translation id="8534481786647257214">Objava v Googlu+ je dokončana.</translation>
 <translation id="8548878600947630424">Najdi na strani ...</translation>
+<translation id="8558480467877843976">Zdaj lahko uporabljate Chrome, kadar koli brskate po povezavah ali se jih dotaknete v sporočilih, dokumentih in drugih aplikacijah.</translation>
 <translation id="8588404856427128947">Izklop</translation>
 <translation id="8590913940444621808">Nikoli ne vprašaj</translation>
 <translation id="8591976964826315682">Blokiraj piškotke drugih mest v anonimnem načinu</translation>
@@ -950,6 +985,8 @@
 <translation id="8721297211384281569">Meni »Orodja«</translation>
 <translation id="8725066075913043281">Poskusite znova</translation>
 <translation id="8730621377337864115">Končano</translation>
+<translation id="8731388423028622182">Zaradi ponastavitve iPhona ste bili odjavljeni iz računa <ph name="USER_NAME" />. Spodaj se dotaknite gumba za nadaljevanje, če se želite prijaviti.</translation>
+<translation id="87371078663613140">Raziščite možnosti v menijski vrstici</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="8750037785291841318">Tukaj bodo prikazani zavihki</translation>
 <translation id="8756969031206844760">Želite posodobiti geslo?</translation>
@@ -967,10 +1004,13 @@
 <translation id="8868471676553493380">{count,plural, =1{{count} zavihek}one{{count} zavihek}two{{count} zavihka}few{{count} zavihki}other{{count} zavihkov}}</translation>
 <translation id="8870413625673593573">Nedavno zaprto</translation>
 <translation id="8876882697946675716">Poskrbite za sinhroniziranost naprav</translation>
+<translation id="8877287418679067891">Nastavi kot privzeto v nastavitvah …</translation>
 <translation id="8881801611828450202">Uporabi <ph name="SEARCH_ENGINE" /> za iskanje te slike</translation>
 <translation id="8891935667620843985">Če nastavite Chrome kot privzeto aplikacijo za brskanje, lahko samodejno odpirate povezave v njem.</translation>
 <translation id="8898822736010347272">Pošilja URL-je nekaterih strani, ki jih obiščete, omejene podatke o sistemu in nekatere vsebine strani Googlu zaradi pomoči pri odkrivanju novih groženj in zaščiti vseh uporabnikov v spletu.</translation>
 <translation id="8909135823018751308">Skupna raba …</translation>
+<translation id="8911759861431145525">Dotaknite se možnosti »Dodaj« in vnesite svoje podatke.</translation>
+<translation id="891658175948553296">Označite besedilo na spletnem mestu</translation>
 <translation id="8917490105272468696">Da, sem za</translation>
 <translation id="8928133177108699615">Namizje</translation>
 <translation id="8952559610785099500">Dodajanje gesla</translation>
@@ -1008,6 +1048,7 @@
 <translation id="9203116392574189331">Handoff</translation>
 <translation id="9223358826628549784">Poročilo o zrušitvi poslano.</translation>
 <translation id="952704832371081537">Preklic</translation>
+<translation id="953008885340860025">Chrome je odjavljen</translation>
 <translation id="959066944189734975">Spremljate kanal <ph name="CHANNEL_NAME" /></translation>
 <translation id="981498610235328462">Organizacija dovoli prijavo samo z nekaterimi računi. Nedovoljeni računi so skriti.</translation>
 <translation id="984509647832111802">Sinhronizacija ne deluje.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sv.xtb b/ios/chrome/app/strings/resources/ios_strings_sv.xtb
index 5ec336b5..9398cbb 100644
--- a/ios/chrome/app/strings/resources/ios_strings_sv.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_sv.xtb
@@ -19,6 +19,7 @@
 <translation id="1076421457278169141">Koden skannades</translation>
 <translation id="1076785341346483463">Synkronisera med ett hanterat konto</translation>
 <translation id="1084365883616172403">Inlägg på Facebook klart.</translation>
+<translation id="1085696779717592361">Använd Chrome som standard</translation>
 <translation id="1103523840287552314">Översätt alltid <ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">Godkänn och fortsätt</translation>
 <translation id="110724200315609752">Byt till Öppet fönster</translation>
@@ -34,6 +35,7 @@
 <translation id="1165039591588034296">Fel</translation>
 <translation id="1172898394251786223">Nästa fält</translation>
 <translation id="1176932207622159128">Bilden sparades inte</translation>
+<translation id="1177414119866731261">Öppna Chrome-menyn</translation>
 <translation id="1181037720776840403">Ta bort</translation>
 <translation id="1207113853726624428">Ny sökning</translation>
 <translation id="1209206284964581585">Dölj för tillfället</translation>
@@ -110,6 +112,7 @@
 <translation id="1740468249224277719">Tryck snabbt två gånger här om du vill installera.</translation>
 <translation id="1752547299766512813">Spara lösenord</translation>
 <translation id="1753905327828125965">Mest besökta</translation>
+<translation id="1789803444939621101">Välkommen tillbaka, <ph name="USER_NAME" /></translation>
 <translation id="1803264062614276815">Namn på kortinnehavare</translation>
 <translation id="1809939268435598390">Ta bort mapp</translation>
 <translation id="1813414402673211292">Rensa webbinformation</translation>
@@ -163,6 +166,7 @@
 <translation id="2302742851632557585">Ändra lösenordet på webbplatsen</translation>
 <translation id="2316709634732130529">Använd det föreslagna lösenordet</translation>
 <translation id="2320166752086256636">Dölj tangentbordet</translation>
+<translation id="2328842561016935977">Tryck på Lösenord och sedan på Lägg till</translation>
 <translation id="2351097562818989364">Översättningsinställningarna har återställts.</translation>
 <translation id="235789365079050412">Googles integritetspolicy</translation>
 <translation id="2359043044084662842">Översätt</translation>
@@ -221,6 +225,7 @@
 <translation id="2781331604911854368">På</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2783054063075604403">Det gick inte att skapa länken</translation>
+<translation id="2786701870377699570">Sök bland flikar på synkroniserade enheter</translation>
 <translation id="2800683595868705743">Stäng funktionen för flikbyte</translation>
 <translation id="2815198996063984598">2. Tryck på Standardwebbläsarapp</translation>
 <translation id="2820289420301699633">Administratören har kontroll över Chrome och kan få åtkomst till dess data</translation>
@@ -244,6 +249,7 @@
 <translation id="2923448633003185837">Klistra in och öppna</translation>
 <translation id="292639812446257861">Markera som oläst</translation>
 <translation id="2932085390869194046">Föreslå lösenord …</translation>
+<translation id="2932765531295814441">Lägga till lösenord manuellt</translation>
 <translation id="2952581218264071393">1. Öppna inställningarna för Chrome</translation>
 <translation id="2958718410589002129">Lösenord</translation>
 <translation id="2961210776189273067">Titel</translation>
@@ -279,6 +285,7 @@
 <translation id="3181954750937456830">Säker webbsökning (skyddar dig och enheten från skadliga webbplatser)</translation>
 <translation id="3184767182050912705">Lås upp med <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation>
 <translation id="3207960819495026254">Bokmärkt</translation>
+<translation id="3214379938835224220">Du har loggats ut som en del av återställningen av din iPad. Tryck på Fortsätt nedan för att logga in.</translation>
 <translation id="3224641773458703735">Du måste ställa in ett lösenord på enheten om du vill kunna exportera lösenord.</translation>
 <translation id="3227137524299004712">Mikrofon</translation>
 <translation id="3240426699337459095">Länken har kopierats</translation>
@@ -296,6 +303,7 @@
 <translation id="3329904751041170572">Det gick inte att ansluta till servern.</translation>
 <translation id="3335947283844343239">Öppna stängd flik igen</translation>
 <translation id="3371831930909698441">Översättning finns. Alternativ visas nära skärmens nedre kant.</translation>
+<translation id="3377063233124932127">Nu visas dina sparade bokmärken, lösenord och annat högst upp.</translation>
 <translation id="3393920035788932672">Popup tillåts</translation>
 <translation id="3399930248910934354">Öppna inställningarna för Chrome</translation>
 <translation id="3404744938087714423">Om du loggar ut inaktiveras synkronisering.</translation>
@@ -318,11 +326,13 @@
 <translation id="3519193562722059437">Öppna en flik om du vill surfa på webben.</translation>
 <translation id="3527085408025491307">Mapp</translation>
 <translation id="3529024052484145543">Inte säkert</translation>
+<translation id="3530206579861815432">Du hittar snabbt öppna och nyligen stängda flikar på alla dina synkroniserade enheter.</translation>
 <translation id="3533202363250687977">Stäng alla inkognitoflikar</translation>
 <translation id="3533436815740441613">Ny flik</translation>
 <translation id="3551320343578183772">Stäng flik</translation>
 <translation id="3581564640715911333">Erbjud översättning av sidor till andra språk</translation>
 <translation id="3588820906588687999">Öppna bild på ny flik</translation>
+<translation id="3595252146048399851">Du kan alltid välja vad som ska synkroniseras i <ph name="BEGIN_LINK" />inställningarna<ph name="END_LINK" />. Google kan anpassa Sök och andra tjänster utifrån din historik.</translation>
 <translation id="3603009562372709545">Kopiera länkens webbadress</translation>
 <translation id="3607167657931203000">Autofyll uppgifter</translation>
 <translation id="3609785682760573515">Synkroniserar ...</translation>
@@ -371,6 +381,7 @@
 <translation id="4018310736049373830">Hantera aktivitet</translation>
 <translation id="4038354071007134711">Det går inte att öppna filen med någon av apparna på enheten.</translation>
 <translation id="4042870976416480368">Sök på sidan</translation>
+<translation id="40433179647657191">Skapa och dela en direktlänk till en del av en sida som du markerat.</translation>
 <translation id="4049507953662678203">Kontrollera att du är ansluten till nätverket och försök igen.</translation>
 <translation id="4063300985191096908">Visa flödet</translation>
 <translation id="408404951701638773">Nu är det enklare att komma åt sökfältet</translation>
@@ -388,11 +399,13 @@
 <translation id="4181841719683918333">Språk</translation>
 <translation id="4187450337729239226">Klistra in och sök</translation>
 <translation id="4223967053752765281">Organisationen har inaktiverat inloggning. Bokmärken, lösenord, historik och andra inställningar finns fortfarande kvar på enheten. Om du ändrar något synkroniseras inte detta med kontot.</translation>
+<translation id="4232900911558558076">Utforska den nya menyn</translation>
 <translation id="4233831822770018312">Redigera behörigheter</translation>
 <translation id="4236584471598725073">Bevakar pris</translation>
 <translation id="4237377247299956313">Tryck på <ph name="BEGIN_BOLD" />Standardwebbläsarapp<ph name="END_BOLD" /></translation>
 <translation id="424315890655130736">Ange lösenfras</translation>
 <translation id="4249955472157341256">Sortera efter senaste</translation>
+<translation id="42618743927498729">Få en avisering om priset sjunker på en webbplats.</translation>
 <translation id="4263576668337963058">Visa tillgängliga åtgärder för sida</translation>
 <translation id="4267380167363222949">Nästa flik</translation>
 <translation id="4272631900155121838">Om du vill skanna en QR-kod aktiverar du kameran i inställningarna</translation>
@@ -535,6 +548,7 @@
 <translation id="5388358297987318779">Öppna bild</translation>
 <translation id="5407969256130905701">Ignorera ändringar</translation>
 <translation id="5416022985862681400">Senaste 7 dagarna</translation>
+<translation id="5423269318075950257">Bevaka pris</translation>
 <translation id="543338862236136125">Redigera lösenord</translation>
 <translation id="5433691172869980887">Användarnamnet har kopierats</translation>
 <translation id="5439599923922718668">Mest besökta</translation>
@@ -554,11 +568,15 @@
 <translation id="5556459405103347317">Hämta igen</translation>
 <translation id="556042886152191864">Knapp</translation>
 <translation id="5580834567471114021">Vill du lägga till i läslistan för att läsa senare?</translation>
+<translation id="5597915316964418992">Öppna rutnätet med flikar</translation>
 <translation id="560322036295180549">Inaktiverat av organisationen</translation>
 <translation id="5614553682702429503">Vill du spara lösenordet?</translation>
 <translation id="5626245204502895507">Det gick inte att ladda ned filen just nu.</translation>
 <translation id="5631164295104953411">Lägg till betalningsmetod</translation>
+<translation id="5636282538000367086">Nyheter i Chrome</translation>
+<translation id="5652623411397330904">Produkterna du bevakar visas här.</translation>
 <translation id="5659593005791499971">E-post</translation>
+<translation id="5669335982068190158">Du har loggats ut som en del av återställningen av din iPhone. Tryck på Fortsätt nedan för att logga in.</translation>
 <translation id="5669528293118408608">www</translation>
 <translation id="567881659373499783">Version <ph name="PRODUCT_VERSION" /></translation>
 <translation id="5690398455483874150">{count,plural, =1{Nu visas 1 fönster i Chrome}other{Nu visas {count} fönster i Chrome}}</translation>
@@ -569,6 +587,7 @@
 <translation id="5724941645893276623">Öppna en ny flik om du vill använda internet privat</translation>
 <translation id="5728700505257787410">Det gick inte att logga in på ditt konto.</translation>
 <translation id="5731784586962650619">Lösenord i andra appar</translation>
+<translation id="5733084997078800044">Tips för Chrome</translation>
 <translation id="5737974891429562743">Inloggningsuppgifterna för kontot är inte aktuella. Starta synkroniseringen genom att uppdatera.</translation>
 <translation id="5738385766833540397">Hantera hur du får sänkt pris-aviseringar för produkter du bevakar</translation>
 <translation id="5738887413654608789">Detta gör det möjligt att upptäcka relevanta webbsidor utifrån din omgivning.</translation>
@@ -582,6 +601,7 @@
 <translation id="5812974770859303494">Lägg till i …</translation>
 <translation id="581659025233126501">Aktivera synkronisering</translation>
 <translation id="5819208479324046259">Hanteras av <ph name="MANAGER" />. <ph name="BEGIN_LINK" />Läs mer<ph name="END_LINK" /></translation>
+<translation id="5833643789537100742">Spara lösenord, betalningsmetoder och adresser så att Chrome kan fylla i dem automatiskt vid ett senare tillfälle.</translation>
 <translation id="5846482154967366008">Sökmotor</translation>
 <translation id="5854790677617711513">Äldre än 30 dagar</translation>
 <translation id="5857090052475505287">Ny mapp</translation>
@@ -597,6 +617,7 @@
 <translation id="5913600720976431809">Alternativ för att översätta sidan</translation>
 <translation id="5938160824633642847">Det finns nästan ingen plats kvar på enheten. Frigör utrymme och försök igen.</translation>
 <translation id="5948291296578561264">Gör så att du kan spara foton i fotobiblioteket.</translation>
+<translation id="5951816930277761335">Dela länken</translation>
 <translation id="5955891643922670672">Offlineversionen visas</translation>
 <translation id="5957613098218939406">Fler alternativ</translation>
 <translation id="5963939892571022323">Det gick inte att skapa en länk till markeringen.</translation>
@@ -636,6 +657,7 @@
 <translation id="6189413832092199491">Olästa</translation>
 <translation id="6196207969502475924">Röstsökning</translation>
 <translation id="6202364442240589072">{COUNT,plural, =1{Stäng {COUNT} flik}other{Stäng {COUNT} flikar}}</translation>
+<translation id="6219550825416862075">Välkommen tillbaka</translation>
 <translation id="6219688215832490856">Översätt aldrig</translation>
 <translation id="6223816392543092032">Använd bokmärken, historik och andra inställningar på alla dina enheter.</translation>
 <translation id="6231782223312638214">Förslag</translation>
@@ -723,6 +745,7 @@
 I inkognitoläget får inte webbplatser se din webbaktivitet på olika webbplatser med hjälp av cookies och till exempel anpassa annonser.</translation>
 <translation id="6674571176963658787">Ange din lösenfras för att starta synkroniseringen</translation>
 <translation id="667999046851023355">Dokument</translation>
+<translation id="6684906340059221832">Bevakar priser</translation>
 <translation id="6710079714193676716">Hanteras av organisationen. Vissa funktioner kanske inte är tillgängliga. <ph name="BEGIN_LINK" />Läs mer<ph name="END_LINK" /></translation>
 <translation id="6713747756340119864">Google Apps</translation>
 <translation id="6730682669179532099">Det gick inte att exportera lösenord</translation>
@@ -756,6 +779,7 @@
 <translation id="6945221475159498467">Välj</translation>
 <translation id="6965382102122355670">OK</translation>
 <translation id="6973630695168034713">Mappar</translation>
+<translation id="6975148662438928529">Du har loggats ut från kontot <ph name="USER_NAME" /> som en del av återställningen av din iPad. Tryck på Fortsätt nedan för att logga in.</translation>
 <translation id="6979158407327259162">Google Drive</translation>
 <translation id="6988572888918530647">Hantera Google-kontot</translation>
 <translation id="6989674195860388998">Byt i inställningarna …</translation>
@@ -789,12 +813,16 @@
 <translation id="7265758999917665941">Aldrig på den här webbplatsen</translation>
 <translation id="7272437679830969316">Det gick inte att verifiera din identitet. Lösenordet har inte kopierats.</translation>
 <translation id="7291368939935408496">Lösenorden förbereds …</translation>
+<translation id="730958329302570991">Du kan enkelt lägga till webbplatslösenord i Google Lösenordshantering när du vill.</translation>
 <translation id="7313347584264171202">Du hittar dina inkognitoflikar här</translation>
+<translation id="7315813263062036945">Tryck på sökikonen högst upp till vänster</translation>
 <translation id="7336264872878993241"><ph name="PERCENT" /> procent har laddats ned</translation>
 <translation id="7340958967809483333">Alternativ för Förslag</translation>
 <translation id="7346909386216857016">Ok, jag förstår</translation>
 <translation id="734758817008927353">Alternativ för att spara kort</translation>
+<translation id="7351537303876921605">Tryck på Skapa länk i snabbmenyn</translation>
 <translation id="7353432112255316844">Verifiera din identitet</translation>
+<translation id="7356359962760467032">Avsluta prisbevakning</translation>
 <translation id="7383797227493018512">Läslista</translation>
 <translation id="7398893703713203428">Skapa länk</translation>
 <translation id="739941347996872055">Föregående flik</translation>
@@ -815,6 +843,7 @@
 <translation id="750493650310597496">0 valda</translation>
 <translation id="7508728395076009983">Konfigurera Touch ID, Face ID eller ett lösenord om du vill låsa flikar i inkognitoläget.</translation>
 <translation id="7514365320538308">Ladda ned</translation>
+<translation id="7531345132340165516">Nuvarande webbplats</translation>
 <translation id="7537586195939242955">Det går tyvärr inte att installera det här objektet i Passbook just nu.</translation>
 <translation id="7554791636758816595">Ny flik</translation>
 <translation id="7561196759112975576">Alltid</translation>
@@ -825,6 +854,7 @@
 <translation id="7638584964844754484">Felaktig lösenfras</translation>
 <translation id="7646263789464975852">Meny → Inställningar → Säkerhetskontroll</translation>
 <translation id="7646772052135772216">Det går inte att synkronisera lösenord</translation>
+<translation id="764827086632467055">Tryck på Standardwebbläsarapp</translation>
 <translation id="7649070708921625228">Hjälp</translation>
 <translation id="7658239707568436148">Avbryt</translation>
 <translation id="7671141431838911305">INSTALLERA</translation>
@@ -847,6 +877,7 @@
 <translation id="784551991304901159">Välj Aktivera i menyn för att se innehåll</translation>
 <translation id="7853202427316060426">Aktivitet</translation>
 <translation id="7856733331829174190">Nedladdning misslyckades</translation>
+<translation id="785938070103630874">Öppna Lösenord, Betalningsmetoder, Adress m.m.</translation>
 <translation id="7859704718976024901">Webbhistorik</translation>
 <translation id="7884694604461143138">Sökhistorik (<ph name="COUNT" /> hittades)</translation>
 <translation id="7887198238286927132">Av integritetsskäl fylls det här fältet inte i automatiskt.</translation>
@@ -866,6 +897,7 @@
 <translation id="7971521879845308059">Blockera popup-fönster</translation>
 <translation id="797413074872316787">Aktivera synkronisering om du vill synkronisera och anpassa alla dina enheter.</translation>
 <translation id="7978018860671536736">3. Tryck på Autofyll lösenord</translation>
+<translation id="7981908678811807838">Prisbevakning är inte tillgänglig för den här webbplatsen.</translation>
 <translation id="7982789257301363584">Nätverk</translation>
 <translation id="7987685713885608670">Öka säkerheten genom att kryptera lösenord på enheten innan de sparas i Google Lösenordshantering</translation>
 <translation id="7993619969781047893">Funktioner kan sluta att fungera på vissa webbplatser</translation>
@@ -901,11 +933,13 @@
 <translation id="8237382152611443140">Öppna inställningarna för autofyllning av lösenord</translation>
 <translation id="8261506727792406068">Radera</translation>
 <translation id="8271720166617117963">Godkänn och logga in</translation>
+<translation id="8278938988428169257">Ange ett ord eller en fras</translation>
 <translation id="8281781826761538115">Standard – <ph name="DEFAULT_LOCALE" /></translation>
 <translation id="8281886186245836920">Hoppa över</translation>
 <translation id="8283172974887967105">Ange …</translation>
 <translation id="8299417921174340354">Du måste ställa in ett lösenord på enheten innan du kan använda lösenord här.</translation>
 <translation id="8299613349954694191">Öppna en inkognitoflik om du vill surfa privat på webben.</translation>
+<translation id="8316944564970119719">Ange webbplats och lösenord och spara sedan</translation>
 <translation id="8319076807703933069">Ny sökning</translation>
 <translation id="8323906514956095947">Tryck länge för fler flikalternatv</translation>
 <translation id="8328777765163860529">Stäng alla</translation>
@@ -933,6 +967,7 @@
 <translation id="8533670235862049797">Säker webbsökning är aktiverat</translation>
 <translation id="8534481786647257214">Inlägg på Google+ klart.</translation>
 <translation id="8548878600947630424">Hitta på sidan ...</translation>
+<translation id="8558480467877843976">Nu kan du använda Chrome varje gång du surfar eller trycker på länkar i meddelanden, dokument och andra appar.</translation>
 <translation id="8588404856427128947">Av</translation>
 <translation id="8590913940444621808">Fråga aldrig</translation>
 <translation id="8591976964826315682">Blockera cookies från tredje part i inkognitoläge</translation>
@@ -950,6 +985,8 @@
 <translation id="8721297211384281569">Verktyg</translation>
 <translation id="8725066075913043281">Försök igen</translation>
 <translation id="8730621377337864115">Klart</translation>
+<translation id="8731388423028622182">Du har loggats ut från kontot <ph name="USER_NAME" /> som en del av återställningen av din iPhone. Tryck på Fortsätt nedan för att logga in.</translation>
+<translation id="87371078663613140">Utforska alternativen på menyraden</translation>
 <translation id="8741995161408053644">Andra former av webbhistorik för Google-kontot kan finnas på <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" />.</translation>
 <translation id="8750037785291841318">Du hittar dina flikar här</translation>
 <translation id="8756969031206844760">Vill du uppdatera lösenordet?</translation>
@@ -967,10 +1004,13 @@
 <translation id="8868471676553493380">{count,plural, =1{{count} flik}other{{count} flikar}}</translation>
 <translation id="8870413625673593573">Nyligen stängda</translation>
 <translation id="8876882697946675716">Håll dina enheter synkroniserade</translation>
+<translation id="8877287418679067891">Använd som standard i Inställningar …</translation>
 <translation id="8881801611828450202">Sök på <ph name="SEARCH_ENGINE" /> efter denna bild</translation>
 <translation id="8891935667620843985">Du kan öppna länkar i Chrome automatiskt genom att ställa in den som standardwebbläsare.</translation>
 <translation id="8898822736010347272">Skickar webbadresser till vissa sidor som du besöker, vissa systemuppgifter och visst sidinnehåll till Google för att upptäcka och blockera nya hot och skydda alla användare på internet.</translation>
 <translation id="8909135823018751308">Dela …</translation>
+<translation id="8911759861431145525">Tryck på Lägg till och ange sedan dina uppgifter</translation>
+<translation id="891658175948553296">Markera text på en webbplats</translation>
 <translation id="8917490105272468696">Ja</translation>
 <translation id="8928133177108699615">Dator</translation>
 <translation id="8952559610785099500">Lägg till lösenord</translation>
@@ -1008,6 +1048,7 @@
 <translation id="9203116392574189331">Handoff</translation>
 <translation id="9223358826628549784">Felrapporten har skickats.</translation>
 <translation id="952704832371081537">Avbryt</translation>
+<translation id="953008885340860025">Utloggad från Chrome</translation>
 <translation id="959066944189734975">Du följer <ph name="CHANNEL_NAME" /></translation>
 <translation id="981498610235328462">Organisationen tillåter inloggning med endast vissa konton. Konton som inte tillåts är dolda.</translation>
 <translation id="984509647832111802">Synkroniseringen fungerar inte.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_te.xtb b/ios/chrome/app/strings/resources/ios_strings_te.xtb
index 29f1c97..a04ee54a 100644
--- a/ios/chrome/app/strings/resources/ios_strings_te.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_te.xtb
@@ -162,7 +162,7 @@
 <translation id="2271351792809375263">మీరు మీ పరికరంలోని ఇతర యాప్‌లలో Chromeలో సేవ్ చేసిన పాస్‌వర్డ్‌లను ఉపయోగించండి</translation>
 <translation id="2273327106802955778">మరిన్ని మెనూ</translation>
 <translation id="2286505070150039482">హైలైట్ చేయబడిన టెక్స్ట్</translation>
-<translation id="2299218006564889602">మీ పాస్‌వర్డ్‌లు Google పాస్‌వర్డ్ మేనేజర్‌లో సేవ్ కావడానికి ముందు, అవి మీ పరికరంలో ఎన్‌క్రిప్ట్ చేయబడ్డాయి.</translation>
+<translation id="2299218006564889602">మీ పాస్‌వర్డ్‌లు Google Password Managerలో సేవ్ కావడానికి ముందు, అవి మీ పరికరంలో ఎన్‌క్రిప్ట్ చేయబడ్డాయి.</translation>
 <translation id="2302742851632557585">వెబ్‌సైట్‌లో పాస్‌వర్డ్‌ను మార్చండి</translation>
 <translation id="2316709634732130529">సూచించిన పాస్‌వర్డ్‌ని ఉపయోగించు</translation>
 <translation id="2320166752086256636">కీబోర్డ్‌ను దాచు</translation>
@@ -202,7 +202,7 @@
 <translation id="2647269890314209800">ఉపయోగంలో ఉన్న కుక్కీలు</translation>
 <translation id="2648803196158606475">చదివిన వాటిని తొలగించు</translation>
 <translation id="2653659639078652383">సమర్పించు</translation>
-<translation id="2671426118752779020">మీరు మీ iPhoneలోని ఇతర యాప్‌లలో Google పాస్‌వర్డ్ మేనేజర్‌లో సేవ్ చేసిన పాస్‌వర్డ్‌లను ఉపయోగించవచ్చు.</translation>
+<translation id="2671426118752779020">మీరు మీ iPhoneలోని ఇతర యాప్‌లలో Google Password Managerలో సేవ్ చేసిన పాస్‌వర్డ్‌లను ఉపయోగించవచ్చు.</translation>
 <translation id="2690858294534178585">కెమెరా వినియోగంలో ఉంది</translation>
 <translation id="2691653761409724435">ఆఫ్‌లైన్‌లో అందుబాటులో లేదు</translation>
 <translation id="2695507686909505111">పేజీ అనువాదం చేయబడింది</translation>
@@ -685,7 +685,7 @@
 <translation id="6374469231428023295">మళ్లీ ప్రయత్నించు</translation>
 <translation id="6377118281273296434">సైట్ భద్రత</translation>
 <translation id="6380866119319257197">మీరు మీ రహస్య పదబంధాన్ని మర్చిపోతే లేదా ఈ సెట్టింగ్‌ను మార్చాలనుకుంటే, <ph name="BEGIN_LINK" />సింక్‌ను రీసెట్ చేయండి<ph name="END_LINK" /></translation>
-<translation id="6387994324662817823">పాస్‌వర్డ్‌లు ఈ పరికరంలోని Google పాస్‌వర్డ్ మేనేజర్‌లో మాత్రమే సేవ్ చేయబడతాయి.</translation>
+<translation id="6387994324662817823">పాస్‌వర్డ్‌లు ఈ పరికరంలోని Google Password Managerలో మాత్రమే సేవ్ చేయబడతాయి.</translation>
 <translation id="6389470377220713856">కార్డ్‌పై ఉన్న పేరు</translation>
 <translation id="6403371459378431832">అన్ని పరికరాలలో మీ డేటాను సింక్ చేయండి</translation>
 <translation id="6406506848690869874">Sync</translation>
@@ -759,7 +759,7 @@
 <translation id="6801927553864092214">ప్రైవేట్‌గా బ్రౌజ్ చేయడానికి, అజ్ఞాత ట్యాబ్‌ను తెరవండి</translation>
 <translation id="6807889908376551050">అన్నీ చూపు...</translation>
 <translation id="681368974849482173">అంశం క్రియేట్ చేయబడింది</translation>
-<translation id="683022620450280906">మీరు సేవ్ చేసిన పాస్‌వర్డ్‌లను ఏ పరికరంలోనైనా ఉపయోగించవచ్చు. <ph name="EMAIL" /> కోసం అవి Google పాస్‌వర్డ్ మేనేజర్‌లో సేవ్ చేయబడతాయి</translation>
+<translation id="683022620450280906">మీరు సేవ్ చేసిన పాస్‌వర్డ్‌లను ఏ పరికరంలోనైనా ఉపయోగించవచ్చు. <ph name="EMAIL" /> కోసం అవి Google Password Managerలో సేవ్ చేయబడతాయి</translation>
 <translation id="6831043979455480757">అనువదించు</translation>
 <translation id="6842136130964845393">మీరు మీ సేవ్ చేయబడిన పాస్‌వర్డ్‌లను ఎల్లప్పుడూ యాక్సెస్ చేయగలరని నిర్ధారించుకోవడానికి, అది మీరేనని వెరిఫై చేయండి</translation>
 <translation id="6851516051005285358">డెస్క్‌టాప్ సైట్‌ను రిక్వెస్ట్ చేయండి</translation>
@@ -899,7 +899,7 @@
 <translation id="7978018860671536736">3. 'పాస్‌వర్డ్‌లను ఆటోఫిల్ చేయండి'ని ట్యాప్ చేయండి</translation>
 <translation id="7981908678811807838">ఈ సైట్‌కు ధర ట్రాకింగ్ అందుబాటులో లేదు.</translation>
 <translation id="7982789257301363584">నెట్‌వర్క్</translation>
-<translation id="7987685713885608670">అదనపు భద్రత కోసం, పాస్‌వర్డ్‌లు Google పాస్‌వర్డ్ మేనేజర్‌లో సేవ్ కావడానికి ముందు, వాటిని మీ పరికరంలో ఎన్‌క్రిప్ట్ చేయండి.</translation>
+<translation id="7987685713885608670">అదనపు భద్రత కోసం, పాస్‌వర్డ్‌లు Google Password Managerలో సేవ్ కావడానికి ముందు, వాటిని మీ పరికరంలో ఎన్‌క్రిప్ట్ చేయండి.</translation>
 <translation id="7993619969781047893">కొన్ని సైట్‌లలోని ఫీచర్‌లు పని చేయకపోవచ్చు</translation>
 <translation id="800361585186029508">ఇన్‌పుట్ చేసిన URLలను Google Chromeలో తెరుస్తుంది.</translation>
 <translation id="8016714545083187120">ఎల్లప్పుడూ సురక్షితమైన కనెక్షన్‌లను ఉపయోగించండి</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_th.xtb b/ios/chrome/app/strings/resources/ios_strings_th.xtb
index d92d049..0a4334c8 100644
--- a/ios/chrome/app/strings/resources/ios_strings_th.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_th.xtb
@@ -19,6 +19,7 @@
 <translation id="1076421457278169141">สแกนโค้ดแล้ว</translation>
 <translation id="1076785341346483463">ซิงค์กับบัญชีที่จัดการ</translation>
 <translation id="1084365883616172403">โพสต์ใน Facebook แล้ว</translation>
+<translation id="1085696779717592361">ใช้ Chrome โดยค่าเริ่มต้น</translation>
 <translation id="1103523840287552314">แปลภาษา<ph name="LANGUAGE" />ทุกครั้ง</translation>
 <translation id="1104948393051856124">ยอมรับและดำเนินการต่อ</translation>
 <translation id="110724200315609752">เปลี่ยนเพื่อเปิดหน้าต่าง</translation>
@@ -34,6 +35,7 @@
 <translation id="1165039591588034296">ข้อผิดพลาด</translation>
 <translation id="1172898394251786223">ช่องถัดไป</translation>
 <translation id="1176932207622159128">ไม่สามารถบันทึกภาพ</translation>
+<translation id="1177414119866731261">เปิดเมนู Chrome</translation>
 <translation id="1181037720776840403">นำออก</translation>
 <translation id="1207113853726624428">ค้นหาใหม่</translation>
 <translation id="1209206284964581585">ซ่อนไปก่อน</translation>
@@ -110,6 +112,7 @@
 <translation id="1740468249224277719">แตะ 2 ครั้งเพื่อติดตั้ง</translation>
 <translation id="1752547299766512813">บันทึกรหัสผ่าน</translation>
 <translation id="1753905327828125965">เข้าชมบ่อยสุด</translation>
+<translation id="1789803444939621101">ยินดีต้อนรับกลับมาคุณ <ph name="USER_NAME" /></translation>
 <translation id="1803264062614276815">ชื่อผู้ถือบัตร</translation>
 <translation id="1809939268435598390">ลบโฟลเดอร์</translation>
 <translation id="1813414402673211292">นำออกข้อมูลที่เรียกดู</translation>
@@ -163,6 +166,7 @@
 <translation id="2302742851632557585">เปลี่ยนรหัสผ่านในเว็บไซต์</translation>
 <translation id="2316709634732130529">ใช้รหัสผ่านที่แนะนำ</translation>
 <translation id="2320166752086256636">ซ่อนแป้นพิมพ์</translation>
+<translation id="2328842561016935977">แตะ "รหัสผ่าน" แล้วแตะ "เพิ่ม"</translation>
 <translation id="2351097562818989364">รีเซ็ตการตั้งค่าการแปลภาษาของคุณแล้ว</translation>
 <translation id="235789365079050412">นโยบายความเป็นส่วนตัวของ Google</translation>
 <translation id="2359043044084662842">แปล</translation>
@@ -221,6 +225,7 @@
 <translation id="2781331604911854368">เปิด</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2783054063075604403">สร้างลิงก์ไม่ได้</translation>
+<translation id="2786701870377699570">ค้นหาแท็บในอุปกรณ์ทุกเครื่องที่ซิงค์</translation>
 <translation id="2800683595868705743">ออกจากมุมมองตัวสลับแท็บ</translation>
 <translation id="2815198996063984598">2. แตะแอปเบราว์เซอร์เริ่มต้น</translation>
 <translation id="2820289420301699633">ผู้ดูแลระบบเป็นผู้ควบคุม Chrome และเข้าถึงข้อมูลของ Chrome ได้</translation>
@@ -244,6 +249,7 @@
 <translation id="2923448633003185837">วางแล้วไป</translation>
 <translation id="292639812446257861">ทำเครื่องหมายว่ายังไม่ได้อ่าน</translation>
 <translation id="2932085390869194046">แนะนำรหัสผ่าน...</translation>
+<translation id="2932765531295814441">เพิ่มรหัสผ่านด้วยตนเอง</translation>
 <translation id="2952581218264071393">1. เปิดการตั้งค่า Chrome</translation>
 <translation id="2958718410589002129">รหัสผ่าน</translation>
 <translation id="2961210776189273067">คำนำหน้าชื่อ</translation>
@@ -279,6 +285,7 @@
 <translation id="3181954750937456830">Google Safe Browsing (ปกป้องคุณและอุปกรณ์จากเว็บไซต์ที่เป็นอันตราย)</translation>
 <translation id="3184767182050912705">ปลดล็อกด้วย <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /></translation>
 <translation id="3207960819495026254">บุ๊กมาร์กแล้ว</translation>
+<translation id="3214379938835224220">คุณออกจากระบบในขั้นตอนการรีเซ็ต iPad แตะ "ดําเนินการต่อ" ด้านล่างเพื่อลงชื่อเข้าใช้</translation>
 <translation id="3224641773458703735">หากต้องการส่งออกรหัสผ่าน คุณต้องตั้งรหัสผ่านในอุปกรณ์ก่อน</translation>
 <translation id="3227137524299004712">ไมโครโฟน</translation>
 <translation id="3240426699337459095">คัดลอกลิงก์แล้ว</translation>
@@ -296,6 +303,7 @@
 <translation id="3329904751041170572">ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์</translation>
 <translation id="3335947283844343239">เปิดแท็บที่ปิดไปแล้วขึ้นใหม่</translation>
 <translation id="3371831930909698441">มีบริการแปลภาษา ตัวเลือกจะอยู่ทางด้านล่างของหน้าจอ</translation>
+<translation id="3377063233124932127">ตอนนี้บุ๊กมาร์ก รหัสผ่าน และข้อมูลอื่นๆ ที่บันทึกไว้ย้ายไปอยู่ด้านบนแล้ว</translation>
 <translation id="3393920035788932672">อนุญาตให้แสดงป๊อปอัป</translation>
 <translation id="3399930248910934354">เปิดการตั้งค่า Chrome</translation>
 <translation id="3404744938087714423">การออกจากระบบจะปิดการซิงค์</translation>
@@ -318,11 +326,13 @@
 <translation id="3519193562722059437">เปิดแท็บเพื่อท่องเว็บ</translation>
 <translation id="3527085408025491307">โฟลเดอร์</translation>
 <translation id="3529024052484145543">ไม่ปลอดภัย</translation>
+<translation id="3530206579861815432">ค้นหาแท็บที่เปิดอยู่และแท็บที่เพิ่งปิดได้อย่างรวดเร็วในอุปกรณ์ที่ซิงค์</translation>
 <translation id="3533202363250687977">ปิดแท็บไม่ระบุตัวตนทั้งหมด</translation>
 <translation id="3533436815740441613">แท็บใหม่</translation>
 <translation id="3551320343578183772">ปิดแท็บ</translation>
 <translation id="3581564640715911333">เสนอที่จะแปลหน้าเว็บในภาษาอื่นๆ</translation>
 <translation id="3588820906588687999">เปิดภาพในแท็บใหม่</translation>
+<translation id="3595252146048399851">คุณเลือกสิ่งที่ต้องการซิงค์ได้เสมอใน<ph name="BEGIN_LINK" />การตั้งค่า<ph name="END_LINK" /> Google อาจปรับเปลี่ยน Search และบริการอื่นๆ ให้เหมาะกับคุณโดยอิงจากประวัติการเข้าชม</translation>
 <translation id="3603009562372709545">คัดลอก URL ของลิงก์</translation>
 <translation id="3607167657931203000">ป้อนข้อมูลอัตโนมัติ</translation>
 <translation id="3609785682760573515">กำลังซิงค์...</translation>
@@ -371,6 +381,7 @@
 <translation id="4018310736049373830">จัดการกิจกรรม</translation>
 <translation id="4038354071007134711">ไม่มีแอปพลิเคชันใดบนอุปกรณ์นี้ที่สามารถเปิดไฟล์ได้</translation>
 <translation id="4042870976416480368">ค้นหาในหน้าเว็บ</translation>
+<translation id="40433179647657191">สร้างและแชร์ลิงก์โดยตรงของหน้าที่คุณไฮไลต์</translation>
 <translation id="4049507953662678203">ตรวจสอบว่าคุณมีการเชื่อมต่อเครือข่าย และลองอีกครั้ง</translation>
 <translation id="4063300985191096908">ไปที่ฟีด</translation>
 <translation id="408404951701638773">เข้าถึงแถบค้นหาได้ง่ายขึ้นแล้ว</translation>
@@ -388,11 +399,13 @@
 <translation id="4181841719683918333">ภาษา</translation>
 <translation id="4187450337729239226">วางและค้นหา</translation>
 <translation id="4223967053752765281">องค์กรปิดการลงชื่อเข้าใช้ไว้ คุณจะยังคงเห็นบุ๊กมาร์ก ประวัติการเข้าชม รหัสผ่าน และการตั้งค่าอื่นๆ ในอุปกรณ์นี้ หากทำการเปลี่ยนแปลง ระบบจะไม่ซิงค์การเปลี่ยนแปลงนั้นกับบัญชี</translation>
+<translation id="4232900911558558076">สํารวจเมนูใหม่</translation>
 <translation id="4233831822770018312">แก้ไขสิทธิ์</translation>
 <translation id="4236584471598725073">กำลังติดตามราคา</translation>
 <translation id="4237377247299956313">แตะ<ph name="BEGIN_BOLD" />แอปเบราว์เซอร์เริ่มต้น<ph name="END_BOLD" /></translation>
 <translation id="424315890655130736">ป้อนรหัสผ่าน</translation>
 <translation id="4249955472157341256">จัดเรียงตามล่าสุด</translation>
+<translation id="42618743927498729">รับการแจ้งเตือนหากราคาลดลงในเว็บไซต์ใดก็ตาม</translation>
 <translation id="4263576668337963058">แสดงการทำงานของหน้าเว็บที่ใช้ได้</translation>
 <translation id="4267380167363222949">แท็บถัดไป</translation>
 <translation id="4272631900155121838">หากต้องการสแกนโค้ด QR ให้เปิดใช้กล้องถ่ายรูปจากการตั้งค่า</translation>
@@ -535,6 +548,7 @@
 <translation id="5388358297987318779">เปิดภาพ</translation>
 <translation id="5407969256130905701">ยกเลิกการเปลี่ยนแปลง</translation>
 <translation id="5416022985862681400">7 วันที่ผ่านมา</translation>
+<translation id="5423269318075950257">ติดตามราคา</translation>
 <translation id="543338862236136125">แก้ไขรหัสผ่าน</translation>
 <translation id="5433691172869980887">คัดลอกชื่อผู้ใช้แล้ว</translation>
 <translation id="5439599923922718668">เข้าชมบ่อย</translation>
@@ -554,11 +568,15 @@
 <translation id="5556459405103347317">โหลดใหม่</translation>
 <translation id="556042886152191864">ปุ่ม</translation>
 <translation id="5580834567471114021">เพิ่มลงในเรื่องรออ่านไว้อ่านภายหลังไหม</translation>
+<translation id="5597915316964418992">เปิดตารางกริดของแท็บ</translation>
 <translation id="560322036295180549">ปิดโดยองค์กรของคุณ</translation>
 <translation id="5614553682702429503">บันทึกรหัสผ่านไหม</translation>
 <translation id="5626245204502895507">ไม่สามารถดาวน์โหลดไฟล์ได้ในขณะนี้</translation>
 <translation id="5631164295104953411">เพิ่มวิธีการชำระเงิน</translation>
+<translation id="5636282538000367086">ดูว่ามีอะไรใหม่ใน Chrome</translation>
+<translation id="5652623411397330904">ผลิตภัณฑ์ที่คุณติดตามจะแสดงที่นี่</translation>
 <translation id="5659593005791499971">อีเมล</translation>
+<translation id="5669335982068190158">คุณออกจากระบบในขั้นตอนการรีเซ็ต iPhone แตะ "ดําเนินการต่อ" ด้านล่างเพื่อลงชื่อเข้าใช้</translation>
 <translation id="5669528293118408608">www</translation>
 <translation id="567881659373499783">รุ่น <ph name="PRODUCT_VERSION" /></translation>
 <translation id="5690398455483874150">{count,plural, =1{กำลังแสดงหน้าต่าง Chrome 1 หน้าต่าง}other{กำลังแสดงหน้าต่าง Chrome {count} หน้าต่าง}}</translation>
@@ -569,6 +587,7 @@
 <translation id="5724941645893276623">เพิ่มแท็บใหม่เพื่อท่องเว็บแบบส่วนตัว</translation>
 <translation id="5728700505257787410">ขออภัย เกิดปัญหาในการลงชื่อเข้าใช้บัญชีของคุณ</translation>
 <translation id="5731784586962650619">รหัสผ่านในแอปอื่นๆ</translation>
+<translation id="5733084997078800044">เคล็ดลับสำหรับ Chrome</translation>
 <translation id="5737974891429562743">รายละเอียดการลงชื่อเข้าใช้บัญชีล้าสมัยแล้ว โปรดอัปเดตเพื่อเริ่มการซิงค์</translation>
 <translation id="5738385766833540397">จัดการวิธีรับการแจ้งเตือนเมื่อราคาลดลงสำหรับผลิตภัณฑ์ที่คุณติดตาม</translation>
 <translation id="5738887413654608789">วิธีนี้ช่วยให้คุณค้นพบหน้าเว็บที่เกี่ยวข้องโดยอิงตามสิ่งที่อยู่รอบตัวคุณ</translation>
@@ -582,6 +601,7 @@
 <translation id="5812974770859303494">เพิ่มใน…</translation>
 <translation id="581659025233126501">เปิดการซิงค์</translation>
 <translation id="5819208479324046259">จัดการโดย <ph name="MANAGER" /> <ph name="BEGIN_LINK" />ดูข้อมูลเพิ่มเติม<ph name="END_LINK" /></translation>
+<translation id="5833643789537100742">บันทึกรหัสผ่าน วิธีการชําระเงิน และที่อยู่เพื่อให้ Chrome ป้อนข้อความอัตโนมัติภายหลัง</translation>
 <translation id="5846482154967366008">เครื่องมือค้นหา</translation>
 <translation id="5854790677617711513">เกิน 30 วัน</translation>
 <translation id="5857090052475505287">โฟลเดอร์ใหม่</translation>
@@ -597,6 +617,7 @@
 <translation id="5913600720976431809">ตัวเลือกในการแปลหน้า</translation>
 <translation id="5938160824633642847">พื้นที่ในอุปกรณ์เกือบเต็มแล้ว เพิ่มพื้นที่ว่างแล้วลองอีกครั้ง</translation>
 <translation id="5948291296578561264">ช่วยให้คุณบันทึกรูปภาพในคลังภาพได้</translation>
+<translation id="5951816930277761335">แชร์ลิงก์</translation>
 <translation id="5955891643922670672">การดูเวอร์ชันออฟไลน์</translation>
 <translation id="5957613098218939406">ตัวเลือกเพิ่มเติม</translation>
 <translation id="5963939892571022323">สร้างลิงก์ไปยังไฮไลต์ไม่ได้</translation>
@@ -636,6 +657,7 @@
 <translation id="6189413832092199491">ยังไม่ได้อ่าน</translation>
 <translation id="6196207969502475924">การค้นหาด้วยเสียง</translation>
 <translation id="6202364442240589072">{COUNT,plural, =1{ปิด {COUNT} แท็บ}other{ปิด {COUNT} แท็บ}}</translation>
+<translation id="6219550825416862075">ยินดีต้อนรับกลับมา</translation>
 <translation id="6219688215832490856">ไม่ต้องแปล</translation>
 <translation id="6223816392543092032">ดูบุ๊กมาร์ก ประวัติการเข้าชม รหัสผ่าน และการตั้งค่าอื่นๆ ในอุปกรณ์ทั้งหมด</translation>
 <translation id="6231782223312638214">แนะนำ</translation>
@@ -723,6 +745,7 @@
 ขณะอยู่ในโหมดไม่ระบุตัวตน เว็บไซต์จะไม่สามารถใช้คุกกี้เพื่อดูกิจกรรมการท่องเว็บของคุณในเว็บไซต์ต่างๆ สำหรับวัตถุประสงค์อย่างเช่นการปรับโฆษณาตามโปรไฟล์ของคุณ เป็นต้น</translation>
 <translation id="6674571176963658787">หากต้องการเริ่มต้นการซิงค์ ให้ป้อนรหัสผ่านของคุณ</translation>
 <translation id="667999046851023355">เอกสาร</translation>
+<translation id="6684906340059221832">กำลังติดตามราคา</translation>
 <translation id="6710079714193676716">จัดการโดยองค์กร ฟีเจอร์บางอย่างอาจไม่พร้อมใช้งาน <ph name="BEGIN_LINK" />ดูข้อมูลเพิ่มเติม<ph name="END_LINK" /></translation>
 <translation id="6713747756340119864">Google Apps</translation>
 <translation id="6730682669179532099">ส่งออกรหัสผ่านไม่ได้</translation>
@@ -756,6 +779,7 @@
 <translation id="6945221475159498467">เลือก</translation>
 <translation id="6965382102122355670">ตกลง</translation>
 <translation id="6973630695168034713">โฟลเดอร์</translation>
+<translation id="6975148662438928529">คุณออกจากระบบบัญชี <ph name="USER_NAME" /> ในขั้นตอนการรีเซ็ต iPad แตะ "ดําเนินการต่อ" ด้านล่างเพื่อลงชื่อเข้าใช้</translation>
 <translation id="6979158407327259162">Google ไดรฟ์</translation>
 <translation id="6988572888918530647">จัดการบัญชี Google</translation>
 <translation id="6989674195860388998">เปลี่ยนในการตั้งค่า…</translation>
@@ -789,12 +813,16 @@
 <translation id="7265758999917665941">ไม่จดจำสำหรับเว็บไซต์นี้</translation>
 <translation id="7272437679830969316">ยืนยันตัวตนของคุณไม่ได้ คัดลอกรหัสผ่านไม่สำเร็จ</translation>
 <translation id="7291368939935408496">กำลังเตรียมรหัสผ่าน...</translation>
+<translation id="730958329302570991">เพิ่มรหัสผ่านของเว็บไซต์ใน Google เครื่องมือจัดการรหัสผ่านได้ง่ายๆ ทุกเมื่อ</translation>
 <translation id="7313347584264171202">คุณจะเห็นแท็บที่ไม่ระบุตัวตนที่นี่</translation>
+<translation id="7315813263062036945">แตะไอคอนค้นหาที่ด้านซ้ายบน</translation>
 <translation id="7336264872878993241">ดาวน์โหลดแล้ว <ph name="PERCENT" /> เปอร์เซ็นต์</translation>
 <translation id="7340958967809483333">ตัวเลือกสำหรับ Discover</translation>
 <translation id="7346909386216857016">รับทราบ</translation>
 <translation id="734758817008927353">ตัวเลือกในการบันทึกการ์ด</translation>
+<translation id="7351537303876921605">แตะ "สร้างลิงก์" ในเมนูตามบริบท</translation>
 <translation id="7353432112255316844">ยืนยันว่าเป็นคุณ</translation>
+<translation id="7356359962760467032">หยุดติดตามราคา</translation>
 <translation id="7383797227493018512">เรื่องรออ่าน</translation>
 <translation id="7398893703713203428">สร้างลิงก์</translation>
 <translation id="739941347996872055">แท็บก่อนหน้า</translation>
@@ -815,6 +843,7 @@
 <translation id="750493650310597496">เลือก 0 รายการ</translation>
 <translation id="7508728395076009983">หากต้องการล็อกแท็บที่ไม่ระบุตัวตน ให้ตั้งค่า Touch ID, Face ID หรือรหัสผ่าน</translation>
 <translation id="7514365320538308">ดาวน์โหลด</translation>
+<translation id="7531345132340165516">เว็บไซต์ปัจจุบัน</translation>
 <translation id="7537586195939242955">ขออภัย ไม่สามารถติดตั้ง Pass ของคุณใน Passbook ในขณะนี้</translation>
 <translation id="7554791636758816595">แท็บใหม่</translation>
 <translation id="7561196759112975576">ทุกครั้ง</translation>
@@ -825,6 +854,7 @@
 <translation id="7638584964844754484">รหัสผ่านไม่ถูกต้อง</translation>
 <translation id="7646263789464975852">เมนู → การตั้งค่า → การตรวจสอบความปลอดภัย</translation>
 <translation id="7646772052135772216">การซิงค์รหัสผ่านไม่ทำงาน</translation>
+<translation id="764827086632467055">แตะแอปเบราว์เซอร์เริ่มต้น</translation>
 <translation id="7649070708921625228">ความช่วยเหลือ</translation>
 <translation id="7658239707568436148">ยกเลิก</translation>
 <translation id="7671141431838911305">ติดตั้ง</translation>
@@ -847,6 +877,7 @@
 <translation id="784551991304901159">หากต้องการดูเนื้อหา ให้เลือก "เปิด" จากเมนู</translation>
 <translation id="7853202427316060426">กิจกรรม</translation>
 <translation id="7856733331829174190">ดาวน์โหลดไม่ได้</translation>
+<translation id="785938070103630874">เปิดรหัสผ่าน วิธีการชําระเงิน หรือที่อยู่ และอื่นๆ</translation>
 <translation id="7859704718976024901">ประวัติการเข้าชม</translation>
 <translation id="7884694604461143138">ประวัติการค้นหา (พบ <ph name="COUNT" /> รายการ)</translation>
 <translation id="7887198238286927132">Chrome จะไม่ป้อนข้อความลงในช่องนี้โดยอัตโนมัติเพื่อปกป้องความเป็นส่วนตัวของคุณ</translation>
@@ -866,6 +897,7 @@
 <translation id="7971521879845308059">บล็อกป๊อปอัป</translation>
 <translation id="797413074872316787">เปิดการซิงค์เพื่อซิงค์และปรับเปลี่ยนข้อมูลตามความต้องการในอุปกรณ์ทุกเครื่อง</translation>
 <translation id="7978018860671536736">3. แตะ "ป้อนรหัสผ่านอัตโนมัติ"</translation>
+<translation id="7981908678811807838">การติดตามราคาใช้ไม่ได้กับเว็บไซต์นี้</translation>
 <translation id="7982789257301363584">เครือข่าย</translation>
 <translation id="7987685713885608670">เข้ารหัสให้กับรหัสผ่านในอุปกรณ์ก่อนบันทึกลงในเครื่องมือจัดการรหัสผ่านของ Google เพื่อเพิ่มความปลอดภัย</translation>
 <translation id="7993619969781047893">ฟีเจอร์ในบางเว็บไซต์อาจใช้งานไม่ได้</translation>
@@ -901,11 +933,13 @@
 <translation id="8237382152611443140">เปิดการตั้งค่าการป้อนรหัสผ่านอัตโนมัติ</translation>
 <translation id="8261506727792406068">ลบ</translation>
 <translation id="8271720166617117963">ยอมรับและลงชื่อเข้าใช้</translation>
+<translation id="8278938988428169257">ป้อนคำหรือวลี</translation>
 <translation id="8281781826761538115">ค่าเริ่มต้น - <ph name="DEFAULT_LOCALE" /></translation>
 <translation id="8281886186245836920">ข้าม</translation>
 <translation id="8283172974887967105">ตั้งค่า…</translation>
 <translation id="8299417921174340354">หากต้องการใช้รหัสผ่าน คุณต้องตั้งรหัสผ่านในอุปกรณ์ก่อน</translation>
 <translation id="8299613349954694191">เปิดแท็บที่ไม่ระบุตัวตนเพื่อท่องเว็บในแบบส่วนตัว</translation>
+<translation id="8316944564970119719">ป้อนเว็บไซต์และรหัสผ่าน แล้วบันทึก</translation>
 <translation id="8319076807703933069">ค้นหาใหม่</translation>
 <translation id="8323906514956095947">แตะค้างไว้เพื่อดูตัวเลือกแท็บเพิ่มเติม</translation>
 <translation id="8328777765163860529">ปิดทั้งหมด</translation>
@@ -933,6 +967,7 @@
 <translation id="8533670235862049797">Google Safe Browsing เปิดอยู่</translation>
 <translation id="8534481786647257214">โพสต์ใน Google+ แล้ว</translation>
 <translation id="8548878600947630424">ค้นหาในหน้าเว็บ...</translation>
+<translation id="8558480467877843976">ตอนนี้คุณจะใช้ Chrome ทุกครั้งที่เรียกดูหรือแตะลิงก์ในข้อความ เอกสาร และแอปอื่นๆ ได้</translation>
 <translation id="8588404856427128947">ปิด</translation>
 <translation id="8590913940444621808">อย่าถามอีก</translation>
 <translation id="8591976964826315682">บล็อกคุกกี้ของบุคคลที่สามในโหมดไม่ระบุตัวตน</translation>
@@ -950,6 +985,8 @@
 <translation id="8721297211384281569">เมนูเครื่องมือ</translation>
 <translation id="8725066075913043281">ลองอีกครั้ง</translation>
 <translation id="8730621377337864115">เสร็จสิ้น</translation>
+<translation id="8731388423028622182">คุณออกจากระบบบัญชี <ph name="USER_NAME" /> ในขั้นตอนการรีเซ็ต iPhone แตะ "ดําเนินการต่อ" ด้านล่างเพื่อลงชื่อเข้าใช้</translation>
+<translation id="87371078663613140">สํารวจตัวเลือกในแถบเมนู</translation>
 <translation id="8741995161408053644">บัญชี Google ของคุณอาจมีประวัติการท่องเว็บในรูปแบบอื่นๆ ที่ <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /></translation>
 <translation id="8750037785291841318">คุณจะเห็นแท็บที่เปิดไว้ที่นี่</translation>
 <translation id="8756969031206844760">อัปเดตรหัสผ่านไหม</translation>
@@ -967,10 +1004,13 @@
 <translation id="8868471676553493380">{count,plural, =1{{count} แท็บ}other{{count} แท็บ}}</translation>
 <translation id="8870413625673593573">เพิ่งปิด</translation>
 <translation id="8876882697946675716">ซิงค์อุปกรณ์อยู่เสมอ</translation>
+<translation id="8877287418679067891">ตั้งเป็นค่าเริ่มต้นในการตั้งค่า...</translation>
 <translation id="8881801611828450202">ค้นหาภาพนี้ใน <ph name="SEARCH_ENGINE" /></translation>
 <translation id="8891935667620843985">คุณเปิดลิงก์ใน Chrome โดยอัตโนมัติได้ด้วยการตั้งเป็นแอปเบราว์เซอร์เริ่มต้น</translation>
 <translation id="8898822736010347272">ส่ง URL ของหน้าบางหน้าที่คุณเข้าชม ข้อมูลระบบที่จำกัด และเนื้อหาบางส่วนของหน้าไปให้ Google เพื่อช่วยตรวจหาภัยคุกคามใหม่ๆ และปกป้องทุกคนที่ใช้อินเทอร์เน็ต</translation>
 <translation id="8909135823018751308">แชร์…</translation>
+<translation id="8911759861431145525">แตะ "เพิ่ม" แล้วป้อนข้อมูล</translation>
+<translation id="891658175948553296">ไฮไลต์ข้อความในเว็บไซต์</translation>
 <translation id="8917490105272468696">ได้สิ ตกลง</translation>
 <translation id="8928133177108699615">เดสก์ท็อป</translation>
 <translation id="8952559610785099500">เพิ่มรหัสผ่าน</translation>
@@ -1008,6 +1048,7 @@
 <translation id="9203116392574189331">Handoff</translation>
 <translation id="9223358826628549784">ส่งรายงานข้อขัดข้องแล้ว</translation>
 <translation id="952704832371081537">ยกเลิก</translation>
+<translation id="953008885340860025">Chrome ออกจากระบบแล้ว</translation>
 <translation id="959066944189734975">คุณกำลังติดตาม <ph name="CHANNEL_NAME" /></translation>
 <translation id="981498610235328462">องค์กรอนุญาตให้คุณลงชื่อเข้าใช้ด้วยบัญชีบางบัญชีเท่านั้น ระบบซ่อนบัญชีที่ไม่ได้รับอนุญาตไว้</translation>
 <translation id="984509647832111802">การซิงค์ไม่ทำงาน</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_tr.xtb b/ios/chrome/app/strings/resources/ios_strings_tr.xtb
index 25cade7c..d0edb63 100644
--- a/ios/chrome/app/strings/resources/ios_strings_tr.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_tr.xtb
@@ -19,6 +19,7 @@
 <translation id="1076421457278169141">Kod tarandı</translation>
 <translation id="1076785341346483463">Yönetilen Hesapla Senkronize Edin</translation>
 <translation id="1084365883616172403">Facebook yayını tamamlandı.</translation>
+<translation id="1085696779717592361">Varsayılan olarak Chrome kullanın</translation>
 <translation id="1103523840287552314"><ph name="LANGUAGE" /> dilini daima çevir</translation>
 <translation id="1104948393051856124">Kabul Et ve Devam Et</translation>
 <translation id="110724200315609752">Açık Pencereye Geç</translation>
@@ -34,6 +35,7 @@
 <translation id="1165039591588034296">Hata</translation>
 <translation id="1172898394251786223">Sonraki alan</translation>
 <translation id="1176932207622159128">Görüntü Kaydedilemiyor</translation>
+<translation id="1177414119866731261">Chrome menüsünü açın</translation>
 <translation id="1181037720776840403">Kaldır</translation>
 <translation id="1207113853726624428">Yeni Arama</translation>
 <translation id="1209206284964581585">Şimdilik gizle</translation>
@@ -110,6 +112,7 @@
 <translation id="1740468249224277719">Yüklemek için iki kez dokunun.</translation>
 <translation id="1752547299766512813">Şifreleri Kaydet</translation>
 <translation id="1753905327828125965">En Çok Ziyaret Edilenler</translation>
+<translation id="1789803444939621101">Tekrar hoş geldiniz <ph name="USER_NAME" /></translation>
 <translation id="1803264062614276815">Kart Sahibinin Adı</translation>
 <translation id="1809939268435598390">Klasörü Sil</translation>
 <translation id="1813414402673211292">Tarama Verilerini Temizle</translation>
@@ -163,6 +166,7 @@
 <translation id="2302742851632557585">Web sitesindeki şifreyi değiştirme</translation>
 <translation id="2316709634732130529">Önerilen Şifreyi Kullan</translation>
 <translation id="2320166752086256636">Klavyeyi gizle</translation>
+<translation id="2328842561016935977">Şifreler'e ve Ardından Ekle'ye Dokunun</translation>
 <translation id="2351097562818989364">Çeviri ayarlarınız sıfırlandı.</translation>
 <translation id="235789365079050412">Google Gizlilik Politikası</translation>
 <translation id="2359043044084662842">Çevir</translation>
@@ -221,6 +225,7 @@
 <translation id="2781331604911854368">Açık</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2783054063075604403">Bağlantı Oluşturulamadı</translation>
+<translation id="2786701870377699570">Senkronize Edilmiş Cihazlardaki Sekmeleri Arayın</translation>
 <translation id="2800683595868705743">Sekme Değiştirici'den Çık</translation>
 <translation id="2815198996063984598">2. Varsayılan Tarayıcı Uygulaması'na dokunun</translation>
 <translation id="2820289420301699633">Yöneticiniz, Chrome üzerinde kontrole sahip ve Chrome'un verilerine ulaşabilir</translation>
@@ -244,6 +249,7 @@
 <translation id="2923448633003185837">Yapıştır ve git</translation>
 <translation id="292639812446257861">Okunmadı Olarak İşaretle</translation>
 <translation id="2932085390869194046">Şifre Öner...</translation>
+<translation id="2932765531295814441">Şifreleri Manuel Olarak Ekleyin</translation>
 <translation id="2952581218264071393">1. Chrome Ayarlarını açın</translation>
 <translation id="2958718410589002129">Şifreler</translation>
 <translation id="2961210776189273067">Unvan</translation>
@@ -279,6 +285,7 @@
 <translation id="3181954750937456830">Gizli Göz Atma (sizi ve cihazınızı tehlikelerden korur)</translation>
 <translation id="3184767182050912705">Kilidi <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /> ile Aç</translation>
 <translation id="3207960819495026254">Yer işareti koyuldu</translation>
+<translation id="3214379938835224220">iPad sıfırlama işleminin bir parçası olarak oturumunuz kapatıldı. Oturum açmak için aşağıdaki devam et seçeneğine dokunun.</translation>
 <translation id="3224641773458703735">Şifreleri dışa aktarmak için öncelikle cihazınızda bir şifre kodu ayarlamanız gerekir.</translation>
 <translation id="3227137524299004712">Mikrofon</translation>
 <translation id="3240426699337459095">Bağlantı kopyalandı</translation>
@@ -296,6 +303,7 @@
 <translation id="3329904751041170572">Sunucuya bağlanılamadı.</translation>
 <translation id="3335947283844343239">Kapatılan Sekmeyi Tekrar Aç</translation>
 <translation id="3371831930909698441">Çeviri kullanılabilir. Kullanılabilen seçenekler sayfanın altına yakın bir yerdedir.</translation>
+<translation id="3377063233124932127">Kayıtlı yer işaretleriniz, şifreleriniz ve daha fazlası artık üst kısımda.</translation>
 <translation id="3393920035788932672">İzin Verilen Pop-up'lar</translation>
 <translation id="3399930248910934354">Chrome Ayarlarını Aç</translation>
 <translation id="3404744938087714423">Oturum kapatıldığında senkronizasyon devre dışı kalır.</translation>
@@ -318,11 +326,13 @@
 <translation id="3519193562722059437">Web'e göz atmak için bir sekme açın.</translation>
 <translation id="3527085408025491307">Klasör</translation>
 <translation id="3529024052484145543">Güvenli değil</translation>
+<translation id="3530206579861815432">Senkronize edilmiş cihazlarınızdaki açık ve yakın zamanda kapatılan sekmeleri hızlıca bulun.</translation>
 <translation id="3533202363250687977">Tüm Gizli Sekmeleri Kapat</translation>
 <translation id="3533436815740441613">Yeni Sekme</translation>
 <translation id="3551320343578183772">Sekmeyi Kapat</translation>
 <translation id="3581564640715911333">Diğer dillerdeki sayfaları çevirmeyi öner</translation>
 <translation id="3588820906588687999">Resmi Yeni Sekmede Aç</translation>
+<translation id="3595252146048399851">Neyin senkronize edileceğini istediğiniz zaman <ph name="BEGIN_LINK" />ayarlardan<ph name="END_LINK" /> seçebilirsiniz. Google, geçmişinize dayalı olarak Arama'yı ve diğer hizmetleri kişiselleştirebilir.</translation>
 <translation id="3603009562372709545">Bağlantı URL'sini kopyala</translation>
 <translation id="3607167657931203000">Verileri Otomatik Doldur</translation>
 <translation id="3609785682760573515">Senkronize ediliyor...</translation>
@@ -371,6 +381,7 @@
 <translation id="4018310736049373830">Etkinliği Yönet</translation>
 <translation id="4038354071007134711">Bu cihazdaki hiçbir uygulama dosyayı açamıyor.</translation>
 <translation id="4042870976416480368">Sayfada Bul</translation>
+<translation id="40433179647657191">Bir sayfada vurguladığınız kısma doğrudan bağlantı oluşturun ve bağlantıyı paylaşın.</translation>
 <translation id="4049507953662678203">Ağ bağlantınız olduğundan emin olun ve tekrar deneyin.</translation>
 <translation id="4063300985191096908">Feed'e Git</translation>
 <translation id="408404951701638773">Arama çubuğuna artık daha kolay erişilebilir</translation>
@@ -388,11 +399,13 @@
 <translation id="4181841719683918333">Diller</translation>
 <translation id="4187450337729239226">Yapıştır ve Ara</translation>
 <translation id="4223967053752765281">Kuruluşunuz oturum açmayı devre dışı bıraktı. Yer işaretleri, geçmiş, şifreler ve diğer ayarlarınızı bu cihazda görmeye devam edebilirsiniz. Değişiklik yaparsanız bu değişiklikler hesabınızla senkronize edilmez.</translation>
+<translation id="4232900911558558076">Yeni Menüyü Keşfedin</translation>
 <translation id="4233831822770018312">İzinleri düzenle</translation>
 <translation id="4236584471598725073">Fiyat Takip Ediliyor</translation>
 <translation id="4237377247299956313"><ph name="BEGIN_BOLD" />Varsayılan Tarayıcı Uygulaması<ph name="END_BOLD" />'na dokunun</translation>
 <translation id="424315890655130736">Parolayı Girin</translation>
 <translation id="4249955472157341256">En güncel tarihe göre sırala</translation>
+<translation id="42618743927498729">Herhangi bir sitedeki fiyat düşüşüyle ilgili uyarı alın.</translation>
 <translation id="4263576668337963058">Kullanılabilir sayfa işlemlerini göster</translation>
 <translation id="4267380167363222949">Sonraki Sekme</translation>
 <translation id="4272631900155121838">QR kodu taramak için ayarlardan kamerayı etkinleştirin.</translation>
@@ -535,6 +548,7 @@
 <translation id="5388358297987318779">Resmi Aç</translation>
 <translation id="5407969256130905701">Değişiklikleri Sil</translation>
 <translation id="5416022985862681400">Son 7 Gün</translation>
+<translation id="5423269318075950257">Fiyatı Takip Et</translation>
 <translation id="543338862236136125">Şifreyi düzenle</translation>
 <translation id="5433691172869980887">Kullanıcı adı kopyalandı</translation>
 <translation id="5439599923922718668">Sık Ziyaret Edilenler</translation>
@@ -554,11 +568,15 @@
 <translation id="5556459405103347317">Yeniden Yükle</translation>
 <translation id="556042886152191864">Düğme</translation>
 <translation id="5580834567471114021">Sonrası için Okuma Listesi'ne eklensin mi?</translation>
+<translation id="5597915316964418992">Sekme Izgarasını Açın</translation>
 <translation id="560322036295180549">Kuruluşunuz tarafından kapatıldı.</translation>
 <translation id="5614553682702429503">Şifre kaydedilsin mi?</translation>
 <translation id="5626245204502895507">Dosya şu anda indirilemedi.</translation>
 <translation id="5631164295104953411">Ödeme Yöntemi Ekle</translation>
+<translation id="5636282538000367086">Chrome'daki yenilikleri öğrenin</translation>
+<translation id="5652623411397330904">Takip ettiğiniz ürünler burada gösterilir.</translation>
 <translation id="5659593005791499971">E-posta</translation>
+<translation id="5669335982068190158">iPhone sıfırlama işleminin bir parçası olarak oturumunuz kapatıldı. Oturum açmak için aşağıdaki devam et seçeneğine dokunun.</translation>
 <translation id="5669528293118408608">www</translation>
 <translation id="567881659373499783">Sürüm <ph name="PRODUCT_VERSION" /></translation>
 <translation id="5690398455483874150">{count,plural, =1{Şu anda 1 Chrome penceresi gösteriliyor}other{Şu anda {count} Chrome penceresi gösteriliyor}}</translation>
@@ -569,6 +587,7 @@
 <translation id="5724941645893276623">Web'e gizli modda göz atmak için yeni bir sekme ekleyin</translation>
 <translation id="5728700505257787410">Maalesef hesabınızda oturum açmayla ilgili bir sorun oldu.</translation>
 <translation id="5731784586962650619">Diğer Uygulamalardaki Şifreler</translation>
+<translation id="5733084997078800044">Chrome İpucu</translation>
 <translation id="5737974891429562743">Hesap oturum açma ayrıntıları eski. Senkronizasyonu başlatmak için güncelleyin.</translation>
 <translation id="5738385766833540397">Takip ettiğiniz ürünlerle ilgili fiyat düşüşü uyarılarını nasıl alacağınızı yönetin</translation>
 <translation id="5738887413654608789">Bu işlem çevrenizdeki öğelere dayalı olarak ilgili web sayfalarını keşfetmenize olanak sağlar.</translation>
@@ -582,6 +601,7 @@
 <translation id="5812974770859303494">Ekle…</translation>
 <translation id="581659025233126501">Senkronizasyonu Aç</translation>
 <translation id="5819208479324046259"><ph name="MANAGER" /> tarafından yönetiliyor. <ph name="BEGIN_LINK" />Daha fazla bilgi<ph name="END_LINK" /></translation>
+<translation id="5833643789537100742">Chrome'un daha sonra otomatik olarak doldurması için şifreleri, ödeme yöntemlerini ve adresleri kaydedin.</translation>
 <translation id="5846482154967366008">Arama Motoru</translation>
 <translation id="5854790677617711513">30 günden daha eski</translation>
 <translation id="5857090052475505287">Yeni Klasör</translation>
@@ -597,6 +617,7 @@
 <translation id="5913600720976431809">Sayfayı çevirme seçenekleri</translation>
 <translation id="5938160824633642847">Cihazınızın depolama alanı dolmak üzere. Yer boşaltın ve tekrar deneyin.</translation>
 <translation id="5948291296578561264">Böylece, fotoğrafları fotoğraf kitaplığınıza kaydedebilirsiniz.</translation>
+<translation id="5951816930277761335">Bağlantıyı paylaşın</translation>
 <translation id="5955891643922670672">Çevrimdışı Sürüm Gösteriliyor</translation>
 <translation id="5957613098218939406">Diğer Seçenekler</translation>
 <translation id="5963939892571022323">Seçili metin için bağlantı oluşturulamıyor.</translation>
@@ -636,6 +657,7 @@
 <translation id="6189413832092199491">Okunmamış girişler</translation>
 <translation id="6196207969502475924">Sesli Arama</translation>
 <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT} Sekmeyi Kapat}other{{COUNT} Sekmeyi Kapat}}</translation>
+<translation id="6219550825416862075">Tekrar hoş geldiniz</translation>
 <translation id="6219688215832490856">Asla Çevirme</translation>
 <translation id="6223816392543092032">Yer işaretlerinizi, geçmişinizi, şifrelerinizi ve diğer ayarlarınızı tüm cihazlarınızda kullanın.</translation>
 <translation id="6231782223312638214">Önerilen</translation>
@@ -723,6 +745,7 @@
 Gizli moddayken siteler, örneğin reklamları kişiselleştirmek amacıyla farklı sitelerde tarama etkinliğinizi görmek için çerez kullanamaz.</translation>
 <translation id="6674571176963658787">Senkronizasyonu başlatmak için parolanızı girin</translation>
 <translation id="667999046851023355">Doküman</translation>
+<translation id="6684906340059221832">Fiyatlar Takip Ediliyor</translation>
 <translation id="6710079714193676716">Kuruluşunuz tarafından yönetiliyor. Bazı özellikler kullanılamayabilir. <ph name="BEGIN_LINK" />Daha fazla bilgi<ph name="END_LINK" /></translation>
 <translation id="6713747756340119864">Google Apps</translation>
 <translation id="6730682669179532099">Şifreler Dışa Aktarılamıyor</translation>
@@ -756,6 +779,7 @@
 <translation id="6945221475159498467">Seç</translation>
 <translation id="6965382102122355670">Tamam</translation>
 <translation id="6973630695168034713">Klasörler</translation>
+<translation id="6975148662438928529">iPad sıfırlama işleminin bir parçası olarak <ph name="USER_NAME" /> hesabınızın oturumu kapatıldı. Oturum açmak için aşağıdaki devam et seçeneğine dokunun.</translation>
 <translation id="6979158407327259162">Google Drive</translation>
 <translation id="6988572888918530647">Google Hesabınızı Yönetin</translation>
 <translation id="6989674195860388998">Ayarlar'da değiştir…</translation>
@@ -789,12 +813,16 @@
 <translation id="7265758999917665941">Bu Site İçin Hiçbir Zaman</translation>
 <translation id="7272437679830969316">Kimliğiniz doğrulanamıyor. Şifre kopyalanmadı.</translation>
 <translation id="7291368939935408496">Şifreler Hazırlanıyor...</translation>
+<translation id="730958329302570991">Sitelerdeki şifreleri istediğiniz zaman Google Şifre Yöneticisi'ne kolayca ekleyin.</translation>
 <translation id="7313347584264171202">Gizli sekmelerinizi burada bulabilirsiniz</translation>
+<translation id="7315813263062036945">Sol üstten Arama simgesine dokunun</translation>
 <translation id="7336264872878993241">Yüzde <ph name="PERCENT" /> indirildi</translation>
 <translation id="7340958967809483333">Keşfet seçenekleri</translation>
 <translation id="7346909386216857016">Tamam, anladım</translation>
 <translation id="734758817008927353">Kartı Kaydetme seçenekleri</translation>
+<translation id="7351537303876921605">İçerik Menüsünde Bağlantı Oluştur'a Dokunun</translation>
 <translation id="7353432112255316844">Kimliğinizi Doğrulayın</translation>
+<translation id="7356359962760467032">Fiyat takibini durdurun</translation>
 <translation id="7383797227493018512">Okuma Listesi</translation>
 <translation id="7398893703713203428">Bağlantı Oluştur</translation>
 <translation id="739941347996872055">Önceki Sekme</translation>
@@ -815,6 +843,7 @@
 <translation id="750493650310597496">0 yer işareti seçildi</translation>
 <translation id="7508728395076009983">Gizli sekmelerinizi kilitlemek için Touch ID, Face ID veya Şife Kodu kurun.</translation>
 <translation id="7514365320538308">İndir</translation>
+<translation id="7531345132340165516">Geçerli Site</translation>
 <translation id="7537586195939242955">Maalesef Pass'iniz şu anda Passbook'a yüklenemiyor.</translation>
 <translation id="7554791636758816595">Yeni Sekme</translation>
 <translation id="7561196759112975576">Her zaman</translation>
@@ -825,6 +854,7 @@
 <translation id="7638584964844754484">Yanlış parola</translation>
 <translation id="7646263789464975852">Menü → Ayarlar → Güvenlik Kontrolü</translation>
 <translation id="7646772052135772216">Şifre senkronizasyonu çalışmıyor</translation>
+<translation id="764827086632467055">Varsayılan Tarayıcı Uygulaması'na dokunun</translation>
 <translation id="7649070708921625228">Yardım</translation>
 <translation id="7658239707568436148">İptal</translation>
 <translation id="7671141431838911305">YÜKLE</translation>
@@ -847,6 +877,7 @@
 <translation id="784551991304901159">İçerikleri görmek için menüden "Etkinleştir"i seçin</translation>
 <translation id="7853202427316060426">Etkinlik</translation>
 <translation id="7856733331829174190">İndirilemedi</translation>
+<translation id="785938070103630874">Şifreler, Ödeme Yöntemleri, Adres ve Daha Fazlasını Açın</translation>
 <translation id="7859704718976024901">Tarama Geçmişi</translation>
 <translation id="7884694604461143138">Geçmişte arayın (<ph name="COUNT" /> sonuç)</translation>
 <translation id="7887198238286927132">Gizliliğinizi korumak için Chrome bu alanı otomatik olarak doldurmayacaktır.</translation>
@@ -866,6 +897,7 @@
 <translation id="7971521879845308059">Pop-up'ları Engelle</translation>
 <translation id="797413074872316787">Cihazlar arasında senkronizasyon ve kişiselleştirme yapmak için senkronizasyonu etkinleştirin.</translation>
 <translation id="7978018860671536736">3. Parolaları Otomatik Doldur seçeneğine dokunun</translation>
+<translation id="7981908678811807838">Fiyat takibi bu sitede kullanılamıyor.</translation>
 <translation id="7982789257301363584">Ağ</translation>
 <translation id="7987685713885608670">Ek güvenlik için, Google Şifre Yöneticisi'ne kaydedilmeden önce şifrelerinizi cihazınızda şifreleyin.</translation>
 <translation id="7993619969781047893">Bazı sitelerdeki özellikler çalışmayabilir</translation>
@@ -901,11 +933,13 @@
 <translation id="8237382152611443140">Parolaları Otomatik Doldur ayarlarını açın</translation>
 <translation id="8261506727792406068">Sil</translation>
 <translation id="8271720166617117963">Kabul Et ve Oturum Aç</translation>
+<translation id="8278938988428169257">Bir kelime veya kelime öbeği girin</translation>
 <translation id="8281781826761538115">Varsayılan - <ph name="DEFAULT_LOCALE" /></translation>
 <translation id="8281886186245836920">Atla</translation>
 <translation id="8283172974887967105">Ayarla…</translation>
 <translation id="8299417921174340354">Şifreleri kullanmak için öncelikle cihazınızda bir şifre kodu ayarlamanız gerekir.</translation>
 <translation id="8299613349954694191">Web'e gizli olarak göz atmak için Gizli bir sekme açın.</translation>
+<translation id="8316944564970119719">Siteyi ve Şifreyi Girdikten Sonra Kaydedin</translation>
 <translation id="8319076807703933069">Yeni Arama</translation>
 <translation id="8323906514956095947">Diğer sekme seçenekleri için dokunup basılı tutun</translation>
 <translation id="8328777765163860529">Tümünü Kapat</translation>
@@ -933,6 +967,7 @@
 <translation id="8533670235862049797">Güvenli Tarama açık</translation>
 <translation id="8534481786647257214">Google+ yayını tamamlandı.</translation>
 <translation id="8548878600947630424">Sayfada bul...</translation>
+<translation id="8558480467877843976">Artık mesajlardaki, dokümanlardaki ve diğer uygulamalardaki bağlantılara göz attığınızda veya dokunduğunuzda Chrome'u kullanabilirsiniz.</translation>
 <translation id="8588404856427128947">Kapalı</translation>
 <translation id="8590913940444621808">Asla Sorma</translation>
 <translation id="8591976964826315682">Gizli modda üçüncü taraf çerezleri engelle</translation>
@@ -950,6 +985,8 @@
 <translation id="8721297211384281569">Araçlar Menüsü</translation>
 <translation id="8725066075913043281">Yeniden dene</translation>
 <translation id="8730621377337864115">Bitti</translation>
+<translation id="8731388423028622182">iPhone sıfırlama işleminin bir parçası olarak <ph name="USER_NAME" /> hesabınızın oturumu kapatıldı. Oturum açmak için aşağıdaki devam et seçeneğine dokunun.</translation>
+<translation id="87371078663613140">Menü çubuğundaki seçenekleri keşfedin</translation>
 <translation id="8741995161408053644">Google Hesabınızın <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /> adresinde başka biçimlerde tarama geçmişi olabilir.</translation>
 <translation id="8750037785291841318">Sekmeleriniz burada gösterilir</translation>
 <translation id="8756969031206844760">Şifre güncellensin mi?</translation>
@@ -967,10 +1004,13 @@
 <translation id="8868471676553493380">{count,plural, =1{{count} Sekme}other{{count} Sekme}}</translation>
 <translation id="8870413625673593573">Son Kapatılan</translation>
 <translation id="8876882697946675716">Cihazlarınızı Senkronize Durumda Tutun</translation>
+<translation id="8877287418679067891">Ayarlar'dan Varsayılan yapın…</translation>
 <translation id="8881801611828450202">Bu Resmi <ph name="SEARCH_ENGINE" /> Üzerinde Ara</translation>
 <translation id="8891935667620843985">Varsayılan tarayıcı uygulamanız yaparak bağlantıları Chrome'da otomatik bir şekilde açabilirsiniz.</translation>
 <translation id="8898822736010347272">Yeni tehditleri keşfetmeye ve web'deki herkesi korumaya yardımcı olmak için, ziyaret ettiğiniz bazı sayfaların URL'lerini, sınırlı sistem bilgilerini ve bazı sayfa içeriklerini Google'a gönderir.</translation>
 <translation id="8909135823018751308">Paylaş…</translation>
+<translation id="8911759861431145525">Ekle'ye Dokunduktan Sonra Bilgilerinizi Girin</translation>
+<translation id="891658175948553296">Bir Sitedeki Metni Vurgulayın</translation>
 <translation id="8917490105272468696">Evet, istiyorum</translation>
 <translation id="8928133177108699615">Masaüstü</translation>
 <translation id="8952559610785099500">Şifre Ekleyin</translation>
@@ -1008,6 +1048,7 @@
 <translation id="9203116392574189331">Handoff</translation>
 <translation id="9223358826628549784">Kilitlenme raporu gönderildi.</translation>
 <translation id="952704832371081537">İptal</translation>
+<translation id="953008885340860025">Chrome Oturumu Kapatıldı</translation>
 <translation id="959066944189734975"><ph name="CHANNEL_NAME" /> kanalını takip ediyorsunuz</translation>
 <translation id="981498610235328462">Kuruluşunuz yalnızca belirli hesaplarla oturum açmanıza izin vermektedir. İzin verilmeyen hesaplar gösterilmez.</translation>
 <translation id="984509647832111802">Senkronizasyon Çalışmıyor.</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_uz.xtb b/ios/chrome/app/strings/resources/ios_strings_uz.xtb
index 93989ecd..831747f 100644
--- a/ios/chrome/app/strings/resources/ios_strings_uz.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_uz.xtb
@@ -434,6 +434,7 @@
 <translation id="4502566650163919158">Hozir tekshirish</translation>
 <translation id="4505980578794259603">Oxirgi marta: <ph name="TIME" /> da tekshirilgan.</translation>
 <translation id="4508750114462689118">Kirish reklamasini yopish</translation>
+<translation id="4520798012560649652">Inkognito rejimi haqida batafsil</translation>
 <translation id="4526249700380860531">Saqlab olingan parollarni <ph name="BEGIN_LINK" />passwords.google.com<ph name="END_LINK" /> sahifasi orqali ko‘ring va ularni boshqaring.</translation>
 <translation id="452750746583162491">Sinxronlangan maʼlumotlaringizni tekshiring</translation>
 <translation id="4536418791685807335">Qaytadan kirib ko‘ring.</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 a6e5fc5..5d67340 100644
--- a/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb
@@ -19,6 +19,7 @@
 <translation id="1076421457278169141">已掃描圖碼/條碼</translation>
 <translation id="1076785341346483463">與受管理帳戶同步</translation>
 <translation id="1084365883616172403">已順利發布到 Facebook。</translation>
+<translation id="1085696779717592361">預設為使用 Chrome</translation>
 <translation id="1103523840287552314">一律翻譯<ph name="LANGUAGE" /></translation>
 <translation id="1104948393051856124">接受並繼續</translation>
 <translation id="110724200315609752">切換至已開啟的視窗</translation>
@@ -34,6 +35,7 @@
 <translation id="1165039591588034296">錯誤</translation>
 <translation id="1172898394251786223">下一個欄位</translation>
 <translation id="1176932207622159128">無法儲存圖片</translation>
+<translation id="1177414119866731261">開啟 Chrome 選單</translation>
 <translation id="1181037720776840403">移除</translation>
 <translation id="1207113853726624428">新搜尋</translation>
 <translation id="1209206284964581585">暫時隱藏</translation>
@@ -110,6 +112,7 @@
 <translation id="1740468249224277719">輕觸兩下即可安裝。</translation>
 <translation id="1752547299766512813">儲存密碼</translation>
 <translation id="1753905327828125965">最常造訪</translation>
+<translation id="1789803444939621101">歡迎回來,<ph name="USER_NAME" /></translation>
 <translation id="1803264062614276815">持卡人姓名</translation>
 <translation id="1809939268435598390">刪除資料夾</translation>
 <translation id="1813414402673211292">清除瀏覽資料</translation>
@@ -163,6 +166,7 @@
 <translation id="2302742851632557585">變更網站上的密碼</translation>
 <translation id="2316709634732130529">使用建議的密碼</translation>
 <translation id="2320166752086256636">隱藏鍵盤</translation>
+<translation id="2328842561016935977">依序輕觸「密碼」和「新增」</translation>
 <translation id="2351097562818989364">您的翻譯設定已重設。</translation>
 <translation id="235789365079050412">Google 隱私權政策</translation>
 <translation id="2359043044084662842">翻譯</translation>
@@ -221,6 +225,7 @@
 <translation id="2781331604911854368">開啟</translation>
 <translation id="2781692009645368755">Google Pay</translation>
 <translation id="2783054063075604403">無法建立連結</translation>
+<translation id="2786701870377699570">搜尋所有已同步裝置的分頁</translation>
 <translation id="2800683595868705743">退出分頁切換選項</translation>
 <translation id="2815198996063984598">2. 輕觸 [預設的瀏覽器應用程式]</translation>
 <translation id="2820289420301699633">管理員可以控管 Chrome,並存取該瀏覽器的資料</translation>
@@ -244,6 +249,7 @@
 <translation id="2923448633003185837">貼上並前往</translation>
 <translation id="292639812446257861">標示為未讀取</translation>
 <translation id="2932085390869194046">建議密碼...</translation>
+<translation id="2932765531295814441">手動新增密碼</translation>
 <translation id="2952581218264071393">1. 開啟 Chrome 設定</translation>
 <translation id="2958718410589002129">密碼</translation>
 <translation id="2961210776189273067">稱謂</translation>
@@ -279,6 +285,7 @@
 <translation id="3181954750937456830">安全瀏覽 (保護你和你的裝置不受危險網站攻擊)</translation>
 <translation id="3184767182050912705">使用 <ph name="BIOMETRIC_AUTHENITCATION_TYPE" /> 解鎖</translation>
 <translation id="3207960819495026254">已加入書籤</translation>
+<translation id="3214379938835224220">你已在重設 iPad 時登出,輕觸下方的「繼續」即可登入。</translation>
 <translation id="3224641773458703735">你必須先在裝置上設定螢幕解鎖密碼才能匯出密碼。</translation>
 <translation id="3227137524299004712">麥克風</translation>
 <translation id="3240426699337459095">連結已複製</translation>
@@ -296,6 +303,7 @@
 <translation id="3329904751041170572">無法連上伺服器。</translation>
 <translation id="3335947283844343239">重新開啟先前關閉的分頁</translation>
 <translation id="3371831930909698441">有可用的翻譯。翻譯選項的位置接近畫面底部。</translation>
+<translation id="3377063233124932127">你儲存的書籤、密碼等內容現在會顯示在頂端。</translation>
 <translation id="3393920035788932672">已允許的彈出式視窗</translation>
 <translation id="3399930248910934354">開啟 Chrome 設定</translation>
 <translation id="3404744938087714423">登出會同時關閉同步功能。</translation>
@@ -318,11 +326,13 @@
 <translation id="3519193562722059437">透過新開啟的分頁瀏覽網頁。</translation>
 <translation id="3527085408025491307">資料夾</translation>
 <translation id="3529024052484145543">不安全</translation>
+<translation id="3530206579861815432">快速尋找所有已同步裝置上目前開啟和最近關閉的分頁</translation>
 <translation id="3533202363250687977">關閉所有無痕式分頁</translation>
 <translation id="3533436815740441613">新分頁</translation>
 <translation id="3551320343578183772">關閉分頁</translation>
 <translation id="3581564640715911333">詢問是否要將網頁內容翻譯成其他語言</translation>
 <translation id="3588820906588687999">在新分頁中開啟圖片</translation>
+<translation id="3595252146048399851">你隨時可以在<ph name="BEGIN_LINK" />設定<ph name="END_LINK" />中選擇要同步處理的資料。Google 可能會根據你的歷史記錄在 Google 搜尋等其他服務中提供個人化體驗。</translation>
 <translation id="3603009562372709545">複製連結網址</translation>
 <translation id="3607167657931203000">自動填入資料</translation>
 <translation id="3609785682760573515">同步處理中...</translation>
@@ -371,6 +381,7 @@
 <translation id="4018310736049373830">管理活動</translation>
 <translation id="4038354071007134711">這個裝置上沒有能開啟此檔案的應用程式。</translation>
 <translation id="4042870976416480368">在網頁中查找</translation>
+<translation id="40433179647657191">為頁面上醒目顯示的內容建立直接連結並分享。</translation>
 <translation id="4049507953662678203">請確定您已連上網路,然後再試一次。</translation>
 <translation id="4063300985191096908">前往「動態饋給」</translation>
 <translation id="408404951701638773">現在使用搜尋列更加方便了</translation>
@@ -388,11 +399,13 @@
 <translation id="4181841719683918333">語言</translation>
 <translation id="4187450337729239226">貼上並搜尋</translation>
 <translation id="4223967053752765281">貴機構已關閉登入功能。你仍然可以在這部裝置上查看自己的書籤、歷史記錄、密碼和其他設定,但你所做的變更將不會同步到帳戶。</translation>
+<translation id="4232900911558558076">探索新選單</translation>
 <translation id="4233831822770018312">編輯權限</translation>
 <translation id="4236584471598725073">追蹤價格</translation>
 <translation id="4237377247299956313">輕觸 [預設的瀏覽器應用程式]<ph name="BEGIN_BOLD" /><ph name="END_BOLD" /></translation>
 <translation id="424315890655130736">輸入通關密語</translation>
 <translation id="4249955472157341256">依最新時間排序</translation>
+<translation id="42618743927498729">如果產品在任何網站上降價,系統會透過快訊通知你。</translation>
 <translation id="4263576668337963058">顯示可用的網頁動作</translation>
 <translation id="4267380167363222949">下一個分頁</translation>
 <translation id="4272631900155121838">如要掃描 QR 圖碼,請在設定中啟用相機</translation>
@@ -535,6 +548,7 @@
 <translation id="5388358297987318779">開啟圖片</translation>
 <translation id="5407969256130905701">捨棄變更</translation>
 <translation id="5416022985862681400">過去 7 天</translation>
+<translation id="5423269318075950257">追蹤價格</translation>
 <translation id="543338862236136125">修改密碼</translation>
 <translation id="5433691172869980887">已複製使用者名稱</translation>
 <translation id="5439599923922718668">經常造訪</translation>
@@ -554,11 +568,15 @@
 <translation id="5556459405103347317">重新載入</translation>
 <translation id="556042886152191864">按鈕</translation>
 <translation id="5580834567471114021">要加入閱讀清單以便稍後瀏覽嗎?</translation>
+<translation id="5597915316964418992">開啟分頁方格</translation>
 <translation id="560322036295180549">已由貴機構停用</translation>
 <translation id="5614553682702429503">要儲存密碼嗎?</translation>
 <translation id="5626245204502895507">目前無法下載這個檔案。</translation>
 <translation id="5631164295104953411">新增付款方式</translation>
+<translation id="5636282538000367086">看看 Chrome 有哪些新功能</translation>
+<translation id="5652623411397330904">你追蹤的產品會顯示在這裡。</translation>
 <translation id="5659593005791499971">電子郵件</translation>
+<translation id="5669335982068190158">你已在重設 iPhone 時登出,輕觸下方的「繼續」即可登入。</translation>
 <translation id="5669528293118408608">www</translation>
 <translation id="567881659373499783">版本 <ph name="PRODUCT_VERSION" /></translation>
 <translation id="5690398455483874150">{count,plural, =1{目前顯示 1 個 Chrome 視窗}other{目前顯示 {count} 個 Chrome 視窗}}</translation>
@@ -569,6 +587,7 @@
 <translation id="5724941645893276623">如要以私密模式瀏覽網頁,請開啟新分頁</translation>
 <translation id="5728700505257787410">很抱歉,登入您的帳戶時發生問題。</translation>
 <translation id="5731784586962650619">其他應用程式中的密碼</translation>
+<translation id="5733084997078800044">Chrome 使用提示</translation>
 <translation id="5737974891429562743">帳戶登入詳細資訊過舊。請先更新,再開始進行同步處理。</translation>
 <translation id="5738385766833540397">管理如何接收追蹤產品的降價快訊</translation>
 <translation id="5738887413654608789">可讓你找到與目前周遭環境相關的網頁。</translation>
@@ -582,6 +601,7 @@
 <translation id="5812974770859303494">新增至...</translation>
 <translation id="581659025233126501">開啟同步功能</translation>
 <translation id="5819208479324046259">由「<ph name="MANAGER" />」管理。<ph name="BEGIN_LINK" />瞭解詳情<ph name="END_LINK" /></translation>
+<translation id="5833643789537100742">在 Chrome 中儲存密碼、付款方式和地址,以便稍後自動填入。</translation>
 <translation id="5846482154967366008">搜尋引擎</translation>
 <translation id="5854790677617711513">超過 30 天前</translation>
 <translation id="5857090052475505287">新資料夾</translation>
@@ -597,6 +617,7 @@
 <translation id="5913600720976431809">網頁翻譯選項</translation>
 <translation id="5938160824633642847">你的裝置空間即將用盡,請在釋出空間後再試一次。</translation>
 <translation id="5948291296578561264">可讓你將相片儲存至相片庫。</translation>
+<translation id="5951816930277761335">分享連結</translation>
 <translation id="5955891643922670672">正在查看離線版</translation>
 <translation id="5957613098218939406">更多選項</translation>
 <translation id="5963939892571022323">無法建立醒目顯示文字的連結。</translation>
@@ -636,6 +657,7 @@
 <translation id="6189413832092199491">未讀取</translation>
 <translation id="6196207969502475924">語音搜尋</translation>
 <translation id="6202364442240589072">{COUNT,plural, =1{關閉 {COUNT} 個分頁}other{關閉 {COUNT} 個分頁}}</translation>
+<translation id="6219550825416862075">歡迎回來</translation>
 <translation id="6219688215832490856">一律不翻譯</translation>
 <translation id="6223816392543092032">你在任何裝置上都能取得自己的書籤、歷史記錄、密碼和其他設定。</translation>
 <translation id="6231782223312638214">建議</translation>
@@ -723,6 +745,7 @@
 在無痕模式中,網站無法使用 Cookie 查看你在各網站的瀏覽活動,也無法提供個人化廣告等服務。</translation>
 <translation id="6674571176963658787">如要開始同步處理,請輸入通關密語</translation>
 <translation id="667999046851023355">文件</translation>
+<translation id="6684906340059221832">正在追蹤價格</translation>
 <translation id="6710079714193676716">由貴機構管理,部分功能可能無法使用。<ph name="BEGIN_LINK" />瞭解詳情<ph name="END_LINK" /></translation>
 <translation id="6713747756340119864">Google Apps</translation>
 <translation id="6730682669179532099">無法匯出密碼</translation>
@@ -756,6 +779,7 @@
 <translation id="6945221475159498467">選取</translation>
 <translation id="6965382102122355670">確定</translation>
 <translation id="6973630695168034713">資料夾</translation>
+<translation id="6975148662438928529">你已在重設 iPad 時登出帳戶 (<ph name="USER_NAME" />),輕觸下方的「繼續」即可登入。</translation>
 <translation id="6979158407327259162">Google 雲端硬碟</translation>
 <translation id="6988572888918530647">管理你的 Google 帳戶</translation>
 <translation id="6989674195860388998">切換至「設定」…</translation>
@@ -789,12 +813,16 @@
 <translation id="7265758999917665941">一律不儲存這個網站的密碼</translation>
 <translation id="7272437679830969316">無法驗證你的身分,因此未複製密碼。</translation>
 <translation id="7291368939935408496">正在準備匯出密碼...</translation>
+<translation id="730958329302570991">隨時可以在 Google 密碼管理工具中輕鬆新增網站密碼。</translation>
 <translation id="7313347584264171202">這裡會顯示你的無痕分頁</translation>
+<translation id="7315813263062036945">輕觸左上方的「搜尋」圖示</translation>
 <translation id="7336264872878993241">已下載 <ph name="PERCENT" /> %</translation>
 <translation id="7340958967809483333">探索的選項</translation>
 <translation id="7346909386216857016">好,我知道了</translation>
 <translation id="734758817008927353">卡片儲存選項</translation>
+<translation id="7351537303876921605">輕觸內容選單中的「建立連結」</translation>
 <translation id="7353432112255316844">驗證身分</translation>
+<translation id="7356359962760467032">停止追蹤價格</translation>
 <translation id="7383797227493018512">閱讀清單</translation>
 <translation id="7398893703713203428">建立連結</translation>
 <translation id="739941347996872055">上一個分頁</translation>
@@ -815,6 +843,7 @@
 <translation id="750493650310597496">已選取 0 個項目</translation>
 <translation id="7508728395076009983">如要鎖定無痕分頁,請設定 Touch ID、Face ID 或密碼。</translation>
 <translation id="7514365320538308">下載</translation>
+<translation id="7531345132340165516">目前網站</translation>
 <translation id="7537586195939242955">很抱歉,目前無法將您的通行票證加到 Passbook。</translation>
 <translation id="7554791636758816595">新分頁</translation>
 <translation id="7561196759112975576">一律使用</translation>
@@ -825,6 +854,7 @@
 <translation id="7638584964844754484">通關密語不正確</translation>
 <translation id="7646263789464975852">「選單」→「設定」→「安全檢查」</translation>
 <translation id="7646772052135772216">密碼同步功能無法正常運作</translation>
+<translation id="764827086632467055">輕觸「預設瀏覽器 App」</translation>
 <translation id="7649070708921625228">說明</translation>
 <translation id="7658239707568436148">取消</translation>
 <translation id="7671141431838911305">安裝</translation>
@@ -847,6 +877,7 @@
 <translation id="784551991304901159">如要查看內容,請從選單中選取「開啟」</translation>
 <translation id="7853202427316060426">活動</translation>
 <translation id="7856733331829174190">無法下載</translation>
+<translation id="785938070103630874">開啟密碼、付款方式或地址等等</translation>
 <translation id="7859704718976024901">瀏覽記錄</translation>
 <translation id="7884694604461143138">在歷史記錄中搜尋 (找到 <ph name="COUNT" /> 項結果)</translation>
 <translation id="7887198238286927132">為保護個人隱私,Chrome 不會自動填入這個欄位。</translation>
@@ -866,6 +897,7 @@
 <translation id="7971521879845308059">封鎖彈出式視窗</translation>
 <translation id="797413074872316787">如要在所有裝置上保持同步並享有個人化體驗,請開啟同步功能。</translation>
 <translation id="7978018860671536736">3. 輕觸 [自動填入密碼]</translation>
+<translation id="7981908678811807838">無法追蹤這個網站上的價格。</translation>
 <translation id="7982789257301363584">網路</translation>
 <translation id="7987685713885608670">為進一步加強安全性,系統會先在裝置上將密碼加密,再儲存至 Google 密碼管理員。</translation>
 <translation id="7993619969781047893">某些網站的功能可能無法正常運作</translation>
@@ -901,11 +933,13 @@
 <translation id="8237382152611443140">開啟 [自動填入密碼] 設定</translation>
 <translation id="8261506727792406068">刪除</translation>
 <translation id="8271720166617117963">接受並登入</translation>
+<translation id="8278938988428169257">輸入字詞或詞組</translation>
 <translation id="8281781826761538115">預設 - <ph name="DEFAULT_LOCALE" /></translation>
 <translation id="8281886186245836920">略過</translation>
 <translation id="8283172974887967105">設定…</translation>
 <translation id="8299417921174340354">你必須先在裝置上設定螢幕解鎖密碼才能使用密碼。</translation>
 <translation id="8299613349954694191">開啟無痕分頁就能以私密模式瀏覽網頁。</translation>
+<translation id="8316944564970119719">輸入網站和密碼,然後儲存</translation>
 <translation id="8319076807703933069">新搜尋</translation>
 <translation id="8323906514956095947">輕觸並按住即可查看更多分頁選項</translation>
 <translation id="8328777765163860529">關閉全部</translation>
@@ -933,6 +967,7 @@
 <translation id="8533670235862049797">已啟用安全瀏覽功能</translation>
 <translation id="8534481786647257214">已順利發布到 Google+。</translation>
 <translation id="8548878600947630424">在網頁中尋找...</translation>
+<translation id="8558480467877843976">你現在隨時可以使用 Chrome 上網或開啟訊息、文件和其他應用程式中的連結。</translation>
 <translation id="8588404856427128947">關閉</translation>
 <translation id="8590913940444621808">一律不詢問</translation>
 <translation id="8591976964826315682">在無痕模式中封鎖第三方 Cookie</translation>
@@ -950,6 +985,8 @@
 <translation id="8721297211384281569">工具選單</translation>
 <translation id="8725066075913043281">再試一次</translation>
 <translation id="8730621377337864115">完成</translation>
+<translation id="8731388423028622182">你已在重設 iPhone 時登出帳戶 (<ph name="USER_NAME" />),輕觸下方的「繼續」即可登入。</translation>
+<translation id="87371078663613140">瀏覽選單列中的選項</translation>
 <translation id="8741995161408053644">您仍可前往 <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /> 存取 Google 帳戶中保存的各種瀏覽記錄。</translation>
 <translation id="8750037785291841318">這裡會顯示你的分頁</translation>
 <translation id="8756969031206844760">要更新密碼嗎?</translation>
@@ -967,10 +1004,13 @@
 <translation id="8868471676553493380">{count,plural, =1{{count} 個分頁}other{{count} 個分頁}}</translation>
 <translation id="8870413625673593573">最近關閉的分頁</translation>
 <translation id="8876882697946675716">讓你的裝置保持同步</translation>
+<translation id="8877287418679067891">在「設定」中設為預設…</translation>
 <translation id="8881801611828450202">透過 <ph name="SEARCH_ENGINE" /> 搜尋這張圖片</translation>
 <translation id="8891935667620843985">只要將 Chrome 設為預設瀏覽器應用程式,即可自動在 Chrome 中開啟連結。</translation>
 <translation id="8898822736010347272">將部分已造訪網頁的網址、特定的系統資訊和部分網頁內容傳送至 Google,以協助發現新威脅並保障所有網路使用者的安全。</translation>
 <translation id="8909135823018751308">分享…</translation>
+<translation id="8911759861431145525">輕觸「新增」並輸入資訊</translation>
+<translation id="891658175948553296">醒目顯示網站的文字</translation>
 <translation id="8917490105272468696">是,我同意</translation>
 <translation id="8928133177108699615">電腦模式</translation>
 <translation id="8952559610785099500">新增密碼</translation>
@@ -1008,6 +1048,7 @@
 <translation id="9203116392574189331">Handoff</translation>
 <translation id="9223358826628549784">當機報告已送出。</translation>
 <translation id="952704832371081537">取消</translation>
+<translation id="953008885340860025">你已登出 Chrome</translation>
 <translation id="959066944189734975">你正在追蹤「<ph name="CHANNEL_NAME" />」</translation>
 <translation id="981498610235328462">貴機構規定你只能使用特定帳戶登入。系統已隱藏不適用的帳戶。</translation>
 <translation id="984509647832111802">同步功能無法正常運作。</translation>
diff --git a/ios/chrome/browser/flags/about_flags.mm b/ios/chrome/browser/flags/about_flags.mm
index de7d78cf..cf558b1 100644
--- a/ios/chrome/browser/flags/about_flags.mm
+++ b/ios/chrome/browser/flags/about_flags.mm
@@ -209,6 +209,14 @@
      nullptr},
 };
 
+const FeatureEntry::FeatureParam kWhatsNewModuleLayout[] = {
+    {kWhatsNewModuleBasedLayoutParam, "true"}};
+
+const FeatureEntry::FeatureVariation kWhatsNewLayoutVariations[] = {
+    {"Display module layout", kWhatsNewModuleLayout,
+     std::size(kWhatsNewModuleLayout), nullptr},
+};
+
 const FeatureEntry::FeatureParam
     kAutofillUseMobileLabelDisambiguationShowAll[] = {
         {autofill::features::kAutofillUseMobileLabelDisambiguationParameterName,
@@ -1215,7 +1223,9 @@
                                     "EnableOpenInDownload")},
     {"whats-new-ios", flag_descriptions::kWhatsNewIOSName,
      flag_descriptions::kWhatsNewIOSDescription, flags_ui::kOsIos,
-     FEATURE_VALUE_TYPE(kWhatsNewIOS)},
+     FEATURE_WITH_PARAMS_VALUE_TYPE(kWhatsNewIOS,
+                                    kWhatsNewLayoutVariations,
+                                    "WhatsNewLayoutVariations")},
     {"ios-autofill-branding", flag_descriptions::kAutofillBrandingIOSName,
      flag_descriptions::kAutofillBrandingIOSDescription, flags_ui::kOsIos,
      FEATURE_WITH_PARAMS_VALUE_TYPE(autofill::features::kAutofillBrandingIOS,
diff --git a/ios/chrome/browser/ntp/OWNERS b/ios/chrome/browser/ntp/OWNERS
index 330cb31..6a153ef3 100644
--- a/ios/chrome/browser/ntp/OWNERS
+++ b/ios/chrome/browser/ntp/OWNERS
@@ -1 +1,2 @@
+thegreenfrog@chromium.org
 justincohen@chromium.org
diff --git a/ios/chrome/browser/ntp/new_tab_page_tab_helper.mm b/ios/chrome/browser/ntp/new_tab_page_tab_helper.mm
index f7570ef..4c2a733 100644
--- a/ios/chrome/browser/ntp/new_tab_page_tab_helper.mm
+++ b/ios/chrome/browser/ntp/new_tab_page_tab_helper.mm
@@ -63,7 +63,6 @@
   active_ = IsNTPURL(web_state_->GetVisibleURL());
   if (active_) {
     UpdateItem(web_state_->GetNavigationManager()->GetPendingItem());
-    [delegate_ newTabPageHelperDidChangeVisibility:this forWebState:web_state_];
   }
 }
 
diff --git a/ios/chrome/browser/overscroll_actions/overscroll_actions_tab_helper_unittest.mm b/ios/chrome/browser/overscroll_actions/overscroll_actions_tab_helper_unittest.mm
index 3a14214e..a8072d20 100644
--- a/ios/chrome/browser/overscroll_actions/overscroll_actions_tab_helper_unittest.mm
+++ b/ios/chrome/browser/overscroll_actions/overscroll_actions_tab_helper_unittest.mm
@@ -59,7 +59,7 @@
     // Wait until scroll action is allowed. There is no condition to wait, just
     // a time period.
     base::test::ios::SpinRunLoopWithMinDelay(
-        base::Seconds(kMinimumPullDurationToTransitionToReadyInSeconds));
+        kMinimumPullDurationToTransitionToReady);
     [ui_scroll_view_.delegate scrollViewDidScroll:ui_scroll_view_];
     // Scroll to content offset below action threshold to cancel bounce
     // animation.
diff --git a/ios/chrome/browser/safe_browsing/tailored_security/BUILD.gn b/ios/chrome/browser/safe_browsing/tailored_security/BUILD.gn
index 95e8ff8..d89a5d4f 100644
--- a/ios/chrome/browser/safe_browsing/tailored_security/BUILD.gn
+++ b/ios/chrome/browser/safe_browsing/tailored_security/BUILD.gn
@@ -46,6 +46,7 @@
     ":tailored_security",
     "//base/test:test_support",
     "//components/safe_browsing/core/browser/tailored_security_service",
+    "//components/safe_browsing/core/common:safe_browsing_prefs",
     "//components/sync_preferences:sync_preferences",
     "//components/sync_preferences:test_support",
     "//ios/chrome/browser/browser_state:test_support",
diff --git a/ios/chrome/browser/safe_browsing/tailored_security/chrome_tailored_security_service.h b/ios/chrome/browser/safe_browsing/tailored_security/chrome_tailored_security_service.h
index e3e358c5..06d7b116 100644
--- a/ios/chrome/browser/safe_browsing/tailored_security/chrome_tailored_security_service.h
+++ b/ios/chrome/browser/safe_browsing/tailored_security/chrome_tailored_security_service.h
@@ -27,16 +27,9 @@
   ~ChromeTailoredSecurityService() override;
 
  protected:
-  void ShowSyncNotification(bool is_enabled) override;
   scoped_refptr<network::SharedURLLoaderFactory> GetURLLoaderFactory() override;
 
  private:
-  // Handles any additional actions when notification sent from
-  // ShowSyncNotification() is dismissed. This happens when the user uses a
-  // slide gesture or presses a button to visually remove the message from the
-  // screen.
-  void MessageDismissed();
-
   ChromeBrowserState* browser_state_;
 };
 
diff --git a/ios/chrome/browser/safe_browsing/tailored_security/chrome_tailored_security_service.mm b/ios/chrome/browser/safe_browsing/tailored_security/chrome_tailored_security_service.mm
index 5683c54..83a6d2a 100644
--- a/ios/chrome/browser/safe_browsing/tailored_security/chrome_tailored_security_service.mm
+++ b/ios/chrome/browser/safe_browsing/tailored_security/chrome_tailored_security_service.mm
@@ -6,11 +6,8 @@
 
 #import "base/metrics/histogram_functions.h"
 #import "components/prefs/pref_service.h"
-#import "components/safe_browsing/core/browser/tailored_security_service/tailored_security_notification_result.h"
-#import "components/safe_browsing/core/browser/tailored_security_service/tailored_security_service_util.h"
 #import "components/safe_browsing/core/common/features.h"
 #import "components/safe_browsing/core/common/safe_browsing_policy_handler.h"
-#import "components/safe_browsing/core/common/safe_browsing_prefs.h"
 #import "components/signin/public/identity_manager/identity_manager.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
 #import "ios/chrome/browser/signin/identity_manager_factory.h"
@@ -31,32 +28,6 @@
 
 ChromeTailoredSecurityService::~ChromeTailoredSecurityService() = default;
 
-void ChromeTailoredSecurityService::ShowSyncNotification(bool is_enabled) {
-  std::unique_ptr<web::WebState> web_state =
-      web::WebState::Create(web::WebState::CreateParams(browser_state_));
-  if (!web_state) {
-    if (is_enabled) {
-      // Record BrowserState/WebContents not being available.
-      RecordEnabledNotificationResult(
-          TailoredSecurityNotificationResult::kNoWebContentsAvailable);
-    }
-    return;
-  }
-
-  SetSafeBrowsingState(browser_state_->GetPrefs(),
-                       is_enabled ? SafeBrowsingState::ENHANCED_PROTECTION
-                                  : SafeBrowsingState::STANDARD_PROTECTION,
-                       /*is_esb_enabled_in_sync=*/is_enabled);
-
-  // TODO(crbug.com/1353363): Send output to create InfoBar message.
-
-  if (is_enabled) {
-    RecordEnabledNotificationResult(TailoredSecurityNotificationResult::kShown);
-  }
-}
-
-void ChromeTailoredSecurityService::MessageDismissed() {}
-
 scoped_refptr<network::SharedURLLoaderFactory>
 ChromeTailoredSecurityService::GetURLLoaderFactory() {
   return browser_state_->GetSharedURLLoaderFactory();
diff --git a/ios/chrome/browser/safe_browsing/tailored_security/tailored_security_tab_helper.h b/ios/chrome/browser/safe_browsing/tailored_security/tailored_security_tab_helper.h
index 623f04b..2b96df7 100644
--- a/ios/chrome/browser/safe_browsing/tailored_security/tailored_security_tab_helper.h
+++ b/ios/chrome/browser/safe_browsing/tailored_security/tailored_security_tab_helper.h
@@ -20,6 +20,8 @@
       public web::WebStateObserver,
       public web::WebStateUserData<TailoredSecurityTabHelper> {
  public:
+  TailoredSecurityTabHelper(web::WebState* web_state,
+                            safe_browsing::TailoredSecurityService* service);
   ~TailoredSecurityTabHelper() override;
 
   TailoredSecurityTabHelper(const TailoredSecurityTabHelper&) = delete;
@@ -36,13 +38,11 @@
   void OnTailoredSecurityBitChanged(bool enabled,
                                     base::Time previous_update) override;
   void OnTailoredSecurityServiceDestroyed() override;
+  void OnSyncNotificationMessageRequest(bool is_enabled) override;
 
  private:
   friend class web::WebStateUserData<TailoredSecurityTabHelper>;
 
-  TailoredSecurityTabHelper(web::WebState* web_state,
-                            safe_browsing::TailoredSecurityService* service);
-
   void UpdateFocusAndURL(bool focused, const GURL& url);
 
   WEB_STATE_USER_DATA_KEY_DECL();
diff --git a/ios/chrome/browser/safe_browsing/tailored_security/tailored_security_tab_helper.mm b/ios/chrome/browser/safe_browsing/tailored_security/tailored_security_tab_helper.mm
index 417fcec5..70438c4 100644
--- a/ios/chrome/browser/safe_browsing/tailored_security/tailored_security_tab_helper.mm
+++ b/ios/chrome/browser/safe_browsing/tailored_security/tailored_security_tab_helper.mm
@@ -4,8 +4,11 @@
 
 #import "ios/chrome/browser/safe_browsing/tailored_security/tailored_security_tab_helper.h"
 
+#import "components/safe_browsing/core/browser/tailored_security_service/tailored_security_notification_result.h"
 #import "components/safe_browsing/core/browser/tailored_security_service/tailored_security_service.h"
 #import "components/safe_browsing/core/browser/tailored_security_service/tailored_security_service_observer_util.h"
+#import "components/safe_browsing/core/browser/tailored_security_service/tailored_security_service_util.h"
+#import "components/safe_browsing/core/common/safe_browsing_prefs.h"
 #import "components/signin/public/identity_manager/identity_manager.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
 #import "ios/chrome/browser/signin/identity_manager_factory.h"
@@ -70,6 +73,33 @@
   service_ = nullptr;
 }
 
+void TailoredSecurityTabHelper::OnSyncNotificationMessageRequest(
+    bool is_enabled) {
+  if (!web_state_) {
+    if (is_enabled) {
+      // Record BrowserState/WebContents not being available.
+      safe_browsing::RecordEnabledNotificationResult(
+          TailoredSecurityNotificationResult::kNoWebContentsAvailable);
+    }
+    return;
+  }
+
+  ChromeBrowserState* browser_state =
+      ChromeBrowserState::FromBrowserState(web_state_->GetBrowserState());
+  SetSafeBrowsingState(
+      browser_state->GetPrefs(),
+      is_enabled ? safe_browsing::SafeBrowsingState::ENHANCED_PROTECTION
+                 : safe_browsing::SafeBrowsingState::STANDARD_PROTECTION,
+      /*is_esb_enabled_in_sync=*/is_enabled);
+
+  // TODO(crbug.com/1353363): Send output to create InfoBar message.
+
+  if (is_enabled) {
+    safe_browsing::RecordEnabledNotificationResult(
+        TailoredSecurityNotificationResult::kShown);
+  }
+}
+
 #pragma mark - web::WebStateObserver
 void TailoredSecurityTabHelper::DidFinishNavigation(
     web::WebState* web_state,
diff --git a/ios/chrome/browser/safe_browsing/tailored_security/tailored_security_tab_helper_unittest.mm b/ios/chrome/browser/safe_browsing/tailored_security/tailored_security_tab_helper_unittest.mm
index efd887c9..da58436 100644
--- a/ios/chrome/browser/safe_browsing/tailored_security/tailored_security_tab_helper_unittest.mm
+++ b/ios/chrome/browser/safe_browsing/tailored_security/tailored_security_tab_helper_unittest.mm
@@ -6,6 +6,7 @@
 
 #import "base/test/task_environment.h"
 #import "components/safe_browsing/core/browser/tailored_security_service/tailored_security_service.h"
+#import "components/safe_browsing/core/common/safe_browsing_prefs.h"
 #import "components/sync_preferences/pref_service_mock_factory.h"
 #import "components/sync_preferences/pref_service_syncable.h"
 #import "ios/chrome/browser/browser_state/test_chrome_browser_state.h"
@@ -34,7 +35,6 @@
   MOCK_METHOD2(MaybeNotifySyncUser, void(bool, base::Time));
   MOCK_METHOD0(GetURLLoaderFactory,
                scoped_refptr<network::SharedURLLoaderFactory>());
-  MOCK_METHOD1(ShowSyncNotification, void(bool));
 };
 
 // Starts and finishes a mock navigation successfully.
@@ -99,4 +99,19 @@
   PerformFakeNavigation("https://example.com", &web_state_);
 }
 
+// Tests how the tab helper responds an observer call.
+TEST_F(TailoredSecurityTabHelperTest, SyncNotificationCalled) {
+  MockTailoredSecurityService mock_service;
+  TailoredSecurityTabHelper::CreateForWebState(&web_state_, &mock_service);
+  TailoredSecurityTabHelper* tab_helper =
+      TailoredSecurityTabHelper::FromWebState(&web_state_);
+
+  // When a sync notification request is sent and the user is synced, the
+  // SafeBrowsingState should automatically change to Enhanced Protection.
+  tab_helper->OnSyncNotificationMessageRequest(/*is_enabled*/ true);
+  EXPECT_TRUE(
+      safe_browsing::GetSafeBrowsingState(*chrome_browser_state_->GetPrefs()) ==
+      safe_browsing::SafeBrowsingState::ENHANCED_PROTECTION);
+}
+
 }  // namespace safe_browsing
diff --git a/ios/chrome/browser/ui/authentication/signin/add_account_signin/add_account_signin_coordinator.mm b/ios/chrome/browser/ui/authentication/signin/add_account_signin/add_account_signin_coordinator.mm
index c0fc146d..66b0935 100644
--- a/ios/chrome/browser/ui/authentication/signin/add_account_signin/add_account_signin_coordinator.mm
+++ b/ios/chrome/browser/ui/authentication/signin/add_account_signin/add_account_signin_coordinator.mm
@@ -154,8 +154,8 @@
 
 - (void)addAccountSigninManagerFinishedWithSigninResult:
             (SigninCoordinatorResult)signinResult
-                                               identity:
-                                                   (ChromeIdentity*)identity {
+                                               identity:(id<SystemIdentity>)
+                                                            identity {
   if (!self.addAccountSigninManager) {
     // The AddAccountSigninManager callback might be called after the
     // interrupt method. If this is the case, the AddAccountSigninCoordinator
@@ -190,7 +190,7 @@
 // Continues the sign-in workflow according to the sign-in intent
 - (void)continueAddAccountFlowWithSigninResult:
             (SigninCoordinatorResult)signinResult
-                                      identity:(ChromeIdentity*)identity {
+                                      identity:(id<SystemIdentity>)identity {
   switch (self.signinIntent) {
     case AddAccountSigninIntentReauthPrimaryAccount: {
       [self presentUserConsentWithIdentity:identity];
@@ -231,7 +231,7 @@
 
 // Runs callback completion on finishing the add account flow.
 - (void)addAccountDoneWithSigninResult:(SigninCoordinatorResult)signinResult
-                              identity:(ChromeIdentity*)identity {
+                              identity:(id<SystemIdentity>)identity {
   DCHECK(!self.alertCoordinator);
   DCHECK(!self.userSigninCoordinator);
   // `identity` is set, only and only if the sign-in is successful.
@@ -244,7 +244,7 @@
 }
 
 // Presents the user consent screen with `identity` pre-selected.
-- (void)presentUserConsentWithIdentity:(ChromeIdentity*)identity {
+- (void)presentUserConsentWithIdentity:(id<SystemIdentity>)identity {
   // The UserSigninViewController is presented on top of the currently displayed
   // view controller.
   self.userSigninCoordinator = [SigninCoordinator
diff --git a/ios/chrome/browser/ui/authentication/signin/add_account_signin/add_account_signin_manager.h b/ios/chrome/browser/ui/authentication/signin/add_account_signin/add_account_signin_manager.h
index 0639f67..e137cb4 100644
--- a/ios/chrome/browser/ui/authentication/signin/add_account_signin/add_account_signin_manager.h
+++ b/ios/chrome/browser/ui/authentication/signin/add_account_signin/add_account_signin_manager.h
@@ -11,9 +11,9 @@
 #import "ios/chrome/browser/ui/authentication/signin/add_account_signin/add_account_signin_enums.h"
 #import "ios/chrome/browser/ui/authentication/signin/signin_constants.h"
 
-@class ChromeIdentity;
 @class ChromeIdentityInteractionManager;
 class PrefService;
+@protocol SystemIdentity;
 
 namespace signin {
 class IdentityManager;
@@ -32,7 +32,7 @@
 - (void)addAccountSigninManagerFinishedWithSigninResult:
             (SigninCoordinatorResult)signinResult
                                                identity:
-                                                   (ChromeIdentity*)identity;
+                                                   (id<SystemIdentity>)identity;
 
 @end
 
diff --git a/ios/chrome/browser/ui/authentication/signin/add_account_signin/add_account_signin_manager.mm b/ios/chrome/browser/ui/authentication/signin/add_account_signin/add_account_signin_manager.mm
index 4047e63..154bcb78 100644
--- a/ios/chrome/browser/ui/authentication/signin/add_account_signin/add_account_signin_manager.mm
+++ b/ios/chrome/browser/ui/authentication/signin/add_account_signin/add_account_signin_manager.mm
@@ -83,7 +83,7 @@
   [self.identityInteractionManager
       addAccountWithPresentingViewController:self.baseViewController
                                    userEmail:userEmail
-                                  completion:^(ChromeIdentity* identity,
+                                  completion:^(id<SystemIdentity> identity,
                                                NSError* error) {
                                     [weakSelf
                                         operationCompletedWithIdentity:identity
@@ -102,7 +102,7 @@
 
 // Handles the reauthentication or add account operation or displays an alert
 // if the flow is interrupted by a sign-in error.
-- (void)operationCompletedWithIdentity:(ChromeIdentity*)identity
+- (void)operationCompletedWithIdentity:(id<SystemIdentity>)identity
                                  error:(NSError*)error {
   SigninCoordinatorResult signinResult = SigninCoordinatorResultSuccess;
   if (self.signinInterrupted) {
diff --git a/ios/chrome/browser/ui/autofill/resources/fullcolor_branding_icon.imageset/fullcolor_branding_icon@2x.png b/ios/chrome/browser/ui/autofill/resources/fullcolor_branding_icon.imageset/fullcolor_branding_icon@2x.png
index 85e4605..633b974a 100644
--- a/ios/chrome/browser/ui/autofill/resources/fullcolor_branding_icon.imageset/fullcolor_branding_icon@2x.png
+++ b/ios/chrome/browser/ui/autofill/resources/fullcolor_branding_icon.imageset/fullcolor_branding_icon@2x.png
Binary files differ
diff --git a/ios/chrome/browser/ui/autofill/resources/fullcolor_branding_icon.imageset/fullcolor_branding_icon@3x.png b/ios/chrome/browser/ui/autofill/resources/fullcolor_branding_icon.imageset/fullcolor_branding_icon@3x.png
index c00ec1b..edd5028 100644
--- a/ios/chrome/browser/ui/autofill/resources/fullcolor_branding_icon.imageset/fullcolor_branding_icon@3x.png
+++ b/ios/chrome/browser/ui/autofill/resources/fullcolor_branding_icon.imageset/fullcolor_branding_icon@3x.png
Binary files differ
diff --git a/ios/chrome/browser/ui/autofill/resources/monotone_branding_icon.imageset/monotone_branding_icon_dark@2x.png b/ios/chrome/browser/ui/autofill/resources/monotone_branding_icon.imageset/monotone_branding_icon_dark@2x.png
index 627145b..85146053 100644
--- a/ios/chrome/browser/ui/autofill/resources/monotone_branding_icon.imageset/monotone_branding_icon_dark@2x.png
+++ b/ios/chrome/browser/ui/autofill/resources/monotone_branding_icon.imageset/monotone_branding_icon_dark@2x.png
Binary files differ
diff --git a/ios/chrome/browser/ui/autofill/resources/monotone_branding_icon.imageset/monotone_branding_icon_dark@3x.png b/ios/chrome/browser/ui/autofill/resources/monotone_branding_icon.imageset/monotone_branding_icon_dark@3x.png
index a988310..06b4a15 100644
--- a/ios/chrome/browser/ui/autofill/resources/monotone_branding_icon.imageset/monotone_branding_icon_dark@3x.png
+++ b/ios/chrome/browser/ui/autofill/resources/monotone_branding_icon.imageset/monotone_branding_icon_dark@3x.png
Binary files differ
diff --git a/ios/chrome/browser/ui/autofill/resources/monotone_branding_icon.imageset/monotone_branding_icon_light@2x.png b/ios/chrome/browser/ui/autofill/resources/monotone_branding_icon.imageset/monotone_branding_icon_light@2x.png
index 940d143..33c1891 100644
--- a/ios/chrome/browser/ui/autofill/resources/monotone_branding_icon.imageset/monotone_branding_icon_light@2x.png
+++ b/ios/chrome/browser/ui/autofill/resources/monotone_branding_icon.imageset/monotone_branding_icon_light@2x.png
Binary files differ
diff --git a/ios/chrome/browser/ui/autofill/resources/monotone_branding_icon.imageset/monotone_branding_icon_light@3x.png b/ios/chrome/browser/ui/autofill/resources/monotone_branding_icon.imageset/monotone_branding_icon_light@3x.png
index f805c91..33f3e2ba 100644
--- a/ios/chrome/browser/ui/autofill/resources/monotone_branding_icon.imageset/monotone_branding_icon_light@3x.png
+++ b/ios/chrome/browser/ui/autofill/resources/monotone_branding_icon.imageset/monotone_branding_icon_light@3x.png
Binary files differ
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_edit_view_controller.mm b/ios/chrome/browser/ui/bookmarks/bookmark_edit_view_controller.mm
index 14d3ad9..15f0e16 100644
--- a/ios/chrome/browser/ui/bookmarks/bookmark_edit_view_controller.mm
+++ b/ios/chrome/browser/ui/bookmarks/bookmark_edit_view_controller.mm
@@ -36,7 +36,6 @@
 #import "ios/chrome/browser/ui/table_view/chrome_table_view_styler.h"
 #import "ios/chrome/browser/ui/table_view/table_view_utils.h"
 #import "ios/chrome/browser/ui/util/rtl_geometry.h"
-#import "ios/chrome/browser/ui/util/ui_util.h"
 #import "ios/chrome/browser/ui/util/uikit_ui_util.h"
 #import "ios/chrome/common/ui/colors/semantic_color_names.h"
 #import "ios/chrome/common/ui/util/constraints_ui_util.h"
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_home_view_controller.mm b/ios/chrome/browser/ui/bookmarks/bookmark_home_view_controller.mm
index 4344d39..469bda92 100644
--- a/ios/chrome/browser/ui/bookmarks/bookmark_home_view_controller.mm
+++ b/ios/chrome/browser/ui/bookmarks/bookmark_home_view_controller.mm
@@ -67,7 +67,6 @@
 #import "ios/chrome/browser/ui/table_view/table_view_navigation_controller_constants.h"
 #import "ios/chrome/browser/ui/table_view/table_view_utils.h"
 #import "ios/chrome/browser/ui/util/rtl_geometry.h"
-#import "ios/chrome/browser/ui/util/ui_util.h"
 #import "ios/chrome/browser/ui/util/uikit_ui_util.h"
 #import "ios/chrome/browser/url_loading/url_loading_browser_agent.h"
 #import "ios/chrome/browser/url_loading/url_loading_params.h"
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.mm b/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.mm
index 8cf1c7f..a1832977 100644
--- a/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.mm
+++ b/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.mm
@@ -27,7 +27,6 @@
 #import "ios/chrome/browser/bookmarks/bookmarks_utils.h"
 #import "ios/chrome/browser/flags/system_flags.h"
 #import "ios/chrome/browser/ui/bookmarks/undo_manager_wrapper.h"
-#import "ios/chrome/browser/ui/util/ui_util.h"
 #import "ios/chrome/browser/ui/util/uikit_ui_util.h"
 #import "ios/chrome/grit/ios_strings.h"
 #import "third_party/skia/include/core/SkColor.h"
diff --git a/ios/chrome/browser/ui/browser_view/BUILD.gn b/ios/chrome/browser/ui/browser_view/BUILD.gn
index 3a6947d..e6c1f4d5 100644
--- a/ios/chrome/browser/ui/browser_view/BUILD.gn
+++ b/ios/chrome/browser/ui/browser_view/BUILD.gn
@@ -189,8 +189,8 @@
     "//ios/chrome/browser/ui/util:url_with_title",
     "//ios/chrome/browser/ui/voice",
     "//ios/chrome/browser/ui/webui",
-    "//ios/chrome/browser/ui/whats_new:feature_flags",
-    "//ios/chrome/browser/ui/whats_new:whats_new",
+    "//ios/chrome/browser/ui/whats_new",
+    "//ios/chrome/browser/ui/whats_new:util",
     "//ios/chrome/browser/upgrade",
     "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/url_loading",
diff --git a/ios/chrome/browser/ui/browser_view/browser_coordinator.mm b/ios/chrome/browser/ui/browser_view/browser_coordinator.mm
index 2d9deac..6ca661e 100644
--- a/ios/chrome/browser/ui/browser_view/browser_coordinator.mm
+++ b/ios/chrome/browser/ui/browser_view/browser_coordinator.mm
@@ -148,8 +148,8 @@
 #import "ios/chrome/browser/ui/voice/text_to_speech_playback_controller.h"
 #import "ios/chrome/browser/ui/voice/text_to_speech_playback_controller_factory.h"
 #import "ios/chrome/browser/ui/webui/net_export_coordinator.h"
-#import "ios/chrome/browser/ui/whats_new/feature_flags.h"
 #import "ios/chrome/browser/ui/whats_new/whats_new_coordinator.h"
+#import "ios/chrome/browser/ui/whats_new/whats_new_util.h"
 #import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/browser/url_loading/url_loading_browser_agent.h"
 #import "ios/chrome/browser/url_loading/url_loading_params.h"
@@ -1375,7 +1375,7 @@
 }
 
 - (void)showWhatsNew {
-  if (!base::FeatureList::IsEnabled(kWhatsNewIOS)) {
+  if (!IsWhatsNewEnabled()) {
     return;
   }
 
diff --git a/ios/chrome/browser/ui/content_suggestions/BUILD.gn b/ios/chrome/browser/ui/content_suggestions/BUILD.gn
index 7dcf7ea..0e68cdd6 100644
--- a/ios/chrome/browser/ui/content_suggestions/BUILD.gn
+++ b/ios/chrome/browser/ui/content_suggestions/BUILD.gn
@@ -114,7 +114,7 @@
     "//ios/chrome/browser/ui/start_surface:feature_flags",
     "//ios/chrome/browser/ui/toolbar/public",
     "//ios/chrome/browser/ui/util",
-    "//ios/chrome/browser/ui/whats_new:feature_flags",
+    "//ios/chrome/browser/ui/whats_new:util",
     "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/url_loading",
     "//ios/chrome/browser/voice",
diff --git a/ios/chrome/browser/ui/content_suggestions/content_suggestions_mediator.mm b/ios/chrome/browser/ui/content_suggestions/content_suggestions_mediator.mm
index a054e28..bbbdbba 100644
--- a/ios/chrome/browser/ui/content_suggestions/content_suggestions_mediator.mm
+++ b/ios/chrome/browser/ui/content_suggestions/content_suggestions_mediator.mm
@@ -62,7 +62,7 @@
 #import "ios/chrome/browser/ui/ui_feature_flags.h"
 #import "ios/chrome/browser/ui/util/ui_util.h"
 #import "ios/chrome/browser/ui/util/uikit_ui_util.h"
-#import "ios/chrome/browser/ui/whats_new/feature_flags.h"
+#import "ios/chrome/browser/ui/whats_new/whats_new_util.h"
 #import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/browser/url_loading/url_loading_browser_agent.h"
 #import "ios/chrome/browser/url_loading/url_loading_params.h"
@@ -633,7 +633,7 @@
 }
 
 - (BOOL)shouldShowWhatsNewActionItem {
-  if (!base::FeatureList::IsEnabled(kWhatsNewIOS)) {
+  if (!IsWhatsNewEnabled()) {
     return NO;
   }
 
diff --git a/ios/chrome/browser/ui/default_promo/BUILD.gn b/ios/chrome/browser/ui/default_promo/BUILD.gn
index 8767c49..f679891 100644
--- a/ios/chrome/browser/ui/default_promo/BUILD.gn
+++ b/ios/chrome/browser/ui/default_promo/BUILD.gn
@@ -11,7 +11,6 @@
   deps = [
     "//base",
     "//ios/chrome/browser/ui:feature_flags",
-    "//ios/chrome/browser/ui/first_run:field_trial",
   ]
   frameworks = [ "Foundation.framework" ]
 }
@@ -46,7 +45,6 @@
     "//ios/chrome/app/strings",
     "//ios/chrome/browser/main:public",
     "//ios/chrome/browser/overlays",
-    "//ios/chrome/browser/ui:feature_flags",
     "//ios/chrome/browser/ui/commands",
     "//ios/chrome/browser/ui/coordinators:chrome_coordinators",
     "//ios/chrome/browser/ui/default_promo/resources",
@@ -104,7 +102,6 @@
     "//ios/chrome/browser/overlays",
     "//ios/chrome/browser/overlays/public/common/infobars",
     "//ios/chrome/browser/overlays/test",
-    "//ios/chrome/browser/ui:feature_flags",
     "//ios/chrome/browser/ui/commands:commands",
     "//ios/chrome/browser/ui/main:scene_state_header",
     "//ios/chrome/browser/ui/main:scene_state_header",
@@ -130,7 +127,6 @@
     "//base/test:test_support",
     "//components/strings",
     "//ios/chrome/app/strings",
-    "//ios/chrome/browser/ui:feature_flags",
     "//ios/chrome/browser/ui/infobars/banners:public",
     "//ios/chrome/test:eg_test_support+eg2",
     "//ios/chrome/test/earl_grey:eg_test_support+eg2",
diff --git a/ios/chrome/browser/ui/default_promo/default_browser_promo_non_modal_egtest.mm b/ios/chrome/browser/ui/default_promo/default_browser_promo_non_modal_egtest.mm
index 5724500..ea8b91f 100644
--- a/ios/chrome/browser/ui/default_promo/default_browser_promo_non_modal_egtest.mm
+++ b/ios/chrome/browser/ui/default_promo/default_browser_promo_non_modal_egtest.mm
@@ -7,7 +7,6 @@
 #import "base/test/ios/wait_util.h"
 #import "components/strings/grit/components_strings.h"
 #import "ios/chrome/browser/ui/infobars/banners/infobar_banner_constants.h"
-#import "ios/chrome/browser/ui/ui_feature_flags.h"
 #import "ios/chrome/grit/ios_chromium_strings.h"
 #import "ios/chrome/grit/ios_strings.h"
 #import "ios/chrome/test/earl_grey/chrome_earl_grey.h"
diff --git a/ios/chrome/browser/ui/default_promo/default_browser_promo_non_modal_scheduler_unittest.mm b/ios/chrome/browser/ui/default_promo/default_browser_promo_non_modal_scheduler_unittest.mm
index b351e5c..70a1ac5 100644
--- a/ios/chrome/browser/ui/default_promo/default_browser_promo_non_modal_scheduler_unittest.mm
+++ b/ios/chrome/browser/ui/default_promo/default_browser_promo_non_modal_scheduler_unittest.mm
@@ -25,7 +25,6 @@
 #import "ios/chrome/browser/ui/default_promo/default_browser_promo_non_modal_metrics_util.h"
 #import "ios/chrome/browser/ui/default_promo/default_browser_utils.h"
 #import "ios/chrome/browser/ui/main/scene_state.h"
-#import "ios/chrome/browser/ui/ui_feature_flags.h"
 #import "ios/chrome/browser/web_state_list/web_state_list.h"
 #import "ios/chrome/browser/web_state_list/web_state_opener.h"
 #import "ios/web/public/test/fakes/fake_navigation_manager.h"
diff --git a/ios/chrome/browser/ui/default_promo/default_browser_promo_view_controller.mm b/ios/chrome/browser/ui/default_promo/default_browser_promo_view_controller.mm
index d308813..29b5ea8 100644
--- a/ios/chrome/browser/ui/default_promo/default_browser_promo_view_controller.mm
+++ b/ios/chrome/browser/ui/default_promo/default_browser_promo_view_controller.mm
@@ -7,7 +7,6 @@
 #import "base/feature_list.h"
 #import "ios/chrome/browser/ui/default_promo/default_browser_string_util.h"
 #import "ios/chrome/browser/ui/default_promo/default_browser_utils.h"
-#import "ios/chrome/browser/ui/ui_feature_flags.h"
 #import "ios/chrome/grit/ios_google_chrome_strings.h"
 #import "ios/chrome/grit/ios_strings.h"
 #import "ui/base/l10n/l10n_util_mac.h"
diff --git a/ios/chrome/browser/ui/default_promo/default_browser_string_util.mm b/ios/chrome/browser/ui/default_promo/default_browser_string_util.mm
index 749ad6d4..44a87a4 100644
--- a/ios/chrome/browser/ui/default_promo/default_browser_string_util.mm
+++ b/ios/chrome/browser/ui/default_promo/default_browser_string_util.mm
@@ -5,7 +5,6 @@
 #import "ios/chrome/browser/ui/default_promo/default_browser_string_util.h"
 
 #import "ios/chrome/browser/ui/default_promo/default_browser_utils.h"
-#import "ios/chrome/browser/ui/ui_feature_flags.h"
 #import "ios/chrome/grit/ios_google_chrome_strings.h"
 #import "ios/chrome/grit/ios_strings.h"
 #import "ui/base/l10n/l10n_util_mac.h"
diff --git a/ios/chrome/browser/ui/default_promo/default_browser_utils.mm b/ios/chrome/browser/ui/default_promo/default_browser_utils.mm
index 2866f8b..be75f57 100644
--- a/ios/chrome/browser/ui/default_promo/default_browser_utils.mm
+++ b/ios/chrome/browser/ui/default_promo/default_browser_utils.mm
@@ -7,9 +7,8 @@
 #import "base/feature_list.h"
 #import "base/ios/ios_util.h"
 #import "base/mac/foundation_util.h"
-#import "base/metrics/field_trial.h"
 #import "base/metrics/field_trial_params.h"
-#import "ios/chrome/browser/ui/first_run/fre_field_trial.h"
+#import "base/notreached.h"
 #import "ios/chrome/browser/ui/ui_feature_flags.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
@@ -176,10 +175,7 @@
   // "No thanks" button in first run default browser screen. Short cool down
   // should be set only one time, so after the first run promo there is a short
   // cool down before the next promo and after it goes back to normal.
-  if (DisplayedPromoCount() < 2 &&
-      fre_field_trial::GetFREDefaultBrowserScreenPromoFRE() ==
-          NewDefaultBrowserPromoFRE::kShortDelay &&
-      HasUserInteractedWithFirstRunPromoBefore() &&
+  if (DisplayedPromoCount() < 2 && HasUserInteractedWithFirstRunPromoBefore() &&
       !HasUserOpenedSettingsFromFirstRunPromo()) {
     return kPromosShortCoolDown;
   }
diff --git a/ios/chrome/browser/ui/default_promo/default_browser_utils_unittest.mm b/ios/chrome/browser/ui/default_promo/default_browser_utils_unittest.mm
index e46a5ca..7db4359c 100644
--- a/ios/chrome/browser/ui/default_promo/default_browser_utils_unittest.mm
+++ b/ios/chrome/browser/ui/default_promo/default_browser_utils_unittest.mm
@@ -6,7 +6,6 @@
 
 #import "base/ios/ios_util.h"
 #import "base/test/scoped_feature_list.h"
-#import "ios/chrome/browser/ui/ui_feature_flags.h"
 #import "testing/gtest/include/gtest/gtest.h"
 #import "testing/gtest_mac.h"
 #import "testing/platform_test.h"
diff --git a/ios/chrome/browser/ui/default_promo/tailored_promo_view_controller.mm b/ios/chrome/browser/ui/default_promo/tailored_promo_view_controller.mm
index 7ddc81de..3afe6d5 100644
--- a/ios/chrome/browser/ui/default_promo/tailored_promo_view_controller.mm
+++ b/ios/chrome/browser/ui/default_promo/tailored_promo_view_controller.mm
@@ -7,7 +7,6 @@
 #import "base/feature_list.h"
 #import "ios/chrome/browser/ui/default_promo/default_browser_string_util.h"
 #import "ios/chrome/browser/ui/default_promo/default_browser_utils.h"
-#import "ios/chrome/browser/ui/ui_feature_flags.h"
 #import "ios/chrome/grit/ios_google_chrome_strings.h"
 #import "ios/chrome/grit/ios_strings.h"
 #import "ui/base/l10n/l10n_util_mac.h"
diff --git a/ios/chrome/browser/ui/gestures/view_revealing_vertical_pan_handler.mm b/ios/chrome/browser/ui/gestures/view_revealing_vertical_pan_handler.mm
index 22a3564..28fc58be 100644
--- a/ios/chrome/browser/ui/gestures/view_revealing_vertical_pan_handler.mm
+++ b/ios/chrome/browser/ui/gestures/view_revealing_vertical_pan_handler.mm
@@ -12,7 +12,6 @@
 #import "base/notreached.h"
 #import "ios/chrome/browser/ui/gestures/layout_switcher.h"
 #import "ios/chrome/browser/ui/gestures/pan_handler_scroll_view.h"
-#import "ios/chrome/browser/ui/util/ui_util.h"
 #import "ios/chrome/browser/ui/util/uikit_ui_util.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/browser/ui/history/BUILD.gn b/ios/chrome/browser/ui/history/BUILD.gn
index 1afe98e..91c2ea3 100644
--- a/ios/chrome/browser/ui/history/BUILD.gn
+++ b/ios/chrome/browser/ui/history/BUILD.gn
@@ -32,7 +32,6 @@
     "//ios/chrome/browser/ui/menu",
     "//ios/chrome/browser/ui/sharing",
     "//ios/chrome/browser/ui/table_view",
-    "//ios/chrome/browser/ui/util",
     "//ios/chrome/common/ui/favicon:favicon_constants",
   ]
   frameworks = [
diff --git a/ios/chrome/browser/ui/history/history_coordinator.mm b/ios/chrome/browser/ui/history/history_coordinator.mm
index 14fd3ec..68d2882c 100644
--- a/ios/chrome/browser/ui/history/history_coordinator.mm
+++ b/ios/chrome/browser/ui/history/history_coordinator.mm
@@ -29,7 +29,6 @@
 #import "ios/chrome/browser/ui/menu/menu_histograms.h"
 #import "ios/chrome/browser/ui/sharing/sharing_coordinator.h"
 #import "ios/chrome/browser/ui/table_view/table_view_navigation_controller.h"
-#import "ios/chrome/browser/ui/util/ui_util.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
diff --git a/ios/chrome/browser/ui/history/history_entry_inserter.mm b/ios/chrome/browser/ui/history/history_entry_inserter.mm
index 6e3c399..70f9c36 100644
--- a/ios/chrome/browser/ui/history/history_entry_inserter.mm
+++ b/ios/chrome/browser/ui/history/history_entry_inserter.mm
@@ -11,7 +11,6 @@
 #import "ios/chrome/browser/ui/history/history_util.h"
 #import "ios/chrome/browser/ui/list_model/list_model.h"
 #import "ios/chrome/browser/ui/table_view/cells/table_view_text_header_footer_item.h"
-#import "ios/chrome/browser/ui/util/ui_util.h"
 #import "url/gurl.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/browser/ui/main/BUILD.gn b/ios/chrome/browser/ui/main/BUILD.gn
index 4cc8b045..a126ef2 100644
--- a/ios/chrome/browser/ui/main/BUILD.gn
+++ b/ios/chrome/browser/ui/main/BUILD.gn
@@ -196,8 +196,6 @@
     "//ios/chrome/browser/ui/default_promo",
     "//ios/chrome/browser/ui/default_promo:utils",
     "//ios/chrome/browser/ui/first_run",
-    "//ios/chrome/browser/ui/first_run:field_trial",
-    "//ios/chrome/browser/ui/first_run:utils",
     "//ios/chrome/browser/ui/history",
     "//ios/chrome/browser/ui/incognito_interstitial:incognito_interstitial",
     "//ios/chrome/browser/ui/incognito_reauth:incognito_reauth_scene_agent",
diff --git a/ios/chrome/browser/ui/main/scene_controller.mm b/ios/chrome/browser/ui/main/scene_controller.mm
index 6db28a3..2c5607f3 100644
--- a/ios/chrome/browser/ui/main/scene_controller.mm
+++ b/ios/chrome/browser/ui/main/scene_controller.mm
@@ -95,7 +95,6 @@
 #import "ios/chrome/browser/ui/commands/snackbar_commands.h"
 #import "ios/chrome/browser/ui/default_promo/default_browser_promo_non_modal_scheduler.h"
 #import "ios/chrome/browser/ui/default_promo/default_browser_utils.h"
-#import "ios/chrome/browser/ui/first_run/fre_field_trial.h"
 #import "ios/chrome/browser/ui/first_run/orientation_limiting_navigation_controller.h"
 #import "ios/chrome/browser/ui/history/history_coordinator.h"
 #import "ios/chrome/browser/ui/incognito_interstitial/incognito_interstitial_coordinator.h"
@@ -1032,9 +1031,7 @@
   return postOpeningAction == NO_ACTION &&
          !self.sceneState.appState.postCrashLaunch &&
          !IsChromeLikelyDefaultBrowser() &&
-         !HasUserOpenedSettingsFromFirstRunPromo() &&
-         fre_field_trial::GetFREDefaultBrowserScreenPromoFRE() !=
-             NewDefaultBrowserPromoFRE::kFirstRunOnly;
+         !HasUserOpenedSettingsFromFirstRunPromo();
 }
 
 - (void)maybeShowDefaultBrowserPromo:(Browser*)browser {
diff --git a/ios/chrome/browser/ui/overscroll_actions/overscroll_actions_controller.mm b/ios/chrome/browser/ui/overscroll_actions/overscroll_actions_controller.mm
index 0643c5ff..22c3e8f 100644
--- a/ios/chrome/browser/ui/overscroll_actions/overscroll_actions_controller.mm
+++ b/ios/chrome/browser/ui/overscroll_actions/overscroll_actions_controller.mm
@@ -11,6 +11,7 @@
 
 #import "base/check_op.h"
 #import "base/metrics/histogram_macros.h"
+#import "base/time/time.h"
 #import "ios/chrome/browser/ui/fullscreen/fullscreen_controller.h"
 #import "ios/chrome/browser/ui/fullscreen/scoped_fullscreen_disabler.h"
 #import "ios/chrome/browser/ui/overscroll_actions/overscroll_actions_gesture_recognizer.h"
@@ -60,11 +61,11 @@
 // if the scrollview is scrolled to top.
 const CGFloat kScrolledToTopToleranceInPoint = 50;
 // The minimum duration between scrolling in order to allow overscroll actions.
-// In seconds.
-const CFTimeInterval kMinimumDurationBetweenScrollingInSeconds = 0.15;
+constexpr base::TimeDelta kMinimumDurationBetweenScrolling =
+    base::Milliseconds(150);
 // The minimum duration that the pull must last in order to trigger an action.
-// In seconds.
-const CFTimeInterval kMinimumPullDurationToTriggerActionInSeconds = 0.2;
+constexpr base::TimeDelta kMinimumPullDurationToTriggerAction =
+    base::Milliseconds(200);
 // Bounce dynamic constants.
 // Since the bounce effect of the scrollview is cancelled by setting the
 // contentInsets to the value of the overscroll contentOffset, the bounce
@@ -145,7 +146,7 @@
   SpringInsetState _bounceState;
   NSInteger _overscrollActionLock;
   // The last time the user started scrolling the view.
-  CFTimeInterval _lastScrollBeginTime;
+  base::TimeTicks _lastScrollBeginTime;
   // Set to YES when the bounce animation must be independent of the scrollview
   // contentOffset change.
   // This is done when an action has been triggered. In that case the webview's
@@ -424,7 +425,7 @@
   [self.overscrollActionView pullStarted];
   if (!_performingScrollViewIndependentAnimation)
     _allowPullingActions = [self isOverscrollActionsAllowed];
-  _lastScrollBeginTime = CACurrentMediaTime();
+  _lastScrollBeginTime = base::TimeTicks::Now();
 }
 
 - (BOOL)isOverscrollActionsAllowed {
@@ -435,8 +436,8 @@
                                kScrolledToTopToleranceInPoint;
   // Check that the user is not quickly scrolling the view repeatedly.
   const BOOL isMinimumTimeBetweenScrollRespected =
-      (CACurrentMediaTime() - _lastScrollBeginTime) >=
-      kMinimumDurationBetweenScrollingInSeconds;
+      (base::TimeTicks::Now() - _lastScrollBeginTime) >=
+      kMinimumDurationBetweenScrolling;
   // Finally check that the delegate allow overscroll actions.
   const BOOL delegateAllowOverscrollActions = [self.delegate
       shouldAllowOverscrollActionsForOverscrollActionsController:self];
@@ -732,8 +733,8 @@
         (isOverscrollStateActionReady && isOverscrollActionNone)) {
       [self recordMetricForTriggeredAction:OverscrollAction::NONE];
     } else if (isOverscrollStateActionReady && !isOverscrollActionNone) {
-      if (CACurrentMediaTime() - _lastScrollBeginTime >=
-          kMinimumPullDurationToTriggerActionInSeconds) {
+      if ((base::TimeTicks::Now() - _lastScrollBeginTime) >=
+          kMinimumPullDurationToTriggerAction) {
         _performingScrollViewIndependentAnimation = YES;
         [self setScrollViewContentInset:TopContentInset(
                                             self.scrollView,
diff --git a/ios/chrome/browser/ui/overscroll_actions/overscroll_actions_view.h b/ios/chrome/browser/ui/overscroll_actions/overscroll_actions_view.h
index 470ea32..c9e9b509 100644
--- a/ios/chrome/browser/ui/overscroll_actions/overscroll_actions_view.h
+++ b/ios/chrome/browser/ui/overscroll_actions/overscroll_actions_view.h
@@ -7,6 +7,8 @@
 
 #import <UIKit/UIKit.h>
 
+#include "base/time/time.h"
+
 // Describes the current Index of an action in the OverScrollActionsView.
 enum class OverscrollAction {
   NONE,       // No action
@@ -24,7 +26,8 @@
 };
 
 // Minimum delay for the view to perform the transition to the ready state.
-extern const CFTimeInterval kMinimumPullDurationToTransitionToReadyInSeconds;
+constexpr base::TimeDelta kMinimumPullDurationToTransitionToReady =
+    base::Milliseconds(250);
 
 // The brightness of the actions view background color for non incognito mode.
 extern const CGFloat kActionViewBackgroundColorBrightnessNonIncognito;
diff --git a/ios/chrome/browser/ui/overscroll_actions/overscroll_actions_view.mm b/ios/chrome/browser/ui/overscroll_actions/overscroll_actions_view.mm
index 1aef042b5..a9e5e19 100644
--- a/ios/chrome/browser/ui/overscroll_actions/overscroll_actions_view.mm
+++ b/ios/chrome/browser/ui/overscroll_actions/overscroll_actions_view.mm
@@ -9,6 +9,8 @@
 #import "base/check.h"
 #import "base/ios/block_types.h"
 #import "base/numerics/math_constants.h"
+#import "base/task/sequenced_task_runner.h"
+#import "base/time/time.h"
 #import "ios/chrome/browser/ui/content_suggestions/ntp_home_constant.h"
 #import "ios/chrome/browser/ui/icons/chrome_symbol.h"
 #import "ios/chrome/browser/ui/util/rtl_geometry.h"
@@ -120,8 +122,6 @@
 
 }  // namespace
 
-// Minimum delay to perform the transition to the ready state.
-const CFTimeInterval kMinimumPullDurationToTransitionToReadyInSeconds = 0.25;
 // The brightness of the actions view background color for non incognito mode.
 const CGFloat kActionViewBackgroundColorBrightnessNonIncognito = 242.0 / 256.0;
 // The brightness of the actions view background color for incognito mode.
@@ -149,8 +149,7 @@
   // The last vertical offset.
   CGFloat _lastVerticalOffset;
   // Last recorded pull start absolute time.
-  // Unit is in seconds.
-  CFTimeInterval _pullStartTimeInSeconds;
+  base::TimeTicks _pullStartTime;
   // Tap gesture recognizer that allow the user to tap on an action to activate
   // it.
   UITapGestureRecognizer* _tapGesture;
@@ -376,16 +375,15 @@
 
 - (void)pullStarted {
   _didTransitionToReadyState = NO;
-  _pullStartTimeInSeconds = CACurrentMediaTime();
+  _pullStartTime = base::TimeTicks::Now();
   // Ensure we will update the state after time threshold even without offset
   // change.
-  dispatch_after(
-      dispatch_time(DISPATCH_TIME_NOW,
-                    (kMinimumPullDurationToTransitionToReadyInSeconds + 0.01) *
-                        NSEC_PER_SEC),
-      dispatch_get_main_queue(), ^{
-        [self updateState];
-      });
+  __weak OverscrollActionsView* weakSelf = self;
+  base::SequencedTaskRunner::GetCurrentDefault()->PostDelayedTask(
+      FROM_HERE, base::BindOnce(^{
+        [weakSelf updateState];
+      }),
+      kMinimumPullDurationToTransitionToReady + base::Milliseconds(10));
 }
 
 - (void)updateWithVerticalOffset:(CGFloat)offset {
@@ -797,10 +795,10 @@
 
 - (void)updateState {
   if (self.verticalOffset > 1) {
-    const CFTimeInterval elapsedTime =
-        CACurrentMediaTime() - _pullStartTimeInSeconds;
+    const base::TimeDelta elapsedTime =
+        base::TimeTicks::Now() - _pullStartTime;
     const BOOL isMinimumTimeElapsed =
-        elapsedTime >= kMinimumPullDurationToTransitionToReadyInSeconds;
+        elapsedTime >= kMinimumPullDurationToTransitionToReady;
     const BOOL isPullingDownOrAlreadyTriggeredOnce =
         _lastVerticalOffset <= self.verticalOffset ||
         _didTransitionToReadyState;
@@ -988,15 +986,16 @@
   if (!_viewTouched)
     return;
   __weak OverscrollActionsView* weakSelf = self;
-  dispatch_after(
-      dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)),
-      dispatch_get_main_queue(), ^{
-        OverscrollActionsView* strongSelf = weakSelf;
-        if (strongSelf) {
-          strongSelf->_deformationBehaviorEnabled = YES;
-          strongSelf->_viewTouched = NO;
-        }
-      });
+  base::SequencedTaskRunner::GetCurrentDefault()->PostDelayedTask(
+      FROM_HERE, base::BindOnce(^{
+        [weakSelf clearDirectTouchInteractionAfterDelay];
+      }),
+      base::Milliseconds(100));
+}
+
+- (void)clearDirectTouchInteractionAfterDelay {
+  _deformationBehaviorEnabled = YES;
+  _viewTouched = NO;
 }
 
 - (UILabel*)labelForAction:(OverscrollAction)action {
diff --git a/ios/chrome/browser/ui/popup_menu/overflow_menu/BUILD.gn b/ios/chrome/browser/ui/popup_menu/overflow_menu/BUILD.gn
index 854d32f8..c028de9 100644
--- a/ios/chrome/browser/ui/popup_menu/overflow_menu/BUILD.gn
+++ b/ios/chrome/browser/ui/popup_menu/overflow_menu/BUILD.gn
@@ -51,6 +51,7 @@
     "resources:overflow_menu_destination_recent_tabs",
     "resources:overflow_menu_destination_settings",
     "resources:overflow_menu_destination_site_info",
+    "resources:overflow_menu_destination_whats_new",
     "resources:overflow_menu_footer_managed",
     "//components/bookmarks/browser",
     "//components/bookmarks/common",
@@ -87,6 +88,7 @@
     "//ios/chrome/browser/ui/popup_menu:metrics_protocols",
     "//ios/chrome/browser/ui/popup_menu/overflow_menu/destination_usage_history",
     "//ios/chrome/browser/ui/util",
+    "//ios/chrome/browser/ui/whats_new:util",
     "//ios/chrome/browser/url:constants",
     "//ios/chrome/browser/web",
     "//ios/chrome/browser/web/font_size",
@@ -181,6 +183,7 @@
     "//ios/chrome/browser/ui/popup_menu/overflow_menu:feature_flags",
     "//ios/chrome/browser/ui/toolbar/test",
     "//ios/chrome/browser/ui/util",
+    "//ios/chrome/browser/ui/whats_new:feature_flags",
     "//ios/chrome/browser/web/font_size",
     "//ios/chrome/browser/web_state_list",
     "//ios/public/provider/chrome/browser/text_zoom:text_zoom_api",
diff --git a/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_constants.cc b/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_constants.cc
index 7e70f5d..9a1c2e9 100644
--- a/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_constants.cc
+++ b/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_constants.cc
@@ -28,6 +28,8 @@
     return overflow_menu::Destination::SiteInfo;
   } else if (destination == "overflow_menu::Destination::Settings") {
     return overflow_menu::Destination::Settings;
+  } else if (destination == "overflow_menu::Destination::WhatsNew") {
+    return overflow_menu::Destination::WhatsNew;
   } else {
     NOTREACHED();
     // Randomly chosen destination which should never be returned due to
@@ -54,6 +56,8 @@
       return "overflow_menu::Destination::SiteInfo";
     case overflow_menu::Destination::Settings:
       return "overflow_menu::Destination::Settings";
+    case overflow_menu::Destination::WhatsNew:
+      return "overflow_menu::Destination::WhatsNew";
   }
 }
 
@@ -84,6 +88,9 @@
     case Destination::Settings:
       base::RecordAction(base::UserMetricsAction("MobileMenuSettings"));
       break;
+    case Destination::WhatsNew:
+      base::RecordAction(base::UserMetricsAction("MobileMenuWhatsNew"));
+      break;
   }
 }
 }  // namespace overflow_menu
diff --git a/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_constants.h b/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_constants.h
index 39ac8b2..76258f16 100644
--- a/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_constants.h
+++ b/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_constants.h
@@ -17,6 +17,7 @@
   RecentTabs = 5,
   SiteInfo = 6,
   Settings = 7,
+  WhatsNew = 8,
 };
 
 // Ingests `destination` string representation and returns corresponding
diff --git a/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_mediator.mm b/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_mediator.mm
index deed10c3..0b2d9c14 100644
--- a/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_mediator.mm
+++ b/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_mediator.mm
@@ -59,6 +59,7 @@
 #import "ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_swift.h"
 #import "ios/chrome/browser/ui/popup_menu/popup_menu_constants.h"
 #import "ios/chrome/browser/ui/util/uikit_ui_util.h"
+#import "ios/chrome/browser/ui/whats_new/whats_new_util.h"
 #import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/browser/web/font_size/font_size_tab_helper.h"
 #import "ios/chrome/browser/web/web_navigation_browser_agent.h"
@@ -206,6 +207,7 @@
 @property(nonatomic, strong) OverflowMenuDestination* recentTabsDestination;
 @property(nonatomic, strong) OverflowMenuDestination* settingsDestination;
 @property(nonatomic, strong) OverflowMenuDestination* siteInfoDestination;
+@property(nonatomic, strong) OverflowMenuDestination* whatsNewDestination;
 
 @property(nonatomic, strong) OverflowMenuActionGroup* appActionsGroup;
 @property(nonatomic, strong) OverflowMenuActionGroup* pageActionsGroup;
@@ -586,6 +588,29 @@
   }
 
   if (UseSymbols()) {
+    // WhatsNew destination.
+    self.whatsNewDestination = [self
+        createOverflowMenuDestination:IDS_IOS_CONTENT_SUGGESTIONS_WHATS_NEW
+                          destination:overflow_menu::Destination::WhatsNew
+                           symbolName:kCheckmarkSealSymbol
+                         systemSymbol:YES
+                      accessibilityID:kToolsMenuWhatsNewId
+                              handler:^{
+                                [weakSelf openWhatsNew];
+                              }];
+  } else {
+    // WhatsNew destination.
+    self.whatsNewDestination = [self
+        createOverflowMenuDestination:IDS_IOS_CONTENT_SUGGESTIONS_WHATS_NEW
+                          destination:overflow_menu::Destination::WhatsNew
+                            imageName:@"overflow_menu_destination_whats_new"
+                      accessibilityID:kToolsMenuWhatsNewId
+                              handler:^{
+                                [weakSelf openWhatsNew];
+                              }];
+  }
+
+  if (UseSymbols()) {
     // Site Info destination.
     self.siteInfoDestination =
         [self createOverflowMenuDestination:IDS_IOS_TOOLS_MENU_SITE_INFORMATION
@@ -933,6 +958,26 @@
   return result;
 }
 
+// Adds What's New to the OverflowMenuDestination to be displayed in the
+// destinations carousel.
+- (NSArray<OverflowMenuDestination*>*)insertWhatsNewToDestinations:
+    (NSArray<OverflowMenuDestination*>*)destinations {
+  NSMutableArray<OverflowMenuDestination*>* newDestinations =
+      [[NSMutableArray alloc] init];
+
+  if (IsWhatsNewOverflowMenuUsed()) {
+    // Place What's New at the bottom of the overflow menu carousel.
+    [newDestinations addObjectsFromArray:destinations];
+    [newDestinations addObject:self.whatsNewDestination];
+    return newDestinations;
+  }
+
+  // Place What's New at the top of the overflow menucarousel.
+  [newDestinations addObject:self.whatsNewDestination];
+  [newDestinations addObjectsFromArray:destinations];
+  return newDestinations;
+}
+
 // Make sure the model to match the current page state.
 - (void)updateModel {
   // If the model hasn't been created, there's no need to update.
@@ -956,6 +1001,13 @@
         generateDestinationsList:baseDestinations];
   }
 
+  // What's New defy the smart sorting rules of the overflow menu to appear
+  // either at the front of the carousel or the back. Thus, What's New is
+  // inserted after smart sorting returns the sorted destinations.
+  if (IsWhatsNewEnabled()) {
+    baseDestinations = [self insertWhatsNewToDestinations:baseDestinations];
+  }
+
   self.overflowMenuModel.destinations = [baseDestinations
       filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(
                                                    id object,
@@ -1635,6 +1687,13 @@
   [self.pageInfoCommandsHandler showPageInfo];
 }
 
+// Dismisses the menu and opens What's New.
+- (void)openWhatsNew {
+  SetWhatsNewOverflowMenuUsed();
+  [self.popupMenuCommandsHandler dismissPopupMenuAnimated:YES];
+  [self.dispatcher showWhatsNew];
+}
+
 // Dismisses the menu and opens settings.
 - (void)openSettings {
   [self.popupMenuCommandsHandler dismissPopupMenuAnimated:YES];
diff --git a/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_mediator_unittest.mm b/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_mediator_unittest.mm
index 65123449..0150d1a0 100644
--- a/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_mediator_unittest.mm
+++ b/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_mediator_unittest.mm
@@ -38,6 +38,7 @@
 #import "ios/chrome/browser/ui/toolbar/test/toolbar_test_navigation_manager.h"
 #import "ios/chrome/browser/ui/ui_feature_flags.h"
 #import "ios/chrome/browser/ui/util/uikit_ui_util.h"
+#import "ios/chrome/browser/ui/whats_new/feature_flags.h"
 #import "ios/chrome/browser/web/font_size/font_size_tab_helper.h"
 #import "ios/chrome/browser/web_state_list/web_state_list.h"
 #import "ios/chrome/browser/web_state_list/web_state_list_observer_bridge.h"
@@ -493,3 +494,47 @@
                                  false);
   EXPECT_TRUE(HasItem(kToolsMenuAddToBookmarks, /*enabled=*/NO));
 }
+
+// Tests that WhatsNew destination was added to the OverflowMenuModel when
+// What's New is enabled.
+TEST_F(OverflowMenuMediatorTest, TestWhatsNewEnabled) {
+  base::test::ScopedFeatureList feature_on;
+  feature_on.InitAndEnableFeature(kWhatsNewIOS);
+
+  const GURL kUrl("https://chromium.test");
+  web_state_->SetCurrentURL(kUrl);
+  CreateBrowserStatePrefs();
+  CreateMediator(/*is_incognito=*/NO);
+  SetUpActiveWebState();
+  mediator_.webStateList = browser_->GetWebStateList();
+  mediator_.webContentAreaOverlayPresenter = OverlayPresenter::FromBrowser(
+      browser_.get(), OverlayModality::kWebContentArea);
+  mediator_.browserStatePrefs = browserStatePrefs_.get();
+
+  // Force creation of the model.
+  [mediator_ overflowMenuModel];
+
+  EXPECT_TRUE(HasItem(kToolsMenuWhatsNewId, /*enabled=*/NO));
+}
+
+// Tests that WhatsNew destination was not added to the OverflowMenuModel when
+// What's New is disabled.
+TEST_F(OverflowMenuMediatorTest, TestWhatsNewDisabled) {
+  base::test::ScopedFeatureList feature_off;
+  feature_off.InitAndDisableFeature(kWhatsNewIOS);
+
+  const GURL kUrl("https://chromium.test");
+  web_state_->SetCurrentURL(kUrl);
+  CreateBrowserStatePrefs();
+  CreateMediator(/*is_incognito=*/NO);
+  SetUpActiveWebState();
+  mediator_.webStateList = browser_->GetWebStateList();
+  mediator_.webContentAreaOverlayPresenter = OverlayPresenter::FromBrowser(
+      browser_.get(), OverlayModality::kWebContentArea);
+  mediator_.browserStatePrefs = browserStatePrefs_.get();
+
+  // Force creation of the model.
+  [mediator_ overflowMenuModel];
+
+  EXPECT_FALSE(HasItem(kToolsMenuWhatsNewId, /*enabled=*/NO));
+}
diff --git a/ios/chrome/browser/ui/popup_menu/overflow_menu/resources/BUILD.gn b/ios/chrome/browser/ui/popup_menu/overflow_menu/resources/BUILD.gn
index 7ce04ef7..ed49a6c 100644
--- a/ios/chrome/browser/ui/popup_menu/overflow_menu/resources/BUILD.gn
+++ b/ios/chrome/browser/ui/popup_menu/overflow_menu/resources/BUILD.gn
@@ -238,6 +238,16 @@
   ]
 }
 
+imageset("overflow_menu_destination_whats_new") {
+  sources = [
+    "overflow_menu_destination_whats_new.imageset/Contents.json",
+    "overflow_menu_destination_whats_new.imageset/overflow_menu_destination_whats_new@2x.png",
+    "overflow_menu_destination_whats_new.imageset/overflow_menu_destination_whats_new@3x.png",
+    "overflow_menu_destination_whats_new.imageset/overflow_menu_destination_whats_new_dark@2x.png",
+    "overflow_menu_destination_whats_new.imageset/overflow_menu_destination_whats_new_dark@3x.png",
+  ]
+}
+
 imageset("overflow_menu_destination_site_info") {
   sources = [
     "overflow_menu_destination_site_info.imageset/Contents.json",
diff --git a/ios/chrome/browser/ui/popup_menu/overflow_menu/resources/overflow_menu_destination_whats_new.imageset/Contents.json b/ios/chrome/browser/ui/popup_menu/overflow_menu/resources/overflow_menu_destination_whats_new.imageset/Contents.json
new file mode 100644
index 0000000..7753d0e
--- /dev/null
+++ b/ios/chrome/browser/ui/popup_menu/overflow_menu/resources/overflow_menu_destination_whats_new.imageset/Contents.json
@@ -0,0 +1,41 @@
+{
+    "images" : [
+      {
+        "idiom" : "universal",
+        "filename" : "overflow_menu_destination_whats_new@2x.png",
+        "scale" : "2x"
+      },
+      {
+        "idiom" : "universal",
+        "filename" : "overflow_menu_destination_whats_new@3x.png",
+        "scale" : "3x"
+      },
+      {
+        "appearances" : [
+          {
+            "appearance" : "luminosity",
+            "value" : "dark"
+          }
+        ],
+        "idiom" : "universal",
+        "filename" : "overflow_menu_destination_whats_new_dark@2x.png",
+        "scale" : "2x"
+      },
+      {
+        "appearances" : [
+          {
+            "appearance" : "luminosity",
+            "value" : "dark"
+          }
+        ],
+        "idiom" : "universal",
+        "filename" : "overflow_menu_destination_whats_new_dark@3x.png",
+        "scale" : "3x"
+      }
+    ],
+    "info" : {
+      "author" : "xcode",
+      "version" : 1
+    }
+  }
+  
\ No newline at end of file
diff --git a/ios/chrome/browser/ui/popup_menu/overflow_menu/resources/overflow_menu_destination_whats_new.imageset/overflow_menu_destination_whats_new@2x.png b/ios/chrome/browser/ui/popup_menu/overflow_menu/resources/overflow_menu_destination_whats_new.imageset/overflow_menu_destination_whats_new@2x.png
new file mode 100644
index 0000000..d6d6b3d
--- /dev/null
+++ b/ios/chrome/browser/ui/popup_menu/overflow_menu/resources/overflow_menu_destination_whats_new.imageset/overflow_menu_destination_whats_new@2x.png
Binary files differ
diff --git a/ios/chrome/browser/ui/popup_menu/overflow_menu/resources/overflow_menu_destination_whats_new.imageset/overflow_menu_destination_whats_new@3x.png b/ios/chrome/browser/ui/popup_menu/overflow_menu/resources/overflow_menu_destination_whats_new.imageset/overflow_menu_destination_whats_new@3x.png
new file mode 100644
index 0000000..2b0323a
--- /dev/null
+++ b/ios/chrome/browser/ui/popup_menu/overflow_menu/resources/overflow_menu_destination_whats_new.imageset/overflow_menu_destination_whats_new@3x.png
Binary files differ
diff --git a/ios/chrome/browser/ui/popup_menu/overflow_menu/resources/overflow_menu_destination_whats_new.imageset/overflow_menu_destination_whats_new_dark@2x.png b/ios/chrome/browser/ui/popup_menu/overflow_menu/resources/overflow_menu_destination_whats_new.imageset/overflow_menu_destination_whats_new_dark@2x.png
new file mode 100644
index 0000000..95c0571
--- /dev/null
+++ b/ios/chrome/browser/ui/popup_menu/overflow_menu/resources/overflow_menu_destination_whats_new.imageset/overflow_menu_destination_whats_new_dark@2x.png
Binary files differ
diff --git a/ios/chrome/browser/ui/popup_menu/overflow_menu/resources/overflow_menu_destination_whats_new.imageset/overflow_menu_destination_whats_new_dark@3x.png b/ios/chrome/browser/ui/popup_menu/overflow_menu/resources/overflow_menu_destination_whats_new.imageset/overflow_menu_destination_whats_new_dark@3x.png
new file mode 100644
index 0000000..5787b5d
--- /dev/null
+++ b/ios/chrome/browser/ui/popup_menu/overflow_menu/resources/overflow_menu_destination_whats_new.imageset/overflow_menu_destination_whats_new_dark@3x.png
Binary files differ
diff --git a/ios/chrome/browser/ui/popup_menu/popup_menu_constants.h b/ios/chrome/browser/ui/popup_menu/popup_menu_constants.h
index 309a02a1..0a4d98e 100644
--- a/ios/chrome/browser/ui/popup_menu/popup_menu_constants.h
+++ b/ios/chrome/browser/ui/popup_menu/popup_menu_constants.h
@@ -92,5 +92,7 @@
 extern NSString* const kToolsMenuClearBrowsingData;
 // Share Chrome accessibility Identifier.
 extern NSString* const kToolsMenuShareChromeId;
+// WhatsNew item accessibility Identifier.
+extern NSString* const kToolsMenuWhatsNewId;
 
 #endif  // IOS_CHROME_BROWSER_UI_POPUP_MENU_POPUP_MENU_CONSTANTS_H_
diff --git a/ios/chrome/browser/ui/popup_menu/popup_menu_constants.mm b/ios/chrome/browser/ui/popup_menu/popup_menu_constants.mm
index a22ef570..5bd267e 100644
--- a/ios/chrome/browser/ui/popup_menu/popup_menu_constants.mm
+++ b/ios/chrome/browser/ui/popup_menu/popup_menu_constants.mm
@@ -57,3 +57,4 @@
 NSString* const kToolsMenuUnfollow = @"kToolsMenuUnfollow";
 NSString* const kToolsMenuClearBrowsingData = @"kToolsMenuClearBrowsingData";
 NSString* const kToolsMenuShareChromeId = @"kToolsMenuShareChromeId";
+NSString* const kToolsMenuWhatsNewId = @"kToolsMenuWhatsNewId";
diff --git a/ios/chrome/browser/ui/settings/password/password_manager_view_controller.mm b/ios/chrome/browser/ui/settings/password/password_manager_view_controller.mm
index 8a4b277..0fdd8a4 100644
--- a/ios/chrome/browser/ui/settings/password/password_manager_view_controller.mm
+++ b/ios/chrome/browser/ui/settings/password/password_manager_view_controller.mm
@@ -1225,6 +1225,12 @@
 #pragma mark - UISearchControllerDelegate
 
 - (void)willPresentSearchController:(UISearchController*)searchController {
+  // This is needed to remove the transparency of the navigation bar at scroll
+  // edge in iOS 15+ to prevent the following UITableViewRowAnimationTop
+  // animations from being visible through the navigation bar.
+  self.navigationController.navigationBar.backgroundColor =
+      [UIColor colorNamed:kGroupedPrimaryBackgroundColor];
+
   _shouldUpdateAfterSearchControllerDismissed = YES;
   [self showScrim];
   // Remove save passwords switch section, password check section and
@@ -1256,6 +1262,10 @@
 }
 
 - (void)willDismissSearchController:(UISearchController*)searchController {
+  // This is needed to restore the transparency of the navigation bar at scroll
+  // edge in iOS 15+.
+  self.navigationController.navigationBar.backgroundColor = nil;
+
   // No need to restore UI if the Password Manager is being dismissed or if a
   // previous call to `willDismissSearchController` already restored the UI.
   if (self.navigationController.isBeingDismissed ||
diff --git a/ios/chrome/browser/ui/settings/password/password_settings/BUILD.gn b/ios/chrome/browser/ui/settings/password/password_settings/BUILD.gn
index bfda6bc..9eff8c7 100644
--- a/ios/chrome/browser/ui/settings/password/password_settings/BUILD.gn
+++ b/ios/chrome/browser/ui/settings/password/password_settings/BUILD.gn
@@ -16,15 +16,20 @@
     ":common",
     ":password_settings_constants",
     ":password_settings_ui",
+    "//components/google/core/common",
     "//components/keyed_service/core",
     "//components/password_manager/core/browser",
     "//components/password_manager/core/common",
     "//components/prefs",
+    "//components/signin/public/identity_manager/objc",
     "//components/strings",
     "//ios/chrome/app/strings",
+    "//ios/chrome/browser/application_context",
     "//ios/chrome/browser/browser_state",
     "//ios/chrome/browser/main:public",
     "//ios/chrome/browser/passwords:store_factory",
+    "//ios/chrome/browser/signin:signin",
+    "//ios/chrome/browser/sync:sync",
     "//ios/chrome/browser/ui/commands",
     "//ios/chrome/browser/ui/coordinators:chrome_coordinators",
     "//ios/chrome/browser/ui/settings/elements:enterprise_info_popover_view_controller",
@@ -32,6 +37,7 @@
     "//ios/chrome/browser/ui/settings/password:password_ui",
     "//ios/chrome/browser/ui/settings/password/passwords_in_other_apps",
     "//ios/chrome/browser/ui/settings/utils",
+    "//ios/chrome/browser/url:constants",
     "//ios/chrome/common/ui/reauthentication",
     "//ui/base",
     "//url",
@@ -81,3 +87,24 @@
     "//ios/chrome/common/ui/reauthentication",
   ]
 }
+
+source_set("unit_tests") {
+  configs += [ "//build/config/compiler:enable_arc" ]
+  testonly = true
+  sources = [ "password_settings_mediator_unittest.mm" ]
+  deps = [
+    ":password_settings",
+    "//base/test:test_support",
+    "//components/password_manager/core/browser:test_support",
+    "//components/signin/public/identity_manager/objc",
+    "//ios/chrome/browser/browser_state:test_support",
+    "//ios/chrome/browser/passwords:store_factory",
+    "//ios/chrome/browser/signin",
+    "//ios/chrome/browser/sync",
+    "//ios/chrome/common/ui/reauthentication",
+    "//ios/web/public/test",
+    "//testing/gmock",
+    "//testing/gtest",
+    "//third_party/ocmock",
+  ]
+}
diff --git a/ios/chrome/browser/ui/settings/password/password_settings/password_settings_coordinator.mm b/ios/chrome/browser/ui/settings/password/password_settings/password_settings_coordinator.mm
index 5d1284d..ac195cd 100644
--- a/ios/chrome/browser/ui/settings/password/password_settings/password_settings_coordinator.mm
+++ b/ios/chrome/browser/ui/settings/password/password_settings/password_settings_coordinator.mm
@@ -6,11 +6,15 @@
 
 #import <UIKit/UIKit.h>
 
+#import "components/google/core/common/google_util.h"
 #import "components/keyed_service/core/service_access_type.h"
 #import "components/strings/grit/components_strings.h"
+#import "ios/chrome/browser/application_context/application_context.h"
 #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
 #import "ios/chrome/browser/main/browser.h"
 #import "ios/chrome/browser/passwords/ios_chrome_password_store_factory.h"
+#import "ios/chrome/browser/signin/identity_manager_factory.h"
+#import "ios/chrome/browser/sync/sync_service_factory.h"
 #import "ios/chrome/browser/ui/commands/application_commands.h"
 #import "ios/chrome/browser/ui/commands/command_dispatcher.h"
 #import "ios/chrome/browser/ui/commands/open_new_tab_command.h"
@@ -24,6 +28,7 @@
 #import "ios/chrome/browser/ui/settings/password/passwords_in_other_apps/passwords_in_other_apps_coordinator.h"
 #import "ios/chrome/browser/ui/settings/settings_navigation_controller.h"
 #import "ios/chrome/browser/ui/settings/utils/settings_utils.h"
+#import "ios/chrome/browser/url/chrome_url_constants.h"
 #import "ios/chrome/common/ui/reauthentication/reauthentication_module.h"
 #import "ios/chrome/grit/ios_chromium_strings.h"
 #import "ios/chrome/grit/ios_strings.h"
@@ -128,6 +133,8 @@
 #pragma mark - ChromeCoordinator
 
 - (void)start {
+  ChromeBrowserState* browserState = self.browser->GetBrowserState();
+
   self.reauthModule =
       ScopedPasswordSettingsReauthModuleOverride::instance
           ? ScopedPasswordSettingsReauthModuleOverride::instance->module
@@ -136,15 +143,17 @@
   _savedPasswordsPresenter =
       std::make_unique<password_manager::SavedPasswordsPresenter>(
           IOSChromePasswordStoreFactory::GetForBrowserState(
-              self.browser->GetBrowserState(),
-              ServiceAccessType::EXPLICIT_ACCESS));
+              browserState, ServiceAccessType::EXPLICIT_ACCESS));
 
   self.mediator = [[PasswordSettingsMediator alloc]
       initWithReauthenticationModule:self.reauthModule
              savedPasswordsPresenter:_savedPasswordsPresenter.get()
                        exportHandler:self
-                         prefService:self.browser->GetBrowserState()
-                                         ->GetPrefs()];
+                         prefService:browserState->GetPrefs()
+                     identityManager:IdentityManagerFactory::GetForBrowserState(
+                                         browserState)
+                         syncService:SyncServiceFactory::GetForBrowserState(
+                                         browserState)];
 
   self.dispatcher = static_cast<id<ApplicationCommands>>(
       self.browser->GetCommandDispatcher());
@@ -262,6 +271,18 @@
   [self.passwordsInOtherAppsCoordinator start];
 }
 
+- (void)showOnDeviceEncryptionSetUp {
+  GURL url = google_util::AppendGoogleLocaleParam(
+      GURL(kOnDeviceEncryptionOptInURL),
+      GetApplicationContext()->GetApplicationLocale());
+  BlockToOpenURL(self.passwordSettingsViewController, self.dispatcher)(url);
+}
+
+- (void)showOnDeviceEncryptionHelp {
+  GURL url = GURL(kOnDeviceEncryptionLearnMoreURL);
+  BlockToOpenURL(self.passwordSettingsViewController, self.dispatcher)(url);
+}
+
 #pragma mark - PopoverLabelViewControllerDelegate
 
 - (void)didTapLinkURL:(NSURL*)URL {
diff --git a/ios/chrome/browser/ui/settings/password/password_settings/password_settings_mediator.h b/ios/chrome/browser/ui/settings/password/password_settings/password_settings_mediator.h
index 5ce7e996..1ce29c12 100644
--- a/ios/chrome/browser/ui/settings/password/password_settings/password_settings_mediator.h
+++ b/ios/chrome/browser/ui/settings/password/password_settings/password_settings_mediator.h
@@ -12,6 +12,14 @@
 #import "ios/chrome/browser/ui/settings/password/password_settings/password_settings_consumer.h"
 #import "ios/chrome/browser/ui/settings/password/password_settings/password_settings_delegate.h"
 
+namespace signin {
+class IdentityManager;
+}
+
+namespace syncer {
+class SyncService;
+}
+
 @protocol ReauthenticationProtocol;
 
 // Mediator for the Password Settings screen.
@@ -32,6 +40,9 @@
                    passwordPresenter
                      exportHandler:(id<PasswordExportHandler>)exportHandler
                        prefService:(raw_ptr<PrefService>)prefService
+                   identityManager:
+                       (raw_ptr<signin::IdentityManager>)identityManager
+                       syncService:(raw_ptr<syncer::SyncService>)syncService
     NS_DESIGNATED_INITIALIZER;
 
 - (instancetype)init NS_UNAVAILABLE;
diff --git a/ios/chrome/browser/ui/settings/password/password_settings/password_settings_mediator.mm b/ios/chrome/browser/ui/settings/password/password_settings/password_settings_mediator.mm
index 77c2636a..2423fe9 100644
--- a/ios/chrome/browser/ui/settings/password/password_settings/password_settings_mediator.mm
+++ b/ios/chrome/browser/ui/settings/password/password_settings/password_settings_mediator.mm
@@ -9,6 +9,11 @@
 #import "components/password_manager/core/browser/ui/credential_ui_entry.h"
 #import "components/password_manager/core/common/password_manager_pref_names.h"
 #import "components/prefs/pref_service.h"
+#import "components/signin/public/identity_manager/objc/identity_manager_observer_bridge.h"
+#import "components/sync/base/passphrase_enums.h"
+#import "components/sync/driver/sync_service_utils.h"
+#import "components/sync/driver/sync_user_settings.h"
+#import "ios/chrome/browser/sync/sync_observer_bridge.h"
 #import "ios/chrome/browser/ui/settings/password/password_exporter.h"
 #import "ios/chrome/browser/ui/settings/password/saved_passwords_presenter_observer.h"
 #import "ios/chrome/browser/ui/settings/utils/observable_boolean.h"
@@ -23,9 +28,11 @@
 using password_manager::prefs::kCredentialsEnableService;
 
 @interface PasswordSettingsMediator () <BooleanObserver,
+                                        IdentityManagerObserverBridgeDelegate,
                                         PasswordAutoFillStatusObserver,
                                         PasswordExporterDelegate,
-                                        SavedPasswordsPresenterObserver> {
+                                        SavedPasswordsPresenterObserver,
+                                        SyncObserverModelBridge> {
   // A helper object for passing data about saved passwords from a finished
   // password store request to the PasswordManagerViewController.
   std::unique_ptr<SavedPasswordsPresenterObserverBridge>
@@ -44,6 +51,16 @@
   // Provides status of Chrome as iOS AutoFill credential provider (i.e.,
   // whether or not Chrome passwords can currently be used in other apps).
   PasswordAutoFillStatusManager* _passwordAutoFillStatusManager;
+
+  // IdentityManager observer.
+  std::unique_ptr<signin::IdentityManagerObserverBridge>
+      _identityManagerObserver;
+
+  // Service providing information about sync status.
+  raw_ptr<syncer::SyncService> _syncService;
+
+  // Sync observer.
+  std::unique_ptr<SyncObserverBridge> _syncObserver;
 }
 
 // Helper object which maintains state about the "Export Passwords..." flow, and
@@ -69,7 +86,10 @@
                (raw_ptr<password_manager::SavedPasswordsPresenter>)
                    passwordPresenter
                      exportHandler:(id<PasswordExportHandler>)exportHandler
-                       prefService:(raw_ptr<PrefService>)prefService {
+                       prefService:(raw_ptr<PrefService>)prefService
+                   identityManager:
+                       (raw_ptr<signin::IdentityManager>)identityManager
+                       syncService:(raw_ptr<syncer::SyncService>)syncService {
   self = [super init];
   if (self) {
     _passwordExporter =
@@ -89,6 +109,11 @@
     _passwordAutoFillStatusManager =
         [PasswordAutoFillStatusManager sharedManager];
     [_passwordAutoFillStatusManager addObserver:self];
+    _identityManagerObserver =
+        std::make_unique<signin::IdentityManagerObserverBridge>(identityManager,
+                                                                self);
+    _syncService = syncService;
+    _syncObserver = std::make_unique<SyncObserverBridge>(self, syncService);
   }
   return self;
 }
@@ -111,10 +136,7 @@
 
   [self passwordAutoFillStatusDidChange];
 
-  // TODO(crbug.com/1335156): Read the actual state and push to the consumer;
-  // this is placeholder behavior.
-  [self.consumer setOnDeviceEncryptionState:
-                     PasswordSettingsOnDeviceEncryptionStateOptedIn];
+  [self.consumer setOnDeviceEncryptionState:[self onDeviceEncryptionState]];
 }
 
 - (void)userDidStartExportFlow {
@@ -142,7 +164,11 @@
   DCHECK(_savedPasswordsPresenter);
   DCHECK(_passwordsPresenterObserver);
   _savedPasswordsPresenter->RemoveObserver(_passwordsPresenterObserver.get());
+  _passwordsPresenterObserver.reset();
   [[PasswordAutoFillStatusManager sharedManager] removeObserver:self];
+  [_passwordManagerEnabled stop];
+  _identityManagerObserver.reset();
+  _syncObserver.reset();
 }
 
 #pragma mark - PasswordExporterDelegate
@@ -204,8 +230,33 @@
   }
 }
 
+#pragma mark - IdentityManagerObserverBridgeDelegate
+
+- (void)onPrimaryAccountChanged:
+    (const signin::PrimaryAccountChangeEvent&)event {
+  [self.consumer setOnDeviceEncryptionState:[self onDeviceEncryptionState]];
+}
+
+#pragma mark - SyncObserverModelBridge
+
+- (void)onSyncStateChanged {
+  [self.consumer setOnDeviceEncryptionState:[self onDeviceEncryptionState]];
+}
+
 #pragma mark - Private
 
+// Returns the on-device encryption state according to the sync service.
+- (PasswordSettingsOnDeviceEncryptionState)onDeviceEncryptionState {
+  if (ShouldOfferTrustedVaultOptIn(_syncService)) {
+    return PasswordSettingsOnDeviceEncryptionStateOfferOptIn;
+  }
+  if (_syncService->GetUserSettings()->GetPassphraseType() ==
+      syncer::PassphraseType::kTrustedVaultPassphrase) {
+    return PasswordSettingsOnDeviceEncryptionStateOptedIn;
+  }
+  return PasswordSettingsOnDeviceEncryptionStateNotShown;
+}
+
 // Pushes the current state of the exporter to the consumer and updates its
 // export passwords button.
 - (void)pushExportStateToConsumerAndUpdate {
diff --git a/ios/chrome/browser/ui/settings/password/password_settings/password_settings_mediator_unittest.mm b/ios/chrome/browser/ui/settings/password/password_settings/password_settings_mediator_unittest.mm
new file mode 100644
index 0000000..966267ca
--- /dev/null
+++ b/ios/chrome/browser/ui/settings/password/password_settings/password_settings_mediator_unittest.mm
@@ -0,0 +1,156 @@
+// Copyright 2022 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/ui/settings/password/password_settings/password_settings_mediator.h"
+
+#import "base/test/scoped_feature_list.h"
+#import "base/test/task_environment.h"
+#import "components/password_manager/core/browser/password_manager_test_utils.h"
+#import "components/password_manager/core/browser/test_password_store.h"
+#import "components/password_manager/core/browser/ui/saved_passwords_presenter.h"
+#import "components/signin/public/identity_manager/objc/identity_manager_observer_bridge.h"
+#import "components/sync/base/features.h"
+#import "components/sync/base/model_type.h"
+#import "components/sync/base/passphrase_enums.h"
+#import "components/sync/test/mock_sync_service.h"
+#import "ios/chrome/browser/browser_state/test_chrome_browser_state.h"
+#import "ios/chrome/browser/passwords/ios_chrome_password_store_factory.h"
+#import "ios/chrome/browser/signin/identity_manager_factory.h"
+#import "ios/chrome/browser/sync/sync_observer_bridge.h"
+#import "ios/chrome/browser/sync/sync_service_factory.h"
+#import "ios/chrome/common/ui/reauthentication/reauthentication_protocol.h"
+#import "ios/web/public/test/web_task_environment.h"
+#import "testing/gmock/include/gmock/gmock.h"
+#import "testing/gtest/include/gtest/gtest.h"
+#import "testing/gtest_mac.h"
+#import "testing/platform_test.h"
+#import "third_party/ocmock/OCMock/OCMock.h"
+
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
+using password_manager::SavedPasswordsPresenter;
+using password_manager::TestPasswordStore;
+
+using SyncServiceForPasswordTests = testing::NiceMock<syncer::MockSyncService>;
+
+// Sets up the provided mock sync service to respond with the given passphrase
+// type and transport active/disabled state.
+void SetSyncStatus(SyncServiceForPasswordTests* sync_service,
+                   syncer::PassphraseType passphrase_type,
+                   bool sync_transport_active = true) {
+  ON_CALL(*sync_service, GetTransportState())
+      .WillByDefault(
+          testing::Return(sync_transport_active
+                              ? syncer::SyncService::TransportState::ACTIVE
+                              : syncer::SyncService::TransportState::DISABLED));
+  ON_CALL(*sync_service, GetActiveDataTypes())
+      .WillByDefault(testing::Return(syncer::ModelTypeSet(syncer::PASSWORDS)));
+  ON_CALL(*(sync_service->GetMockUserSettings()), GetEncryptedDataTypes())
+      .WillByDefault(testing::Return(syncer::ModelTypeSet(syncer::PASSWORDS)));
+  ON_CALL(*(sync_service->GetMockUserSettings()), GetPassphraseType())
+      .WillByDefault(testing::Return(passphrase_type));
+}
+
+// Sets up a password store factory for testing, and returns the test store.
+scoped_refptr<TestPasswordStore> CreateAndUseTestPasswordStore(
+    ChromeBrowserState* browser_state) {
+  return base::WrapRefCounted(static_cast<password_manager::TestPasswordStore*>(
+      IOSChromePasswordStoreFactory::GetInstance()
+          ->SetTestingFactoryAndUse(
+              browser_state,
+              base::BindRepeating(&password_manager::BuildPasswordStore<
+                                  web::BrowserState, TestPasswordStore>))
+          .get()));
+}
+
+class PasswordSettingsMediatorTest : public PlatformTest {
+ protected:
+  void SetUp() override {
+    TestChromeBrowserState::Builder builder;
+    browser_state_ = builder.Build();
+
+    store_ = CreateAndUseTestPasswordStore(browser_state_.get());
+    presenter_ = std::make_unique<SavedPasswordsPresenter>(store_);
+
+    mediator_ = [[PasswordSettingsMediator alloc]
+        initWithReauthenticationModule:reauth_module_
+               savedPasswordsPresenter:presenter_.get()
+                         exportHandler:export_handler_
+                           prefService:browser_state_->GetPrefs()
+                       identityManager:IdentityManagerFactory::
+                                           GetForBrowserState(
+                                               browser_state_.get())
+                           syncService:&sync_service_];
+    mediator_.consumer = consumer_;
+  }
+
+  void TearDown() override { [mediator_ disconnect]; }
+
+  web::WebTaskEnvironment task_env_;
+  SyncServiceForPasswordTests sync_service_;
+  scoped_refptr<TestPasswordStore> store_;
+  std::unique_ptr<SavedPasswordsPresenter> presenter_;
+  std::unique_ptr<TestChromeBrowserState> browser_state_;
+  id consumer_ = OCMProtocolMock(@protocol(PasswordSettingsConsumer));
+  id export_handler_ = OCMProtocolMock(@protocol(PasswordExportHandler));
+  id reauth_module_ = OCMProtocolMock(@protocol(ReauthenticationProtocol));
+  PasswordSettingsMediator* mediator_;
+};
+
+TEST_F(PasswordSettingsMediatorTest,
+       SyncChangeTriggersChangeOnDeviceEncryption) {
+  base::test::ScopedFeatureList scoped_feature_list;
+  scoped_feature_list.InitWithFeatures(
+      {syncer::kSyncTrustedVaultPassphraseRecovery,
+       syncer::kSyncTrustedVaultPassphrasePromo},
+      {});
+
+  // This was populated when the consumer was initially set.
+  [[consumer_ verify] setOnDeviceEncryptionState:
+                          PasswordSettingsOnDeviceEncryptionStateNotShown];
+
+  ASSERT_TRUE(
+      [mediator_ conformsToProtocol:@protocol(SyncObserverModelBridge)]);
+  PasswordSettingsMediator<SyncObserverModelBridge>* syncObserver =
+      static_cast<PasswordSettingsMediator<SyncObserverModelBridge>*>(
+          mediator_);
+
+  // Set the passphrase type to "Keystore," indicating that we are not yet
+  // using on-device encryption.
+  SetSyncStatus(&sync_service_, syncer::PassphraseType::kKeystorePassphrase);
+  [syncObserver onSyncStateChanged];
+  [[consumer_ verify] setOnDeviceEncryptionState:
+                          PasswordSettingsOnDeviceEncryptionStateOfferOptIn];
+
+  // Set the passphrase type to "Trusted Vault," meaning on-device encryption is
+  // already enabled.
+  SetSyncStatus(&sync_service_,
+                syncer::PassphraseType::kTrustedVaultPassphrase);
+  [syncObserver onSyncStateChanged];
+  [[consumer_ verify] setOnDeviceEncryptionState:
+                          PasswordSettingsOnDeviceEncryptionStateOptedIn];
+
+  // Turn sync trasnport off.
+  SetSyncStatus(&sync_service_, syncer::PassphraseType::kKeystorePassphrase,
+                /* sync_transport_active= */ false);
+  [syncObserver onSyncStateChanged];
+  [[consumer_ verify] setOnDeviceEncryptionState:
+                          PasswordSettingsOnDeviceEncryptionStateNotShown];
+}
+
+TEST_F(PasswordSettingsMediatorTest,
+       IdentityChangeTriggersChangeOnDeviceEncryption) {
+  ASSERT_TRUE(
+      [mediator_ conformsToProtocol:@protocol(SyncObserverModelBridge)]);
+  PasswordSettingsMediator<IdentityManagerObserverBridgeDelegate>*
+      syncObserver = static_cast<
+          PasswordSettingsMediator<IdentityManagerObserverBridgeDelegate>*>(
+          mediator_);
+  const signin::PrimaryAccountChangeEvent event;
+  [syncObserver onPrimaryAccountChanged:event];
+  [[consumer_ verify] setOnDeviceEncryptionState:
+                          PasswordSettingsOnDeviceEncryptionStateNotShown];
+}
diff --git a/ios/chrome/browser/ui/settings/password/password_settings/password_settings_view_controller.h b/ios/chrome/browser/ui/settings/password/password_settings/password_settings_view_controller.h
index 4ad8004..8fb7148 100644
--- a/ios/chrome/browser/ui/settings/password/password_settings/password_settings_view_controller.h
+++ b/ios/chrome/browser/ui/settings/password/password_settings/password_settings_view_controller.h
@@ -27,6 +27,13 @@
 // menu item, requesting information about the state and usage of this feature.
 - (void)showPasswordsInOtherAppsScreen;
 
+// Method invoked when the user has requested to set up on-device encryption.
+- (void)showOnDeviceEncryptionSetUp;
+
+// Method invoked when the user has tapped "Learn More" about on-device
+// encryption.
+- (void)showOnDeviceEncryptionHelp;
+
 @end
 
 // ViewController used to present settings and infrequently-used actions
diff --git a/ios/chrome/browser/ui/settings/password/password_settings/password_settings_view_controller.mm b/ios/chrome/browser/ui/settings/password/password_settings/password_settings_view_controller.mm
index 7f8cb78e..9689696 100644
--- a/ios/chrome/browser/ui/settings/password/password_settings/password_settings_view_controller.mm
+++ b/ios/chrome/browser/ui/settings/password/password_settings/password_settings_view_controller.mm
@@ -243,11 +243,11 @@
       break;
     }
     case ItemTypeOnDeviceEncryptionSetUp: {
-      // TODO(crbug.com/1335156): Trigger setup.
+      [self.presentationDelegate showOnDeviceEncryptionSetUp];
       break;
     }
     case ItemTypeOnDeviceEncryptionOptedInLearnMore: {
-      // TODO(crbug.com/1335156): Open appropriate URL.
+      [self.presentationDelegate showOnDeviceEncryptionHelp];
       break;
     }
     case ItemTypeOnDeviceEncryptionOptedInDescription:
@@ -541,6 +541,10 @@
 // state of `isSavePasswordEnabled`.
 - (void)updateSavePasswordsSwitch {
   self.savePasswordsItem.on = self.isSavePasswordsEnabled;
+
+  if (self.modelLoadStatus != ModelLoadComplete) {
+    return;
+  }
   [self reconfigureCellsForItems:@[ self.savePasswordsItem ]];
 }
 
@@ -552,6 +556,10 @@
         _passwordsInOtherAppsEnabled.value()
             ? l10n_util::GetNSString(IDS_IOS_SETTING_ON)
             : l10n_util::GetNSString(IDS_IOS_SETTING_OFF);
+
+    if (self.modelLoadStatus != ModelLoadComplete) {
+      return;
+    }
     [self reloadCellsForItems:@[ self.passwordsInOtherAppsItem ]
              withRowAnimation:UITableViewRowAnimationNone];
   }
diff --git a/ios/chrome/browser/ui/whats_new/BUILD.gn b/ios/chrome/browser/ui/whats_new/BUILD.gn
index f5da009..0ba60ea 100644
--- a/ios/chrome/browser/ui/whats_new/BUILD.gn
+++ b/ios/chrome/browser/ui/whats_new/BUILD.gn
@@ -11,13 +11,17 @@
     "whats_new_detail_view_controller.mm",
     "whats_new_mediator.h",
     "whats_new_mediator.mm",
+    "whats_new_mediator_consumer.h",
     "whats_new_primary_action_handler.h",
+    "whats_new_table_view_action_handler.h",
     "whats_new_table_view_controller.h",
     "whats_new_table_view_controller.mm",
   ]
   deps = [
+    ":feature_flags",
     "//ios/chrome/app/strings",
     "//ios/chrome/browser/ui/coordinators:chrome_coordinators",
+    "//ios/chrome/browser/ui/default_promo:utils",
     "//ios/chrome/browser/ui/elements",
     "//ios/chrome/browser/ui/table_view",
     "//ios/chrome/browser/ui/table_view:utils",
@@ -27,6 +31,7 @@
     "//ios/chrome/common/ui/elements",
     "//ios/chrome/common/ui/util",
     "//ui/base",
+    "//ui/strings",
   ]
   frameworks = [ "UIKit.framework" ]
 }
@@ -39,3 +44,16 @@
   ]
   deps = [ "//base" ]
 }
+
+source_set("util") {
+  configs += [ "//build/config/compiler:enable_arc" ]
+  sources = [
+    "whats_new_util.h",
+    "whats_new_util.mm",
+  ]
+  deps = [
+    ":feature_flags",
+    "//base",
+    "//ios/chrome/browser/ui:feature_flags",
+  ]
+}
diff --git a/ios/chrome/browser/ui/whats_new/data_source/resources/whats_new_entries.plist b/ios/chrome/browser/ui/whats_new/data_source/resources/whats_new_entries.plist
index 4f265d9f..36cc1e6 100644
--- a/ios/chrome/browser/ui/whats_new/data_source/resources/whats_new_entries.plist
+++ b/ios/chrome/browser/ui/whats_new/data_source/resources/whats_new_entries.plist
@@ -43,7 +43,7 @@
             <string>default_browser_screen_banner</string>
             <key>IconImageName</key>
             <string>ellipsis</string>
-            <key>icon_background_color</key>
+            <key>IconBackgroundColor</key>
             <string>blue</string>
             <key>IsSymbol</key>
             <true/>
@@ -70,8 +70,8 @@
             <string>default_browser_screen_banner</string>
             <key>IconImageName</key>
             <string>square.and.arrow.up</string>
-            <key>icon_background_color</key>
-            <string>Pink</string>
+            <key>IconBackgroundColor</key>
+            <string>pink</string>
             <key>IsSymbol</key>
             <true/>
             <key>InstructionSteps</key>
@@ -98,7 +98,7 @@
             <string>default_browser_screen_banner</string>
             <key>IconImageName</key>
             <string>password_key</string>
-            <key>icon_background_color</key>
+            <key>IconBackgroundColor</key>
             <string>yellow</string>
             <key>IsSymbol</key>
             <false/>
@@ -129,7 +129,7 @@
             <string>default_browser_screen_banner</string>
             <key>IconImageName</key>
             <string>fullcolor_branding_icon</string>
-            <key>icon_background_color</key>
+            <key>IconBackgroundColor</key>
             <string>white</string>
             <key>IsSymbol</key>
             <false/>
@@ -157,7 +157,7 @@
             <string>default_browser_screen_banner</string>
             <key>IconImageName</key>
             <string>password_key</string>
-            <key>icon_background_color</key>
+            <key>IconBackgroundColor</key>
             <string>yellow</string>
             <key>IsSymbol</key>
             <false/>
@@ -184,7 +184,7 @@
             <string>default_browser_screen_banner</string>
             <key>IconImageName</key>
             <string>pencil.and.ellipsis.rectangle</string>
-            <key>icon_background_color</key>
+            <key>IconBackgroundColor</key>
             <string>blue</string>
             <key>IsSymbol</key>
             <true/>
diff --git a/ios/chrome/browser/ui/whats_new/feature_flags.h b/ios/chrome/browser/ui/whats_new/feature_flags.h
index 7720ab9a..309f2f0 100644
--- a/ios/chrome/browser/ui/whats_new/feature_flags.h
+++ b/ios/chrome/browser/ui/whats_new/feature_flags.h
@@ -10,4 +10,8 @@
 // Feature to enable What's New feature.
 BASE_DECLARE_FEATURE(kWhatsNewIOS);
 
+extern const char kWhatsNewModuleBasedLayoutParam[];
+
+bool IsWhatsNewModuleBasedLayout();
+
 #endif  // IOS_CHROME_BROWSER_UI_WHATS_NEW_FEATURE_FLAGS_H_
diff --git a/ios/chrome/browser/ui/whats_new/feature_flags.mm b/ios/chrome/browser/ui/whats_new/feature_flags.mm
index b429eca7..16a38a7 100644
--- a/ios/chrome/browser/ui/whats_new/feature_flags.mm
+++ b/ios/chrome/browser/ui/whats_new/feature_flags.mm
@@ -3,9 +3,17 @@
 // found in the LICENSE file.
 
 #import "ios/chrome/browser/ui/whats_new/feature_flags.h"
+#import "base/metrics/field_trial_params.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
 #endif
 
-BASE_FEATURE(kWhatsNewIOS, "WhatsNewIOS", base::FEATURE_DISABLED_BY_DEFAULT);
\ No newline at end of file
+BASE_FEATURE(kWhatsNewIOS, "WhatsNewIOS", base::FEATURE_DISABLED_BY_DEFAULT);
+
+const char kWhatsNewModuleBasedLayoutParam[] = "whats_new_module_based_layout";
+
+bool IsWhatsNewModuleBasedLayout() {
+  return base::GetFieldTrialParamByFeatureAsBool(
+      kWhatsNewIOS, kWhatsNewModuleBasedLayoutParam, true);
+}
diff --git a/ios/chrome/browser/ui/whats_new/whats_new_coordinator.mm b/ios/chrome/browser/ui/whats_new/whats_new_coordinator.mm
index 4a70daf..ba013f42 100644
--- a/ios/chrome/browser/ui/whats_new/whats_new_coordinator.mm
+++ b/ios/chrome/browser/ui/whats_new/whats_new_coordinator.mm
@@ -3,15 +3,31 @@
 // found in the LICENSE file.
 
 #import "ios/chrome/browser/ui/whats_new/whats_new_coordinator.h"
+
+#import "ios/chrome/browser/ui/table_view/table_view_navigation_controller.h"
 #import "ios/chrome/browser/ui/whats_new/whats_new_mediator.h"
+#import "ios/chrome/browser/ui/whats_new/whats_new_table_view_controller.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
 #endif
 
+namespace {
+
+NSString* const kTableViewNavigationDismissButtonId =
+    @"kWhatsNewTableViewNavigationDismissButtonId";
+
+}  // namespace
+
 @interface WhatsNewCoordinator ()
 
+// The mediator to display What's New data.
 @property(nonatomic, strong) WhatsNewMediator* mediator;
+// The navigation controller displaying WhatsNewTableViewController.
+@property(nonatomic, strong)
+    TableViewNavigationController* navigationController;
+// The view controller used to display the What's New features and chrome tips.
+@property(nonatomic, strong) WhatsNewTableViewController* tableViewController;
 
 @end
 
@@ -20,8 +36,23 @@
 #pragma mark - ChromeCoordinator
 
 - (void)start {
-  [super start];
   self.mediator = [[WhatsNewMediator alloc] init];
+  self.tableViewController = [[WhatsNewTableViewController alloc] init];
+  self.tableViewController.navigationItem.rightBarButtonItem =
+      [self dismissButton];
+
+  self.tableViewController.delegate = self.mediator;
+  self.mediator.consumer = self.tableViewController;
+
+  [self.tableViewController reloadData];
+
+  self.navigationController = [[TableViewNavigationController alloc]
+      initWithTable:self.tableViewController];
+  [self.baseViewController presentViewController:self.navigationController
+                                        animated:YES
+                                      completion:nil];
+
+  [super start];
 }
 
 - (void)stop {
@@ -29,4 +60,25 @@
   [super stop];
 }
 
+#pragma mark Private
+
+- (UIBarButtonItem*)dismissButton {
+  UIBarButtonItem* button = [[UIBarButtonItem alloc]
+      initWithBarButtonSystemItem:UIBarButtonSystemItemDone
+                           target:self
+                           action:@selector(dismissButtonTapped)];
+  [button setAccessibilityIdentifier:kTableViewNavigationDismissButtonId];
+  return button;
+}
+
+- (void)dismissButtonTapped {
+  [self.navigationController.presentingViewController
+      dismissViewControllerAnimated:YES
+                         completion:nil];
+  self.tableViewController = nil;
+  self.navigationController = nil;
+
+  [self stop];
+}
+
 @end
diff --git a/ios/chrome/browser/ui/whats_new/whats_new_detail_view_controller.h b/ios/chrome/browser/ui/whats_new/whats_new_detail_view_controller.h
index 2f4b839..b9764330 100644
--- a/ios/chrome/browser/ui/whats_new/whats_new_detail_view_controller.h
+++ b/ios/chrome/browser/ui/whats_new/whats_new_detail_view_controller.h
@@ -17,7 +17,7 @@
                          title:(NSString*)title
                       subtitle:(NSString*)subtitle
             primaryActionTitle:(NSString*)primaryAction
-              instructionSteps:(NSMutableArray<NSString*>*)instructionSteps
+              instructionSteps:(NSArray<NSString*>*)instructionSteps
               hasPrimaryAction:(BOOL)hasPrimaryAction NS_DESIGNATED_INITIALIZER;
 
 - (instancetype)initWithNibName:(NSString*)nibNameOrNil
diff --git a/ios/chrome/browser/ui/whats_new/whats_new_detail_view_controller.mm b/ios/chrome/browser/ui/whats_new/whats_new_detail_view_controller.mm
index b2423762..fa8111ee6 100644
--- a/ios/chrome/browser/ui/whats_new/whats_new_detail_view_controller.mm
+++ b/ios/chrome/browser/ui/whats_new/whats_new_detail_view_controller.mm
@@ -55,7 +55,7 @@
 @property(nonatomic, copy) NSString* titleText;
 @property(nonatomic, copy) NSString* subtitleText;
 @property(nonatomic, copy) NSString* primaryActionString;
-@property(nonatomic, copy) NSMutableArray<NSString*>* instructionSteps;
+@property(nonatomic, copy) NSArray<NSString*>* instructionSteps;
 @property(nonatomic, assign) BOOL hasPrimaryAction;
 
 // The navigation bar at the top of the view.
@@ -69,7 +69,7 @@
                          title:(NSString*)title
                       subtitle:(NSString*)subtitle
             primaryActionTitle:(NSString*)primaryAction
-              instructionSteps:(NSMutableArray<NSString*>*)instructionSteps
+              instructionSteps:(NSArray<NSString*>*)instructionSteps
               hasPrimaryAction:(BOOL)hasPrimaryAction {
   self = [super initWithNibName:nil bundle:nil];
   if (self) {
diff --git a/ios/chrome/browser/ui/whats_new/whats_new_mediator.h b/ios/chrome/browser/ui/whats_new/whats_new_mediator.h
index 8d86583..74b827fb 100644
--- a/ios/chrome/browser/ui/whats_new/whats_new_mediator.h
+++ b/ios/chrome/browser/ui/whats_new/whats_new_mediator.h
@@ -6,18 +6,18 @@
 #define IOS_CHROME_BROWSER_UI_WHATS_NEW_WHATS_NEW_MEDIATOR_H_
 
 #import "ios/chrome/browser/ui/whats_new/data_source/whats_new_item.h"
+#import "ios/chrome/browser/ui/whats_new/whats_new_mediator_consumer.h"
 #import "ios/chrome/browser/ui/whats_new/whats_new_primary_action_handler.h"
+#import "ios/chrome/browser/ui/whats_new/whats_new_table_view_action_handler.h"
 
 // Mediator between the Model and the UI.
 // What's New mediator between `WhatsNewModel` and the view layers
 // `WhatsNewTableViewController` and `WhatsNewDetailViewController`.
-@interface WhatsNewMediator : NSObject <WhatsNewPrimaryActionHandler>
+@interface WhatsNewMediator
+    : NSObject <WhatsNewPrimaryActionHandler, WhatsNewTableViewActionHandler>
 
-// Array of Features `WhatsNewItem`.
-@property(nonatomic, readonly) NSArray<WhatsNewItem*>* whatsNewFeatureEntries;
-
-// Array of Chrome Tips `WhatsNewItem`.
-@property(nonatomic, readonly) NSArray<WhatsNewItem*>* whatsNewChromeTipEntries;
+// The delegate object that manages interactions with What's New table view.
+@property(nonatomic, weak) id<WhatsNewMediatorConsumer> consumer;
 
 @end
 
diff --git a/ios/chrome/browser/ui/whats_new/whats_new_mediator.mm b/ios/chrome/browser/ui/whats_new/whats_new_mediator.mm
index 6f029add6..7f4a8f4 100644
--- a/ios/chrome/browser/ui/whats_new/whats_new_mediator.mm
+++ b/ios/chrome/browser/ui/whats_new/whats_new_mediator.mm
@@ -4,23 +4,62 @@
 
 #import "ios/chrome/browser/ui/whats_new/whats_new_mediator.h"
 
+#import "base/metrics/user_metrics.h"
 #import "base/notreached.h"
+#import "ios/chrome/browser/ui/default_promo/default_browser_utils.h"
 #import "ios/chrome/browser/ui/whats_new/data_source/whats_new_data_source.h"
+#import "ios/chrome/browser/ui/whats_new/feature_flags.h"
+#import "ios/chrome/browser/ui/whats_new/whats_new_mediator_consumer.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
 #endif
 
+namespace {
+// The highlighted feature type.
+WhatsNewType kHighlightedFeature = WhatsNewType::kSearchTabs;
+}  // namespace
+
+@interface WhatsNewMediator ()
+
+@property(nonatomic, strong) WhatsNewItem* highlightedFeatureEntry;
+@property(nonatomic, strong) NSMutableArray<WhatsNewItem*>* featureShortEntries;
+@property(nonatomic, strong) NSMutableArray<WhatsNewItem*>* chromeTipEntries;
+@property(nonatomic, strong) WhatsNewItem* useChromeByDefaultEntry;
+
+@end
+
+// The mediator to display What's New data.
 @implementation WhatsNewMediator
 
 #pragma mark - Public
 
-- (NSArray<WhatsNewItem*>*)whatsNewChromeTipEntries {
-  return WhatsNewChromeTipEntries(WhatsNewFilePath());
-}
+- (instancetype)init {
+  self = [super init];
+  if (self) {
+    // Serialize What's New Features
+    self.featureShortEntries = [[NSMutableArray alloc] init];
+    for (WhatsNewItem* item in WhatsNewFeatureEntries(WhatsNewFilePath())) {
+      // Save the highlighted feature entry separately.
+      if (item.type == kHighlightedFeature) {
+        self.highlightedFeatureEntry = item;
+        continue;
+      }
+      [self.featureShortEntries addObject:item];
+    }
 
-- (NSArray<WhatsNewItem*>*)whatsNewFeatureEntries {
-  return WhatsNewFeatureEntries(WhatsNewFilePath());
+    // Serialize What's New Chrome Tips
+    self.chromeTipEntries = [[NSMutableArray alloc] init];
+    for (WhatsNewItem* item in WhatsNewChromeTipEntries(WhatsNewFilePath())) {
+      // Save use chrome by default entry separately.
+      if (item.type == WhatsNewType::kUseChromeByDefault) {
+        self.useChromeByDefaultEntry = item;
+        continue;
+      }
+      [self.chromeTipEntries addObject:item];
+    }
+  }
+  return self;
 }
 
 #pragma mark - WhatsNewPrimaryActionHandler
@@ -42,8 +81,79 @@
   };
 }
 
+#pragma mark - WhatsNewTableViewActionHandler
+
+- (void)recordWhatsNewInteraction:(WhatsNewItem*)item {
+  switch (item.type) {
+    case WhatsNewType::kSearchTabs:
+      base::RecordAction(base::UserMetricsAction("WhatsNew.SearchTabs"));
+      break;
+    case WhatsNewType::kNewOverflowMenu:
+      base::RecordAction(base::UserMetricsAction("WhatsNew.NewOverflowMenu"));
+      break;
+    case WhatsNewType::kSharedHighlighting:
+      base::RecordAction(
+          base::UserMetricsAction("WhatsNew.SharedHighlighting"));
+      break;
+    case WhatsNewType::kAddPasswordManually:
+      base::RecordAction(
+          base::UserMetricsAction("WhatsNew.AddPasswordManually"));
+      break;
+    case WhatsNewType::kUseChromeByDefault:
+      base::RecordAction(
+          base::UserMetricsAction("WhatsNew.UseChromeByDefault"));
+      break;
+    case WhatsNewType::kPasswordsInOtherApps:
+      base::RecordAction(
+          base::UserMetricsAction("WhatsNew.PasswordsInOtherApps"));
+      break;
+    case WhatsNewType::kAutofill:
+      base::RecordAction(base::UserMetricsAction("WhatsNew.Autofill"));
+      break;
+    default:
+      NOTREACHED();
+      break;
+  };
+}
+
+#pragma mark - Properties
+
+- (void)setConsumer:(id<WhatsNewMediatorConsumer>)consumer {
+  _consumer = consumer;
+
+  [self updateConsumer];
+}
+
 #pragma mark Private
 
+// Returns a `WhatsNewItem` representing a highlighted chrome tip. By default,
+// it will be the `WhatsNewType::kUseChromeByDefault` otherwise it will choose a
+// random chrome tip.
+- (WhatsNewItem*)whatsNewChromeTipItem {
+  // Return a random chrome tip if chrome is already the default browser.
+  if (IsChromeLikelyDefaultBrowser()) {
+    int entryIndex = arc4random_uniform(self.chromeTipEntries.count);
+    return self.chromeTipEntries[entryIndex];
+  }
+
+  return self.useChromeByDefaultEntry;
+}
+
+// Returns an Array of `WhatsNewItem` features.
+- (NSArray<WhatsNewItem*>*)whatsNewFeatureItems {
+  if (IsWhatsNewModuleBasedLayout()) {
+    return self.featureShortEntries;
+  }
+
+  return WhatsNewFeatureEntries(WhatsNewFilePath());
+}
+
+// Returns a `WhatsNewItem` representing the highlighted feature.
+- (WhatsNewItem*)whatsNewHighlightedFeatureItem {
+  return self.highlightedFeatureEntry;
+}
+
+// Called to allow the user to go to Chrome's settings.
 - (void)openSettingsURLString {
   [[UIApplication sharedApplication]
                 openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]
@@ -51,4 +161,13 @@
       completionHandler:nil];
 }
 
+// Update the consumer with What's New items and whether to display them as
+// module or cell based.
+- (void)updateConsumer {
+  [self.consumer setWhatsNewProperties:[self whatsNewHighlightedFeatureItem]
+                             chromeTip:[self whatsNewChromeTipItem]
+                          featureItems:[self whatsNewFeatureItems]
+                         isModuleBased:IsWhatsNewModuleBasedLayout()];
+}
+
 @end
diff --git a/ios/chrome/browser/ui/whats_new/whats_new_mediator_consumer.h b/ios/chrome/browser/ui/whats_new/whats_new_mediator_consumer.h
new file mode 100644
index 0000000..f47ad60
--- /dev/null
+++ b/ios/chrome/browser/ui/whats_new/whats_new_mediator_consumer.h
@@ -0,0 +1,23 @@
+// Copyright 2022 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_UI_WHATS_NEW_WHATS_NEW_MEDIATOR_CONSUMER_H_
+#define IOS_CHROME_BROWSER_UI_WHATS_NEW_WHATS_NEW_MEDIATOR_CONSUMER_H_
+
+#import "ios/chrome/browser/ui/whats_new/data_source/whats_new_item.h"
+
+// Handles `WhatsNewTableViewController` updates.
+@protocol WhatsNewMediatorConsumer <NSObject>
+
+// Sets the highlighted What's New feature item, the array of other What's New
+// feature items, the What's New chrome tip item, and whether What's New should
+// be displayed with modules or cell.
+- (void)setWhatsNewProperties:(WhatsNewItem*)highlightedFeatureItem
+                    chromeTip:(WhatsNewItem*)chromeTip
+                 featureItems:(NSArray<WhatsNewItem*>*)featureItems
+                isModuleBased:(BOOL)isModuleBased;
+
+@end
+
+#endif  // IOS_CHROME_BROWSER_UI_WHATS_NEW_WHATS_NEW_MEDIATOR_CONSUMER_H_
diff --git a/ios/chrome/browser/ui/whats_new/whats_new_primary_action_handler.h b/ios/chrome/browser/ui/whats_new/whats_new_primary_action_handler.h
index 9889911..a0cd796 100644
--- a/ios/chrome/browser/ui/whats_new/whats_new_primary_action_handler.h
+++ b/ios/chrome/browser/ui/whats_new/whats_new_primary_action_handler.h
@@ -11,7 +11,6 @@
 // to communicate with `WhatsNewMediator`.
 @protocol WhatsNewPrimaryActionHandler
 
-// Invoked when the action button is tapped.
 // Invoked when a user interacts with the primary button for a specific
 // `WhatsNewEntryId`.
 - (void)didTapActionButton:(WhatsNewItem*)item;
diff --git a/ios/chrome/browser/ui/whats_new/whats_new_table_view_action_handler.h b/ios/chrome/browser/ui/whats_new/whats_new_table_view_action_handler.h
new file mode 100644
index 0000000..086a4d5
--- /dev/null
+++ b/ios/chrome/browser/ui/whats_new/whats_new_table_view_action_handler.h
@@ -0,0 +1,20 @@
+// Copyright 2022 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_UI_WHATS_NEW_WHATS_NEW_TABLE_VIEW_ACTION_HANDLER_H_
+#define IOS_CHROME_BROWSER_UI_WHATS_NEW_WHATS_NEW_TABLE_VIEW_ACTION_HANDLER_H_
+
+#include "ios/chrome/browser/ui/whats_new/data_source/whats_new_item.h"
+
+// Delegate protocol for `WhatsNewTableViewController`
+// to communicate with `WhatsNewMediator`.
+@protocol WhatsNewTableViewActionHandler
+
+// Invoked when a user interacts with a cell item (`WhatsNewItem`) in What's
+// New.
+- (void)recordWhatsNewInteraction:(WhatsNewItem*)item;
+
+@end
+
+#endif  // IOS_CHROME_BROWSER_UI_WHATS_NEW_WHATS_NEW_TABLE_VIEW_ACTION_HANDLER_H_
\ No newline at end of file
diff --git a/ios/chrome/browser/ui/whats_new/whats_new_table_view_controller.h b/ios/chrome/browser/ui/whats_new/whats_new_table_view_controller.h
index 440d6535..47a8d7e3 100644
--- a/ios/chrome/browser/ui/whats_new/whats_new_table_view_controller.h
+++ b/ios/chrome/browser/ui/whats_new/whats_new_table_view_controller.h
@@ -6,14 +6,23 @@
 #define IOS_CHROME_BROWSER_UI_WHATS_NEW_WHATS_NEW_TABLE_VIEW_CONTROLLER_H_
 
 #import "ios/chrome/browser/ui/table_view/chrome_table_view_controller.h"
+#import "ios/chrome/browser/ui/whats_new/data_source/whats_new_item.h"
+#import "ios/chrome/browser/ui/whats_new/whats_new_mediator_consumer.h"
+#import "ios/chrome/browser/ui/whats_new/whats_new_table_view_action_handler.h"
 
 // View controller that displays What's New features and chrome tips in a table
 // view.
-@interface WhatsNewTableViewController : ChromeTableViewController
+@interface WhatsNewTableViewController
+    : ChromeTableViewController <WhatsNewMediatorConsumer>
 
 // Initializers.
 - (instancetype)init NS_DESIGNATED_INITIALIZER;
 - (instancetype)initWithStyle:(UITableViewStyle)style NS_UNAVAILABLE;
 
+// The delegate object that manages interactions with What's New table view.
+@property(nonatomic, weak) id<WhatsNewTableViewActionHandler> delegate;
+
+- (void)reloadData;
+
 @end
 #endif  // IOS_CHROME_BROWSER_UI_WHATS_NEW_WHATS_NEW_TABLE_VIEW_CONTROLLER_H_
\ No newline at end of file
diff --git a/ios/chrome/browser/ui/whats_new/whats_new_table_view_controller.mm b/ios/chrome/browser/ui/whats_new/whats_new_table_view_controller.mm
index 36d44c1..311e2184 100644
--- a/ios/chrome/browser/ui/whats_new/whats_new_table_view_controller.mm
+++ b/ios/chrome/browser/ui/whats_new/whats_new_table_view_controller.mm
@@ -3,18 +3,308 @@
 // found in the LICENSE file.
 
 #import "ios/chrome/browser/ui/whats_new/whats_new_table_view_controller.h"
+
+#import "ios/chrome/browser/ui/table_view/cells/table_view_detail_text_item.h"
+#import "ios/chrome/browser/ui/table_view/cells/table_view_header_footer_item.h"
+#import "ios/chrome/browser/ui/table_view/cells/table_view_text_header_footer_item.h"
 #import "ios/chrome/browser/ui/table_view/table_view_utils.h"
+#import "ios/chrome/browser/ui/whats_new/cells/whats_new_table_view_banner_item.h"
+#import "ios/chrome/browser/ui/whats_new/cells/whats_new_table_view_item.h"
+#import "ios/chrome/browser/ui/whats_new/data_source/whats_new_item.h"
+#import "ios/chrome/browser/ui/whats_new/whats_new_detail_view_controller.h"
+#import "ios/chrome/common/ui/colors/semantic_color_names.h"
+#import "ios/chrome/grit/ios_strings.h"
+#import "ui/base/l10n/l10n_util.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
 #endif
 
+namespace {
+
+NSString* const kWhatsNewListViewID = @"kWhatsNewListViewId";
+const CGFloat kEstimatedTableViewRowHeight = 56;
+const CGFloat kEstimatedSectionHeaderHeight = 56;
+const CGFloat kEstimatedsectionFooterHeight = 0.0;
+
+// List of sections.
+typedef NS_ENUM(NSInteger, ItemType) {
+  ItemTypeHeader = kItemTypeEnumZero,
+  ItemTypeItem,
+};
+
+// Identifiers for sections in the What's New list.
+typedef NS_ENUM(NSInteger, SectionIdentifier) {
+  SectionFeaturesIdentifier = kSectionIdentifierEnumZero,
+  SectionChromeTipIdenfitier,
+  SectionFeatureBannerIdentifier,
+};
+
+}  // namespace
+
+@interface WhatsNewTableViewController ()
+
+@property(nonatomic, readonly) TableViewModel<TableViewItem*>* tableViewModel;
+
+// Array of `WhatsNewItem` features.
+@property(nonatomic, strong) NSArray<WhatsNewItem*>* featureItems;
+
+// `WhatsNewItem` representing the highlighted feature.
+@property(nonatomic, strong) WhatsNewItem* highlightedFeatureItem;
+
+// `WhatsNewItem` representing the chrome tip.
+@property(nonatomic, strong) WhatsNewItem* chromeTipItem;
+
+// Indicates that What's New table view should module based instead of cell
+// based.
+@property(nonatomic, assign) BOOL isModuleTableView;
+
+@end
+
 @implementation WhatsNewTableViewController
 
+@dynamic tableViewModel;
+
 - (instancetype)init {
   UITableViewStyle style = ChromeTableViewStyle();
   self = [super initWithStyle:style];
   return self;
 }
 
-@end
\ No newline at end of file
+#pragma mark - Public
+
+- (void)reloadData {
+  [self loadModel];
+  if (self.viewLoaded)
+    [self.tableView reloadData];
+}
+
++ (NSString*)accessibilityIdentifier {
+  return kWhatsNewListViewID;
+}
+
+#pragma mark - UIViewController
+
+- (void)viewDidLoad {
+  [super viewDidLoad];
+
+  self.title = l10n_util::GetNSString(IDS_IOS_WHATS_NEW_TITLE);
+  self.tableView.accessibilityIdentifier =
+      [[self class] accessibilityIdentifier];
+  self.tableView.estimatedRowHeight = kEstimatedTableViewRowHeight;
+  self.tableView.rowHeight = UITableViewAutomaticDimension;
+  if (!self.isModuleTableView) {
+    self.tableView.estimatedSectionHeaderHeight = kEstimatedSectionHeaderHeight;
+  }
+  self.tableView.allowsMultipleSelection = YES;
+  self.tableView.sectionFooterHeight = kEstimatedsectionFooterHeight;
+}
+
+#pragma mark - UITableViewDelegate
+
+- (UITableViewCell*)tableView:(UITableView*)tableView
+        cellForRowAtIndexPath:(NSIndexPath*)indexPath {
+  UITableViewCell* cell = [super tableView:tableView
+                     cellForRowAtIndexPath:indexPath];
+  TableViewItem* item = [self.tableViewModel itemAtIndexPath:indexPath];
+
+  if (item.type == ItemTypeHeader) {
+    cell.separatorInset = UIEdgeInsetsMake(0.0f, 0.0f, 0.0f, CGFLOAT_MAX);
+  }
+  return cell;
+}
+
+- (NSIndexPath*)tableView:(UITableView*)tableView
+    willSelectRowAtIndexPath:(NSIndexPath*)indexPath {
+  if (![super tableView:tableView willSelectRowAtIndexPath:indexPath]) {
+    return nil;
+  }
+
+  NSInteger sectionID =
+      [self.tableViewModel sectionIdentifierForSectionIndex:indexPath.section];
+  if (self.isModuleTableView && sectionID == SectionFeaturesIdentifier &&
+      indexPath.row == 0) {
+    return nil;
+  }
+
+  return indexPath;
+}
+
+- (void)tableView:(UITableView*)tableView
+    didSelectRowAtIndexPath:(NSIndexPath*)indexPath {
+  NSInteger sectionID =
+      [self.tableViewModel sectionIdentifierForSectionIndex:indexPath.section];
+  switch (sectionID) {
+    case SectionFeatureBannerIdentifier: {
+      [self.delegate recordWhatsNewInteraction:self.highlightedFeatureItem];
+      [self openWhatsNewDetailView:self.highlightedFeatureItem];
+      break;
+    }
+    case SectionFeaturesIdentifier: {
+      NSInteger index = indexPath.row;
+      if (self.isModuleTableView) {
+        index--;
+      }
+      [self.delegate recordWhatsNewInteraction:self.featureItems[index]];
+      [self openWhatsNewDetailView:self.featureItems[index]];
+      break;
+    }
+    case SectionChromeTipIdenfitier: {
+      [self.delegate recordWhatsNewInteraction:self.chromeTipItem];
+      [self openWhatsNewDetailView:self.chromeTipItem];
+      break;
+    }
+  }
+
+  [tableView deselectRowAtIndexPath:indexPath animated:YES];
+}
+
+#pragma mark - ChromeTableViewController
+
+- (void)loadModel {
+  [super loadModel];
+  [self loadItems];
+  self.tableView.alwaysBounceVertical = YES;
+  self.tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
+  self.tableView.backgroundView = nil;
+}
+
+#pragma mark - WhatsNewMediatorConsumer
+
+- (void)setWhatsNewProperties:(WhatsNewItem*)highlightedFeatureItem
+                    chromeTip:(WhatsNewItem*)chromeTip
+                 featureItems:(NSArray<WhatsNewItem*>*)featureItems
+                isModuleBased:(BOOL)isModuleBased {
+  self.highlightedFeatureItem = highlightedFeatureItem;
+  self.featureItems = featureItems;
+  self.chromeTipItem = chromeTip;
+  self.isModuleTableView = isModuleBased;
+}
+
+#pragma mark Private
+
+- (TableViewItem*)whatsNewChromeTipCell:(WhatsNewItem*)item {
+  if (self.isModuleTableView) {
+    WhatsNewTableViewBannerItem* cell =
+        [[WhatsNewTableViewBannerItem alloc] initWithType:ItemTypeItem];
+    cell.title = item.title;
+    cell.detailText = item.subtitle;
+    cell.sectionTitle =
+        l10n_util::GetNSString(IDS_IOS_WHATS_NEW_SECTION_CHROME_TIP_TITLE);
+    cell.bannerImage = item.bannerImage;
+    cell.isBannerAtBottom = YES;
+    return cell;
+  }
+  return [self whatsNewCell:item];
+}
+
+- (TableViewItem*)whatsNewBannerFeaturesCell:(WhatsNewItem*)item {
+  WhatsNewTableViewBannerItem* cell =
+      [[WhatsNewTableViewBannerItem alloc] initWithType:ItemTypeItem];
+  cell.title = item.title;
+  cell.detailText = item.subtitle;
+  cell.sectionTitle =
+      l10n_util::GetNSString(IDS_IOS_WHATS_NEW_SECTION_FEATURED_TITLE);
+  cell.bannerImage = item.bannerImage;
+  cell.isBannerAtBottom = NO;
+  return cell;
+}
+
+- (TableViewItem*)whatsNewCell:(WhatsNewItem*)item {
+  WhatsNewTableViewItem* cell =
+      [[WhatsNewTableViewItem alloc] initWithType:ItemTypeItem];
+  cell.title = item.title;
+  cell.detailText = item.subtitle;
+  cell.iconImage = item.iconImage;
+  cell.iconBackgroundColor = item.backgroundColor;
+  return cell;
+}
+
+- (TableViewItem*)defaultSectionCell {
+  TableViewDetailTextItem* cell =
+      [[TableViewDetailTextItem alloc] initWithType:ItemTypeHeader];
+  cell.text = l10n_util::GetNSString(IDS_IOS_WHATS_NEW_SECTION_NEW_TITLE);
+  cell.textColor = [UIColor colorNamed:kTextSecondaryColor];
+  return cell;
+}
+
+- (void)loadItems {
+  TableViewModel* model = self.tableViewModel;
+
+  if (self.isModuleTableView) {
+    [self loadBannerFeatures:model];
+  }
+
+  [self loadFeatures:model];
+  [self loadChromeTip:model];
+}
+
+- (void)loadBannerFeatures:(TableViewModel*)model {
+  [model addSectionWithIdentifier:SectionFeatureBannerIdentifier];
+  [model addItem:[self whatsNewBannerFeaturesCell:self.highlightedFeatureItem]
+      toSectionWithIdentifier:SectionFeatureBannerIdentifier];
+}
+
+- (void)loadFeatures:(TableViewModel*)model {
+  [model addSectionWithIdentifier:SectionFeaturesIdentifier];
+  if (self.isModuleTableView) {
+    [model addItem:[self defaultSectionCell]
+        toSectionWithIdentifier:SectionFeaturesIdentifier];
+  } else {
+    [model setHeader:[self headerForSectionIndex:SectionFeaturesIdentifier]
+        forSectionWithIdentifier:SectionFeaturesIdentifier];
+  }
+
+  for (WhatsNewItem* item in self.featureItems) {
+    [model addItem:[self whatsNewCell:item]
+        toSectionWithIdentifier:SectionFeaturesIdentifier];
+  }
+}
+
+- (void)loadChromeTip:(TableViewModel*)model {
+  [model addSectionWithIdentifier:SectionChromeTipIdenfitier];
+  if (!self.isModuleTableView) {
+    [model setHeader:[self headerForSectionIndex:SectionChromeTipIdenfitier]
+        forSectionWithIdentifier:SectionChromeTipIdenfitier];
+  }
+  [model addItem:[self whatsNewChromeTipCell:self.chromeTipItem]
+      toSectionWithIdentifier:SectionChromeTipIdenfitier];
+}
+
+- (TableViewHeaderFooterItem*)headerForSectionIndex:
+    (SectionIdentifier)sectionID {
+  TableViewTextHeaderFooterItem* header =
+      [[TableViewTextHeaderFooterItem alloc] initWithType:ItemTypeHeader];
+
+  switch (sectionID) {
+    case SectionFeaturesIdentifier:
+      header.text =
+          self.isModuleTableView
+              ? l10n_util::GetNSString(IDS_IOS_WHATS_NEW_SECTION_FEATURED_TITLE)
+              : l10n_util::GetNSString(IDS_IOS_WHATS_NEW_SECTION_NEW_TITLE);
+      break;
+    case SectionChromeTipIdenfitier:
+      header.text =
+          l10n_util::GetNSString(IDS_IOS_WHATS_NEW_SECTION_CHROME_TIP_TITLE);
+      break;
+    case SectionFeatureBannerIdentifier:
+      header.text =
+          l10n_util::GetNSString(IDS_IOS_WHATS_NEW_SECTION_FEATURED_TITLE);
+      break;
+  }
+  return header;
+}
+
+- (void)openWhatsNewDetailView:(WhatsNewItem*)item {
+  WhatsNewDetailViewController* detailView =
+      [[WhatsNewDetailViewController alloc]
+              initWithParams:item.bannerImage
+                       title:item.title
+                    subtitle:item.subtitle
+          primaryActionTitle:item.primaryActionTitle
+            instructionSteps:item.instructionSteps
+            hasPrimaryAction:item.hasPrimaryAction];
+  [self.navigationController pushViewController:detailView animated:YES];
+}
+
+@end
diff --git a/ios/chrome/browser/ui/whats_new/whats_new_util.h b/ios/chrome/browser/ui/whats_new/whats_new_util.h
new file mode 100644
index 0000000..90f7a22b
--- /dev/null
+++ b/ios/chrome/browser/ui/whats_new/whats_new_util.h
@@ -0,0 +1,14 @@
+// Copyright 2022 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_UI_WHATS_NEW_WHATS_NEW_UTIL_H_
+#define IOS_CHROME_BROWSER_UI_WHATS_NEW_WHATS_NEW_UTIL_H_
+
+bool IsWhatsNewOverflowMenuUsed();
+
+void SetWhatsNewOverflowMenuUsed();
+
+bool IsWhatsNewEnabled();
+
+#endif  // IOS_CHROME_BROWSER_UI_WHATS_NEW_WHATS_NEW_UTIL_H_
diff --git a/ios/chrome/browser/ui/whats_new/whats_new_util.mm b/ios/chrome/browser/ui/whats_new/whats_new_util.mm
new file mode 100644
index 0000000..96d6be6
--- /dev/null
+++ b/ios/chrome/browser/ui/whats_new/whats_new_util.mm
@@ -0,0 +1,38 @@
+// Copyright 2022 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/ui/whats_new/whats_new_util.h"
+
+#import "ios/chrome/browser/ui/ui_feature_flags.h"
+#import "ios/chrome/browser/ui/whats_new/feature_flags.h"
+
+#import "base/ios/ios_util.h"
+#import "base/mac/foundation_util.h"
+
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
+namespace {
+
+NSString* const kOverflowMenuEntryKey = @"userHasInteractedWithWhatsNew";
+
+}  // namespace
+
+bool IsWhatsNewOverflowMenuUsed() {
+  return [[NSUserDefaults standardUserDefaults]
+      objectForKey:kOverflowMenuEntryKey];
+}
+
+void SetWhatsNewOverflowMenuUsed() {
+  if (IsWhatsNewOverflowMenuUsed())
+    return;
+
+  [[NSUserDefaults standardUserDefaults] setBool:YES
+                                          forKey:kOverflowMenuEntryKey];
+}
+
+bool IsWhatsNewEnabled() {
+  return base::FeatureList::IsEnabled(kWhatsNewIOS);
+}
diff --git a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_te.xtb b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_te.xtb
index 2d6c3c5d..069753f 100644
--- a/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_te.xtb
+++ b/ios/chrome/credential_provider_extension/strings/resources/ios_credential_provider_extension_strings_te.xtb
@@ -9,29 +9,29 @@
 <translation id="1706288056912586527">పాస్‌వర్డ్‌ను చూపించు</translation>
 <translation id="1870148520156231997">పాస్‌వర్డ్‌ను చూపండి</translation>
 <translation id="1977167321677356409">పాస్‌వర్డ్</translation>
-<translation id="2211969839027957773">Google పాస్‌వర్డ్ మేనేజర్</translation>
+<translation id="2211969839027957773">Google Password Manager</translation>
 <translation id="2320166752086256636">కీబోర్డ్‌ను దాచు</translation>
-<translation id="2489483078139081050">మీరు మీ పరికరంలోని ఇతర యాప్‌లలో సేవ్ చేసిన పాస్‌వర్డ్‌లను ఉపయోగించవచ్చు. అవి ఈ పరికరంలోని Google పాస్‌వర్డ్ మేనేజర్‌లో మాత్రమే సేవ్ చేయబడతాయి.</translation>
+<translation id="2489483078139081050">మీరు మీ పరికరంలోని ఇతర యాప్‌లలో సేవ్ చేసిన పాస్‌వర్డ్‌లను ఉపయోగించవచ్చు. అవి ఈ పరికరంలోని Google Password Managerలో మాత్రమే సేవ్ చేయబడతాయి.</translation>
 <translation id="2677128368066534822">మీ పాస్‌వర్డ్‌లను వేగంగా పొందడానికి, iCloud కీచెయిన్ ఎంపికను తొలగించండి</translation>
 <translation id="2712586044587587728">మీ Chrome పాస్‌వర్డ్‌లు ఇతర యాప్‌లలో ఉపయోగించడానికి అందుబాటులో ఉంటాయి. దీనిని మీరు ఎప్పుడైనా సెట్టింగ్‌ల యాప్‌లో ఆఫ్ చేయవచ్చు.</translation>
 <translation id="2747003861858887689">మునుపటి ఫీల్డ్</translation>
 <translation id="3280734926621805458">వాడండి</translation>
 <translation id="3580107423202590938">Chrome పాస్‌వర్డ్‌లు ఏవీ లేవు</translation>
 <translation id="368844171100841558">రీప్లేస్ చేయండి</translation>
-<translation id="3739920431472254679">పాస్‌వర్డ్‌లు Google పాస్‌వర్డ్ మేనేజర్‌లో సేవ్ చేయబడతాయి, కాబట్టి మీరు వాటిని ఏ పరికరంలో అయినా ఉపయోగించవచ్చు.</translation>
+<translation id="3739920431472254679">పాస్‌వర్డ్‌లు Google Password Managerలో సేవ్ చేయబడతాయి, కాబట్టి మీరు వాటిని ఏ పరికరంలో అయినా ఉపయోగించవచ్చు.</translation>
 <translation id="3753678329684433031">Chrome పాస్‌వర్డ్‌ను ఆటోఫిల్ చేయండి</translation>
 <translation id="3789385946721385622">యూజర్‌నేమ్</translation>
-<translation id="3830647155781949426">మీరు Chromeకు తిరిగి వచ్చినప్పుడు, <ph name="EMAIL" /> కోసం మీ పాస్‌వర్డ్ Google పాస్‌వర్డ్ మేనేజర్‌లో సేవ్ చేయబడుతుంది.</translation>
+<translation id="3830647155781949426">మీరు Chromeకు తిరిగి వచ్చినప్పుడు, <ph name="EMAIL" /> కోసం మీ పాస్‌వర్డ్ Google Password Managerలో సేవ్ చేయబడుతుంది.</translation>
 <translation id="4241076354893135477">Chrome పాస్‌వర్డ్‌లు ఏవీ లేవు</translation>
 <translation id="4452240207605337349">పాస్‌వర్డ్‌ను సేవ్ చేయడం సాధ్యం కాదు</translation>
 <translation id="4818780572497527258">అర్థమైంది</translation>
 <translation id="5118084770294029567">అన్ని పాస్‌వర్డ్‌లు</translation>
 <translation id="5148402015874782921">రద్దు చేయండి</translation>
 <translation id="5824290706342306555">ప్రారంభించడానికి కొన్ని పాస్‌వర్డ్‌లను Chromeలో సేవ్ చేయండి లేదా మీ Google ఖాతాతో సైన్ ఇన్ చేయండి.</translation>
-<translation id="6002340317268558779">మీరు మీ పరికరంలోని ఇతర యాప్‌లలో సేవ్ చేసిన పాస్‌వర్డ్‌లను ఉపయోగించవచ్చు. <ph name="EMAIL" /> కోసం అవి Google పాస్‌వర్డ్ మేనేజర్‌లో సేవ్ చేయబడతాయి.</translation>
+<translation id="6002340317268558779">మీరు మీ పరికరంలోని ఇతర యాప్‌లలో సేవ్ చేసిన పాస్‌వర్డ్‌లను ఉపయోగించవచ్చు. <ph name="EMAIL" /> కోసం అవి Google Password Managerలో సేవ్ చేయబడతాయి.</translation>
 <translation id="6159839020698489198">ఆప్షనల్</translation>
 <translation id="6216401132953873625">కొత్త పాస్‌వర్డ్‌ను జోడించండి</translation>
-<translation id="6387994324662817823">పాస్‌వర్డ్‌లు ఈ పరికరంలోని Google పాస్‌వర్డ్ మేనేజర్‌లో మాత్రమే సేవ్ చేయబడతాయి.</translation>
+<translation id="6387994324662817823">పాస్‌వర్డ్‌లు ఈ పరికరంలోని Google Password Managerలో మాత్రమే సేవ్ చేయబడతాయి.</translation>
 <translation id="6539092367496845964">ఏదో తప్పు జరిగింది. తర్వాత మళ్లీ ప్రయత్నించండి.</translation>
 <translation id="6657585470893396449">పాస్‌వర్డ్</translation>
 <translation id="666236282349601348">ఆటోఫిల్ ఆన్‌లో ఉంది</translation>
@@ -56,5 +56,5 @@
 <translation id="8730621377337864115">పూర్తయింది</translation>
 <translation id="8877181643142698531">URL</translation>
 <translation id="9069288651897538648"><ph name="URL" /> కోసం</translation>
-<translation id="9168839987494597225">పాస్‌వర్డ్‌లు ఈ పరికరంలోని Google పాస్‌వర్డ్ మేనేజర్‌లో మాత్రమే సేవ్ చేయబడతాయి.</translation>
+<translation id="9168839987494597225">పాస్‌వర్డ్‌లు ఈ పరికరంలోని Google Password Managerలో మాత్రమే సేవ్ చేయబడతాయి.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/ios/chrome/test/BUILD.gn b/ios/chrome/test/BUILD.gn
index 1e7d8731..c76ed51 100644
--- a/ios/chrome/test/BUILD.gn
+++ b/ios/chrome/test/BUILD.gn
@@ -363,6 +363,7 @@
     "//ios/chrome/browser/ui/settings/language:unit_tests",
     "//ios/chrome/browser/ui/settings/password:unit_tests",
     "//ios/chrome/browser/ui/settings/password/password_details:unit_tests",
+    "//ios/chrome/browser/ui/settings/password/password_settings:unit_tests",
     "//ios/chrome/browser/ui/settings/password/passwords_in_other_apps:unit_tests",
     "//ios/chrome/browser/ui/settings/privacy:unit_tests",
     "//ios/chrome/browser/ui/settings/safety_check:unit_tests",
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 777497d..773a155 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 @@
-072d76ea235b4525e9d722cf7163fdd7bcdd71b8
\ No newline at end of file
+495cbfc6f42fc3ab6e4fbb23ccbee3e23d05c7f9
\ 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 957be1c1..d35d28f 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 @@
-04038a55a02f067f00452e84c9efff63e26c6e3f
\ No newline at end of file
+b47c7e5334d43e419f2f3ff801a2ad2f5944b671
\ 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 f624219..69d3ea4 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 @@
-26a9a573cc7de73d94c4725c7fa0916bce80ec84
\ No newline at end of file
+3ed3b2984acb67e54852237fb6722f4e57e48c05
\ 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 d521883..9da11b3f 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 @@
-f70638735b9e2c44a566db433c895fb786d7586e
\ No newline at end of file
+c4c74b5c76be277abae0889a7a3aea71782b06f3
\ 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 61b1644..1218efa7 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 @@
-655a9fe4a13b9ad51e12bf0b4da13d2a8a971bcb
\ No newline at end of file
+ef3e3bf5d0bdb8d2bd311c1d81a0e4b0d0625041
\ 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 8de7e8e6..fcabe66c 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 @@
-953d5ae8706d287b6ac0042df2f55474ac9dbfa6
\ No newline at end of file
+01f2214fcdf4612793d29edfd3aa3de40035cb53
\ 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 51934e1..d21c02cb 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 @@
-e19891419e30221830b63142220aea6679de3bbc
\ No newline at end of file
+889bcde4f936187d0cfd9df5b319c206b058fc40
\ 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 58eb43c..3e5b6cc 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 @@
-4be852c3b0d009a8e9ddd4e5af59e6020a2c762b
\ No newline at end of file
+2d6f4e3841beae4eb5044ea2d2e6ab45e730e30b
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.ios.zip.sha1 b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.ios.zip.sha1
index f502fb2e..da0b729 100644
--- a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.ios.zip.sha1
+++ b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.ios.zip.sha1
@@ -1 +1 @@
-a393c4c1105b5f9944273cba650096a0cdc447f2
\ No newline at end of file
+f474b392f1d4049fa202e1117ba201489f4243dd
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.iossimulator.zip.sha1 b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.iossimulator.zip.sha1
index f66ceebb..e9634b7 100644
--- a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.iossimulator.zip.sha1
+++ b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.iossimulator.zip.sha1
@@ -1 +1 @@
-f7d2006a625187702b37c847dc0c71c28ee2700e
\ No newline at end of file
+dba412a4283f96b75b85a2392c4f93af4fb82929
\ 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 99c2254..b2e77ef 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 @@
-1be78f3a9b3a993be29034eb90b3c5d6d4744b0e
\ No newline at end of file
+15c0b8b84f0255a4f72b424f0fef7f90ef5d1dc8
\ 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 0fe399e8a..b4fc59f 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 @@
-033996c4ff9c6b605522ac37725d76c76539fbe9
\ No newline at end of file
+fdda02737bce3293701f9c8f4b70470eb852bc60
\ 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 92c6118..2af2083 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 @@
-a797ef05385929d54c6e22ee0cf11645695893cc
\ No newline at end of file
+b8c5d301d82e884298d16fc3798e47b7b84450b0
\ 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 182ef03..32d4f26 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 @@
-c58967935392871fab656ef6cf2d2f8740deb3fa
\ No newline at end of file
+ecc529b039cd04d464f15089ced02ad302eddd4e
\ No newline at end of file
diff --git a/ios/public/provider/chrome/browser/signin/chrome_identity_interaction_manager.h b/ios/public/provider/chrome/browser/signin/chrome_identity_interaction_manager.h
index 27a2c11..8b43497 100644
--- a/ios/public/provider/chrome/browser/signin/chrome_identity_interaction_manager.h
+++ b/ios/public/provider/chrome/browser/signin/chrome_identity_interaction_manager.h
@@ -9,7 +9,7 @@
 
 #import "base/ios/block_types.h"
 
-@class ChromeIdentity;
+@protocol SystemIdentity;
 
 // Error domain for Chrome identity errors.
 extern NSString* kChromeIdentityErrorDomain;
@@ -21,7 +21,7 @@
 // Callback for the signin operation methods.
 // * `identity` is the identity that was added/reauthenticated.
 // * `error` is nil unless there was an error during the operation.
-typedef void (^SigninCompletionCallback)(ChromeIdentity* identity,
+typedef void (^SigninCompletionCallback)(id<SystemIdentity> identity,
                                          NSError* error);
 
 // ChromeIdentityInteractionManager abstracts the interaction to add identities
diff --git a/ios/public/provider/chrome/browser/signin/chrome_identity_interaction_manager.mm b/ios/public/provider/chrome/browser/signin/chrome_identity_interaction_manager.mm
index 2f4acfb6..379c20e 100644
--- a/ios/public/provider/chrome/browser/signin/chrome_identity_interaction_manager.mm
+++ b/ios/public/provider/chrome/browser/signin/chrome_identity_interaction_manager.mm
@@ -15,12 +15,6 @@
 @implementation ChromeIdentityInteractionManager
 
 - (void)addAccountWithPresentingViewController:(UIViewController*)viewController
-                                    completion:
-                                        (SigninCompletionCallback)completion {
-  NOTREACHED() << "Subclasses must override this";
-}
-
-- (void)addAccountWithPresentingViewController:(UIViewController*)viewController
                                      userEmail:(NSString*)userEmail
                                     completion:
                                         (SigninCompletionCallback)completion {
diff --git a/ios/public/provider/chrome/browser/signin/fake_chrome_identity_interaction_manager.h b/ios/public/provider/chrome/browser/signin/fake_chrome_identity_interaction_manager.h
index d5badf9..f24f6bd1 100644
--- a/ios/public/provider/chrome/browser/signin/fake_chrome_identity_interaction_manager.h
+++ b/ios/public/provider/chrome/browser/signin/fake_chrome_identity_interaction_manager.h
@@ -13,7 +13,7 @@
 
 // Identity that will be returned by the add account method if the dialog is
 // closed successfully.
-@property(nonatomic, strong, class) ChromeIdentity* identity;
+@property(nonatomic, strong, class) id<SystemIdentity> identity;
 
 // YES if the fake add account view is presented.
 @property(nonatomic, assign, readonly) BOOL viewControllerPresented;
diff --git a/ios/public/provider/chrome/browser/signin/fake_chrome_identity_interaction_manager.mm b/ios/public/provider/chrome/browser/signin/fake_chrome_identity_interaction_manager.mm
index 93ff9b2..aa19f66 100644
--- a/ios/public/provider/chrome/browser/signin/fake_chrome_identity_interaction_manager.mm
+++ b/ios/public/provider/chrome/browser/signin/fake_chrome_identity_interaction_manager.mm
@@ -94,16 +94,20 @@
 
 @end
 
-@implementation FakeChromeIdentityInteractionManager
+namespace {
 
-static ChromeIdentity* _identity = nil;
+id<SystemIdentity> gFakeChromeIdentityInteractionManagerIdentity = nil;
 
-+ (void)setIdentity:(ChromeIdentity*)identity {
-  _identity = identity;
 }
 
-+ (ChromeIdentity*)identity {
-  return _identity;
+@implementation FakeChromeIdentityInteractionManager
+
++ (void)setIdentity:(id<SystemIdentity>)identity {
+  gFakeChromeIdentityInteractionManagerIdentity = identity;
+}
+
++ (id<SystemIdentity>)identity {
+  return gFakeChromeIdentityInteractionManagerIdentity;
 }
 
 - (void)addAccountWithPresentingViewController:(UIViewController*)viewController
@@ -182,7 +186,7 @@
 - (void)runCompletionCallbackWithError:(NSError*)error
                             completion:(ProceduralBlock)completion {
   self.addAccountViewController = nil;
-  ChromeIdentity* identity =
+  id<SystemIdentity> identity =
       error ? nil : FakeChromeIdentityInteractionManager.identity;
   // Reset the identity for the next usage.
   FakeChromeIdentityInteractionManager.identity = nil;
diff --git a/media/audio/BUILD.gn b/media/audio/BUILD.gn
index 04a5bbef..cfec184 100644
--- a/media/audio/BUILD.gn
+++ b/media/audio/BUILD.gn
@@ -212,6 +212,13 @@
       "win/waveout_output_win.h",
     ]
 
+    if (enable_platform_dts_audio) {
+      sources += [
+        "win/audio_edid_scan_win.cc",
+        "win/audio_edid_scan_win.h",
+      ]
+    }
+
     deps += [ "//media/base/win:media_foundation_util" ]
 
     libs += [
diff --git a/media/audio/android/audio_manager_android.cc b/media/audio/android/audio_manager_android.cc
index bf6c775..b2f3d2b 100644
--- a/media/audio/android/audio_manager_android.cc
+++ b/media/audio/android/audio_manager_android.cc
@@ -490,9 +490,11 @@
   DVLOG(1) << __func__ << ": IsAudioSinkConnected()==true, output_device_id="
            << output_device_id << ", Supported Encodings=" << formats;
 
-  return AudioParameters(AudioParameters::AUDIO_PCM_LOW_LATENCY,
-                         channel_layout_config, sample_rate, buffer_size,
-                         AudioParameters::HardwareCapabilities(formats));
+  return AudioParameters(
+      AudioParameters::AUDIO_PCM_LOW_LATENCY, channel_layout_config,
+      sample_rate, buffer_size,
+      AudioParameters::HardwareCapabilities(formats,
+                                            /*require_encapsulation=*/false));
 }
 
 void AudioManagerAndroid::DoSetMuteOnAudioThread(bool muted) {
diff --git a/media/audio/android/audio_track_output_stream.cc b/media/audio/android/audio_track_output_stream.cc
index 917867a..21897c2 100644
--- a/media/audio/android/audio_track_output_stream.cc
+++ b/media/audio/android/audio_track_output_stream.cc
@@ -64,6 +64,7 @@
         format = kEncodingDts;
         break;
       case AudioParameters::AUDIO_BITSTREAM_DTS_HD:
+      case AudioParameters::AUDIO_BITSTREAM_DTS_HD_MA:
         format = kEncodingDtshd;
         break;
       case AudioParameters::AUDIO_BITSTREAM_IEC61937:
diff --git a/media/audio/win/audio_edid_scan_win.cc b/media/audio/win/audio_edid_scan_win.cc
new file mode 100644
index 0000000..9527596
--- /dev/null
+++ b/media/audio/win/audio_edid_scan_win.cc
@@ -0,0 +1,185 @@
+// Copyright 2022 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "media/audio/win/audio_edid_scan_win.h"
+
+#include <objbase.h>
+#include <oleauto.h>
+#include <string.h>
+
+#include "base/logging.h"
+#include "base/win/scoped_bstr.h"
+#include "base/win/scoped_variant.h"
+#include "base/win/wmi.h"
+
+namespace media {
+
+// Short Audio Descriptor values defined in ANSI/CEA-861
+enum {
+  kEdidAudioLpcm = 1,
+  kEdidAudioDts = 7,
+  kEdidAudioDtsHd = 11,
+};
+
+namespace {
+
+uint32_t EdidParseBlocks(const uint8_t* data, int data_size) {
+  const uint8_t *block = data, *block_end = data + data_size;
+  static constexpr uint8_t kBaseHeader[] = {0,    0xFF, 0xFF, 0xFF,
+                                            0xFF, 0xFF, 0xFF, 0};
+  constexpr uint8_t kEdidAudio = 1;
+  constexpr uint8_t kExtensionTagCea = 2;
+  constexpr int kBlockSize = 128;
+  constexpr uint8_t kSadSize = 3;
+  uint32_t bitstream_mask = 0;
+
+  // http://crbug.com/1371473
+  // TODO(dcheng): Use base::BufferIterator to parse EDID block
+  // Skip base EDID structure if present
+  if (block + kBlockSize <= block_end &&
+      (memcmp(block, kBaseHeader, sizeof(kBaseHeader)) == 0)) {
+    block += kBlockSize;
+  }
+
+  // Process CEA EDID (tag 2) extension blocks
+  for (; block + kBlockSize <= block_end; block += kBlockSize) {
+    if (block[0] != kExtensionTagCea)
+      continue;
+
+    // Process the audio data blocks containing Short Audio Descriptors (SADs),
+    // which are three bytes each.  SADs start at byte 4 and end before the
+    // byte specified in block[2].
+    const uint8_t *db = block + 4, *db_end = block + block[2];
+    if (db_end > block_end)
+      continue;
+    for (; db + kSadSize <= db_end && db[0]; db += (db[0] & 0x1F) + 1) {
+      if ((db[0] >> 5) != kEdidAudio)
+        continue;
+
+      const int len = 1 + (db[0] & 0x1F);
+      if (db + len > db_end)
+        continue;
+
+      for (int i = 1; i < len; i += 3) {
+        switch ((db[i] >> 3) & 15) {
+          case kEdidAudioLpcm:
+            bitstream_mask |= kAudioBitstreamPcmLinear;
+            break;
+          case kEdidAudioDts:
+            bitstream_mask |= kAudioBitstreamDts;
+            break;
+          case kEdidAudioDtsHd:
+            bitstream_mask |= kAudioBitstreamDts;
+            bitstream_mask |= kAudioBitstreamDtsHd;
+            break;
+        }
+      }
+    }
+  }
+
+  DVLOG(1) << "SERVICE: EdidParseBlocks bitstream mask " << bitstream_mask;
+  return bitstream_mask;
+}
+
+}  // namespace
+
+uint32_t ScanEdidBitstreams() {
+  // The WMI service allows the querying of monitor-type devices which report
+  // Extended Display Identification Data (EDID).  The WMI service can be
+  // queried for a list of COM objects which represent the "paths" which
+  // are associated with individual EDID devices.  Querying each of those
+  // paths using the WmiGetMonitorRawEEdidV1Block method returns the EDID
+  // blocks for those devices.  We query the extended blocks which contain
+  // the Short Audio Descriptor (SAD), and parse them to obtain a bitmask
+  // indicating which audio content is supported.  The mask consists of
+  // AudioParameters::Format flags.  If multiple EDID devices are present,
+  // the intersection of flags is reported.
+  Microsoft::WRL::ComPtr<IWbemServices> wmi_services =
+      base::win::CreateWmiConnection(true, L"ROOT\\WMI");
+  if (!wmi_services)
+    return 0;
+
+  Microsoft::WRL::ComPtr<IWbemClassObject> get_edid_block;
+  if (!base::win::CreateWmiClassMethodObject(
+          wmi_services.Get(), L"WmiMonitorDescriptorMethods",
+          L"WmiGetMonitorRawEEdidV1Block", &get_edid_block)) {
+    return 0;
+  }
+
+  Microsoft::WRL::ComPtr<IEnumWbemClassObject> wmi_enumerator;
+  HRESULT hr = wmi_services->CreateInstanceEnum(
+      base::win::ScopedBstr(L"WmiMonitorDescriptorMethods").Get(),
+      WBEM_FLAG_FORWARD_ONLY, nullptr, &wmi_enumerator);
+  if (FAILED(hr))
+    return 0;
+
+  base::win::ScopedVariant block_id(1);
+  bool first = true;
+  uint32_t bitstream_mask = 0;
+
+  while (true) {
+    Microsoft::WRL::ComPtr<IWbemClassObject> class_object;
+    ULONG items_returned = 0;
+    hr = wmi_enumerator->Next(WBEM_INFINITE, 1, &class_object, &items_returned);
+    if (FAILED(hr) || hr == WBEM_S_FALSE || items_returned == 0)
+      break;
+
+    base::win::ScopedVariant path;
+    class_object->Get(L"__PATH", 0, path.Receive(), nullptr, nullptr);
+
+    if (FAILED(get_edid_block->Put(L"BlockId", 0, block_id.AsInput(), 0)))
+      break;
+
+    Microsoft::WRL::ComPtr<IWbemClassObject> out_params;
+    hr = wmi_services->ExecMethod(
+        V_BSTR(path.ptr()),
+        base::win::ScopedBstr(L"WmiGetMonitorRawEEdidV1Block").Get(), 0,
+        nullptr, get_edid_block.Get(), &out_params, nullptr);
+    if (FAILED(hr))
+      break;
+
+    base::win::ScopedVariant block_type;
+    if (FAILED(out_params->Get(L"BlockType", 0, block_type.Receive(), nullptr,
+                               0))) {
+      continue;
+    }
+
+    base::win::ScopedVariant block_content;
+    if (FAILED(out_params->Get(L"BlockContent", 0, block_content.Receive(),
+                               nullptr, 0))) {
+      continue;
+    }
+
+    if (V_I4(block_type.ptr()) != 255)
+      continue;
+
+    if (block_content.type() != (VT_ARRAY | VT_UI1))
+      continue;
+
+    SAFEARRAY* array = V_ARRAY(block_content.ptr());
+    if (SafeArrayGetDim(array) != 1)
+      continue;
+
+    long lower_bound = 0;
+    long upper_bound = 0;
+    SafeArrayGetLBound(array, 1, &lower_bound);
+    SafeArrayGetUBound(array, 1, &upper_bound);
+    if (lower_bound || upper_bound <= lower_bound)
+      continue;
+
+    uint8_t* block = nullptr;
+    SafeArrayAccessData(array, reinterpret_cast<void**>(&block));
+    if (first) {
+      first = false;
+      bitstream_mask = EdidParseBlocks(block, upper_bound + 1);
+    } else {
+      bitstream_mask &= EdidParseBlocks(block, upper_bound + 1);
+    }
+    SafeArrayUnaccessData(array);
+  }
+
+  return bitstream_mask;
+}
+
+}  // namespace media
diff --git a/media/audio/win/audio_edid_scan_win.h b/media/audio/win/audio_edid_scan_win.h
new file mode 100644
index 0000000..f57275e
--- /dev/null
+++ b/media/audio/win/audio_edid_scan_win.h
@@ -0,0 +1,36 @@
+// Copyright 2022 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef MEDIA_AUDIO_WIN_AUDIO_EDID_SCAN_WIN_H_
+#define MEDIA_AUDIO_WIN_AUDIO_EDID_SCAN_WIN_H_
+
+#include <stdint.h>
+
+#include "media/base/media_export.h"
+
+namespace media {
+
+// The WMI service allows the querying of monitor-type devices which report
+// Extended Display Identification Data (EDID).  The WMI service can be
+// queried for a list of COM objects which represent the "paths" which
+// are associated with individual EDID devices.  Querying each of those
+// paths using the WmiGetMonitorRawEEdidV1Block method returns the EDID
+// blocks for those devices.  We query the extended blocks which contain
+// the Short Audio Descriptor (SAD), and parse them to obtain a bitmask
+// indicating which audio content is supported.  The mask consists of
+// AudioParameters::Format flags.  If multiple EDID devices are present,
+// the intersection of flags is reported.
+MEDIA_EXPORT uint32_t ScanEdidBitstreams();
+
+// Bitmask returned by ScanEdidBitstreams.  Set bits indicate detected
+// audio passthrough support.
+enum : uint32_t {
+  kAudioBitstreamPcmLinear = 0x001,  // PCM is 'raw' amplitude samples.
+  kAudioBitstreamDts = 0x002,        // Compressed DTS bitstream.
+  kAudioBitstreamDtsHd = 0x004,      // Compressed DTS-HD bitstream.
+};
+
+}  // namespace media
+
+#endif  // MEDIA_AUDIO_WIN_AUDIO_EDID_SCAN_WIN_H_
diff --git a/media/audio/win/audio_low_latency_output_win.cc b/media/audio/win/audio_low_latency_output_win.cc
index 87771202..5767a6b 100644
--- a/media/audio/win/audio_low_latency_output_win.cc
+++ b/media/audio/win/audio_low_latency_output_win.cc
@@ -89,6 +89,7 @@
       manager_(manager),
       glitch_reporter_(SystemGlitchReporter::StreamType::kRender),
       format_(),
+      params_(params),
       opened_(false),
       volume_(1.0),
       packet_size_frames_(0),
@@ -102,6 +103,10 @@
       source_(nullptr),
       log_callback_(std::move(log_callback)) {
   DCHECK(manager_);
+#if BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+  if (params.format() == AudioParameters::AUDIO_BITSTREAM_DTS)
+    DCHECK_EQ(GetShareMode(), AUDCLNT_SHAREMODE_EXCLUSIVE);
+#endif  // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
 
   // The empty string is used to indicate a default device and the
   // |device_role_| member controls whether that's the default or default
@@ -138,13 +143,28 @@
   format_.Samples.wValidBitsPerSample = format->wBitsPerSample;
   format_.dwChannelMask = CoreAudioUtil::GetChannelConfig(device_id, eRender);
   format_.SubFormat = KSDATAFORMAT_SUBTYPE_IEEE_FLOAT;
-  SendLogMessage("%s => (audio engine format=[%s])", __func__,
-                 CoreAudioUtil::WaveFormatToString(&format_).c_str());
 
   // Store size (in different units) of audio packets which we expect to
   // get from the audio endpoint device in each render event.
   packet_size_frames_ = params.frames_per_buffer();
   packet_size_bytes_ = params.GetBytesPerBuffer(kSampleFormatF32);
+
+#if BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+  if (params.format() == AudioParameters::AUDIO_BITSTREAM_DTS) {
+    format_.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_DTS;
+    format->wBitsPerSample = 16;
+    format->nChannels = 2;
+    format_.dwChannelMask = KSAUDIO_SPEAKER_STEREO;
+    format_.Samples.wValidBitsPerSample = format->wBitsPerSample;
+    format->nBlockAlign = (format->wBitsPerSample / 8) * format->nChannels;
+    format->nAvgBytesPerSec = format->nSamplesPerSec * format->nBlockAlign;
+    packet_size_frames_ = 512;
+    packet_size_bytes_ = params.GetBytesPerBuffer(kSampleFormatS16);
+  }
+#endif  // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+  SendLogMessage("%s => (audio engine format=[%s])", __func__,
+                 CoreAudioUtil::WaveFormatToString(&format_).c_str());
+
   SendLogMessage("%s => (packet size=[%zu bytes/%zu audio frames/%.3f ms])",
                  __func__, packet_size_bytes_, packet_size_frames_,
                  params.GetBufferDuration().InMillisecondsF());
@@ -462,6 +482,10 @@
 void WASAPIAudioOutputStream::Flush() {}
 
 void WASAPIAudioOutputStream::SetVolume(double volume) {
+#if BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+  if (params_.format() == AudioParameters::AUDIO_BITSTREAM_DTS)
+    return;
+#endif  // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
   SendLogMessage("%s({volume=%.2f})", __func__, volume);
   float volume_float = static_cast<float>(volume);
   if (volume_float < 0.0f || volume_float > 1.0f) {
@@ -707,11 +731,29 @@
     // Read a data packet from the registered client source and
     // deliver a delay estimate in the same callback to the client.
 
+#if BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+    if (params_.format() == AudioParameters::AUDIO_BITSTREAM_DTS) {
+      std::unique_ptr<AudioBus> audio_bus(
+          AudioBus::WrapMemory(params_, audio_data));
+      audio_bus_->set_is_bitstream_format(true);
+      int frames_filled =
+          source_->OnMoreData(delay, delay_timestamp, 0, audio_bus.get());
+
+      // During pause/seek, keep the pipeline filled with zero'ed frames.
+      if (!frames_filled)
+        memset(audio_data, 0, packet_size_frames_);
+
+      // Release the buffer space acquired in the GetBuffer() call.
+      // Render silence if we were not able to fill up the buffer totally.
+      audio_render_client_->ReleaseBuffer(packet_size_frames_, 0);
+      num_written_frames_ += packet_size_frames_;
+      return true;
+    }
+#endif  // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
     int frames_filled =
         source_->OnMoreData(delay, delay_timestamp, 0, audio_bus_.get());
     uint32_t num_filled_bytes = frames_filled * format_.Format.nBlockAlign;
     DCHECK_LE(num_filled_bytes, packet_size_bytes_);
-
     audio_bus_->Scale(volume_);
 
     // We skip clipping since that occurs at the shared memory boundary.
diff --git a/media/audio/win/audio_low_latency_output_win.h b/media/audio/win/audio_low_latency_output_win.h
index a22a296..19950f1 100644
--- a/media/audio/win/audio_low_latency_output_win.h
+++ b/media/audio/win/audio_low_latency_output_win.h
@@ -207,6 +207,9 @@
   // Use this for multiple channel and hi-resolution PCM data.
   WAVEFORMATPCMEX format_;
 
+  // AudioParameters from the constructor.
+  const AudioParameters params_;
+
   // Set to true when stream is successfully opened.
   bool opened_;
 
diff --git a/media/audio/win/audio_manager_win.cc b/media/audio/win/audio_manager_win.cc
index 740defe4..611e3006 100644
--- a/media/audio/win/audio_manager_win.cc
+++ b/media/audio/win/audio_manager_win.cc
@@ -13,7 +13,6 @@
 #include <setupapi.h>
 #include <stddef.h>
 
-#include <memory>
 #include <utility>
 
 #include "base/bind.h"
@@ -35,6 +34,10 @@
 #include "media/base/limits.h"
 #include "media/base/media_switches.h"
 
+#if BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+#include "media/audio/win/audio_edid_scan_win.h"
+#endif  // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+
 // The following are defined in various DDK headers, and we (re)define them here
 // to avoid adding the DDK as a chrome dependency.
 #define DRV_QUERYDEVICEINTERFACE 0x80c
@@ -66,7 +69,26 @@
 // determined from the system
 constexpr int kFallbackBufferSize = 2048;
 
-static int NumberOfWaveOutBuffers() {
+namespace {
+
+#if BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+// Passthrough flags as defined in audio_edid_scan_win.h
+uint32_t bitstream_passthrough_bitmask_;
+
+// Convert result from ScanEdidBitstreams to AudioParameters::Format values
+uint32_t ConvertEdidScanToAudioBitstreamFlags(uint32_t edid_scan) {
+  uint32_t bitstream_codecs = 0;
+  if (edid_scan & kAudioBitstreamPcmLinear)
+    bitstream_codecs |= AudioParameters::AUDIO_PCM_LINEAR;
+  if (edid_scan & kAudioBitstreamDts)
+    bitstream_codecs |= AudioParameters::AUDIO_BITSTREAM_DTS;
+  if (edid_scan & kAudioBitstreamDtsHd)
+    bitstream_codecs |= AudioParameters::AUDIO_BITSTREAM_DTS_HD;
+  return bitstream_codecs;
+}
+#endif  // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+
+int NumberOfWaveOutBuffers() {
   // Use the user provided buffer count if provided.
   int buffers = 0;
   std::string buffers_str(
@@ -79,6 +101,8 @@
   return 3;
 }
 
+}  // namespace
+
 AudioManagerWin::AudioManagerWin(std::unique_ptr<AudioThread> audio_thread,
                                  AudioLogFactory* audio_log_factory)
     : AudioManagerBase(std::move(audio_thread), audio_log_factory) {
@@ -218,6 +242,17 @@
                                          WAVE_MAPPER);
 }
 
+AudioOutputStream* AudioManagerWin::MakeBitstreamOutputStream(
+    const AudioParameters& params,
+    const std::string& device_id,
+    const LogCallback& log_callback) {
+#if BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+  return MakeLowLatencyOutputStream(params, device_id, log_callback);
+#else   // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+  return nullptr;
+#endif  // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+}
+
 // Factory for the implementations of AudioOutputStream for
 // AUDIO_PCM_LOW_LATENCY mode. Two implementations should suffice most
 // windows user's needs.
@@ -227,7 +262,14 @@
     const AudioParameters& params,
     const std::string& device_id,
     const LogCallback& log_callback) {
-  DCHECK_EQ(AudioParameters::AUDIO_PCM_LOW_LATENCY, params.format());
+#if BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+  DCHECK(params.format() == AudioParameters::AUDIO_BITSTREAM_DTS ||
+         params.format() == AudioParameters::AUDIO_PCM_LOW_LATENCY)
+      << params.format();
+#else
+  DCHECK_EQ(params.format(), AudioParameters::AUDIO_PCM_LOW_LATENCY);
+#endif
+
   if (params.channels() > kWinMaxChannels)
     return nullptr;
 
@@ -297,8 +339,6 @@
   int min_buffer_size = 0;
   int max_buffer_size = 0;
 
-  // TODO(henrika): Remove kEnableExclusiveAudio and related code. It doesn't
-  // look like it's used.
   if (cmd_line->HasSwitch(switches::kEnableExclusiveAudio)) {
     // TODO(rtoy): tune these values for best possible WebAudio
     // performance. WebRTC works well at 48kHz and a buffer size of 480
@@ -384,10 +424,20 @@
   if (user_buffer_size)
     buffer_size = user_buffer_size;
 
-  AudioParameters params(
-      AudioParameters::AUDIO_PCM_LOW_LATENCY, channel_layout_config,
-      sample_rate, buffer_size,
-      AudioParameters::HardwareCapabilities(min_buffer_size, max_buffer_size));
+  AudioParameters::HardwareCapabilities hardware_capabilities(min_buffer_size,
+                                                              max_buffer_size);
+#if BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+  hardware_capabilities.bitstream_formats = 0;
+  hardware_capabilities.require_encapsulation = false;
+  if (WASAPIAudioOutputStream::GetShareMode() == AUDCLNT_SHAREMODE_EXCLUSIVE) {
+    hardware_capabilities.bitstream_formats =
+        ConvertEdidScanToAudioBitstreamFlags(bitstream_passthrough_bitmask_);
+    hardware_capabilities.require_encapsulation = true;
+  }
+#endif  // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+  AudioParameters params(AudioParameters::AUDIO_PCM_LOW_LATENCY,
+                         channel_layout_config, sample_rate, buffer_size,
+                         hardware_capabilities);
   params.set_effects(effects);
   DCHECK(params.IsValid());
   return params;
@@ -401,4 +451,10 @@
                                            audio_log_factory);
 }
 
+#if BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+void AudioManagerWin::SetBitstreamPassthroughBitmask(uint32_t bitmask) {
+  bitstream_passthrough_bitmask_ = bitmask;
+}
+#endif  // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+
 }  // namespace media
diff --git a/media/audio/win/audio_manager_win.h b/media/audio/win/audio_manager_win.h
index 77d99fd..2f6bf87 100644
--- a/media/audio/win/audio_manager_win.h
+++ b/media/audio/win/audio_manager_win.h
@@ -9,6 +9,7 @@
 #include <string>
 
 #include "media/audio/audio_manager_base.h"
+#include "media/media_buildflags.h"
 
 namespace media {
 
@@ -54,11 +55,20 @@
       const AudioParameters& params,
       const std::string& device_id,
       const LogCallback& log_callback) override;
+  AudioOutputStream* MakeBitstreamOutputStream(
+      const AudioParameters& params,
+      const std::string& device_id,
+      const LogCallback& log_callback) override;
   std::string GetDefaultInputDeviceID() override;
   std::string GetDefaultOutputDeviceID() override;
   std::string GetCommunicationsInputDeviceID() override;
   std::string GetCommunicationsOutputDeviceID() override;
 
+#if BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+  // Bitmask indicating which audio codecs are playable using passthrough.
+  static void SetBitstreamPassthroughBitmask(uint32_t bitmask);
+#endif  // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+
  protected:
   void ShutdownOnAudioThread() override;
   AudioParameters GetPreferredOutputStreamParameters(
@@ -75,6 +85,10 @@
 
   void GetAudioDeviceNamesImpl(bool input, AudioDeviceNames* device_names);
 
+  AudioOutputStream* MakeOutputStream(const AudioParameters& params,
+                                      const std::string& device_id,
+                                      const LogCallback& log_callback);
+
   // Listen for output device changes.
   std::unique_ptr<AudioDeviceListenerWin> output_device_listener_;
 };
diff --git a/media/base/audio_buffer.cc b/media/base/audio_buffer.cc
index 00d98ff..d5fa472 100644
--- a/media/base/audio_buffer.cc
+++ b/media/base/audio_buffer.cc
@@ -100,6 +100,7 @@
   CHECK_GE(channel_count_, 0);
   CHECK_LE(channel_count_, limits::kMaxChannels);
   CHECK_GE(frame_count, 0);
+
   DCHECK(channel_layout == CHANNEL_LAYOUT_DISCRETE ||
          ChannelLayoutToChannelCount(channel_layout) == channel_count);
 
@@ -112,6 +113,25 @@
 
   CHECK_NE(sample_format, kUnknownSampleFormat);
 
+  if (sample_format == kSampleFormatIECDts) {
+    // Allocate a contiguous buffer for IEC61937 encapsulated Bitstream.
+    data_size_ = frame_count * bytes_per_channel * channel_count_;
+    if (pool_) {
+      data_ = pool_->CreateBuffer(data_size_);
+    } else {
+      // Aligned buffer ensures compatibility with AudioBus
+      // and audio sink which have been optimized for SSE
+      data_.reset(static_cast<uint8_t*>(
+          base::AlignedAlloc(data_size, kChannelAlignment)));
+    }
+    channel_data_.reserve(1);
+    channel_data_.push_back(data_.get());
+
+    // Copy data
+    if (data)
+      memcpy(channel_data_[0], data[0], data_size);
+    return;
+  }
   int data_size_per_channel = frame_count * bytes_per_channel;
   if (IsPlanar(sample_format)) {
     DCHECK(!IsBitstreamFormat()) << sample_format_;
@@ -510,6 +530,7 @@
       case kSampleFormatMpegHAudio:
       case kSampleFormatDts:
       case kSampleFormatDtsxP2:
+      case kSampleFormatIECDts:
         NOTREACHED() << "Invalid sample format!";
     }
   } else {
diff --git a/media/base/audio_bus.cc b/media/base/audio_bus.cc
index 3ff3e00..5213c5db 100644
--- a/media/base/audio_bus.cc
+++ b/media/base/audio_bus.cc
@@ -7,7 +7,6 @@
 #include <stddef.h>
 #include <stdint.h>
 
-#include <cstring>
 #include <limits>
 #include <utility>
 
diff --git a/media/base/audio_parameters.cc b/media/base/audio_parameters.cc
index 75d4ef8..d9c200e 100644
--- a/media/base/audio_parameters.cc
+++ b/media/base/audio_parameters.cc
@@ -61,6 +61,8 @@
       return "BITSTREAM_DTSX_P2";
     case AudioParameters::AUDIO_BITSTREAM_IEC61937:
       return "BITSTREAM_IEC61937";
+    case AudioParameters::AUDIO_BITSTREAM_DTS_HD_MA:
+      return "BITSTREAM_DTS_HD_MA";
     case AudioParameters::AUDIO_FAKE:
       return "FAKE";
   }
@@ -215,7 +217,9 @@
       << hardware_capabilities_->min_frames_per_buffer
       << ", max_frames_per_buffer: "
       << hardware_capabilities_->max_frames_per_buffer
-      << ", bitstream_formats:" << hardware_capabilities_->bitstream_formats;
+      << ", bitstream_formats:" << hardware_capabilities_->bitstream_formats
+      << ", require_encapsulation:"
+      << hardware_capabilities_->require_encapsulation;
   }
   return s.str();
 }
@@ -270,6 +274,11 @@
   channel_layout_config_ = {layout, channels};
 }
 
+bool AudioParameters::RequireEncapsulation() const {
+  return hardware_capabilities_.has_value() &&
+         hardware_capabilities_->require_encapsulation;
+}
+
 // static
 AudioParameters AudioParameters::UnavailableDeviceParams() {
   // Using 10 ms buffer since WebAudioMediaStreamSource::DeliverRebufferedAudio
diff --git a/media/base/audio_parameters.h b/media/base/audio_parameters.h
index 33e6148..6ba5066 100644
--- a/media/base/audio_parameters.h
+++ b/media/base/audio_parameters.h
@@ -154,17 +154,19 @@
   // GENERATED_JAVA_CLASS_NAME_OVERRIDE: AudioEncodingFormat
   // GENERATED_JAVA_PREFIX_TO_STRIP: AUDIO_
   enum Format {
-    AUDIO_FAKE = 0x00,                // Creates a fake AudioOutputStream object
-    AUDIO_PCM_LINEAR = 0x01,          // PCM is 'raw' amplitude samples.
-    AUDIO_PCM_LOW_LATENCY = 0x02,     // Linear PCM, low latency requested.
-    AUDIO_BITSTREAM_AC3 = 0x04,       // Compressed AC3 bitstream.
-    AUDIO_BITSTREAM_EAC3 = 0x08,      // Compressed E-AC3 bitstream.
-    AUDIO_BITSTREAM_DTS = 0x10,       // Compressed DTS bitstream.
-    AUDIO_BITSTREAM_DTS_HD = 0x20,    // Compressed DTS-HD bitstream.
-    AUDIO_BITSTREAM_DTSX_P2 = 0x40,   // Compressed DTS-HD bitstream.
-    AUDIO_BITSTREAM_IEC61937 = 0x80,  // Compressed IEC61937 bitstream.
+    AUDIO_FAKE = 0x000,               // Creates a fake AudioOutputStream object
+    AUDIO_PCM_LINEAR = 0x001,         // PCM is 'raw' amplitude samples.
+    AUDIO_PCM_LOW_LATENCY = 0x002,    // Linear PCM, low latency requested.
+    AUDIO_BITSTREAM_AC3 = 0x004,      // Compressed AC3 bitstream.
+    AUDIO_BITSTREAM_EAC3 = 0x008,     // Compressed E-AC3 bitstream.
+    AUDIO_BITSTREAM_DTS = 0x010,      // Compressed DTS bitstream.
+    AUDIO_BITSTREAM_DTS_HD = 0x020,   // Compressed DTS-HD bitstream.
+    AUDIO_BITSTREAM_DTSX_P2 = 0x040,  // Compressed DTSX Profile 2 bitstream.
+    AUDIO_BITSTREAM_IEC61937 = 0x080,  // Compressed IEC61937 bitstream.
+    AUDIO_BITSTREAM_DTS_HD_MA =
+        0x100,  // Compressed DTS-HD Master Audio bitstream.
     AUDIO_FORMAT_LAST =
-        AUDIO_BITSTREAM_IEC61937,  // Only used for validation of format.
+        AUDIO_BITSTREAM_DTS_HD_MA,  // Only used for validation of format.
   };
 
   enum {
@@ -210,15 +212,18 @@
     HardwareCapabilities(int min_frames_per_buffer, int max_frames_per_buffer)
         : min_frames_per_buffer(min_frames_per_buffer),
           max_frames_per_buffer(max_frames_per_buffer),
-          bitstream_formats(0) {}
-    explicit HardwareCapabilities(int bitstream_formats)
+          bitstream_formats(0),
+          require_encapsulation(false) {}
+    HardwareCapabilities(int bitstream_formats, bool require_encapsulation)
         : min_frames_per_buffer(0),
           max_frames_per_buffer(0),
-          bitstream_formats(bitstream_formats) {}
+          bitstream_formats(bitstream_formats),
+          require_encapsulation(require_encapsulation) {}
     HardwareCapabilities()
         : min_frames_per_buffer(0),
           max_frames_per_buffer(0),
-          bitstream_formats(0) {}
+          bitstream_formats(0),
+          require_encapsulation(false) {}
 
     // Minimum and maximum buffer sizes supported by the audio hardware. Opening
     // a device with frames_per_buffer set to a value between min and max should
@@ -227,7 +232,11 @@
     // Either value can be 0 and means that the min or max is not known.
     int min_frames_per_buffer;
     int max_frames_per_buffer;
+    // Bitstream formats (OR'ed) supported by audio hardware.
     int bitstream_formats;
+    // Bitstream will need to be encapsulated in IEC61937 to be
+    // passed through to the audio hardware.
+    bool require_encapsulation;
   };
 
   AudioParameters();
@@ -284,6 +293,8 @@
 
   bool IsFormatSupportedByHardware(Format format) const;
 
+  bool RequireEncapsulation() const;
+
   void set_format(Format format) { format_ = format; }
   Format format() const { return format_; }
 
diff --git a/media/base/decoder.cc b/media/base/decoder.cc
index 227a30c4..8bd5d6af 100644
--- a/media/base/decoder.cc
+++ b/media/base/decoder.cc
@@ -71,6 +71,8 @@
       return "MediaCodecAudioDecoder";
     case AudioDecoderType::kBroker:
       return "AudioDecoderBroker";
+    case AudioDecoderType::kPassthroughDTS:
+      return "PassthroughDTSAudioDecoder";
     case AudioDecoderType::kTesting:
       return "Testing or Mock Audio decoder";
     case AudioDecoderType::kAudioToolbox:
diff --git a/media/base/decoder.h b/media/base/decoder.h
index 214f07d..40e9194 100644
--- a/media/base/decoder.h
+++ b/media/base/decoder.h
@@ -25,9 +25,10 @@
   kTesting = 6,          // Never send this to UKM, for tests only.
   kAudioToolbox = 7,     // AudioToolbox (macOS)
   kMediaFoundation = 8,  // MediaFoundationAudioDecoder
+  kPassthroughDTS = 9,   // Passthrough DTS audio
 
   // Keep this at the end and equal to the last entry.
-  kMaxValue = kMediaFoundation,
+  kMaxValue = kPassthroughDTS,
 };
 
 // List of known VideoDecoder implementations; recorded to UKM, always add new
diff --git a/media/base/ipc/media_param_traits.cc b/media/base/ipc/media_param_traits.cc
index 67593c5f..e0b8f50 100644
--- a/media/base/ipc/media_param_traits.cc
+++ b/media/base/ipc/media_param_traits.cc
@@ -80,6 +80,7 @@
   WriteParam(m, p.min_frames_per_buffer);
   WriteParam(m, p.max_frames_per_buffer);
   WriteParam(m, p.bitstream_formats);
+  WriteParam(m, p.require_encapsulation);
 }
 
 bool ParamTraits<AudioParameters::HardwareCapabilities>::Read(
@@ -87,16 +88,19 @@
     base::PickleIterator* iter,
     param_type* r) {
   int bitstream_formats;
+  bool require_encapsulation;
   int max_frames_per_buffer;
   int min_frames_per_buffer;
   if (!ReadParam(m, iter, &min_frames_per_buffer) ||
       !ReadParam(m, iter, &max_frames_per_buffer) ||
-      !ReadParam(m, iter, &bitstream_formats)) {
+      !ReadParam(m, iter, &bitstream_formats) ||
+      !ReadParam(m, iter, &require_encapsulation)) {
     return false;
   }
   r->min_frames_per_buffer = min_frames_per_buffer;
   r->max_frames_per_buffer = max_frames_per_buffer;
   r->bitstream_formats = bitstream_formats;
+  r->require_encapsulation = require_encapsulation;
   return true;
 }
 
diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc
index 0b383791..5220c7a 100644
--- a/media/base/media_switches.cc
+++ b/media/base/media_switches.cc
@@ -19,6 +19,14 @@
 // Allow users to specify a custom buffer size for debugging purpose.
 const char kAudioBufferSize[] = "audio-buffer-size";
 
+#if BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO) && BUILDFLAG(IS_WIN)
+// Audio codecs supported by the HDMI sink is retrieved from the audio
+// service process. EDID contains the Short Audio Descriptors, which list
+// the audio decoders supported, and the information is presented as a
+// bitmask of supported audio codecs.
+const char kAudioCodecsFromEDID[] = "audio-codecs-from-edid";
+#endif  // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO) && BUILDFLAG(IS_WIN)
+
 // Set a timeout (in milliseconds) for the audio service to quit if there are no
 // client connections to it. If the value is negative the service never quits.
 const char kAudioServiceQuitTimeoutMs[] = "audio-service-quit-timeout-ms";
@@ -741,6 +749,13 @@
              "HardwareSecureDecryptionFallback",
              base::FEATURE_ENABLED_BY_DEFAULT);
 
+// The minimum and maximum number of days to disable hardware secure Content
+// Decryption Module (CDM) as part of the fallback logic.
+const base::FeatureParam<int> kHardwareSecureDecryptionFallbackMinDisablingDays{
+    &kHardwareSecureDecryptionFallback, "min_disabling_days", 30};
+const base::FeatureParam<int> kHardwareSecureDecryptionFallbackMaxDisablingDays{
+    &kHardwareSecureDecryptionFallback, "max_disabling_days", 180};
+
 BASE_FEATURE(kWakeLockOptimisationHiddenMuted,
              "kWakeLockOptimisationHiddenMuted",
              base::FEATURE_ENABLED_BY_DEFAULT);
diff --git a/media/base/media_switches.h b/media/base/media_switches.h
index fc5d51a1..43673a2 100644
--- a/media/base/media_switches.h
+++ b/media/base/media_switches.h
@@ -24,6 +24,10 @@
 
 MEDIA_EXPORT extern const char kAudioBufferSize[];
 
+#if BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO) && BUILDFLAG(IS_WIN)
+MEDIA_EXPORT extern const char kAudioCodecsFromEDID[];
+#endif  // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO) && BUILDFLAG(IS_WIN)
+
 MEDIA_EXPORT extern const char kAudioServiceQuitTimeoutMs[];
 
 MEDIA_EXPORT extern const char kAutoplayPolicy[];
@@ -155,6 +159,10 @@
 MEDIA_EXPORT BASE_DECLARE_FEATURE(kHardwareSecureDecryption);
 MEDIA_EXPORT BASE_DECLARE_FEATURE(kHardwareSecureDecryptionExperiment);
 MEDIA_EXPORT BASE_DECLARE_FEATURE(kHardwareSecureDecryptionFallback);
+MEDIA_EXPORT extern const base::FeatureParam<int>
+    kHardwareSecureDecryptionFallbackMinDisablingDays;
+MEDIA_EXPORT extern const base::FeatureParam<int>
+    kHardwareSecureDecryptionFallbackMaxDisablingDays;
 MEDIA_EXPORT BASE_DECLARE_FEATURE(kInternalMediaSession);
 MEDIA_EXPORT BASE_DECLARE_FEATURE(kKeepRvfcFrameAlive);
 MEDIA_EXPORT BASE_DECLARE_FEATURE(kKeyPressMonitoring);
diff --git a/media/base/media_util.cc b/media/base/media_util.cc
index 481f61a..27451d9 100644
--- a/media/base/media_util.cc
+++ b/media/base/media_util.cc
@@ -18,6 +18,8 @@
       return AudioParameters::Format::AUDIO_BITSTREAM_EAC3;
     case AudioCodec::kDTS:
       return AudioParameters::Format::AUDIO_BITSTREAM_DTS;
+    case AudioCodec::kDTSXP2:
+      return AudioParameters::Format::AUDIO_BITSTREAM_DTSX_P2;
       // No support for DTS_HD yet as this section is related to the incoming
       // stream type. DTS_HD support is only added for audio track output to
       // support audiosink reporting DTS_HD support.
diff --git a/media/base/sample_format.cc b/media/base/sample_format.cc
index 710d390..4b973f6 100644
--- a/media/base/sample_format.cc
+++ b/media/base/sample_format.cc
@@ -30,6 +30,7 @@
     case kSampleFormatF32:
     case kSampleFormatPlanarF32:
     case kSampleFormatPlanarS32:
+    case kSampleFormatIECDts:
       return 4;
   }
 
@@ -73,6 +74,8 @@
       return "Compressed DTS bitstream";
     case kSampleFormatDtsxP2:
       return "Compressed DTSXP2 bitstream";
+    case kSampleFormatIECDts:
+      return "IEC-61937 encapsulated DTS bitstream";
   }
   NOTREACHED() << "Invalid sample format provided: " << sample_format;
   return "";
@@ -96,6 +99,7 @@
     case kSampleFormatMpegHAudio:
     case kSampleFormatDts:
     case kSampleFormatDtsxP2:
+    case kSampleFormatIECDts:
       return false;
   }
 
@@ -115,6 +119,7 @@
     case kSampleFormatMpegHAudio:
     case kSampleFormatDts:
     case kSampleFormatDtsxP2:
+    case kSampleFormatIECDts:
       return true;
     case kUnknownSampleFormat:
     case kSampleFormatPlanarU8:
@@ -135,6 +140,7 @@
     case kSampleFormatMpegHAudio:
     case kSampleFormatDts:
     case kSampleFormatDtsxP2:
+    case kSampleFormatIECDts:
       // If on-device decoding is required, the sample format will be
       // kSampleFormatS16, so it will return false. If bit-stream passthrough
       // is required, the sample format would already be
diff --git a/media/base/sample_format.h b/media/base/sample_format.h
index 9ebb14f..ed4735a80 100644
--- a/media/base/sample_format.h
+++ b/media/base/sample_format.h
@@ -29,9 +29,10 @@
   kSampleFormatPlanarU8,    // Unsigned 8-bit w/ bias of 128 planar.
   kSampleFormatDts,         // Compressed DTS audio bitstream.
   kSampleFormatDtsxP2,      // Compressed DTSX audio bitstream.
+  kSampleFormatIECDts,      // IEC-61937 encapsulated DTS audio bitstream.
 
   // Must always be equal to largest value ever logged.
-  kSampleFormatMax = kSampleFormatDtsxP2,
+  kSampleFormatMax = kSampleFormatIECDts,
 };
 
 // Returns the number of bytes used per channel for the specified
diff --git a/media/cast/encoding/external_video_encoder.cc b/media/cast/encoding/external_video_encoder.cc
index 9407afe..59be09a 100644
--- a/media/cast/encoding/external_video_encoder.cc
+++ b/media/cast/encoding/external_video_encoder.cc
@@ -90,12 +90,17 @@
   }
 #endif
 
-#if BUILDFLAG(IS_CHROMEOS) && ARCH_CPU_X86_64
+#if (BUILDFLAG(IS_CHROMEOS) && ARCH_CPU_X86_64) || \
+    (BUILDFLAG(IS_CHROMEOS_ASH) && ARCH_CPU_ARM_FAMILY)
   // The encoder also doesn't work well with some first party Chromecast
   // devices. See https://crbug.com/1342276 for more information.
   if (base::StartsWith(receiver_model_name, "Chromecast")) {
     return false;
   }
+  // Sabrina devices sometimes advertise as Eureka Dongle
+  if (base::StartsWith(receiver_model_name, "Eureka Dongle")) {
+    return false;
+  }
 #endif
 
   for (const auto& vea_profile : profiles) {
diff --git a/media/cast/encoding/external_video_encoder_unittest.cc b/media/cast/encoding/external_video_encoder_unittest.cc
index 96ce102..a70aa95 100644
--- a/media/cast/encoding/external_video_encoder_unittest.cc
+++ b/media/cast/encoding/external_video_encoder_unittest.cc
@@ -115,12 +115,14 @@
 
 TEST(ExternalVideoEncoderTest, RecommendsExternalVp8EncoderForChromecast) {
 #if BUILDFLAG(IS_CHROMEOS) && ARCH_CPU_X86_64
-  EXPECT_TRUE(ExternalVideoEncoder::IsRecommended(
+  EXPECT_FALSE(ExternalVideoEncoder::IsRecommended(
       CODEC_VIDEO_VP8, "Eureka Dongle", kValidVeaProfiles));
   EXPECT_FALSE(ExternalVideoEncoder::IsRecommended(
       CODEC_VIDEO_VP8, "Chromecast", kValidVeaProfiles));
   EXPECT_FALSE(ExternalVideoEncoder::IsRecommended(
       CODEC_VIDEO_VP8, "Chromecast Ultra", kValidVeaProfiles));
+  EXPECT_TRUE(ExternalVideoEncoder::IsRecommended(
+      CODEC_VIDEO_VP8, "Google Home", kValidVeaProfiles));
 #else
   for (const char* model_name : kFirstPartyModelNames) {
     EXPECT_TRUE(ExternalVideoEncoder::IsRecommended(
diff --git a/media/cast/sender/audio_sender.cc b/media/cast/sender/audio_sender.cc
index e279d7e..89ab257 100644
--- a/media/cast/sender/audio_sender.cc
+++ b/media/cast/sender/audio_sender.cc
@@ -9,6 +9,7 @@
 #include "base/bind.h"
 #include "base/check_op.h"
 #include "base/notreached.h"
+#include "base/trace_event/trace_event.h"
 #include "media/base/media_switches.h"
 #include "media/cast/common/openscreen_conversion_helpers.h"
 #include "media/cast/common/rtp_time.h"
@@ -132,7 +133,14 @@
 
   samples_in_encoder_ -= audio_encoder_->GetSamplesPerFrame() + samples_skipped;
   DCHECK_GE(samples_in_encoder_, 0);
-  frame_sender_->EnqueueFrame(std::move(encoded_frame));
+
+  const RtpTimeTicks rtp_timestamp = encoded_frame->rtp_timestamp;
+  if (!frame_sender_->EnqueueFrame(std::move(encoded_frame))) {
+    TRACE_EVENT_INSTANT2("cast.stream", "Audio Frame Drop (already encoded)",
+                         TRACE_EVENT_SCOPE_THREAD, "rtp_timestamp",
+                         rtp_timestamp.lower_32_bits(), "reason",
+                         "openscreen sender did not accept the frame");
+  }
 }
 
 }  // namespace media::cast
diff --git a/media/cast/sender/frame_sender.h b/media/cast/sender/frame_sender.h
index 6e7c712..031c92c 100644
--- a/media/cast/sender/frame_sender.h
+++ b/media/cast/sender/frame_sender.h
@@ -91,8 +91,9 @@
   // indication event.
   virtual bool NeedsKeyFrame() const = 0;
 
-  // Called by the encoder with the next encoded frame to send.
-  virtual void EnqueueFrame(
+  // Called by the encoder with the next encoded frame to send. Returns true
+  // if successfully enqueued.
+  virtual bool EnqueueFrame(
       std::unique_ptr<SenderEncodedFrame> encoded_frame) = 0;
 
   // Returns true if too many frames would be in-flight by encoding and sending
diff --git a/media/cast/sender/frame_sender_impl.cc b/media/cast/sender/frame_sender_impl.cc
index 5100402..6645593 100644
--- a/media/cast/sender/frame_sender_impl.cc
+++ b/media/cast/sender/frame_sender_impl.cc
@@ -304,7 +304,7 @@
   return target_playout_delay_ + (current_round_trip_time_ / 2);
 }
 
-void FrameSenderImpl::EnqueueFrame(
+bool FrameSenderImpl::EnqueueFrame(
     std::unique_ptr<SenderEncodedFrame> encoded_frame) {
   DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN));
 
@@ -401,6 +401,7 @@
       "cast.stream", name, TRACE_ID_WITH_SCOPE(name, frame_id.lower_32_bits()),
       "rtp_timestamp", encoded_frame->rtp_timestamp.lower_32_bits());
   transport_sender_->InsertFrame(config_.sender_ssrc, *encoded_frame);
+  return true;
 }
 
 void FrameSenderImpl::OnReceivedCastFeedback(
diff --git a/media/cast/sender/frame_sender_impl.h b/media/cast/sender/frame_sender_impl.h
index 70b1191e..c34e5be 100644
--- a/media/cast/sender/frame_sender_impl.h
+++ b/media/cast/sender/frame_sender_impl.h
@@ -36,7 +36,7 @@
   void SetTargetPlayoutDelay(base::TimeDelta new_target_playout_delay) override;
   base::TimeDelta GetTargetPlayoutDelay() const override;
   bool NeedsKeyFrame() const override;
-  void EnqueueFrame(std::unique_ptr<SenderEncodedFrame> encoded_frame) override;
+  bool EnqueueFrame(std::unique_ptr<SenderEncodedFrame> encoded_frame) override;
   bool ShouldDropNextFrame(base::TimeDelta frame_duration) const override;
   RtpTimeTicks GetRecordedRtpTimestamp(FrameId frame_id) const override;
   int GetUnacknowledgedFrameCount() const override;
diff --git a/media/cast/sender/openscreen_frame_sender.cc b/media/cast/sender/openscreen_frame_sender.cc
index 439836de..c129c19a 100644
--- a/media/cast/sender/openscreen_frame_sender.cc
+++ b/media/cast/sender/openscreen_frame_sender.cc
@@ -21,6 +21,7 @@
 #include "media/cast/common/sender_encoded_frame.h"
 #include "media/cast/constants.h"
 #include "third_party/openscreen/src/cast/streaming/encoded_frame.h"
+
 namespace media::cast {
 
 // The additional number of frames that can be in-flight when input exceeds the
@@ -120,9 +121,9 @@
 
 base::TimeDelta OpenscreenFrameSender::GetInFlightMediaDuration() const {
   base::TimeDelta duration = client_.GetEncoderBacklogDuration();
-  if (!last_sent_frame_id_.is_null()) {
+  if (!last_enqueued_frame_id_.is_null()) {
     const RtpTimeTicks newest_timestamp =
-        GetRecordedRtpTimestamp(last_sent_frame_id_);
+        GetRecordedRtpTimestamp(last_enqueued_frame_id_);
     duration +=
         ToTimeDelta(sender_->GetInFlightMediaDuration(newest_timestamp));
   }
@@ -131,7 +132,7 @@
 
 RtpTimeTicks OpenscreenFrameSender::GetRecordedRtpTimestamp(
     FrameId frame_id) const {
-  if (static_cast<size_t>(std::abs(last_sent_frame_id_ - frame_id)) >=
+  if (static_cast<size_t>(std::abs(last_enqueued_frame_id_ - frame_id)) >=
       std::size(frame_rtp_timestamps_)) {
     return {};
   }
@@ -183,23 +184,23 @@
   return ToTimeDelta(sender_->GetMaxInFlightMediaDuration());
 }
 
-void OpenscreenFrameSender::EnqueueFrame(
+bool OpenscreenFrameSender::EnqueueFrame(
     std::unique_ptr<SenderEncodedFrame> encoded_frame) {
   DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN));
 
-  VLOG_WITH_SSRC(2) << "About to send another frame: last_sent="
-                    << last_sent_frame_id_;
+  VLOG_WITH_SSRC(2) << "About to send another frame. last enqueued="
+                    << last_enqueued_frame_id_;
 
-  // We don't use the `FrameId` given to us by the encoder since the Open Screen
-  // Sender requires us to use the result of `GetNextFrameId`.
-  const FrameId frame_id = sender_->GetNextFrameId();
+  DCHECK_GE(encoded_frame->frame_id, last_enqueued_frame_id_)
+      << "enqueued frames out of order.";
+  last_enqueued_frame_id_ = encoded_frame->frame_id;
   last_send_time_ = cast_environment_->Clock()->NowTicks();
 
-  DCHECK(frame_id > last_sent_frame_id_) << "enqueued frames out of order.";
-  last_sent_frame_id_ = frame_id;
   if (!is_audio_ && encoded_frame->dependency ==
                         openscreen::cast::EncodedFrame::Dependency::kKeyFrame) {
-    VLOG_WITH_SSRC(1) << "Sending encoded key frame, id=" << frame_id;
+    VLOG_WITH_SSRC(1) << "Sending encoded key frame, id="
+                      << encoded_frame->frame_id;
+    frame_id_map_.clear();
   }
 
   auto encode_event = std::make_unique<FrameEvent>();
@@ -207,7 +208,7 @@
   encode_event->type = FRAME_ENCODED;
   encode_event->media_type = is_audio_ ? AUDIO_EVENT : VIDEO_EVENT;
   encode_event->rtp_timestamp = encoded_frame->rtp_timestamp;
-  encode_event->frame_id = frame_id;
+  encode_event->frame_id = encoded_frame->frame_id;
   encode_event->size = base::checked_cast<uint32_t>(encoded_frame->data.size());
   encode_event->key_frame =
       encoded_frame->dependency ==
@@ -220,7 +221,8 @@
   // production.
   cast_environment_->logger()->DispatchFrameEvent(std::move(encode_event));
 
-  RecordLatestFrameTimestamps(frame_id, encoded_frame->reference_time,
+  RecordLatestFrameTimestamps(encoded_frame->frame_id,
+                              encoded_frame->reference_time,
                               encoded_frame->rtp_timestamp);
 
   if (!is_audio_) {
@@ -238,14 +240,27 @@
 
   static const char* name = is_audio_ ? "Audio Transport" : "Video Transport";
   TRACE_EVENT_NESTABLE_ASYNC_BEGIN1(
-      "cast.stream", name, TRACE_ID_WITH_SCOPE(name, frame_id.lower_32_bits()),
+      "cast.stream", name,
+      TRACE_ID_WITH_SCOPE(name, encoded_frame->frame_id.lower_32_bits()),
       "rtp_timestamp", encoded_frame->rtp_timestamp.lower_32_bits());
 
-  const auto result =
-      sender_->EnqueueFrame(ToOpenscreenEncodedFrame(*encoded_frame));
-  if (result != openscreen::cast::Sender::EnqueueFrameResult::OK) {
-    VLOG(1) << "Failed to enqueue frame " << frame_id << ", dropping...";
-  }
+  // The `FrameId` given to us by child classes such as VideoSender should
+  // be at least the result of openscreen::cast::Sender::GetNextFrameId(). If
+  // the Open Screen Sender choose to not send a frame, it does not advance the
+  // frame identifier.
+  const FrameId openscreen_frame_id = sender_->GetNextFrameId();
+  DCHECK_GE(encoded_frame->frame_id, openscreen_frame_id);
+  frame_id_map_.insert_or_assign(encoded_frame->frame_id, openscreen_frame_id);
+
+  // Finally, convert to an Open Screen encoded frame using the equivalent frame
+  // identifiers generated by the Open Screen sender.
+  auto openscreen_frame = ToOpenscreenEncodedFrame(*encoded_frame);
+  openscreen_frame.frame_id = openscreen_frame_id;
+  openscreen_frame.referenced_frame_id =
+      frame_id_map_[encoded_frame->referenced_frame_id];
+  const auto result = sender_->EnqueueFrame(std::move(openscreen_frame));
+
+  return result == openscreen::cast::Sender::EnqueueFrameResult::OK;
 }
 
 void OpenscreenFrameSender::OnReceivedCastFeedback(
diff --git a/media/cast/sender/openscreen_frame_sender.h b/media/cast/sender/openscreen_frame_sender.h
index 76b62ae..352892cc5 100644
--- a/media/cast/sender/openscreen_frame_sender.h
+++ b/media/cast/sender/openscreen_frame_sender.h
@@ -7,6 +7,7 @@
 
 #include <stdint.h>
 
+#include "base/containers/flat_map.h"
 #include "base/memory/raw_ptr.h"
 #include "base/memory/ref_counted.h"
 #include "base/memory/weak_ptr.h"
@@ -48,7 +49,7 @@
   void SetTargetPlayoutDelay(base::TimeDelta new_target_playout_delay) override;
   base::TimeDelta GetTargetPlayoutDelay() const override;
   bool NeedsKeyFrame() const override;
-  void EnqueueFrame(std::unique_ptr<SenderEncodedFrame> encoded_frame) override;
+  bool EnqueueFrame(std::unique_ptr<SenderEncodedFrame> encoded_frame) override;
   bool ShouldDropNextFrame(base::TimeDelta frame_duration) const override;
   RtpTimeTicks GetRecordedRtpTimestamp(FrameId frame_id) const override;
   int GetUnacknowledgedFrameCount() const override;
@@ -115,9 +116,15 @@
   // last time any frame was sent or re-sent.
   base::TimeTicks last_send_time_;
 
-  // The ID of the last frame sent.  This member is invalid until
+  // The ID of the last enqueued frame. This member is invalid until
   // |!last_send_time_.is_null()|.
-  FrameId last_sent_frame_id_;
+  FrameId last_enqueued_frame_id_;
+
+  // Since the encoder emits frames that depend on each other, and the Open
+  // Screen sender demands that we use its FrameIDs for enqueued frames, we
+  // have to keep a map of the encoder's frame id to the Open Screen sender's
+  // frame id. This map is cleared on each keyframe.
+  base::flat_map<FrameId, FrameId> frame_id_map_;
 
   // This is the maximum delay that the sender should get ack from receiver.
   // Counts how many RTCP reports are being "aggressively" sent (i.e., one per
diff --git a/media/cast/sender/video_sender.cc b/media/cast/sender/video_sender.cc
index 64e9a13..d634127 100644
--- a/media/cast/sender/video_sender.cc
+++ b/media/cast/sender/video_sender.cc
@@ -15,6 +15,7 @@
 #include "base/trace_event/trace_event.h"
 #include "media/base/media_switches.h"
 #include "media/cast/common/openscreen_conversion_helpers.h"
+#include "media/cast/common/rtp_time.h"
 #include "media/cast/common/sender_encoded_frame.h"
 #include "media/cast/encoding/video_encoder.h"
 #include "media/cast/net/cast_transport_config.h"
@@ -375,7 +376,19 @@
       feedback_cb_.Run(feedback);
   }
 
-  frame_sender_->EnqueueFrame(std::move(encoded_frame));
+  const RtpTimeTicks rtp_timestamp = encoded_frame->rtp_timestamp;
+  if (!frame_sender_->EnqueueFrame(std::move(encoded_frame))) {
+    // Since we have dropped an already encoded frame, which is much worse than
+    // dropping a raw frame above, we need to flush the encoder and emit a new
+    // keyframe.
+    video_encoder_->EmitFrames();
+    video_encoder_->GenerateKeyFrame();
+
+    TRACE_EVENT_INSTANT2("cast.stream", "Video Frame Drop (already encoded)",
+                         TRACE_EVENT_SCOPE_THREAD, "rtp_timestamp",
+                         rtp_timestamp.lower_32_bits(), "reason",
+                         "openscreen sender did not accept the frame");
+  }
 }
 
 }  // namespace media::cast
diff --git a/media/filters/BUILD.gn b/media/filters/BUILD.gn
index 6a341e2..129afcc 100644
--- a/media/filters/BUILD.gn
+++ b/media/filters/BUILD.gn
@@ -214,6 +214,12 @@
       "mac/audio_toolbox_audio_encoder.h",
     ]
   }
+  if (is_win && enable_platform_dts_audio) {
+    sources += [
+      "passthrough_dts_audio_decoder.cc",
+      "passthrough_dts_audio_decoder.h",
+    ]
+  }
   if (is_win) {
     sources += [
       "win/media_foundation_utils.cc",
diff --git a/media/filters/android/media_codec_audio_decoder.cc b/media/filters/android/media_codec_audio_decoder.cc
index ffc27355..f90596d 100644
--- a/media/filters/android/media_codec_audio_decoder.cc
+++ b/media/filters/android/media_codec_audio_decoder.cc
@@ -443,10 +443,12 @@
     } else if (config_.codec() == AudioCodec::kEAC3) {
       frame_count = Ac3Util::ParseTotalEac3SampleCount(
           audio_buffer->channel_data()[0], out.size);
+#if BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
     } else if (config_.codec() == AudioCodec::kDTS) {
       frame_count = media::dts::ParseTotalSampleCount(
           audio_buffer->channel_data()[0], out.size, AudioCodec::kDTS);
       DVLOG(2) << ": DTS Frame Count = " << frame_count;
+#endif  // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
     } else {
       NOTREACHED() << "Unsupported passthrough format.";
     }
diff --git a/media/filters/passthrough_dts_audio_decoder.cc b/media/filters/passthrough_dts_audio_decoder.cc
new file mode 100644
index 0000000..a1cb03ed
--- /dev/null
+++ b/media/filters/passthrough_dts_audio_decoder.cc
@@ -0,0 +1,116 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "media/filters/passthrough_dts_audio_decoder.h"
+
+#include "media/base/audio_buffer.h"
+#include "media/base/bind_to_current_loop.h"
+#include "media/formats/dts/dts_util.h"
+
+namespace media {
+
+PassthroughDTSAudioDecoder::PassthroughDTSAudioDecoder(
+    const scoped_refptr<base::SequencedTaskRunner>& task_runner,
+    MediaLog* media_log)
+    : task_runner_(task_runner),
+      media_log_(media_log),
+      pool_(new AudioBufferMemoryPool()) {
+  DETACH_FROM_SEQUENCE(sequence_checker_);
+}
+
+PassthroughDTSAudioDecoder::~PassthroughDTSAudioDecoder() {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+}
+
+AudioDecoderType PassthroughDTSAudioDecoder::GetDecoderType() const {
+  return AudioDecoderType::kPassthroughDTS;
+}
+
+void PassthroughDTSAudioDecoder::Initialize(const AudioDecoderConfig& config,
+                                            CdmContext* /* cdm_context */,
+                                            InitCB init_cb,
+                                            const OutputCB& output_cb,
+                                            const WaitingCB& /* waiting_cb */) {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  DCHECK(config.IsValidConfig());
+  InitCB bound_init_cb = BindToCurrentLoop(std::move(init_cb));
+  if (config.is_encrypted()) {
+    std::move(bound_init_cb)
+        .Run(DecoderStatus(DecoderStatus::Codes::kUnsupportedEncryptionMode,
+                           "PassthroughDTSAudioDecoder does not support "
+                           "encrypted content"));
+    return;
+  }
+
+  if (config.target_output_sample_format() != kSampleFormatDts) {
+    std::move(bound_init_cb)
+        .Run(
+            DecoderStatus(DecoderStatus::Codes::kUnsupportedConfig,
+                          "PassthroughDTSAudioDecoder does not support codec"));
+    return;
+  }
+
+  // Success!
+  config_ = config;
+  output_cb_ = BindToCurrentLoop(output_cb);
+  std::move(bound_init_cb).Run(OkStatus());
+}
+
+void PassthroughDTSAudioDecoder::Decode(scoped_refptr<DecoderBuffer> buffer,
+                                        DecodeCB decode_cb) {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  DCHECK(decode_cb);
+  DecodeCB decode_cb_bound = BindToCurrentLoop(std::move(decode_cb));
+
+  if (buffer->end_of_stream()) {
+    std::move(decode_cb_bound).Run(DecoderStatus::Codes::kOk);
+    return;
+  }
+
+  ProcessBuffer(*buffer, std::move(decode_cb_bound));
+}
+
+void PassthroughDTSAudioDecoder::Reset(base::OnceClosure closure) {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+
+  task_runner_->PostTask(FROM_HERE, std::move(closure));
+}
+
+void PassthroughDTSAudioDecoder::ProcessBuffer(const DecoderBuffer& buffer,
+                                               DecodeCB decode_cb) {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+
+  // Make sure we are notified if http://crbug.com/49709 returns.  Issue also
+  // occurs with some damaged files.
+  if (!buffer.end_of_stream() && buffer.timestamp() == kNoTimestamp) {
+    DVLOG(1) << "Received a buffer without timestamps!";
+    std::move(decode_cb).Run(DecoderStatus::Codes::kFailed);
+    return;
+  }
+  EncapsulateFrame(buffer);
+
+  std::move(decode_cb).Run(DecoderStatus::Codes::kOk);
+}
+
+void PassthroughDTSAudioDecoder::EncapsulateFrame(const DecoderBuffer& buffer) {
+  if (config_.target_output_sample_format() != kSampleFormatDts)
+    return;
+  const size_t samples_per_frame = dts::GetDTSSamplesPerFrame(config_.codec());
+  const size_t dts_frame_size = 2 * 2 * samples_per_frame;
+  std::vector<uint8_t> output_buffer(dts_frame_size);
+
+  // Encapsulated a compressed DTS frame per IEC61937
+  base::span<const uint8_t> input_data;
+  input_data = base::span<const uint8_t>(buffer.data(), buffer.data_size());
+  dts::WrapDTSWithIEC61937(input_data, output_buffer, config_.codec());
+
+  // Create a mono channel "buffer" to hold IEC encapsulated bitstream
+  uint8_t* output_channels[1] = {output_buffer.data()};
+  scoped_refptr<AudioBuffer> output = AudioBuffer::CopyBitstreamFrom(
+      kSampleFormatIECDts, CHANNEL_LAYOUT_MONO, 1, config_.samples_per_second(),
+      samples_per_frame, output_channels, dts_frame_size, buffer.timestamp());
+  output_cb_.Run(output);
+}
+
+}  // namespace media
diff --git a/media/filters/passthrough_dts_audio_decoder.h b/media/filters/passthrough_dts_audio_decoder.h
new file mode 100644
index 0000000..e62ba1b
--- /dev/null
+++ b/media/filters/passthrough_dts_audio_decoder.h
@@ -0,0 +1,70 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef MEDIA_FILTERS_PASSTHROUGH_DTS_AUDIO_DECODER_H_
+#define MEDIA_FILTERS_PASSTHROUGH_DTS_AUDIO_DECODER_H_
+
+#include "media/base/audio_buffer.h"
+#include "media/base/audio_decoder.h"
+#include "media/base/media_log.h"
+#include "media/base/sample_format.h"
+
+namespace base {
+class SequencedTaskRunner;
+}
+
+namespace media {
+
+class DecoderBuffer;
+
+// PassthroughDTSAudioDecoder does not decode DTS audio frames. Instead,
+// every DTS audio frame is encapsulated in IEC-61937 frame, which is
+// then pass to a compatible HDMI audio sink for actual decoding.
+// All public APIs and callbacks are trampolined to the |task_runner_| so
+// that no locks are required for thread safety.
+class MEDIA_EXPORT PassthroughDTSAudioDecoder : public AudioDecoder {
+ public:
+  PassthroughDTSAudioDecoder(
+      const scoped_refptr<base::SequencedTaskRunner>& task_runner,
+      MediaLog* media_log);
+  PassthroughDTSAudioDecoder(const PassthroughDTSAudioDecoder&) = delete;
+  PassthroughDTSAudioDecoder& operator=(const PassthroughDTSAudioDecoder&) =
+      delete;
+  ~PassthroughDTSAudioDecoder() override;
+
+  // AudioDecoder implementation.
+  AudioDecoderType GetDecoderType() const override;
+  void Initialize(const AudioDecoderConfig& config,
+                  CdmContext* cdm_context,
+                  InitCB init_cb,
+                  const OutputCB& output_cb,
+                  const WaitingCB& waiting_cb) override;
+  void Decode(scoped_refptr<DecoderBuffer> buffer, DecodeCB decode_cb) override;
+  void Reset(base::OnceClosure closure) override;
+
+ private:
+  // Reset decoder and call |reset_cb_|.
+  void DoReset();
+
+  // Process an unencrypted buffer with a DTS audio frame.
+  void ProcessBuffer(const DecoderBuffer& buffer, DecodeCB decode_cb);
+
+  // Encapsulate a DTS audio frame in IEC-61937.
+  void EncapsulateFrame(const DecoderBuffer& buffer);
+
+  scoped_refptr<base::SequencedTaskRunner> task_runner_;
+  SEQUENCE_CHECKER(sequence_checker_);
+
+  OutputCB output_cb_;
+
+  AudioDecoderConfig config_;
+
+  MediaLog* media_log_;
+
+  scoped_refptr<AudioBufferMemoryPool> pool_;
+};
+
+}  // namespace media
+
+#endif  // MEDIA_FILTERS_PASSTHROUGH_DTS_AUDIO_DECODER_H_
diff --git a/media/filters/win/media_foundation_audio_decoder.cc b/media/filters/win/media_foundation_audio_decoder.cc
index 8d125db..0299d92 100644
--- a/media/filters/win/media_foundation_audio_decoder.cc
+++ b/media/filters/win/media_foundation_audio_decoder.cc
@@ -85,7 +85,7 @@
                                              InitCB init_cb,
                                              const OutputCB& output_cb,
                                              const WaitingCB& waiting_cb) {
-#if BUILDFLAG(USE_PROPRIETARY_CODECS) && BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+#if BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
   if (config.codec() != AudioCodec::kDTS &&
       config.codec() != AudioCodec::kDTSXP2) {
     std::move(init_cb).Run(
@@ -93,10 +93,9 @@
                       "MFT Codec does not support DTS content"));
     return;
   }
-#else
+#else  // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
 #error "MediaFoundationAudioDecoder requires proprietary codecs and DTS audio"
-#endif  // BUILDFLAG(USE_PROPRIETARY_CODECS) &&
-        // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+#endif  // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
 
   // FIXME: MFT will need to be signed by a Microsoft Certificate
   //        to support a secured chain of custody on Windows.
@@ -119,14 +118,13 @@
   config_ = config;
   output_cb_ = output_cb;
 
-#if BUILDFLAG(USE_PROPRIETARY_CODECS) && BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+#if BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
   if (config.codec() == AudioCodec::kDTS ||
       config.codec() == AudioCodec::kDTSXP2) {
     std::move(init_cb).Run(
         CreateDecoder() ? OkStatus() : DecoderStatus::Codes::kUnsupportedCodec);
   }
-#endif  // BUILDFLAG(USE_PROPRIETARY_CODECS) &&
-        // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+#endif  // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
 }
 
 void MediaFoundationAudioDecoder::Decode(scoped_refptr<DecoderBuffer> buffer,
@@ -231,20 +229,19 @@
   // for a codec pump), but alas MFT_ENUM_FLAG_ASYNC_MFT returns no matches :(
   MFT_REGISTER_TYPE_INFO type_info;
   switch (config_.codec()) {
-#if BUILDFLAG(USE_PROPRIETARY_CODECS) && BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+#if BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
     case AudioCodec::kDTSXP2:
       type_info = {MFMediaType_Audio, MFAudioFormat_DTS_UHD};
       break;
     case AudioCodec::kDTS:
       type_info = {MFMediaType_Audio, MFAudioFormat_DTS_RAW};
       break;
-#endif  // BUILDFLAG(USE_PROPRIETARY_CODECS) &&
-        // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+#endif  // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
     default:
       type_info = {MFMediaType_Audio, MFAudioFormat_Base};
   }
 
-  IMFActivate** acts = NULL;
+  base::win::ScopedCoMem<IMFActivate*> acts;
   UINT32 acts_num = 0;
   ::MFTEnumEx(MFT_CATEGORY_AUDIO_DECODER,
               MFT_ENUM_FLAG_SYNCMFT | MFT_ENUM_FLAG_LOCALMFT |
@@ -285,7 +282,7 @@
     RETURN_ON_HR_FAILURE(output_type->GetGUID(MF_MT_SUBTYPE, &out_subtype),
                          "Failed to get output subtype", false);
 
-#if BUILDFLAG(USE_PROPRIETARY_CODECS) && BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+#if BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
     if (config_.codec() == AudioCodec::kDTS ||
         config_.codec() == AudioCodec::kDTSXP2) {
       // Configuration specific to DTS Sound Unbound MFT v1.3.0
@@ -319,8 +316,7 @@
         }
       }
     }
-#endif  // BUILDFLAG(USE_PROPRIETARY_CODECS) &&
-        // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+#endif  // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
     if (!output_sample_) {
       output_type.Reset();
       continue;
@@ -354,6 +350,7 @@
                       "Sample rate is not supported", false);
 
     timestamp_helper_ = std::make_unique<AudioTimestampHelper>(sample_rate_);
+    decoder_->ProcessMessage(MFT_MESSAGE_NOTIFY_BEGIN_STREAMING, 0);
     return true;
   }
   RETURN_ON_HR_FAILURE(decoder_->SetOutputType(0, output_type.Get(), 0),
@@ -363,13 +360,12 @@
 
 int GetBytesPerFrame(AudioCodec codec) {
   switch (codec) {
-#if BUILDFLAG(USE_PROPRIETARY_CODECS) && BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+#if BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
     // DTS Sound Unbound MFT v1.3 supports 24-bit PCM output only
     case AudioCodec::kDTS:
     case AudioCodec::kDTSXP2:
       return 3;
-#endif  // BUILDFLAG(USE_PROPRIETARY_CODECS) &&
-        // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+#endif  // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
     default:
       return 4;
   }
@@ -432,7 +428,7 @@
                                 channel_count_, sample_rate_, frames, pool_);
   audio_buffer->set_timestamp(timestamp_helper_->GetTimestamp());
 
-#if BUILDFLAG(USE_PROPRIETARY_CODECS) && BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+#if BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
   // DTS Sound Unbound MFT v1.3.0 outputs 24-bit PCM samples, and will
   // be converted to 32-bit float
   if (config_.codec() == AudioCodec::kDTS ||
@@ -449,8 +445,7 @@
       }
     }
   }
-#endif  // BUILDFLAG(USE_PROPRIETARY_CODECS) &&
-        // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+#endif  // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
 
   timestamp_helper_->AddFrames(frames);
 
diff --git a/media/filters/win/media_foundation_utils.cc b/media/filters/win/media_foundation_utils.cc
index 2206e4ff..4431d2d 100644
--- a/media/filters/win/media_foundation_utils.cc
+++ b/media/filters/win/media_foundation_utils.cc
@@ -72,13 +72,12 @@
       return MFAudioFormat_ALAC;
     case AudioCodec::kAC3:
       return MFAudioFormat_Dolby_AC3;
-#if BUILDFLAG(USE_PROPRIETARY_CODECS) && BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+#if BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
     case AudioCodec::kDTS:
       return MFAudioFormat_DTS_RAW;
     case AudioCodec::kDTSXP2:
       return MFAudioFormat_DTS_UHD;
-#endif  // BUILDFLAG(USE_PROPRIETARY_CODECS) &&
-        // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+#endif  // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
     default:
       return GUID_NULL;
   }
diff --git a/media/formats/BUILD.gn b/media/formats/BUILD.gn
index 02e97d8..2e6fc95 100644
--- a/media/formats/BUILD.gn
+++ b/media/formats/BUILD.gn
@@ -24,10 +24,6 @@
     "common/offset_byte_queue.h",
     "common/opus_constants.cc",
     "common/opus_constants.h",
-    "dts/dts_stream_parser.cc",
-    "dts/dts_stream_parser.h",
-    "dts/dts_util.cc",
-    "dts/dts_util.h",
     "mp4/bitstream_converter.cc",
     "mp4/bitstream_converter.h",
     "mp4/box_definitions.cc",
@@ -128,8 +124,12 @@
     ]
   }
 
-  if (proprietary_codecs && enable_platform_dts_audio) {
+  if (enable_platform_dts_audio) {
     sources += [
+      "dts/dts_stream_parser.cc",
+      "dts/dts_stream_parser.h",
+      "dts/dts_util.cc",
+      "dts/dts_util.h",
       "mp4/dts.cc",
       "mp4/dts.h",
       "mp4/dtsx.cc",
@@ -262,7 +262,6 @@
   sources = [
     "ac3/ac3_util_unittest.cc",
     "common/offset_byte_queue_unittest.cc",
-    "dts/dts_util_unittest.cc",
     "mpeg/mpeg1_audio_stream_parser_unittest.cc",
     "webm/webm_cluster_parser_unittest.cc",
     "webm/webm_content_encodings_client_unittest.cc",
@@ -299,6 +298,7 @@
 
     if (enable_platform_dts_audio) {
       sources += [
+        "dts/dts_util_unittest.cc",
         "mp4/dts_unittest.cc",
         "mp4/dtsx_unittest.cc",
       ]
diff --git a/media/formats/dts/dts_util.cc b/media/formats/dts/dts_util.cc
index ed1d980..fe05ced 100644
--- a/media/formats/dts/dts_util.cc
+++ b/media/formats/dts/dts_util.cc
@@ -5,7 +5,8 @@
 #include "media/formats/dts/dts_util.h"
 
 #include "base/logging.h"
-#include "base/stl_util.h"
+#include "base/sys_byteorder.h"
+#include "media/base/audio_parameters.h"
 #include "media/base/bit_reader.h"
 #include "media/formats/dts/dts_stream_parser.h"
 
@@ -113,6 +114,72 @@
   return total_sample_count;
 }
 
+namespace {
+
+constexpr size_t kDTSSamplesPerFrame = 512;
+constexpr size_t kDTSXP2SamplesPerFrame = 1024;
+
+}  // namespace
+
+int WrapDTSWithIEC61937(base::span<const uint8_t> input_data_s,
+                        base::span<uint8_t> output_data_s,
+                        AudioCodec dts_codec_type) {
+  if (dts_codec_type == AudioCodec::kDTS) {
+    // IEC 61937 frame for DTS-CA (IEC 61937-5) is defined as
+    // 2 bytes per sample * 2 channel * 512 samples per frame.
+    constexpr size_t kDTSFrameSize = 2 * 2 * kDTSSamplesPerFrame;
+    static constexpr uint8_t kDTSCAHeader[] = {0x72, 0xF8, 0x1F, 0x4E,
+                                               0x0B, 0x00, 0x00, 0x20};
+
+    // Output bytes: header + data + optional 2-byte alignment
+    size_t output_bytes = sizeof(kDTSCAHeader) + input_data_s.size();
+    if (output_bytes & 1)
+      output_bytes++;
+
+    // Header + input data must fit in output buffer, limited to one DTS frame
+    if (input_data_s.size() > kDTSFrameSize - sizeof(kDTSCAHeader) ||
+        output_bytes > output_data_s.size()) {
+      return 0;
+    }
+
+    // Copy header to output buffer
+    memcpy(output_data_s.data(), kDTSCAHeader, sizeof(kDTSCAHeader));
+
+    // Use 16-bit span for 16-bit byte swap
+    base::span<const uint16_t> input_16(
+        reinterpret_cast<const uint16_t*>(input_data_s.data()),
+        input_data_s.size() / 2);
+    output_data_s = output_data_s.subspan(sizeof(kDTSCAHeader));
+    base::span<uint16_t> output_16(
+        reinterpret_cast<uint16_t*>(output_data_s.data()),
+        output_data_s.size() / 2);
+
+    auto output_16_iterator = base::ranges::transform(
+        input_16.begin(), input_16.end(), output_16.begin(),
+        [](uint16_t n) -> uint16_t { return base::ByteSwap(n); });
+
+    // Zero fill the remaining output buffer
+    std::fill(output_16_iterator, output_16.end(), 0);
+
+    return kDTSFrameSize;
+  }
+  if (dts_codec_type == AudioCodec::kDTSXP2) {
+    NOTIMPLEMENTED();
+  }
+  return 0;
+}
+
+int GetDTSSamplesPerFrame(AudioCodec dts_codec_type) {
+  switch (dts_codec_type) {
+    case AudioCodec::kDTS:
+      return kDTSSamplesPerFrame;
+    case AudioCodec::kDTSXP2:
+      return kDTSXP2SamplesPerFrame;
+    default:
+      return 0;
+  }
+}
+
 }  // namespace dts
 
 }  // namespace media
diff --git a/media/formats/dts/dts_util.h b/media/formats/dts/dts_util.h
index 7c8efb8..214720d 100644
--- a/media/formats/dts/dts_util.h
+++ b/media/formats/dts/dts_util.h
@@ -8,6 +8,7 @@
 #include <stddef.h>
 #include <stdint.h>
 
+#include "base/containers/span.h"
 #include "media/base/audio_codecs.h"
 #include "media/base/media_export.h"
 
@@ -21,6 +22,16 @@
                                        size_t size,
                                        AudioCodec dts_codec_type);
 
+// Encapsulate a single DTS audio frame with IEC 61937 encapsulation to
+// allow IEC 61937 frame to pass through to audio sink (HDMI/SPDIF).
+// Return the size of the IEC 61937 frame.
+MEDIA_EXPORT int WrapDTSWithIEC61937(base::span<const uint8_t> input_data,
+                                     base::span<uint8_t> output_data,
+                                     AudioCodec dts_codec_type);
+
+// Return the number of audio samples per DTS audio frame.
+MEDIA_EXPORT int GetDTSSamplesPerFrame(AudioCodec dts_codec_type);
+
 }  // namespace dts
 
 }  // namespace media
diff --git a/media/formats/mp4/box_definitions.cc b/media/formats/mp4/box_definitions.cc
index 026192d..c0a89d5 100644
--- a/media/formats/mp4/box_definitions.cc
+++ b/media/formats/mp4/box_definitions.cc
@@ -1478,7 +1478,7 @@
   return true;
 }
 
-#if BUILDFLAG(USE_PROPRIETARY_CODECS) && BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+#if BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
 DtsSpecificBox::DtsSpecificBox() {}
 
 DtsSpecificBox::DtsSpecificBox(const DtsSpecificBox& other) = default;
@@ -1518,8 +1518,7 @@
 
   return true;
 }
-#endif  // BUILDFLAG(USE_PROPRIETARY_CODECS) &&
-        // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+#endif  // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
 
 AudioSampleEntry::AudioSampleEntry()
     : format(FOURCC_NULL),
@@ -1572,7 +1571,7 @@
                         "OpusSpecificBox STREAMINFO channel count");
   }
 
-#if BUILDFLAG(USE_PROPRIETARY_CODECS) && BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+#if BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
   if (format == FOURCC_DTSC) {
     RCHECK_MEDIA_LOGGED(reader->ReadChild(&ddts), reader->media_log(),
                         "Failure parsing DtsSpecificBox (ddts)");
@@ -1580,8 +1579,7 @@
     RCHECK_MEDIA_LOGGED(reader->ReadChild(&udts), reader->media_log(),
                         "Failure parsing DtsUhdSpecificBox (udts)");
   }
-#endif  // BUILDFLAG(USE_PROPRIETARY_CODECS) &&
-        // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+#endif  // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
 
   // Read the FLACSpecificBox, even if CENC is signalled.
   if (format == FOURCC_FLAC ||
diff --git a/media/formats/mp4/box_definitions.h b/media/formats/mp4/box_definitions.h
index 0d9a04e..8362f4c3 100644
--- a/media/formats/mp4/box_definitions.h
+++ b/media/formats/mp4/box_definitions.h
@@ -382,7 +382,7 @@
   uint32_t sample_rate;
 };
 
-#if BUILDFLAG(USE_PROPRIETARY_CODECS) && BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+#if BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
 struct MEDIA_EXPORT DtsSpecificBox : Box {
   DECLARE_BOX_METHODS(DtsSpecificBox);
   DTS dts;
@@ -392,8 +392,7 @@
   DECLARE_BOX_METHODS(DtsUhdSpecificBox);
   DTSX dtsx;
 };
-#endif  // BUILDFLAG(USE_PROPRIETARY_CODECS) &&
-        // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+#endif  // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
 
 struct MEDIA_EXPORT AudioSampleEntry : Box {
   DECLARE_BOX_METHODS(AudioSampleEntry);
@@ -408,11 +407,10 @@
   ElementaryStreamDescriptor esds;
   FlacSpecificBox dfla;
   OpusSpecificBox dops;
-#if BUILDFLAG(USE_PROPRIETARY_CODECS) && BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+#if BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
   DtsSpecificBox ddts;
   DtsUhdSpecificBox udts;
-#endif  // BUILDFLAG(USE_PROPRIETARY_CODECS) &&
-        // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+#endif  // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
 };
 
 struct MEDIA_EXPORT SampleDescription : Box {
diff --git a/media/formats/mp4/fourccs.h b/media/formats/mp4/fourccs.h
index 7180532..130441e 100644
--- a/media/formats/mp4/fourccs.h
+++ b/media/formats/mp4/fourccs.h
@@ -133,13 +133,12 @@
   FOURCC_VP09 = 0x76703039,
   FOURCC_VPCC = 0x76706343,
   FOURCC_WIDE = 0x77696465,
-#if BUILDFLAG(USE_PROPRIETARY_CODECS) && BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+#if BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
   FOURCC_DTSC = 0x64747363,  // "dtsc"
   FOURCC_DTSX = 0x64747378,  // "dtsx"
   FOURCC_DDTS = 0x64647473,  // "ddts"
   FOURCC_UDTS = 0x75647473,  // "udts"
-#endif                       // BUILDFLAG(USE_PROPRIETARY_CODECS) &&
-                             // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+#endif                       // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
 };
 
 const inline std::string FourCCToString(FourCC fourcc) {
diff --git a/media/formats/mp4/mp4_stream_parser.cc b/media/formats/mp4/mp4_stream_parser.cc
index 9a4843c..e8ad908 100644
--- a/media/formats/mp4/mp4_stream_parser.cc
+++ b/media/formats/mp4/mp4_stream_parser.cc
@@ -314,10 +314,9 @@
 #if BUILDFLAG(ENABLE_PLATFORM_AC3_EAC3_AUDIO)
           audio_format != FOURCC_AC3 && audio_format != FOURCC_EAC3 &&
 #endif
-#if BUILDFLAG(USE_PROPRIETARY_CODECS) && BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+#if BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
           audio_format != FOURCC_DTSC && audio_format != FOURCC_DTSX &&
-#endif  // BUILDFLAG(USE_PROPRIETARY_CODECS) &&
-        // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+#endif  // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
 #if BUILDFLAG(ENABLE_PLATFORM_MPEG_H_AUDIO)
           audio_format != FOURCC_MHM1 && audio_format != FOURCC_MHA1 &&
 #endif
@@ -386,7 +385,7 @@
           if (audio_format == FOURCC_DTSX)
             audio_type = kDTSX;
         }
-#endif
+#endif  // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
         DVLOG(1) << "audio_type 0x" << std::hex << static_cast<int>(audio_type);
         if (audio_object_types_.find(audio_type) == audio_object_types_.end()) {
           MEDIA_LOG(ERROR, media_log_)
diff --git a/media/gpu/chromeos/libyuv_image_processor_backend.cc b/media/gpu/chromeos/libyuv_image_processor_backend.cc
index 9c42e2e7..56e0eec9 100644
--- a/media/gpu/chromeos/libyuv_image_processor_backend.cc
+++ b/media/gpu/chromeos/libyuv_image_processor_backend.cc
@@ -423,8 +423,20 @@
 
       case PIXEL_FORMAT_NV12:
         // MM21 mode.
-        if (input_config_.fourcc == Fourcc(Fourcc::MM21))
-          return LIBYUV_FUNC(MM21ToNV12, Y_UV_DATA(input), Y_UV_DATA_W(output));
+        if (input_config_.fourcc == Fourcc(Fourcc::MM21)) {
+          // The X and Y of the input rectangle seem to have a more complicated
+          // relationship with the channel offsets. This is what we have managed
+          // to figure out. (b/248991039)
+          const int luma_offset =
+              input->visible_rect().x() * (input->visible_rect().y() - 1);
+          const int chroma_offset = luma_offset / 2 - input->visible_rect().y();
+          return libyuv::MM21ToNV12(
+              input->visible_data(VideoFrame::kYPlane) + luma_offset,
+              input->stride(VideoFrame::kYPlane),
+              input->visible_data(VideoFrame::kUVPlane) + chroma_offset,
+              input->stride(VideoFrame::kUVPlane), Y_UV_DATA_W(output),
+              output->visible_rect().width(), output->visible_rect().height());
+        }
 
         // Rotation mode.
         if (relative_rotation_ != VIDEO_ROTATION_0) {
diff --git a/media/mojo/services/gpu_mojo_media_client_win.cc b/media/mojo/services/gpu_mojo_media_client_win.cc
index 67ed18f..d8bb56b 100644
--- a/media/mojo/services/gpu_mojo_media_client_win.cc
+++ b/media/mojo/services/gpu_mojo_media_client_win.cc
@@ -9,10 +9,9 @@
 #include "media/base/audio_decoder.h"
 #include "media/base/media_switches.h"
 #include "media/base/offloading_audio_encoder.h"
-#if BUILDFLAG(USE_PROPRIETARY_CODECS) && BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+#if BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
 #include "media/filters/win/media_foundation_audio_decoder.h"
-#endif  // BUILDFLAG(USE_PROPRIETARY_CODECS) &&
-        // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+#endif  // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
 #include "media/gpu/ipc/service/vda_video_decoder.h"
 #include "media/gpu/windows/d3d11_video_decoder.h"
 #include "media/gpu/windows/mf_audio_encoder.h"
@@ -88,12 +87,11 @@
 
 std::unique_ptr<AudioDecoder> CreatePlatformAudioDecoder(
     scoped_refptr<base::SingleThreadTaskRunner> task_runner) {
-#if BUILDFLAG(USE_PROPRIETARY_CODECS) && BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+#if BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
   return MediaFoundationAudioDecoder::Create(std::move(task_runner));
-#else
+#else   // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
   return nullptr;
-#endif  // BUILDFLAG(USE_PROPRIETARY_CODECS) &&
-        // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+#endif  // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
 }
 
 VideoDecoderType GetPlatformDecoderImplementationType(
diff --git a/media/mojo/services/media_foundation_mojo_media_client.cc b/media/mojo/services/media_foundation_mojo_media_client.cc
index 04ca557..2279639 100644
--- a/media/mojo/services/media_foundation_mojo_media_client.cc
+++ b/media/mojo/services/media_foundation_mojo_media_client.cc
@@ -8,10 +8,9 @@
 #include "media/cdm/win/media_foundation_cdm_factory.h"
 #include "media/mojo/services/media_foundation_renderer_wrapper.h"
 #include "media/mojo/services/mojo_cdm_helper.h"
-#if BUILDFLAG(USE_PROPRIETARY_CODECS) && BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+#if BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
 #include "media/filters/win/media_foundation_audio_decoder.h"
-#endif  // BUILDFLAG(USE_PROPRIETARY_CODECS) &&
-        // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+#endif  // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
 
 namespace media {
 
@@ -26,12 +25,11 @@
 std::unique_ptr<AudioDecoder>
 MediaFoundationMojoMediaClient::CreateAudioDecoder(
     scoped_refptr<base::SingleThreadTaskRunner> task_runner) {
-#if BUILDFLAG(USE_PROPRIETARY_CODECS) && BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+#if BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
   return std::make_unique<MediaFoundationAudioDecoder>(task_runner);
-#else
+#else   // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
   return nullptr;
-#endif  // BUILDFLAG(USE_PROPRIETARY_CODECS) &&
-        // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+#endif  // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
 }
 
 std::unique_ptr<Renderer>
diff --git a/media/renderers/audio_renderer_impl.cc b/media/renderers/audio_renderer_impl.cc
index 3242c90..65bab13c 100644
--- a/media/renderers/audio_renderer_impl.cc
+++ b/media/renderers/audio_renderer_impl.cc
@@ -473,6 +473,10 @@
 
   SampleFormat target_output_sample_format = kUnknownSampleFormat;
   if (is_passthrough_) {
+    ChannelLayout channel_layout =
+        stream->audio_decoder_config().channel_layout();
+    int channels = stream->audio_decoder_config().channels();
+    int bytes_per_frame = stream->audio_decoder_config().bytes_per_frame();
     AudioParameters::Format format = AudioParameters::AUDIO_FAKE;
     // For DTS and Dolby formats, set target_output_sample_format to the
     // respective bit-stream format so that passthrough decoder will be selected
@@ -486,9 +490,11 @@
     } else if (codec == AudioCodec::kDTS) {
       format = AudioParameters::AUDIO_BITSTREAM_DTS;
       target_output_sample_format = kSampleFormatDts;
-    } else if (codec == AudioCodec::kDTSXP2) {
-      format = AudioParameters::AUDIO_BITSTREAM_DTSX_P2;
-      target_output_sample_format = kSampleFormatDtsxP2;
+      if (hw_params.RequireEncapsulation()) {
+        bytes_per_frame = 1;
+        channel_layout = CHANNEL_LAYOUT_MONO;
+        channels = 1;
+      }
     } else {
       NOTREACHED();
     }
@@ -500,12 +506,9 @@
     // count for bitstream formats will be carried in additional fields of
     // AudioBus.
     const int buffer_size =
-        AudioParameters::kMaxFramesPerCompressedAudioBuffer *
-        stream->audio_decoder_config().bytes_per_frame();
+        AudioParameters::kMaxFramesPerCompressedAudioBuffer * bytes_per_frame;
 
-    audio_parameters_.Reset(format,
-                            {stream->audio_decoder_config().channel_layout(),
-                             stream->audio_decoder_config().channels()},
+    audio_parameters_.Reset(format, {channel_layout, channels},
                             stream->audio_decoder_config().samples_per_second(),
                             buffer_size);
     buffer_converter_.reset();
diff --git a/media/renderers/default_decoder_factory.cc b/media/renderers/default_decoder_factory.cc
index 382667e0..3ed218de 100644
--- a/media/renderers/default_decoder_factory.cc
+++ b/media/renderers/default_decoder_factory.cc
@@ -30,6 +30,10 @@
 #include "media/filters/ffmpeg_audio_decoder.h"
 #endif
 
+#if BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+#include "media/filters/passthrough_dts_audio_decoder.h"
+#endif  // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+
 #if BUILDFLAG(ENABLE_FFMPEG_VIDEO_DECODERS)
 #include "media/filters/ffmpeg_video_decoder.h"
 #endif
@@ -67,6 +71,11 @@
   }
 #endif
 
+#if BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO) && BUILDFLAG(IS_WIN)
+  audio_decoders->push_back(
+      std::make_unique<PassthroughDTSAudioDecoder>(task_runner, media_log));
+#endif  // BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO) && BUILDFLAG(IS_WIN)
+
 #if BUILDFLAG(ENABLE_FFMPEG)
   audio_decoders->push_back(
       std::make_unique<FFmpegAudioDecoder>(task_runner, media_log));
diff --git a/media/video/gpu_memory_buffer_video_frame_pool.cc b/media/video/gpu_memory_buffer_video_frame_pool.cc
index 4d2a16d..098650d 100644
--- a/media/video/gpu_memory_buffer_video_frame_pool.cc
+++ b/media/video/gpu_memory_buffer_video_frame_pool.cc
@@ -387,7 +387,8 @@
 // GpuMemoryBuffer can be mapped to several SharedImages (one for each plane).
 size_t NumSharedImages(GpuVideoAcceleratorFactories::OutputFormat format) {
   if (GpuMemoryBufferVideoFramePool::MultiPlaneVideoSharedImagesEnabled()) {
-    if (format == GpuVideoAcceleratorFactories::OutputFormat::NV12_SINGLE_GMB) {
+    if (format == GpuVideoAcceleratorFactories::OutputFormat::NV12_SINGLE_GMB ||
+        format == GpuVideoAcceleratorFactories::OutputFormat::P010) {
       return 2;
     }
   }
@@ -401,7 +402,8 @@
     GpuVideoAcceleratorFactories::OutputFormat format,
     size_t plane) {
   if (GpuMemoryBufferVideoFramePool::MultiPlaneVideoSharedImagesEnabled()) {
-    if (format == GpuVideoAcceleratorFactories::OutputFormat::NV12_SINGLE_GMB) {
+    if (format == GpuVideoAcceleratorFactories::OutputFormat::NV12_SINGLE_GMB ||
+        format == GpuVideoAcceleratorFactories::OutputFormat::P010) {
       return 0;
     }
   }
@@ -414,7 +416,8 @@
     GpuVideoAcceleratorFactories::OutputFormat format,
     size_t plane) {
   if (GpuMemoryBufferVideoFramePool::MultiPlaneVideoSharedImagesEnabled()) {
-    if (format == GpuVideoAcceleratorFactories::OutputFormat::NV12_SINGLE_GMB) {
+    if (format == GpuVideoAcceleratorFactories::OutputFormat::NV12_SINGLE_GMB ||
+        format == GpuVideoAcceleratorFactories::OutputFormat::P010) {
       switch (plane) {
         case 0:
           return gfx::BufferPlane::Y;
@@ -1206,13 +1209,6 @@
 
   VideoPixelFormat frame_format = VideoFormat(output_format_);
 
-#if BUILDFLAG(IS_MAC)
-  // TODO(https://crbug.com/1155760): Until individual planes can be bound as
-  // their own textures, P010 buffers are copied to F16 textures for sampling.
-  if (frame_format == PIXEL_FORMAT_P016LE)
-    frame_format = PIXEL_FORMAT_RGBAF16;
-#endif
-
   // Create the VideoFrame backed by native textures.
   scoped_refptr<VideoFrame> frame = VideoFrame::WrapNativeTextures(
       frame_format, mailbox_holders, VideoFrame::ReleaseMailboxCB(), coded_size,
diff --git a/media/video/gpu_memory_buffer_video_frame_pool_unittest.cc b/media/video/gpu_memory_buffer_video_frame_pool_unittest.cc
index 204b6dc..0f6cfa7d 100644
--- a/media/video/gpu_memory_buffer_video_frame_pool_unittest.cc
+++ b/media/video/gpu_memory_buffer_video_frame_pool_unittest.cc
@@ -771,13 +771,14 @@
   RunUntilIdle();
 
   EXPECT_NE(software_frame.get(), frame.get());
-#if BUILDFLAG(IS_MAC)
-  EXPECT_EQ(PIXEL_FORMAT_RGBAF16, frame->format());
-#else
   EXPECT_EQ(PIXEL_FORMAT_P016LE, frame->format());
-#endif
+#if BUILDFLAG(IS_MAC)
+  EXPECT_EQ(2u, frame->NumTextures());
+  EXPECT_EQ(2u, sii_->shared_image_count());
+#else
   EXPECT_EQ(1u, frame->NumTextures());
   EXPECT_EQ(1u, sii_->shared_image_count());
+#endif
   EXPECT_TRUE(frame->metadata().read_lock_fences_enabled);
 
   EXPECT_EQ(1u, mock_gpu_factories_->created_memory_buffers().size());
@@ -810,13 +811,14 @@
   if (gfx::IsOddWidthMultiPlanarBuffersAllowed() &&
       gfx::IsOddHeightMultiPlanarBuffersAllowed()) {
     EXPECT_NE(software_frame.get(), frame.get());
-#if BUILDFLAG(IS_MAC)
-    EXPECT_EQ(PIXEL_FORMAT_RGBAF16, frame->format());
-#else
     EXPECT_EQ(PIXEL_FORMAT_P016LE, frame->format());
-#endif
+#if BUILDFLAG(IS_MAC)
+    EXPECT_EQ(2u, frame->NumTextures());
+    EXPECT_EQ(2u, sii_->shared_image_count());
+#else
     EXPECT_EQ(1u, frame->NumTextures());
     EXPECT_EQ(1u, sii_->shared_image_count());
+#endif
     EXPECT_TRUE(frame->metadata().read_lock_fences_enabled);
 
     EXPECT_EQ(1u, mock_gpu_factories_->created_memory_buffers().size());
diff --git a/media/video/renderable_gpu_memory_buffer_video_frame_pool.cc b/media/video/renderable_gpu_memory_buffer_video_frame_pool.cc
index 474ad6d..969a9b1 100644
--- a/media/video/renderable_gpu_memory_buffer_video_frame_pool.cc
+++ b/media/video/renderable_gpu_memory_buffer_video_frame_pool.cc
@@ -170,11 +170,13 @@
   constexpr gfx::BufferFormat kBufferFormat =
       gfx::BufferFormat::YUV_420_BIPLANAR;
 
-  // All YUV420 buffers must have dimensions dividable by 2.
-  constexpr int kI420Alignment = 2;
-  gfx::Size buffer_size_in_pixels(
-      base::bits::AlignUp(coded_size_.width(), kI420Alignment),
-      base::bits::AlignUp(coded_size_.height(), kI420Alignment));
+  // Align number of rows to 2, because it's required by YUV_420_BIPLANAR
+  // buffer allocation code.
+  // Align buffer stride to 4, because our rendering code at
+  // GLImageMemory::Initialize() requires it, since it sometimes treats
+  // Y-planes are 4 bytes per pixel textures.
+  gfx::Size buffer_size_in_pixels(base::bits::AlignUp(coded_size_.width(), 4),
+                                  base::bits::AlignUp(coded_size_.height(), 2));
 
   // Create the GpuMemoryBuffer.
   gpu_memory_buffer_ = context->CreateGpuMemoryBuffer(
diff --git a/net/BUILD.gn b/net/BUILD.gn
index 4ce0fab..57fbb73 100644
--- a/net/BUILD.gn
+++ b/net/BUILD.gn
@@ -1913,7 +1913,6 @@
     "data/ssl/certificates/ev_test.pem",
     "data/ssl/certificates/ev_test_state_only.pem",
     "data/ssl/certificates/expired_cert.pem",
-    "data/ssl/certificates/explicit-policy-chain.pem",
     "data/ssl/certificates/foaf.me.chromium-test-cert.der",
     "data/ssl/certificates/gms.hongleong.com.my-verisign-chain.pem",
     "data/ssl/certificates/google.binary.p7b",
diff --git a/net/base/url_util.cc b/net/base/url_util.cc
index 7255bb01..d2a28b0 100644
--- a/net/base/url_util.cc
+++ b/net/base/url_util.cc
@@ -20,6 +20,7 @@
 #include "base/strings/utf_string_conversions.h"
 #include "net/base/ip_address.h"
 #include "net/base/registry_controlled_domains/registry_controlled_domain.h"
+#include "third_party/abseil-cpp/absl/types/optional.h"
 #include "url/gurl.h"
 #include "url/scheme_host_port.h"
 #include "url/url_canon.h"
@@ -77,10 +78,14 @@
 
 GURL AppendOrReplaceQueryParameter(const GURL& url,
                                    const std::string& name,
-                                   const std::string& value) {
+                                   absl::optional<base::StringPiece> value) {
   bool replaced = false;
   std::string param_name = base::EscapeQueryParamValue(name, true);
-  std::string param_value = base::EscapeQueryParamValue(value, true);
+  bool should_keep_param = value.has_value();
+
+  std::string param_value;
+  if (should_keep_param)
+    param_value = base::EscapeQueryParamValue(value.value(), true);
 
   const std::string input = url.query();
   url::Component cursor(0, input.size());
@@ -94,7 +99,11 @@
     // Check |replaced| as only the first pair should be replaced.
     if (!replaced && key == param_name) {
       replaced = true;
+      if (!should_keep_param)
+        continue;
+
       key_value_pair = (param_name + "=" + param_value);
+
     } else {
       key_value_pair.assign(input, key_range.begin,
                             value_range.end() - key_range.begin);
@@ -104,7 +113,7 @@
 
     output += key_value_pair;
   }
-  if (!replaced) {
+  if (!replaced && should_keep_param) {
     if (!output.empty())
       output += "&";
 
diff --git a/net/base/url_util.h b/net/base/url_util.h
index 4148aeb..bc1f761 100644
--- a/net/base/url_util.h
+++ b/net/base/url_util.h
@@ -14,6 +14,7 @@
 
 #include "base/strings/string_piece.h"
 #include "net/base/net_export.h"
+#include "third_party/abseil-cpp/absl/types/optional.h"
 #include "url/third_party/mozilla/url_parse.h"
 
 class GURL;
@@ -40,9 +41,10 @@
                                      const std::string& value);
 
 // Returns a new GURL by appending or replacing the given query parameter name
-// and the value. If |name| appears more than once, only the first name-value
+// and the value. If `name` appears more than once, only the first name-value
 // pair is replaced. Unsafe characters in the name and the value are escaped
 // like %XX%XX. The original query component is preserved if it's present.
+// Using `absl::nullopt` for `value` will remove the `name` parameter.
 //
 // Examples:
 //
@@ -52,9 +54,13 @@
 // AppendOrReplaceQueryParameter(
 //     GURL("http://example.com?x=y&name=old"), "name", "new").spec()
 // => "http://example.com?x=y&name=new"
-NET_EXPORT GURL AppendOrReplaceQueryParameter(const GURL& url,
-                                              const std::string& name,
-                                              const std::string& value);
+// AppendOrReplaceQueryParameter(
+//     GURL("http://example.com?x=y&name=old"), "name", absl::nullopt).spec()
+// => "http://example.com?x=y&"
+NET_EXPORT GURL
+AppendOrReplaceQueryParameter(const GURL& url,
+                              const std::string& name,
+                              absl::optional<base::StringPiece> value);
 
 // Iterates over the key-value pairs in the query portion of |url|.
 // NOTE: QueryIterator stores reference to |url| and creates base::StringPiece
diff --git a/net/base/url_util_unittest.cc b/net/base/url_util_unittest.cc
index ea5d7eed..3c5ee04 100644
--- a/net/base/url_util_unittest.cc
+++ b/net/base/url_util_unittest.cc
@@ -9,6 +9,7 @@
 #include "base/format_macros.h"
 #include "base/strings/utf_string_conversions.h"
 #include "testing/gtest/include/gtest/gtest.h"
+#include "third_party/abseil-cpp/absl/types/optional.h"
 #include "url/gurl.h"
 #include "url/scheme_host_port.h"
 #include "url/url_util.h"
@@ -80,7 +81,7 @@
           GURL("http://example.com/path?name=old&existing=one&name=old"),
           "name", "new").spec());
 
-  // Preserve the content of the original params regarless of our failure to
+  // Preserve the content of the original params regardless of our failure to
   // interpret them correctly.
   EXPECT_EQ("http://example.com/path?bar&name=new&left=&"
             "=right&=&&name=again",
@@ -88,6 +89,78 @@
           GURL("http://example.com/path?bar&name=old&left=&"
                 "=right&=&&name=again"),
           "name", "new").spec());
+
+  // ----- Removing the key using nullopt value -----
+
+  // Removes the name-value pair from the URL preserving other query parameters.
+  EXPECT_EQ("http://example.com/path?abc=xyz",
+            AppendOrReplaceQueryParameter(
+                GURL("http://example.com/path?name=value&abc=xyz"), "name",
+                absl::nullopt)
+                .spec());
+
+  // Removes the name-value pair from the URL.
+  EXPECT_EQ("http://example.com/path?",
+            AppendOrReplaceQueryParameter(
+                GURL("http://example.com/path?existing=one"), "existing",
+                absl::nullopt)
+                .spec());
+
+  // Removes the first name-value pair.
+  EXPECT_EQ("http://example.com/path?c=d&e=f",
+            AppendOrReplaceQueryParameter(
+                GURL("http://example.com/path?a=b&c=d&e=f"), "a", absl::nullopt)
+                .spec());
+
+  // Removes a name-value pair in between two query params.
+  EXPECT_EQ(
+      "http://example.com/path?existing=one&hello=world",
+      AppendOrReplaceQueryParameter(
+          GURL("http://example.com/path?existing=one&replace=sure&hello=world"),
+          "replace", absl::nullopt)
+          .spec());
+
+  // Removes the last name-value pair.
+  EXPECT_EQ("http://example.com/path?existing=one",
+            AppendOrReplaceQueryParameter(
+                GURL("http://example.com/path?existing=one&replace=sure"),
+                "replace", absl::nullopt)
+                .spec());
+
+  // Removing a name-value pair with unsafe characters included. The
+  // unsafe characters should be escaped.
+  EXPECT_EQ("http://example.com/path?existing=one&hello=world",
+            AppendOrReplaceQueryParameter(
+                GURL("http://example.com/"
+                     "path?existing=one&na+me=v.alue%3D&hello=world"),
+                "na me", absl::nullopt)
+                .spec());
+
+  // Does nothing if the provided query param key does not exist.
+  EXPECT_EQ("http://example.com/path?existing=one&name=old",
+            AppendOrReplaceQueryParameter(
+                GURL("http://example.com/path?existing=one&name=old"), "old",
+                absl::nullopt)
+                .spec());
+
+  // Remove the value of first parameter with this name only.
+  EXPECT_EQ(
+      "http://example.com/path?existing=one&name=old",
+      AppendOrReplaceQueryParameter(
+          GURL("http://example.com/path?name=something&existing=one&name=old"),
+          "name", absl::nullopt)
+          .spec());
+
+  // Preserve the content of the original params regardless of our failure to
+  // interpret them correctly.
+  EXPECT_EQ(
+      "http://example.com/path?bar&left=&"
+      "=right&=&&name=again",
+      AppendOrReplaceQueryParameter(
+          GURL("http://example.com/path?bar&name=old&left=&"
+               "=right&=&&name=again"),
+          "name", absl::nullopt)
+          .spec());
 }
 
 TEST(UrlUtilTest, GetValueForKeyInQuery) {
diff --git a/net/cert/cert_verify_proc_unittest.cc b/net/cert/cert_verify_proc_unittest.cc
index 45a056d..a2e828c 100644
--- a/net/cert/cert_verify_proc_unittest.cc
+++ b/net/cert/cert_verify_proc_unittest.cc
@@ -536,20 +536,22 @@
 // length 1 because the target cert was directly trusted in the trust store.
 // Should verify OK but not with STATUS_IS_EV.
 TEST_P(CertVerifyProcInternalTest, TrustedTargetCertWithEVPolicy) {
-  // The policy that "explicit-policy-chain.pem" target certificate asserts.
+  std::unique_ptr<CertBuilder> leaf, root;
+  CertBuilder::CreateSimpleChain(&leaf, &root);
+  ASSERT_TRUE(leaf && root);
+
   static const char kEVTestCertPolicy[] = "1.2.3.4";
+  leaf->SetCertificatePolicies({kEVTestCertPolicy});
   ScopedTestEVPolicy scoped_test_ev_policy(
       EVRootCAMetadata::GetInstance(), SHA256HashValue(), kEVTestCertPolicy);
 
-  scoped_refptr<X509Certificate> cert =
-      ImportCertFromFile(GetTestCertsDirectory(), "explicit-policy-chain.pem");
-  ASSERT_TRUE(cert);
+  scoped_refptr<X509Certificate> cert = leaf->GetX509Certificate();
   ScopedTestRoot scoped_test_root(cert.get());
 
   CertVerifyResult verify_result;
   int flags = 0;
   int error =
-      Verify(cert.get(), "policy_test.example", flags,
+      Verify(cert.get(), "www.example.com", flags,
              CRLSet::BuiltinCRLSet().get(), CertificateList(), &verify_result);
   if (ScopedTestRootCanTrustTargetCert(verify_proc_type())) {
     EXPECT_THAT(error, IsOk());
@@ -567,27 +569,23 @@
 // explode if it does.
 TEST_P(CertVerifyProcInternalTest,
        TrustedTargetCertWithEVPolicyAndEVFingerprint) {
-  // The policy that "explicit-policy-chain.pem" target certificate asserts.
-  static const char kEVTestCertPolicy[] = "1.2.3.4";
-  // This the fingerprint of the "explicit-policy-chain.pem" target certificate.
-  // See net/data/ssl/certificates/explicit-policy-chain.pem
-  static const SHA256HashValue kEVTestCertFingerprint = {
-      {0x71, 0xac, 0xfa, 0x12, 0xa4, 0x42, 0x31, 0x3c, 0xff, 0x10, 0xd2,
-       0x9d, 0xb6, 0x1b, 0x4a, 0xe8, 0x25, 0x4e, 0x77, 0xd3, 0x9f, 0xa3,
-       0x2f, 0xb3, 0x19, 0x8d, 0x46, 0x9f, 0xb7, 0x73, 0x07, 0x30}};
-  ScopedTestEVPolicy scoped_test_ev_policy(EVRootCAMetadata::GetInstance(),
-                                           kEVTestCertFingerprint,
-                                           kEVTestCertPolicy);
+  std::unique_ptr<CertBuilder> leaf, root;
+  CertBuilder::CreateSimpleChain(&leaf, &root);
+  ASSERT_TRUE(leaf && root);
 
-  scoped_refptr<X509Certificate> cert =
-      ImportCertFromFile(GetTestCertsDirectory(), "explicit-policy-chain.pem");
-  ASSERT_TRUE(cert);
+  static const char kEVTestCertPolicy[] = "1.2.3.4";
+  leaf->SetCertificatePolicies({kEVTestCertPolicy});
+  ScopedTestEVPolicy scoped_test_ev_policy(
+      EVRootCAMetadata::GetInstance(),
+      X509Certificate::CalculateFingerprint256(leaf->GetCertBuffer()),
+      kEVTestCertPolicy);
+  scoped_refptr<X509Certificate> cert = leaf->GetX509Certificate();
   ScopedTestRoot scoped_test_root(cert.get());
 
   CertVerifyResult verify_result;
   int flags = 0;
   int error =
-      Verify(cert.get(), "policy_test.example", flags,
+      Verify(cert.get(), "www.example.com", flags,
              CRLSet::BuiltinCRLSet().get(), CertificateList(), &verify_result);
   if (ScopedTestRootCanTrustTargetCert(verify_proc_type())) {
     EXPECT_THAT(error, IsOk());
@@ -614,59 +612,32 @@
     return;
   }
 
-  CertificateList orig_certs = CreateCertificateListFromFile(
-      GetTestCertsDirectory(), "explicit-policy-chain.pem",
-      X509Certificate::FORMAT_AUTO);
-  ASSERT_EQ(3U, orig_certs.size());
-
   for (bool trust_the_intermediate : {false, true}) {
     SCOPED_TRACE(trust_the_intermediate);
 
     // Need to build unique certs for each try otherwise caching can break
     // things.
-    CertBuilder root(orig_certs[2]->cert_buffer(), nullptr);
-    root.SetSignatureAlgorithm(SignatureAlgorithm::kEcdsaSha256);
-    root.GenerateECKey();
-    CertBuilder intermediate(orig_certs[1]->cert_buffer(), &root);
-    intermediate.SetSignatureAlgorithm(SignatureAlgorithm::kEcdsaSha256);
-    intermediate.GenerateECKey();
-    CertBuilder leaf(orig_certs[0]->cert_buffer(), &intermediate);
-    leaf.SetSignatureAlgorithm(SignatureAlgorithm::kEcdsaSha256);
-    leaf.GenerateECKey();
+    std::unique_ptr<CertBuilder> leaf, intermediate, root;
+    CertBuilder::CreateSimpleChain(&leaf, &intermediate, &root);
+    ASSERT_TRUE(leaf && intermediate && root);
 
-    // The policy that "explicit-policy-chain.pem" target certificate asserts.
     static const char kEVTestCertPolicy[] = "1.2.3.4";
+    leaf->SetCertificatePolicies({kEVTestCertPolicy});
+    intermediate->SetCertificatePolicies({kEVTestCertPolicy});
     // Consider the root of the test chain a valid EV root for the test policy.
     ScopedTestEVPolicy scoped_test_ev_policy(
         EVRootCAMetadata::GetInstance(),
-        X509Certificate::CalculateFingerprint256(root.GetCertBuffer()),
+        X509Certificate::CalculateFingerprint256(root->GetCertBuffer()),
         kEVTestCertPolicy);
 
-    // CRLSet which covers the leaf.
-    base::StringPiece intermediate_spki;
-    ASSERT_TRUE(asn1::ExtractSPKIFromDERCert(
-        x509_util::CryptoBufferAsStringPiece(intermediate.GetCertBuffer()),
-        &intermediate_spki));
-    SHA256HashValue intermediate_spki_hash;
-    crypto::SHA256HashString(intermediate_spki, &intermediate_spki_hash,
-                             sizeof(SHA256HashValue));
-    scoped_refptr<CRLSet> crl_set =
-        CRLSet::ForTesting(false, &intermediate_spki_hash, "", "", {});
-
-    std::vector<bssl::UniquePtr<CRYPTO_BUFFER>> intermediates;
-    intermediates.push_back(bssl::UpRef(intermediate.GetCertBuffer()));
-    scoped_refptr<X509Certificate> cert = X509Certificate::CreateFromBuffer(
-        bssl::UpRef(leaf.GetCertBuffer()), std::move(intermediates));
+    scoped_refptr<X509Certificate> cert = leaf->GetX509CertificateChain();
     ASSERT_TRUE(cert.get());
 
     scoped_refptr<X509Certificate> intermediate_cert =
-        X509Certificate::CreateFromBuffer(
-            bssl::UpRef(intermediate.GetCertBuffer()), {});
+        intermediate->GetX509Certificate();
     ASSERT_TRUE(intermediate_cert.get());
 
-    scoped_refptr<X509Certificate> root_cert =
-        X509Certificate::CreateFromBuffer(bssl::UpRef(root.GetCertBuffer()),
-                                          {});
+    scoped_refptr<X509Certificate> root_cert = root->GetX509Certificate();
     ASSERT_TRUE(root_cert.get());
 
     if (!trust_the_intermediate) {
@@ -675,8 +646,9 @@
       ScopedTestRoot scoped_test_root({root_cert});
       CertVerifyResult verify_result;
       int flags = 0;
-      int error = Verify(cert.get(), "policy_test.example", flags,
-                         crl_set.get(), CertificateList(), &verify_result);
+      int error = Verify(cert.get(), "www.example.com", flags,
+                         CRLSet::BuiltinCRLSet().get(), CertificateList(),
+                         &verify_result);
       EXPECT_THAT(error, IsOk());
       ASSERT_TRUE(verify_result.verified_cert);
       // Verified chain should include the intermediate and the root.
@@ -688,8 +660,9 @@
       ScopedTestRoot scoped_test_root({intermediate_cert, root_cert});
       CertVerifyResult verify_result;
       int flags = 0;
-      int error = Verify(cert.get(), "policy_test.example", flags,
-                         crl_set.get(), CertificateList(), &verify_result);
+      int error = Verify(cert.get(), "www.example.com", flags,
+                         CRLSet::BuiltinCRLSet().get(), CertificateList(),
+                         &verify_result);
       EXPECT_THAT(error, IsOk());
       ASSERT_TRUE(verify_result.verified_cert);
       // Verified chain should only go to the trusted intermediate, not the
@@ -881,7 +854,11 @@
   }
 }
 
-// A regression test for http://crbug.com/31497.
+// A regression test for https://crbug.com/31497: If an intermediate has
+// requireExplicitPolicy in its policyConstraints extension, verification
+// should still succeed as long as some policy is valid for the chain, since
+// Chrome does not specify any required policy as an input to certificate
+// verification (allows anyPolicy).
 TEST_P(CertVerifyProcInternalTest, IntermediateCARequireExplicitPolicy) {
   if (verify_proc_type() == CERT_VERIFY_PROC_ANDROID) {
     // Disabled on Android, as the Android verification libraries require an
@@ -890,28 +867,39 @@
     return;
   }
 
-  base::FilePath certs_dir = GetTestCertsDirectory();
+  for (bool leaf_has_policy : {false, true}) {
+    SCOPED_TRACE(leaf_has_policy);
 
-  CertificateList certs = CreateCertificateListFromFile(
-      certs_dir, "explicit-policy-chain.pem", X509Certificate::FORMAT_AUTO);
-  ASSERT_EQ(3U, certs.size());
+    std::unique_ptr<CertBuilder> leaf, intermediate, root;
+    CertBuilder::CreateSimpleChain(&leaf, &intermediate, &root);
+    ASSERT_TRUE(leaf && intermediate && root);
 
-  std::vector<bssl::UniquePtr<CRYPTO_BUFFER>> intermediates;
-  intermediates.push_back(bssl::UpRef(certs[1]->cert_buffer()));
+    static const char kPolicy1[] = "1.2.3.4";
+    static const char kPolicy2[] = "1.2.3.4.5";
+    static const char kPolicy3[] = "1.2.3.5";
+    intermediate->SetCertificatePolicies({kPolicy1, kPolicy2, kPolicy3});
+    intermediate->SetPolicyConstraints(
+        /*require_explicit_policy=*/0,
+        /*inhibit_policy_mapping=*/absl::nullopt);
 
-  scoped_refptr<X509Certificate> cert = X509Certificate::CreateFromBuffer(
-      bssl::UpRef(certs[0]->cert_buffer()), std::move(intermediates));
-  ASSERT_TRUE(cert.get());
+    if (leaf_has_policy)
+      leaf->SetCertificatePolicies({kPolicy1});
 
-  ScopedTestRoot scoped_root(certs[2].get());
+    scoped_refptr<X509Certificate> cert = leaf->GetX509CertificateChain();
+    ScopedTestRoot scoped_root(root->GetX509Certificate().get());
 
-  int flags = 0;
-  CertVerifyResult verify_result;
-  int error =
-      Verify(cert.get(), "policy_test.example", flags,
-             CRLSet::BuiltinCRLSet().get(), CertificateList(), &verify_result);
-  EXPECT_THAT(error, IsOk());
-  EXPECT_EQ(0u, verify_result.cert_status);
+    int flags = 0;
+    CertVerifyResult verify_result;
+    int error = Verify(cert.get(), "www.example.com", flags,
+                       CRLSet::BuiltinCRLSet().get(), CertificateList(),
+                       &verify_result);
+    if (leaf_has_policy) {
+      EXPECT_THAT(error, IsOk());
+      EXPECT_EQ(0u, verify_result.cert_status);
+    } else {
+      EXPECT_THAT(error, IsError(ERR_CERT_INVALID));
+    }
+  }
 }
 
 TEST_P(CertVerifyProcInternalTest, RejectExpiredCert) {
diff --git a/net/data/ssl/certificates/README b/net/data/ssl/certificates/README
index 3a5c216..575c1a5 100644
--- a/net/data/ssl/certificates/README
+++ b/net/data/ssl/certificates/README
@@ -231,12 +231,6 @@
      26 Feb 2022 and are generated by
      net/data/ssl/scripts/generate-redundant-test-chains.sh.
 
-===== From net/data/ssl/scripts/generate-policy-certs.sh
-- explicit-policy-chain.pem
-     A test certificate chain with requireExplicitPolicy field set on the
-     intermediate, with SkipCerts=0. This is used for regression testing
-     http://crbug.com/31497.
-
 ===== From net/data/ssl/scripts/generate-client-certificates.sh
 - client_1.pem
 - client_1.key
diff --git a/net/data/ssl/certificates/explicit-policy-chain.pem b/net/data/ssl/certificates/explicit-policy-chain.pem
deleted file mode 100644
index 5f6c143e..0000000
--- a/net/data/ssl/certificates/explicit-policy-chain.pem
+++ /dev/null
@@ -1,230 +0,0 @@
-Certificate:
-    Data:
-        Version: 3 (0x2)
-        Serial Number: 1 (0x1)
-    Signature Algorithm: sha256WithRSAEncryption
-        Issuer: CN=Policy Test Intermediate CA
-        Validity
-            Not Before: Feb 28 23:52:34 2017 GMT
-            Not After : Feb 26 23:52:34 2027 GMT
-        Subject: CN=policy_test.example
-        Subject Public Key Info:
-            Public Key Algorithm: rsaEncryption
-                Public-Key: (2048 bit)
-                Modulus:
-                    00:b3:2a:fe:85:4f:88:af:bb:62:62:b7:03:a7:c4:
-                    d7:29:37:d6:73:31:22:93:d1:5f:33:f6:8f:bf:33:
-                    00:a6:ae:72:da:cb:3d:86:3b:f8:22:29:32:a7:4f:
-                    aa:21:fd:43:47:83:18:96:c2:5c:76:f2:9a:6a:e1:
-                    49:84:22:1f:a7:d6:d6:a9:ce:d5:06:17:e3:67:65:
-                    1b:9a:05:38:2b:ee:e5:7b:ed:4e:69:b8:13:78:bc:
-                    41:b5:19:30:6a:13:d7:94:a9:d6:63:96:54:fb:61:
-                    a6:64:3a:ec:2a:83:27:c7:85:6d:57:1b:0a:67:aa:
-                    a2:ac:56:ef:24:24:62:df:46:4d:cc:75:25:db:19:
-                    7c:75:29:41:cc:88:c1:4d:a8:cc:ec:d5:23:a0:34:
-                    e7:96:57:6a:92:f8:34:ce:26:0c:41:29:99:be:54:
-                    db:d9:6f:45:5d:f7:f2:6d:c2:8b:fe:e6:4a:29:4f:
-                    74:8b:70:d5:8f:7f:64:b7:70:c6:2c:5a:01:d5:1d:
-                    6b:bb:ad:9f:3f:44:33:fe:dc:60:9a:79:a6:dc:ac:
-                    fb:79:f9:b5:f0:7f:e0:ea:96:e5:1a:bf:24:3c:e4:
-                    4f:55:3c:64:c0:d2:28:ee:b3:8d:c4:9b:a4:63:60:
-                    eb:ca:28:54:7e:d1:61:e9:cb:f6:14:d1:77:f5:f3:
-                    aa:89
-                Exponent: 65537 (0x10001)
-        X509v3 extensions:
-            X509v3 Basic Constraints: critical
-                CA:FALSE
-            X509v3 Extended Key Usage: 
-                TLS Web Server Authentication, TLS Web Client Authentication
-            X509v3 Certificate Policies: 
-                Policy: 1.2.3.4
-
-            X509v3 Subject Alternative Name: 
-                DNS:policy_test.example
-    Signature Algorithm: sha256WithRSAEncryption
-         c4:94:39:60:06:55:5d:2e:af:55:e2:ab:e5:b5:fc:96:fd:24:
-         c2:08:80:fd:55:e4:d1:5c:c8:44:d2:9f:0c:0f:1a:47:2f:da:
-         33:f9:1b:11:aa:27:1c:81:e0:ba:0e:77:26:97:08:6b:80:2e:
-         81:d6:e2:37:22:33:75:31:33:41:0e:40:1a:bd:b7:8a:3e:95:
-         b6:d4:1f:bf:30:ae:75:e5:45:32:85:67:33:56:c1:42:30:7f:
-         bf:9c:ad:bc:69:91:a9:71:f9:96:1e:85:b9:7b:ea:45:ee:85:
-         1a:50:8e:05:04:69:fc:86:2b:52:54:9b:5e:f6:a0:8f:49:0d:
-         f9:d0:63:94:4e:04:e3:eb:fb:47:17:79:76:00:0c:d1:da:2c:
-         1e:8c:11:04:92:9b:01:a5:38:fb:3f:8b:7f:27:04:07:af:40:
-         8b:f3:62:e0:7e:d2:37:e5:ea:ef:98:ef:92:d7:06:59:ee:e5:
-         83:e0:f5:4a:9a:9e:cf:38:11:e1:f8:f3:9d:3d:21:4c:ea:6b:
-         34:44:e1:2c:5e:eb:0e:cd:77:8a:5a:a8:40:f9:03:ff:f4:47:
-         a7:f8:1d:d0:43:38:b6:06:c2:67:2a:42:92:44:ad:6d:c9:e7:
-         d0:60:89:82:21:fc:c5:ea:e6:21:94:26:a3:76:02:05:c5:4c:
-         34:d3:5f:2d
------BEGIN CERTIFICATE-----
-MIIDIDCCAgigAwIBAgIBATANBgkqhkiG9w0BAQsFADAmMSQwIgYDVQQDDBtQb2xp
-Y3kgVGVzdCBJbnRlcm1lZGlhdGUgQ0EwHhcNMTcwMjI4MjM1MjM0WhcNMjcwMjI2
-MjM1MjM0WjAeMRwwGgYDVQQDDBNwb2xpY3lfdGVzdC5leGFtcGxlMIIBIjANBgkq
-hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsyr+hU+Ir7tiYrcDp8TXKTfWczEik9Ff
-M/aPvzMApq5y2ss9hjv4Iikyp0+qIf1DR4MYlsJcdvKaauFJhCIfp9bWqc7VBhfj
-Z2UbmgU4K+7le+1OabgTeLxBtRkwahPXlKnWY5ZU+2GmZDrsKoMnx4VtVxsKZ6qi
-rFbvJCRi30ZNzHUl2xl8dSlBzIjBTajM7NUjoDTnlldqkvg0ziYMQSmZvlTb2W9F
-XffybcKL/uZKKU90i3DVj39kt3DGLFoB1R1ru62fP0Qz/txgmnmm3Kz7efm18H/g
-6pblGr8kPORPVTxkwNIo7rONxJukY2DryihUftFh6cv2FNF39fOqiQIDAQABo2Ew
-XzAMBgNVHRMBAf8EAjAAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAQ
-BgNVHSAECTAHMAUGAyoDBDAeBgNVHREEFzAVghNwb2xpY3lfdGVzdC5leGFtcGxl
-MA0GCSqGSIb3DQEBCwUAA4IBAQDElDlgBlVdLq9V4qvltfyW/STCCID9VeTRXMhE
-0p8MDxpHL9oz+RsRqiccgeC6DncmlwhrgC6B1uI3IjN1MTNBDkAavbeKPpW21B+/
-MK515UUyhWczVsFCMH+/nK28aZGpcfmWHoW5e+pF7oUaUI4FBGn8hitSVJte9qCP
-SQ350GOUTgTj6/tHF3l2AAzR2iwejBEEkpsBpTj7P4t/JwQHr0CL82LgftI35erv
-mO+S1wZZ7uWD4PVKmp7POBHh+POdPSFM6ms0ROEsXusOzXeKWqhA+QP/9Een+B3Q
-Qzi2BsJnKkKSRK1tyefQYImCIfzF6uYhlCajdgIFxUw0018t
------END CERTIFICATE-----
-Certificate:
-    Data:
-        Version: 3 (0x2)
-        Serial Number: 1 (0x1)
-    Signature Algorithm: sha256WithRSAEncryption
-        Issuer: CN=Policy Test Root CA
-        Validity
-            Not Before: Feb 28 23:52:34 2017 GMT
-            Not After : Feb 26 23:52:34 2027 GMT
-        Subject: CN=Policy Test Intermediate CA
-        Subject Public Key Info:
-            Public Key Algorithm: rsaEncryption
-                Public-Key: (2048 bit)
-                Modulus:
-                    00:c9:2b:9e:41:e1:bd:db:2c:15:20:25:6b:02:2f:
-                    9d:f5:10:12:22:2e:c4:93:ee:99:1c:92:50:02:d4:
-                    70:49:cc:bf:92:54:e0:04:5a:52:d8:c9:5e:74:1a:
-                    74:57:22:20:7a:8e:d8:bc:d2:02:bb:85:ec:9b:6b:
-                    80:51:d2:a4:47:6e:f6:fb:16:e2:d8:7b:58:5e:e5:
-                    22:62:68:e9:c9:f6:ff:0a:f9:ca:65:da:12:da:24:
-                    55:de:43:ef:51:54:d2:ac:db:ec:d6:13:5b:29:e1:
-                    6e:66:a1:71:f0:88:9b:23:d6:e1:79:aa:b6:76:7d:
-                    63:f6:19:63:14:5e:db:9f:28:1d:07:92:db:69:8f:
-                    fb:d5:4c:de:eb:3a:8b:df:5c:77:26:5e:f4:3f:a2:
-                    ed:19:ad:76:f0:8c:71:9c:cd:d7:c6:0c:95:6a:9b:
-                    ec:4a:e0:50:68:61:19:17:44:09:6c:93:22:03:4a:
-                    f6:e9:4c:ca:88:4d:cd:e1:a6:20:8c:a6:dc:43:f7:
-                    c3:4c:61:89:2d:db:12:74:57:00:8a:a6:e2:0e:1a:
-                    1b:93:12:f9:63:b5:01:12:07:a1:b4:4a:2a:7f:8d:
-                    c8:ab:25:fb:0a:cd:ed:18:ba:32:94:50:b9:6d:3c:
-                    f2:67:45:61:73:84:25:0d:43:86:78:b9:11:e9:51:
-                    e7:95
-                Exponent: 65537 (0x10001)
-        X509v3 extensions:
-            X509v3 Basic Constraints: critical
-                CA:TRUE
-            X509v3 Key Usage: critical
-                Digital Signature, Certificate Sign, CRL Sign
-            X509v3 Policy Constraints: 
-                Require Explicit Policy:0
-            X509v3 Certificate Policies: 
-                Policy: 1.2.3.4
-                Policy: 1.2.3.4.5
-                Policy: 1.2.3.5
-
-    Signature Algorithm: sha256WithRSAEncryption
-         67:fd:e1:e8:91:20:ed:e6:f6:b3:41:27:07:b8:cc:55:ea:90:
-         7e:cc:11:6a:e9:02:24:95:86:8d:68:72:50:a3:d5:9c:bd:34:
-         78:3b:65:73:78:5c:9a:b6:da:5f:78:01:65:ed:da:5d:fe:fb:
-         cb:ef:a4:22:75:c0:cb:3b:c8:e0:ca:91:08:4d:f4:d9:cf:73:
-         16:09:e9:cc:09:96:6f:97:a6:4f:cb:72:c9:5d:ea:3b:21:bf:
-         e2:0e:18:ac:97:51:b1:81:02:1f:f5:a6:26:25:76:2b:8c:c7:
-         2c:66:be:03:b2:de:5a:6f:c6:bb:44:9f:b2:1a:75:76:4f:bb:
-         d0:2a:67:e3:51:69:9d:1d:6f:0a:8c:f1:d9:1d:16:aa:c3:7d:
-         b8:38:fa:a1:90:2b:15:dc:81:b2:80:66:6e:b6:69:83:03:88:
-         c6:2e:03:2a:ea:9c:5e:ea:98:9c:b3:93:21:d8:f9:6d:2e:ec:
-         40:d3:bf:f5:53:69:b0:0f:4d:d9:6b:6c:ac:bc:f8:e8:12:13:
-         d1:58:16:0a:7f:13:14:31:72:69:90:d3:2f:d1:2e:d0:b2:f7:
-         14:c9:4f:0c:d8:95:21:9f:9d:b8:4d:ae:80:75:3c:92:f9:a7:
-         5a:4a:1c:6c:b2:19:a5:e6:1a:7b:a6:5d:c3:e9:a9:ae:c9:2e:
-         7a:8b:a3:6c
------BEGIN CERTIFICATE-----
-MIIDETCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQsFADAeMRwwGgYDVQQDDBNQb2xp
-Y3kgVGVzdCBSb290IENBMB4XDTE3MDIyODIzNTIzNFoXDTI3MDIyNjIzNTIzNFow
-JjEkMCIGA1UEAwwbUG9saWN5IFRlc3QgSW50ZXJtZWRpYXRlIENBMIIBIjANBgkq
-hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAySueQeG92ywVICVrAi+d9RASIi7Ek+6Z
-HJJQAtRwScy/klTgBFpS2MledBp0VyIgeo7YvNICu4Xsm2uAUdKkR272+xbi2HtY
-XuUiYmjpyfb/CvnKZdoS2iRV3kPvUVTSrNvs1hNbKeFuZqFx8IibI9bheaq2dn1j
-9hljFF7bnygdB5LbaY/71Uze6zqL31x3Jl70P6LtGa128IxxnM3XxgyVapvsSuBQ
-aGEZF0QJbJMiA0r26UzKiE3N4aYgjKbcQ/fDTGGJLdsSdFcAiqbiDhobkxL5Y7UB
-EgehtEoqf43IqyX7Cs3tGLoylFC5bTzyZ0Vhc4QlDUOGeLkR6VHnlQIDAQABo1Iw
-UDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAMBgNVHSQEBTADgAEA
-MB8GA1UdIAQYMBYwBQYDKgMEMAYGBCoDBAUwBQYDKgMFMA0GCSqGSIb3DQEBCwUA
-A4IBAQBn/eHokSDt5vazQScHuMxV6pB+zBFq6QIklYaNaHJQo9WcvTR4O2VzeFya
-ttpfeAFl7dpd/vvL76QidcDLO8jgypEITfTZz3MWCenMCZZvl6ZPy3LJXeo7Ib/i
-Dhisl1GxgQIf9aYmJXYrjMcsZr4Dst5ab8a7RJ+yGnV2T7vQKmfjUWmdHW8KjPHZ
-HRaqw324OPqhkCsV3IGygGZutmmDA4jGLgMq6pxe6pics5Mh2PltLuxA07/1U2mw
-D03Za2ysvPjoEhPRWBYKfxMUMXJpkNMv0S7QsvcUyU8M2JUhn524Ta6AdTyS+ada
-Shxsshml5hp7pl3D6amuyS56i6Ns
------END CERTIFICATE-----
-Certificate:
-    Data:
-        Version: 3 (0x2)
-        Serial Number: 14437560522667520790 (0xc85c84cd48ccf316)
-    Signature Algorithm: sha256WithRSAEncryption
-        Issuer: CN=Policy Test Root CA
-        Validity
-            Not Before: Feb 28 23:52:34 2017 GMT
-            Not After : Feb 26 23:52:34 2027 GMT
-        Subject: CN=Policy Test Root CA
-        Subject Public Key Info:
-            Public Key Algorithm: rsaEncryption
-                Public-Key: (2048 bit)
-                Modulus:
-                    00:a0:e3:a7:af:b8:fa:3b:ee:47:d2:5a:ad:21:a2:
-                    71:42:4e:a6:a3:c7:82:94:b9:32:3c:6d:14:39:67:
-                    19:65:64:1f:8b:b5:c4:6d:88:12:2c:85:e2:ef:97:
-                    04:f5:9f:ee:13:65:a7:f5:86:c7:5b:20:1d:fe:47:
-                    71:a7:ab:04:69:52:0f:ea:6c:42:58:7b:89:32:49:
-                    54:14:da:d3:ad:ef:b8:7a:cc:8c:7f:16:0e:2a:b6:
-                    0e:7b:df:a5:ee:26:ff:b0:c9:6b:65:6e:15:02:b5:
-                    f4:4f:e5:6a:e1:b8:45:63:55:f9:61:0d:f6:27:cf:
-                    f3:10:ae:4a:0a:57:25:5c:de:b1:c5:8e:b2:bc:f1:
-                    b9:f2:99:c4:27:1d:53:0b:2b:7c:2a:fd:fc:73:7e:
-                    f4:ad:44:bc:8b:47:23:bd:c1:54:f3:ed:0b:ee:53:
-                    a7:9c:50:bd:32:0a:67:e2:b6:04:3e:c8:5e:da:fb:
-                    ab:7c:5c:c9:68:3c:5a:f2:c6:5e:b9:22:38:f3:10:
-                    b4:2d:e2:87:12:3a:4a:53:54:6b:92:e6:f1:eb:ba:
-                    47:b8:f1:80:3e:2c:2f:87:13:1e:dc:09:bc:a4:0c:
-                    4f:e2:df:db:53:e0:af:5d:34:b1:39:06:7f:8a:7b:
-                    12:e8:6c:01:e7:ce:d7:b7:a6:ac:3d:b7:ba:af:3f:
-                    46:93
-                Exponent: 65537 (0x10001)
-        X509v3 extensions:
-            X509v3 Basic Constraints: critical
-                CA:TRUE
-            X509v3 Key Usage: critical
-                Digital Signature, Certificate Sign, CRL Sign
-    Signature Algorithm: sha256WithRSAEncryption
-         6c:7f:d4:57:18:85:22:1d:87:15:45:3a:16:0d:df:06:3e:9c:
-         ed:1d:99:7b:78:75:90:5c:8f:d2:38:58:46:3e:2b:d2:69:bc:
-         ba:dd:13:7a:96:15:1f:af:3f:e0:a7:b1:3f:5c:f5:ab:af:ac:
-         65:a0:c3:e3:6b:70:25:53:57:46:3d:f6:c0:78:dc:1f:4c:d2:
-         03:42:d4:32:d0:cd:16:38:06:d1:89:1a:c4:37:2c:15:d9:6b:
-         c2:0e:8d:55:3a:a1:57:99:c7:57:18:d4:c5:13:ca:f7:25:92:
-         85:bc:5d:bb:20:8f:ee:52:8c:6e:61:aa:22:3e:37:a1:71:d9:
-         59:e3:e6:5c:de:71:f8:2a:e8:05:f5:b0:ca:40:9d:6a:24:87:
-         9f:48:69:26:65:ef:ad:6a:fd:2f:b2:38:36:f5:1a:5b:f1:5a:
-         ec:35:7a:a5:08:f7:c8:b7:78:90:e2:b9:32:24:6c:e8:cc:b0:
-         57:9e:ab:a7:06:22:c5:0e:cf:22:73:2f:dc:c7:30:eb:83:5d:
-         81:a4:00:ab:a0:01:3b:ce:7f:d9:c3:cc:28:fc:6b:74:cc:be:
-         62:d2:25:b8:a8:3b:c4:15:c4:bb:71:79:4f:df:7d:73:45:e6:
-         16:a4:41:1a:b5:3c:27:61:62:cf:86:1c:6e:d1:4b:f6:49:0a:
-         bd:3f:15:d0
------BEGIN CERTIFICATE-----
-MIIC4jCCAcqgAwIBAgIJAMhchM1IzPMWMA0GCSqGSIb3DQEBCwUAMB4xHDAaBgNV
-BAMME1BvbGljeSBUZXN0IFJvb3QgQ0EwHhcNMTcwMjI4MjM1MjM0WhcNMjcwMjI2
-MjM1MjM0WjAeMRwwGgYDVQQDDBNQb2xpY3kgVGVzdCBSb290IENBMIIBIjANBgkq
-hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoOOnr7j6O+5H0lqtIaJxQk6mo8eClLky
-PG0UOWcZZWQfi7XEbYgSLIXi75cE9Z/uE2Wn9YbHWyAd/kdxp6sEaVIP6mxCWHuJ
-MklUFNrTre+4esyMfxYOKrYOe9+l7ib/sMlrZW4VArX0T+Vq4bhFY1X5YQ32J8/z
-EK5KClclXN6xxY6yvPG58pnEJx1TCyt8Kv38c370rUS8i0cjvcFU8+0L7lOnnFC9
-Mgpn4rYEPshe2vurfFzJaDxa8sZeuSI48xC0LeKHEjpKU1Rrkubx67pHuPGAPiwv
-hxMe3Am8pAxP4t/bU+CvXTSxOQZ/insS6GwB587Xt6asPbe6rz9GkwIDAQABoyMw
-ITAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsF
-AAOCAQEAbH/UVxiFIh2HFUU6Fg3fBj6c7R2Ze3h1kFyP0jhYRj4r0mm8ut0TepYV
-H68/4KexP1z1q6+sZaDD42twJVNXRj32wHjcH0zSA0LUMtDNFjgG0YkaxDcsFdlr
-wg6NVTqhV5nHVxjUxRPK9yWShbxduyCP7lKMbmGqIj43oXHZWePmXN5x+CroBfWw
-ykCdaiSHn0hpJmXvrWr9L7I4NvUaW/Fa7DV6pQj3yLd4kOK5MiRs6MywV56rpwYi
-xQ7PInMv3Mcw64NdgaQAq6ABO85/2cPMKPxrdMy+YtIluKg7xBXEu3F5T999c0Xm
-FqRBGrU8J2Fiz4YcbtFL9kkKvT8V0A==
------END CERTIFICATE-----
diff --git a/net/data/ssl/scripts/generate-policy-certs.sh b/net/data/ssl/scripts/generate-policy-certs.sh
deleted file mode 100755
index 22dbcf64..0000000
--- a/net/data/ssl/scripts/generate-policy-certs.sh
+++ /dev/null
@@ -1,97 +0,0 @@
-#!/bin/sh
-
-# Copyright 2013 The Chromium Authors
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-# This script generates a (end-entity, intermediate, root) certificate, where
-# the root has no explicit policies associated, the intermediate has multiple
-# policies, and the leaf has a single policy.
-#
-# When validating, supplying no policy OID should not result in an error.
-
-try() {
-  "$@" || (e=$?; echo "$@" > /dev/stderr; exit $e)
-}
-
-try rm -rf out
-try mkdir out
-
-# Create the serial number files.
-try /bin/sh -c "echo 01 > out/policy-root-serial"
-try /bin/sh -c "echo 01 > out/policy-intermediate-serial"
-
-# Create the signers' DB files.
-touch out/policy-root-index.txt
-touch out/policy-intermediate-index.txt
-
-# Generate the keys
-try openssl genrsa -out out/policy-root.key 2048
-try openssl genrsa -out out/policy-intermediate.key 2048
-try openssl genrsa -out out/policy-cert.key 2048
-
-# Generate the root certificate
-COMMON_NAME="Policy Test Root CA" \
-  CA_DIR=out \
-  CA_NAME=policy-root \
-  try openssl req \
-    -new \
-    -key out/policy-root.key \
-    -out out/policy-root.csr \
-    -config policy.cnf
-
-COMMON_NAME="Policy Test Root CA" \
-  CA_DIR=out \
-  CA_NAME=policy-root \
-  try openssl x509 \
-    -req -days 3650 \
-    -in out/policy-root.csr \
-    -out out/policy-root.pem \
-    -signkey out/policy-root.key \
-    -extfile policy.cnf \
-    -extensions ca_cert \
-    -text
-
-# Generate the intermediate
-COMMON_NAME="Policy Test Intermediate CA" \
-  CA_DIR=out \
-  try openssl req \
-    -new \
-    -key out/policy-intermediate.key \
-    -out out/policy-intermediate.csr \
-    -config policy.cnf
-
-COMMON_NAME="UNUSED" \
-  CA_DIR=out \
-  CA_NAME=policy-root \
-  try openssl ca \
-    -batch \
-    -in out/policy-intermediate.csr \
-    -out out/policy-intermediate.pem \
-    -config policy.cnf \
-    -extensions intermediate_cert
-
-# Generate the leaf
-COMMON_NAME="policy_test.example" \
-CA_DIR=out \
-CA_NAME=policy-intermediate \
-try openssl req \
-  -new \
-  -key out/policy-cert.key \
-  -out out/policy-cert.csr \
-  -config policy.cnf
-
-COMMON_NAME="Policy Test Intermediate CA" \
-  SAN="policy_test.example" \
-  CA_DIR=out \
-  CA_NAME=policy-intermediate \
-  try openssl ca \
-    -batch \
-    -in out/policy-cert.csr \
-    -out out/policy-cert.pem \
-    -config policy.cnf \
-    -extensions user_cert
-
-try /bin/sh -c "cat out/policy-cert.pem \
-    out/policy-intermediate.pem \
-    out/policy-root.pem >../certificates/explicit-policy-chain.pem"
diff --git a/net/data/ssl/scripts/policy.cnf b/net/data/ssl/scripts/policy.cnf
deleted file mode 100644
index dbb2efa..0000000
--- a/net/data/ssl/scripts/policy.cnf
+++ /dev/null
@@ -1,62 +0,0 @@
-CA_DIR=out
-CA_NAME=policy-root
-SAN=policy_test.example
-
-[ca]
-default_ca = CA_root
-preserve   = yes
-
-[CA_root]
-dir           = ${ENV::CA_DIR}
-key_size      = 2048
-algo          = sha256
-database      = $dir/${ENV::CA_NAME}-index.txt
-new_certs_dir = $dir
-serial        = $dir/${ENV::CA_NAME}-serial
-certificate   = $dir/${ENV::CA_NAME}.pem
-private_key   = $dir/${ENV::CA_NAME}.key
-RANDFILE      = $dir/.rand
-default_days     = 3650
-default_crl_days = 30
-default_md       = sha256
-policy           = policy_anything
-unique_subject   = no
-copy_extensions  = copy
-
-[user_cert]
-basicConstraints       = critical, CA:false
-extendedKeyUsage       = serverAuth, clientAuth
-certificatePolicies    = 1.2.3.4
-subjectAltName         = DNS:${ENV::SAN}
-
-[ca_cert]
-basicConstraints       = critical, CA:true
-keyUsage               = critical, digitalSignature, keyCertSign, cRLSign
-
-[intermediate_cert]
-basicConstraints       = critical, CA:true
-keyUsage               = critical, digitalSignature, keyCertSign, cRLSign
-policyConstraints      = requireExplicitPolicy:0
-certificatePolicies    = 1.2.3.4, 1.2.3.4.5, 1.2.3.5
-
-[policy_anything]
-# Default signing policy
-countryName            = optional
-stateOrProvinceName    = optional
-localityName           = optional
-organizationName       = optional
-organizationalUnitName = optional
-commonName             = optional
-emailAddress           = optional
-
-[req]
-default_bits       = 2048
-default_md         = sha256
-string_mask        = utf8only
-prompt             = no
-encrypt_key        = no
-distinguished_name = req_env_dn
-
-[req_env_dn]
-CN = ${ENV::COMMON_NAME}
-
diff --git a/net/first_party_sets/global_first_party_sets.cc b/net/first_party_sets/global_first_party_sets.cc
index 01c43df..0e8dc03 100644
--- a/net/first_party_sets/global_first_party_sets.cc
+++ b/net/first_party_sets/global_first_party_sets.cc
@@ -222,6 +222,7 @@
   // replacement enterprise policy sets.
   manual_config_ = ComputeConfig(
       /*replacement_sets=*/{manual_entries}, /*addition_sets=*/{});
+  manual_sets_ = manual_entries;
 }
 
 FirstPartySetsContextConfig GlobalFirstPartySets::ComputeConfig(
diff --git a/net/first_party_sets/global_first_party_sets.h b/net/first_party_sets/global_first_party_sets.h
index 3f11b93..e921ef9 100644
--- a/net/first_party_sets/global_first_party_sets.h
+++ b/net/first_party_sets/global_first_party_sets.h
@@ -106,6 +106,10 @@
   // Whether the global sets are empty.
   bool empty() const { return entries_.empty() && manual_config_.empty(); }
 
+  const base::flat_map<SchemefulSite, FirstPartySetEntry>& manual_sets() const {
+    return manual_sets_;
+  }
+
  private:
   // mojo (de)serialization needs access to private details.
   friend struct mojo::StructTraits<network::mojom::GlobalFirstPartySetsDataView,
@@ -164,6 +168,10 @@
   // Stores the customizations induced by the manually-specified set. May be
   // empty if no switch was provided.
   FirstPartySetsContextConfig manual_config_;
+
+  // A map representing the manually-specified sets. Contains entries for
+  // aliases as well as canonical sites.
+  base::flat_map<SchemefulSite, FirstPartySetEntry> manual_sets_;
 };
 
 NET_EXPORT std::ostream& operator<<(std::ostream& os,
diff --git a/net/http/transport_security_state_static.pins b/net/http/transport_security_state_static.pins
index f67d295..e607eca4 100644
--- a/net/http/transport_security_state_static.pins
+++ b/net/http/transport_security_state_static.pins
@@ -43,9 +43,9 @@
 #   hash function for preloaded entries again (we have already done so once).
 #
 
-# Last updated: 2022-10-06 12:55 UTC
+# Last updated: 2022-10-07 12:55 UTC
 PinsListTimestamp
-1665060930
+1665147348
 
 TestSPKI
 sha256/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
diff --git a/net/reporting/README.md b/net/reporting/README.md
index 1da74d4..34eea769 100644
--- a/net/reporting/README.md
+++ b/net/reporting/README.md
@@ -107,7 +107,7 @@
 
     * It queues reports via the `NetworkContext` using a
       `blink::mojom::ReportingServiceProxy` (implemented [in
-      `//content/browser/net/`][2]), which can queue Intervention, Deprecation,
+      `//content/browser/network/`][2]), which can queue Intervention, Deprecation,
       CSP Violation, and Permissions Policy Violation reports.
 
 * The `ChromeNetworkDelegate` [in `//chrome/browser/net/`][3] checks permissions
@@ -169,6 +169,6 @@
   group.
 
 [1]: https://chromium.googlesource.com/chromium/src/+/HEAD/third_party/blink/renderer/core/frame/reporting_observer.h
-[2]: https://chromium.googlesource.com/chromium/src/+/HEAD/content/browser/net/reporting_service_proxy.cc
+[2]: https://chromium.googlesource.com/chromium/src/+/HEAD/content/browser/network/reporting_service_proxy.cc
 [3]: https://chromium.googlesource.com/chromium/src/+/HEAD/chrome/browser/net/chrome_network_delegate.h
 [4]: https://chromium.googlesource.com/chromium/src/+/HEAD/components/cronet/android/test/javatests/src/org/chromium/net/NetworkErrorLoggingTest.java
diff --git a/net/test/cert_builder.cc b/net/test/cert_builder.cc
index 07176959..7d4cb33a 100644
--- a/net/test/cert_builder.cc
+++ b/net/test/cert_builder.cc
@@ -12,6 +12,7 @@
 #include "crypto/openssl_util.h"
 #include "crypto/rsa_private_key.h"
 #include "net/cert/asn1_util.h"
+#include "net/cert/pki/parse_certificate.h"
 #include "net/cert/pki/verify_signed_data.h"
 #include "net/cert/x509_util.h"
 #include "net/der/encode_values.h"
@@ -626,6 +627,39 @@
   SetExtension(der::Input(kCertificatePoliciesOid), FinishCBB(cbb.get()));
 }
 
+void CertBuilder::SetPolicyConstraints(
+    absl::optional<uint64_t> require_explicit_policy,
+    absl::optional<uint64_t> inhibit_policy_mapping) {
+  if (!require_explicit_policy.has_value() &&
+      !inhibit_policy_mapping.has_value()) {
+    EraseExtension(der::Input(kPolicyConstraintsOid));
+    return;
+  }
+
+  // From RFC 5280:
+  //   PolicyConstraints ::= SEQUENCE {
+  //        requireExplicitPolicy           [0] SkipCerts OPTIONAL,
+  //        inhibitPolicyMapping            [1] SkipCerts OPTIONAL }
+  //
+  //   SkipCerts ::= INTEGER (0..MAX)
+  bssl::ScopedCBB cbb;
+  CBB policy_constraints;
+  ASSERT_TRUE(CBB_init(cbb.get(), 64));
+  ASSERT_TRUE(CBB_add_asn1(cbb.get(), &policy_constraints, CBS_ASN1_SEQUENCE));
+  if (require_explicit_policy.has_value()) {
+    ASSERT_TRUE(CBB_add_asn1_uint64_with_tag(&policy_constraints,
+                                             *require_explicit_policy,
+                                             der::ContextSpecificPrimitive(0)));
+  }
+  if (inhibit_policy_mapping.has_value()) {
+    ASSERT_TRUE(CBB_add_asn1_uint64_with_tag(&policy_constraints,
+                                             *inhibit_policy_mapping,
+                                             der::ContextSpecificPrimitive(1)));
+  }
+
+  SetExtension(der::Input(kPolicyConstraintsOid), FinishCBB(cbb.get()));
+}
+
 void CertBuilder::SetValidity(base::Time not_before, base::Time not_after) {
   // From RFC 5280:
   //   Validity ::= SEQUENCE {
diff --git a/net/test/cert_builder.h b/net/test/cert_builder.h
index fdfd864..8f7c1e3 100644
--- a/net/test/cert_builder.h
+++ b/net/test/cert_builder.h
@@ -164,6 +164,12 @@
   // OIDs, which must be specified in dotted string notation (e.g. "1.2.3.4").
   void SetCertificatePolicies(const std::vector<std::string>& policy_oids);
 
+  // Sets the PolicyConstraints extension. If both |require_explicit_policy|
+  // and |inhibit_policy_mapping| are nullopt, the PolicyConstraints extension
+  // will removed.
+  void SetPolicyConstraints(absl::optional<uint64_t> require_explicit_policy,
+                            absl::optional<uint64_t> inhibit_policy_mapping);
+
   void SetValidity(base::Time not_before, base::Time not_after);
 
   // Sets the Subject Key Identifier (SKI) extension to the specified string.
@@ -258,7 +264,7 @@
   scoped_refptr<X509Certificate> GetX509Certificate();
 
   // Returns an X509Certificate for the generated certificate, including
-  // intermediate certificates.
+  // intermediate certificates (not including the self-signed root).
   scoped_refptr<X509Certificate> GetX509CertificateChain();
 
   // Returns a copy of the certificate's DER.
diff --git a/net/third_party/quiche/BUILD.gn b/net/third_party/quiche/BUILD.gn
index 86d89ae6..e8afd81e9 100644
--- a/net/third_party/quiche/BUILD.gn
+++ b/net/third_party/quiche/BUILD.gn
@@ -30,23 +30,15 @@
 
 build_epoll_based_tools = is_linux || is_chromeos
 
-# TODO(crbug.com/1344231): Set this to always true. At which point, this
-# variable can go away and the conditionals below that depends on it can be
-# simplified.
-_no_shadow_is_internal = !is_chromeos_lacros
-
 config("quiche_internal_config") {
   cflags = []
   if (is_clang) {
     cflags += [
       "-Wno-unused-private-field",
+      "-Wno-shadow",
       "-Wno-sign-compare",
     ]
   }
-
-  if (_no_shadow_is_internal) {
-    cflags += [ "-Wno-shadow" ]
-  }
 }
 
 config("quiche_config") {
@@ -57,10 +49,6 @@
     "src/quiche/common/platform/default",
     "src",
   ]
-
-  if (!_no_shadow_is_internal) {
-    cflags = [ "-Wno-shadow" ]
-  }
 }
 
 component("quiche") {
diff --git a/remoting/host/chromeos/aura_desktop_capturer.cc b/remoting/host/chromeos/aura_desktop_capturer.cc
index 54dcd30..a4f96ef 100644
--- a/remoting/host/chromeos/aura_desktop_capturer.cc
+++ b/remoting/host/chromeos/aura_desktop_capturer.cc
@@ -52,6 +52,7 @@
 
 AuraDesktopCapturer::AuraDesktopCapturer(AshProxy& ash_proxy)
     : ash_(ash_proxy) {
+  LOG(INFO) << "CRD: Starting aura desktop capturer";
   SendEventToUma(kUmaKeyForCapturerCreated);
 }
 
diff --git a/remoting/host/chromeos/frame_sink_desktop_capturer.cc b/remoting/host/chromeos/frame_sink_desktop_capturer.cc
index b88a663..7fb69dd 100644
--- a/remoting/host/chromeos/frame_sink_desktop_capturer.cc
+++ b/remoting/host/chromeos/frame_sink_desktop_capturer.cc
@@ -42,6 +42,7 @@
 
 FrameSinkDesktopCapturer::FrameSinkDesktopCapturer(AshProxy& ash_proxy)
     : ash_(ash_proxy) {
+  LOG(INFO) << "CRD: Starting frame sink desktop capturer";
   SendEventToUma(kUmaKeyForCapturerCreated);
 }
 
diff --git a/remoting/host/client_session.cc b/remoting/host/client_session.cc
index b1f12434..f0f3a7b 100644
--- a/remoting/host/client_session.cc
+++ b/remoting/host/client_session.cc
@@ -266,7 +266,8 @@
   // are fully deprecated and no longer sent. We already start the monitor in
   // OnConnectionChannelsConnected() so we don't need this block if the legacy
   // message in multi-stream mode is no longer required.
-  if (HasCapability(capabilities_, protocol::kMultiStreamCapability)) {
+  if (HasCapability(capabilities_, protocol::kMultiStreamCapability) ||
+      HasCapability(capabilities_, protocol::kMultiStreamOldCapability)) {
     if (desktop_display_info_.NumDisplays() != 0) {
       // If display info is already known, create the initial video streams.
       // Otherwise they will be created on the next displays-changed message.
@@ -324,7 +325,8 @@
   LOG(INFO) << "SelectDesktopDisplay "
             << "'" << select_display.id() << "'";
 
-  if (HasCapability(capabilities_, protocol::kMultiStreamCapability)) {
+  if (HasCapability(capabilities_, protocol::kMultiStreamCapability) ||
+      HasCapability(capabilities_, protocol::kMultiStreamOldCapability)) {
     // TODO(lambroslambrou): Close the connection with a protocol error,
     // once we are sure the client will not send this request after
     // multi-stream has been negotiated.
@@ -944,7 +946,8 @@
   LOG(INFO) << "ClientSession::OnDesktopDisplayChanged";
 
   bool multiStreamEnabled =
-      HasCapability(capabilities_, protocol::kMultiStreamCapability);
+      HasCapability(capabilities_, protocol::kMultiStreamCapability) ||
+      HasCapability(capabilities_, protocol::kMultiStreamOldCapability);
 
   // Scan display list to calculate the full desktop size.
   int min_x = 0;
diff --git a/remoting/host/webauthn/remote_webauthn_extension_notifier.cc b/remoting/host/webauthn/remote_webauthn_extension_notifier.cc
index 448fe9a..73ed923bf 100644
--- a/remoting/host/webauthn/remote_webauthn_extension_notifier.cc
+++ b/remoting/host/webauthn/remote_webauthn_extension_notifier.cc
@@ -59,7 +59,7 @@
 //
 // DEFAULT_UDD (default user data directory) is documented here:
 //
-//   https://chromium.googlesource.com/chromium/src/+/master/docs/user_data_dir.md#default-location
+//   https://chromium.googlesource.com/chromium/src/+/main/docs/user_data_dir.md#default-location
 //
 // Note that the default UDD is always used, and UDD overrides from browser
 // launch args or env vars are ignored so the path is more discoverable by the
diff --git a/remoting/host/x11_crtc_resizer.cc b/remoting/host/x11_crtc_resizer.cc
index 9908c6f..9b694eb 100644
--- a/remoting/host/x11_crtc_resizer.cc
+++ b/remoting/host/x11_crtc_resizer.cc
@@ -9,9 +9,12 @@
 #include <vector>
 
 #include "base/check.h"
+#include "base/containers/adapters.h"
 #include "base/containers/contains.h"
 #include "base/ranges/algorithm.h"
 #include "base/stl_util.h"
+#include "remoting/base/logging.h"
+#include "ui/base/x/x11_util.h"
 #include "ui/gfx/x/future.h"
 
 namespace {
@@ -63,6 +66,12 @@
   // X server.
   if (connection_) {
     randr_ = &connection_->randr();
+    auto atom_reply = connection_->InternAtom({false, "WM_STATE"}).Sync();
+    if (atom_reply) {
+      wm_state_atom_ = atom_reply->atom;
+    } else {
+      LOG(ERROR) << "Failed to intern atom for WM_STATE.";
+    }
   }
 }
 
@@ -254,11 +263,7 @@
                                        crtc_info.y - crtc_info.old_y);
       window_top_left = window_top_left.add(adjustment);
 
-      connection_->ConfigureWindow({
-          .window = window,
-          .x = window_top_left.x(),
-          .y = window_top_left.y(),
-      });
+      MoveWindow(window, *attributes_response.reply, window_top_left);
       break;
     }
   }
@@ -406,4 +411,70 @@
   }
 }
 
+void X11CrtcResizer::MoveWindow(x11::Window window,
+                                const x11::GetWindowAttributesReply& attributes,
+                                webrtc::DesktopVector top_left) {
+  if (!attributes.override_redirect) {
+    // Try to locate the original window which was re-parented by the
+    // window-manager.
+    auto app_window = FindAppWindow(window, attributes);
+    if (app_window != x11::Window::None) {
+      window = app_window;
+    }
+  }
+
+  connection_->ConfigureWindow({
+      .window = window,
+      .x = top_left.x(),
+      .y = top_left.y(),
+  });
+}
+
+x11::Window X11CrtcResizer::FindAppWindow(
+    x11::Window window,
+    const x11::GetWindowAttributesReply& attributes) {
+  // Only descend into visible windows.
+  if (attributes.map_state != x11::MapState::Viewable) {
+    return x11::Window::None;
+  }
+
+  // If the window itself has the WM_STATE property, return it. Otherwise,
+  // descend into the window's children recursively.
+  auto property_reply = connection_
+                            ->GetProperty({
+                                .window = window,
+                                .property = wm_state_atom_,
+                                .long_length = 1,
+                            })
+                            .Sync();
+  if (!property_reply) {
+    return x11::Window::None;
+  }
+  if (property_reply->value_len != 0) {
+    // Found window with WM_STATE property.
+    return window;
+  }
+
+  // Descend into the children of |window| in stacking order. See for example:
+  // Find_Client_In_Children() at
+  // https://github.com/freedesktop/xorg-xwininfo/blob/master/clientwin.c
+  auto query_response = connection_->QueryTree({window}).Sync();
+  if (!query_response) {
+    return x11::Window::None;
+  }
+
+  for (const auto& child_window : base::Reversed(query_response->children)) {
+    auto attributes_response =
+        connection_->GetWindowAttributes({child_window}).Sync();
+    if (!attributes_response) {
+      return x11::Window::None;
+    }
+    auto found_window = FindAppWindow(child_window, *attributes_response.reply);
+    if (found_window != x11::Window::None) {
+      return found_window;
+    }
+  }
+  return x11::Window::None;
+}
+
 }  // namespace remoting
diff --git a/remoting/host/x11_crtc_resizer.h b/remoting/host/x11_crtc_resizer.h
index d74f2dc..c0f3706e 100644
--- a/remoting/host/x11_crtc_resizer.h
+++ b/remoting/host/x11_crtc_resizer.h
@@ -174,6 +174,25 @@
   // the vertical layout code to be re-used for horizontal layout.
   void Transpose();
 
+  // Moves an application window. This tries to account for any re-parenting
+  // done by a window-manager.
+  // |window| is the top-level window to move (a child of the root window),
+  // which is possibly a window-manager frame.
+  // |attributes| is the response from GetWindowAttributes(window...). It is
+  // used here to avoid fetching the attributes again inside this method,
+  // as the caller already has them.
+  // |top_left| is the requested top-left corner of the new window position.
+  void MoveWindow(x11::Window window,
+                  const x11::GetWindowAttributesReply& attributes,
+                  webrtc::DesktopVector top_left);
+
+  // Helper method to locate an application window which was re-parented by the
+  // window-manager. It looks at |window| and its children recursively, in
+  // stacking order, and returns a viewable window which has the "WM_STATE"
+  // property. If not found, this returns x11::Window::None.
+  x11::Window FindAppWindow(x11::Window window,
+                            const x11::GetWindowAttributesReply& attributes);
+
   raw_ptr<x11::RandR::GetScreenResourcesCurrentReply> resources_;
   raw_ptr<x11::Connection> connection_;
   raw_ptr<x11::RandR> randr_;
@@ -194,6 +213,8 @@
 
   // Bounding-box size computed by NormalizeCrtcs().
   webrtc::DesktopSize bounding_box_size_{};
+
+  x11::Atom wm_state_atom_{};
 };
 
 }  // namespace remoting
diff --git a/remoting/protocol/capability_names.h b/remoting/protocol/capability_names.h
index edcc13e..ede5c249 100644
--- a/remoting/protocol/capability_names.h
+++ b/remoting/protocol/capability_names.h
@@ -30,9 +30,8 @@
 constexpr char kWebrtcIceSdpRestartAction[] = "webrtcIceSdpRestartAction";
 
 // Host supports creating one video-stream per monitor.
-// TODO(lambroslambrou): Rename to "multiStream" once the feature is fully
-// implemented and working on the host side.
-constexpr char kMultiStreamCapability[] = "multiStream_inProgress";
+constexpr char kMultiStreamCapability[] = "multiStream";
+constexpr char kMultiStreamOldCapability[] = "multiStream_inProgress";
 
 // Host supports display layouts controlled by the client.
 constexpr char kClientControlledLayoutCapability[] = "clientControlledLayout";
diff --git a/sandbox/policy/sandbox.cc b/sandbox/policy/sandbox.cc
index cee905b..c554d25 100644
--- a/sandbox/policy/sandbox.cc
+++ b/sandbox/policy/sandbox.cc
@@ -57,9 +57,8 @@
       // process because it will initialize the sandbox broker, which requires
       // the process to swap its window station. During this time all the UI
       // will be broken. This has to run before threads and windows are created.
-      ResultCode result =
-          broker_services->CreatePolicy()->CreateAlternateDesktop(
-              Desktop::kAlternateWinstation);
+      ResultCode result = broker_services->CreateAlternateDesktop(
+          Desktop::kAlternateWinstation);
       base::UmaHistogramSparse(
           "Process.Sandbox.CreateAlternateDesktopResultCode", result);
       CHECK(SBOX_ERROR_FAILED_TO_SWITCH_BACK_WINSTATION != result);
diff --git a/sandbox/policy/win/sandbox_win_unittest.cc b/sandbox/policy/win/sandbox_win_unittest.cc
index f91d41c..5d855b00 100644
--- a/sandbox/policy/win/sandbox_win_unittest.cc
+++ b/sandbox/policy/win/sandbox_win_unittest.cc
@@ -129,11 +129,6 @@
   ~TestTargetPolicy() override {}
   // TargetPolicy:
   TargetConfig* GetConfig() override { return &config_; }
-  std::wstring GetDesktopName() override { return std::wstring(); }
-  ResultCode CreateAlternateDesktop(Desktop desktop) override {
-    return SBOX_ALL_OK;
-  }
-  void DestroyDesktops() override {}
   ResultCode SetStdoutHandle(HANDLE handle) override { return SBOX_ALL_OK; }
   ResultCode SetStderrHandle(HANDLE handle) override { return SBOX_ALL_OK; }
   void AddHandleToShare(HANDLE handle) override {}
diff --git a/sandbox/win/BUILD.gn b/sandbox/win/BUILD.gn
index 28bf424..a75a9aa 100644
--- a/sandbox/win/BUILD.gn
+++ b/sandbox/win/BUILD.gn
@@ -13,6 +13,8 @@
   sources = [
     "src/acl.cc",
     "src/acl.h",
+    "src/alternate_desktop.cc",
+    "src/alternate_desktop.h",
     "src/app_container.h",
     "src/app_container_base.cc",
     "src/app_container_base.h",
diff --git a/sandbox/win/src/alternate_desktop.cc b/sandbox/win/src/alternate_desktop.cc
new file mode 100644
index 0000000..b51dff8
--- /dev/null
+++ b/sandbox/win/src/alternate_desktop.cc
@@ -0,0 +1,79 @@
+// Copyright 2022 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "sandbox/win/src/alternate_desktop.h"
+
+#include "base/win/win_util.h"
+#include "sandbox/win/src/acl.h"
+#include "sandbox/win/src/window.h"
+
+#include <windows.h>
+
+namespace sandbox {
+
+AlternateDesktop::~AlternateDesktop() {
+  if (desktop_) {
+    ::CloseDesktop(desktop_);
+    desktop_ = nullptr;
+  }
+  if (winstation_) {
+    ::CloseWindowStation(winstation_);
+    winstation_ = nullptr;
+  }
+}
+
+// Updates the desktop token's integrity level to be no higher than
+// `integrity_level`.
+ResultCode AlternateDesktop::UpdateDesktopIntegrity(
+    IntegrityLevel integrity_level) {
+  // Integrity label enum is reversed (higher level is a lower value).
+  static_assert(INTEGRITY_LEVEL_SYSTEM < INTEGRITY_LEVEL_UNTRUSTED,
+                "Integrity level ordering reversed.");
+  DCHECK(integrity_level != INTEGRITY_LEVEL_LAST);
+  // Require that the desktop has been set.
+  if (!desktop_)
+    return SBOX_ERROR_CANNOT_CREATE_DESKTOP;
+  if (integrity_ < integrity_level) {
+    DWORD result = SetObjectIntegrityLabel(
+        desktop_, SecurityObjectType::kWindow, 0, integrity_level);
+    if (ERROR_SUCCESS != result)
+      return SBOX_ERROR_CANNOT_SET_DESKTOP_INTEGRITY;
+    integrity_ = integrity_level;
+  }
+  return SBOX_ALL_OK;
+}
+
+// Populate this object, creating a winstation if `alternate_winstation` is
+// true.
+ResultCode AlternateDesktop::Initialize(bool alternate_winstation) {
+  DCHECK(!desktop_ && !winstation_);
+  if (alternate_winstation) {
+    // Create the window station.
+    ResultCode result = CreateAltWindowStation(&winstation_);
+    if (SBOX_ALL_OK != result)
+      return result;
+
+    // Verify that everything is fine.
+    if (!winstation_ || base::win::GetWindowObjectName(winstation_).empty()) {
+      return SBOX_ERROR_CANNOT_CREATE_DESKTOP;
+    }
+  }
+  ResultCode result = CreateAltDesktop(winstation_, &desktop_);
+  if (SBOX_ALL_OK != result)
+    return result;
+
+  // Verify that everything is fine.
+  if (!desktop_ || base::win::GetWindowObjectName(desktop_).empty()) {
+    return SBOX_ERROR_CANNOT_CREATE_DESKTOP;
+  }
+  return SBOX_ALL_OK;
+}
+
+std::wstring AlternateDesktop::GetDesktopName() {
+  if (!desktop_)
+    return std::wstring();
+  return GetFullDesktopName(winstation_, desktop_);
+}
+
+}  // namespace sandbox
diff --git a/sandbox/win/src/alternate_desktop.h b/sandbox/win/src/alternate_desktop.h
new file mode 100644
index 0000000..45c3ab1
--- /dev/null
+++ b/sandbox/win/src/alternate_desktop.h
@@ -0,0 +1,45 @@
+// Copyright 2022 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef SANDBOX_WIN_SRC_ALTERNATE_DESKTOP_H_
+#define SANDBOX_WIN_SRC_ALTERNATE_DESKTOP_H_
+
+#include "sandbox/win/src/sandbox.h"
+
+#include <string>
+
+namespace sandbox {
+// Holds handles and integrity levels about alternate desktops.
+class AlternateDesktop {
+ public:
+  AlternateDesktop()
+      : desktop_(nullptr),
+        winstation_(nullptr),
+        integrity_(INTEGRITY_LEVEL_SYSTEM) {}
+  ~AlternateDesktop();
+  AlternateDesktop(const AlternateDesktop&) = delete;
+  AlternateDesktop& operator=(const AlternateDesktop&) = delete;
+
+  // Updates the desktop token's integrity level to be no higher than
+  // `integrity_level`.
+  ResultCode UpdateDesktopIntegrity(IntegrityLevel integrity_level);
+
+  // Populate this object, creating a winstation if `alternate_winstation` is
+  // true.
+  ResultCode Initialize(bool alternate_winstation);
+
+  std::wstring GetDesktopName();
+
+ private:
+  // Handle for the alternate desktop.
+  HDESK desktop_;
+  // Winstation for the alternate desktop, or nullptr if not used.
+  HWINSTA winstation_;
+  // Last set integrity level of the desktop.
+  IntegrityLevel integrity_;
+};
+
+}  // namespace sandbox
+
+#endif  // SANDBOX_WIN_SRC_ALTERNATE_DESKTOP_H_
diff --git a/sandbox/win/src/broker_services.cc b/sandbox/win/src/broker_services.cc
index a7e5230..75497172 100644
--- a/sandbox/win/src/broker_services.cc
+++ b/sandbox/win/src/broker_services.cc
@@ -512,6 +512,11 @@
     return SBOX_ERROR_BAD_PARAMS;
   }
 
+  result = UpdateDesktopIntegrity(config_base->desktop(),
+                                  config_base->integrity_level());
+  if (result != SBOX_ALL_OK)
+    return result;
+
   result = policy_base->InitJob();
   if (SBOX_ALL_OK != result)
     return result;
@@ -521,7 +526,7 @@
 
   // We don't want any child processes causing the IDC_APPSTARTING cursor.
   startup_info->UpdateFlags(STARTF_FORCEOFFFEEDBACK);
-  startup_info->SetDesktop(policy_base->GetDesktopName());
+  startup_info->SetDesktop(GetDesktopName(config_base->desktop()));
   startup_info->SetMitigations(config_base->GetProcessMitigations());
 
   if (base::win::GetVersion() >= base::win::Version::WIN10_TH2 &&
@@ -669,6 +674,76 @@
   return sandbox::RatchetDownSecurityMitigations(additional_flags);
 }
 
+std::wstring BrokerServicesBase::GetDesktopName(Desktop desktop) {
+  switch (desktop) {
+    case Desktop::kDefault:
+      // No alternate desktop or winstation. Return an empty string.
+      return std::wstring();
+    case Desktop::kAlternateWinstation:
+      return alt_winstation_ ? alt_winstation_->GetDesktopName()
+                             : std::wstring();
+    case Desktop::kAlternateDesktop:
+      return alt_desktop_ ? alt_desktop_->GetDesktopName() : std::wstring();
+  }
+}
+
+ResultCode BrokerServicesBase::UpdateDesktopIntegrity(
+    Desktop desktop,
+    IntegrityLevel integrity) {
+  // If we're launching on an alternate desktop we need to make sure the
+  // integrity label on the object is no higher than the sandboxed process's
+  // integrity level. So, we lower the label on the desktop handle if it's
+  // not already low enough for our process. TODO(crbug.com/1361470) we allow
+  // desktop creation to fail - perhaps we can require them to be present in
+  // the future.
+  if (integrity == INTEGRITY_LEVEL_LAST)
+    return SBOX_ALL_OK;
+  if (desktop == Desktop::kDefault)
+    return SBOX_ALL_OK;
+
+  ResultCode result = SBOX_ALL_OK;
+  if (desktop == Desktop::kAlternateWinstation && alt_winstation_) {
+    result = alt_winstation_->UpdateDesktopIntegrity(integrity);
+  } else if (desktop == Desktop::kAlternateDesktop && alt_desktop_) {
+    result = alt_desktop_->UpdateDesktopIntegrity(integrity);
+  }
+
+  return result;
+}
+
+ResultCode BrokerServicesBase::CreateAlternateDesktop(Desktop desktop) {
+  switch (desktop) {
+    case Desktop::kAlternateWinstation: {
+      // If already populated keep going.
+      if (alt_winstation_)
+        return SBOX_ALL_OK;
+      alt_winstation_ = std::make_unique<AlternateDesktop>();
+      ResultCode result = alt_winstation_->Initialize(true);
+      if (result != SBOX_ALL_OK)
+        alt_winstation_.reset();
+      return result;
+    };
+    case Desktop::kAlternateDesktop: {
+      // If already populated keep going.
+      if (alt_desktop_)
+        return SBOX_ALL_OK;
+      alt_desktop_ = std::make_unique<AlternateDesktop>();
+      ResultCode result = alt_desktop_->Initialize(false);
+      if (result != SBOX_ALL_OK)
+        alt_desktop_.reset();
+      return result;
+    };
+    case Desktop::kDefault:
+      // The default desktop always exists.
+      return SBOX_ALL_OK;
+  }
+}
+
+void BrokerServicesBase::DestroyDesktops() {
+  alt_winstation_.reset();
+  alt_desktop_.reset();
+}
+
 // static
 void BrokerServicesBase::FreezeTargetConfigForTesting(TargetConfig* config) {
   CHECK(!config->IsConfigured());
diff --git a/sandbox/win/src/broker_services.h b/sandbox/win/src/broker_services.h
index 43a4b43..88c4e3ba 100644
--- a/sandbox/win/src/broker_services.h
+++ b/sandbox/win/src/broker_services.h
@@ -8,6 +8,7 @@
 #include <map>
 #include <memory>
 #include <set>
+#include <string>
 #include <utility>
 
 #include "base/compiler_specific.h"
@@ -15,6 +16,7 @@
 #include "base/memory/raw_ptr.h"
 #include "base/memory/scoped_refptr.h"
 #include "base/win/scoped_handle.h"
+#include "sandbox/win/src/alternate_desktop.h"
 #include "sandbox/win/src/crosscall_server.h"
 #include "sandbox/win/src/job.h"
 #include "sandbox/win/src/sandbox.h"
@@ -44,6 +46,8 @@
 
   // BrokerServices interface.
   ResultCode Init() override;
+  ResultCode CreateAlternateDesktop(Desktop desktop) override;
+  void DestroyDesktops() override;
   std::unique_ptr<TargetPolicy> CreatePolicy() override;
   std::unique_ptr<TargetPolicy> CreatePolicy(base::StringPiece key) override;
 
@@ -59,10 +63,14 @@
   void SetStartingMitigations(MitigationFlags starting_mitigations) override;
   bool RatchetDownSecurityMitigations(
       MitigationFlags additional_flags) override;
+  std::wstring GetDesktopName(Desktop desktop) override;
 
   static void FreezeTargetConfigForTesting(TargetConfig* config);
 
  private:
+  // Ensures the desktop integrity suits any process we are launching.
+  ResultCode UpdateDesktopIntegrity(Desktop desktop, IntegrityLevel integrity);
+
   // The completion port used by the job objects to communicate events to
   // the worker thread.
   base::win::ScopedHandle job_port_;
@@ -78,6 +86,11 @@
   // Owned by TargetEventsThread which is alive until our destructor.
   raw_ptr<ThreadPool> thread_pool_ = nullptr;
 
+  // Handles for the alternate winstation (desktop==kAlternateWinstation).
+  std::unique_ptr<AlternateDesktop> alt_winstation_;
+  // Handles for the same winstation as the parent (desktop==kAlternateDesktop).
+  std::unique_ptr<AlternateDesktop> alt_desktop_;
+
   // Cache of configs backing policies. Entries are retained until shutdown and
   // used to prime policies created by CreatePolicy() with the same `tag`.
   base::flat_map<std::string, std::unique_ptr<TargetConfig>> config_cache_;
diff --git a/sandbox/win/src/integrity_level_test.cc b/sandbox/win/src/integrity_level_test.cc
index 458ce6a..046f0af 100644
--- a/sandbox/win/src/integrity_level_test.cc
+++ b/sandbox/win/src/integrity_level_test.cc
@@ -46,7 +46,7 @@
   auto runner = std::make_unique<TestRunner>(
       JobLevel::kLockdown, USER_INTERACTIVE, USER_INTERACTIVE);
   runner->SetTimeout(INFINITE);
-  EXPECT_EQ(SBOX_ALL_OK, runner->GetPolicy()->CreateAlternateDesktop(
+  EXPECT_EQ(SBOX_ALL_OK, runner->broker()->CreateAlternateDesktop(
                              Desktop::kAlternateWinstation));
   runner->GetPolicy()->GetConfig()->SetDesktop(Desktop::kAlternateWinstation);
   EXPECT_EQ(SBOX_ALL_OK, runner->GetPolicy()->GetConfig()->SetIntegrityLevel(
diff --git a/sandbox/win/src/policy_target_test.cc b/sandbox/win/src/policy_target_test.cc
index d9ed6a1b..2390100 100644
--- a/sandbox/win/src/policy_target_test.cc
+++ b/sandbox/win/src/policy_target_test.cc
@@ -260,7 +260,7 @@
   BrokerServices* broker = GetBroker();
 
   // Precreate the desktop.
-  broker->CreatePolicy()->CreateAlternateDesktop(Desktop::kAlternateDesktop);
+  broker->CreateAlternateDesktop(Desktop::kAlternateDesktop);
 
   ASSERT_TRUE(broker);
 
@@ -300,7 +300,7 @@
   ::WaitForSingleObject(target.process_handle(), INFINITE);
 
   // Close the desktop handle.
-  broker->CreatePolicy()->DestroyDesktops();
+  broker->DestroyDesktops();
 
   // Close the null dacl desktop.
   EXPECT_TRUE(::SetThreadDesktop(old_desktop));
@@ -315,7 +315,7 @@
   BrokerServices* broker = GetBroker();
 
   // Precreate the desktop.
-  broker->CreatePolicy()->CreateAlternateDesktop(Desktop::kAlternateDesktop);
+  broker->CreateAlternateDesktop(Desktop::kAlternateDesktop);
 
   ASSERT_TRUE(broker);
 
@@ -339,7 +339,8 @@
                                                             USER_LOCKDOWN));
   PROCESS_INFORMATION temp_process_info = {};
   // Keep the desktop name to test against later (note - it was precreated).
-  std::wstring desktop_name = policy->GetDesktopName();
+  std::wstring desktop_name =
+      broker->GetDesktopName(Desktop::kAlternateDesktop);
   result =
       broker->SpawnTarget(prog_name, arguments.c_str(), std::move(policy),
                           &warning_result, &last_error, &temp_process_info);
@@ -364,7 +365,7 @@
   ::WaitForSingleObject(target.process_handle(), INFINITE);
 
   // Close the desktop handle.
-  broker->CreatePolicy()->DestroyDesktops();
+  broker->DestroyDesktops();
 
   // Make sure the desktop does not exist anymore.
   desk = ::OpenDesktop(desktop_name.c_str(), 0, false, DESKTOP_ENUMERATE);
@@ -379,7 +380,7 @@
   BrokerServices* broker = GetBroker();
 
   // Precreate the desktop.
-  broker->CreatePolicy()->CreateAlternateDesktop(Desktop::kAlternateWinstation);
+  broker->CreateAlternateDesktop(Desktop::kAlternateWinstation);
 
   ASSERT_TRUE(broker);
 
@@ -403,7 +404,8 @@
   PROCESS_INFORMATION temp_process_info = {};
   DWORD last_error = ERROR_SUCCESS;
   // Keep the desktop name for later (note - it was precreated).
-  std::wstring desktop_name = policy->GetDesktopName();
+  std::wstring desktop_name =
+      broker->GetDesktopName(Desktop::kAlternateWinstation);
   result =
       broker->SpawnTarget(prog_name, arguments.c_str(), std::move(policy),
                           &warning_result, &last_error, &temp_process_info);
@@ -436,7 +438,7 @@
   ::WaitForSingleObject(target.process_handle(), INFINITE);
 
   // Close the desktop handle.
-  broker->CreatePolicy()->DestroyDesktops();
+  broker->DestroyDesktops();
 }
 
 // Creates multiple policies, with alternate desktops on both local and
@@ -449,20 +451,19 @@
   auto policy3 = broker->CreatePolicy();
 
   ResultCode result;
+  result = broker->CreateAlternateDesktop(Desktop::kAlternateDesktop);
+  EXPECT_EQ(SBOX_ALL_OK, result);
+  result = broker->CreateAlternateDesktop(Desktop::kAlternateWinstation);
+  EXPECT_EQ(SBOX_ALL_OK, result);
+
   policy1->GetConfig()->SetDesktop(Desktop::kAlternateDesktop);
-  result = policy1->CreateAlternateDesktop(Desktop::kAlternateDesktop);
-  EXPECT_EQ(SBOX_ALL_OK, result);
-
   policy2->GetConfig()->SetDesktop(Desktop::kAlternateWinstation);
-  result = policy2->CreateAlternateDesktop(Desktop::kAlternateWinstation);
-  EXPECT_EQ(SBOX_ALL_OK, result);
-
   policy3->GetConfig()->SetDesktop(Desktop::kAlternateDesktop);
-  result = policy3->CreateAlternateDesktop(Desktop::kAlternateDesktop);
-  EXPECT_EQ(SBOX_ALL_OK, result);
 
-  std::wstring policy1_desktop_name = policy1->GetDesktopName();
-  std::wstring policy2_desktop_name = policy2->GetDesktopName();
+  std::wstring policy1_desktop_name =
+      broker->GetDesktopName(Desktop::kAlternateDesktop);
+  std::wstring policy2_desktop_name =
+      broker->GetDesktopName(Desktop::kAlternateWinstation);
 
   // Extract only the "desktop name" portion of
   // "{winstation name}\\{desktop name}"
@@ -471,9 +472,7 @@
             policy2_desktop_name.substr(
                 policy2_desktop_name.find_first_of(L'\\') + 1));
 
-  policy1->DestroyDesktops();
-  policy2->DestroyDesktops();
-  policy3->DestroyDesktops();
+  broker->DestroyDesktops();
 }
 
 // Launches the app in the sandbox and share a handle with it. The app should
diff --git a/sandbox/win/src/sandbox.h b/sandbox/win/src/sandbox.h
index a69ef3e..39e02325 100644
--- a/sandbox/win/src/sandbox.h
+++ b/sandbox/win/src/sandbox.h
@@ -40,6 +40,7 @@
 class ProcessState;
 class TargetPolicy;
 class TargetServices;
+enum class Desktop;
 
 // BrokerServices exposes all the broker API.
 // The basic use is to start the target(s) and wait for them to end.
@@ -65,6 +66,16 @@
   // more information.
   virtual ResultCode Init() = 0;
 
+  // Pre-creates an alternate desktop. May be retried if the return value
+  // is SBOX_ERROR_CANNOT_QUERY_WINSTATION_SECURITY.
+  virtual ResultCode CreateAlternateDesktop(Desktop desktop) = 0;
+  // Destroys all desktops created for this Broker.
+  virtual void DestroyDesktops() = 0;
+  // Returns the name of the alternate desktop used. If an alternate window
+  // station is specified, the name is prepended by the window station name,
+  // followed by a backslash.
+  virtual std::wstring GetDesktopName(Desktop desktop) = 0;
+
   // Returns the interface pointer to a new, empty policy object. Use this
   // interface to specify the sandbox policy for new processes created by
   // SpawnTarget().
diff --git a/sandbox/win/src/sandbox_policy.h b/sandbox/win/src/sandbox_policy.h
index aa5072e5..74a70e7 100644
--- a/sandbox/win/src/sandbox_policy.h
+++ b/sandbox/win/src/sandbox_policy.h
@@ -8,8 +8,6 @@
 #include <stddef.h>
 #include <stdint.h>
 
-#include <string>
-
 #include "base/memory/scoped_refptr.h"
 #include "sandbox/win/src/sandbox_types.h"
 #include "sandbox/win/src/security_level.h"
@@ -273,19 +271,6 @@
   // lockdown tokens. The token the caller passes must remain valid for the
   // lifetime of the policy object.
   virtual void SetEffectiveToken(HANDLE token) = 0;
-
-  // Returns the name of the alternate desktop used. If an alternate window
-  // station is specified, the name is prepended by the window station name,
-  // followed by a backslash.
-  virtual std::wstring GetDesktopName() = 0;
-
-  // Precreates the desktop (for kAlternateDesktop & kAlternateWinstation) and
-  // window station (for kAlternateWindowstation). Should be called before any
-  // target is launched with an alternate desktop.
-  virtual ResultCode CreateAlternateDesktop(Desktop desktop) = 0;
-
-  // Destroys all desktops and window stations.
-  virtual void DestroyDesktops() = 0;
 };
 
 }  // namespace sandbox
diff --git a/sandbox/win/src/sandbox_policy_base.cc b/sandbox/win/src/sandbox_policy_base.cc
index b7ba2f9..58c69fde9 100644
--- a/sandbox/win/src/sandbox_policy_base.cc
+++ b/sandbox/win/src/sandbox_policy_base.cc
@@ -36,7 +36,6 @@
 #include "sandbox/win/src/signed_policy.h"
 #include "sandbox/win/src/target_process.h"
 #include "sandbox/win/src/top_level_dispatcher.h"
-#include "sandbox/win/src/window.h"
 
 namespace sandbox {
 namespace {
@@ -70,92 +69,6 @@
   return handle_type == FILE_TYPE_DISK || handle_type == FILE_TYPE_PIPE;
 }
 
-// Holds handles and integrity levels about alternate desktops.
-class AlternateDesktop {
- public:
-  AlternateDesktop()
-      : desktop_(nullptr),
-        winstation_(nullptr),
-        integrity_(INTEGRITY_LEVEL_SYSTEM) {}
-  ~AlternateDesktop() {
-    if (desktop_) {
-      ::CloseDesktop(desktop_);
-      desktop_ = nullptr;
-    }
-    if (winstation_) {
-      ::CloseWindowStation(winstation_);
-      winstation_ = nullptr;
-    }
-  }
-  AlternateDesktop(const AlternateDesktop&) = delete;
-  AlternateDesktop& operator=(const AlternateDesktop&) = delete;
-
-  // Updates the desktop token's integrity level to be no higher than
-  // `integrity_level`.
-  ResultCode UpdateDesktopIntegrity(IntegrityLevel integrity_level) {
-    // Integrity label enum is reversed (higher level is a lower value).
-    static_assert(INTEGRITY_LEVEL_SYSTEM < INTEGRITY_LEVEL_UNTRUSTED,
-                  "Integrity level ordering reversed.");
-    DCHECK(integrity_level != INTEGRITY_LEVEL_LAST);
-    // Require that the desktop has been set.
-    if (!desktop_)
-      return SBOX_ERROR_CANNOT_CREATE_DESKTOP;
-    if (integrity_ < integrity_level) {
-      DWORD result = SetObjectIntegrityLabel(
-          desktop_, SecurityObjectType::kWindow, 0, integrity_level);
-      if (ERROR_SUCCESS != result)
-        return SBOX_ERROR_CANNOT_SET_DESKTOP_INTEGRITY;
-      integrity_ = integrity_level;
-    }
-    return SBOX_ALL_OK;
-  }
-
-  // Populate this object, creating a winstation if `alternate_winstation` is
-  // true.
-  ResultCode Initialize(bool alternate_winstation) {
-    DCHECK(!desktop_ && !winstation_);
-    if (alternate_winstation) {
-      // Create the window station.
-      ResultCode result = CreateAltWindowStation(&winstation_);
-      if (SBOX_ALL_OK != result)
-        return result;
-
-      // Verify that everything is fine.
-      if (!winstation_ || base::win::GetWindowObjectName(winstation_).empty()) {
-        return SBOX_ERROR_CANNOT_CREATE_DESKTOP;
-      }
-    }
-    ResultCode result = CreateAltDesktop(winstation_, &desktop_);
-    if (SBOX_ALL_OK != result)
-      return result;
-
-    // Verify that everything is fine.
-    if (!desktop_ || base::win::GetWindowObjectName(desktop_).empty()) {
-      return SBOX_ERROR_CANNOT_CREATE_DESKTOP;
-    }
-    return SBOX_ALL_OK;
-  }
-
-  std::wstring GetDesktopName() {
-    if (!desktop_)
-      return std::wstring();
-    return GetFullDesktopName(winstation_, desktop_);
-  }
-
- private:
-  // Handle for the alternate desktop.
-  HDESK desktop_;
-  // Winstation for the alternate desktop, or nullptr if not used.
-  HWINSTA winstation_;
-  // Last set integrity level of the desktop.
-  IntegrityLevel integrity_;
-};
-
-// Handles for the alternate winstation (desktop==kAlternateWinstation).
-std::unique_ptr<AlternateDesktop> g_alt_winstation;
-// Handles for the same winstation as the parent (desktop==kAlternateDesktop).
-std::unique_ptr<AlternateDesktop> g_alt_desktop;
-
 }  // namespace
 
 SANDBOX_INTERCEPT IntegrityLevel g_shared_delayed_integrity_level =
@@ -542,52 +455,6 @@
   return true;
 }
 
-std::wstring PolicyBase::GetDesktopName() {
-  switch (config()->desktop()) {
-    case Desktop::kDefault:
-      // No alternate desktop or winstation. Return an empty string.
-      return std::wstring();
-    case Desktop::kAlternateWinstation:
-      return g_alt_winstation ? g_alt_winstation->GetDesktopName()
-                              : std::wstring();
-    case Desktop::kAlternateDesktop:
-      return g_alt_desktop ? g_alt_desktop->GetDesktopName() : std::wstring();
-  }
-}
-
-ResultCode PolicyBase::CreateAlternateDesktop(Desktop desktop) {
-  switch (desktop) {
-    case Desktop::kAlternateWinstation: {
-      // If already populated keep going.
-      if (g_alt_winstation)
-        return SBOX_ALL_OK;
-      g_alt_winstation = std::make_unique<AlternateDesktop>();
-      ResultCode result = g_alt_winstation->Initialize(true);
-      if (result != SBOX_ALL_OK)
-        g_alt_winstation.reset();
-      return result;
-    };
-    case Desktop::kAlternateDesktop: {
-      // If already populated keep going.
-      if (g_alt_desktop)
-        return SBOX_ALL_OK;
-      g_alt_desktop = std::make_unique<AlternateDesktop>();
-      ResultCode result = g_alt_desktop->Initialize(false);
-      if (result != SBOX_ALL_OK)
-        g_alt_desktop.reset();
-      return result;
-    };
-    case Desktop::kDefault:
-      // The default desktop always exists.
-      return SBOX_ALL_OK;
-  }
-}
-
-void PolicyBase::DestroyDesktops() {
-  g_alt_winstation.reset();
-  g_alt_desktop.reset();
-}
-
 ResultCode PolicyBase::SetStdoutHandle(HANDLE handle) {
   if (!IsInheritableHandle(handle))
     return SBOX_ERROR_BAD_PARAMS;
@@ -675,25 +542,6 @@
   if (ERROR_SUCCESS != result)
     return SBOX_ERROR_CANNOT_CREATE_RESTRICTED_TOKEN;
 
-  // If we're launching on an alternate desktop we need to make sure the
-  // integrity label on the object is no higher than the sandboxed process's
-  // integrity level. So, we lower the label on the desktop handle if it's
-  // not already low enough for our process. TODO(crbug.com/1361470) we allow
-  // desktop creation to failure - perhaps we can require them to be present in
-  // the future.
-  if (integrity_level != INTEGRITY_LEVEL_LAST) {
-    ResultCode result_code = SBOX_ALL_OK;
-    if (config()->desktop() == Desktop::kAlternateWinstation &&
-        g_alt_winstation) {
-      result_code = g_alt_winstation->UpdateDesktopIntegrity(integrity_level);
-    } else if (config()->desktop() == Desktop::kAlternateDesktop &&
-               g_alt_desktop) {
-      result_code = g_alt_desktop->UpdateDesktopIntegrity(integrity_level);
-    }
-    if (result_code != SBOX_ALL_OK)
-      return result_code;
-  }
-
   AppContainerBase* app_container = config()->app_container();
   if (app_container &&
       app_container->GetAppContainerType() == AppContainerType::kLowbox) {
diff --git a/sandbox/win/src/sandbox_policy_base.h b/sandbox/win/src/sandbox_policy_base.h
index 80cb6087..c80221d 100644
--- a/sandbox/win/src/sandbox_policy_base.h
+++ b/sandbox/win/src/sandbox_policy_base.h
@@ -166,9 +166,6 @@
 
   // TargetPolicy:
   TargetConfig* GetConfig() override;
-  std::wstring GetDesktopName() override;
-  ResultCode CreateAlternateDesktop(Desktop desktop) override;
-  void DestroyDesktops() override;
   ResultCode SetStdoutHandle(HANDLE handle) override;
   ResultCode SetStderrHandle(HANDLE handle) override;
   void AddHandleToShare(HANDLE handle) override;
diff --git a/sandbox/win/tests/validation_tests/suite.cc b/sandbox/win/tests/validation_tests/suite.cc
index ed83418..2997c934 100644
--- a/sandbox/win/tests/validation_tests/suite.cc
+++ b/sandbox/win/tests/validation_tests/suite.cc
@@ -158,7 +158,7 @@
 
 std::unique_ptr<TestRunner> DesktopRunner() {
   auto runner = std::make_unique<TestRunner>();
-  EXPECT_EQ(SBOX_ALL_OK, runner->GetPolicy()->CreateAlternateDesktop(
+  EXPECT_EQ(SBOX_ALL_OK, runner->broker()->CreateAlternateDesktop(
                              Desktop::kAlternateWinstation));
   runner->GetPolicy()->GetConfig()->SetDesktop(Desktop::kAlternateWinstation);
   EXPECT_EQ(SBOX_ALL_OK, runner->GetPolicy()->GetConfig()->SetIntegrityLevel(
@@ -186,15 +186,16 @@
   TestRunner runner;
   wchar_t command[1024] = {0};
   runner.SetTimeout(3600000);
-  EXPECT_EQ(SBOX_ALL_OK, runner.GetPolicy()->CreateAlternateDesktop(
+  EXPECT_EQ(SBOX_ALL_OK, runner.broker()->CreateAlternateDesktop(
                              Desktop::kAlternateWinstation));
   runner.GetPolicy()->GetConfig()->SetDesktop(Desktop::kAlternateWinstation);
   EXPECT_EQ(SBOX_ALL_OK, runner.GetPolicy()->GetConfig()->SetIntegrityLevel(
                              INTEGRITY_LEVEL_LOW));
   // Ensure the desktop is created.
-  EXPECT_EQ(SBOX_ALL_OK, runner.GetPolicy()->CreateAlternateDesktop(
+  EXPECT_EQ(SBOX_ALL_OK, runner.broker()->CreateAlternateDesktop(
                              Desktop::kAlternateWinstation));
-  std::wstring desktop_name = runner.GetPolicy()->GetDesktopName();
+  std::wstring desktop_name =
+      runner.broker()->GetDesktopName(Desktop::kAlternateWinstation);
   desktop_name = desktop_name.substr(desktop_name.find('\\') + 1);
   wsprintf(command, L"OpenAlternateDesktop %lS", desktop_name.c_str());
   EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(command));
@@ -202,7 +203,7 @@
 
 std::unique_ptr<TestRunner> AlternateDesktopLocalWinstationRunner() {
   auto runner = std::make_unique<TestRunner>();
-  EXPECT_EQ(SBOX_ALL_OK, runner->GetPolicy()->CreateAlternateDesktop(
+  EXPECT_EQ(SBOX_ALL_OK, runner->broker()->CreateAlternateDesktop(
                              Desktop::kAlternateDesktop));
   runner->GetPolicy()->GetConfig()->SetDesktop(Desktop::kAlternateDesktop);
   EXPECT_EQ(SBOX_ALL_OK, runner->GetPolicy()->GetConfig()->SetIntegrityLevel(
diff --git a/services/accessibility/BUILD.gn b/services/accessibility/BUILD.gn
index b109819..e9b878cd 100644
--- a/services/accessibility/BUILD.gn
+++ b/services/accessibility/BUILD.gn
@@ -1,7 +1,15 @@
 # Copyright 2022 The Chromium Authors. All rights reserved.
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
+import("//build/buildflag_header.gni")
 import("//build/config/chromeos/ui_mode.gni")
+import("//services/accessibility/buildflags.gni")
+
+buildflag_header("buildflags") {
+  header = "buildflags.h"
+  flags =
+      [ "ENABLE_ACCESSIBILITY_SERVICE=$enable_accessibility_service_internal" ]
+}
 
 source_set("lib") {
   sources = [
diff --git a/services/accessibility/accessibility_service_cros.cc b/services/accessibility/accessibility_service_cros.cc
index 625f00a..b8ec461 100644
--- a/services/accessibility/accessibility_service_cros.cc
+++ b/services/accessibility/accessibility_service_cros.cc
@@ -29,8 +29,12 @@
 
 void AccessibilityServiceCros::BindAssistiveTechnologyController(
     mojo::PendingReceiver<mojom::AssistiveTechnologyController>
-        at_at_controller_receiver) {
+        at_at_controller_receiver,
+    const std::vector<mojom::AssistiveTechnologyType>& enabled_features) {
   at_controller_->Bind(std::move(at_at_controller_receiver));
+  for (auto feature : enabled_features) {
+    at_controller_->EnableAssistiveTechnology(feature, /*enabled=*/true);
+  }
 }
 
 }  // namespace ax
diff --git a/services/accessibility/accessibility_service_cros.h b/services/accessibility/accessibility_service_cros.h
index f88ebfe..d62e0fa5 100644
--- a/services/accessibility/accessibility_service_cros.h
+++ b/services/accessibility/accessibility_service_cros.h
@@ -25,13 +25,17 @@
   AccessibilityServiceCros& operator=(const AccessibilityServiceCros&) = delete;
 
  private:
+  friend class AccessibilityServiceCrosTest;
+
   // mojom::AccessibilityService:
   void BindAutomation(
       mojo::PendingRemote<mojom::AutomationClient> accessibility_client_remote,
       mojo::PendingReceiver<mojom::Automation> automation_receiver) override;
   void BindAssistiveTechnologyController(
       mojo::PendingReceiver<mojom::AssistiveTechnologyController>
-          at_controller_receiver) override;
+          at_controller_receiver,
+      const std::vector<mojom::AssistiveTechnologyType>& enabled_features)
+      override;
 
   std::unique_ptr<AssistiveTechnologyControllerImpl> at_controller_;
 
diff --git a/services/accessibility/accessibility_service_cros_unittest.cc b/services/accessibility/accessibility_service_cros_unittest.cc
index b508c08..88be937 100644
--- a/services/accessibility/accessibility_service_cros_unittest.cc
+++ b/services/accessibility/accessibility_service_cros_unittest.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include "services/accessibility/accessibility_service_cros.h"
+#include "base/functional/bind.h"
 #include "base/test/task_environment.h"
 #include "mojo/public/cpp/bindings/pending_receiver.h"
 #include "mojo/public/cpp/bindings/pending_remote.h"
@@ -30,9 +31,10 @@
       const FakeAssistiveTechnologyController&) = delete;
   ~FakeAssistiveTechnologyController() = default;
 
-  void BindAssistiveTechnologyController() {
+  void BindAssistiveTechnologyController(
+      const std::vector<mojom::AssistiveTechnologyType>& enabled_features) {
     service_->BindAssistiveTechnologyController(
-        at_controller_.BindNewPipeAndPassReceiver());
+        at_controller_.BindNewPipeAndPassReceiver(), enabled_features);
   }
 
   bool IsBound() { return at_controller_.is_bound(); }
@@ -44,7 +46,22 @@
 
 }  // namespace
 
-TEST(AccessibilityServiceCrosTest, BindsAutomation) {
+class AccessibilityServiceCrosTest : public testing::Test {
+ public:
+  AccessibilityServiceCrosTest() = default;
+  AccessibilityServiceCrosTest(const AccessibilityServiceCrosTest& other) =
+      delete;
+  AccessibilityServiceCrosTest& operator=(const AccessibilityServiceCrosTest&) =
+      delete;
+  ~AccessibilityServiceCrosTest() override = default;
+
+  bool IsFeatureEnabled(AccessibilityServiceCros* service,
+                        mojom::AssistiveTechnologyType feature) {
+    return service->at_controller_->IsFeatureEnabled(feature);
+  }
+};
+
+TEST_F(AccessibilityServiceCrosTest, BindsAutomation) {
   base::test::SingleThreadTaskEnvironment task_environment;
   mojo::PendingReceiver<mojom::AccessibilityService> receiver;
   std::unique_ptr<AccessibilityServiceCros> service =
@@ -55,15 +72,31 @@
   EXPECT_TRUE(client.IsBound());
 }
 
-TEST(AccessibilityServiceCrosTest, BindsAssistiveTechnologyController) {
+TEST_F(AccessibilityServiceCrosTest, BindsAssistiveTechnologyController) {
   base::test::SingleThreadTaskEnvironment task_environment;
   mojo::PendingReceiver<mojom::AccessibilityService> receiver;
   std::unique_ptr<AccessibilityServiceCros> service =
       std::make_unique<AccessibilityServiceCros>(std::move(receiver));
 
   FakeAssistiveTechnologyController at_controller(service.get());
-  at_controller.BindAssistiveTechnologyController();
+  at_controller.BindAssistiveTechnologyController(
+      std::vector<mojom::AssistiveTechnologyType>(
+          {mojom::AssistiveTechnologyType::kChromeVox,
+           mojom::AssistiveTechnologyType::kAutoClick}));
   EXPECT_TRUE(at_controller.IsBound());
+
+  EXPECT_TRUE(IsFeatureEnabled(service.get(),
+                               mojom::AssistiveTechnologyType::kChromeVox));
+  EXPECT_TRUE(IsFeatureEnabled(service.get(),
+                               mojom::AssistiveTechnologyType::kAutoClick));
+  EXPECT_FALSE(IsFeatureEnabled(service.get(),
+                                mojom::AssistiveTechnologyType::kSwitchAccess));
+  EXPECT_FALSE(IsFeatureEnabled(service.get(),
+                                mojom::AssistiveTechnologyType::kDictation));
+  EXPECT_FALSE(IsFeatureEnabled(service.get(),
+                                mojom::AssistiveTechnologyType::kMagnifier));
+  EXPECT_FALSE(IsFeatureEnabled(
+      service.get(), mojom::AssistiveTechnologyType::kSelectToSpeak));
 }
 
 }  // namespace ax
diff --git a/services/accessibility/buildflags.gni b/services/accessibility/buildflags.gni
new file mode 100644
index 0000000..63d5769b
--- /dev/null
+++ b/services/accessibility/buildflags.gni
@@ -0,0 +1,20 @@
+# Copyright 2022 The Chromium Authors
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//build/config/chromeos/ui_mode.gni")
+
+declare_args() {
+  # Used to enable the Accessibility Service. Override this in
+  # gn args on supported platforms (see below).
+  enable_accessibility_service = false
+}
+
+declare_args() {
+  # Shortcut for only allowing the service to run on Chrome OS Ash, Windows,
+  # Mac, and Linux when the buildflag above is enabled.
+  # This is exposed with the macro ENABLE_ACCESSIBILITY_SERVICE.
+  enable_accessibility_service_internal =
+      enable_accessibility_service &&
+      (is_chromeos_ash || is_linux || is_mac || is_windows)
+}
diff --git a/services/accessibility/public/mojom/accessibility_service.mojom b/services/accessibility/public/mojom/accessibility_service.mojom
index 1330aaa..413e5361 100644
--- a/services/accessibility/public/mojom/accessibility_service.mojom
+++ b/services/accessibility/public/mojom/accessibility_service.mojom
@@ -73,7 +73,7 @@
 };
 
 // Features which are implemented by the accessibility service.
-[EnableIf=is_chromeos]
+[EnableIf=is_chromeos_ash]
 enum AssistiveTechnologyType {
   kChromeVox,
   kSelectToSpeak,
@@ -85,7 +85,7 @@
 
 // Implemented by the accessibility service. Turns on and off features.
 // The caller is the client OS, for example, Chrome OS Ash.
-[EnableIf=is_chromeos]
+[EnableIf=is_chromeos_ash]
 interface AssistiveTechnologyController {
   // // Turns on or off an accessibility feature in the service.
   // EnableAssistiveTechnology(AssistiveTechnologyType type, bool enabled);
@@ -107,7 +107,10 @@
 
   // Binds an AssistiveTechnologyController hosted in the service process,
   // allowing the client to control which Assistive Technologies are active.
-  [EnableIf=is_chromeos]
+  // Callers may pass in a list of initially enabled features; features not
+  // in this list are assumed disabled.
+  [EnableIf=is_chromeos_ash]
   BindAssistiveTechnologyController(
-    pending_receiver<AssistiveTechnologyController> at_controller);
+    pending_receiver<AssistiveTechnologyController> at_controller,
+    array<AssistiveTechnologyType> enabled_features);
 };
diff --git a/services/audio/output_controller.cc b/services/audio/output_controller.cc
index fcaed44..5e3fb1d 100644
--- a/services/audio/output_controller.cc
+++ b/services/audio/output_controller.cc
@@ -22,6 +22,7 @@
 #include "base/threading/platform_thread.h"
 #include "base/trace_event/trace_event.h"
 #include "media/base/audio_timestamp_helper.h"
+#include "media/media_buildflags.h"
 #include "services/audio/concurrent_stream_metric_reporter.h"
 #include "services/audio/device_listener_output_stream.h"
 #include "services/audio/stream_monitor.h"
@@ -438,7 +439,13 @@
 
   sync_reader_->RequestMoreData(delay, delay_timestamp, prior_frames_skipped);
 
-  if (will_monitor_audio_levels()) {
+#if !BUILDFLAG(ENABLE_PLATFORM_DTS_AUDIO)
+  constexpr bool is_bitstream = false;
+#else
+  const bool is_bitstream = params_.IsBitstreamFormat();
+#endif
+
+  if (will_monitor_audio_levels() && !is_bitstream) {
     // Note: this code path should never be hit when using bitstream streams.
     // Scan doesn't expect compressed audio, so it may go out of bounds trying
     // to read |frames| frames of PCM data.
diff --git a/services/device/public/cpp/bluetooth/bluetooth_utils.cc b/services/device/public/cpp/bluetooth/bluetooth_utils.cc
index 0110529530..1c9c908 100644
--- a/services/device/public/cpp/bluetooth/bluetooth_utils.cc
+++ b/services/device/public/cpp/bluetooth/bluetooth_utils.cc
@@ -85,60 +85,6 @@
   NOTREACHED();
 }
 
-namespace {
-
-int GetBluetoothDeviceTypeAccessibilityLabelId(DeviceType device_type) {
-  switch (device_type) {
-    case DeviceType::kComputer:
-      return IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_COMPUTER;
-    case DeviceType::kPhone:
-      return IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_PHONE;
-    case DeviceType::kModem:
-      return IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_MODEM;
-    case DeviceType::kAudio:
-      return IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_AUDIO;
-    case DeviceType::kCarAudio:
-      return IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_CAR_AUDIO;
-    case DeviceType::kVideo:
-      return IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_VIDEO;
-    case DeviceType::kPeripheral:
-      return IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_PERIPHERAL;
-    case DeviceType::kJoystick:
-      return IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_JOYSTICK;
-    case DeviceType::kGamepad:
-      return IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_GAMEPAD;
-    case DeviceType::kKeyboard:
-      return IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_KEYBOARD;
-    case DeviceType::kMouse:
-      return IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_MOUSE;
-    case DeviceType::kTablet:
-      return IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_TABLET;
-    case DeviceType::kKeyboardMouseCombo:
-      return IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_KEYBOARD_MOUSE_COMBO;
-    case DeviceType::kUnknown:
-      return IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_UNKNOWN;
-  }
-  NOTREACHED();
-}
-
-}  // namespace
-
-// Returns a a11y accessibility label of the device
-std::u16string GetBluetoothDeviceLabelForAccessibility(
-    const mojom::BluetoothDeviceInfoPtr& device_info) {
-  std::u16string name_utf16 =
-      device::GetBluetoothAddressForDisplay(device_info->address);
-  if (device_info->name) {
-    const std::string& device_name = device_info->name.value();
-    if (device::HasGraphicCharacter(device_name))
-      name_utf16 = base::UTF8ToUTF16(device_name);
-  }
-
-  return l10n_util::GetStringFUTF16(
-      GetBluetoothDeviceTypeAccessibilityLabelId(device_info->device_type),
-      name_utf16);
-}
-
 const BluetoothUUID& GetSerialPortProfileUUID() {
   // The Serial Port Profile (SPP) UUID is 1101.
   // https://chromium-review.googlesource.com/c/chromium/src/+/2334682/17..19
diff --git a/services/device/public/cpp/bluetooth/bluetooth_utils_unittest.cc b/services/device/public/cpp/bluetooth/bluetooth_utils_unittest.cc
index 606fb01..1a577f8 100644
--- a/services/device/public/cpp/bluetooth/bluetooth_utils_unittest.cc
+++ b/services/device/public/cpp/bluetooth/bluetooth_utils_unittest.cc
@@ -6,8 +6,6 @@
 
 #include "base/files/file_path.h"
 #include "base/path_service.h"
-#include "base/strings/utf_string_conversions.h"
-#include "device/bluetooth/strings/grit/bluetooth_strings.h"
 #include "services/device/public/mojom/bluetooth_system.mojom.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/abseil-cpp/absl/types/optional.h"
@@ -117,42 +115,4 @@
                                       {0xAA, 0xBB, 0xCC, 0x00, 0x11, 0x22}));
 }
 
-static std::u16string LabelFromTypeWithName(
-    BluetoothDeviceInfo::DeviceType type,
-    const char* name = kName) {
-  BluetoothDeviceInfoPtr info = BluetoothDeviceInfo::New();
-  info->address = kAddress;
-  info->name = name;
-  info->device_type = type;
-  return GetBluetoothDeviceLabelForAccessibility(info);
-}
-
-TEST(BluetoothUtilsTest, GetBluetoothDeviceLabelForAccessibility) {
-  EXPECT_EQ(
-      l10n_util::GetStringFUTF16(
-          IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_COMPUTER, kName16),
-      LabelFromTypeWithName(BluetoothDeviceInfo::DeviceType::kComputer, kName));
-
-  EXPECT_EQ(
-      l10n_util::GetStringFUTF16(
-          IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_CAR_AUDIO, kUnicodeName16),
-      LabelFromTypeWithName(BluetoothDeviceInfo::DeviceType::kCarAudio,
-                            kUnicodeName));
-  EXPECT_EQ(l10n_util::GetStringFUTF16(
-                IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_KEYBOARD,
-                u"00:00:00:00:00:00"),
-            LabelFromTypeWithName(BluetoothDeviceInfo::DeviceType::kKeyboard,
-                                  kEmptyName));
-  EXPECT_EQ(
-      l10n_util::GetStringFUTF16(IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_VIDEO,
-                                 u"00:00:00:00:00:00"),
-      LabelFromTypeWithName(BluetoothDeviceInfo::DeviceType::kVideo,
-                            kWhitespaceName));
-  EXPECT_EQ(l10n_util::GetStringFUTF16(
-                IDS_BLUETOOTH_ACCESSIBILITY_DEVICE_TYPE_JOYSTICK,
-                u"00:00:00:00:00:00"),
-            LabelFromTypeWithName(BluetoothDeviceInfo::DeviceType::kJoystick,
-                                  kUnicodeWhitespaceName));
-}
-
 }  // namespace device
diff --git a/services/device/public/mojom/bluetooth_system.mojom b/services/device/public/mojom/bluetooth_system.mojom
index b9bf3d2..c89d36d 100644
--- a/services/device/public/mojom/bluetooth_system.mojom
+++ b/services/device/public/mojom/bluetooth_system.mojom
@@ -79,6 +79,7 @@
          pending_remote<BluetoothSystemClient> system_client);
 };
 
+// TODO(b/231254441): Remove BluetoothSystem.
 // High level interface targeted towards UI level components that:
 //  - Show the BT radio state and allow users to change it.
 //  - Show a list of nearby, connected and paired BT Devices.
diff --git a/services/network/public/cpp/corb/README.md b/services/network/public/cpp/corb/README.md
index 97994c0fd..d20e9c4 100644
--- a/services/network/public/cpp/corb/README.md
+++ b/services/network/public/cpp/corb/README.md
@@ -16,7 +16,7 @@
 policy does not apply. For example, a page may load images from other origins.
 The specification refers to these as requests with a ["no-cors" request mode](https://fetch.spec.whatwg.org/#concept-request-mode).
 
-Meanwhile, the ["Spectre" family of attacks](https://chromium.googlesource.com/chromium/src/+/master/docs/security/side-channel-threat-model.md)
+Meanwhile, the ["Spectre" family of attacks](https://chromium.googlesource.com/chromium/src/+/main/docs/security/side-channel-threat-model.md)
 allow a website to read memory within an operating system process.
 (Caveats apply and it's more complicated that that; but that's the gist.)
 
@@ -31,7 +31,7 @@
 page might get its contents after all.
 
 Additionally, CORB/ORB serve as a "defense in depth" measure: They help
-to improve [isolation](https://chromium.googlesource.com/chromium/src/+/master/docs/process_model_and_site_isolation.md) between origins and thus make it
+to improve [isolation](https://chromium.googlesource.com/chromium/src/+/main/docs/process_model_and_site_isolation.md) between origins and thus make it
 harder [to exploit a compromised renderer](https://chromium.googlesource.com/chromium/src/+/main/docs/security/compromised-renderers.md).
 
 ## Security Properties
@@ -75,7 +75,7 @@
 The full details are more complicated. Here, we'll skip over details of
 sniffing, error handling, and partial content responses (HTTP 206 responses).
 Additional details can be found
-[here](https://chromium.googlesource.com/chromium/src/+/master/services/network/cross_origin_read_blocking_explainer.md) and [here](https://www.chromium.org/Home/chromium-security/corb-for-developers/).
+[here](https://chromium.googlesource.com/chromium/src/+/main/services/network/cross_origin_read_blocking_explainer.md) and [here](https://www.chromium.org/Home/chromium-security/corb-for-developers/).
 
 Note that this is a partial mismatch for our security requirements: Instead
 of requiring positive evidence for the intended format, we instead picked a
@@ -109,9 +109,9 @@
   and some XML MIME types.
 - It does not implement the JavaScript parsing steps. Instead it
   re-uses several sniffers from CORB:
-  [HTML](https://chromium.googlesource.com/chromium/src/+/master/services/network/cross_origin_read_blocking_explainer.md#protecting-html),
-  [XML](https://chromium.googlesource.com/chromium/src/+/master/services/network/cross_origin_read_blocking_explainer.md#protecting-xml), and
-  [JSON and "XSSI-defeating prefixes"](https://chromium.googlesource.com/chromium/src/+/master/services/network/cross_origin_read_blocking_explainer.md#protecting-json).
+  [HTML](https://chromium.googlesource.com/chromium/src/+/main/services/network/cross_origin_read_blocking_explainer.md#protecting-html),
+  [XML](https://chromium.googlesource.com/chromium/src/+/main/services/network/cross_origin_read_blocking_explainer.md#protecting-xml), and
+  [JSON and "XSSI-defeating prefixes"](https://chromium.googlesource.com/chromium/src/+/main/services/network/cross_origin_read_blocking_explainer.md#protecting-json).
 - It will accept any response for which these heuristics do not deliver a
   verdict.
 - CORB error handling is re-used: If a response is blocked, an empty response
diff --git a/services/preferences/public/cpp/dictionary_value_update.cc b/services/preferences/public/cpp/dictionary_value_update.cc
index 8c8d6d7..e9e00986 100644
--- a/services/preferences/public/cpp/dictionary_value_update.cc
+++ b/services/preferences/public/cpp/dictionary_value_update.cc
@@ -317,7 +317,8 @@
 bool DictionaryValueUpdate::RemovePath(
     base::StringPiece path,
     std::unique_ptr<base::Value>* out_value) {
-  absl::optional<base::Value> value = value_->ExtractPath(path);
+  absl::optional<base::Value> value =
+      value_->GetDict().ExtractByDottedPath(path);
   if (!value)
     return false;
 
diff --git a/services/viz/privileged/mojom/gl/BUILD.gn b/services/viz/privileged/mojom/gl/BUILD.gn
index d9ee423..588f0df 100644
--- a/services/viz/privileged/mojom/gl/BUILD.gn
+++ b/services/viz/privileged/mojom/gl/BUILD.gn
@@ -19,6 +19,7 @@
   public_deps = [
     "//gpu/ipc/common:interfaces",
     "//media/mojo/mojom",
+    "//third_party/blink/public/mojom/tokens:tokens",
     "//ui/gfx/geometry/mojom",
     "//ui/gfx/mojom",
     "//ui/gl/mojom",
diff --git a/services/viz/privileged/mojom/gl/gpu_host.mojom b/services/viz/privileged/mojom/gl/gpu_host.mojom
index a2f8be2..81789975 100644
--- a/services/viz/privileged/mojom/gl/gpu_host.mojom
+++ b/services/viz/privileged/mojom/gl/gpu_host.mojom
@@ -10,6 +10,7 @@
 import "gpu/ipc/common/surface_handle.mojom";
 import "mojo/public/mojom/base/byte_string.mojom";
 import "services/viz/privileged/mojom/gl/context_lost_reason.mojom";
+import "third_party/blink/public/mojom/tokens/tokens.mojom";
 import "ui/gfx/mojom/gpu_extra_info.mojom";
 import "url/mojom/url.mojom";
 [EnableIf=is_win]
@@ -58,6 +59,14 @@
   // track of this decision in case the GPU process crashes.
   DisableGpuCompositing();
 
+  // Asks the host to pass an isolation key for a given token. The client id
+  // corresponds to the render process id.
+  // TODO(dawn:549) Consider using ExecutionContextToken if DocumentToken
+  //     becomes a part of the ExecutionContextToken.
+  GetIsolationKey(int32 client_id,
+                  blink.mojom.WebGPUExecutionContextToken wgpu_context_token)
+      => (string isolation_key);
+
   [EnableIf=is_win]
   SetChildSurface(gpu.mojom.SurfaceHandle parent,
                   gpu.mojom.SurfaceHandle child);
diff --git a/testing/android/junit/BUILD.gn b/testing/android/junit/BUILD.gn
index 3f379cbe..8d58ead 100644
--- a/testing/android/junit/BUILD.gn
+++ b/testing/android/junit/BUILD.gn
@@ -24,6 +24,7 @@
     "java/src/org/chromium/testing/local/TestListComputer.java",
   ]
   deps = [
+    "//third_party/android_build_tools/json:json_java",
     "//third_party/junit",
     "//third_party/mockito:mockito_java",
   ]
diff --git a/testing/android/junit/java/src/org/chromium/testing/local/CustomShadowApplicationPackageManager.java b/testing/android/junit/java/src/org/chromium/testing/local/CustomShadowApplicationPackageManager.java
index 6a286ab..4b3fea6f 100644
--- a/testing/android/junit/java/src/org/chromium/testing/local/CustomShadowApplicationPackageManager.java
+++ b/testing/android/junit/java/src/org/chromium/testing/local/CustomShadowApplicationPackageManager.java
@@ -4,7 +4,6 @@
 
 package org.chromium.testing.local;
 
-import android.app.ApplicationPackageManager;
 import android.content.ComponentName;
 import android.content.pm.ActivityInfo;
 import android.content.pm.PackageInfo;
@@ -18,7 +17,7 @@
  * Uses {@link PackageManager#getPackageInfo()} to retrieve ActivityInfo. This enables registering
  * activities via {@link ShadowPackageManager#addPackage()}.
  */
-@Implements(ApplicationPackageManager.class)
+@Implements(className = "android.app.ApplicationPackageManager")
 public class CustomShadowApplicationPackageManager extends ShadowApplicationPackageManager {
     @Implementation
     @Override
diff --git a/testing/android/junit/java/src/org/chromium/testing/local/JunitTestMain.java b/testing/android/junit/java/src/org/chromium/testing/local/JunitTestMain.java
index 32e4cbe0..336fd61 100644
--- a/testing/android/junit/java/src/org/chromium/testing/local/JunitTestMain.java
+++ b/testing/android/junit/java/src/org/chromium/testing/local/JunitTestMain.java
@@ -63,7 +63,10 @@
 
     private static Class<?> classOrNull(String className) {
         try {
-            return Class.forName(className);
+            // Do not initialize classes (clinit) yet, Android methods are all
+            // stubs until robolectric loads the real implementations.
+            return Class.forName(
+                    className, /*initialize*/ false, JunitTestMain.class.getClassLoader());
         } catch (ClassNotFoundException e) {
             System.err.println("Class not found: " + className);
         } catch (NoClassDefFoundError e) {
@@ -104,4 +107,3 @@
         System.exit(core.run(testRequest).wasSuccessful() ? 0 : 1);
     }
 }
-
diff --git a/testing/android/native_test/java/src/org/chromium/native_test/NativeUnitTest.java b/testing/android/native_test/java/src/org/chromium/native_test/NativeUnitTest.java
index 632f1ff..a235e84 100644
--- a/testing/android/native_test/java/src/org/chromium/native_test/NativeUnitTest.java
+++ b/testing/android/native_test/java/src/org/chromium/native_test/NativeUnitTest.java
@@ -20,6 +20,12 @@
 public class NativeUnitTest extends NativeTest {
     private static final String TAG = "NativeTest";
 
+    private static class NativeUnitTestLibraryLoader extends LibraryLoader {
+        static void setLibrariesLoaded() {
+            LibraryLoader.setLibrariesLoadedForNativeTests();
+        }
+    }
+
     @Override
     public void preCreate(Activity activity) {
         super.preCreate(activity);
@@ -50,6 +56,6 @@
             System.loadLibrary(library);
             Log.i(TAG, "loaded: %s", library);
         }
-        LibraryLoader.getInstance().setLibrariesLoadedForNativeTests();
+        NativeUnitTestLibraryLoader.setLibrariesLoaded();
     }
 }
diff --git a/testing/buildbot/chromium.android.json b/testing/buildbot/chromium.android.json
index 5f72564..17c08ca 100644
--- a/testing/buildbot/chromium.android.json
+++ b/testing/buildbot/chromium.android.json
@@ -27376,6928 +27376,15 @@
       }
     ]
   },
-  "android-marshmallow-arm64-rel": {
+  "android-nougat-x86-rel": {
     "additional_compile_targets": [
       "cronet_test_instrumentation_apk",
-      "chrome_nocompile_tests",
-      "monochrome_static_initializers"
+      "chrome_nocompile_tests"
     ],
     "gtest_tests": [
       {
         "args": [
           "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "absl_hardening_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "absl_hardening_tests",
-        "test_id_prefix": "ninja://third_party/abseil-cpp:absl_hardening_tests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "android_browsertests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "quickrun_shards": 3,
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "android_browsertests",
-        "test_id_prefix": "ninja://chrome/test:android_browsertests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "android_webview_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "android_webview_unittests",
-        "test_id_prefix": "ninja://android_webview/test:android_webview_unittests/"
-      },
-      {
-        "args": [
-          "-v"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "angle_unittests",
-        "test_id_prefix": "ninja://third_party/angle/src/tests:angle_unittests/",
-        "use_isolated_scripts_api": true
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "base_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "base_unittests",
-        "test_id_prefix": "ninja://base:base_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "blink_common_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "blink_common_unittests",
-        "test_id_prefix": "ninja://third_party/blink/common:blink_common_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "blink_heap_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "blink_heap_unittests",
-        "test_id_prefix": "ninja://third_party/blink/renderer/platform/heap:blink_heap_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "blink_platform_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "blink_platform_unittests",
-        "test_id_prefix": "ninja://third_party/blink/renderer/platform:blink_platform_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "boringssl_crypto_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "boringssl_crypto_tests",
-        "test_id_prefix": "ninja://third_party/boringssl:boringssl_crypto_tests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "boringssl_ssl_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "boringssl_ssl_tests",
-        "test_id_prefix": "ninja://third_party/boringssl:boringssl_ssl_tests/"
-      },
-      {
-        "args": [
-          "--gtest_filter=-*UsingRealWebcam*",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "capture_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "capture_unittests",
-        "test_id_prefix": "ninja://media/capture:capture_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "cast_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "cast_unittests",
-        "test_id_prefix": "ninja://media/cast:cast_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "ci_only": true,
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "cc_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "cc_unittests",
-        "test_id_prefix": "ninja://cc:cc_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "ci_only": true,
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "chrome_modern_public_bundle_smoke_test"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "chrome_modern_public_bundle_smoke_test",
-        "test_id_prefix": "ninja://chrome/android:chrome_modern_public_bundle_smoke_test/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "ci_only": true,
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "chrome_public_smoke_test"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "chrome_public_smoke_test",
-        "test_id_prefix": "ninja://chrome/android:chrome_public_smoke_test/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--git-revision=${got_revision}"
-        ],
-        "ci_only": true,
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "chrome_public_test_apk"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "precommit_args": [
-          "--gerrit-issue=${patch_issue}",
-          "--gerrit-patchset=${patch_set}",
-          "--buildbucket-id=${buildbucket_build_id}"
-        ],
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 20
-        },
-        "test": "chrome_public_test_apk",
-        "test_id_prefix": "ninja://chrome/android:chrome_public_test_apk/"
-      },
-      {
-        "args": [
-          "--shared-prefs-file=//chrome/android/shared_preference_files/test/vr_cardboard_skipdon_setupcomplete.json",
-          "--additional-apk=//third_party/gvr-android-sdk/test-apks/vr_services/vr_services_current.apk",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "chrome_public_test_vr_apk"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "chrome_public_test_vr_apk",
-        "test_id_prefix": "ninja://chrome/android:chrome_public_test_vr_apk/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--git-revision=${got_revision}"
-        ],
-        "ci_only": true,
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "chrome_public_unit_test_apk"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "precommit_args": [
-          "--gerrit-issue=${patch_issue}",
-          "--gerrit-patchset=${patch_set}",
-          "--buildbucket-id=${buildbucket_build_id}"
-        ],
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "chrome_public_unit_test_apk",
-        "test_id_prefix": "ninja://chrome/android:chrome_public_unit_test_apk/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "components_browsertests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "quickrun_shards": 2,
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "components_browsertests",
-        "test_id_prefix": "ninja://components:components_browsertests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "content_shell_test_apk"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 3
-        },
-        "test": "content_shell_test_apk",
-        "test_id_prefix": "ninja://content/shell/android:content_shell_test_apk/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "content_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 3
-        },
-        "test": "content_unittests",
-        "test_id_prefix": "ninja://content/test:content_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "crashpad_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "crashpad_tests",
-        "test_id_prefix": "ninja://third_party/crashpad/crashpad:crashpad_tests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "crypto_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "crypto_unittests",
-        "test_id_prefix": "ninja://crypto:crypto_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "ci_only": true,
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "device_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "device_unittests",
-        "test_id_prefix": "ninja://device:device_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "ci_only": true,
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "display_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "display_unittests",
-        "test_id_prefix": "ninja://ui/display:display_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "events_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "events_unittests",
-        "test_id_prefix": "ninja://ui/events:events_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "gcm_unit_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "gcm_unit_tests",
-        "test_id_prefix": "ninja://google_apis/gcm:gcm_unit_tests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "ci_only": true,
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "gfx_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "gfx_unittests",
-        "test_id_prefix": "ninja://ui/gfx:gfx_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "gin_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "gin_unittests",
-        "test_id_prefix": "ninja://gin:gin_unittests/"
-      },
-      {
-        "args": [
-          "--use-cmd-decoder=validating",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "gl_tests_validating"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "gl_tests_validating",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "gl_tests",
-        "test_id_prefix": "ninja://gpu:gl_tests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "gl_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "gl_unittests",
-        "test_id_prefix": "ninja://ui/gl:gl_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "google_apis_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "google_apis_unittests",
-        "test_id_prefix": "ninja://google_apis:google_apis_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "gpu_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "gpu_unittests",
-        "test_id_prefix": "ninja://gpu:gpu_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "gwp_asan_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "gwp_asan_unittests",
-        "test_id_prefix": "ninja://components/gwp_asan:gwp_asan_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "ipc_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "ipc_tests",
-        "test_id_prefix": "ninja://ipc:ipc_tests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "latency_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "latency_unittests",
-        "test_id_prefix": "ninja://ui/latency:latency_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "libjingle_xmpp_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "libjingle_xmpp_unittests",
-        "test_id_prefix": "ninja://third_party/libjingle_xmpp:libjingle_xmpp_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "liburlpattern_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "liburlpattern_unittests",
-        "test_id_prefix": "ninja://third_party/liburlpattern:liburlpattern_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "media_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "media_unittests",
-        "test_id_prefix": "ninja://media:media_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "midi_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "midi_unittests",
-        "test_id_prefix": "ninja://media/midi:midi_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "mojo_test_apk"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "mojo_test_apk",
-        "test_id_prefix": "ninja://mojo/public/java/system:mojo_test_apk/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "mojo_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "mojo_unittests",
-        "test_id_prefix": "ninja://mojo:mojo_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "net_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 3
-        },
-        "test": "net_unittests",
-        "test_id_prefix": "ninja://net:net_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "ci_only": true,
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "sandbox_linux_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "sandbox_linux_unittests",
-        "test_id_prefix": "ninja://sandbox/linux:sandbox_linux_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "services_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "services_unittests",
-        "test_id_prefix": "ninja://services:services_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "shell_dialogs_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "shell_dialogs_unittests",
-        "test_id_prefix": "ninja://ui/shell_dialogs:shell_dialogs_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "skia_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "skia_unittests",
-        "test_id_prefix": "ninja://skia:skia_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "sql_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "sql_unittests",
-        "test_id_prefix": "ninja://sql:sql_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "storage_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "storage_unittests",
-        "test_id_prefix": "ninja://storage:storage_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "ui_android_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "ui_android_unittests",
-        "test_id_prefix": "ninja://ui/android:ui_android_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "ui_base_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "ui_base_unittests",
-        "test_id_prefix": "ninja://ui/base:ui_base_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "ui_touch_selection_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "ui_touch_selection_unittests",
-        "test_id_prefix": "ninja://ui/touch_selection:ui_touch_selection_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "ci_only": true,
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "unit_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "unit_tests",
-        "test_id_prefix": "ninja://chrome/test:unit_tests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "url_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "url_unittests",
-        "test_id_prefix": "ninja://url:url_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "ci_only": true,
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "viz_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "viz_unittests",
-        "test_id_prefix": "ninja://components/viz:viz_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "vr_android_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "vr_android_unittests",
-        "test_id_prefix": "ninja://chrome/browser/android/vr:vr_android_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "vr_common_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "vr_common_unittests",
-        "test_id_prefix": "ninja://chrome/browser/vr:vr_common_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "vr_pixeltests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "vr_pixeltests",
-        "test_id_prefix": "ninja://chrome/browser/vr:vr_pixeltests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "wtf_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "wtf_unittests",
-        "test_id_prefix": "ninja://third_party/blink/renderer/platform/wtf:wtf_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "zlib_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "zlib_unittests",
-        "test_id_prefix": "ninja://third_party/zlib:zlib_unittests/"
-      }
-    ],
-    "isolated_scripts": [
-      {
-        "args": [
-          "--gtest-benchmark-name=components_perftests"
-        ],
-        "isolate_name": "components_perftests",
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--smoke-test-mode"
-          ],
-          "script": "//tools/perf/process_perf_results.py"
-        },
-        "name": "components_perftests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test_id_prefix": "ninja://components:components_perftests/"
-      },
-      {
-        "args": [
-          "--platform=android"
-        ],
-        "isolate_name": "content_shell_crash_test",
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
-        },
-        "name": "content_shell_crash_test",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test_id_prefix": "ninja://content/shell:content_shell_crash_test/"
-      },
-      {
-        "args": [
-          "BrowserMinidumpTest",
-          "--browser=android-chromium",
-          "-v",
-          "--passthrough",
-          "--retry-limit=2"
-        ],
-        "check_flakiness_for_new_tests": false,
-        "isolate_name": "telemetry_perf_unittests_android_chrome",
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
-        },
-        "name": "telemetry_chromium_minidump_unittests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_type": "userdebug",
-              "device_type": "bullhead",
-              "os": "Android"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test_id_prefix": "ninja://chrome/test:telemetry_perf_unittests_android_chrome/"
-      }
-    ],
-    "junit_tests": [
-      {
-        "isolate_profile_data": true,
-        "name": "android_webview_junit_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {},
-        "test": "android_webview_junit_tests",
-        "test_id_prefix": "ninja://android_webview/test:android_webview_junit_tests/"
-      },
-      {
-        "isolate_profile_data": true,
-        "name": "base_junit_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {},
-        "test": "base_junit_tests",
-        "test_id_prefix": "ninja://base:base_junit_tests/"
-      },
-      {
-        "isolate_profile_data": true,
-        "name": "build_junit_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {},
-        "test": "build_junit_tests",
-        "test_id_prefix": "ninja://build/android:build_junit_tests/"
-      },
-      {
-        "isolate_profile_data": true,
-        "name": "chrome_java_test_pagecontroller_junit_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {},
-        "test": "chrome_java_test_pagecontroller_junit_tests",
-        "test_id_prefix": "ninja://chrome/test/android:chrome_java_test_pagecontroller_junit_tests/"
-      },
-      {
-        "args": [
-          "--shards=8"
-        ],
-        "isolate_profile_data": true,
-        "name": "chrome_junit_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {},
-        "test": "chrome_junit_tests",
-        "test_id_prefix": "ninja://chrome/android:chrome_junit_tests/"
-      },
-      {
-        "isolate_profile_data": true,
-        "name": "components_junit_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {},
-        "test": "components_junit_tests",
-        "test_id_prefix": "ninja://components:components_junit_tests/"
-      },
-      {
-        "isolate_profile_data": true,
-        "name": "content_junit_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {},
-        "test": "content_junit_tests",
-        "test_id_prefix": "ninja://content/public/android:content_junit_tests/"
-      },
-      {
-        "isolate_profile_data": true,
-        "name": "device_junit_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {},
-        "test": "device_junit_tests",
-        "test_id_prefix": "ninja://device:device_junit_tests/"
-      },
-      {
-        "isolate_profile_data": true,
-        "name": "junit_unit_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {},
-        "test": "junit_unit_tests",
-        "test_id_prefix": "ninja://testing/android/junit:junit_unit_tests/"
-      },
-      {
-        "isolate_profile_data": true,
-        "name": "keyboard_accessory_junit_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {},
-        "test": "keyboard_accessory_junit_tests",
-        "test_id_prefix": "ninja://chrome/android/features/keyboard_accessory:keyboard_accessory_junit_tests/"
-      },
-      {
-        "isolate_profile_data": true,
-        "name": "media_base_junit_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {},
-        "test": "media_base_junit_tests",
-        "test_id_prefix": "ninja://media/base/android:media_base_junit_tests/"
-      },
-      {
-        "isolate_profile_data": true,
-        "name": "module_installer_junit_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {},
-        "test": "module_installer_junit_tests",
-        "test_id_prefix": "ninja://components/module_installer/android:module_installer_junit_tests/"
-      },
-      {
-        "isolate_profile_data": true,
-        "name": "net_junit_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {},
-        "test": "net_junit_tests",
-        "test_id_prefix": "ninja://net/android:net_junit_tests/"
-      },
-      {
-        "isolate_profile_data": true,
-        "name": "paint_preview_junit_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {},
-        "test": "paint_preview_junit_tests",
-        "test_id_prefix": "ninja://components/paint_preview/player/android:paint_preview_junit_tests/"
-      },
-      {
-        "isolate_profile_data": true,
-        "name": "password_check_junit_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {},
-        "test": "password_check_junit_tests",
-        "test_id_prefix": "ninja://chrome/browser/password_check/android:password_check_junit_tests/"
-      },
-      {
-        "isolate_profile_data": true,
-        "name": "password_manager_junit_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {},
-        "test": "password_manager_junit_tests",
-        "test_id_prefix": "ninja://chrome/browser/password_manager/android:password_manager_junit_tests/"
-      },
-      {
-        "isolate_profile_data": true,
-        "name": "services_junit_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {},
-        "test": "services_junit_tests",
-        "test_id_prefix": "ninja://services:services_junit_tests/"
-      },
-      {
-        "isolate_profile_data": true,
-        "name": "touch_to_fill_junit_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {},
-        "test": "touch_to_fill_junit_tests",
-        "test_id_prefix": "ninja://chrome/browser/touch_to_fill/android:touch_to_fill_junit_tests/"
-      },
-      {
-        "isolate_profile_data": true,
-        "name": "ui_junit_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {},
-        "test": "ui_junit_tests",
-        "test_id_prefix": "ninja://ui/android:ui_junit_tests/"
-      },
-      {
-        "isolate_profile_data": true,
-        "name": "webapk_client_junit_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {},
-        "test": "webapk_client_junit_tests",
-        "test_id_prefix": "ninja://chrome/android/webapk/libs/client:webapk_client_junit_tests/"
-      },
-      {
-        "isolate_profile_data": true,
-        "name": "webapk_shell_apk_h2o_junit_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {},
-        "test": "webapk_shell_apk_h2o_junit_tests",
-        "test_id_prefix": "ninja://chrome/android/webapk/shell_apk:webapk_shell_apk_h2o_junit_tests/"
-      },
-      {
-        "isolate_profile_data": true,
-        "name": "webapk_shell_apk_junit_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {},
-        "test": "webapk_shell_apk_junit_tests",
-        "test_id_prefix": "ninja://chrome/android/webapk/shell_apk:webapk_shell_apk_junit_tests/"
-      }
-    ],
-    "scripts": [
-      {
-        "isolate_profile_data": true,
-        "name": "check_network_annotations",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "script": "check_network_annotations.py",
-        "swarming": {}
-      }
-    ]
-  },
-  "android-marshmallow-x86-rel": {
-    "gtest_tests": [
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "android_browsertests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "quickrun_shards": 6,
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "android_browsertests",
-        "test_id_prefix": "ninja://chrome/test:android_browsertests/"
-      },
-      {
-        "args": [
-          "--test-launcher-batch-limit=1",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "android_sync_integration_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 3
-        },
-        "test": "android_sync_integration_tests",
-        "test_id_prefix": "ninja://chrome/test:android_sync_integration_tests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "android_webview_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "android_webview_unittests",
-        "test_id_prefix": "ninja://android_webview/test:android_webview_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "webkit_unit_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "webkit_unit_tests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 6
-        },
-        "test": "blink_unittests",
-        "test_id_prefix": "ninja://third_party/blink/renderer/controller:blink_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb",
-          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator.cc_unittests.filter"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "cc_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "cc_unittests",
-        "test_id_prefix": "ninja://cc:cc_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb",
-          "--git-revision=${got_revision}"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "chrome_java_test_wpr_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "precommit_args": [
-          "--gerrit-issue=${patch_issue}",
-          "--gerrit-patchset=${patch_set}",
-          "--buildbucket-id=${buildbucket_build_id}"
-        ],
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "chrome_java_test_wpr_tests",
-        "test_id_prefix": "ninja://chrome/test/android:chrome_java_test_wpr_tests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "chrome_modern_public_bundle_smoke_test"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "chrome_modern_public_bundle_smoke_test",
-        "test_id_prefix": "ninja://chrome/android:chrome_modern_public_bundle_smoke_test/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "chrome_public_smoke_test"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "chrome_public_smoke_test",
-        "test_id_prefix": "ninja://chrome/android:chrome_public_smoke_test/"
-      },
-      {
-        "args": [
-          "--gtest_filter=-org.chromium.chrome.browser.contextualsearch.ContextualSearchManagerTest.test*ExternalNavigationWithUserGesture*:org.chromium.shape_detection.*",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb",
-          "--git-revision=${got_revision}",
-          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_m.chrome_public_test_apk.filter"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "chrome_public_test_apk"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "precommit_args": [
-          "--gerrit-issue=${patch_issue}",
-          "--gerrit-patchset=${patch_set}",
-          "--buildbucket-id=${buildbucket_build_id}"
-        ],
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "e2-standard-8",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 25
-        },
-        "test": "chrome_public_test_apk",
-        "test_id_prefix": "ninja://chrome/android:chrome_public_test_apk/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb",
-          "--git-revision=${got_revision}"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "chrome_public_unit_test_apk"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "precommit_args": [
-          "--gerrit-issue=${patch_issue}",
-          "--gerrit-patchset=${patch_set}",
-          "--buildbucket-id=${buildbucket_build_id}"
-        ],
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 4
-        },
-        "test": "chrome_public_unit_test_apk",
-        "test_id_prefix": "ninja://chrome/android:chrome_public_unit_test_apk/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "components_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 6
-        },
-        "test": "components_unittests",
-        "test_id_prefix": "ninja://components:components_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb",
-          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_m.content_shell_test_apk.filter"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "content_shell_test_apk"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "quickrun_shards": 8,
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 3
-        },
-        "test": "content_shell_test_apk",
-        "test_id_prefix": "ninja://content/shell/android:content_shell_test_apk/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "device_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "device_unittests",
-        "test_id_prefix": "ninja://device:device_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "display_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "display_unittests",
-        "test_id_prefix": "ninja://ui/display:display_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "gfx_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "gfx_unittests",
-        "test_id_prefix": "ninja://ui/gfx:gfx_unittests/"
-      },
-      {
-        "args": [
-          "--use-cmd-decoder=validating",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb",
-          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator.gl_tests.filter"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "gl_tests_validating"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "name": "gl_tests_validating",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "gl_tests",
-        "test_id_prefix": "ninja://gpu:gl_tests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "gl_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "gl_unittests",
-        "test_id_prefix": "ninja://ui/gl:gl_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "mojo_test_apk"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "mojo_test_apk",
-        "test_id_prefix": "ninja://mojo/public/java/system:mojo_test_apk/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb",
-          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator.sandbox_linux_unittests.filter"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "sandbox_linux_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "sandbox_linux_unittests",
-        "test_id_prefix": "ninja://sandbox/linux:sandbox_linux_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "ui_android_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "ui_android_unittests",
-        "test_id_prefix": "ninja://ui/android:ui_android_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "unit_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 2
-        },
-        "test": "unit_tests",
-        "test_id_prefix": "ninja://chrome/test:unit_tests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "viz_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "viz_unittests",
-        "test_id_prefix": "ninja://components/viz:viz_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "webview_instrumentation_test_apk"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 9
-        },
-        "test": "webview_instrumentation_test_apk",
-        "test_id_prefix": "ninja://android_webview/test:webview_instrumentation_test_apk/"
-      }
-    ],
-    "isolated_scripts": [
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "isolate_name": "monochrome_public_apk_checker",
-        "isolate_profile_data": true,
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
-        },
-        "name": "monochrome_public_apk_checker",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_os_flavor": null,
-              "device_playstore_version": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test_id_prefix": "ninja://chrome/android/monochrome:monochrome_public_apk_checker/"
-      }
-    ],
-    "scripts": [
-      {
-        "args": [
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "isolate_profile_data": true,
-        "name": "check_network_annotations",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "script": "check_network_annotations.py",
-        "swarming": {}
-      }
-    ]
-  },
-  "android-marshmallow-x86-rel-non-cq": {
-    "gtest_tests": [
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "absl_hardening_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "absl_hardening_tests",
-        "test_id_prefix": "ninja://third_party/abseil-cpp:absl_hardening_tests/"
-      },
-      {
-        "args": [
-          "-v",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [],
-          "script": "//testing/merge_scripts/standard_isolated_script_merge.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "angle_unittests",
-        "test_id_prefix": "ninja://third_party/angle/src/tests:angle_unittests/",
-        "use_isolated_scripts_api": true
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "base_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "base_unittests",
-        "test_id_prefix": "ninja://base:base_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "blink_common_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "blink_common_unittests",
-        "test_id_prefix": "ninja://third_party/blink/common:blink_common_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "blink_heap_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "blink_heap_unittests",
-        "test_id_prefix": "ninja://third_party/blink/renderer/platform/heap:blink_heap_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "blink_platform_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "blink_platform_unittests",
-        "test_id_prefix": "ninja://third_party/blink/renderer/platform:blink_platform_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "boringssl_crypto_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "boringssl_crypto_tests",
-        "test_id_prefix": "ninja://third_party/boringssl:boringssl_crypto_tests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "boringssl_ssl_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "boringssl_ssl_tests",
-        "test_id_prefix": "ninja://third_party/boringssl:boringssl_ssl_tests/"
-      },
-      {
-        "args": [
-          "--gtest_filter=-*UsingRealWebcam*",
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "capture_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "capture_unittests",
-        "test_id_prefix": "ninja://media/capture:capture_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "cast_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "cast_unittests",
-        "test_id_prefix": "ninja://media/cast:cast_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "components_browsertests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "components_browsertests",
-        "test_id_prefix": "ninja://components:components_browsertests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "components_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 6
-        },
-        "test": "components_unittests",
-        "test_id_prefix": "ninja://components:components_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb",
-          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_m.content_browsertests.filter"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "content_browsertests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 20
-        },
-        "test": "content_browsertests",
-        "test_id_prefix": "ninja://content/test:content_browsertests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "content_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 3
-        },
-        "test": "content_unittests",
-        "test_id_prefix": "ninja://content/test:content_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "crashpad_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "crashpad_tests",
-        "test_id_prefix": "ninja://third_party/crashpad/crashpad:crashpad_tests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "crypto_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "crypto_unittests",
-        "test_id_prefix": "ninja://crypto:crypto_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "events_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "events_unittests",
-        "test_id_prefix": "ninja://ui/events:events_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "gcm_unit_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "gcm_unit_tests",
-        "test_id_prefix": "ninja://google_apis/gcm:gcm_unit_tests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "gin_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "gin_unittests",
-        "test_id_prefix": "ninja://gin:gin_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "google_apis_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "google_apis_unittests",
-        "test_id_prefix": "ninja://google_apis:google_apis_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "gpu_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "gpu_unittests",
-        "test_id_prefix": "ninja://gpu:gpu_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "gwp_asan_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "gwp_asan_unittests",
-        "test_id_prefix": "ninja://components/gwp_asan:gwp_asan_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "ipc_tests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "ipc_tests",
-        "test_id_prefix": "ninja://ipc:ipc_tests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "latency_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "latency_unittests",
-        "test_id_prefix": "ninja://ui/latency:latency_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "libjingle_xmpp_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "libjingle_xmpp_unittests",
-        "test_id_prefix": "ninja://third_party/libjingle_xmpp:libjingle_xmpp_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "liburlpattern_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "liburlpattern_unittests",
-        "test_id_prefix": "ninja://third_party/liburlpattern:liburlpattern_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb",
-          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_m.media_unittests.filter"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "media_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "media_unittests",
-        "test_id_prefix": "ninja://media:media_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "midi_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "midi_unittests",
-        "test_id_prefix": "ninja://media/midi:midi_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "mojo_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "mojo_unittests",
-        "test_id_prefix": "ninja://mojo:mojo_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb",
-          "--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator.net_unittests.filter"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "net_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
-          "shards": 3
-        },
-        "test": "net_unittests",
-        "test_id_prefix": "ninja://net:net_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "services_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "services_unittests",
-        "test_id_prefix": "ninja://services:services_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "shell_dialogs_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "shell_dialogs_unittests",
-        "test_id_prefix": "ninja://ui/shell_dialogs:shell_dialogs_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "skia_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "skia_unittests",
-        "test_id_prefix": "ninja://skia:skia_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "sql_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "sql_unittests",
-        "test_id_prefix": "ninja://sql:sql_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "storage_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "storage_unittests",
-        "test_id_prefix": "ninja://storage:storage_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "ui_base_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "ui_base_unittests",
-        "test_id_prefix": "ninja://ui/base:ui_base_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "ui_touch_selection_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "ui_touch_selection_unittests",
-        "test_id_prefix": "ninja://ui/touch_selection:ui_touch_selection_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "url_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "url_unittests",
-        "test_id_prefix": "ninja://url:url_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "wtf_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "wtf_unittests",
-        "test_id_prefix": "ninja://third_party/blink/renderer/platform/wtf:wtf_unittests/"
-      },
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
-          "--recover-devices",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "merge": {
-          "args": [
-            "--bucket",
-            "chromium-result-details",
-            "--test-name",
-            "zlib_unittests"
-          ],
-          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
-        },
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "output_links": [
-            {
-              "link": [
-                "https://luci-logdog.appspot.com/v/?s",
-                "=android%2Fswarming%2Flogcats%2F",
-                "${TASK_ID}%2F%2B%2Funified_logcats"
-              ],
-              "name": "shard #${SHARD_INDEX} logcats"
-            }
-          ],
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test": "zlib_unittests",
-        "test_id_prefix": "ninja://third_party/zlib:zlib_unittests/"
-      }
-    ],
-    "isolated_scripts": [
-      {
-        "args": [
-          "--gtest-benchmark-name=components_perftests",
-          "--avd-config=../../tools/android/avd/proto/generic_android23.textpb"
-        ],
-        "isolate_name": "components_perftests",
-        "merge": {
-          "args": [
-            "--smoke-test-mode"
-          ],
-          "script": "//tools/perf/process_perf_results.py"
-        },
-        "name": "components_perftests",
-        "resultdb": {
-          "enable": true,
-          "has_native_resultdb_integration": true
-        },
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "cpu": "x86-64",
-              "device_os": null,
-              "device_type": null,
-              "machine_type": "n1-standard-4|e2-standard-4",
-              "os": "Ubuntu-18.04",
-              "pool": "chromium.tests.avd"
-            }
-          ],
-          "named_caches": [
-            {
-              "name": "generic_android23",
-              "path": ".android_emulator/generic_android23"
-            }
-          ],
-          "optional_dimensions": {
-            "60": [
-              {
-                "caches": "generic_android23"
-              }
-            ]
-          },
-          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
-        },
-        "test_id_prefix": "ninja://components:components_perftests/"
-      }
-    ]
-  },
-  "android-nougat-x86-rel": {
-    "gtest_tests": [
-      {
-        "args": [
-          "--gs-results-bucket=chromium-result-details",
           "--recover-devices",
           "--avd-config=../../tools/android/avd/proto/generic_android24.textpb"
         ],
diff --git a/testing/buildbot/filters/BUILD.gn b/testing/buildbot/filters/BUILD.gn
index 7be9b16..1f26401 100644
--- a/testing/buildbot/filters/BUILD.gn
+++ b/testing/buildbot/filters/BUILD.gn
@@ -83,7 +83,6 @@
     "//testing/buildbot/filters/android.pie_arm64_rel.chrome_public_test_apk.filter",
     "//testing/buildbot/filters/android.emulator_11.chrome_public_test_apk.filter",
     "//testing/buildbot/filters/android.emulator_12.chrome_public_test_apk.filter",
-    "//testing/buildbot/filters/android.emulator_m.chrome_public_test_apk.filter",
     "//testing/buildbot/filters/android.emulator_n.chrome_public_test_apk.filter",
     "//testing/buildbot/filters/android.emulator_p.chrome_public_test_apk.filter",
   ]
@@ -125,7 +124,6 @@
     "//testing/buildbot/filters/android.asan.content_browsertests.filter",
     "//testing/buildbot/filters/android.emulator_12.content_browsertests.filter",
     "//testing/buildbot/filters/android.emulator_12.oop_network_service_content_browsertests.filter",
-    "//testing/buildbot/filters/android.emulator_m.content_browsertests.filter",
     "//testing/buildbot/filters/android.emulator_n.content_browsertests.filter",
     "//testing/buildbot/filters/android.emulator_p.content_browsertests.filter",
     "//testing/buildbot/filters/android.marshmallow_tablet_tester.content_browsertests.filter",
@@ -149,7 +147,6 @@
   data = [
     "//testing/buildbot/filters/android.emulator_11.content_shell_test_apk.filter",
     "//testing/buildbot/filters/android.emulator_12.content_shell_test_apk.filter",
-    "//testing/buildbot/filters/android.emulator_m.content_shell_test_apk.filter",
     "//testing/buildbot/filters/android.emulator_n.content_shell_test_apk.filter",
   ]
 }
@@ -301,7 +298,6 @@
 source_set("media_unittests_filters") {
   data = [
     "//testing/buildbot/filters/android.emulator_11_12.media_unittests.filter",
-    "//testing/buildbot/filters/android.emulator_m.media_unittests.filter",
     "//testing/buildbot/filters/fuchsia.debug.media_unittests.filter",
   ]
 }
diff --git a/testing/buildbot/filters/android.emulator_m.chrome_public_test_apk.filter b/testing/buildbot/filters/android.emulator_m.chrome_public_test_apk.filter
deleted file mode 100644
index d5a31dc0..0000000
--- a/testing/buildbot/filters/android.emulator_m.chrome_public_test_apk.filter
+++ /dev/null
@@ -1,63 +0,0 @@
-# vr tests do not apply to emulator
--org.chromium.chrome.browser.hardware_acceleration.ManifestHWATest.testAccelerationDisabled
-
-# This is a known issue in AudioMixer and there's no fix until O
-# See crbug.com/1081969 for more detail
--org.chromium.chrome.browser.video.VideoTest.testLoadMediaUrl
-
-# crbug/1036571
--org.chromium.shape_detection.BarcodeDetectionImplTest.testDetectBarcodeWithHint
--org.chromium.shape_detection.BarcodeDetectionImplTest.testDetectBarcodeWithoutHint
--org.chromium.shape_detection.FaceDetectionImplTest.testDetectFacesInProfileWithGmsCore
--org.chromium.shape_detection.FaceDetectionImplTest.testDetectRotatedFaceWithGmsCore
--org.chromium.shape_detection.FaceDetectionImplTest.testDetectValidImageWithGmsCore
--org.chromium.shape_detection.TextDetectionImplTest.testDetectSucceedsOnValidBitmap
--org.chromium.chrome.browser.shape_detection.ShapeDetectionTest.testBarcodeDetection
-
-# crbug.com/1059046
--org.chromium.chrome.browser.customtabs.CustomTabFromChromeExternalNavigationTest.testIntentWithRedirectToApp
-
-# crbug.com/1060724
--org.chromium.chrome.browser.offlinepages.indicator.OfflineIndicatorControllerTest.testDoNotShowOfflineIndicatorWhenTemporarilyPaused
-
-# crbug.com/1041822
--org.chromium.chrome.browser.offlinepages.OfflinePageAutoFetchTest.testAutoFetchTriggersOnDNSErrorWhenOffline
-
-# crbug.com/1061214
--org.chromium.chrome.browser.customtabs.CustomTabActivityTest.testHiddenTabAndChangingFragmentDontWait
-
-# crbug.com/1202977
--org.chromium.chrome.browser.settings.MainSettingsFragmentTest.testRenderDifferentSignedInStatesWithMobileIdentityConsistency
-
-# crbug.com/1036553
--org.chromium.chrome.browser.translate.TranslateIntentTest.*
-
-# crbug.com/1041233
--org.chromium.chrome.browser.gesturenav.NavigationHandlerTest.testSwipeNavigateOnNativePage
--org.chromium.chrome.browser.gesturenav.NavigationHandlerTest.testSwipeNavigateOnRenderedPage
-
-# crbug.com/1062055
--org.chromium.chrome.browser.metrics.StartupLoadingMetricsTest.testWebApkStartRecorded
-
-# crbug.com/1112812
--org.chromium.chrome.browser.autofill_assistant.AutofillAssistantAutostartTest.testAutostart
--org.chromium.chrome.browser.autofill.AutofillUpstreamTest.testSaveCardInfoBarWithEmptyYear
-
-# crbug.com/1131717
--org.chromium.chrome.browser.autofill_assistant.AutofillAssistantKeyboardIntegrationTest.keyboardDoesNotShowOnElementClickInIFrame
-
-# crbug.com/1179791
--org.chromium.chrome.browser.autofill_assistant.AutofillAssistantBackButtonIntegrationTest.navigationAfterBackButtonDestroysAutofillAssistantUi
--org.chromium.chrome.browser.autofill_assistant.AutofillAssistantChromeTabIntegrationTest.interactingWithLocationBarHidesAutofillAssistant
--org.chromium.chrome.browser.autofill_assistant.AutofillAssistantNavigationIntegrationTest.navigateDuringOnboardingRemovesUI
--org.chromium.chrome.browser.autofill_assistant.AutofillAssistantNavigationIntegrationTest.navigatingInStoppedAutofillAssistantStateRemovesUI
--org.chromium.chrome.browser.autofill_assistant.AutofillAssistantNavigationIntegrationTest.navigatingWithLocationBarShowsError
-
-# crbug.com/1179792
--org.chromium.chrome.browser.customtabs.content.TabObserverRegistrarTest.testObserveActiveTab
-
-# crbug.com/1180466
--org.chromium.chrome.browser.autofill_assistant.AutofillAssistantOverlayIntegrationTest.testShowCastOnIFrameElement
-
-# crbug.com/1139524
--org.chromium.chrome.browser.autofill_assistant.AutofillAssistantPersonalDataManagerTest.testCreateAndEditProfileMultipleTimes
diff --git a/testing/buildbot/filters/android.emulator_m.content_browsertests.filter b/testing/buildbot/filters/android.emulator_m.content_browsertests.filter
deleted file mode 100644
index 8087cf9..0000000
--- a/testing/buildbot/filters/android.emulator_m.content_browsertests.filter
+++ /dev/null
@@ -1,62 +0,0 @@
-# crbug.com/1054829
--All/TouchActionBrowserTest.PanXAtYAreaWithTimeout
--All/TouchActionBrowserTest.TouchActionNone
--All/TouchActionBrowserTest.TwoFingerPanXAtYAreaWithTimeout
--All/TouchActionBrowserTest.BlockDoubleTapDragZoom
-
-# crbug.com/1056878
--BackForwardCacheBrowserTest.VideoSuspendAndResume
-
-# crbug.com/1096612
--All/SitePerProcessBrowserTest.DetachedIframeUnloadHandlerABCB/*
-
-# crbug.com/1058447
--All/SitePerProcessBrowserTest.FrameViewportOffsetTestSimple/*
-
-# crbug.com/1056325
--WebRtcAudioBrowserTest.*
-
-# crbug.com/1058570
--WebRtcGetUserMediaBrowserTest.ApplyConstraintsNonDevice
-
-# crbug.com/1065184
--RenderFrameHostImplBrowserTest.CheckIsCurrentBeforeAndAfterUnload
-
-# This is a known issue in AudioMixer and there's no fix until O
-# See crbug.com/1081969 for more detail
--*/MediaTest.AudioBearFlac*
--*/MediaTest.AudioBearOpus*
--*/MediaTest.VideoBearMovPcm*
--*/MediaTest.VideoBearMp4/0
--*/MediaTest.VideoBearWavAlaw/0
--*/MediaTest.VideoBearWavMulaw/0
--*/MediaTest.VideoBearWavPcm*
--*/MediaTest.VideoBearWebm/0
--*/MediaTest.VideoTulipWebm/0
--MSE_*ClearKey/EncryptedMediaTest.ConfigChangeVideo_*
--MSE_*ClearKey/EncryptedMediaTest.Playback_AudioOnly_MP4*
--MSE_*ClearKey/EncryptedMediaTest.Playback_Encryption_CBCS*
--MSE_*ClearKey/EncryptedMediaTest.Playback_Encryption_CENC*
--*ClearKey/EncryptedMediaTest.Playback_AudioClearVideo_WebM/0
--*ClearKey/EncryptedMediaTest.Playback_AudioOnly_WebM*
--*ClearKey/EncryptedMediaTest.Playback_VideoAudio_WebM*
--*ClearKey/EncryptedMediaTest.Playback_VideoClearAudio_WebM*
--MediaSourceTest.ConfigChangeVideo
--MediaSourceTest.Playback_AudioOnly_FLAC_MP4
--MediaSourceTest.Playback_AudioOnly_WebM
--MediaSourceTest.Playback_VideoAudio_WebM
--MediaSourceTest.Playback_Video_MP4_Audio_WEBM
--MediaSourceTest.Playback_Video_WEBM_Audio_MP4
--MediaTest.Navigate
--ServiceProcessHostBrowserTest.ObserveCrash
--UtilityProcessHostBrowserTest.LaunchProcessAndCrash
--MediaRedirectTest.CanPlayHiddenWebm
-
-# crbug.com/954217
--RenderFrameHostImplBrowserTest.VisibilityScrolledOutOfView
-
-# crbug.com/1120813
--CompositorImplBrowserTestRefreshRate.VideoPreference
-
-# crbug.com/1047994
--WebRtcBrowserTest.CanSetupH264VideoCallOnSupportedDevice
diff --git a/testing/buildbot/filters/android.emulator_m.content_shell_test_apk.filter b/testing/buildbot/filters/android.emulator_m.content_shell_test_apk.filter
deleted file mode 100644
index b93fd95..0000000
--- a/testing/buildbot/filters/android.emulator_m.content_shell_test_apk.filter
+++ /dev/null
@@ -1,23 +0,0 @@
-# crbug.com/1054841
--org.chromium.content.browser.ContentViewScrollingTest.testFling
-
-# crbug.com/1081514
--org.chromium.content.browser.VideoFullscreenOrientationLockTest.*
-
-# crbug.com/1081511
--org.chromium.content.browser.MediaSessionTest.testShortVideoIsTransient
-
-# crbug.com/1081509
--org.chromium.net.AndroidProxySelectorTest.testSocksExplicitPort
-
-# crbug.com/1099949
--org.chromium.content.browser.GestureDetectorResetTest.testSeparateClicksAreRegisteredOnReload
-
-# crbug.com/1099954
--org.chromium.content.browser.MediaSessionTest.testDontStopEachOther
-
-# crbug.com/1105214
--org.chromium.content.browser.input.ImeTest.testSelectActionBarClearedOnTappingInput
-
-# crbug.com/1240750
--org.chromium.content.browser.MediaSessionTest.testLongVideoAfterShortGainsFocus
diff --git a/testing/buildbot/filters/android.emulator_m.media_unittests.filter b/testing/buildbot/filters/android.emulator_m.media_unittests.filter
deleted file mode 100644
index 94ad9fc..0000000
--- a/testing/buildbot/filters/android.emulator_m.media_unittests.filter
+++ /dev/null
@@ -1,5 +0,0 @@
-# https://crbug.com/1081506
--AAudio/AudioOutputTest.Play200HzTone/0
--AudioAndroidOutputTest.StartOutputStreamCallbacks
--AudioAndroidOutputTest.StartOutputStreamCallbacksNonDefaultParameters
--Base/AudioOutputTest.Play200HzTone/0
diff --git a/testing/buildbot/filters/mac.mac12-arm64-rel.browser_tests.filter b/testing/buildbot/filters/mac.mac12-arm64-rel.browser_tests.filter
index 8d070d3..f4de81b2 100644
--- a/testing/buildbot/filters/mac.mac12-arm64-rel.browser_tests.filter
+++ b/testing/buildbot/filters/mac.mac12-arm64-rel.browser_tests.filter
@@ -13,6 +13,8 @@
 -All/PageLoadMetricsBackForwardCacheBrowserTest.LogsBasicPageForegroundDuration/BFCacheEnabled
 -All/PageLoadMetricsBackForwardCacheBrowserTest.LogsPageEndReasons/BFCacheEnabled
 -All/SearchPrefetchServiceEnabledBrowserTest.OmniboxURLHasPfParam/0
+-All/SearchPrefetchServiceEnabledBrowserTest.PrefetchServedBeforeHeaders/0
+-AutomationApiTest.ForceLayout
 -BackForwardCachePageLoadMetricsObserverBrowserTest.CumulativeLayoutShiftAfterBackForwardCacheRestore
 -BackForwardCachePageLoadMetricsObserverBrowserTest.FirstPaintAfterBackForwardCacheRestore
 -BackForwardCachePageLoadMetricsObserverBrowserTest.LayoutShiftNormalization_AfterBackForwardCacheRestore
@@ -72,6 +74,7 @@
 -FirstRunMasterPrefsWithTrackedPreferencesInstance/FirstRunMasterPrefsWithTrackedPreferences.TrackedPreferencesSurviveFirstRun/2
 -FirstRunMasterPrefsWithTrackedPreferencesInstance/FirstRunMasterPrefsWithTrackedPreferences.TrackedPreferencesSurviveFirstRun/3
 -FirstRunMasterPrefsVariationsSeedTests/FirstRunMasterPrefsVariationsSeedTest.Test/1
+-GlobalErrorServiceBrowserTest.BubbleViewDismissedOnRemove
 -HttpsOnlyModeBrowserTest.BadHttpsFollowedByGoodHttps
 -IdleServiceTest.Basic
 -InlineLoginHelperBrowserTest.UntrustedSigninDialogCancel
@@ -82,12 +85,15 @@
 -MediaGalleriesGalleryWatchApiTest.SetupGalleryWatchWithoutListeners
 -MediaInternalsUIBrowserTest.Integration
 -MediaRouterDialogControllerViewsTest.MediaBubbleClosedByPlatform
+-MetricIntegrationTest.LargestContentfulPaint
 -MetricsServiceBrowserSampledOutTest.FilesRemoved
 -MseEncryptedMediaTest.Playback_VideoOnly_MP4_VP9Profile2/0
 -NativeMessagingLaunchApiTest.Error
+-NewTabPageRealboxTest.All
 -PDFExtensionSaveTest.Save
 -PDFExtensionSaveWithPolicyTest.SaveWithPolicyUniqueTimeSuffix
 -PersistentBackground/DeclarativeNetRequestLazyApiTest.TestMatchOutcome/0
+-PlatformAppBrowserTest.AllowFileSystemURLNavigation
 -PredictionManagerModelDownloadingBrowserTest.GuestProfileReceivesModel
 -PreinstalledAppsBrowserTest.TestUninstall
 -PreinstalledAppsMigrationBrowserTest.TestRollbackCompatibility
@@ -98,14 +104,20 @@
 -ProfileBrowserTest.CreateOldProfileAsynchronous
 -ProfileBrowserTestWithoutDestroyProfile.DISABLE_DestroyRegularProfileBeforeOTRs
 -ProfileHelperTest.DeleteSoleProfile
+-ProfilePickerLocalProfileCreationDialogBrowserTest.CancelLocalProfileCreation
 -ReaderModeIconViewBrowserTest.NonSecurePagesNotDistillable
+-RegionCaptureBrowserCropTestInstantiation/RegionCaptureBrowserCropTest.CanCropTo/0
+-RegionCaptureBrowserCropTestInstantiation/RegionCaptureBrowserCropTest.CanCropTo/9
+-RegionCaptureBrowserCropTestInstantiation/RegionCaptureBrowserCropTest.CanCropTo/10
+-RegionCaptureBrowserCropTestInstantiation/RegionCaptureBrowserCropTest.CanCropTo/11
+-RegionCaptureBrowserCropTestInstantiation/RegionCaptureBrowserCropTest.CanCropTo/12
+-RegionCaptureBrowserCropTestInstantiation/RegionCaptureBrowserCropTest.CanCropTo/17
 -RegionCaptureBrowserTest.CropToAllowedIfEmbeddedFrameCropsToElementInEmbedded
 -RestoreOnStartupPolicyTestInstance/RestoreOnStartupPolicyTest.RunTest/3
--RegionCaptureBrowserCropTestInstantiation/RegionCaptureBrowserCropTest.CanCropTo/0
--RegionCaptureBrowserCropTestInstantiation/RegionCaptureBrowserCropTest.CanCropTo/17
 -SaveAsMhtml/SavePageOriginalVsSavedComparisonTest.NestedFrames/0
 -SavePageOriginalVsSavedComparisonTest.AboutBlank/0
 -SavePageOriginalVsSavedComparisonTest.CrossSiteObject/0
+-ServiceWorker/ExtensionWebRequestMockedClockTest.OnActionIgnored_Redirect/0
 -SitePerProcessWebViewTest.ContentScript
 -SitePerProcessWebViewTest.ContentScriptInOOPIF
 -SSLUITest.BadCertFollowedByGoodCert
diff --git a/testing/buildbot/test_suite_exceptions.pyl b/testing/buildbot/test_suite_exceptions.pyl
index 551ed83..7e9c40a 100644
--- a/testing/buildbot/test_suite_exceptions.pyl
+++ b/testing/buildbot/test_suite_exceptions.pyl
@@ -48,17 +48,6 @@
           'shards': 2,
         },
       },
-      'android-marshmallow-arm64-rel': {
-        'swarming': {
-          'quickrun_shards': 3,
-        },
-      },
-      'android-marshmallow-x86-rel': {
-        'swarming': {
-          'shards': 2,
-          'quickrun_shards': 6,
-        },
-      },
       'android-nougat-x86-rel': {
         'swarming': {
           'shards': 3,
@@ -101,21 +90,12 @@
     },
   },
   'android_sync_integration_tests': {
-   'remove_from': [
-      # Remove from CQ bots due to capacity.
-      'android-marshmallow-arm64-rel',
-   ],
    'modifications': {
       'android-12-x64-rel': {
         'swarming': {
           'shards': 3,
         },
       },
-      'android-marshmallow-x86-rel': {
-        'swarming': {
-          'shards': 3,
-        },
-      },
    },
   },
   'android_webview_unittests': {
@@ -1173,12 +1153,6 @@
           '--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_11_12.cc_unittests.filter',
         ],
       },
-      'android-marshmallow-x86-rel': {
-        # https://crbug.com/1039860
-        'args': [
-          '--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator.cc_unittests.filter',
-        ],
-      },
       'android-pie-x86-rel': {
         # https://crbug.com/1039860
         'args': [
@@ -1272,16 +1246,6 @@
       },
     },
   },
-  'chrome_junit_tests': {
-   'modifications': {
-     'android-marshmallow-arm64-rel': {
-       'args': [
-         # Too many shards can lead to race conditions (crbug/1272066)
-         '--shards=8',
-       ],
-     },
-   },
-  },
   'chrome_public_smoke_test': {
     'remove_from': [
       'android-code-coverage-native', # Does not generate profraw data.
@@ -1341,16 +1305,6 @@
           'service_account': 'chrome-gold-dev@chops-service-accounts.iam.gserviceaccount.com'
         },
       },
-      'android-marshmallow-x86-rel': {
-        'args': [
-          '--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_m.chrome_public_test_apk.filter',
-        ],
-        'swarming': {
-          # TODO(crbug.com/1127110): Revisit shards and machine_type if there
-          # are n2 machines available in the test pool.
-          'shards': 25,
-        },
-      },
       'android-nougat-x86-rel': {
         'args': [
           '--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_n.chrome_public_test_apk.filter',
@@ -1389,10 +1343,6 @@
     },
   },
   'chrome_public_test_apk_with_playstore': {
-    'remove_from': [
-      # Android Emulator does not ship playstore image on Marshmallow.
-      'android-marshmallow-x86-rel',
-    ],
     'modifications': {
       'android-11-x86-rel': {
         'args': [
@@ -1573,11 +1523,6 @@
           'shards': 3,
         },
       },
-      'android-marshmallow-arm64-rel': {
-        'swarming': {
-          'quickrun_shards': 2,
-        },
-      },
       'android-nougat-x86-rel': {
         'swarming': {
           'shards': 2,
@@ -1586,10 +1531,6 @@
     },
   },
   'components_unittests': {
-    'remove_from': [
-      # https://crbug.com/1147531 - covered on marshmallow emulator.
-      'android-marshmallow-arm64-rel',
-    ],
     'modifications': {
       'Linux ASan LSan Low Symbols FYI Tests (1)': {
         # These are very slow on the ASAN trybot for some reason.
@@ -1649,7 +1590,6 @@
   'content_browsertests': {
     'remove_from': [
       'CrWinAsan(dll)', # https://crbug.com/935598
-      'android-marshmallow-arm64-rel', # http://crbug.com/1060245#c30: due to low utility and capacity.
     ],
     'modifications': {
       'Cast Audio Linux': {
@@ -1783,19 +1723,6 @@
           'shards': 25,
         },
       },
-      'android-marshmallow-arm64-rel': {
-        'swarming': {
-          'shards': 16,
-        },
-      },
-      'android-marshmallow-x86-rel-non-cq': {
-        'args': [
-          '--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_m.content_browsertests.filter',
-        ],
-        'swarming': {
-          'shards': 20,
-        },
-      },
       'android-nougat-x86-rel': {
         'args': [
           '--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_n.content_browsertests.filter',
@@ -1879,7 +1806,6 @@
   },
   'content_shell_crash_test': {
     'remove_from': [
-      'android-marshmallow-x86-rel-non-cq', # crbug.com/1084353
       'android-nougat-x86-rel', # crbug.com/1084353
     ],
     'modifications': {
@@ -1906,14 +1832,6 @@
           '--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_12.content_shell_test_apk.filter',
         ],
       },
-      'android-marshmallow-x86-rel': {
-        'args': [
-          '--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_m.content_shell_test_apk.filter',
-        ],
-        'swarming': {
-          'quickrun_shards': 8,
-        },
-      },
       'android-nougat-x86-rel': {
         'args': [
           '--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_n.content_shell_test_apk.filter',
@@ -2275,11 +2193,6 @@
           '--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_12.gl_tests.filter',
         ],
       },
-      'android-marshmallow-x86-rel': {
-        'args': [
-          '--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator.gl_tests.filter',
-        ],
-      },
       'android-nougat-x86-rel': {
         'args': [
           '--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_n.gl_tests.filter',
@@ -2722,11 +2635,6 @@
           '--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_11_12.media_unittests.filter',
         ],
       },
-      'android-marshmallow-x86-rel-non-cq': {
-        'args': [
-          '--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_m.media_unittests.filter',
-        ],
-      },
       'android-pie-arm64-rel': {
         'args': [
           '--gtest_filter=-AAudio/AudioOutputTest.Play200HzTone/0', # https://crbug.com/1034009
@@ -2745,13 +2653,14 @@
     },
   },
   'mediapipe_validating_tests': {
-    'modifications': { # TODO(crbug.com/1201887): Remove once tests are stable.
+    'modifications': { 
+      # TODO(crbug.com/1372213): Remove once tests are stable.
       'fuchsia-x64-chrome-rel': {
         'experiment_percentage': 100,
       },
     },
     'remove_from': [
-      # TODO(crbug.com/1201887): Remove once tests are stable.
+      # TODO(crbug.com/1372213): Remove these once tests are stable.
       'Fuchsia x64',
       'fuchsia-x64-cast-receiver-rel',
       'fuchsia-x64-rel',
@@ -2916,12 +2825,6 @@
           '--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_k.net_unittests.filter',
         ],
       },
-      'android-marshmallow-x86-rel-non-cq': {
-        # crbug.com/1046060
-        'args': [
-          '--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator.net_unittests.filter',
-        ],
-      },
       'android-pie-x86-rel': {
         # crbug.com/1046060
         'args': [
@@ -3064,8 +2967,6 @@
       'android-asan',
       'android-code-coverage',
       'android-code-coverage-native',
-      'android-marshmallow-arm64-rel',
-      'android-marshmallow-x86-rel-non-cq',
       'android-pie-arm64-coverage-experimental-rel', # Does not generate profraw data.
       'android-pie-arm64-rel',
       'android-pie-x86-fyi-rel-reviver',
@@ -3200,11 +3101,6 @@
           '--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator_12.sandbox_linux_unittests.filter',
         ]
       },
-      'android-marshmallow-x86-rel': {
-        'args': [
-          '--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator.sandbox_linux_unittests.filter',
-        ]
-      },
       'android-nougat-x86-rel': {
         'args': [
           '--test-launcher-filter-file=../../testing/buildbot/filters/android.emulator.sandbox_linux_unittests.filter',
@@ -3428,9 +3324,6 @@
         'ci_only': True,
       },
     },
-    'remove_from': [
-      'android-marshmallow-x86-rel-non-cq', # crbug.com/1084352
-    ],
   },
   'telemetry_gpu_unittests': {
     'remove_from': [
@@ -3446,11 +3339,6 @@
         'ci_only': True,
       },
     },
-    'remove_from': [
-      # Monochrome isn't supported on M.
-      'android-marshmallow-arm64-rel',
-      'android-marshmallow-x86-rel-non-cq',
-    ],
   },
   'telemetry_perf_unittests': {
     'modifications': {
@@ -3504,11 +3392,6 @@
       },
     },
     'remove_from': [
-      'android-marshmallow-x86-rel-non-cq', # crbug.com/1084352
-      # There's no need to run telemetry_perf_unittests on both lollipop and
-      # marshmallow on the CQ. https://crbug.com/1026487.
-      # TODO(crbug/1260494): Test suite isn't running on android.
-      'android-marshmallow-arm64-rel',
       'android-pie-arm64-rel',
       # crbug.com/936540
       'Mac10.13 Tests',
@@ -4087,9 +3970,6 @@
       # Flakily fails on Win7. https://crbug.com/943372.
       'Win7 Tests (1)',
       'Win 7 Tests x64 (1)',
-      # Runs on android-marshmallow-x86-rel already (crbug.com/1127110)
-      'android-marshmallow-arm64-rel',
-      'android-marshmallow-x86-rel-non-cq',
     ],
     'modifications': {
       'Linux ASan LSan Low Symbols FYI Tests (1)': {
@@ -4163,11 +4043,6 @@
       'android-asan',  # https://crbug.com/964562
       'android-code-coverage-native', # Does not generate profraw data.
       'android-pie-arm64-coverage-experimental-rel', # Does not generate profraw data.
-
-      # On chromium.swarm, this should possibly be being run (or removed
-      # from android-marshmallow-arm64-rel-swarming).
-      # https://crbug.com/1147531 - covered on pie
-      'android-marshmallow-arm64-rel',
     ],
     'modifications': {
       'Oreo Phone Tester': {
@@ -4182,11 +4057,6 @@
           '--gtest_filter=-org.chromium.net.NetworkChangeNotifierTest.testNetworkChangeNotifierJavaObservers',
         ],
       },
-      'android-marshmallow-x86-rel': {
-        'swarming': {
-          'shards': 9,
-        },
-      },
       'android-nougat-x86-rel': {
         'swarming': {
           'shards': 9,
diff --git a/testing/buildbot/test_suites.pyl b/testing/buildbot/test_suites.pyl
index 9ce1e8ed..7975d482 100644
--- a/testing/buildbot/test_suites.pyl
+++ b/testing/buildbot/test_suites.pyl
@@ -122,75 +122,6 @@
       },
     },
 
-    # List gtests with ci_only set to True so that they run on the CI of
-    # android-marshmallow-arm64-rel but not the mirrored CQ.
-    # Includes the following compound test suites:
-    # * android_modern_smoke_tests
-    # * android_smoke_tests
-    # * chromium_gtests_for_devices_with_graphical_output
-    # * chrome_public_tests
-    # * linux_flavor_specific_chromium_gtests
-    'android_marshmallow_device_ci_only_gtests': {
-      'cc_unittests': {
-        'ci_only': True,
-      },
-      'chrome_modern_public_bundle_smoke_test': {
-        'ci_only': True,
-      },
-      'chrome_public_smoke_test': {
-        'ci_only': True,
-      },
-      'chrome_public_test_apk': {
-        'ci_only': True,
-        'swarming': {
-          'shards': 20,
-        },
-        'mixins': [
-          'skia_gold_test',
-        ],
-      },
-      'chrome_public_unit_test_apk': {
-        'ci_only': True,
-        'mixins': [
-          'skia_gold_test',
-        ],
-      },
-      'device_unittests': {
-        'ci_only': True,
-      },
-      'display_unittests': {
-        'ci_only': True,
-      },
-      'gfx_unittests': {
-        'ci_only': True,
-      },
-      'sandbox_linux_unittests': {
-        'ci_only': True,
-      },
-      'unit_tests': {
-        'ci_only': True,
-        'android_swarming': {
-          'shards': 2,
-        },
-      },
-      'viz_unittests': {
-        'ci_only': True,
-      },
-    },
-
-    # List gtests that are part of other composition test suites.
-    # MM emulator CQ builder currently has limited capacity so some composition
-    # test suites cannot be fullly enabled at once.
-    'android_marshmallow_emulator_limited_capacity_gtests': {
-      # Tests from chromium_gtests
-      'webkit_unit_tests':{
-        'test': 'blink_unittests',
-          'android_swarming': {
-            'shards': 6,
-          },
-      },
-    },
-
     'android_modern_smoke_tests': {
       'chrome_modern_public_bundle_smoke_test': {},
     },
@@ -1554,16 +1485,6 @@
       },
     },
 
-    # TODO(crbug.com/1255748): Remove after chromium_gtests are enabled on
-    # android_marshmallow_emulator_gtests
-    'components_capacity_tests': {
-      'components_unittests': {
-        'android_swarming': {
-          'shards': 6,
-        },
-      },
-    },
-
     'components_perftests_isolated_scripts' : {
       'components_perftests': {
         'merge': {
@@ -1976,7 +1897,7 @@
           'shards': 40,
         },
       },
-      # TODO(crbug.com/1071095): Move to one of the fuchsia_common_gtests* sets.
+      # TODO(crbug.com/1371630): Move to one of the fuchsia_common_gtests* sets.
       'content_browsertests': {
         'args': [
           '--',
@@ -5282,54 +5203,6 @@
       'android_trichrome_smoke_tests',
     ],
 
-    # List gtests that run on android-marshmallow-arm64-rel builder.
-    # TODO(crbug.com/1127110): Use android_marshmallow_gtests when
-    # android-marshmallow-x86-rel is not mirrored to CQ.
-    'android_marshmallow_device_gtests': [
-      'android_marshmallow_device_ci_only_gtests',
-
-      # TODO(crbug.com/1127110): Remove once webview_instrumentation_test_apk
-      # and content_shell_test_apk are enabled on android-marshmallow-x86-rel
-      'android_specific_chromium_gtests',  # Already includes gl_gtests.
-
-      'chromium_gtests',
-      'vr_android_specific_chromium_tests',
-      'vr_platform_specific_chromium_gtests',
-    ],
-
-    # List gtests that run on android-marshmallow-x86-rel builder.
-    # Test suites will be gradually moved from
-    # android_marshmallow_emulator_non_cq_gtests
-    # to this one, when there are more GCE capacity.
-    'android_marshmallow_emulator_gtests': [
-      'android_emulator_specific_chrome_public_tests',
-      # TODO(crbug.com/1127110): Deprecate this when all the test suites below
-      # it are re-enabled.
-      'android_marshmallow_emulator_limited_capacity_gtests',
-
-      'android_modern_smoke_tests',
-      'android_smoke_tests',
-      'android_specific_chromium_gtests',  # Already includes gl_gtests.
-      'android_wpr_record_replay_tests',
-      #'chromium_gtests',
-      'chromium_gtests_for_devices_with_graphical_output',
-      # TODO(crbug.com/1255748): Remove components_capacity_tests when
-      # chromium_gtests are enabled in this suite.
-      'components_capacity_tests',
-      'linux_flavor_specific_chromium_gtests',
-    ],
-
-    # Note that tests here are gradually moved to
-    # android_marshmallow_emulator_gtests (crbug.com/1127110)
-    #
-    # The diff between android_marshmallow_device_gtests and
-    # (android_marshmallow_emulator_non_cq_gtests +
-    # android_marshmallow_emulator_gtests)
-    # is android_wpr_record_replay_tests
-    'android_marshmallow_emulator_non_cq_gtests': [
-      'chromium_gtests',
-    ],
-
     'android_marshmallow_gtests': [
       'android_modern_smoke_tests',
       'android_smoke_tests',
@@ -6157,19 +6030,13 @@
       'gpu_fyi_vulkan_swiftshader_gtests',
     ],
 
-    'marshmallow_nougat_pie_isolated_scripts_with_proguard': [
-      'android_isolated_scripts',
-      'components_perftests_isolated_scripts',
-      'telemetry_android_minidump_unittests_isolated_scripts',
-      'telemetry_perf_unittests_isolated_scripts_android',
-    ],
-
-    'marshmallow_pie_isolated_scripts': [
-      'android_isolated_scripts',
-      'components_perftests_isolated_scripts',
-      'telemetry_android_minidump_unittests_isolated_scripts',
-      'telemetry_perf_unittests_isolated_scripts_android',
-    ],
+    # TODO(crbug.com/1111436): Re-enable this if/when additional capacity
+    #'marshmallow_nougat_pie_isolated_scripts_with_proguard': [
+    #  'android_isolated_scripts',
+    #  'components_perftests_isolated_scripts',
+    #  'telemetry_android_minidump_unittests_isolated_scripts',
+    #  'telemetry_perf_unittests_isolated_scripts_android',
+    #],
 
     'monochrome_public_apk_checker_isolated_script_and_sizes': [
       'chrome_sizes_android',
diff --git a/testing/buildbot/waterfalls.pyl b/testing/buildbot/waterfalls.pyl
index a721903..a5ddcb67 100644
--- a/testing/buildbot/waterfalls.pyl
+++ b/testing/buildbot/waterfalls.pyl
@@ -977,56 +977,6 @@
           'gtest_tests': 'cronet_gtests',
         },
       },
-      'android-marshmallow-arm64-rel': {
-        'mixins': [
-          'has_native_resultdb_integration',
-          'bullhead',
-          'isolate_profile_data',
-          'marshmallow',
-        ],
-        'additional_compile_targets': [
-          'cronet_test_instrumentation_apk',
-          'chrome_nocompile_tests',
-          'monochrome_static_initializers',
-        ],
-        'test_suites': {
-          'gtest_tests': 'android_marshmallow_device_gtests',
-          'junit_tests': 'chromium_junit_tests',
-          'isolated_scripts': 'marshmallow_pie_isolated_scripts',
-          'scripts': 'chromium_android_scripts',
-        },
-        'os_type': 'android',
-      },
-      'android-marshmallow-x86-rel': {
-        'mixins': [
-          'has_native_resultdb_integration',
-          'isolate_profile_data',
-          'marshmallow-x86-emulator',
-          'emulator-4-cores',
-          'linux-bionic',
-          'x86-64',
-        ],
-        'os_type': 'android',
-        'test_suites': {
-          'gtest_tests': 'android_marshmallow_emulator_gtests',
-          'isolated_scripts': 'monochrome_public_apk_checker_isolated_script',
-          'scripts': 'chromium_android_scripts',
-        },
-      },
-      'android-marshmallow-x86-rel-non-cq': {
-        'mixins': [
-          'has_native_resultdb_integration',
-          'marshmallow-x86-emulator',
-          'emulator-4-cores',
-          'linux-bionic',
-          'x86-64',
-        ],
-        'os_type': 'android',
-        'test_suites': {
-          'gtest_tests': 'android_marshmallow_emulator_non_cq_gtests',
-          'isolated_scripts': 'marshmallow_nougat_pie_isolated_scripts_with_proguard',
-        }
-      },
       'android-nougat-x86-rel': {
         'mixins': [
           'has_native_resultdb_integration',
@@ -1036,6 +986,10 @@
           'linux-bionic',
           'x86-64',
         ],
+        'additional_compile_targets': [
+          'cronet_test_instrumentation_apk',
+          'chrome_nocompile_tests',
+        ],
         'os_type': 'android',
         'test_suites': {
           'gtest_tests': 'android_nougat_emulator_gtests',
@@ -2665,7 +2619,7 @@
           ],
         },
         'test_suites': {
-          # TODO(crbug.com/1302427): Only run the gpu_telemetry_tests that do
+          # TODO(crbug.com/1372204): Only run the gpu_telemetry_tests that do
           # not run on CI or another FYI bot. Ideally, they would all run there.
           'gpu_telemetry_tests': 'gpu_fuchsia_telemetry_experimental_tests',
           'gtest_tests': 'fuchsia_chrome_large_gtests',
@@ -3258,9 +3212,10 @@
           ],
         },
         'test_suites': {
-          # TODO(chonggu): Consider running all telemetry tests.
+          # TODO(crbug.com/1372220): Consider running all telemetry tests.
           'gpu_telemetry_tests': 'gpu_fuchsia_telemetry_experimental_tests',
-          # TODO(chonggu): Consider running more gtests here, ideally "fuchsia_gtests".
+          # TODO(crbug.com/1372220): Consider running more gtests here, Ideally
+          # "fuchsia_gtests".
           'gtest_tests': 'fuchsia_chrome_large_gtests',
         },
       },
diff --git a/testing/variations/PRESUBMIT.py b/testing/variations/PRESUBMIT.py
index 479fff4..fe96a6e 100644
--- a/testing/variations/PRESUBMIT.py
+++ b/testing/variations/PRESUBMIT.py
@@ -161,7 +161,7 @@
     return create_message_fn('Expecting list for platforms')
   supported_platforms = [
       'android', 'android_weblayer', 'android_webview', 'chromeos',
-      'chromeos_lacros', 'ios', 'linux', 'mac', 'windows'
+      'chromeos_lacros', 'fuchsia', 'ios', 'linux', 'mac', 'windows'
   ]
   experiment_platforms = experiment_config['platforms']
   unsupported_platforms = list(
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json
index 52ffa552..c926c671 100644
--- a/testing/variations/fieldtrial_testing_config.json
+++ b/testing/variations/fieldtrial_testing_config.json
@@ -2,10 +2,11 @@
     "AccuracyTips": [
         {
             "platforms": [
+                "chromeos",
+                "fuchsia",
                 "linux",
                 "mac",
-                "windows",
-                "chromeos"
+                "windows"
             ],
             "experiments": [
                 {
@@ -72,6 +73,7 @@
                 "android_webview",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -124,6 +126,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -851,6 +854,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -900,6 +904,7 @@
         {
             "platforms": [
                 "android",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -920,6 +925,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -1011,6 +1017,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -1032,6 +1039,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -1053,6 +1061,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -1089,6 +1098,7 @@
                 "android_webview",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -1111,6 +1121,7 @@
                 "android_webview",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -1134,6 +1145,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -1155,6 +1167,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -1176,6 +1189,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -1197,6 +1211,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -1217,6 +1232,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -1256,6 +1272,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -1278,6 +1295,7 @@
                 "android_webview",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -1300,6 +1318,7 @@
                 "android_webview",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -1322,6 +1341,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -1344,6 +1364,7 @@
                 "android_webview",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -1365,6 +1386,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -1386,6 +1408,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -1413,6 +1436,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -1433,6 +1457,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -1475,6 +1500,7 @@
                 "android_webview",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -1548,6 +1574,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -1569,6 +1596,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -1643,6 +1671,7 @@
                 "android_weblayer",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -1661,6 +1690,7 @@
         {
             "platforms": [
                 "chromeos",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -1713,6 +1743,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -1749,6 +1780,7 @@
             "platforms": [
                 "android",
                 "chromeos",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -1768,6 +1800,7 @@
             "platforms": [
                 "android",
                 "chromeos",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -1787,6 +1820,7 @@
             "platforms": [
                 "android",
                 "chromeos",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -1806,6 +1840,7 @@
             "platforms": [
                 "android",
                 "chromeos",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -1897,6 +1932,7 @@
             "platforms": [
                 "android",
                 "chromeos",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -1977,6 +2013,7 @@
                 "android_webview",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -2001,6 +2038,7 @@
                 "android_weblayer",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -2033,6 +2071,7 @@
     "BrowserSwitcherNoneIsGreylist": [
         {
             "platforms": [
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -2053,6 +2092,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -2070,6 +2110,27 @@
             ]
         }
     ],
+    "CSSOverflowForReplacedElements": [
+        {
+            "platforms": [
+                "android",
+                "android_webview",
+                "android_weblayer",
+                "windows",
+                "mac",
+                "chromeos",
+                "chromeos_lacros"
+            ],
+            "experiments": [
+                {
+                    "name": "Enabled",
+                    "enable_features": [
+                        "CSSOverflowForReplacedElements"
+                    ]
+                }
+            ]
+        }
+    ],
     "CSSParserSelectorArena": [
         {
             "platforms": [
@@ -2077,6 +2138,7 @@
                 "android_weblayer",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -2112,6 +2174,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -2135,6 +2198,7 @@
                 "android_webview",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -2161,6 +2225,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -2180,6 +2245,7 @@
         {
             "platforms": [
                 "chromeos",
+                "fuchsia",
                 "linux"
             ],
             "experiments": [
@@ -2199,6 +2265,7 @@
                 "android_weblayer",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -2236,6 +2303,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -2287,11 +2355,12 @@
                 "android",
                 "android_webview",
                 "android_weblayer",
-                "windows",
-                "mac",
                 "chromeos",
                 "chromeos_lacros",
-                "linux"
+                "fuchsia",
+                "linux",
+                "mac",
+                "windows"
             ],
             "experiments": [
                 {
@@ -2401,6 +2470,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -2418,9 +2488,25 @@
             ]
         }
     ],
+    "ChrmeStartReturnTime": [
+        {
+            "platforms": [
+                "android"
+            ],
+            "experiments": [
+                {
+                    "name": "Enabled",
+                    "enable_features": [
+                        "StartSurfaceReturnTime"
+                    ]
+                }
+            ]
+        }
+    ],
     "ChromeAppsDeprecationWinMacLinux": [
         {
             "platforms": [
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -2442,6 +2528,7 @@
     "ChromeLabs": [
         {
             "platforms": [
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -2593,6 +2680,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -2611,6 +2699,7 @@
     "ChromeWideEchoCancellation": [
         {
             "platforms": [
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -2852,6 +2941,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -2950,6 +3040,7 @@
                 "android_webview",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -2972,6 +3063,7 @@
                 "android_webview",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -2990,15 +3082,16 @@
     "ConsolidateMetricsServiceInitialLogLogic": [
         {
             "platforms": [
-                "windows",
-                "mac",
-                "linux",
+                "android",
+                "android_webview",
+                "android_weblayer",
                 "chromeos",
                 "chromeos_lacros",
-                "android",
+                "fuchsia",
                 "ios",
-                "android_webview",
-                "android_weblayer"
+                "linux",
+                "mac",
+                "windows"
             ],
             "experiments": [
                 {
@@ -3015,6 +3108,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -3219,9 +3313,10 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
-                "windows",
+                "fuchsia",
+                "linux",
                 "mac",
-                "linux"
+                "windows"
             ],
             "experiments": [
                 {
@@ -3421,6 +3516,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -3441,6 +3537,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -3462,6 +3559,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -3512,6 +3610,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -3531,6 +3630,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -3586,6 +3686,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -3615,6 +3716,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -3639,8 +3741,9 @@
         {
             "platforms": [
                 "android",
-                "chromeos_lacros",
                 "chromeos",
+                "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -3666,8 +3769,9 @@
         {
             "platforms": [
                 "android",
-                "chromeos_lacros",
                 "chromeos",
+                "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -3692,8 +3796,9 @@
         {
             "platforms": [
                 "android",
-                "chromeos_lacros",
                 "chromeos",
+                "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -3718,6 +3823,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -3742,6 +3848,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -3759,6 +3866,7 @@
     "DesktopSharePreview": [
         {
             "platforms": [
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -3778,6 +3886,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -3802,11 +3911,12 @@
     "DesktopViewsWidgetLayering": [
         {
             "platforms": [
+                "chromeos",
+                "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
-                "windows",
-                "chromeos",
-                "chromeos_lacros"
+                "windows"
             ],
             "experiments": [
                 {
@@ -3821,9 +3931,10 @@
     "DestroySystemProfiles": [
         {
             "platforms": [
-                "windows",
+                "fuchsia",
                 "linux",
-                "mac"
+                "mac",
+                "windows"
             ],
             "experiments": [
                 {
@@ -3903,6 +4014,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -3920,6 +4032,7 @@
     "DisableGles2ForOopR": [
         {
             "platforms": [
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -3955,6 +4068,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -3991,6 +4105,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -4008,6 +4123,7 @@
     "DiscountConsentV2": [
         {
             "platforms": [
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -4032,6 +4148,7 @@
             "platforms": [
                 "android",
                 "chromeos",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -4052,6 +4169,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -4072,6 +4190,7 @@
                 "android",
                 "android_weblayer",
                 "chromeos",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -4108,6 +4227,28 @@
             ]
         }
     ],
+    "DocumentEventNodePathCaching": [
+        {
+            "platforms": [
+                "android",
+                "android_webview",
+                "chromeos",
+                "chromeos_lacros",
+                "ios",
+                "linux",
+                "mac",
+                "windows"
+            ],
+            "experiments": [
+                {
+                    "name": "Enabled",
+                    "enable_features": [
+                        "DocumentEventNodePathCaching"
+                    ]
+                }
+            ]
+        }
+    ],
     "DownloadLater": [
         {
             "platforms": [
@@ -4141,6 +4282,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -4158,10 +4300,11 @@
     "DownloadUXRedesign": [
         {
             "platforms": [
-                "windows",
-                "mac",
                 "chromeos_lacros",
-                "linux"
+                "fuchsia",
+                "linux",
+                "mac",
+                "windows"
             ],
             "experiments": [
                 {
@@ -4214,6 +4357,7 @@
                 "android_webview",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -4249,6 +4393,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -4285,6 +4430,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -4308,6 +4454,7 @@
                 "android_webview",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "windows"
             ],
@@ -4345,6 +4492,7 @@
         {
             "platforms": [
                 "chromeos",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -4364,6 +4512,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -4563,6 +4712,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -4584,6 +4734,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -4616,10 +4767,11 @@
     "ForwardMemoryPressureEventsToGpuProcess": [
         {
             "platforms": [
-                "mac",
-                "linux",
                 "chromeos",
-                "chromeos_lacros"
+                "chromeos_lacros",
+                "fuchsia",
+                "mac",
+                "linux"
             ],
             "experiments": [
                 {
@@ -4683,6 +4835,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -4761,6 +4914,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -4784,6 +4938,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -4803,6 +4958,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -4942,6 +5098,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux"
             ],
             "experiments": [
@@ -4971,6 +5128,7 @@
                 "android_weblayer",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -4991,6 +5149,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -5012,6 +5171,7 @@
                 "android_webview",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -5779,13 +5939,14 @@
     "IdentifiabilityStudy": [
         {
             "platforms": [
-                "windows",
-                "mac",
+                "android",
+                "android_webview",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
-                "android",
-                "android_webview"
+                "mac",
+                "windows"
             ],
             "experiments": [
                 {
@@ -5816,6 +5977,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -5840,6 +6002,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -5876,6 +6039,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -5897,6 +6061,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -5939,6 +6104,7 @@
                 "android_webview",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -6045,6 +6211,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -6069,6 +6236,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -6094,6 +6262,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -6116,6 +6285,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -6134,6 +6304,7 @@
     "JourneysSearchTermsKeywords": [
         {
             "platforms": [
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -6159,6 +6330,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -6322,6 +6494,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -6343,6 +6516,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -6392,6 +6566,7 @@
                 "android_weblayer",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -6412,6 +6587,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -6476,6 +6652,7 @@
                 "android_webview",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -6651,6 +6828,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -6670,6 +6848,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -6690,6 +6869,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac"
             ],
@@ -6724,6 +6904,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -6744,6 +6925,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -6783,6 +6965,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -6849,6 +7032,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -6869,6 +7053,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -6891,6 +7076,7 @@
                 "android_webview",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -6911,6 +7097,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -6931,6 +7118,7 @@
                 "android",
                 "android_webview",
                 "chromeos",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -6952,6 +7140,7 @@
                 "android",
                 "android_webview",
                 "chromeos",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -6972,6 +7161,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -7006,6 +7196,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -7037,6 +7228,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -7056,6 +7248,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -7076,6 +7269,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -7096,6 +7290,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -7205,6 +7400,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -7238,8 +7434,9 @@
         {
             "platforms": [
                 "android",
-                "chromeos_lacros",
                 "chromeos",
+                "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -7346,6 +7543,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -7365,6 +7563,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -7430,6 +7629,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -7452,6 +7652,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -7563,6 +7764,7 @@
                 "android_webview",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux"
             ],
             "experiments": [
@@ -7688,6 +7890,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -7730,6 +7933,7 @@
                 "android_webview",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "windows"
             ],
@@ -7787,6 +7991,7 @@
                 "android_weblayer",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -7827,6 +8032,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -7863,6 +8069,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -7959,6 +8166,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -8026,6 +8234,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -8047,6 +8256,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -8066,6 +8276,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -8092,6 +8303,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -8114,6 +8326,7 @@
                 "android_webview",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -8140,6 +8353,7 @@
             "platforms": [
                 "android",
                 "chromeos",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -8157,11 +8371,12 @@
     "PreconnectToSearchDesktop": [
         {
             "platforms": [
-                "linux",
-                "windows",
                 "chromeos",
                 "chromeos_lacros",
-                "mac"
+                "fuchsia",
+                "linux",
+                "mac",
+                "windows"
             ],
             "experiments": [
                 {
@@ -8202,6 +8417,7 @@
                 "android_weblayer",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -8220,10 +8436,11 @@
         {
             "platforms": [
                 "windows",
-                "mac",
-                "linux",
                 "chromeos",
-                "chromeos_lacros"
+                "chromeos_lacros",
+                "fuchsia",
+                "mac",
+                "linux"
             ],
             "experiments": [
                 {
@@ -8258,6 +8475,7 @@
                 "android_webview",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -8297,10 +8515,11 @@
     "PrivacyBudgetClockSkewMetrics": [
         {
             "platforms": [
-                "windows",
-                "mac",
+                "android",
+                "fuchsia",
                 "linux",
-                "android"
+                "mac",
+                "windows"
             ],
             "experiments": [
                 {
@@ -8332,11 +8551,12 @@
     "PrivacyGuide2": [
         {
             "platforms": [
-                "linux",
-                "windows",
                 "chromeos",
                 "chromeos_lacros",
-                "mac"
+                "fuchsia",
+                "linux",
+                "mac",
+                "windows"
             ],
             "experiments": [
                 {
@@ -8351,6 +8571,7 @@
     "PrivacyGuideHats": [
         {
             "platforms": [
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -8394,6 +8615,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -8504,6 +8726,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -8541,6 +8764,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -8643,10 +8867,11 @@
         {
             "platforms": [
                 "windows",
-                "mac",
-                "linux",
                 "chromeos",
-                "chromeos_lacros"
+                "chromeos_lacros",
+                "fuchsia",
+                "mac",
+                "linux"
             ],
             "experiments": [
                 {
@@ -8697,6 +8922,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -8720,6 +8946,7 @@
                 "android_webview",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -8742,6 +8969,7 @@
                 "android_weblayer",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -8764,6 +8992,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -8787,6 +9016,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -8837,6 +9067,7 @@
                 "android_webview",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -8856,11 +9087,12 @@
     "ReportCertificateErrors": [
         {
             "platforms": [
+                "android",
+                "chromeos",
+                "fuchsia",
                 "linux",
                 "mac",
-                "windows",
-                "android",
-                "chromeos"
+                "windows"
             ],
             "experiments": [
                 {
@@ -8878,6 +9110,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows",
@@ -8977,6 +9210,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -9014,6 +9248,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -9039,6 +9274,7 @@
                 "android_webview",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -9103,6 +9339,7 @@
             "platforms": [
                 "android",
                 "chromeos",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -9174,6 +9411,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -9210,6 +9448,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -9349,6 +9588,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -9375,6 +9615,7 @@
             "platforms": [
                 "android",
                 "chromeos",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -9395,6 +9636,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -9417,6 +9659,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -9455,6 +9698,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -9504,6 +9748,7 @@
         {
             "platforms": [
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -9766,6 +10011,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -9788,6 +10034,7 @@
                 "android_webview",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -9858,6 +10105,7 @@
                 "android_webview",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -9896,6 +10144,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -9932,6 +10181,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -10004,6 +10254,7 @@
         {
             "platforms": [
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -10025,6 +10276,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -10045,6 +10297,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -10079,6 +10332,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -10105,6 +10359,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -10130,6 +10385,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -10167,6 +10423,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -10192,6 +10449,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -10229,6 +10487,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -10263,6 +10522,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -10282,6 +10542,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -10302,6 +10563,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -10324,6 +10586,7 @@
                 "android_webview",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -10346,6 +10609,7 @@
                 "android_webview",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -10380,6 +10644,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -10428,6 +10693,7 @@
     "TrustSafetySentimentSurvey": [
         {
             "platforms": [
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -10468,6 +10734,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -10495,6 +10762,7 @@
                 "ios",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -10519,6 +10787,7 @@
                 "ios",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -10539,10 +10808,11 @@
     "UnifiedAutoplay": [
         {
             "platforms": [
-                "linux",
-                "mac",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
+                "linux",
+                "mac",
                 "windows"
             ],
             "experiments": [
@@ -10579,6 +10849,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -10599,6 +10870,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -10620,6 +10892,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -10657,6 +10930,7 @@
                 "android_weblayer",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -10676,6 +10950,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -10696,6 +10971,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -10735,6 +11011,7 @@
                 "android_webview",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -10753,6 +11030,7 @@
     "UserCloudSigninRestrictionPolicyFetcher": [
         {
             "platforms": [
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -10774,6 +11052,7 @@
                 "android_webview",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -10791,11 +11070,12 @@
     "V8ConcurrentSparkplug": [
         {
             "platforms": [
-                "linux",
-                "windows",
-                "mac",
                 "chromeos_lacros",
-                "chromeos"
+                "chromeos",
+                "fuchsia",
+                "linux",
+                "mac",
+                "windows"
             ],
             "experiments": [
                 {
@@ -10907,6 +11187,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -10930,6 +11211,7 @@
                 "android",
                 "android_webview",
                 "chromeos",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -10956,6 +11238,7 @@
                 "android_webview",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -10984,6 +11267,7 @@
                 "android_webview",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -11015,6 +11299,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -11046,6 +11331,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -11099,6 +11385,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -11134,6 +11421,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -11191,6 +11479,7 @@
                 "mac",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "ios",
                 "android",
@@ -11321,6 +11610,7 @@
                 "android",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -11448,6 +11738,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -11467,6 +11758,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -11487,6 +11779,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -11504,9 +11797,10 @@
     "WebRTC-Aec3DelayEstimateSmoothingDelayFoundOverride": [
         {
             "platforms": [
-                "windows",
+                "fuchsia",
+                "linux",
                 "mac",
-                "linux"
+                "windows"
             ],
             "experiments": [
                 {
@@ -11524,6 +11818,7 @@
     "WebRTC-Aec3DelayEstimatorDetectPreEcho": [
         {
             "platforms": [
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -11538,11 +11833,12 @@
     "WebRTC-Aec3TransparentModeHmm": [
         {
             "platforms": [
-                "windows",
-                "mac",
                 "chromeos",
                 "chromeos_lacros",
-                "linux"
+                "fuchsia",
+                "linux",
+                "mac",
+                "windows"
             ],
             "experiments": [
                 {
@@ -11558,6 +11854,7 @@
                 "mac",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "ios",
                 "android",
@@ -11576,6 +11873,7 @@
             "platforms": [
                 "android",
                 "chromeos",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -11595,6 +11893,7 @@
                 "android_webview",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -11612,12 +11911,13 @@
     "WebRTC-Bwe-LossBasedBweV2": [
         {
             "platforms": [
-                "windows",
-                "mac",
-                "chromeos",
-                "linux",
                 "android",
-                "android_webview"
+                "android_webview",
+                "chromeos",
+                "fuchsia",
+                "linux",
+                "mac",
+                "windows"
             ],
             "experiments": [
                 {
@@ -11638,6 +11938,7 @@
                 "android",
                 "android_webview",
                 "chromeos",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -11657,6 +11958,7 @@
                 "android_webview",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "ios",
                 "linux",
                 "mac",
@@ -11679,6 +11981,7 @@
                 "mac",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "ios",
                 "android",
@@ -11699,6 +12002,7 @@
                 "android_webview",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -11717,6 +12021,7 @@
                 "mac",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "android",
                 "android_weblayer",
@@ -11736,6 +12041,7 @@
                 "mac",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "ios",
                 "android",
@@ -11755,6 +12061,7 @@
                 "mac",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "android",
                 "android_weblayer",
@@ -11794,6 +12101,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "windows"
             ],
@@ -11812,6 +12120,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -11831,6 +12140,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -11853,6 +12163,7 @@
                 "android_webview",
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -11878,6 +12189,7 @@
             "platforms": [
                 "chromeos",
                 "chromeos_lacros",
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
@@ -12049,6 +12361,7 @@
     "WhatsNewPageExperiment": [
         {
             "platforms": [
+                "fuchsia",
                 "linux",
                 "mac",
                 "windows"
diff --git a/third_party/OWNERS b/third_party/OWNERS
index 705ca9c..ed1eaf03 100644
--- a/third_party/OWNERS
+++ b/third_party/OWNERS
@@ -2,7 +2,7 @@
 # adding new libraries. Be sure to follow the instructions for adding
 # new third party libraries.
 #
-# https://chromium.googlesource.com/chromium/src.git/+/master/docs/adding_to_third_party.md
+# https://chromium.googlesource.com/chromium/src.git/+/main/docs/adding_to_third_party.md
 #
 # For changes to existing code that has no OWNER file, simply TBR= one of
 # people below in addition to getting an appropriate code review. Generally
diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn
index f3fb27c..dfd4cea 100644
--- a/third_party/android_deps/BUILD.gn
+++ b/third_party/android_deps/BUILD.gn
@@ -140,9 +140,9 @@
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
 java_prebuilt("com_google_code_gson_gson_java") {
-  jar_path = "libs/com_google_code_gson_gson/gson-2.8.0.jar"
+  jar_path = "libs/com_google_code_gson_gson/gson-2.9.0.jar"
   output_name = "com_google_code_gson_gson"
-  enable_bytecode_checks = false
+  supports_android = true
 }
 
 # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
@@ -951,9 +951,9 @@
       ":com_google_errorprone_error_prone_annotations_java",
       ":org_checkerframework_checker_qual_java",
       ":org_jsoup_jsoup_java",
-      ":protobuf_lite_runtime_java",
       "//third_party/android_deps:guava_android_java",
       "//third_party/android_deps:material_design_java",
+      "//third_party/android_deps:protobuf_lite_runtime_java",
       "//third_party/androidx:androidx_core_core_java",
       "//third_party/androidx:androidx_test_services_storage_java",
       "//third_party/hamcrest:hamcrest_core_java",
@@ -1276,7 +1276,7 @@
 
   # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
   java_prebuilt("com_google_guava_guava_android_java") {
-    jar_path = "libs/com_google_guava_guava_android/guava-31.0-android.jar"
+    jar_path = "libs/com_google_guava_guava_android/guava-31.1-android.jar"
     output_name = "com_google_guava_guava_android"
     supports_android = true
     deps = [
@@ -1285,7 +1285,6 @@
       ":com_google_guava_failureaccess_java",
       ":com_google_guava_listenablefuture_java",
       ":com_google_j2objc_j2objc_annotations_java",
-      ":org_checkerframework_checker_compat_qual_java",
       ":org_checkerframework_checker_qual_java",
     ]
     bypass_platform_checks = true
@@ -1306,7 +1305,7 @@
 
   # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
   java_prebuilt("com_google_protobuf_protobuf_javalite_java") {
-    jar_path = "libs/com_google_protobuf_protobuf_javalite/protobuf-javalite-3.19.3.jar"
+    jar_path = "libs/com_google_protobuf_protobuf_javalite/protobuf-javalite-3.21.1.jar"
     output_name = "com_google_protobuf_protobuf_javalite"
     supports_android = true
 
@@ -1351,6 +1350,60 @@
   }
 
   # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
+  java_prebuilt("io_grpc_grpc_api_java") {
+    jar_path = "libs/io_grpc_grpc_api/grpc-api-1.49.0.jar"
+    output_name = "io_grpc_grpc_api"
+    supports_android = true
+    deps = [
+      ":com_google_code_findbugs_jsr305_java",
+      ":com_google_errorprone_error_prone_annotations_java",
+      ":io_grpc_grpc_context_java",
+      "//third_party/android_deps:guava_android_java",
+    ]
+    bypass_platform_checks = true
+  }
+
+  # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
+  android_aar_prebuilt("io_grpc_grpc_binder_java") {
+    aar_path = "libs/io_grpc_grpc_binder/grpc-binder-1.49.0.aar"
+    info_path = "libs/io_grpc_grpc_binder/io_grpc_grpc_binder.info"
+    deps = [
+      ":io_grpc_grpc_core_java",
+      "//third_party/android_deps:guava_android_java",
+      "//third_party/androidx:androidx_annotation_annotation_java",
+      "//third_party/androidx:androidx_core_core_java",
+      "//third_party/androidx:androidx_lifecycle_lifecycle_common_java",
+    ]
+  }
+
+  # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
+  java_prebuilt("io_grpc_grpc_protobuf_lite_java") {
+    jar_path = "libs/io_grpc_grpc_protobuf_lite/grpc-protobuf-lite-1.49.0.jar"
+    output_name = "io_grpc_grpc_protobuf_lite"
+    supports_android = true
+    deps = [
+      ":com_google_code_findbugs_jsr305_java",
+      ":io_grpc_grpc_api_java",
+      "//third_party/android_deps:guava_android_java",
+      "//third_party/android_deps:protobuf_lite_runtime_java",
+    ]
+    bypass_platform_checks = true
+  }
+
+  # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
+  java_prebuilt("io_grpc_grpc_stub_java") {
+    jar_path = "libs/io_grpc_grpc_stub/grpc-stub-1.49.0.jar"
+    output_name = "io_grpc_grpc_stub"
+    supports_android = true
+    deps = [
+      ":com_google_errorprone_error_prone_annotations_java",
+      ":io_grpc_grpc_api_java",
+      "//third_party/android_deps:guava_android_java",
+    ]
+    bypass_platform_checks = true
+  }
+
+  # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
   java_prebuilt("javax_annotation_javax_annotation_api_java") {
     jar_path = "libs/javax_annotation_javax_annotation_api/javax.annotation-api-1.3.2.jar"
     output_name = "javax_annotation_javax_annotation_api"
@@ -1375,7 +1428,7 @@
 
   # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
   java_prebuilt("org_codehaus_mojo_animal_sniffer_annotations_java") {
-    jar_path = "libs/org_codehaus_mojo_animal_sniffer_annotations/animal-sniffer-annotations-1.17.jar"
+    jar_path = "libs/org_codehaus_mojo_animal_sniffer_annotations/animal-sniffer-annotations-1.21.jar"
     output_name = "org_codehaus_mojo_animal_sniffer_annotations"
     supports_android = true
 
@@ -1820,6 +1873,20 @@
   }
 
   # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
+  java_prebuilt("com_google_android_annotations_java") {
+    jar_path = "libs/com_google_android_annotations/annotations-4.1.1.4.jar"
+    output_name = "com_google_android_annotations"
+    supports_android = true
+
+    # To remove visibility constraint, add this dependency to
+    # //third_party/android_deps/build.gradle.
+    visibility = [
+      ":*",
+      "//third_party/androidx:*",
+    ]
+  }
+
+  # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
   android_aar_prebuilt("google_android_datatransport_transport_api_java") {
     aar_path = "libs/com_google_android_datatransport_transport_api/transport-api-2.2.1.aar"
     info_path = "libs/com_google_android_datatransport_transport_api/com_google_android_datatransport_transport_api.info"
@@ -2115,6 +2182,59 @@
   }
 
   # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
+  java_prebuilt("io_grpc_grpc_context_java") {
+    jar_path = "libs/io_grpc_grpc_context/grpc-context-1.49.0.jar"
+    output_name = "io_grpc_grpc_context"
+    supports_android = true
+
+    # To remove visibility constraint, add this dependency to
+    # //third_party/android_deps/build.gradle.
+    visibility = [
+      ":*",
+      "//third_party/androidx:*",
+    ]
+    bypass_platform_checks = true
+  }
+
+  # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
+  java_prebuilt("io_grpc_grpc_core_java") {
+    jar_path = "libs/io_grpc_grpc_core/grpc-core-1.49.0.jar"
+    output_name = "io_grpc_grpc_core"
+    supports_android = true
+
+    # To remove visibility constraint, add this dependency to
+    # //third_party/android_deps/build.gradle.
+    visibility = [
+      ":*",
+      "//third_party/androidx:*",
+    ]
+    deps = [
+      ":com_google_android_annotations_java",
+      ":com_google_code_gson_gson_java",
+      ":com_google_errorprone_error_prone_annotations_java",
+      ":io_grpc_grpc_api_java",
+      ":io_perfmark_perfmark_api_java",
+      ":org_codehaus_mojo_animal_sniffer_annotations_java",
+      "//third_party/android_deps:guava_android_java",
+    ]
+    bypass_platform_checks = true
+  }
+
+  # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
+  java_prebuilt("io_perfmark_perfmark_api_java") {
+    jar_path = "libs/io_perfmark_perfmark_api/perfmark-api-0.25.0.jar"
+    output_name = "io_perfmark_perfmark_api"
+    supports_android = true
+
+    # To remove visibility constraint, add this dependency to
+    # //third_party/android_deps/build.gradle.
+    visibility = [
+      ":*",
+      "//third_party/androidx:*",
+    ]
+  }
+
+  # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
   java_prebuilt("net_bytebuddy_byte_buddy_java") {
     jar_path = "libs/net_bytebuddy_byte_buddy/byte-buddy-1.12.13.jar"
     output_name = "net_bytebuddy_byte_buddy"
diff --git a/third_party/android_deps/additional_readme_paths.json b/third_party/android_deps/additional_readme_paths.json
index 111815f..468258ee 100644
--- a/third_party/android_deps/additional_readme_paths.json
+++ b/third_party/android_deps/additional_readme_paths.json
@@ -44,6 +44,7 @@
     "libs/com_android_tools_sdk_common",
     "libs/com_github_ben_manes_caffeine_caffeine",
     "libs/com_github_kevinstern_software_and_algorithms",
+    "libs/com_google_android_annotations",
     "libs/com_google_android_apps_common_testing_accessibility_framework_accessibility_test_framework",
     "libs/com_google_android_datatransport_transport_api",
     "libs/com_google_android_gms_play_services_auth",
@@ -110,6 +111,13 @@
     "libs/com_squareup_javapoet",
     "libs/com_squareup_javawriter",
     "libs/io_github_java_diff_utils_java_diff_utils",
+    "libs/io_grpc_grpc_api",
+    "libs/io_grpc_grpc_binder",
+    "libs/io_grpc_grpc_context",
+    "libs/io_grpc_grpc_core",
+    "libs/io_grpc_grpc_protobuf_lite",
+    "libs/io_grpc_grpc_stub",
+    "libs/io_perfmark_perfmark_api",
     "libs/javax_annotation_javax_annotation_api",
     "libs/javax_annotation_jsr250_api",
     "libs/javax_inject_javax_inject",
diff --git a/third_party/android_deps/build.gradle b/third_party/android_deps/build.gradle
index 0f6b2d1..1da7bdf9 100644
--- a/third_party/android_deps/build.gradle
+++ b/third_party/android_deps/build.gradle
@@ -149,7 +149,7 @@
 
     // Used by downstream targets.
     compile "com.google.errorprone:error_prone_annotations:${errorproneVersion}"
-    compile 'org.checkerframework:checker-compat-qual:2.5.3'
+    compile 'org.checkerframework:checker-compat-qual:2.5.5'
     compile 'org.checkerframework:checker-util:3.25.0'
     compile 'org.codehaus.mojo:animal-sniffer-annotations:1.17'
 
@@ -179,7 +179,7 @@
     buildCompileNoDeps "com.android.tools:sdk-common:${androidToolsVersion}"
     buildCompileNoDeps "com.android.tools:common:${androidToolsVersion}"
     buildCompileNoDeps "com.android.tools.layoutlib:layoutlib-api:${androidToolsVersion}"
-    buildCompile 'org.jetbrains.kotlin:kotlin-stdlib:1.4.32'
+    buildCompile 'org.jetbrains.kotlin:kotlin-stdlib:1.7.10'
 
     androidTestCompile 'com.google.android.apps.common.testing.accessibility.framework:accessibility-test-framework:4.0.0'
     // accessibility-test-framework:3.1.2 depends on jsoup 1.12, which has a security
diff --git a/third_party/android_deps/buildSrc/src/main/groovy/BuildConfigGenerator.groovy b/third_party/android_deps/buildSrc/src/main/groovy/BuildConfigGenerator.groovy
index a393d7f..a3f28e9 100644
--- a/third_party/android_deps/buildSrc/src/main/groovy/BuildConfigGenerator.groovy
+++ b/third_party/android_deps/buildSrc/src/main/groovy/BuildConfigGenerator.groovy
@@ -73,6 +73,14 @@
             'com_google_android_accessibility_test_framework',
     ]
 
+    static final Map<String, String> ALIASED_LIBS = [
+        // Theese libs are pulled in via doubledown, should
+        // use the alias instead of the real target.
+        com_google_guava_guava_android: '//third_party/android_deps:guava_android_java',
+        com_google_android_material_material: '//third_party/android_deps:material_design_java',
+        com_google_protobuf_protobuf_javalite: '//third_party/android_deps:protobuf_lite_runtime_java',
+    ]
+
     /**
      * Prefixes of androidx dependencies which are allowed to use non-SNAPSHOT
      * versions. These are the legacy androidx targets that are no longer being
@@ -475,24 +483,15 @@
             // Special case: If a child dependency is an existing lib, rather than skipping
             // it, replace the child dependency with the existing lib.
             String existingLib = EXISTING_LIBS.get(dep.id)
+            String aliasedLib = ALIASED_LIBS.get(dep.id)
             String depTargetName = translateTargetName(dep.id) + '_java'
             if (existingLib) {
                 // Explicitly allow removing specific deps via |EXCLUDE_THIS_LIB| (e.g. androidx_window_window_java).
                 if (existingLib != EXCLUDE_THIS_LIB) {
                     depsStr += "\"${existingLib}\","
                 }
-            } else if (dep.id == 'com_google_android_material_material') {
-                // Material design is pulled in via doubledown, should use the
-                // alias instead of the real target.
-                depsStr += "\"//third_party/android_deps:material_design_java\","
-            } else if (dep.id == 'com_google_guava_guava_android') {
-                // guava is pulled in via doubledown, and should use the alias
-                // instead of the real target.
-                depsStr += "\"//third_party/android_deps:guava_android_java\","
-            } else if (dep.id == 'com_google_protobuf_protobuf_javalite') {
-                // protobuf_javalite is pulled in via doubledown, and should
-                // use this alias instead of the real target.
-                depsStr += "\":protobuf_lite_runtime_java\","
+            } else if (aliasedLib) {
+                depsStr += "\"${aliasedLib}\","
             } else if (excludeDependency(dep)) {
                 String thirdPartyDir = (dep.id.startsWith('androidx')) ? 'androidx' : 'android_deps'
                 depsStr += "\"//third_party/${thirdPartyDir}:${depTargetName}\","
@@ -619,6 +618,10 @@
 
         if (dependencyId.startsWith('org_robolectric')) {
             sb.append('  is_robolectric = true\n')
+        } else if (dependencyId.startsWith('io_grpc_') && dependencyExtension == 'jar') {
+            // Skip platform checks since it depends on
+            // accessibility_test_framework_java which requires_android.
+            sb.append('  bypass_platform_checks = true\n')
         }
         if (dependencyExtension == 'aar' &&
                 (dependencyId.startsWith('androidx') || dependencyId.startsWith('com_android_support'))) {
@@ -829,7 +832,7 @@
                 sb.append('  # https://crbug.com/989505\n')
                 sb.append('  jar_excluded_patterns += ["META-INF/proguard/*"]\n')
                 // Deprecated deps jar but still needed by play services basement.
-                sb.append('  input_jars_paths=["\\$android_sdk/optional/org.apache.http.legacy.jar"]\n')
+                sb.append('  input_jars_paths=["$android_sdk/optional/org.apache.http.legacy.jar"]\n')
                 sb.append('  bytecode_rewriter_target = "//build/android/bytecode:fragment_activity_replacer"\n')
                 break
             case 'com_google_android_gms_play_services_maps':
@@ -848,8 +851,8 @@
                     append('    "com/google/protobuf/Empty*",\n')
                     append('    "com/google/protobuf/FieldMask*",\n')
                     append('    "com/google/protobuf/SourceContext*",\n')
-                    append('    "com/google/protobuf/Struct\\\\\\$1.class",\n')
-                    append('    "com/google/protobuf/Struct\\\\\\$Builder.class",\n')
+                    append('    "com/google/protobuf/Struct\\$1.class",\n')
+                    append('    "com/google/protobuf/Struct\\$Builder.class",\n')
                     append('    "com/google/protobuf/Struct.class",\n')
                     append('    "com/google/protobuf/StructOrBuilder.class",\n')
                     append('    "com/google/protobuf/StructProto.class",\n')
@@ -889,13 +892,13 @@
                 break
             case 'com_google_firebase_firebase_components':
                 sb.append('\n')
-                sb.append('  # Can\'t find com.google.firebase.components.Component\\$ComponentType.\n')
+                sb.append('  # Can\'t find com.google.firebase.components.Component$ComponentType.\n')
                 sb.append('  enable_bytecode_checks = false\n')
                 break
             case 'com_google_firebase_firebase_installations':
             case 'com_google_firebase_firebase_installations_interop':
                 sb.append('\n')
-                sb.append('  # Can\'t find com.google.auto.value.AutoValue\\$Builder.\n')
+                sb.append('  # Can\'t find com.google.auto.value.AutoValue$Builder.\n')
                 sb.append('  enable_bytecode_checks = false\n')
                 break
             case 'com_google_firebase_firebase_messaging':
@@ -1026,7 +1029,7 @@
             if (!matcher.find()) {
                 throw new IllegalStateException('BUILD.gn insertion point not found.')
             }
-            out = matcher.replaceFirst(out)
+            out = matcher.replaceFirst(Matcher.quoteReplacement(out))
         } else {
             out = 'import("//build/config/android/rules.gni")\n' + out
         }
diff --git a/third_party/android_deps/buildSrc/src/main/groovy/ChromiumDepGraph.groovy b/third_party/android_deps/buildSrc/src/main/groovy/ChromiumDepGraph.groovy
index 5de21a2..709e5b2 100644
--- a/third_party/android_deps/buildSrc/src/main/groovy/ChromiumDepGraph.groovy
+++ b/third_party/android_deps/buildSrc/src/main/groovy/ChromiumDepGraph.groovy
@@ -266,25 +266,25 @@
             resolveVersion: '1.7.10'),
         io_grpc_grpc_binder: new PropertyOverride(
             licenseUrl: 'https://www.apache.org/licenses/LICENSE-2.0.txt',
-            licenseName: 'Apache 2.0', overrideLatest: true),
+            licenseName: 'Apache 2.0'),
         io_grpc_grpc_core: new PropertyOverride(
             licenseUrl: 'https://www.apache.org/licenses/LICENSE-2.0.txt',
-            licenseName: 'Apache 2.0', overrideLatest: true),
+            licenseName: 'Apache 2.0'),
         io_grpc_grpc_api: new PropertyOverride(
             licenseUrl: 'https://www.apache.org/licenses/LICENSE-2.0.txt',
-            licenseName: 'Apache 2.0', overrideLatest: true),
+            licenseName: 'Apache 2.0'),
         io_grpc_grpc_context: new PropertyOverride(
             licenseUrl: 'https://www.apache.org/licenses/LICENSE-2.0.txt',
-            licenseName: 'Apache 2.0', overrideLatest: true),
+            licenseName: 'Apache 2.0'),
         io_grpc_grpc_protobuf_lite: new PropertyOverride(
             licenseUrl: 'https://www.apache.org/licenses/LICENSE-2.0.txt',
-            licenseName: 'Apache 2.0', overrideLatest: true),
+            licenseName: 'Apache 2.0'),
         io_grpc_grpc_stub: new PropertyOverride(
             licenseUrl: 'https://www.apache.org/licenses/LICENSE-2.0.txt',
-            licenseName: 'Apache 2.0', overrideLatest: true),
+            licenseName: 'Apache 2.0'),
         io_perfmark_perfmark_api: new PropertyOverride(
             licenseUrl: 'https://www.apache.org/licenses/LICENSE-2.0.txt',
-            licenseName: 'Apache 2.0', overrideLatest: true),
+            licenseName: 'Apache 2.0'),
     ]
 
     private static final Set<String> ALLOWED_EMPTY_DEPS = [
diff --git a/third_party/android_deps/libs/com_google_android_annotations/3pp/fetch.py b/third_party/android_deps/libs/com_google_android_annotations/3pp/fetch.py
index 44fa01da..1b02987 100755
--- a/third_party/android_deps/libs/com_google_android_annotations/3pp/fetch.py
+++ b/third_party/android_deps/libs/com_google_android_annotations/3pp/fetch.py
@@ -16,7 +16,7 @@
 _GROUP_NAME = 'com/google/android'
 _MODULE_NAME = 'annotations'
 _FILE_EXT = 'jar'
-_OVERRIDE_LATEST = '4.1.1.4'
+_OVERRIDE_LATEST = None
 _PATCH_VERSION = 'cr1'
 
 
diff --git a/third_party/android_deps/libs/com_google_android_annotations/LICENSE b/third_party/android_deps/libs/com_google_android_annotations/LICENSE
new file mode 100644
index 0000000..bee4082
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_annotations/LICENSE
@@ -0,0 +1,147 @@
+Terms and conditions
+
+This is the Android Software Development Kit License Agreement
+
+1. Introduction
+
+1.1 The Android Software Development Kit (referred to in the License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of the License Agreement. The License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.
+
+1.2 "Android" means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.
+
+1.3 A "compatible implementation" means any Android device that (i) complies with the Android Compatibility Definition document, which can be found at the Android compatibility website (http://source.android.com/compatibility) and which may be updated from time to time; and (ii) successfully passes the Android Compatibility Test Suite (CTS).
+
+1.4 "Google" means Google LLC, a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
+
+
+2. Accepting this License Agreement
+
+2.1 In order to use the SDK, you must first agree to the License Agreement. You may not use the SDK if you do not accept the License Agreement.
+
+2.2 By clicking to accept, you hereby agree to the terms of the License Agreement.
+
+2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries, including the country in which you are resident or from which you use the SDK.
+
+2.4 If you are agreeing to be bound by the License Agreement on behalf of your employer or other entity, you represent and warrant that you have full legal authority to bind your employer or such entity to the License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the SDK on behalf of your employer or other entity.
+
+
+3. SDK License from Google
+
+3.1 Subject to the terms of the License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable, non-exclusive, and non-sublicensable license to use the SDK solely to develop applications for compatible implementations of Android.
+
+3.2 You may not use this SDK to develop applications for other platforms (including non-compatible implementations of Android) or to develop another SDK. You are of course free to develop applications for other platforms, including non-compatible implementations of Android, provided that this SDK is not used for that purpose.
+
+3.3 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
+
+3.4 You may not use the SDK for any purpose not expressly permitted by the License Agreement.  Except to the extent required by applicable third party licenses, you may not copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK.
+
+3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not the License Agreement.
+
+3.6 You agree that the form and nature of the SDK that Google provides may change without prior notice to you and that future versions of the SDK may be incompatible with applications developed on previous versions of the SDK. You agree that Google may stop (permanently or temporarily) providing the SDK (or any features within the SDK) to you or to users generally at Google's sole discretion, without prior notice to you.
+
+3.7 Nothing in the License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
+
+3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the SDK.
+
+
+4. Use of the SDK by You
+
+4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under the License Agreement in or to any software applications that you develop using the SDK, including any intellectual property rights that subsist in those applications.
+
+4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) the License Agreement and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).
+
+4.3 You agree that if you use the SDK to develop applications for general public users, you will protect the privacy and legal rights of those users. If the users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If the user provides your application with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, the user has given you permission to do so.
+
+4.4 You agree that you will not engage in any activity with the SDK, including the development or distribution of an application, that interferes with, disrupts, damages, or accesses in an unauthorized manner the servers, networks, or other properties or services of any third party including, but not limited to, Google or any mobile communications carrier.
+
+4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through Android and/or applications for Android, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.
+
+4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under the License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.
+
+
+5. Your Developer Credentials
+
+5.1 You agree that you are responsible for maintaining the confidentiality of any developer credentials that may be issued to you by Google or which you may choose yourself and that you will be solely responsible for all applications that are developed under your developer credentials.
+
+
+6. Privacy and Information
+
+6.1 In order to continually innovate and improve the SDK, Google may collect certain usage statistics from the software including but not limited to a unique identifier, associated IP address, version number of the software, and information on which tools and/or services in the SDK are being used and how they are being used. Before any of this information is collected, the SDK will notify you and seek your consent. If you withhold consent, the information will not be collected.
+
+6.2 The data collected is examined in the aggregate to improve the SDK and is maintained in accordance with Google's Privacy Policy.
+
+
+7. Third Party Applications
+
+7.1 If you use the SDK to run applications developed by a third party or that access data, content or resources provided by a third party, you agree that Google is not responsible for those applications, data, content, or resources. You understand that all data, content or resources which you may access through such third party applications are the sole responsibility of the person from which they originated and that Google is not liable for any loss or damage that you may experience as a result of the use or access of any of those third party applications, data, content, or resources.
+
+7.2 You should be aware the data, content, and resources presented to you through such a third party application may be protected by intellectual property rights which are owned by the providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on these data, content, or resources (either in whole or in part) unless you have been specifically given permission to do so by the relevant owners.
+
+7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party. In that case, the License Agreement does not affect your legal relationship with these third parties.
+
+
+8. Using Android APIs
+
+8.1 Google Data APIs
+
+8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be protected by intellectual property rights which are owned by Google or those parties that provide the data (or by other persons or companies on their behalf). Your use of any such API may be subject to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create derivative works based on this data (either in whole or in part) unless allowed by the relevant Terms of Service.
+
+8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you shall retrieve data only with the user's explicit consent and only when, and for the limited purposes for which, the user has given you permission to do so.
+
+
+9. Terminating this License Agreement
+
+9.1 The License Agreement will continue to apply until terminated by either you or Google as set out below.
+
+9.2 If you want to terminate the License Agreement, you may do so by ceasing your use of the SDK and any relevant developer credentials.
+
+9.3 Google may at any time, terminate the License Agreement with you if:
+(A) you have breached any provision of the License Agreement; or
+(B) Google is required to do so by law; or
+(C) the partner with whom Google offered certain parts of SDK (such as APIs) to you has terminated its relationship with Google or ceased to offer certain parts of the SDK to you; or
+(D) Google decides to no longer provide the SDK or certain parts of the SDK to users in the country in which you are resident or from which you use the service, or the provision of the SDK or certain SDK services to you by Google is, in Google's sole discretion, no longer commercially viable.
+
+9.4 When the License Agreement comes to an end, all of the legal rights, obligations and liabilities that you and Google have benefited from, been subject to (or which have accrued over time whilst the License Agreement has been in force) or which are expressed to continue indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall continue to apply to such rights, obligations and liabilities indefinitely.
+
+
+10. DISCLAIMER OF WARRANTIES
+
+10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND THAT THE SDK IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
+
+10.2 YOUR USE OF THE SDK AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE SDK IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE.
+
+10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+
+
+11. LIMITATION OF LIABILITY
+
+11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
+
+
+12. Indemnification
+
+12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you with the License Agreement.
+
+
+13. Changes to the License Agreement
+
+13.1 Google may make changes to the License Agreement as it distributes new versions of the SDK. When these changes are made, Google will make a new version of the License Agreement available on the website where the SDK is made available.
+
+
+14. General Legal Terms
+
+14.1 The License Agreement constitutes the whole legal agreement between you and Google and governs your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the SDK.
+
+14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in the License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.
+
+14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of the License Agreement is invalid, then that provision will be removed from the License Agreement without affecting the rest of the License Agreement. The remaining provisions of the License Agreement will continue to be valid and enforceable.
+
+14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to the License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of the License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to the License Agreement.
+
+14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE SDK. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
+
+14.6 The rights granted in the License Agreement may not be assigned or transferred by either you or Google without the prior written approval of the other party. Neither you nor Google shall be permitted to delegate their responsibilities or obligations under the License Agreement without the prior written approval of the other party.
+
+14.7 The License Agreement, and your relationship with Google under the License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from the License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
+
+
+December 9, 2016
diff --git a/third_party/android_deps/libs/com_google_code_findbugs_jsr305/3pp/fetch.py b/third_party/android_deps/libs/com_google_code_findbugs_jsr305/3pp/fetch.py
index d8a2eb56..01c6e1b 100755
--- a/third_party/android_deps/libs/com_google_code_findbugs_jsr305/3pp/fetch.py
+++ b/third_party/android_deps/libs/com_google_code_findbugs_jsr305/3pp/fetch.py
@@ -16,7 +16,7 @@
 _GROUP_NAME = 'com/google/code/findbugs'
 _MODULE_NAME = 'jsr305'
 _FILE_EXT = 'jar'
-_OVERRIDE_LATEST = '3.0.2'
+_OVERRIDE_LATEST = None
 _PATCH_VERSION = 'cr1'
 
 
diff --git a/third_party/android_deps/libs/com_google_code_gson_gson/3pp/fetch.py b/third_party/android_deps/libs/com_google_code_gson_gson/3pp/fetch.py
index a65dbd2..6f4864a 100755
--- a/third_party/android_deps/libs/com_google_code_gson_gson/3pp/fetch.py
+++ b/third_party/android_deps/libs/com_google_code_gson_gson/3pp/fetch.py
@@ -16,7 +16,7 @@
 _GROUP_NAME = 'com/google/code/gson'
 _MODULE_NAME = 'gson'
 _FILE_EXT = 'jar'
-_OVERRIDE_LATEST = '2.9.0'
+_OVERRIDE_LATEST = None
 _PATCH_VERSION = 'cr1'
 
 
diff --git a/third_party/android_deps/libs/com_google_errorprone_error_prone_annotations/3pp/fetch.py b/third_party/android_deps/libs/com_google_errorprone_error_prone_annotations/3pp/fetch.py
index 176857e..af181b3a 100755
--- a/third_party/android_deps/libs/com_google_errorprone_error_prone_annotations/3pp/fetch.py
+++ b/third_party/android_deps/libs/com_google_errorprone_error_prone_annotations/3pp/fetch.py
@@ -16,7 +16,7 @@
 _GROUP_NAME = 'com/google/errorprone'
 _MODULE_NAME = 'error_prone_annotations'
 _FILE_EXT = 'jar'
-_OVERRIDE_LATEST = '2.14.0'
+_OVERRIDE_LATEST = None
 _PATCH_VERSION = 'cr1'
 
 
diff --git a/third_party/android_deps/libs/com_google_guava_failureaccess/3pp/fetch.py b/third_party/android_deps/libs/com_google_guava_failureaccess/3pp/fetch.py
index d99d5fba..0f07566 100755
--- a/third_party/android_deps/libs/com_google_guava_failureaccess/3pp/fetch.py
+++ b/third_party/android_deps/libs/com_google_guava_failureaccess/3pp/fetch.py
@@ -16,7 +16,7 @@
 _GROUP_NAME = 'com/google/guava'
 _MODULE_NAME = 'failureaccess'
 _FILE_EXT = 'jar'
-_OVERRIDE_LATEST = '1.0.1'
+_OVERRIDE_LATEST = None
 _PATCH_VERSION = 'cr1'
 
 
diff --git a/third_party/android_deps/libs/com_google_guava_guava_android/3pp/fetch.py b/third_party/android_deps/libs/com_google_guava_guava_android/3pp/fetch.py
index 538d4dd..786ebc4 100755
--- a/third_party/android_deps/libs/com_google_guava_guava_android/3pp/fetch.py
+++ b/third_party/android_deps/libs/com_google_guava_guava_android/3pp/fetch.py
@@ -16,7 +16,7 @@
 _GROUP_NAME = 'com/google/guava'
 _MODULE_NAME = 'guava'
 _FILE_EXT = 'jar'
-_OVERRIDE_LATEST = '31.1-android'
+_OVERRIDE_LATEST = None
 _PATCH_VERSION = 'cr1'
 
 
diff --git a/third_party/android_deps/libs/com_google_j2objc_j2objc_annotations/3pp/fetch.py b/third_party/android_deps/libs/com_google_j2objc_j2objc_annotations/3pp/fetch.py
index e2ce451..9030b77 100755
--- a/third_party/android_deps/libs/com_google_j2objc_j2objc_annotations/3pp/fetch.py
+++ b/third_party/android_deps/libs/com_google_j2objc_j2objc_annotations/3pp/fetch.py
@@ -16,7 +16,7 @@
 _GROUP_NAME = 'com/google/j2objc'
 _MODULE_NAME = 'j2objc-annotations'
 _FILE_EXT = 'jar'
-_OVERRIDE_LATEST = '1.3'
+_OVERRIDE_LATEST = None
 _PATCH_VERSION = 'cr1'
 
 
diff --git a/third_party/android_deps/libs/com_google_protobuf_protobuf_javalite/3pp/fetch.py b/third_party/android_deps/libs/com_google_protobuf_protobuf_javalite/3pp/fetch.py
index c765e34a..47112d4 100755
--- a/third_party/android_deps/libs/com_google_protobuf_protobuf_javalite/3pp/fetch.py
+++ b/third_party/android_deps/libs/com_google_protobuf_protobuf_javalite/3pp/fetch.py
@@ -16,7 +16,7 @@
 _GROUP_NAME = 'com/google/protobuf'
 _MODULE_NAME = 'protobuf-javalite'
 _FILE_EXT = 'jar'
-_OVERRIDE_LATEST = '3.21.1'
+_OVERRIDE_LATEST = None
 _PATCH_VERSION = 'cr1'
 
 
diff --git a/third_party/android_deps/libs/io_grpc_grpc_api/3pp/fetch.py b/third_party/android_deps/libs/io_grpc_grpc_api/3pp/fetch.py
index f8bda868..0615f4f 100755
--- a/third_party/android_deps/libs/io_grpc_grpc_api/3pp/fetch.py
+++ b/third_party/android_deps/libs/io_grpc_grpc_api/3pp/fetch.py
@@ -16,7 +16,7 @@
 _GROUP_NAME = 'io/grpc'
 _MODULE_NAME = 'grpc-api'
 _FILE_EXT = 'jar'
-_OVERRIDE_LATEST = '1.49.0'
+_OVERRIDE_LATEST = None
 _PATCH_VERSION = 'cr1'
 
 
diff --git a/third_party/android_deps/libs/io_grpc_grpc_api/LICENSE b/third_party/android_deps/libs/io_grpc_grpc_api/LICENSE
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/third_party/android_deps/libs/io_grpc_grpc_api/LICENSE
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/third_party/android_deps/libs/io_grpc_grpc_binder/3pp/fetch.py b/third_party/android_deps/libs/io_grpc_grpc_binder/3pp/fetch.py
index 22d7d36..a26104c 100755
--- a/third_party/android_deps/libs/io_grpc_grpc_binder/3pp/fetch.py
+++ b/third_party/android_deps/libs/io_grpc_grpc_binder/3pp/fetch.py
@@ -16,7 +16,7 @@
 _GROUP_NAME = 'io/grpc'
 _MODULE_NAME = 'grpc-binder'
 _FILE_EXT = 'aar'
-_OVERRIDE_LATEST = '1.49.0'
+_OVERRIDE_LATEST = None
 _PATCH_VERSION = 'cr1'
 
 
diff --git a/third_party/android_deps/libs/io_grpc_grpc_binder/LICENSE b/third_party/android_deps/libs/io_grpc_grpc_binder/LICENSE
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/third_party/android_deps/libs/io_grpc_grpc_binder/LICENSE
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/third_party/android_deps/libs/io_grpc_grpc_binder/io_grpc_grpc_binder.info b/third_party/android_deps/libs/io_grpc_grpc_binder/io_grpc_grpc_binder.info
new file mode 100644
index 0000000..f00e530
--- /dev/null
+++ b/third_party/android_deps/libs/io_grpc_grpc_binder/io_grpc_grpc_binder.info
@@ -0,0 +1,14 @@
+# Generated by //build/android/gyp/aar.py
+# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
+
+aidl = []
+assets = []
+has_classes_jar = true
+has_native_libraries = false
+has_proguard_flags = false
+has_r_text_file = true
+is_manifest_empty = true
+manifest_package = "io.grpc.binder"
+resources = []
+subjar_tuples = []
+subjars = []
diff --git a/third_party/android_deps/libs/io_grpc_grpc_context/3pp/fetch.py b/third_party/android_deps/libs/io_grpc_grpc_context/3pp/fetch.py
index b92d303..1c431d0 100755
--- a/third_party/android_deps/libs/io_grpc_grpc_context/3pp/fetch.py
+++ b/third_party/android_deps/libs/io_grpc_grpc_context/3pp/fetch.py
@@ -16,7 +16,7 @@
 _GROUP_NAME = 'io/grpc'
 _MODULE_NAME = 'grpc-context'
 _FILE_EXT = 'jar'
-_OVERRIDE_LATEST = '1.49.0'
+_OVERRIDE_LATEST = None
 _PATCH_VERSION = 'cr1'
 
 
diff --git a/third_party/android_deps/libs/io_grpc_grpc_context/LICENSE b/third_party/android_deps/libs/io_grpc_grpc_context/LICENSE
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/third_party/android_deps/libs/io_grpc_grpc_context/LICENSE
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/third_party/android_deps/libs/io_grpc_grpc_core/3pp/fetch.py b/third_party/android_deps/libs/io_grpc_grpc_core/3pp/fetch.py
index dd64ddb..132cdd2 100755
--- a/third_party/android_deps/libs/io_grpc_grpc_core/3pp/fetch.py
+++ b/third_party/android_deps/libs/io_grpc_grpc_core/3pp/fetch.py
@@ -16,7 +16,7 @@
 _GROUP_NAME = 'io/grpc'
 _MODULE_NAME = 'grpc-core'
 _FILE_EXT = 'jar'
-_OVERRIDE_LATEST = '1.49.0'
+_OVERRIDE_LATEST = None
 _PATCH_VERSION = 'cr1'
 
 
diff --git a/third_party/android_deps/libs/io_grpc_grpc_core/LICENSE b/third_party/android_deps/libs/io_grpc_grpc_core/LICENSE
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/third_party/android_deps/libs/io_grpc_grpc_core/LICENSE
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/third_party/android_deps/libs/io_grpc_grpc_protobuf_lite/3pp/fetch.py b/third_party/android_deps/libs/io_grpc_grpc_protobuf_lite/3pp/fetch.py
index 25435a4..fda635c2 100755
--- a/third_party/android_deps/libs/io_grpc_grpc_protobuf_lite/3pp/fetch.py
+++ b/third_party/android_deps/libs/io_grpc_grpc_protobuf_lite/3pp/fetch.py
@@ -16,7 +16,7 @@
 _GROUP_NAME = 'io/grpc'
 _MODULE_NAME = 'grpc-protobuf-lite'
 _FILE_EXT = 'jar'
-_OVERRIDE_LATEST = '1.49.0'
+_OVERRIDE_LATEST = None
 _PATCH_VERSION = 'cr1'
 
 
diff --git a/third_party/android_deps/libs/io_grpc_grpc_protobuf_lite/LICENSE b/third_party/android_deps/libs/io_grpc_grpc_protobuf_lite/LICENSE
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/third_party/android_deps/libs/io_grpc_grpc_protobuf_lite/LICENSE
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/third_party/android_deps/libs/io_grpc_grpc_stub/3pp/fetch.py b/third_party/android_deps/libs/io_grpc_grpc_stub/3pp/fetch.py
index dac9450..4829d084 100755
--- a/third_party/android_deps/libs/io_grpc_grpc_stub/3pp/fetch.py
+++ b/third_party/android_deps/libs/io_grpc_grpc_stub/3pp/fetch.py
@@ -16,7 +16,7 @@
 _GROUP_NAME = 'io/grpc'
 _MODULE_NAME = 'grpc-stub'
 _FILE_EXT = 'jar'
-_OVERRIDE_LATEST = '1.49.0'
+_OVERRIDE_LATEST = None
 _PATCH_VERSION = 'cr1'
 
 
diff --git a/third_party/android_deps/libs/io_grpc_grpc_stub/LICENSE b/third_party/android_deps/libs/io_grpc_grpc_stub/LICENSE
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/third_party/android_deps/libs/io_grpc_grpc_stub/LICENSE
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/third_party/android_deps/libs/io_perfmark_perfmark_api/3pp/fetch.py b/third_party/android_deps/libs/io_perfmark_perfmark_api/3pp/fetch.py
index 52c6097..88bfebb 100755
--- a/third_party/android_deps/libs/io_perfmark_perfmark_api/3pp/fetch.py
+++ b/third_party/android_deps/libs/io_perfmark_perfmark_api/3pp/fetch.py
@@ -16,7 +16,7 @@
 _GROUP_NAME = 'io/perfmark'
 _MODULE_NAME = 'perfmark-api'
 _FILE_EXT = 'jar'
-_OVERRIDE_LATEST = '0.25.0'
+_OVERRIDE_LATEST = None
 _PATCH_VERSION = 'cr1'
 
 
diff --git a/third_party/android_deps/libs/io_perfmark_perfmark_api/LICENSE b/third_party/android_deps/libs/io_perfmark_perfmark_api/LICENSE
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/third_party/android_deps/libs/io_perfmark_perfmark_api/LICENSE
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/third_party/android_deps/libs/org_checkerframework_checker_compat_qual/README.chromium b/third_party/android_deps/libs/org_checkerframework_checker_compat_qual/README.chromium
index 7027b01..659eb8d 100644
--- a/third_party/android_deps/libs/org_checkerframework_checker_compat_qual/README.chromium
+++ b/third_party/android_deps/libs/org_checkerframework_checker_compat_qual/README.chromium
@@ -1,7 +1,7 @@
 Name: Checker Qual
 Short Name: checker-compat-qual
 URL: https://checkerframework.org
-Version: 2.5.3
+Version: 2.5.5
 License: GPL v2 with the classpath exception
 License File: LICENSE
 CPEPrefix: unknown
diff --git a/third_party/android_deps/libs/org_checkerframework_checker_compat_qual/cipd.yaml b/third_party/android_deps/libs/org_checkerframework_checker_compat_qual/cipd.yaml
index 81683c9..cfaffdb 100644
--- a/third_party/android_deps/libs/org_checkerframework_checker_compat_qual/cipd.yaml
+++ b/third_party/android_deps/libs/org_checkerframework_checker_compat_qual/cipd.yaml
@@ -3,8 +3,8 @@
 # found in the LICENSE file.
 
 # To create CIPD package run the following command.
-# cipd create --pkg-def cipd.yaml -tag version:2@2.5.3.cr1
+# cipd create --pkg-def cipd.yaml -tag version:2@2.5.5.cr1
 package: chromium/third_party/android_deps/libs/org_checkerframework_checker_compat_qual
 description: "Checker Qual"
 data:
-- file: checker-compat-qual-2.5.3.jar
+- file: checker-compat-qual-2.5.5.jar
diff --git a/third_party/android_deps/libs/org_checkerframework_checker_qual/3pp/fetch.py b/third_party/android_deps/libs/org_checkerframework_checker_qual/3pp/fetch.py
index 6e1f081d..99de559 100755
--- a/third_party/android_deps/libs/org_checkerframework_checker_qual/3pp/fetch.py
+++ b/third_party/android_deps/libs/org_checkerframework_checker_qual/3pp/fetch.py
@@ -16,7 +16,7 @@
 _GROUP_NAME = 'org/checkerframework'
 _MODULE_NAME = 'checker-qual'
 _FILE_EXT = 'jar'
-_OVERRIDE_LATEST = '3.25.0'
+_OVERRIDE_LATEST = None
 _PATCH_VERSION = 'cr1'
 
 
diff --git a/third_party/android_deps/libs/org_codehaus_mojo_animal_sniffer_annotations/3pp/fetch.py b/third_party/android_deps/libs/org_codehaus_mojo_animal_sniffer_annotations/3pp/fetch.py
index 9ef2c9d..4d05da70 100755
--- a/third_party/android_deps/libs/org_codehaus_mojo_animal_sniffer_annotations/3pp/fetch.py
+++ b/third_party/android_deps/libs/org_codehaus_mojo_animal_sniffer_annotations/3pp/fetch.py
@@ -16,7 +16,7 @@
 _GROUP_NAME = 'org/codehaus/mojo'
 _MODULE_NAME = 'animal-sniffer-annotations'
 _FILE_EXT = 'jar'
-_OVERRIDE_LATEST = '1.21'
+_OVERRIDE_LATEST = None
 _PATCH_VERSION = 'cr1'
 
 
diff --git a/third_party/bidimapper/README.chromium b/third_party/bidimapper/README.chromium
index fbbe485b..54ada91cd 100644
--- a/third_party/bidimapper/README.chromium
+++ b/third_party/bidimapper/README.chromium
@@ -1,10 +1,10 @@
 Name: Implementation of WebDriver BiDi standard
 Short Name: chromium-bidi
-URL: https://github.com/GoogleChromeLabs/chromium-bidi/archive/71278c7d2a09b0bce034e8fb8b77fb78c8245aff.zip
+URL: https://github.com/GoogleChromeLabs/chromium-bidi/archive/1593bab554ddf9e9fdb8d40cb4f2cf4c019e901a.zip
 Version: 0
-Date: 2022-10-06
-Revision: 71278c7d2a09b0bce034e8fb8b77fb78c8245aff
-SHA-512: bd7936fa55542f7c2b0d4e1f9cdb7c12d889b7d361fc3aac6176a1d927732e284bd191a3c0c0eb18ddc8b637513697e443a40294a72735fb981f174b0586d4b7
+Date: 2022-10-07
+Revision: 1593bab554ddf9e9fdb8d40cb4f2cf4c019e901a
+SHA-512: 0289ea7aa3a8f9c0b9208ddc6263e74654c55c42663d6627c5b4efa1a9d55088a3a3b3647d6cfd4aef23f7ea551e14c7dc187bbfd2fa7469d0b3276f18a5ce96
 License: Apache 2.0
 License File: LICENSE
 Security Critical: no
diff --git a/third_party/bidimapper/mapper.js b/third_party/bidimapper/mapper.js
index 88d00ffb..f7cc529 100644
--- a/third_party/bidimapper/mapper.js
+++ b/third_party/bidimapper/mapper.js
@@ -1,4 +1,4 @@
-!function(){"use strict";function e(e){return(...t)=>{if(globalThis.document?.documentElement){console.log(e,...t);const n=function(e){const t=e+"_log",n=document.getElementById(t);if(n)return n;const s=document.createElement("div");return s.id=t,s.innerHTML=`<h3>${e}:</h3>`,document.body.appendChild(s),s}(e),s=document.createElement("pre");s.textContent=t.join(", "),n.appendChild(s)}}}class t{constructor(e,t,n){this.error=e,this.message=t,this.stacktrace=n}error;message;stacktrace;toErrorResponse(e){return{id:e,error:this.error,message:this.message,stacktrace:this.stacktrace}}}class n extends t{constructor(e,t){super("unknown error",e,t)}}class s extends t{constructor(e,t){super("unknown command",e,t)}}class a extends t{constructor(e,t){super("invalid argument",e,t)}}class r extends t{constructor(e){super("no such frame",e)}}class i{method;params;constructor(e,t){this.method=e,this.params=t}}var o;!function(e){e.assertEqual=e=>e,e.assertIs=function(e){},e.assertNever=function(e){throw new Error},e.arrayToEnum=e=>{const t={};for(const n of e)t[n]=n;return t},e.getValidEnumValues=t=>{const n=e.objectKeys(t).filter((e=>"number"!=typeof t[t[e]])),s={};for(const e of n)s[e]=t[e];return e.objectValues(s)},e.objectValues=t=>e.objectKeys(t).map((function(e){return t[e]})),e.objectKeys="function"==typeof Object.keys?e=>Object.keys(e):e=>{const t=[];for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t},e.find=(e,t)=>{for(const n of e)if(t(n))return n},e.isInteger="function"==typeof Number.isInteger?e=>Number.isInteger(e):e=>"number"==typeof e&&isFinite(e)&&Math.floor(e)===e,e.joinValues=function(e,t=" | "){return e.map((e=>"string"==typeof e?`'${e}'`:e)).join(t)},e.jsonStringifyReplacer=(e,t)=>"bigint"==typeof t?t.toString():t}(o||(o={}));const c=o.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),d=e=>{switch(typeof e){case"undefined":return c.undefined;case"string":return c.string;case"number":return isNaN(e)?c.nan:c.number;case"boolean":return c.boolean;case"function":return c.function;case"bigint":return c.bigint;case"object":return Array.isArray(e)?c.array:null===e?c.null:e.then&&"function"==typeof e.then&&e.catch&&"function"==typeof e.catch?c.promise:"undefined"!=typeof Map&&e instanceof Map?c.map:"undefined"!=typeof Set&&e instanceof Set?c.set:"undefined"!=typeof Date&&e instanceof Date?c.date:c.object;default:return c.unknown}},l=o.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of"]);class u extends Error{constructor(e){super(),this.issues=[],this.addIssue=e=>{this.issues=[...this.issues,e]},this.addIssues=(e=[])=>{this.issues=[...this.issues,...e]};const t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name="ZodError",this.issues=e}get errors(){return this.issues}format(e){const t=e||function(e){return e.message},n={_errors:[]},s=e=>{for(const a of e.issues)if("invalid_union"===a.code)a.unionErrors.map(s);else if("invalid_return_type"===a.code)s(a.returnTypeError);else if("invalid_arguments"===a.code)s(a.argumentsError);else if(0===a.path.length)n._errors.push(t(a));else{let e=n,s=0;for(;s<a.path.length;){const n=a.path[s];s===a.path.length-1?(e[n]=e[n]||{_errors:[]},e[n]._errors.push(t(a))):e[n]=e[n]||{_errors:[]},e=e[n],s++}}};return s(this),n}toString(){return this.message}get message(){return JSON.stringify(this.issues,o.jsonStringifyReplacer,2)}get isEmpty(){return 0===this.issues.length}flatten(e=(e=>e.message)){const t={},n=[];for(const s of this.issues)s.path.length>0?(t[s.path[0]]=t[s.path[0]]||[],t[s.path[0]].push(e(s))):n.push(e(s));return{formErrors:n,fieldErrors:t}}get formErrors(){return this.flatten()}}u.create=e=>new u(e);const p=(e,t)=>{let n;switch(e.code){case l.invalid_type:n=e.received===c.undefined?"Required":`Expected ${e.expected}, received ${e.received}`;break;case l.invalid_literal:n=`Invalid literal value, expected ${JSON.stringify(e.expected,o.jsonStringifyReplacer)}`;break;case l.unrecognized_keys:n=`Unrecognized key(s) in object: ${o.joinValues(e.keys,", ")}`;break;case l.invalid_union:n="Invalid input";break;case l.invalid_union_discriminator:n=`Invalid discriminator value. Expected ${o.joinValues(e.options)}`;break;case l.invalid_enum_value:n=`Invalid enum value. Expected ${o.joinValues(e.options)}, received '${e.received}'`;break;case l.invalid_arguments:n="Invalid function arguments";break;case l.invalid_return_type:n="Invalid function return type";break;case l.invalid_date:n="Invalid date";break;case l.invalid_string:"object"==typeof e.validation?"startsWith"in e.validation?n=`Invalid input: must start with "${e.validation.startsWith}"`:"endsWith"in e.validation?n=`Invalid input: must end with "${e.validation.endsWith}"`:o.assertNever(e.validation):n="regex"!==e.validation?`Invalid ${e.validation}`:"Invalid";break;case l.too_small:n="array"===e.type?`Array must contain ${e.inclusive?"at least":"more than"} ${e.minimum} element(s)`:"string"===e.type?`String must contain ${e.inclusive?"at least":"over"} ${e.minimum} character(s)`:"number"===e.type?`Number must be greater than ${e.inclusive?"or equal to ":""}${e.minimum}`:"date"===e.type?`Date must be greater than ${e.inclusive?"or equal to ":""}${new Date(e.minimum)}`:"Invalid input";break;case l.too_big:n="array"===e.type?`Array must contain ${e.inclusive?"at most":"less than"} ${e.maximum} element(s)`:"string"===e.type?`String must contain ${e.inclusive?"at most":"under"} ${e.maximum} character(s)`:"number"===e.type?`Number must be less than ${e.inclusive?"or equal to ":""}${e.maximum}`:"date"===e.type?`Date must be smaller than ${e.inclusive?"or equal to ":""}${new Date(e.maximum)}`:"Invalid input";break;case l.custom:n="Invalid input";break;case l.invalid_intersection_types:n="Intersection results could not be merged";break;case l.not_multiple_of:n=`Number must be a multiple of ${e.multipleOf}`;break;default:n=t.defaultError,o.assertNever(e)}return{message:n}};let h=p;function m(){return h}const g=e=>{const{data:t,path:n,errorMaps:s,issueData:a}=e,r=[...n,...a.path||[]],i={...a,path:r};let o="";const c=s.filter((e=>!!e)).slice().reverse();for(const e of c)o=e(i,{data:t,defaultError:o}).message;return{...a,path:r,message:a.message||o}};function f(e,t){const n=g({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,m(),p].filter((e=>!!e))});e.common.issues.push(n)}class v{constructor(){this.value="valid"}dirty(){"valid"===this.value&&(this.value="dirty")}abort(){"aborted"!==this.value&&(this.value="aborted")}static mergeArray(e,t){const n=[];for(const s of t){if("aborted"===s.status)return y;"dirty"===s.status&&e.dirty(),n.push(s.value)}return{status:e.value,value:n}}static async mergeObjectAsync(e,t){const n=[];for(const e of t)n.push({key:await e.key,value:await e.value});return v.mergeObjectSync(e,n)}static mergeObjectSync(e,t){const n={};for(const s of t){const{key:t,value:a}=s;if("aborted"===t.status)return y;if("aborted"===a.status)return y;"dirty"===t.status&&e.dirty(),"dirty"===a.status&&e.dirty(),(void 0!==a.value||s.alwaysSet)&&(n[t.value]=a.value)}return{status:e.value,value:n}}}const y=Object.freeze({status:"aborted"}),b=e=>({status:"valid",value:e}),w=e=>"aborted"===e.status,_=e=>"dirty"===e.status,x=e=>"valid"===e.status,C=e=>void 0!==typeof Promise&&e instanceof Promise;var S;!function(e){e.errToObj=e=>"string"==typeof e?{message:e}:e||{},e.toString=e=>"string"==typeof e?e:null==e?void 0:e.message}(S||(S={}));class I{constructor(e,t,n,s){this.parent=e,this.data=t,this._path=n,this._key=s}get path(){return this._path.concat(this._key)}}const T=(e,t)=>{if(x(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,error:new u(e.common.issues)}};function k(e){if(!e)return{};const{errorMap:t,invalid_type_error:n,required_error:s,description:a}=e;if(t&&(n||s))throw new Error('Can\'t use "invalid_type_error" or "required_error" in conjunction with custom error map.');if(t)return{errorMap:t,description:a};return{errorMap:(e,t)=>"invalid_type"!==e.code?{message:t.defaultError}:void 0===t.data?{message:null!=s?s:t.defaultError}:{message:null!=n?n:t.defaultError},description:a}}class O{constructor(e){this.spa=this.safeParseAsync,this.superRefine=this._refinement,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.default=this.default.bind(this),this.describe=this.describe.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this)}get description(){return this._def.description}_getType(e){return d(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:d(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new v,ctx:{common:e.parent.common,data:e.data,parsedType:d(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){const t=this._parse(e);if(C(t))throw new Error("Synchronous parse encountered promise.");return t}_parseAsync(e){const t=this._parse(e);return Promise.resolve(t)}parse(e,t){const n=this.safeParse(e,t);if(n.success)return n.data;throw n.error}safeParse(e,t){var n;const s={common:{issues:[],async:null!==(n=null==t?void 0:t.async)&&void 0!==n&&n,contextualErrorMap:null==t?void 0:t.errorMap},path:(null==t?void 0:t.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:d(e)},a=this._parseSync({data:e,path:s.path,parent:s});return T(s,a)}async parseAsync(e,t){const n=await this.safeParseAsync(e,t);if(n.success)return n.data;throw n.error}async safeParseAsync(e,t){const n={common:{issues:[],contextualErrorMap:null==t?void 0:t.errorMap,async:!0},path:(null==t?void 0:t.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:d(e)},s=this._parse({data:e,path:[],parent:n}),a=await(C(s)?s:Promise.resolve(s));return T(n,a)}refine(e,t){const n=e=>"string"==typeof t||void 0===t?{message:t}:"function"==typeof t?t(e):t;return this._refinement(((t,s)=>{const a=e(t),r=()=>s.addIssue({code:l.custom,...n(t)});return"undefined"!=typeof Promise&&a instanceof Promise?a.then((e=>!!e||(r(),!1))):!!a||(r(),!1)}))}refinement(e,t){return this._refinement(((n,s)=>!!e(n)||(s.addIssue("function"==typeof t?t(n,s):t),!1)))}_refinement(e){return new le({schema:this,typeName:be.ZodEffects,effect:{type:"refinement",refinement:e}})}optional(){return ue.create(this)}nullable(){return pe.create(this)}nullish(){return this.optional().nullable()}array(){return U.create(this)}promise(){return de.create(this)}or(e){return q.create([this,e])}and(e){return Q.create(this,e)}transform(e){return new le({schema:this,typeName:be.ZodEffects,effect:{type:"transform",transform:e}})}default(e){return new he({innerType:this,defaultValue:"function"==typeof e?e:()=>e,typeName:be.ZodDefault})}brand(){return new fe({typeName:be.ZodBranded,type:this,...k(void 0)})}describe(e){return new(0,this.constructor)({...this._def,description:e})}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}const E=/^c[^\s-]{8,}$/i,P=/^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i,D=/^(([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;class N extends O{constructor(){super(...arguments),this._regex=(e,t,n)=>this.refinement((t=>e.test(t)),{validation:t,code:l.invalid_string,...S.errToObj(n)}),this.nonempty=e=>this.min(1,S.errToObj(e)),this.trim=()=>new N({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}_parse(e){if(this._getType(e)!==c.string){const t=this._getOrReturnCtx(e);return f(t,{code:l.invalid_type,expected:c.string,received:t.parsedType}),y}const t=new v;let n;for(const s of this._def.checks)if("min"===s.kind)e.data.length<s.value&&(n=this._getOrReturnCtx(e,n),f(n,{code:l.too_small,minimum:s.value,type:"string",inclusive:!0,message:s.message}),t.dirty());else if("max"===s.kind)e.data.length>s.value&&(n=this._getOrReturnCtx(e,n),f(n,{code:l.too_big,maximum:s.value,type:"string",inclusive:!0,message:s.message}),t.dirty());else if("email"===s.kind)D.test(e.data)||(n=this._getOrReturnCtx(e,n),f(n,{validation:"email",code:l.invalid_string,message:s.message}),t.dirty());else if("uuid"===s.kind)P.test(e.data)||(n=this._getOrReturnCtx(e,n),f(n,{validation:"uuid",code:l.invalid_string,message:s.message}),t.dirty());else if("cuid"===s.kind)E.test(e.data)||(n=this._getOrReturnCtx(e,n),f(n,{validation:"cuid",code:l.invalid_string,message:s.message}),t.dirty());else if("url"===s.kind)try{new URL(e.data)}catch(a){n=this._getOrReturnCtx(e,n),f(n,{validation:"url",code:l.invalid_string,message:s.message}),t.dirty()}else if("regex"===s.kind){s.regex.lastIndex=0;s.regex.test(e.data)||(n=this._getOrReturnCtx(e,n),f(n,{validation:"regex",code:l.invalid_string,message:s.message}),t.dirty())}else"trim"===s.kind?e.data=e.data.trim():"startsWith"===s.kind?e.data.startsWith(s.value)||(n=this._getOrReturnCtx(e,n),f(n,{code:l.invalid_string,validation:{startsWith:s.value},message:s.message}),t.dirty()):"endsWith"===s.kind?e.data.endsWith(s.value)||(n=this._getOrReturnCtx(e,n),f(n,{code:l.invalid_string,validation:{endsWith:s.value},message:s.message}),t.dirty()):o.assertNever(s);return{status:t.value,value:e.data}}_addCheck(e){return new N({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...S.errToObj(e)})}url(e){return this._addCheck({kind:"url",...S.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...S.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...S.errToObj(e)})}regex(e,t){return this._addCheck({kind:"regex",regex:e,...S.errToObj(t)})}startsWith(e,t){return this._addCheck({kind:"startsWith",value:e,...S.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:"endsWith",value:e,...S.errToObj(t)})}min(e,t){return this._addCheck({kind:"min",value:e,...S.errToObj(t)})}max(e,t){return this._addCheck({kind:"max",value:e,...S.errToObj(t)})}length(e,t){return this.min(e,t).max(e,t)}get isEmail(){return!!this._def.checks.find((e=>"email"===e.kind))}get isURL(){return!!this._def.checks.find((e=>"url"===e.kind))}get isUUID(){return!!this._def.checks.find((e=>"uuid"===e.kind))}get isCUID(){return!!this._def.checks.find((e=>"cuid"===e.kind))}get minLength(){let e=null;for(const t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(const t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return e}}function R(e,t){const n=(e.toString().split(".")[1]||"").length,s=(t.toString().split(".")[1]||"").length,a=n>s?n:s;return parseInt(e.toFixed(a).replace(".",""))%parseInt(t.toFixed(a).replace(".",""))/Math.pow(10,a)}N.create=e=>new N({checks:[],typeName:be.ZodString,...k(e)});class j extends O{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._getType(e)!==c.number){const t=this._getOrReturnCtx(e);return f(t,{code:l.invalid_type,expected:c.number,received:t.parsedType}),y}let t;const n=new v;for(const s of this._def.checks)if("int"===s.kind)o.isInteger(e.data)||(t=this._getOrReturnCtx(e,t),f(t,{code:l.invalid_type,expected:"integer",received:"float",message:s.message}),n.dirty());else if("min"===s.kind){(s.inclusive?e.data<s.value:e.data<=s.value)&&(t=this._getOrReturnCtx(e,t),f(t,{code:l.too_small,minimum:s.value,type:"number",inclusive:s.inclusive,message:s.message}),n.dirty())}else if("max"===s.kind){(s.inclusive?e.data>s.value:e.data>=s.value)&&(t=this._getOrReturnCtx(e,t),f(t,{code:l.too_big,maximum:s.value,type:"number",inclusive:s.inclusive,message:s.message}),n.dirty())}else"multipleOf"===s.kind?0!==R(e.data,s.value)&&(t=this._getOrReturnCtx(e,t),f(t,{code:l.not_multiple_of,multipleOf:s.value,message:s.message}),n.dirty()):o.assertNever(s);return{status:n.value,value:e.data}}gte(e,t){return this.setLimit("min",e,!0,S.toString(t))}gt(e,t){return this.setLimit("min",e,!1,S.toString(t))}lte(e,t){return this.setLimit("max",e,!0,S.toString(t))}lt(e,t){return this.setLimit("max",e,!1,S.toString(t))}setLimit(e,t,n,s){return new j({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:n,message:S.toString(s)}]})}_addCheck(e){return new j({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:S.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:S.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:S.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:S.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:S.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:S.toString(t)})}get minValue(){let e=null;for(const t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(const t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return e}get isInt(){return!!this._def.checks.find((e=>"int"===e.kind))}}j.create=e=>new j({checks:[],typeName:be.ZodNumber,...k(e)});class M extends O{_parse(e){if(this._getType(e)!==c.bigint){const t=this._getOrReturnCtx(e);return f(t,{code:l.invalid_type,expected:c.bigint,received:t.parsedType}),y}return b(e.data)}}M.create=e=>new M({typeName:be.ZodBigInt,...k(e)});class A extends O{_parse(e){if(this._getType(e)!==c.boolean){const t=this._getOrReturnCtx(e);return f(t,{code:l.invalid_type,expected:c.boolean,received:t.parsedType}),y}return b(e.data)}}A.create=e=>new A({typeName:be.ZodBoolean,...k(e)});class L extends O{_parse(e){if(this._getType(e)!==c.date){const t=this._getOrReturnCtx(e);return f(t,{code:l.invalid_type,expected:c.date,received:t.parsedType}),y}if(isNaN(e.data.getTime())){return f(this._getOrReturnCtx(e),{code:l.invalid_date}),y}const t=new v;let n;for(const s of this._def.checks)"min"===s.kind?e.data.getTime()<s.value&&(n=this._getOrReturnCtx(e,n),f(n,{code:l.too_small,message:s.message,inclusive:!0,minimum:s.value,type:"date"}),t.dirty()):"max"===s.kind?e.data.getTime()>s.value&&(n=this._getOrReturnCtx(e,n),f(n,{code:l.too_big,message:s.message,inclusive:!0,maximum:s.value,type:"date"}),t.dirty()):o.assertNever(s);return{status:t.value,value:new Date(e.data.getTime())}}_addCheck(e){return new L({...this._def,checks:[...this._def.checks,e]})}min(e,t){return this._addCheck({kind:"min",value:e.getTime(),message:S.toString(t)})}max(e,t){return this._addCheck({kind:"max",value:e.getTime(),message:S.toString(t)})}get minDate(){let e=null;for(const t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return null!=e?new Date(e):null}get maxDate(){let e=null;for(const t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return null!=e?new Date(e):null}}L.create=e=>new L({checks:[],typeName:be.ZodDate,...k(e)});class Z extends O{_parse(e){if(this._getType(e)!==c.undefined){const t=this._getOrReturnCtx(e);return f(t,{code:l.invalid_type,expected:c.undefined,received:t.parsedType}),y}return b(e.data)}}Z.create=e=>new Z({typeName:be.ZodUndefined,...k(e)});class B extends O{_parse(e){if(this._getType(e)!==c.null){const t=this._getOrReturnCtx(e);return f(t,{code:l.invalid_type,expected:c.null,received:t.parsedType}),y}return b(e.data)}}B.create=e=>new B({typeName:be.ZodNull,...k(e)});class F extends O{constructor(){super(...arguments),this._any=!0}_parse(e){return b(e.data)}}F.create=e=>new F({typeName:be.ZodAny,...k(e)});class z extends O{constructor(){super(...arguments),this._unknown=!0}_parse(e){return b(e.data)}}z.create=e=>new z({typeName:be.ZodUnknown,...k(e)});class V extends O{_parse(e){const t=this._getOrReturnCtx(e);return f(t,{code:l.invalid_type,expected:c.never,received:t.parsedType}),y}}V.create=e=>new V({typeName:be.ZodNever,...k(e)});class $ extends O{_parse(e){if(this._getType(e)!==c.undefined){const t=this._getOrReturnCtx(e);return f(t,{code:l.invalid_type,expected:c.void,received:t.parsedType}),y}return b(e.data)}}$.create=e=>new $({typeName:be.ZodVoid,...k(e)});class U extends O{_parse(e){const{ctx:t,status:n}=this._processInputParams(e),s=this._def;if(t.parsedType!==c.array)return f(t,{code:l.invalid_type,expected:c.array,received:t.parsedType}),y;if(null!==s.minLength&&t.data.length<s.minLength.value&&(f(t,{code:l.too_small,minimum:s.minLength.value,type:"array",inclusive:!0,message:s.minLength.message}),n.dirty()),null!==s.maxLength&&t.data.length>s.maxLength.value&&(f(t,{code:l.too_big,maximum:s.maxLength.value,type:"array",inclusive:!0,message:s.maxLength.message}),n.dirty()),t.common.async)return Promise.all(t.data.map(((e,n)=>s.type._parseAsync(new I(t,e,t.path,n))))).then((e=>v.mergeArray(n,e)));const a=t.data.map(((e,n)=>s.type._parseSync(new I(t,e,t.path,n))));return v.mergeArray(n,a)}get element(){return this._def.type}min(e,t){return new U({...this._def,minLength:{value:e,message:S.toString(t)}})}max(e,t){return new U({...this._def,maxLength:{value:e,message:S.toString(t)}})}length(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}}var W;U.create=(e,t)=>new U({type:e,minLength:null,maxLength:null,typeName:be.ZodArray,...k(t)}),function(e){e.mergeShapes=(e,t)=>({...e,...t})}(W||(W={}));const K=e=>t=>new J({...e,shape:()=>({...e.shape(),...t})});function H(e){if(e instanceof J){const t={};for(const n in e.shape){const s=e.shape[n];t[n]=ue.create(H(s))}return new J({...e._def,shape:()=>t})}return e instanceof U?U.create(H(e.element)):e instanceof ue?ue.create(H(e.unwrap())):e instanceof pe?pe.create(H(e.unwrap())):e instanceof Y?Y.create(e.items.map((e=>H(e)))):e}class J extends O{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=K(this._def),this.extend=K(this._def)}_getCached(){if(null!==this._cached)return this._cached;const e=this._def.shape(),t=o.objectKeys(e);return this._cached={shape:e,keys:t}}_parse(e){if(this._getType(e)!==c.object){const t=this._getOrReturnCtx(e);return f(t,{code:l.invalid_type,expected:c.object,received:t.parsedType}),y}const{status:t,ctx:n}=this._processInputParams(e),{shape:s,keys:a}=this._getCached(),r=[];if(!(this._def.catchall instanceof V&&"strip"===this._def.unknownKeys))for(const e in n.data)a.includes(e)||r.push(e);const i=[];for(const e of a){const t=s[e],a=n.data[e];i.push({key:{status:"valid",value:e},value:t._parse(new I(n,a,n.path,e)),alwaysSet:e in n.data})}if(this._def.catchall instanceof V){const e=this._def.unknownKeys;if("passthrough"===e)for(const e of r)i.push({key:{status:"valid",value:e},value:{status:"valid",value:n.data[e]}});else if("strict"===e)r.length>0&&(f(n,{code:l.unrecognized_keys,keys:r}),t.dirty());else if("strip"!==e)throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{const e=this._def.catchall;for(const t of r){const s=n.data[t];i.push({key:{status:"valid",value:t},value:e._parse(new I(n,s,n.path,t)),alwaysSet:t in n.data})}}return n.common.async?Promise.resolve().then((async()=>{const e=[];for(const t of i){const n=await t.key;e.push({key:n,value:await t.value,alwaysSet:t.alwaysSet})}return e})).then((e=>v.mergeObjectSync(t,e))):v.mergeObjectSync(t,i)}get shape(){return this._def.shape()}strict(e){return S.errToObj,new J({...this._def,unknownKeys:"strict",...void 0!==e?{errorMap:(t,n)=>{var s,a,r,i;const o=null!==(r=null===(a=(s=this._def).errorMap)||void 0===a?void 0:a.call(s,t,n).message)&&void 0!==r?r:n.defaultError;return"unrecognized_keys"===t.code?{message:null!==(i=S.errToObj(e).message)&&void 0!==i?i:o}:{message:o}}}:{}})}strip(){return new J({...this._def,unknownKeys:"strip"})}passthrough(){return new J({...this._def,unknownKeys:"passthrough"})}setKey(e,t){return this.augment({[e]:t})}merge(e){return new J({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>W.mergeShapes(this._def.shape(),e._def.shape()),typeName:be.ZodObject})}catchall(e){return new J({...this._def,catchall:e})}pick(e){const t={};return o.objectKeys(e).map((e=>{this.shape[e]&&(t[e]=this.shape[e])})),new J({...this._def,shape:()=>t})}omit(e){const t={};return o.objectKeys(this.shape).map((n=>{-1===o.objectKeys(e).indexOf(n)&&(t[n]=this.shape[n])})),new J({...this._def,shape:()=>t})}deepPartial(){return H(this)}partial(e){const t={};if(e)return o.objectKeys(this.shape).map((n=>{-1===o.objectKeys(e).indexOf(n)?t[n]=this.shape[n]:t[n]=this.shape[n].optional()})),new J({...this._def,shape:()=>t});for(const e in this.shape){const n=this.shape[e];t[e]=n.optional()}return new J({...this._def,shape:()=>t})}required(){const e={};for(const t in this.shape){let n=this.shape[t];for(;n instanceof ue;)n=n._def.innerType;e[t]=n}return new J({...this._def,shape:()=>e})}keyof(){return ie(o.objectKeys(this.shape))}}J.create=(e,t)=>new J({shape:()=>e,unknownKeys:"strip",catchall:V.create(),typeName:be.ZodObject,...k(t)}),J.strictCreate=(e,t)=>new J({shape:()=>e,unknownKeys:"strict",catchall:V.create(),typeName:be.ZodObject,...k(t)}),J.lazycreate=(e,t)=>new J({shape:e,unknownKeys:"strip",catchall:V.create(),typeName:be.ZodObject,...k(t)});class q extends O{_parse(e){const{ctx:t}=this._processInputParams(e),n=this._def.options;if(t.common.async)return Promise.all(n.map((async e=>{const n={...t,common:{...t.common,issues:[]},parent:null};return{result:await e._parseAsync({data:t.data,path:t.path,parent:n}),ctx:n}}))).then((function(e){for(const t of e)if("valid"===t.result.status)return t.result;for(const n of e)if("dirty"===n.result.status)return t.common.issues.push(...n.ctx.common.issues),n.result;const n=e.map((e=>new u(e.ctx.common.issues)));return f(t,{code:l.invalid_union,unionErrors:n}),y}));{let e;const s=[];for(const a of n){const n={...t,common:{...t.common,issues:[]},parent:null},r=a._parseSync({data:t.data,path:t.path,parent:n});if("valid"===r.status)return r;"dirty"!==r.status||e||(e={result:r,ctx:n}),n.common.issues.length&&s.push(n.common.issues)}if(e)return t.common.issues.push(...e.ctx.common.issues),e.result;const a=s.map((e=>new u(e)));return f(t,{code:l.invalid_union,unionErrors:a}),y}}get options(){return this._def.options}}q.create=(e,t)=>new q({options:e,typeName:be.ZodUnion,...k(t)});class G extends O{_parse(e){const{ctx:t}=this._processInputParams(e);if(t.parsedType!==c.object)return f(t,{code:l.invalid_type,expected:c.object,received:t.parsedType}),y;const n=this.discriminator,s=t.data[n],a=this.options.get(s);return a?t.common.async?a._parseAsync({data:t.data,path:t.path,parent:t}):a._parseSync({data:t.data,path:t.path,parent:t}):(f(t,{code:l.invalid_union_discriminator,options:this.validDiscriminatorValues,path:[n]}),y)}get discriminator(){return this._def.discriminator}get validDiscriminatorValues(){return Array.from(this.options.keys())}get options(){return this._def.options}static create(e,t,n){const s=new Map;try{t.forEach((t=>{const n=t.shape[e].value;s.set(n,t)}))}catch(e){throw new Error("The discriminator value could not be extracted from all the provided schemas")}if(s.size!==t.length)throw new Error("Some of the discriminator values are not unique");return new G({typeName:be.ZodDiscriminatedUnion,discriminator:e,options:s,...k(n)})}}function X(e,t){const n=d(e),s=d(t);if(e===t)return{valid:!0,data:e};if(n===c.object&&s===c.object){const n=o.objectKeys(t),s=o.objectKeys(e).filter((e=>-1!==n.indexOf(e))),a={...e,...t};for(const n of s){const s=X(e[n],t[n]);if(!s.valid)return{valid:!1};a[n]=s.data}return{valid:!0,data:a}}if(n===c.array&&s===c.array){if(e.length!==t.length)return{valid:!1};const n=[];for(let s=0;s<e.length;s++){const a=X(e[s],t[s]);if(!a.valid)return{valid:!1};n.push(a.data)}return{valid:!0,data:n}}return n===c.date&&s===c.date&&+e==+t?{valid:!0,data:e}:{valid:!1}}class Q extends O{_parse(e){const{status:t,ctx:n}=this._processInputParams(e),s=(e,s)=>{if(w(e)||w(s))return y;const a=X(e.value,s.value);return a.valid?((_(e)||_(s))&&t.dirty(),{status:t.value,value:a.data}):(f(n,{code:l.invalid_intersection_types}),y)};return n.common.async?Promise.all([this._def.left._parseAsync({data:n.data,path:n.path,parent:n}),this._def.right._parseAsync({data:n.data,path:n.path,parent:n})]).then((([e,t])=>s(e,t))):s(this._def.left._parseSync({data:n.data,path:n.path,parent:n}),this._def.right._parseSync({data:n.data,path:n.path,parent:n}))}}Q.create=(e,t,n)=>new Q({left:e,right:t,typeName:be.ZodIntersection,...k(n)});class Y extends O{_parse(e){const{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==c.array)return f(n,{code:l.invalid_type,expected:c.array,received:n.parsedType}),y;if(n.data.length<this._def.items.length)return f(n,{code:l.too_small,minimum:this._def.items.length,inclusive:!0,type:"array"}),y;!this._def.rest&&n.data.length>this._def.items.length&&(f(n,{code:l.too_big,maximum:this._def.items.length,inclusive:!0,type:"array"}),t.dirty());const s=n.data.map(((e,t)=>{const s=this._def.items[t]||this._def.rest;return s?s._parse(new I(n,e,n.path,t)):null})).filter((e=>!!e));return n.common.async?Promise.all(s).then((e=>v.mergeArray(t,e))):v.mergeArray(t,s)}get items(){return this._def.items}rest(e){return new Y({...this._def,rest:e})}}Y.create=(e,t)=>{if(!Array.isArray(e))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new Y({items:e,typeName:be.ZodTuple,rest:null,...k(t)})};class ee extends O{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){const{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==c.object)return f(n,{code:l.invalid_type,expected:c.object,received:n.parsedType}),y;const s=[],a=this._def.keyType,r=this._def.valueType;for(const e in n.data)s.push({key:a._parse(new I(n,e,n.path,e)),value:r._parse(new I(n,n.data[e],n.path,e))});return n.common.async?v.mergeObjectAsync(t,s):v.mergeObjectSync(t,s)}get element(){return this._def.valueType}static create(e,t,n){return new ee(t instanceof O?{keyType:e,valueType:t,typeName:be.ZodRecord,...k(n)}:{keyType:N.create(),valueType:e,typeName:be.ZodRecord,...k(t)})}}class te extends O{_parse(e){const{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==c.map)return f(n,{code:l.invalid_type,expected:c.map,received:n.parsedType}),y;const s=this._def.keyType,a=this._def.valueType,r=[...n.data.entries()].map((([e,t],r)=>({key:s._parse(new I(n,e,n.path,[r,"key"])),value:a._parse(new I(n,t,n.path,[r,"value"]))})));if(n.common.async){const e=new Map;return Promise.resolve().then((async()=>{for(const n of r){const s=await n.key,a=await n.value;if("aborted"===s.status||"aborted"===a.status)return y;"dirty"!==s.status&&"dirty"!==a.status||t.dirty(),e.set(s.value,a.value)}return{status:t.value,value:e}}))}{const e=new Map;for(const n of r){const s=n.key,a=n.value;if("aborted"===s.status||"aborted"===a.status)return y;"dirty"!==s.status&&"dirty"!==a.status||t.dirty(),e.set(s.value,a.value)}return{status:t.value,value:e}}}}te.create=(e,t,n)=>new te({valueType:t,keyType:e,typeName:be.ZodMap,...k(n)});class ne extends O{_parse(e){const{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==c.set)return f(n,{code:l.invalid_type,expected:c.set,received:n.parsedType}),y;const s=this._def;null!==s.minSize&&n.data.size<s.minSize.value&&(f(n,{code:l.too_small,minimum:s.minSize.value,type:"set",inclusive:!0,message:s.minSize.message}),t.dirty()),null!==s.maxSize&&n.data.size>s.maxSize.value&&(f(n,{code:l.too_big,maximum:s.maxSize.value,type:"set",inclusive:!0,message:s.maxSize.message}),t.dirty());const a=this._def.valueType;function r(e){const n=new Set;for(const s of e){if("aborted"===s.status)return y;"dirty"===s.status&&t.dirty(),n.add(s.value)}return{status:t.value,value:n}}const i=[...n.data.values()].map(((e,t)=>a._parse(new I(n,e,n.path,t))));return n.common.async?Promise.all(i).then((e=>r(e))):r(i)}min(e,t){return new ne({...this._def,minSize:{value:e,message:S.toString(t)}})}max(e,t){return new ne({...this._def,maxSize:{value:e,message:S.toString(t)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}}ne.create=(e,t)=>new ne({valueType:e,minSize:null,maxSize:null,typeName:be.ZodSet,...k(t)});class se extends O{constructor(){super(...arguments),this.validate=this.implement}_parse(e){const{ctx:t}=this._processInputParams(e);if(t.parsedType!==c.function)return f(t,{code:l.invalid_type,expected:c.function,received:t.parsedType}),y;function n(e,n){return g({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,m(),p].filter((e=>!!e)),issueData:{code:l.invalid_arguments,argumentsError:n}})}function s(e,n){return g({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,m(),p].filter((e=>!!e)),issueData:{code:l.invalid_return_type,returnTypeError:n}})}const a={errorMap:t.common.contextualErrorMap},r=t.data;return this._def.returns instanceof de?b((async(...e)=>{const t=new u([]),i=await this._def.args.parseAsync(e,a).catch((s=>{throw t.addIssue(n(e,s)),t})),o=await r(...i);return await this._def.returns._def.type.parseAsync(o,a).catch((e=>{throw t.addIssue(s(o,e)),t}))})):b(((...e)=>{const t=this._def.args.safeParse(e,a);if(!t.success)throw new u([n(e,t.error)]);const i=r(...t.data),o=this._def.returns.safeParse(i,a);if(!o.success)throw new u([s(i,o.error)]);return o.data}))}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new se({...this._def,args:Y.create(e).rest(z.create())})}returns(e){return new se({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,t,n){return new se({args:e||Y.create([]).rest(z.create()),returns:t||z.create(),typeName:be.ZodFunction,...k(n)})}}class ae extends O{get schema(){return this._def.getter()}_parse(e){const{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}}ae.create=(e,t)=>new ae({getter:e,typeName:be.ZodLazy,...k(t)});class re extends O{_parse(e){if(e.data!==this._def.value){return f(this._getOrReturnCtx(e),{code:l.invalid_literal,expected:this._def.value}),y}return{status:"valid",value:e.data}}get value(){return this._def.value}}function ie(e,t){return new oe({values:e,typeName:be.ZodEnum,...k(t)})}re.create=(e,t)=>new re({value:e,typeName:be.ZodLiteral,...k(t)});class oe extends O{_parse(e){if("string"!=typeof e.data){const t=this._getOrReturnCtx(e),n=this._def.values;return f(t,{expected:o.joinValues(n),received:t.parsedType,code:l.invalid_type}),y}if(-1===this._def.values.indexOf(e.data)){const t=this._getOrReturnCtx(e),n=this._def.values;return f(t,{received:t.data,code:l.invalid_enum_value,options:n}),y}return b(e.data)}get options(){return this._def.values}get enum(){const e={};for(const t of this._def.values)e[t]=t;return e}get Values(){const e={};for(const t of this._def.values)e[t]=t;return e}get Enum(){const e={};for(const t of this._def.values)e[t]=t;return e}}oe.create=ie;class ce extends O{_parse(e){const t=o.getValidEnumValues(this._def.values),n=this._getOrReturnCtx(e);if(n.parsedType!==c.string&&n.parsedType!==c.number){const e=o.objectValues(t);return f(n,{expected:o.joinValues(e),received:n.parsedType,code:l.invalid_type}),y}if(-1===t.indexOf(e.data)){const e=o.objectValues(t);return f(n,{received:n.data,code:l.invalid_enum_value,options:e}),y}return b(e.data)}get enum(){return this._def.values}}ce.create=(e,t)=>new ce({values:e,typeName:be.ZodNativeEnum,...k(t)});class de extends O{_parse(e){const{ctx:t}=this._processInputParams(e);if(t.parsedType!==c.promise&&!1===t.common.async)return f(t,{code:l.invalid_type,expected:c.promise,received:t.parsedType}),y;const n=t.parsedType===c.promise?t.data:Promise.resolve(t.data);return b(n.then((e=>this._def.type.parseAsync(e,{path:t.path,errorMap:t.common.contextualErrorMap}))))}}de.create=(e,t)=>new de({type:e,typeName:be.ZodPromise,...k(t)});class le extends O{innerType(){return this._def.schema}_parse(e){const{status:t,ctx:n}=this._processInputParams(e),s=this._def.effect||null;if("preprocess"===s.type){const e=s.transform(n.data);return n.common.async?Promise.resolve(e).then((e=>this._def.schema._parseAsync({data:e,path:n.path,parent:n}))):this._def.schema._parseSync({data:e,path:n.path,parent:n})}const a={addIssue:e=>{f(n,e),e.fatal?t.abort():t.dirty()},get path(){return n.path}};if(a.addIssue=a.addIssue.bind(a),"refinement"===s.type){const e=e=>{const t=s.refinement(e,a);if(n.common.async)return Promise.resolve(t);if(t instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return e};if(!1===n.common.async){const s=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});return"aborted"===s.status?y:("dirty"===s.status&&t.dirty(),e(s.value),{status:t.value,value:s.value})}return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then((n=>"aborted"===n.status?y:("dirty"===n.status&&t.dirty(),e(n.value).then((()=>({status:t.value,value:n.value}))))))}if("transform"===s.type){if(!1===n.common.async){const e=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});if(!x(e))return e;const r=s.transform(e.value,a);if(r instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:t.value,value:r}}return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then((e=>x(e)?Promise.resolve(s.transform(e.value,a)).then((e=>({status:t.value,value:e}))):e))}o.assertNever(s)}}le.create=(e,t,n)=>new le({schema:e,typeName:be.ZodEffects,effect:t,...k(n)}),le.createWithPreprocess=(e,t,n)=>new le({schema:t,effect:{type:"preprocess",transform:e},typeName:be.ZodEffects,...k(n)});class ue extends O{_parse(e){return this._getType(e)===c.undefined?b(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}ue.create=(e,t)=>new ue({innerType:e,typeName:be.ZodOptional,...k(t)});class pe extends O{_parse(e){return this._getType(e)===c.null?b(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}pe.create=(e,t)=>new pe({innerType:e,typeName:be.ZodNullable,...k(t)});class he extends O{_parse(e){const{ctx:t}=this._processInputParams(e);let n=t.data;return t.parsedType===c.undefined&&(n=this._def.defaultValue()),this._def.innerType._parse({data:n,path:t.path,parent:t})}removeDefault(){return this._def.innerType}}he.create=(e,t)=>new ue({innerType:e,typeName:be.ZodOptional,...k(t)});class me extends O{_parse(e){if(this._getType(e)!==c.nan){const t=this._getOrReturnCtx(e);return f(t,{code:l.invalid_type,expected:c.nan,received:t.parsedType}),y}return{status:"valid",value:e.data}}}me.create=e=>new me({typeName:be.ZodNaN,...k(e)});const ge=Symbol("zod_brand");class fe extends O{_parse(e){const{ctx:t}=this._processInputParams(e),n=t.data;return this._def.type._parse({data:n,path:t.path,parent:t})}unwrap(){return this._def.type}}const ve=(e,t={},n)=>e?F.create().superRefine(((s,a)=>{if(!e(s)){const e="function"==typeof t?t(s):t,r="string"==typeof e?{message:e}:e;a.addIssue({code:"custom",...r,fatal:n})}})):F.create(),ye={object:J.lazycreate};var be;!function(e){e.ZodString="ZodString",e.ZodNumber="ZodNumber",e.ZodNaN="ZodNaN",e.ZodBigInt="ZodBigInt",e.ZodBoolean="ZodBoolean",e.ZodDate="ZodDate",e.ZodUndefined="ZodUndefined",e.ZodNull="ZodNull",e.ZodAny="ZodAny",e.ZodUnknown="ZodUnknown",e.ZodNever="ZodNever",e.ZodVoid="ZodVoid",e.ZodArray="ZodArray",e.ZodObject="ZodObject",e.ZodUnion="ZodUnion",e.ZodDiscriminatedUnion="ZodDiscriminatedUnion",e.ZodIntersection="ZodIntersection",e.ZodTuple="ZodTuple",e.ZodRecord="ZodRecord",e.ZodMap="ZodMap",e.ZodSet="ZodSet",e.ZodFunction="ZodFunction",e.ZodLazy="ZodLazy",e.ZodLiteral="ZodLiteral",e.ZodEnum="ZodEnum",e.ZodEffects="ZodEffects",e.ZodNativeEnum="ZodNativeEnum",e.ZodOptional="ZodOptional",e.ZodNullable="ZodNullable",e.ZodDefault="ZodDefault",e.ZodPromise="ZodPromise",e.ZodBranded="ZodBranded"}(be||(be={}));const we=N.create,_e=j.create,xe=me.create,Ce=M.create,Se=A.create,Ie=L.create,Te=Z.create,ke=B.create,Oe=F.create,Ee=z.create,Pe=V.create,De=$.create,Ne=U.create,Re=J.create,je=J.strictCreate,Me=q.create,Ae=G.create,Le=Q.create,Ze=Y.create,Be=ee.create,Fe=te.create,ze=ne.create,Ve=se.create,$e=ae.create,Ue=re.create,We=oe.create,Ke=ce.create,He=de.create,Je=le.create,qe=ue.create,Ge=pe.create,Xe=le.createWithPreprocess,Qe=y;var Ye=Object.freeze({__proto__:null,getParsedType:d,ZodParsedType:c,defaultErrorMap:p,setErrorMap:function(e){h=e},getErrorMap:m,makeIssue:g,EMPTY_PATH:[],addIssueToContext:f,ParseStatus:v,INVALID:y,DIRTY:e=>({status:"dirty",value:e}),OK:b,isAborted:w,isDirty:_,isValid:x,isAsync:C,ZodType:O,ZodString:N,ZodNumber:j,ZodBigInt:M,ZodBoolean:A,ZodDate:L,ZodUndefined:Z,ZodNull:B,ZodAny:F,ZodUnknown:z,ZodNever:V,ZodVoid:$,ZodArray:U,get objectUtil(){return W},ZodObject:J,ZodUnion:q,ZodDiscriminatedUnion:G,ZodIntersection:Q,ZodTuple:Y,ZodRecord:ee,ZodMap:te,ZodSet:ne,ZodFunction:se,ZodLazy:ae,ZodLiteral:re,ZodEnum:oe,ZodNativeEnum:ce,ZodPromise:de,ZodEffects:le,ZodTransformer:le,ZodOptional:ue,ZodNullable:pe,ZodDefault:he,ZodNaN:me,BRAND:ge,ZodBranded:fe,custom:ve,Schema:O,ZodSchema:O,late:ye,get ZodFirstPartyTypeKind(){return be},any:Oe,array:Ne,bigint:Ce,boolean:Se,date:Ie,discriminatedUnion:Ae,effect:Je,enum:We,function:Ve,instanceof:(e,t={message:`Input not instance of ${e.name}`})=>ve((t=>t instanceof e),t,!0),intersection:Le,lazy:$e,literal:Ue,map:Fe,nan:xe,nativeEnum:Ke,never:Pe,null:ke,nullable:Ge,number:_e,object:Re,oboolean:()=>Se().optional(),onumber:()=>_e().optional(),optional:qe,ostring:()=>we().optional(),preprocess:Xe,promise:He,record:Be,set:ze,strictObject:je,string:we,transformer:Je,tuple:Ze,undefined:Te,union:Me,unknown:Ee,void:De,NEVER:Qe,ZodIssueCode:l,quotelessJson:e=>JSON.stringify(e,null,2).replace(/"([^"]+)":/g,"$1:"),ZodError:u});const et=e("command parser");function tt(e,t){const n=t.safeParse(e);if(n.success)return n.data;et(`Command ${JSON.stringify(e)} parse failed: ${JSON.stringify(n)}.`);const s=n.error.errors.map((e=>`${e.message} in ${e.path.map((e=>JSON.stringify(e))).join("/")}.`)).join(" ");throw new a(s)}var nt,st,at,rt,it,ot;!function(e){e.RemoteReferenceSchema=Ye.object({handle:Ye.string().min(1)});const t=Ye.object({type:Ye.literal("undefined")}),n=Ye.object({type:Ye.literal("null")}),s=Ye.object({type:Ye.literal("string"),value:Ye.string()}),a=Ye.enum(["NaN","-0","Infinity","+Infinity","-Infinity"]),r=Ye.object({type:Ye.literal("number"),value:Ye.union([a,Ye.number()])}),i=Ye.object({type:Ye.literal("boolean"),value:Ye.boolean()}),o=Ye.object({type:Ye.literal("bigint"),value:Ye.string()}),c=Ye.union([t,n,s,r,i,o]);e.LocalValueSchema=Ye.lazy((()=>Ye.union([c,u,p,m,g,f,v])));const d=Ye.union([e.RemoteReferenceSchema,e.LocalValueSchema]),l=Ye.array(d),u=Ye.lazy((()=>Ye.object({type:Ye.literal("array"),value:l}))),p=Ye.object({type:Ye.literal("date"),value:Ye.string().min(1)}),h=Ye.lazy((()=>Ye.tuple([Ye.union([Ye.string(),d]),d]))),m=Ye.object({type:Ye.literal("map"),value:Ye.array(h)}),g=Ye.object({type:Ye.literal("object"),value:Ye.array(h)}),f=Ye.lazy((()=>Ye.object({type:Ye.literal("regexp"),value:Ye.object({pattern:Ye.string(),flags:Ye.string().optional()})}))),v=Ye.lazy((()=>Ye.object({type:Ye.literal("set"),value:l})));e.BrowsingContextSchema=Ye.string()}(nt||(nt={})),function(e){const t=Ye.enum(["window","dedicated-worker","shared-worker","service-worker","worker","paint-worklet","audio-worklet","worklet"]),n=Ye.object({context:nt.BrowsingContextSchema.optional(),type:t.optional()});e.parseGetRealmsParams=function(e){return tt(e,n)};const s=Ye.object({context:nt.BrowsingContextSchema,sandbox:Ye.string().optional()}),a=Ye.object({realm:Ye.string().min(1)}),r=Ye.union([a,s]),i=Ye.enum(["root","none"]),o=Ye.object({expression:Ye.string(),awaitPromise:Ye.boolean(),target:r,resultOwnership:i.optional()});e.parseEvaluateParams=function(e){return tt(e,o)};const c=Ye.object({target:r,handles:Ye.array(Ye.string())});e.parseDisownParams=function(e){return tt(e,c)};const d=Ye.union([nt.RemoteReferenceSchema,nt.LocalValueSchema]),l=Ye.object({functionDeclaration:Ye.string(),target:r,arguments:Ye.array(d).optional(),this:d.optional(),awaitPromise:Ye.boolean(),resultOwnership:i.optional()});e.parseCallFunctionParams=function(e){return tt(e,l)}}(st||(st={})),function(e){const t=Ye.object({maxDepth:Ye.number().int().nonnegative().max(9007199254740991).optional(),root:nt.BrowsingContextSchema.optional()});e.parseGetTreeParams=function(e){return tt(e,t)};const n=Ye.enum(["none","interactive","complete"]),s=Ye.object({context:nt.BrowsingContextSchema,url:Ye.string().url(),wait:n.optional()});e.parseNavigateParams=function(e){return tt(e,s)};const a=Ye.object({type:Ye.enum(["tab","window"])});e.parseCreateParams=function(e){return tt(e,a)};const r=Ye.object({context:nt.BrowsingContextSchema});e.parseCloseParams=function(e){return tt(e,r)};class o extends i{static method="browsingContext.load";constructor(e){super(o.method,e)}}e.LoadEvent=o;class c extends i{static method="browsingContext.domContentLoaded";constructor(e){super(c.method,e)}}e.DomContentLoadedEvent=c;class d extends i{static method="browsingContext.contextCreated";constructor(e){super(d.method,e)}}e.ContextCreatedEvent=d;class l extends i{static method="browsingContext.contextDestroyed";constructor(e){super(l.method,e)}}e.ContextDestroyedEvent=l,function(e){const t=Ye.object({context:nt.BrowsingContextSchema,selector:Ye.string()});e.parseFindElementParams=function(e){return tt(e,t)}}(e.PROTO||(e.PROTO={})),e.EventNames=[o.method,c.method,d.method,l.method]}(at||(at={})),function(e){class t extends i{static method="log.entryAdded";constructor(e){super(t.method,e)}}e.LogEntryAddedEvent=t,e.EventNames=[t.method]}(rt||(rt={})),function(e){let t;!function(e){const t=Ye.object({cdpMethod:Ye.string(),cdpParams:Ye.object({}).passthrough(),cdpSession:Ye.string().optional()});e.parseSendCommandParams=function(e){return tt(e,t)};const n=Ye.object({context:nt.BrowsingContextSchema});e.parseGetSessionParams=function(e){return tt(e,n)};class s extends i{static method="PROTO.cdp.eventReceived";constructor(e){super(s.method,e)}}e.EventReceivedEvent=s}(t=e.PROTO||(e.PROTO={})),e.EventNames=[t.EventReceivedEvent.method]}(it||(it={})),function(e){const t=Ye.enum([...at.EventNames,...rt.EventNames,...it.EventNames]),n=Ye.object({events:Ye.array(t),contexts:Ye.array(nt.BrowsingContextSchema).optional()});e.parseSubscribeParams=function(e){return tt(e,n)}}(ot||(ot={}));class ct{#e=()=>{};#t=()=>{};#n;#s=!1;get isFinished(){return this.#s}constructor(){this.#n=new Promise(((e,t)=>{this.#e=e,this.#t=t}))}then(e,t){return this.#n.then(e,t)}catch(e){return this.#n.catch(e)}resolve(e){this.#s=!0,this.#e(e)}reject(e){this.#s=!0,this.#t(e)}finally(e){return this.#n.finally(e)}[Symbol.toStringTag]="Promise"}const dt=["%s","%d","%i","%f","%o","%O","%c"];function lt(e){return dt.some((t=>e.includes(t)))}function ut(e){if(!["array","bigint","date","number","object","string"].includes(e.type))return pt(e);if("bigint"===e.type)return e.value.toString()+"n";if("number"===e.type)return e.value.toString();if(["date","string"].includes(e.type))return JSON.stringify(e.value);if("object"===e.type)return"{"+e.value.map((e=>`${JSON.stringify(e[0])}:${ut(e[1])}`)).join(",")+"}";if("array"===e.type)return"["+e.value.map((e=>ut(e))).join(",")+"]";throw Error("Invalid value type: "+e.toString())}function pt(e){if(!e.hasOwnProperty("value"))return e.type;switch(e.type){case"string":case"number":case"boolean":case"bigint":return e.value;case"regexp":return`/${e.value.pattern}/${e.value.flags}`;case"date":return new Date(e.value).toString();case"object":return`Object(${e.value.length})`;case"array":return`Array(${e.value.length})`;case"map":return`Map(${e.value.length})`;case"set":return`Set(${e.value.length})`;case"node":return"node";default:return e.type}}function ht(e,t){return 0==e.length?"":"string"===e[0].type&&lt(e[0].value.toString())&&t?function(e){let t="";const n=e[0].value.toString(),s=e.slice(1,void 0),a=n.split(new RegExp(dt.map((e=>"("+e+")")).join("|"),"g"));for(const n of a)if(void 0!==n&&""!=n)if(lt(n)){const a=s.shift();if(void 0===a)throw new Error('Less value is provided: "'+ht(e,!1)+'"');"%s"===n?t+=pt(a):"%d"===n||"%i"===n?["bigint","number","string"].includes(a.type)?t+=parseInt(a.value.toString(),10):t+="NaN":"%f"===n?["bigint","number","string"].includes(a.type)?t+=parseFloat(a.value.toString()):t+="NaN":t+=ut(a)}else t+=n;if(s.length>0)throw new Error('More value is provided: "'+ht(e,!1)+'"');return t}(e):e.map((e=>pt(e))).join(" ")}class mt{static#a=0;static#r=1;static#i=new Map;static async serializeCdpObject(e,t,n){const s=await n.cdpClient.Runtime.callFunctionOn({functionDeclaration:String((e=>e)),awaitPromise:!1,arguments:[e],generateWebDriverValue:!0,executionContextId:n.executionContextId});return await this.#o(s,n,t)}static async stringifyObject(e,t){return(await t.cdpClient.Runtime.callFunctionOn({functionDeclaration:String((function(e){return String(e)})),awaitPromise:!1,arguments:[e],returnByValue:!0,executionContextId:t.executionContextId})).result.value}static async callFunction(e,t,n,s,r,i){const o=`(...args)=>{ return _callFunction((\n${t}\n), args);\n      function _callFunction(f, args) {\n        const deserializedThis = args.shift();\n        const deserializedArgs = args;\n        return f.apply(deserializedThis, deserializedArgs);\n      }}`,c=[await this.#c(n,e)];let d;c.push(...await Promise.all(s.map((async t=>await this.#c(t,e)))));try{d=await e.cdpClient.Runtime.callFunctionOn({functionDeclaration:o,awaitPromise:r,arguments:c,generateWebDriverValue:!0,executionContextId:e.executionContextId})}catch(e){if(-32e3===e.code&&["Could not find object with given id","Argument should belong to the same JavaScript world as target object"].includes(e.message))throw new a("Handle was not found.");throw e}return d.exceptionDetails?{exceptionDetails:await this.#d(d.exceptionDetails,this.#r,i,e),realm:e.realmId}:{result:await mt.#o(d,e,i),realm:e.realmId}}static realmDestroyed(e){return Array.from(this.#i.entries()).filter((([t,n])=>n===e.realmId)).map((([e,t])=>this.#i.delete(e)))}static async disown(e,t){if(mt.#i.get(t)===e.realmId){try{await e.cdpClient.Runtime.releaseObject({objectId:t})}catch(e){if(-32e3!==e.code||"Invalid remote object id"!==e.message)throw e}this.#i.delete(t)}}static async#d(e,t,n,s){const a=e.stackTrace?.callFrames.map((e=>({url:e.url,functionName:e.functionName,lineNumber:e.lineNumber-t,columnNumber:e.columnNumber}))),r=await this.serializeCdpObject(e.exception,n,s),i=await this.stringifyObject(e.exception,s);return{exception:r,columnNumber:e.columnNumber,lineNumber:e.lineNumber-t,stackTrace:{callFrames:a||[]},text:i||e.text}}static async#o(e,t,n){const s=e.result.webDriverValue;if(!e.result.objectId)return s;const a=e.result.objectId,r=s;return"root"===n?(r.handle=a,this.#i.set(a,t.realmId)):await t.cdpClient.Runtime.releaseObject({objectId:a}),r}static async scriptEvaluate(e,t,n,s){let a=await e.cdpClient.Runtime.evaluate({contextId:e.executionContextId,expression:t,awaitPromise:n,generateWebDriverValue:!0});return a.exceptionDetails?{exceptionDetails:await this.#d(a.exceptionDetails,this.#a,s,e),realm:e.realmId}:{result:await mt.#o(a,e,s),realm:e.realmId}}static async#c(e,t){if("handle"in e)return{objectId:e.handle};switch(e.type){case"undefined":return{unserializableValue:"undefined"};case"null":return{unserializableValue:"null"};case"string":return{value:e.value};case"number":return"NaN"===e.value?{unserializableValue:"NaN"}:"-0"===e.value?{unserializableValue:"-0"}:"+Infinity"===e.value?{unserializableValue:"+Infinity"}:"Infinity"===e.value?{unserializableValue:"Infinity"}:"-Infinity"===e.value?{unserializableValue:"-Infinity"}:{value:e.value};case"boolean":return{value:!!e.value};case"bigint":return{unserializableValue:`BigInt(${JSON.stringify(e.value)})`};case"date":return{unserializableValue:`new Date(Date.parse(${JSON.stringify(e.value)}))`};case"regexp":return{unserializableValue:`new RegExp(${JSON.stringify(e.value.pattern)}, ${JSON.stringify(e.value.flags)})`};case"map":{const n=await this.#l(e.value,t);return{objectId:(await t.cdpClient.Runtime.callFunctionOn({functionDeclaration:String((function(...e){const t=new Map;for(let n=0;n<e.length;n+=2)t.set(e[n],e[n+1]);return t})),awaitPromise:!1,arguments:n,returnByValue:!1,executionContextId:t.executionContextId})).result.objectId}}case"object":{const n=await this.#l(e.value,t);return{objectId:(await t.cdpClient.Runtime.callFunctionOn({functionDeclaration:String((function(...e){const t={};for(let n=0;n<e.length;n+=2){t[e[n]]=e[n+1]}return t})),awaitPromise:!1,arguments:n,returnByValue:!1,executionContextId:t.executionContextId})).result.objectId}}case"array":{const n=await mt.#u(e.value,t);return{objectId:(await t.cdpClient.Runtime.callFunctionOn({functionDeclaration:String((function(...e){return e})),awaitPromise:!1,arguments:n,returnByValue:!1,executionContextId:t.executionContextId})).result.objectId}}case"set":{const n=await this.#u(e.value,t);return{objectId:(await t.cdpClient.Runtime.callFunctionOn({functionDeclaration:String((function(...e){return new Set(e)})),awaitPromise:!1,arguments:n,returnByValue:!1,executionContextId:t.executionContextId})).result.objectId}}default:throw new Error(`Value ${JSON.stringify(e)} is not deserializable.`)}}static async#l(e,t){const n=[];for(let s of e){const e=s[0],a=s[1];let r,i;r="string"==typeof e?{value:e}:await this.#c(e,t),i=await this.#c(a,t),n.push(r),n.push(i)}return n}static async#u(e,t){const n=[];for(let s of e)n.push(await this.#c(s,t));return n}}class gt{static#p=new Map;static getTopLevelContexts(){return Array.from(gt.#p.values()).filter((e=>null===e.parentId))}static removeContext(e){gt.#p.delete(e)}static addContext(e){gt.#p.set(e.contextId,e),null!==e.parentId&&gt.getKnownContext(e.parentId).addChild(e)}static hasKnownContext(e){return gt.#p.has(e)}static findContext(e){return gt.#p.get(e)}static getKnownContext(e){const t=gt.findContext(e);if(void 0===t)throw new r(`Context ${e} not found`);return t}}var ft;!function(e){e.window="window"}(ft||(ft={}));class vt{static#h=new Map;static create(e,t,n,s,a,r,i,o){const c=new vt(e,t,n,s,a,r,i,o);return vt.#h.set(c.realmId,c),c}static findRealms(e={}){return Array.from(vt.#h.values()).filter((t=>(void 0===e.realmId||e.realmId===t.realmId)&&((void 0===e.browsingContextId||e.browsingContextId===t.browsingContextId)&&((void 0===e.executionContextId||e.executionContextId===t.executionContextId)&&((void 0===e.type||e.type===t.type)&&((void 0===e.sandbox||e.sandbox===t.#m)&&(void 0===e.cdpSessionId||e.cdpSessionId===t.#g)))))))}static getRealm(e){const t=vt.findRealms(e);if(t.length>1)throw Error(`Multiple realms found. Filter: ${JSON.stringify(e)}.`);if(t.length<1)throw new r(`Realm ${JSON.stringify(e)} not found`);return t[0]}static clearBrowsingContext(e){vt.findRealms({browsingContextId:e}).map((e=>e.delete()))}delete(){vt.#h.delete(this.realmId),mt.realmDestroyed(this)}#f;#v;#y;#b;#w;#m;#g;#_;constructor(e,t,n,s,a,r,i,o){this.#f=e,this.#v=t,this.#y=n,this.#m=r,this.#b=s,this.#w=a,this.#g=i,this.#_=o}toBiDi(){return{realm:this.realmId,origin:this.origin,type:this.type,context:this.browsingContextId,...void 0!==this.#m?{sandbox:this.#m}:{}}}get realmId(){return this.#f}get browsingContextId(){return this.#v}get executionContextId(){return this.#y}get origin(){return this.#b}get type(){return this.#w}get cdpClient(){return this.#_}async callFunction(e,t,n,s,a){const r=gt.getKnownContext(this.browsingContextId);return await r.awaitUnblocked(),{result:await mt.callFunction(this,e,t,n,s,a)}}async scriptEvaluate(e,t,n){const s=gt.getKnownContext(this.browsingContextId);return await s.awaitUnblocked(),{result:await mt.scriptEvaluate(this,e,t,n)}}async disown(e){await mt.disown(this,e)}async serializeCdpObject(e,t){return await mt.serializeCdpObject(e,t,this)}async stringifyObject(e,t){return mt.stringifyObject(e,this)}}class yt{#x;#_;#C;#g;constructor(e,t,n,s){this.#g=n,this.#C=s,this.#_=t,this.#x=e}static create(e,t,n,s){const a=new yt(e,t,n,s);return a.#S(),a}#S(){this.#I()}#I(){this.#T()}#T(){this.#_.Runtime.on("consoleAPICalled",(async e=>{const t=vt.getRealm({cdpSessionId:this.#g,executionContextId:e.executionContextId}),n=await Promise.all(e.args.map((async e=>t.serializeCdpObject(e,"none"))));await this.#C.sendMessage(new rt.LogEntryAddedEvent({level:yt.#k(e.type),source:{realm:e.executionContextId.toString(),context:this.#x},text:ht(n,!0),timestamp:Math.round(e.timestamp),stackTrace:yt.#O(e.stackTrace),type:"console",method:"warning"===e.type?"warn":e.type,args:n}))})),this.#_.Runtime.on("exceptionThrown",(async e=>{const t=(()=>{if(void 0!==e.exceptionDetails.executionContextId)return vt.getRealm({cdpSessionId:this.#g,executionContextId:e.exceptionDetails.executionContextId})})(),n=await(async()=>e.exceptionDetails.exception?void 0===t?JSON.stringify(e.exceptionDetails.exception):await t.stringifyObject(e.exceptionDetails.exception,t):e.exceptionDetails.text)();await this.#C.sendMessage(new rt.LogEntryAddedEvent({level:"error",source:{realm:t?.realmId??"UNKNOWN",context:t?.browsingContextId??"UNKNOWN"},text:n,timestamp:Math.round(e.timestamp),stackTrace:yt.#O(e.exceptionDetails.stackTrace),type:"javascript"}))}))}static#k(e){return["assert","error"].includes(e)?"error":["debug","trace"].includes(e)?"debug":["warn","warning"].includes(e)?"warning":"info"}static#O(e){const t=e?.callFrames.map((e=>({columnNumber:e.columnNumber,functionName:e.functionName,lineNumber:e.lineNumber,url:e.url})));return t?{callFrames:t}:void 0}}var bt=at.LoadEvent;class wt{#E={documentInitialized:new ct,targetUnblocked:new ct,Page:{navigatedWithinDocument:new ct,lifecycleEvent:{DOMContentLoaded:new ct,load:new ct}}};#x;#P;#D="about:blank";#N=null;#g;#_;#C;#R;#j=new Map;#M;get#A(){if(void 0===this.#M)throw new Error(`No default realm for browsing context ${this.#x}`);return this.#M}constructor(e,t,n,s,a,r){this.#x=e,this.#P=t,this.#_=n,this.#R=r,this.#g=a,this.#C=s,this.#L(),gt.addContext(this)}static async createFrameContext(e,t,n,s,a,r){const i=new wt(e,t,n,s,a,r);i.#E.targetUnblocked.resolve(),await r.sendEvent(new at.ContextCreatedEvent(i.serializeToBidiValue()),i.contextId)}static async createTargetContext(e,t,n,s,a,r){const i=new wt(e,t,n,s,a,r);i.#Z(),await r.sendEvent(new at.ContextCreatedEvent(i.serializeToBidiValue()),i.contextId)}convertFrameToTargetContext(e,t){this.#B(e,t),this.#Z()}async delete(){if(await this.#F(),null!==this.parentId){gt.getKnownContext(this.parentId).#j.delete(this.contextId)}await this.#R.sendEvent(new at.ContextDestroyedEvent(this.serializeToBidiValue()),this.contextId),gt.removeContext(this.contextId)}async#F(){await Promise.all(this.children.map((e=>e.delete())))}#B(e,t){this.#E.targetUnblocked.isFinished||this.#E.targetUnblocked.reject("OOPiF"),this.#E.targetUnblocked=new ct,this.#_=e,this.#g=t,this.#L()}async#Z(){yt.create(this.#x,this.#_,this.#g,this.#C),await this.#_.Runtime.enable(),await this.#_.Page.enable(),await this.#_.Page.setLifecycleEventsEnabled({enabled:!0}),await this.#_.Target.setAutoAttach({autoAttach:!0,waitForDebuggerOnStart:!0,flatten:!0}),await this.#_.Runtime.runIfWaitingForDebugger(),this.#E.targetUnblocked.resolve()}get contextId(){return this.#x}get parentId(){return this.#P}get cdpSessionId(){return this.#g}get children(){return Array.from(this.#j.values())}get url(){return this.#D}addChild(e){this.#j.set(e.contextId,e)}async awaitLoaded(){await this.#E.Page.lifecycleEvent.load}async awaitUnblocked(){await this.#E.targetUnblocked}serializeToBidiValue(e=0,t=!0){return{context:this.#x,url:this.url,children:e>0?this.children.map((t=>t.serializeToBidiValue(e-1,!1))):null,...t?{parent:this.#P}:{}}}#L(){this.#_.Target.on("targetInfoChanged",(e=>{this.contextId===e.targetInfo.targetId&&(this.#D=e.targetInfo.url)})),this.#_.Page.on("frameNavigated",(async e=>{this.contextId===e.frame.id&&(this.#D=e.frame.url+(e.frame.urlFragment??""),await this.#F(),vt.clearBrowsingContext(this.contextId))})),this.#_.Page.on("navigatedWithinDocument",(e=>{this.contextId===e.frameId&&(this.#D=e.url,this.#E.Page.navigatedWithinDocument.resolve(e))})),this.#_.Page.on("lifecycleEvent",(async e=>{if(this.contextId===e.frameId)if("init"===e.name&&(this.#z(e.loaderId),this.#E.documentInitialized.resolve()),"commit"!==e.name){if(e.loaderId===this.#N)switch(e.name){case"DOMContentLoaded":this.#E.Page.lifecycleEvent.DOMContentLoaded.resolve(e),await this.#R.sendEvent(new at.DomContentLoadedEvent({context:this.contextId,navigation:this.#N,url:this.#D}),this.contextId);break;case"load":this.#E.Page.lifecycleEvent.load.resolve(e),await this.#R.sendEvent(new bt({context:this.contextId,navigation:this.#N,url:this.#D}),this.contextId)}}else this.#N=e.loaderId})),this.#_.Runtime.on("executionContextCreated",(e=>{if(e.context.auxData.frameId!==this.contextId)return;if(!["default","isolated"].includes(e.context.auxData.type))return;const t=vt.create(e.context.uniqueId,this.contextId,e.context.id,this.#V(e),ft.window,"isolated"===e.context.auxData.type?e.context.name:void 0,this.#g,this.#_);e.context.auxData.isDefault&&(this.#M=t)})),this.#_.Runtime.on("executionContextDestroyed",(e=>{vt.findRealms({cdpSessionId:this.#g,executionContextId:e.executionContextId}).map((e=>e.delete()))}))}#V(e){return"isolated"===e.context.auxData.type?this.#A.origin:["://",""].includes(e.context.origin)?"null":e.context.origin}#z(e){this.#N!==e&&(this.#E.documentInitialized.isFinished||this.#E.documentInitialized.reject("Document changed"),this.#E.documentInitialized=new ct,this.#E.Page.navigatedWithinDocument.isFinished||this.#E.Page.navigatedWithinDocument.reject("Document changed"),this.#E.Page.navigatedWithinDocument=new ct,this.#E.Page.lifecycleEvent.DOMContentLoaded.isFinished||this.#E.Page.lifecycleEvent.DOMContentLoaded.reject("Document changed"),this.#E.Page.lifecycleEvent.DOMContentLoaded=new ct,this.#E.Page.lifecycleEvent.load.isFinished||this.#E.Page.lifecycleEvent.load.reject("Document changed"),this.#E.Page.lifecycleEvent.load=new ct,this.#N=e)}async navigate(e,t){await this.#E.targetUnblocked;const s=await this.#_.Page.navigate({url:e,frameId:this.contextId});if(s.errorText)throw new n(s.errorText);switch(void 0!==s.loaderId&&s.loaderId!==this.#N&&this.#z(s.loaderId),t){case"none":break;case"interactive":void 0===s.loaderId?await this.#E.Page.navigatedWithinDocument:await this.#E.Page.lifecycleEvent.DOMContentLoaded;break;case"complete":void 0===s.loaderId?await this.#E.Page.navigatedWithinDocument:await this.#E.Page.lifecycleEvent.load;break;default:throw new Error(`Not implemented wait '${t}'`)}return{result:{navigation:s.loaderId||null,url:e}}}async findElement(e){await this.#E.targetUnblocked;const t=String((e=>document.querySelector(e))),n=[{type:"string",value:e}];return await this.#A.callFunction(t,{type:"undefined"},n,!0,"root")}async getOrCreateSandbox(e){if(void 0===e||""===e)return this.#A;let t=vt.findRealms({browsingContextId:this.contextId,sandbox:e});if(0==t.length&&(await this.#_.Page.createIsolatedWorld({frameId:this.contextId,worldName:e}),t=vt.findRealms({browsingContextId:this.contextId,sandbox:e})),1!==t.length)throw Error(`Sandbox ${e} wasn't created.`);return t[0]}}const _t=e("context");class xt{sessions=new Set;#$;#U;#C;#R;constructor(e,t,n,s){this.#$=e,this.#U=t,this.#C=n,this.#R=s,this.#W(this.#$.browserClient())}#W(e){this.#K(e)}#K(e){e.Target.on("attachedToTarget",(async t=>{await this.#H(t,e)})),e.Target.on("detachedFromTarget",(async e=>{await xt.#J(e)}))}#q(e){if(this.sessions.has(e))return;this.sessions.add(e);const t=this.#$.getCdpClient(e);this.#K(t),t.on("event",(async(t,n)=>{await this.#R.sendEvent({method:"PROTO.cdp.eventReceived",params:{cdpMethod:t,cdpParams:n,cdpSession:e}},null)})),t.Page.on("frameAttached",(async n=>{await wt.createFrameContext(n.frameId,n.parentFrameId,t,this.#C,e,this.#R)}))}async#H(e,t){_t("AttachedToTarget event received: "+JSON.stringify(e));const{sessionId:n,targetInfo:s}=e;let a=this.#$.getCdpClient(n);if(!this.#G(s))return await a.Runtime.runIfWaitingForDebugger(),void await t.Target.detachFromTarget(e);this.#q(n),gt.hasKnownContext(s.targetId)?gt.getKnownContext(s.targetId).convertFrameToTargetContext(a,n):await wt.createTargetContext(s.targetId,null,a,this.#C,n,this.#R)}static async#J(e){const t=e.targetId;await(gt.findContext(t)?.delete())}async process_browsingContext_getTree(e){return{result:{contexts:(void 0===e.root?gt.getTopLevelContexts():[gt.getKnownContext(e.root)]).map((t=>t.serializeToBidiValue(e.maxDepth??Number.MAX_VALUE)))}}}async process_browsingContext_create(e){const t=this.#$.browserClient(),n=(await t.Target.createTarget({url:"about:blank",newWindow:"window"===e.type})).targetId,s=gt.getKnownContext(n);return await s.awaitLoaded(),{result:s.serializeToBidiValue(1)}}async process_browsingContext_navigate(e){const t=gt.getKnownContext(e.context);return await t.navigate(e.url,void 0!==e.wait?e.wait:"none")}static async#X(e){if("realm"in e)return vt.getRealm({realmId:e.realm});const t=gt.getKnownContext(e.context);return await t.getOrCreateSandbox(e.sandbox)}async process_script_evaluate(e){const t=await xt.#X(e.target);return await t.scriptEvaluate(e.expression,e.awaitPromise,e.resultOwnership??"none")}process_script_getRealms(e){void 0!==e.context&&gt.getKnownContext(e.context);return{result:{realms:vt.findRealms({browsingContextId:e.context,type:e.type}).map((e=>e.toBiDi()))}}}async process_script_callFunction(e){const t=await xt.#X(e.target);return await t.callFunction(e.functionDeclaration,e.this||{type:"undefined"},e.arguments||[],e.awaitPromise,e.resultOwnership??"none")}async process_script_disown(e){const t=await xt.#X(e.target);return await Promise.all(e.handles.map((async e=>await t.disown(e)))),{result:{}}}async process_PROTO_browsingContext_findElement(e){const t=gt.getKnownContext(e.context);return await t.findElement(e.selector)}async process_browsingContext_close(e){const t=this.#$.browserClient();if(null!==gt.getKnownContext(e.context).parentId)throw new a("Not a top-level browsing context cannot be closed.");const n=new Promise((async n=>{const s=a=>{a.targetId===e.context&&(t.Target.removeListener("detachedFromTarget",s),n())};t.Target.on("detachedFromTarget",s)}));return await this.#$.browserClient().Target.closeTarget({targetId:e.context}),await n,{result:{}}}#G(e){return e.targetId!==this.#U&&["page","iframe"].includes(e.type)}async process_PROTO_cdp_sendCommand(e){return{result:await this.#$.sendCommand(e.cdpMethod,e.cdpParams,e.cdpSession??null),cdpSession:e.cdpSession}}async process_PROTO_cdp_getSession(e){const t=e.context,n=gt.getKnownContext(t).cdpSessionId;return void 0===n?{result:{cdpSession:null}}:{result:{cdpSession:n}}}}class Ct{#Q;#C;#R;static run(e,t,n,s){new Ct(e,t,n,s).#Y()}constructor(e,t,n,s){this.#R=n,this.#C=t,this.#Q=new xt(e,s,t,n)}#Y(){this.#C.on("message",(e=>this.#ee(e)))}async#te(){return{result:{ready:!1,message:"already connected"}}}async#ne(e){return await this.#R.subscribe(e.events,e.contexts??null),{result:{}}}async#se(e){return await this.#R.unsubscribe(e.events,e.contexts??null),{result:{}}}async#ae(e){switch(e.method){case"session.status":return await this.#te();case"session.subscribe":return await this.#ne(ot.parseSubscribeParams(e.params));case"session.unsubscribe":return await this.#se(ot.parseSubscribeParams(e.params));case"browsingContext.create":return await this.#Q.process_browsingContext_create(at.parseCreateParams(e.params));case"browsingContext.close":return await this.#Q.process_browsingContext_close(at.parseCloseParams(e.params));case"browsingContext.getTree":return await this.#Q.process_browsingContext_getTree(at.parseGetTreeParams(e.params));case"browsingContext.navigate":return await this.#Q.process_browsingContext_navigate(at.parseNavigateParams(e.params));case"script.getRealms":return this.#Q.process_script_getRealms(st.parseGetRealmsParams(e.params));case"script.callFunction":return await this.#Q.process_script_callFunction(st.parseCallFunctionParams(e.params));case"script.evaluate":return await this.#Q.process_script_evaluate(st.parseEvaluateParams(e.params));case"script.disown":return await this.#Q.process_script_disown(st.parseDisownParams(e.params));case"PROTO.browsingContext.findElement":return await this.#Q.process_PROTO_browsingContext_findElement(at.PROTO.parseFindElementParams(e.params));case"PROTO.cdp.sendCommand":return await this.#Q.process_PROTO_cdp_sendCommand(it.PROTO.parseSendCommandParams(e.params));case"PROTO.cdp.getSession":return await this.#Q.process_PROTO_cdp_getSession(it.PROTO.parseGetSessionParams(e.params));default:throw new s(`Unknown command '${e.method}'.`)}}#ee=async e=>{try{const t=await this.#ae(e),n={id:e.id,...t};await this.#C.sendMessage(n)}catch(s){if(s instanceof t){const t=s;await this.#C.sendMessage(t.toErrorResponse(e.id))}else{const t=s;console.error(t),await this.#C.sendMessage(new n(t.message).toErrorResponse(e.id))}}}}function St(){}function It(){It.init.call(this)}function Tt(e){return void 0===e._maxListeners?It.defaultMaxListeners:e._maxListeners}function kt(e,t,n){if(t)e.call(n);else for(var s=e.length,a=Mt(e,s),r=0;r<s;++r)a[r].call(n)}function Ot(e,t,n,s){if(t)e.call(n,s);else for(var a=e.length,r=Mt(e,a),i=0;i<a;++i)r[i].call(n,s)}function Et(e,t,n,s,a){if(t)e.call(n,s,a);else for(var r=e.length,i=Mt(e,r),o=0;o<r;++o)i[o].call(n,s,a)}function Pt(e,t,n,s,a,r){if(t)e.call(n,s,a,r);else for(var i=e.length,o=Mt(e,i),c=0;c<i;++c)o[c].call(n,s,a,r)}function Dt(e,t,n,s){if(t)e.apply(n,s);else for(var a=e.length,r=Mt(e,a),i=0;i<a;++i)r[i].apply(n,s)}function Nt(e,t,n,s){var a,r,i,o;if("function"!=typeof n)throw new TypeError('"listener" argument must be a function');if((r=e._events)?(r.newListener&&(e.emit("newListener",t,n.listener?n.listener:n),r=e._events),i=r[t]):(r=e._events=new St,e._eventsCount=0),i){if("function"==typeof i?i=r[t]=s?[n,i]:[i,n]:s?i.unshift(n):i.push(n),!i.warned&&(a=Tt(e))&&a>0&&i.length>a){i.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+i.length+" "+t+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=e,c.type=t,c.count=i.length,o=c,"function"==typeof console.warn?console.warn(o):console.log(o)}}else i=r[t]=n,++e._eventsCount;return e}function Rt(e,t,n){var s=!1;function a(){e.removeListener(t,a),s||(s=!0,n.apply(e,arguments))}return a.listener=n,a}function jt(e){var t=this._events;if(t){var n=t[e];if("function"==typeof n)return 1;if(n)return n.length}return 0}function Mt(e,t){for(var n=new Array(t);t--;)n[t]=e[t];return n}St.prototype=Object.create(null),It.EventEmitter=It,It.usingDomains=!1,It.prototype.domain=void 0,It.prototype._events=void 0,It.prototype._maxListeners=void 0,It.defaultMaxListeners=10,It.init=function(){this.domain=null,It.usingDomains&&undefined.active,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new St,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},It.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=e,this},It.prototype.getMaxListeners=function(){return Tt(this)},It.prototype.emit=function(e){var t,n,s,a,r,i,o,c="error"===e;if(i=this._events)c=c&&null==i.error;else if(!c)return!1;if(o=this.domain,c){if(t=arguments[1],!o){if(t instanceof Error)throw t;var d=new Error('Uncaught, unspecified "error" event. ('+t+")");throw d.context=t,d}return t||(t=new Error('Uncaught, unspecified "error" event')),t.domainEmitter=this,t.domain=o,t.domainThrown=!1,o.emit("error",t),!1}if(!(n=i[e]))return!1;var l="function"==typeof n;switch(s=arguments.length){case 1:kt(n,l,this);break;case 2:Ot(n,l,this,arguments[1]);break;case 3:Et(n,l,this,arguments[1],arguments[2]);break;case 4:Pt(n,l,this,arguments[1],arguments[2],arguments[3]);break;default:for(a=new Array(s-1),r=1;r<s;r++)a[r-1]=arguments[r];Dt(n,l,this,a)}return!0},It.prototype.addListener=function(e,t){return Nt(this,e,t,!1)},It.prototype.on=It.prototype.addListener,It.prototype.prependListener=function(e,t){return Nt(this,e,t,!0)},It.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,Rt(this,e,t)),this},It.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,Rt(this,e,t)),this},It.prototype.removeListener=function(e,t){var n,s,a,r,i;if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');if(!(s=this._events))return this;if(!(n=s[e]))return this;if(n===t||n.listener&&n.listener===t)0==--this._eventsCount?this._events=new St:(delete s[e],s.removeListener&&this.emit("removeListener",e,n.listener||t));else if("function"!=typeof n){for(a=-1,r=n.length;r-- >0;)if(n[r]===t||n[r].listener&&n[r].listener===t){i=n[r].listener,a=r;break}if(a<0)return this;if(1===n.length){if(n[0]=void 0,0==--this._eventsCount)return this._events=new St,this;delete s[e]}else!function(e,t){for(var n=t,s=n+1,a=e.length;s<a;n+=1,s+=1)e[n]=e[s];e.pop()}(n,a);s.removeListener&&this.emit("removeListener",e,i||t)}return this},It.prototype.removeAllListeners=function(e){var t,n;if(!(n=this._events))return this;if(!n.removeListener)return 0===arguments.length?(this._events=new St,this._eventsCount=0):n[e]&&(0==--this._eventsCount?this._events=new St:delete n[e]),this;if(0===arguments.length){for(var s,a=Object.keys(n),r=0;r<a.length;++r)"removeListener"!==(s=a[r])&&this.removeAllListeners(s);return this.removeAllListeners("removeListener"),this._events=new St,this._eventsCount=0,this}if("function"==typeof(t=n[e]))this.removeListener(e,t);else if(t)do{this.removeListener(e,t[t.length-1])}while(t[0]);return this},It.prototype.listeners=function(e){var t,n=this._events;return n&&(t=n[e])?"function"==typeof t?[t.listener||t]:function(e){for(var t=new Array(e.length),n=0;n<t.length;++n)t[n]=e[n].listener||e[n];return t}(t):[]},It.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):jt.call(e,t)},It.prototype.listenerCount=jt,It.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};const At=[{domain:"Accessibility",commands:["disable","enable","getPartialAXTree","getFullAXTree","getRootAXNode","getAXNodeAndAncestors","getChildAXNodes","queryAXTree"]},{domain:"Animation",commands:["disable","enable","getCurrentTime","getPlaybackRate","releaseAnimations","resolveAnimation","seekAnimations","setPaused","setPlaybackRate","setTiming"]},{domain:"Audits",commands:["getEncodedResponse","disable","enable","checkContrast"]},{domain:"BackgroundService",commands:["startObserving","stopObserving","setRecording","clearEvents"]},{domain:"Browser",commands:["setPermission","grantPermissions","resetPermissions","setDownloadBehavior","cancelDownload","close","crash","crashGpuProcess","getVersion","getBrowserCommandLine","getHistograms","getHistogram","getWindowBounds","getWindowForTarget","setWindowBounds","setDockTile","executeBrowserCommand"]},{domain:"CSS",commands:["addRule","collectClassNames","createStyleSheet","disable","enable","forcePseudoState","getBackgroundColors","getComputedStyleForNode","getInlineStylesForNode","getMatchedStylesForNode","getMediaQueries","getPlatformFontsForNode","getStyleSheetText","getLayersForNode","trackComputedStyleUpdates","takeComputedStyleUpdates","setEffectivePropertyValueForNode","setKeyframeKey","setMediaText","setContainerQueryText","setSupportsText","setRuleSelector","setStyleSheetText","setStyleTexts","startRuleUsageTracking","stopRuleUsageTracking","takeCoverageDelta","setLocalFontsEnabled"]},{domain:"CacheStorage",commands:["deleteCache","deleteEntry","requestCacheNames","requestCachedResponse","requestEntries"]},{domain:"Cast",commands:["enable","disable","setSinkToUse","startDesktopMirroring","startTabMirroring","stopCasting"]},{domain:"DOM",commands:["collectClassNamesFromSubtree","copyTo","describeNode","scrollIntoViewIfNeeded","disable","discardSearchResults","enable","focus","getAttributes","getBoxModel","getContentQuads","getDocument","getFlattenedDocument","getNodesForSubtreeByStyle","getNodeForLocation","getOuterHTML","getRelayoutBoundary","getSearchResults","hideHighlight","highlightNode","highlightRect","markUndoableState","moveTo","performSearch","pushNodeByPathToFrontend","pushNodesByBackendIdsToFrontend","querySelector","querySelectorAll","redo","removeAttribute","removeNode","requestChildNodes","requestNode","resolveNode","setAttributeValue","setAttributesAsText","setFileInputFiles","setNodeStackTracesEnabled","getNodeStackTraces","getFileInfo","setInspectedNode","setNodeName","setNodeValue","setOuterHTML","undo","getFrameOwner","getContainerForNode","getQueryingDescendantsForContainer"]},{domain:"DOMDebugger",commands:["getEventListeners","removeDOMBreakpoint","removeEventListenerBreakpoint","removeInstrumentationBreakpoint","removeXHRBreakpoint","setBreakOnCSPViolation","setDOMBreakpoint","setEventListenerBreakpoint","setInstrumentationBreakpoint","setXHRBreakpoint"]},{domain:"EventBreakpoints",commands:["setInstrumentationBreakpoint","removeInstrumentationBreakpoint"]},{domain:"DOMSnapshot",commands:["disable","enable","getSnapshot","captureSnapshot"]},{domain:"DOMStorage",commands:["clear","disable","enable","getDOMStorageItems","removeDOMStorageItem","setDOMStorageItem"]},{domain:"Database",commands:["disable","enable","executeSQL","getDatabaseTableNames"]},{domain:"DeviceOrientation",commands:["clearDeviceOrientationOverride","setDeviceOrientationOverride"]},{domain:"Emulation",commands:["canEmulate","clearDeviceMetricsOverride","clearGeolocationOverride","resetPageScaleFactor","setFocusEmulationEnabled","setAutoDarkModeOverride","setCPUThrottlingRate","setDefaultBackgroundColorOverride","setDeviceMetricsOverride","setScrollbarsHidden","setDocumentCookieDisabled","setEmitTouchEventsForMouse","setEmulatedMedia","setEmulatedVisionDeficiency","setGeolocationOverride","setIdleOverride","clearIdleOverride","setNavigatorOverrides","setPageScaleFactor","setScriptExecutionDisabled","setTouchEmulationEnabled","setVirtualTimePolicy","setLocaleOverride","setTimezoneOverride","setVisibleSize","setDisabledImageTypes","setHardwareConcurrencyOverride","setUserAgentOverride","setAutomationOverride"]},{domain:"HeadlessExperimental",commands:["beginFrame","disable","enable"]},{domain:"IO",commands:["close","read","resolveBlob"]},{domain:"IndexedDB",commands:["clearObjectStore","deleteDatabase","deleteObjectStoreEntries","disable","enable","requestData","getMetadata","requestDatabase","requestDatabaseNames"]},{domain:"Input",commands:["dispatchDragEvent","dispatchKeyEvent","insertText","imeSetComposition","dispatchMouseEvent","dispatchTouchEvent","emulateTouchFromMouseEvent","setIgnoreInputEvents","setInterceptDrags","synthesizePinchGesture","synthesizeScrollGesture","synthesizeTapGesture"]},{domain:"Inspector",commands:["disable","enable"]},{domain:"LayerTree",commands:["compositingReasons","disable","enable","loadSnapshot","makeSnapshot","profileSnapshot","releaseSnapshot","replaySnapshot","snapshotCommandLog"]},{domain:"Log",commands:["clear","disable","enable","startViolationsReport","stopViolationsReport"]},{domain:"Memory",commands:["getDOMCounters","prepareForLeakDetection","forciblyPurgeJavaScriptMemory","setPressureNotificationsSuppressed","simulatePressureNotification","startSampling","stopSampling","getAllTimeSamplingProfile","getBrowserSamplingProfile","getSamplingProfile"]},{domain:"Network",commands:["setAcceptedEncodings","clearAcceptedEncodingsOverride","canClearBrowserCache","canClearBrowserCookies","canEmulateNetworkConditions","clearBrowserCache","clearBrowserCookies","continueInterceptedRequest","deleteCookies","disable","emulateNetworkConditions","enable","getAllCookies","getCertificate","getCookies","getResponseBody","getRequestPostData","getResponseBodyForInterception","takeResponseBodyForInterceptionAsStream","replayXHR","searchInResponseBody","setBlockedURLs","setBypassServiceWorker","setCacheDisabled","setCookie","setCookies","setExtraHTTPHeaders","setAttachDebugStack","setRequestInterception","setUserAgentOverride","getSecurityIsolationStatus","enableReportingApi","loadNetworkResource"]},{domain:"Overlay",commands:["disable","enable","getHighlightObjectForTest","getGridHighlightObjectsForTest","getSourceOrderHighlightObjectForTest","hideHighlight","highlightFrame","highlightNode","highlightQuad","highlightRect","highlightSourceOrder","setInspectMode","setShowAdHighlights","setPausedInDebuggerMessage","setShowDebugBorders","setShowFPSCounter","setShowGridOverlays","setShowFlexOverlays","setShowScrollSnapOverlays","setShowContainerQueryOverlays","setShowPaintRects","setShowLayoutShiftRegions","setShowScrollBottleneckRects","setShowHitTestBorders","setShowWebVitals","setShowViewportSizeOnResize","setShowHinge","setShowIsolatedElements"]},{domain:"Page",commands:["addScriptToEvaluateOnLoad","addScriptToEvaluateOnNewDocument","bringToFront","captureScreenshot","captureSnapshot","clearDeviceMetricsOverride","clearDeviceOrientationOverride","clearGeolocationOverride","createIsolatedWorld","deleteCookie","disable","enable","getAppManifest","getInstallabilityErrors","getManifestIcons","getAppId","getCookies","getFrameTree","getLayoutMetrics","getNavigationHistory","resetNavigationHistory","getResourceContent","getResourceTree","handleJavaScriptDialog","navigate","navigateToHistoryEntry","printToPDF","reload","removeScriptToEvaluateOnLoad","removeScriptToEvaluateOnNewDocument","screencastFrameAck","searchInResource","setAdBlockingEnabled","setBypassCSP","getPermissionsPolicyState","getOriginTrials","setDeviceMetricsOverride","setDeviceOrientationOverride","setFontFamilies","setFontSizes","setDocumentContent","setDownloadBehavior","setGeolocationOverride","setLifecycleEventsEnabled","setTouchEmulationEnabled","startScreencast","stopLoading","crash","close","setWebLifecycleState","stopScreencast","produceCompilationCache","addCompilationCache","clearCompilationCache","setSPCTransactionMode","generateTestReport","waitForDebugger","setInterceptFileChooserDialog"]},{domain:"Performance",commands:["disable","enable","setTimeDomain","getMetrics"]},{domain:"PerformanceTimeline",commands:["enable"]},{domain:"Security",commands:["disable","enable","setIgnoreCertificateErrors","handleCertificateError","setOverrideCertificateErrors"]},{domain:"ServiceWorker",commands:["deliverPushMessage","disable","dispatchSyncEvent","dispatchPeriodicSyncEvent","enable","inspectWorker","setForceUpdateOnPageLoad","skipWaiting","startWorker","stopAllWorkers","stopWorker","unregister","updateRegistration"]},{domain:"Storage",commands:["getStorageKeyForFrame","clearDataForOrigin","getCookies","setCookies","clearCookies","getUsageAndQuota","overrideQuotaForOrigin","trackCacheStorageForOrigin","trackIndexedDBForOrigin","untrackCacheStorageForOrigin","untrackIndexedDBForOrigin","getTrustTokens","clearTrustTokens","getInterestGroupDetails","setInterestGroupTracking"]},{domain:"SystemInfo",commands:["getInfo","getProcessInfo"]},{domain:"Target",commands:["activateTarget","attachToTarget","attachToBrowserTarget","closeTarget","exposeDevToolsProtocol","createBrowserContext","getBrowserContexts","createTarget","detachFromTarget","disposeBrowserContext","getTargetInfo","getTargets","sendMessageToTarget","setAutoAttach","autoAttachRelated","setDiscoverTargets","setRemoteLocations"]},{domain:"Tethering",commands:["bind","unbind"]},{domain:"Tracing",commands:["end","getCategories","recordClockSyncMarker","requestMemoryDump","start"]},{domain:"Fetch",commands:["disable","enable","failRequest","fulfillRequest","continueRequest","continueWithAuth","continueResponse","getResponseBody","takeResponseBodyAsStream"]},{domain:"WebAudio",commands:["enable","disable","getRealtimeData"]},{domain:"WebAuthn",commands:["enable","disable","addVirtualAuthenticator","removeVirtualAuthenticator","addCredential","getCredential","getCredentials","removeCredential","clearCredentials","setUserVerified","setAutomaticPresenceSimulation"]},{domain:"Media",commands:["enable","disable"]},{domain:"Console",commands:["clearMessages","disable","enable"]},{domain:"Debugger",commands:["continueToLocation","disable","enable","evaluateOnCallFrame","getPossibleBreakpoints","getScriptSource","getWasmBytecode","getStackTrace","pause","pauseOnAsyncCall","removeBreakpoint","restartFrame","resume","searchInContent","setAsyncCallStackDepth","setBlackboxPatterns","setBlackboxedRanges","setBreakpoint","setInstrumentationBreakpoint","setBreakpointByUrl","setBreakpointOnFunctionCall","setBreakpointsActive","setPauseOnExceptions","setReturnValue","setScriptSource","setSkipAllPauses","setVariableValue","stepInto","stepOut","stepOver"]},{domain:"HeapProfiler",commands:["addInspectedHeapObject","collectGarbage","disable","enable","getHeapObjectId","getObjectByHeapObjectId","getSamplingProfile","startSampling","startTrackingHeapObjects","stopSampling","stopTrackingHeapObjects","takeHeapSnapshot"]},{domain:"Profiler",commands:["disable","enable","getBestEffortCoverage","setSamplingInterval","start","startPreciseCoverage","startTypeProfile","stop","stopPreciseCoverage","stopTypeProfile","takePreciseCoverage","takeTypeProfile"]},{domain:"Runtime",commands:["awaitPromise","callFunctionOn","compileScript","disable","discardConsoleEntries","enable","evaluate","getIsolateId","getHeapUsage","getProperties","globalLexicalScopeNames","queryObjects","releaseObject","releaseObjectGroup","runIfWaitingForDebugger","runScript","setAsyncCallStackDepth","setCustomObjectFormatterEnabled","setMaxCallStackSizeToCapture","terminateExecution","addBinding","removeBinding","getExceptionDetails"]},{domain:"Schema",commands:["getDomains"]}],Lt=new Map;class Zt extends It{_client;constructor(e){super(),this._client=e}}for(let e of At){class t extends Zt{constructor(e){super(e)}}for(let n of e.commands)Object.defineProperty(t.prototype,n,{value:async function(t){return await this._client.sendCommand(`${e.domain}.${n}`,t)}});Lt.set(e.domain,t)}class Bt extends It{_cdpConnection;_sessionId;_domains;constructor(e,t){super(),this._cdpConnection=e,this._sessionId=t,this._domains=new Map;for(const[e,t]of Lt.entries())this._domains.set(e,new t(this)),Object.defineProperty(this,e,{get(){return this._domains.get(e)}})}sendCommand(e,t){return this._cdpConnection.sendCommand(e,t,this._sessionId)}_onCdpEvent(e,t){this.emit("event",e,t);const[n,s]=e.split("."),a=this._domains.get(n);a&&a.emit(s,t)}}function Ft(e,t){return new Bt(e,t)}const zt=e("cdp");class Vt{_transport;_browserCdpClient;_sessionCdpClients=new Map;_commandCallbacks=new Map;_nextId;constructor(e){this._transport=e,this._nextId=0,this._transport.setOnMessage(this._onMessage),this._browserCdpClient=Ft(this,null)}close(){this._transport.close();for(const[e,{reject:t}]of this._commandCallbacks)t(new Error("Disconnected"));this._commandCallbacks.clear(),this._sessionCdpClients.clear()}browserClient(){return this._browserCdpClient}getCdpClient(e){const t=this._sessionCdpClients.get(e);if(!t)throw new Error("Unknown CDP session ID");return t}sendCommand(e,t,n){return new Promise(((s,a)=>{const r=this._nextId++;this._commandCallbacks.set(r,{resolve:s,reject:a});let i={id:r,method:e,params:t};n&&(i.sessionId=n);const o=JSON.stringify(i);this._transport.sendMessage(o),zt("sent > "+o)}))}_onMessage=async e=>{zt("received < "+e);const t=JSON.parse(e);if("Target.attachedToTarget"===t.method){const{sessionId:e}=t.params;this._sessionCdpClients.set(e,Ft(this,e))}else if("Target.detachedFromTarget"===t.method){const{sessionId:e}=t.params;this._sessionCdpClients.get(e)&&this._sessionCdpClients.delete(e)}if(void 0!==t.id){const e=this._commandCallbacks.get(t.id);e&&(t.result?e.resolve(t.result):t.error&&e.reject(t.error))}else if(t.method){const e=t.sessionId?this._sessionCdpClients.get(t.sessionId):this._browserCdpClient;e&&e._onCdpEvent(t.method,t.params||{})}}}const $t=e("bidi");class Ut extends It{_transport;constructor(e){super(),this._transport=e,this._transport.setOnMessage(this._onBidiMessage)}async sendMessage(e){const t=JSON.stringify(e);$t("sent > "+t),this._transport.sendMessage(t)}close(){this._transport.close()}_onBidiMessage=async e=>{let t;$t("received < "+e);try{t=this._parseBidiMessage(e)}catch(t){return void this._respondWithError(e,"invalid argument",t.message)}this.emit("message",t)};_respondWithError(e,t,n){const s=this._getErrorResponse(e,t,n);this.sendMessage(s)}_getJsonType(e){return null===e?"null":Array.isArray(e)?"array":typeof e}_getErrorResponse(e,t,n){let s;try{const t=JSON.parse(e);"object"===this._getJsonType(t)&&"id"in t&&(s=t.id)}catch{}return{id:s,error:t,message:n}}_parseBidiMessage(e){let t;try{t=JSON.parse(e)}catch{throw new Error("Cannot parse data as JSON")}const n=this._getJsonType(t);if("object"!==n)throw new Error(`Expected JSON object but got ${n}`);const{id:s,method:a,params:r}=t,i=this._getJsonType(s);if("number"!==i||!Number.isInteger(s)||s<0)throw new Error(`Expected unsigned integer but got ${i}`);const o=this._getJsonType(a);if("string"!==o)throw new Error(`Expected string method but got ${o}`);const c=this._getJsonType(r);if("object"!==c)throw new Error(`Expected object params but got ${c}`);return{id:s,method:a,params:r}}}class Wt{#re=new Map;#C;constructor(e){this.#C=e}async sendEvent(e,t){(this.#ie(e.method,null)||null!==t&&this.#ie(e.method,t))&&await this.#C.sendMessage(e)}#ie(e,t){return this.#re.has(t)&&this.#re.get(t).has(e)}async subscribe(e,t){for(let n of e)if(null===t)this.#oe(n,null);else for(let e of t)this.#oe(n,e)}#oe(e,t){this.#re.has(t)||this.#re.set(t,new Set),this.#re.get(t).add(e)}async unsubscribe(e,t){for(let n of e)if(null===t)this.#ce(n,null);else for(let e of t)this.#ce(n,e)}#ce(e,t){const n=this.#re.get(t);n?.delete(e),0===n?.size&&this.#re.delete(t)}}
+!function(){"use strict";function e(e){return(...t)=>{if(globalThis.document?.documentElement){console.log(e,...t);const n=function(e){const t=e+"_log",n=document.getElementById(t);if(n)return n;const s=document.createElement("div");return s.id=t,s.innerHTML=`<h3>${e}:</h3>`,document.body.appendChild(s),s}(e),s=document.createElement("pre");s.textContent=t.join(", "),n.appendChild(s)}}}class t{constructor(e,t,n){this.error=e,this.message=t,this.stacktrace=n}error;message;stacktrace;toErrorResponse(e){return{id:e,error:this.error,message:this.message,stacktrace:this.stacktrace}}}class n extends t{constructor(e,t){super("unknown error",e,t)}}class s extends t{constructor(e,t){super("unknown command",e,t)}}class a extends t{constructor(e,t){super("invalid argument",e,t)}}class r extends t{constructor(e){super("no such frame",e)}}class i{method;params;constructor(e,t){this.method=e,this.params=t}}var o;!function(e){e.assertEqual=e=>e,e.assertIs=function(e){},e.assertNever=function(e){throw new Error},e.arrayToEnum=e=>{const t={};for(const n of e)t[n]=n;return t},e.getValidEnumValues=t=>{const n=e.objectKeys(t).filter((e=>"number"!=typeof t[t[e]])),s={};for(const e of n)s[e]=t[e];return e.objectValues(s)},e.objectValues=t=>e.objectKeys(t).map((function(e){return t[e]})),e.objectKeys="function"==typeof Object.keys?e=>Object.keys(e):e=>{const t=[];for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t},e.find=(e,t)=>{for(const n of e)if(t(n))return n},e.isInteger="function"==typeof Number.isInteger?e=>Number.isInteger(e):e=>"number"==typeof e&&isFinite(e)&&Math.floor(e)===e,e.joinValues=function(e,t=" | "){return e.map((e=>"string"==typeof e?`'${e}'`:e)).join(t)},e.jsonStringifyReplacer=(e,t)=>"bigint"==typeof t?t.toString():t}(o||(o={}));const c=o.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),d=e=>{switch(typeof e){case"undefined":return c.undefined;case"string":return c.string;case"number":return isNaN(e)?c.nan:c.number;case"boolean":return c.boolean;case"function":return c.function;case"bigint":return c.bigint;case"object":return Array.isArray(e)?c.array:null===e?c.null:e.then&&"function"==typeof e.then&&e.catch&&"function"==typeof e.catch?c.promise:"undefined"!=typeof Map&&e instanceof Map?c.map:"undefined"!=typeof Set&&e instanceof Set?c.set:"undefined"!=typeof Date&&e instanceof Date?c.date:c.object;default:return c.unknown}},l=o.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of"]);class u extends Error{constructor(e){super(),this.issues=[],this.addIssue=e=>{this.issues=[...this.issues,e]},this.addIssues=(e=[])=>{this.issues=[...this.issues,...e]};const t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name="ZodError",this.issues=e}get errors(){return this.issues}format(e){const t=e||function(e){return e.message},n={_errors:[]},s=e=>{for(const a of e.issues)if("invalid_union"===a.code)a.unionErrors.map(s);else if("invalid_return_type"===a.code)s(a.returnTypeError);else if("invalid_arguments"===a.code)s(a.argumentsError);else if(0===a.path.length)n._errors.push(t(a));else{let e=n,s=0;for(;s<a.path.length;){const n=a.path[s];s===a.path.length-1?(e[n]=e[n]||{_errors:[]},e[n]._errors.push(t(a))):e[n]=e[n]||{_errors:[]},e=e[n],s++}}};return s(this),n}toString(){return this.message}get message(){return JSON.stringify(this.issues,o.jsonStringifyReplacer,2)}get isEmpty(){return 0===this.issues.length}flatten(e=(e=>e.message)){const t={},n=[];for(const s of this.issues)s.path.length>0?(t[s.path[0]]=t[s.path[0]]||[],t[s.path[0]].push(e(s))):n.push(e(s));return{formErrors:n,fieldErrors:t}}get formErrors(){return this.flatten()}}u.create=e=>new u(e);const p=(e,t)=>{let n;switch(e.code){case l.invalid_type:n=e.received===c.undefined?"Required":`Expected ${e.expected}, received ${e.received}`;break;case l.invalid_literal:n=`Invalid literal value, expected ${JSON.stringify(e.expected,o.jsonStringifyReplacer)}`;break;case l.unrecognized_keys:n=`Unrecognized key(s) in object: ${o.joinValues(e.keys,", ")}`;break;case l.invalid_union:n="Invalid input";break;case l.invalid_union_discriminator:n=`Invalid discriminator value. Expected ${o.joinValues(e.options)}`;break;case l.invalid_enum_value:n=`Invalid enum value. Expected ${o.joinValues(e.options)}, received '${e.received}'`;break;case l.invalid_arguments:n="Invalid function arguments";break;case l.invalid_return_type:n="Invalid function return type";break;case l.invalid_date:n="Invalid date";break;case l.invalid_string:"object"==typeof e.validation?"startsWith"in e.validation?n=`Invalid input: must start with "${e.validation.startsWith}"`:"endsWith"in e.validation?n=`Invalid input: must end with "${e.validation.endsWith}"`:o.assertNever(e.validation):n="regex"!==e.validation?`Invalid ${e.validation}`:"Invalid";break;case l.too_small:n="array"===e.type?`Array must contain ${e.inclusive?"at least":"more than"} ${e.minimum} element(s)`:"string"===e.type?`String must contain ${e.inclusive?"at least":"over"} ${e.minimum} character(s)`:"number"===e.type?`Number must be greater than ${e.inclusive?"or equal to ":""}${e.minimum}`:"date"===e.type?`Date must be greater than ${e.inclusive?"or equal to ":""}${new Date(e.minimum)}`:"Invalid input";break;case l.too_big:n="array"===e.type?`Array must contain ${e.inclusive?"at most":"less than"} ${e.maximum} element(s)`:"string"===e.type?`String must contain ${e.inclusive?"at most":"under"} ${e.maximum} character(s)`:"number"===e.type?`Number must be less than ${e.inclusive?"or equal to ":""}${e.maximum}`:"date"===e.type?`Date must be smaller than ${e.inclusive?"or equal to ":""}${new Date(e.maximum)}`:"Invalid input";break;case l.custom:n="Invalid input";break;case l.invalid_intersection_types:n="Intersection results could not be merged";break;case l.not_multiple_of:n=`Number must be a multiple of ${e.multipleOf}`;break;default:n=t.defaultError,o.assertNever(e)}return{message:n}};let h=p;function m(){return h}const g=e=>{const{data:t,path:n,errorMaps:s,issueData:a}=e,r=[...n,...a.path||[]],i={...a,path:r};let o="";const c=s.filter((e=>!!e)).slice().reverse();for(const e of c)o=e(i,{data:t,defaultError:o}).message;return{...a,path:r,message:a.message||o}};function f(e,t){const n=g({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,m(),p].filter((e=>!!e))});e.common.issues.push(n)}class v{constructor(){this.value="valid"}dirty(){"valid"===this.value&&(this.value="dirty")}abort(){"aborted"!==this.value&&(this.value="aborted")}static mergeArray(e,t){const n=[];for(const s of t){if("aborted"===s.status)return y;"dirty"===s.status&&e.dirty(),n.push(s.value)}return{status:e.value,value:n}}static async mergeObjectAsync(e,t){const n=[];for(const e of t)n.push({key:await e.key,value:await e.value});return v.mergeObjectSync(e,n)}static mergeObjectSync(e,t){const n={};for(const s of t){const{key:t,value:a}=s;if("aborted"===t.status)return y;if("aborted"===a.status)return y;"dirty"===t.status&&e.dirty(),"dirty"===a.status&&e.dirty(),(void 0!==a.value||s.alwaysSet)&&(n[t.value]=a.value)}return{status:e.value,value:n}}}const y=Object.freeze({status:"aborted"}),b=e=>({status:"valid",value:e}),w=e=>"aborted"===e.status,_=e=>"dirty"===e.status,x=e=>"valid"===e.status,C=e=>void 0!==typeof Promise&&e instanceof Promise;var I;!function(e){e.errToObj=e=>"string"==typeof e?{message:e}:e||{},e.toString=e=>"string"==typeof e?e:null==e?void 0:e.message}(I||(I={}));class S{constructor(e,t,n,s){this.parent=e,this.data=t,this._path=n,this._key=s}get path(){return this._path.concat(this._key)}}const T=(e,t)=>{if(x(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,error:new u(e.common.issues)}};function k(e){if(!e)return{};const{errorMap:t,invalid_type_error:n,required_error:s,description:a}=e;if(t&&(n||s))throw new Error('Can\'t use "invalid_type_error" or "required_error" in conjunction with custom error map.');if(t)return{errorMap:t,description:a};return{errorMap:(e,t)=>"invalid_type"!==e.code?{message:t.defaultError}:void 0===t.data?{message:null!=s?s:t.defaultError}:{message:null!=n?n:t.defaultError},description:a}}class E{constructor(e){this.spa=this.safeParseAsync,this.superRefine=this._refinement,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.default=this.default.bind(this),this.describe=this.describe.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this)}get description(){return this._def.description}_getType(e){return d(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:d(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new v,ctx:{common:e.parent.common,data:e.data,parsedType:d(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){const t=this._parse(e);if(C(t))throw new Error("Synchronous parse encountered promise.");return t}_parseAsync(e){const t=this._parse(e);return Promise.resolve(t)}parse(e,t){const n=this.safeParse(e,t);if(n.success)return n.data;throw n.error}safeParse(e,t){var n;const s={common:{issues:[],async:null!==(n=null==t?void 0:t.async)&&void 0!==n&&n,contextualErrorMap:null==t?void 0:t.errorMap},path:(null==t?void 0:t.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:d(e)},a=this._parseSync({data:e,path:s.path,parent:s});return T(s,a)}async parseAsync(e,t){const n=await this.safeParseAsync(e,t);if(n.success)return n.data;throw n.error}async safeParseAsync(e,t){const n={common:{issues:[],contextualErrorMap:null==t?void 0:t.errorMap,async:!0},path:(null==t?void 0:t.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:d(e)},s=this._parse({data:e,path:[],parent:n}),a=await(C(s)?s:Promise.resolve(s));return T(n,a)}refine(e,t){const n=e=>"string"==typeof t||void 0===t?{message:t}:"function"==typeof t?t(e):t;return this._refinement(((t,s)=>{const a=e(t),r=()=>s.addIssue({code:l.custom,...n(t)});return"undefined"!=typeof Promise&&a instanceof Promise?a.then((e=>!!e||(r(),!1))):!!a||(r(),!1)}))}refinement(e,t){return this._refinement(((n,s)=>!!e(n)||(s.addIssue("function"==typeof t?t(n,s):t),!1)))}_refinement(e){return new le({schema:this,typeName:be.ZodEffects,effect:{type:"refinement",refinement:e}})}optional(){return ue.create(this)}nullable(){return pe.create(this)}nullish(){return this.optional().nullable()}array(){return $.create(this)}promise(){return de.create(this)}or(e){return q.create([this,e])}and(e){return Q.create(this,e)}transform(e){return new le({schema:this,typeName:be.ZodEffects,effect:{type:"transform",transform:e}})}default(e){return new he({innerType:this,defaultValue:"function"==typeof e?e:()=>e,typeName:be.ZodDefault})}brand(){return new fe({typeName:be.ZodBranded,type:this,...k(void 0)})}describe(e){return new(0,this.constructor)({...this._def,description:e})}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}const O=/^c[^\s-]{8,}$/i,P=/^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i,D=/^(([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;class N extends E{constructor(){super(...arguments),this._regex=(e,t,n)=>this.refinement((t=>e.test(t)),{validation:t,code:l.invalid_string,...I.errToObj(n)}),this.nonempty=e=>this.min(1,I.errToObj(e)),this.trim=()=>new N({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}_parse(e){if(this._getType(e)!==c.string){const t=this._getOrReturnCtx(e);return f(t,{code:l.invalid_type,expected:c.string,received:t.parsedType}),y}const t=new v;let n;for(const s of this._def.checks)if("min"===s.kind)e.data.length<s.value&&(n=this._getOrReturnCtx(e,n),f(n,{code:l.too_small,minimum:s.value,type:"string",inclusive:!0,message:s.message}),t.dirty());else if("max"===s.kind)e.data.length>s.value&&(n=this._getOrReturnCtx(e,n),f(n,{code:l.too_big,maximum:s.value,type:"string",inclusive:!0,message:s.message}),t.dirty());else if("email"===s.kind)D.test(e.data)||(n=this._getOrReturnCtx(e,n),f(n,{validation:"email",code:l.invalid_string,message:s.message}),t.dirty());else if("uuid"===s.kind)P.test(e.data)||(n=this._getOrReturnCtx(e,n),f(n,{validation:"uuid",code:l.invalid_string,message:s.message}),t.dirty());else if("cuid"===s.kind)O.test(e.data)||(n=this._getOrReturnCtx(e,n),f(n,{validation:"cuid",code:l.invalid_string,message:s.message}),t.dirty());else if("url"===s.kind)try{new URL(e.data)}catch(a){n=this._getOrReturnCtx(e,n),f(n,{validation:"url",code:l.invalid_string,message:s.message}),t.dirty()}else if("regex"===s.kind){s.regex.lastIndex=0;s.regex.test(e.data)||(n=this._getOrReturnCtx(e,n),f(n,{validation:"regex",code:l.invalid_string,message:s.message}),t.dirty())}else"trim"===s.kind?e.data=e.data.trim():"startsWith"===s.kind?e.data.startsWith(s.value)||(n=this._getOrReturnCtx(e,n),f(n,{code:l.invalid_string,validation:{startsWith:s.value},message:s.message}),t.dirty()):"endsWith"===s.kind?e.data.endsWith(s.value)||(n=this._getOrReturnCtx(e,n),f(n,{code:l.invalid_string,validation:{endsWith:s.value},message:s.message}),t.dirty()):o.assertNever(s);return{status:t.value,value:e.data}}_addCheck(e){return new N({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...I.errToObj(e)})}url(e){return this._addCheck({kind:"url",...I.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...I.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...I.errToObj(e)})}regex(e,t){return this._addCheck({kind:"regex",regex:e,...I.errToObj(t)})}startsWith(e,t){return this._addCheck({kind:"startsWith",value:e,...I.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:"endsWith",value:e,...I.errToObj(t)})}min(e,t){return this._addCheck({kind:"min",value:e,...I.errToObj(t)})}max(e,t){return this._addCheck({kind:"max",value:e,...I.errToObj(t)})}length(e,t){return this.min(e,t).max(e,t)}get isEmail(){return!!this._def.checks.find((e=>"email"===e.kind))}get isURL(){return!!this._def.checks.find((e=>"url"===e.kind))}get isUUID(){return!!this._def.checks.find((e=>"uuid"===e.kind))}get isCUID(){return!!this._def.checks.find((e=>"cuid"===e.kind))}get minLength(){let e=null;for(const t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(const t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return e}}function M(e,t){const n=(e.toString().split(".")[1]||"").length,s=(t.toString().split(".")[1]||"").length,a=n>s?n:s;return parseInt(e.toFixed(a).replace(".",""))%parseInt(t.toFixed(a).replace(".",""))/Math.pow(10,a)}N.create=e=>new N({checks:[],typeName:be.ZodString,...k(e)});class j extends E{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._getType(e)!==c.number){const t=this._getOrReturnCtx(e);return f(t,{code:l.invalid_type,expected:c.number,received:t.parsedType}),y}let t;const n=new v;for(const s of this._def.checks)if("int"===s.kind)o.isInteger(e.data)||(t=this._getOrReturnCtx(e,t),f(t,{code:l.invalid_type,expected:"integer",received:"float",message:s.message}),n.dirty());else if("min"===s.kind){(s.inclusive?e.data<s.value:e.data<=s.value)&&(t=this._getOrReturnCtx(e,t),f(t,{code:l.too_small,minimum:s.value,type:"number",inclusive:s.inclusive,message:s.message}),n.dirty())}else if("max"===s.kind){(s.inclusive?e.data>s.value:e.data>=s.value)&&(t=this._getOrReturnCtx(e,t),f(t,{code:l.too_big,maximum:s.value,type:"number",inclusive:s.inclusive,message:s.message}),n.dirty())}else"multipleOf"===s.kind?0!==M(e.data,s.value)&&(t=this._getOrReturnCtx(e,t),f(t,{code:l.not_multiple_of,multipleOf:s.value,message:s.message}),n.dirty()):o.assertNever(s);return{status:n.value,value:e.data}}gte(e,t){return this.setLimit("min",e,!0,I.toString(t))}gt(e,t){return this.setLimit("min",e,!1,I.toString(t))}lte(e,t){return this.setLimit("max",e,!0,I.toString(t))}lt(e,t){return this.setLimit("max",e,!1,I.toString(t))}setLimit(e,t,n,s){return new j({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:n,message:I.toString(s)}]})}_addCheck(e){return new j({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:I.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:I.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:I.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:I.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:I.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:I.toString(t)})}get minValue(){let e=null;for(const t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(const t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return e}get isInt(){return!!this._def.checks.find((e=>"int"===e.kind))}}j.create=e=>new j({checks:[],typeName:be.ZodNumber,...k(e)});class R extends E{_parse(e){if(this._getType(e)!==c.bigint){const t=this._getOrReturnCtx(e);return f(t,{code:l.invalid_type,expected:c.bigint,received:t.parsedType}),y}return b(e.data)}}R.create=e=>new R({typeName:be.ZodBigInt,...k(e)});class A extends E{_parse(e){if(this._getType(e)!==c.boolean){const t=this._getOrReturnCtx(e);return f(t,{code:l.invalid_type,expected:c.boolean,received:t.parsedType}),y}return b(e.data)}}A.create=e=>new A({typeName:be.ZodBoolean,...k(e)});class L extends E{_parse(e){if(this._getType(e)!==c.date){const t=this._getOrReturnCtx(e);return f(t,{code:l.invalid_type,expected:c.date,received:t.parsedType}),y}if(isNaN(e.data.getTime())){return f(this._getOrReturnCtx(e),{code:l.invalid_date}),y}const t=new v;let n;for(const s of this._def.checks)"min"===s.kind?e.data.getTime()<s.value&&(n=this._getOrReturnCtx(e,n),f(n,{code:l.too_small,message:s.message,inclusive:!0,minimum:s.value,type:"date"}),t.dirty()):"max"===s.kind?e.data.getTime()>s.value&&(n=this._getOrReturnCtx(e,n),f(n,{code:l.too_big,message:s.message,inclusive:!0,maximum:s.value,type:"date"}),t.dirty()):o.assertNever(s);return{status:t.value,value:new Date(e.data.getTime())}}_addCheck(e){return new L({...this._def,checks:[...this._def.checks,e]})}min(e,t){return this._addCheck({kind:"min",value:e.getTime(),message:I.toString(t)})}max(e,t){return this._addCheck({kind:"max",value:e.getTime(),message:I.toString(t)})}get minDate(){let e=null;for(const t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return null!=e?new Date(e):null}get maxDate(){let e=null;for(const t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return null!=e?new Date(e):null}}L.create=e=>new L({checks:[],typeName:be.ZodDate,...k(e)});class Z extends E{_parse(e){if(this._getType(e)!==c.undefined){const t=this._getOrReturnCtx(e);return f(t,{code:l.invalid_type,expected:c.undefined,received:t.parsedType}),y}return b(e.data)}}Z.create=e=>new Z({typeName:be.ZodUndefined,...k(e)});class B extends E{_parse(e){if(this._getType(e)!==c.null){const t=this._getOrReturnCtx(e);return f(t,{code:l.invalid_type,expected:c.null,received:t.parsedType}),y}return b(e.data)}}B.create=e=>new B({typeName:be.ZodNull,...k(e)});class F extends E{constructor(){super(...arguments),this._any=!0}_parse(e){return b(e.data)}}F.create=e=>new F({typeName:be.ZodAny,...k(e)});class z extends E{constructor(){super(...arguments),this._unknown=!0}_parse(e){return b(e.data)}}z.create=e=>new z({typeName:be.ZodUnknown,...k(e)});class V extends E{_parse(e){const t=this._getOrReturnCtx(e);return f(t,{code:l.invalid_type,expected:c.never,received:t.parsedType}),y}}V.create=e=>new V({typeName:be.ZodNever,...k(e)});class U extends E{_parse(e){if(this._getType(e)!==c.undefined){const t=this._getOrReturnCtx(e);return f(t,{code:l.invalid_type,expected:c.void,received:t.parsedType}),y}return b(e.data)}}U.create=e=>new U({typeName:be.ZodVoid,...k(e)});class $ extends E{_parse(e){const{ctx:t,status:n}=this._processInputParams(e),s=this._def;if(t.parsedType!==c.array)return f(t,{code:l.invalid_type,expected:c.array,received:t.parsedType}),y;if(null!==s.minLength&&t.data.length<s.minLength.value&&(f(t,{code:l.too_small,minimum:s.minLength.value,type:"array",inclusive:!0,message:s.minLength.message}),n.dirty()),null!==s.maxLength&&t.data.length>s.maxLength.value&&(f(t,{code:l.too_big,maximum:s.maxLength.value,type:"array",inclusive:!0,message:s.maxLength.message}),n.dirty()),t.common.async)return Promise.all(t.data.map(((e,n)=>s.type._parseAsync(new S(t,e,t.path,n))))).then((e=>v.mergeArray(n,e)));const a=t.data.map(((e,n)=>s.type._parseSync(new S(t,e,t.path,n))));return v.mergeArray(n,a)}get element(){return this._def.type}min(e,t){return new $({...this._def,minLength:{value:e,message:I.toString(t)}})}max(e,t){return new $({...this._def,maxLength:{value:e,message:I.toString(t)}})}length(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}}var W;$.create=(e,t)=>new $({type:e,minLength:null,maxLength:null,typeName:be.ZodArray,...k(t)}),function(e){e.mergeShapes=(e,t)=>({...e,...t})}(W||(W={}));const K=e=>t=>new J({...e,shape:()=>({...e.shape(),...t})});function H(e){if(e instanceof J){const t={};for(const n in e.shape){const s=e.shape[n];t[n]=ue.create(H(s))}return new J({...e._def,shape:()=>t})}return e instanceof $?$.create(H(e.element)):e instanceof ue?ue.create(H(e.unwrap())):e instanceof pe?pe.create(H(e.unwrap())):e instanceof Y?Y.create(e.items.map((e=>H(e)))):e}class J extends E{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=K(this._def),this.extend=K(this._def)}_getCached(){if(null!==this._cached)return this._cached;const e=this._def.shape(),t=o.objectKeys(e);return this._cached={shape:e,keys:t}}_parse(e){if(this._getType(e)!==c.object){const t=this._getOrReturnCtx(e);return f(t,{code:l.invalid_type,expected:c.object,received:t.parsedType}),y}const{status:t,ctx:n}=this._processInputParams(e),{shape:s,keys:a}=this._getCached(),r=[];if(!(this._def.catchall instanceof V&&"strip"===this._def.unknownKeys))for(const e in n.data)a.includes(e)||r.push(e);const i=[];for(const e of a){const t=s[e],a=n.data[e];i.push({key:{status:"valid",value:e},value:t._parse(new S(n,a,n.path,e)),alwaysSet:e in n.data})}if(this._def.catchall instanceof V){const e=this._def.unknownKeys;if("passthrough"===e)for(const e of r)i.push({key:{status:"valid",value:e},value:{status:"valid",value:n.data[e]}});else if("strict"===e)r.length>0&&(f(n,{code:l.unrecognized_keys,keys:r}),t.dirty());else if("strip"!==e)throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{const e=this._def.catchall;for(const t of r){const s=n.data[t];i.push({key:{status:"valid",value:t},value:e._parse(new S(n,s,n.path,t)),alwaysSet:t in n.data})}}return n.common.async?Promise.resolve().then((async()=>{const e=[];for(const t of i){const n=await t.key;e.push({key:n,value:await t.value,alwaysSet:t.alwaysSet})}return e})).then((e=>v.mergeObjectSync(t,e))):v.mergeObjectSync(t,i)}get shape(){return this._def.shape()}strict(e){return I.errToObj,new J({...this._def,unknownKeys:"strict",...void 0!==e?{errorMap:(t,n)=>{var s,a,r,i;const o=null!==(r=null===(a=(s=this._def).errorMap)||void 0===a?void 0:a.call(s,t,n).message)&&void 0!==r?r:n.defaultError;return"unrecognized_keys"===t.code?{message:null!==(i=I.errToObj(e).message)&&void 0!==i?i:o}:{message:o}}}:{}})}strip(){return new J({...this._def,unknownKeys:"strip"})}passthrough(){return new J({...this._def,unknownKeys:"passthrough"})}setKey(e,t){return this.augment({[e]:t})}merge(e){return new J({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>W.mergeShapes(this._def.shape(),e._def.shape()),typeName:be.ZodObject})}catchall(e){return new J({...this._def,catchall:e})}pick(e){const t={};return o.objectKeys(e).map((e=>{this.shape[e]&&(t[e]=this.shape[e])})),new J({...this._def,shape:()=>t})}omit(e){const t={};return o.objectKeys(this.shape).map((n=>{-1===o.objectKeys(e).indexOf(n)&&(t[n]=this.shape[n])})),new J({...this._def,shape:()=>t})}deepPartial(){return H(this)}partial(e){const t={};if(e)return o.objectKeys(this.shape).map((n=>{-1===o.objectKeys(e).indexOf(n)?t[n]=this.shape[n]:t[n]=this.shape[n].optional()})),new J({...this._def,shape:()=>t});for(const e in this.shape){const n=this.shape[e];t[e]=n.optional()}return new J({...this._def,shape:()=>t})}required(){const e={};for(const t in this.shape){let n=this.shape[t];for(;n instanceof ue;)n=n._def.innerType;e[t]=n}return new J({...this._def,shape:()=>e})}keyof(){return ie(o.objectKeys(this.shape))}}J.create=(e,t)=>new J({shape:()=>e,unknownKeys:"strip",catchall:V.create(),typeName:be.ZodObject,...k(t)}),J.strictCreate=(e,t)=>new J({shape:()=>e,unknownKeys:"strict",catchall:V.create(),typeName:be.ZodObject,...k(t)}),J.lazycreate=(e,t)=>new J({shape:e,unknownKeys:"strip",catchall:V.create(),typeName:be.ZodObject,...k(t)});class q extends E{_parse(e){const{ctx:t}=this._processInputParams(e),n=this._def.options;if(t.common.async)return Promise.all(n.map((async e=>{const n={...t,common:{...t.common,issues:[]},parent:null};return{result:await e._parseAsync({data:t.data,path:t.path,parent:n}),ctx:n}}))).then((function(e){for(const t of e)if("valid"===t.result.status)return t.result;for(const n of e)if("dirty"===n.result.status)return t.common.issues.push(...n.ctx.common.issues),n.result;const n=e.map((e=>new u(e.ctx.common.issues)));return f(t,{code:l.invalid_union,unionErrors:n}),y}));{let e;const s=[];for(const a of n){const n={...t,common:{...t.common,issues:[]},parent:null},r=a._parseSync({data:t.data,path:t.path,parent:n});if("valid"===r.status)return r;"dirty"!==r.status||e||(e={result:r,ctx:n}),n.common.issues.length&&s.push(n.common.issues)}if(e)return t.common.issues.push(...e.ctx.common.issues),e.result;const a=s.map((e=>new u(e)));return f(t,{code:l.invalid_union,unionErrors:a}),y}}get options(){return this._def.options}}q.create=(e,t)=>new q({options:e,typeName:be.ZodUnion,...k(t)});class G extends E{_parse(e){const{ctx:t}=this._processInputParams(e);if(t.parsedType!==c.object)return f(t,{code:l.invalid_type,expected:c.object,received:t.parsedType}),y;const n=this.discriminator,s=t.data[n],a=this.options.get(s);return a?t.common.async?a._parseAsync({data:t.data,path:t.path,parent:t}):a._parseSync({data:t.data,path:t.path,parent:t}):(f(t,{code:l.invalid_union_discriminator,options:this.validDiscriminatorValues,path:[n]}),y)}get discriminator(){return this._def.discriminator}get validDiscriminatorValues(){return Array.from(this.options.keys())}get options(){return this._def.options}static create(e,t,n){const s=new Map;try{t.forEach((t=>{const n=t.shape[e].value;s.set(n,t)}))}catch(e){throw new Error("The discriminator value could not be extracted from all the provided schemas")}if(s.size!==t.length)throw new Error("Some of the discriminator values are not unique");return new G({typeName:be.ZodDiscriminatedUnion,discriminator:e,options:s,...k(n)})}}function X(e,t){const n=d(e),s=d(t);if(e===t)return{valid:!0,data:e};if(n===c.object&&s===c.object){const n=o.objectKeys(t),s=o.objectKeys(e).filter((e=>-1!==n.indexOf(e))),a={...e,...t};for(const n of s){const s=X(e[n],t[n]);if(!s.valid)return{valid:!1};a[n]=s.data}return{valid:!0,data:a}}if(n===c.array&&s===c.array){if(e.length!==t.length)return{valid:!1};const n=[];for(let s=0;s<e.length;s++){const a=X(e[s],t[s]);if(!a.valid)return{valid:!1};n.push(a.data)}return{valid:!0,data:n}}return n===c.date&&s===c.date&&+e==+t?{valid:!0,data:e}:{valid:!1}}class Q extends E{_parse(e){const{status:t,ctx:n}=this._processInputParams(e),s=(e,s)=>{if(w(e)||w(s))return y;const a=X(e.value,s.value);return a.valid?((_(e)||_(s))&&t.dirty(),{status:t.value,value:a.data}):(f(n,{code:l.invalid_intersection_types}),y)};return n.common.async?Promise.all([this._def.left._parseAsync({data:n.data,path:n.path,parent:n}),this._def.right._parseAsync({data:n.data,path:n.path,parent:n})]).then((([e,t])=>s(e,t))):s(this._def.left._parseSync({data:n.data,path:n.path,parent:n}),this._def.right._parseSync({data:n.data,path:n.path,parent:n}))}}Q.create=(e,t,n)=>new Q({left:e,right:t,typeName:be.ZodIntersection,...k(n)});class Y extends E{_parse(e){const{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==c.array)return f(n,{code:l.invalid_type,expected:c.array,received:n.parsedType}),y;if(n.data.length<this._def.items.length)return f(n,{code:l.too_small,minimum:this._def.items.length,inclusive:!0,type:"array"}),y;!this._def.rest&&n.data.length>this._def.items.length&&(f(n,{code:l.too_big,maximum:this._def.items.length,inclusive:!0,type:"array"}),t.dirty());const s=n.data.map(((e,t)=>{const s=this._def.items[t]||this._def.rest;return s?s._parse(new S(n,e,n.path,t)):null})).filter((e=>!!e));return n.common.async?Promise.all(s).then((e=>v.mergeArray(t,e))):v.mergeArray(t,s)}get items(){return this._def.items}rest(e){return new Y({...this._def,rest:e})}}Y.create=(e,t)=>{if(!Array.isArray(e))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new Y({items:e,typeName:be.ZodTuple,rest:null,...k(t)})};class ee extends E{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){const{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==c.object)return f(n,{code:l.invalid_type,expected:c.object,received:n.parsedType}),y;const s=[],a=this._def.keyType,r=this._def.valueType;for(const e in n.data)s.push({key:a._parse(new S(n,e,n.path,e)),value:r._parse(new S(n,n.data[e],n.path,e))});return n.common.async?v.mergeObjectAsync(t,s):v.mergeObjectSync(t,s)}get element(){return this._def.valueType}static create(e,t,n){return new ee(t instanceof E?{keyType:e,valueType:t,typeName:be.ZodRecord,...k(n)}:{keyType:N.create(),valueType:e,typeName:be.ZodRecord,...k(t)})}}class te extends E{_parse(e){const{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==c.map)return f(n,{code:l.invalid_type,expected:c.map,received:n.parsedType}),y;const s=this._def.keyType,a=this._def.valueType,r=[...n.data.entries()].map((([e,t],r)=>({key:s._parse(new S(n,e,n.path,[r,"key"])),value:a._parse(new S(n,t,n.path,[r,"value"]))})));if(n.common.async){const e=new Map;return Promise.resolve().then((async()=>{for(const n of r){const s=await n.key,a=await n.value;if("aborted"===s.status||"aborted"===a.status)return y;"dirty"!==s.status&&"dirty"!==a.status||t.dirty(),e.set(s.value,a.value)}return{status:t.value,value:e}}))}{const e=new Map;for(const n of r){const s=n.key,a=n.value;if("aborted"===s.status||"aborted"===a.status)return y;"dirty"!==s.status&&"dirty"!==a.status||t.dirty(),e.set(s.value,a.value)}return{status:t.value,value:e}}}}te.create=(e,t,n)=>new te({valueType:t,keyType:e,typeName:be.ZodMap,...k(n)});class ne extends E{_parse(e){const{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==c.set)return f(n,{code:l.invalid_type,expected:c.set,received:n.parsedType}),y;const s=this._def;null!==s.minSize&&n.data.size<s.minSize.value&&(f(n,{code:l.too_small,minimum:s.minSize.value,type:"set",inclusive:!0,message:s.minSize.message}),t.dirty()),null!==s.maxSize&&n.data.size>s.maxSize.value&&(f(n,{code:l.too_big,maximum:s.maxSize.value,type:"set",inclusive:!0,message:s.maxSize.message}),t.dirty());const a=this._def.valueType;function r(e){const n=new Set;for(const s of e){if("aborted"===s.status)return y;"dirty"===s.status&&t.dirty(),n.add(s.value)}return{status:t.value,value:n}}const i=[...n.data.values()].map(((e,t)=>a._parse(new S(n,e,n.path,t))));return n.common.async?Promise.all(i).then((e=>r(e))):r(i)}min(e,t){return new ne({...this._def,minSize:{value:e,message:I.toString(t)}})}max(e,t){return new ne({...this._def,maxSize:{value:e,message:I.toString(t)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}}ne.create=(e,t)=>new ne({valueType:e,minSize:null,maxSize:null,typeName:be.ZodSet,...k(t)});class se extends E{constructor(){super(...arguments),this.validate=this.implement}_parse(e){const{ctx:t}=this._processInputParams(e);if(t.parsedType!==c.function)return f(t,{code:l.invalid_type,expected:c.function,received:t.parsedType}),y;function n(e,n){return g({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,m(),p].filter((e=>!!e)),issueData:{code:l.invalid_arguments,argumentsError:n}})}function s(e,n){return g({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,m(),p].filter((e=>!!e)),issueData:{code:l.invalid_return_type,returnTypeError:n}})}const a={errorMap:t.common.contextualErrorMap},r=t.data;return this._def.returns instanceof de?b((async(...e)=>{const t=new u([]),i=await this._def.args.parseAsync(e,a).catch((s=>{throw t.addIssue(n(e,s)),t})),o=await r(...i);return await this._def.returns._def.type.parseAsync(o,a).catch((e=>{throw t.addIssue(s(o,e)),t}))})):b(((...e)=>{const t=this._def.args.safeParse(e,a);if(!t.success)throw new u([n(e,t.error)]);const i=r(...t.data),o=this._def.returns.safeParse(i,a);if(!o.success)throw new u([s(i,o.error)]);return o.data}))}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new se({...this._def,args:Y.create(e).rest(z.create())})}returns(e){return new se({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,t,n){return new se({args:e||Y.create([]).rest(z.create()),returns:t||z.create(),typeName:be.ZodFunction,...k(n)})}}class ae extends E{get schema(){return this._def.getter()}_parse(e){const{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}}ae.create=(e,t)=>new ae({getter:e,typeName:be.ZodLazy,...k(t)});class re extends E{_parse(e){if(e.data!==this._def.value){return f(this._getOrReturnCtx(e),{code:l.invalid_literal,expected:this._def.value}),y}return{status:"valid",value:e.data}}get value(){return this._def.value}}function ie(e,t){return new oe({values:e,typeName:be.ZodEnum,...k(t)})}re.create=(e,t)=>new re({value:e,typeName:be.ZodLiteral,...k(t)});class oe extends E{_parse(e){if("string"!=typeof e.data){const t=this._getOrReturnCtx(e),n=this._def.values;return f(t,{expected:o.joinValues(n),received:t.parsedType,code:l.invalid_type}),y}if(-1===this._def.values.indexOf(e.data)){const t=this._getOrReturnCtx(e),n=this._def.values;return f(t,{received:t.data,code:l.invalid_enum_value,options:n}),y}return b(e.data)}get options(){return this._def.values}get enum(){const e={};for(const t of this._def.values)e[t]=t;return e}get Values(){const e={};for(const t of this._def.values)e[t]=t;return e}get Enum(){const e={};for(const t of this._def.values)e[t]=t;return e}}oe.create=ie;class ce extends E{_parse(e){const t=o.getValidEnumValues(this._def.values),n=this._getOrReturnCtx(e);if(n.parsedType!==c.string&&n.parsedType!==c.number){const e=o.objectValues(t);return f(n,{expected:o.joinValues(e),received:n.parsedType,code:l.invalid_type}),y}if(-1===t.indexOf(e.data)){const e=o.objectValues(t);return f(n,{received:n.data,code:l.invalid_enum_value,options:e}),y}return b(e.data)}get enum(){return this._def.values}}ce.create=(e,t)=>new ce({values:e,typeName:be.ZodNativeEnum,...k(t)});class de extends E{_parse(e){const{ctx:t}=this._processInputParams(e);if(t.parsedType!==c.promise&&!1===t.common.async)return f(t,{code:l.invalid_type,expected:c.promise,received:t.parsedType}),y;const n=t.parsedType===c.promise?t.data:Promise.resolve(t.data);return b(n.then((e=>this._def.type.parseAsync(e,{path:t.path,errorMap:t.common.contextualErrorMap}))))}}de.create=(e,t)=>new de({type:e,typeName:be.ZodPromise,...k(t)});class le extends E{innerType(){return this._def.schema}_parse(e){const{status:t,ctx:n}=this._processInputParams(e),s=this._def.effect||null;if("preprocess"===s.type){const e=s.transform(n.data);return n.common.async?Promise.resolve(e).then((e=>this._def.schema._parseAsync({data:e,path:n.path,parent:n}))):this._def.schema._parseSync({data:e,path:n.path,parent:n})}const a={addIssue:e=>{f(n,e),e.fatal?t.abort():t.dirty()},get path(){return n.path}};if(a.addIssue=a.addIssue.bind(a),"refinement"===s.type){const e=e=>{const t=s.refinement(e,a);if(n.common.async)return Promise.resolve(t);if(t instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return e};if(!1===n.common.async){const s=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});return"aborted"===s.status?y:("dirty"===s.status&&t.dirty(),e(s.value),{status:t.value,value:s.value})}return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then((n=>"aborted"===n.status?y:("dirty"===n.status&&t.dirty(),e(n.value).then((()=>({status:t.value,value:n.value}))))))}if("transform"===s.type){if(!1===n.common.async){const e=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});if(!x(e))return e;const r=s.transform(e.value,a);if(r instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:t.value,value:r}}return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then((e=>x(e)?Promise.resolve(s.transform(e.value,a)).then((e=>({status:t.value,value:e}))):e))}o.assertNever(s)}}le.create=(e,t,n)=>new le({schema:e,typeName:be.ZodEffects,effect:t,...k(n)}),le.createWithPreprocess=(e,t,n)=>new le({schema:t,effect:{type:"preprocess",transform:e},typeName:be.ZodEffects,...k(n)});class ue extends E{_parse(e){return this._getType(e)===c.undefined?b(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}ue.create=(e,t)=>new ue({innerType:e,typeName:be.ZodOptional,...k(t)});class pe extends E{_parse(e){return this._getType(e)===c.null?b(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}pe.create=(e,t)=>new pe({innerType:e,typeName:be.ZodNullable,...k(t)});class he extends E{_parse(e){const{ctx:t}=this._processInputParams(e);let n=t.data;return t.parsedType===c.undefined&&(n=this._def.defaultValue()),this._def.innerType._parse({data:n,path:t.path,parent:t})}removeDefault(){return this._def.innerType}}he.create=(e,t)=>new ue({innerType:e,typeName:be.ZodOptional,...k(t)});class me extends E{_parse(e){if(this._getType(e)!==c.nan){const t=this._getOrReturnCtx(e);return f(t,{code:l.invalid_type,expected:c.nan,received:t.parsedType}),y}return{status:"valid",value:e.data}}}me.create=e=>new me({typeName:be.ZodNaN,...k(e)});const ge=Symbol("zod_brand");class fe extends E{_parse(e){const{ctx:t}=this._processInputParams(e),n=t.data;return this._def.type._parse({data:n,path:t.path,parent:t})}unwrap(){return this._def.type}}const ve=(e,t={},n)=>e?F.create().superRefine(((s,a)=>{if(!e(s)){const e="function"==typeof t?t(s):t,r="string"==typeof e?{message:e}:e;a.addIssue({code:"custom",...r,fatal:n})}})):F.create(),ye={object:J.lazycreate};var be;!function(e){e.ZodString="ZodString",e.ZodNumber="ZodNumber",e.ZodNaN="ZodNaN",e.ZodBigInt="ZodBigInt",e.ZodBoolean="ZodBoolean",e.ZodDate="ZodDate",e.ZodUndefined="ZodUndefined",e.ZodNull="ZodNull",e.ZodAny="ZodAny",e.ZodUnknown="ZodUnknown",e.ZodNever="ZodNever",e.ZodVoid="ZodVoid",e.ZodArray="ZodArray",e.ZodObject="ZodObject",e.ZodUnion="ZodUnion",e.ZodDiscriminatedUnion="ZodDiscriminatedUnion",e.ZodIntersection="ZodIntersection",e.ZodTuple="ZodTuple",e.ZodRecord="ZodRecord",e.ZodMap="ZodMap",e.ZodSet="ZodSet",e.ZodFunction="ZodFunction",e.ZodLazy="ZodLazy",e.ZodLiteral="ZodLiteral",e.ZodEnum="ZodEnum",e.ZodEffects="ZodEffects",e.ZodNativeEnum="ZodNativeEnum",e.ZodOptional="ZodOptional",e.ZodNullable="ZodNullable",e.ZodDefault="ZodDefault",e.ZodPromise="ZodPromise",e.ZodBranded="ZodBranded"}(be||(be={}));const we=N.create,_e=j.create,xe=me.create,Ce=R.create,Ie=A.create,Se=L.create,Te=Z.create,ke=B.create,Ee=F.create,Oe=z.create,Pe=V.create,De=U.create,Ne=$.create,Me=J.create,je=J.strictCreate,Re=q.create,Ae=G.create,Le=Q.create,Ze=Y.create,Be=ee.create,Fe=te.create,ze=ne.create,Ve=se.create,Ue=ae.create,$e=re.create,We=oe.create,Ke=ce.create,He=de.create,Je=le.create,qe=ue.create,Ge=pe.create,Xe=le.createWithPreprocess,Qe=y;var Ye=Object.freeze({__proto__:null,getParsedType:d,ZodParsedType:c,defaultErrorMap:p,setErrorMap:function(e){h=e},getErrorMap:m,makeIssue:g,EMPTY_PATH:[],addIssueToContext:f,ParseStatus:v,INVALID:y,DIRTY:e=>({status:"dirty",value:e}),OK:b,isAborted:w,isDirty:_,isValid:x,isAsync:C,ZodType:E,ZodString:N,ZodNumber:j,ZodBigInt:R,ZodBoolean:A,ZodDate:L,ZodUndefined:Z,ZodNull:B,ZodAny:F,ZodUnknown:z,ZodNever:V,ZodVoid:U,ZodArray:$,get objectUtil(){return W},ZodObject:J,ZodUnion:q,ZodDiscriminatedUnion:G,ZodIntersection:Q,ZodTuple:Y,ZodRecord:ee,ZodMap:te,ZodSet:ne,ZodFunction:se,ZodLazy:ae,ZodLiteral:re,ZodEnum:oe,ZodNativeEnum:ce,ZodPromise:de,ZodEffects:le,ZodTransformer:le,ZodOptional:ue,ZodNullable:pe,ZodDefault:he,ZodNaN:me,BRAND:ge,ZodBranded:fe,custom:ve,Schema:E,ZodSchema:E,late:ye,get ZodFirstPartyTypeKind(){return be},any:Ee,array:Ne,bigint:Ce,boolean:Ie,date:Se,discriminatedUnion:Ae,effect:Je,enum:We,function:Ve,instanceof:(e,t={message:`Input not instance of ${e.name}`})=>ve((t=>t instanceof e),t,!0),intersection:Le,lazy:Ue,literal:$e,map:Fe,nan:xe,nativeEnum:Ke,never:Pe,null:ke,nullable:Ge,number:_e,object:Me,oboolean:()=>Ie().optional(),onumber:()=>_e().optional(),optional:qe,ostring:()=>we().optional(),preprocess:Xe,promise:He,record:Be,set:ze,strictObject:je,string:we,transformer:Je,tuple:Ze,undefined:Te,union:Re,unknown:Oe,void:De,NEVER:Qe,ZodIssueCode:l,quotelessJson:e=>JSON.stringify(e,null,2).replace(/"([^"]+)":/g,"$1:"),ZodError:u});const et=e("command parser");function tt(e,t){const n=t.safeParse(e);if(n.success)return n.data;et(`Command ${JSON.stringify(e)} parse failed: ${JSON.stringify(n)}.`);const s=n.error.errors.map((e=>`${e.message} in ${e.path.map((e=>JSON.stringify(e))).join("/")}.`)).join(" ");throw new a(s)}var nt,st,at,rt,it,ot;!function(e){e.RemoteReferenceSchema=Ye.object({handle:Ye.string().min(1)});const t=Ye.object({type:Ye.literal("undefined")}),n=Ye.object({type:Ye.literal("null")}),s=Ye.object({type:Ye.literal("string"),value:Ye.string()}),a=Ye.enum(["NaN","-0","Infinity","+Infinity","-Infinity"]),r=Ye.object({type:Ye.literal("number"),value:Ye.union([a,Ye.number()])}),i=Ye.object({type:Ye.literal("boolean"),value:Ye.boolean()}),o=Ye.object({type:Ye.literal("bigint"),value:Ye.string()}),c=Ye.union([t,n,s,r,i,o]);e.LocalValueSchema=Ye.lazy((()=>Ye.union([c,u,p,m,g,f,v])));const d=Ye.union([e.RemoteReferenceSchema,e.LocalValueSchema]),l=Ye.array(d),u=Ye.lazy((()=>Ye.object({type:Ye.literal("array"),value:l}))),p=Ye.object({type:Ye.literal("date"),value:Ye.string().min(1)}),h=Ye.lazy((()=>Ye.tuple([Ye.union([Ye.string(),d]),d]))),m=Ye.object({type:Ye.literal("map"),value:Ye.array(h)}),g=Ye.object({type:Ye.literal("object"),value:Ye.array(h)}),f=Ye.lazy((()=>Ye.object({type:Ye.literal("regexp"),value:Ye.object({pattern:Ye.string(),flags:Ye.string().optional()})}))),v=Ye.lazy((()=>Ye.object({type:Ye.literal("set"),value:l})));e.BrowsingContextSchema=Ye.string()}(nt||(nt={})),function(e){const t=Ye.enum(["window","dedicated-worker","shared-worker","service-worker","worker","paint-worklet","audio-worklet","worklet"]),n=Ye.object({context:nt.BrowsingContextSchema.optional(),type:t.optional()});e.parseGetRealmsParams=function(e){return tt(e,n)};const s=Ye.object({context:nt.BrowsingContextSchema,sandbox:Ye.string().optional()}),a=Ye.object({realm:Ye.string().min(1)}),r=Ye.union([a,s]),i=Ye.enum(["root","none"]),o=Ye.object({expression:Ye.string(),awaitPromise:Ye.boolean(),target:r,resultOwnership:i.optional()});e.parseEvaluateParams=function(e){return tt(e,o)};const c=Ye.object({target:r,handles:Ye.array(Ye.string())});e.parseDisownParams=function(e){return tt(e,c)};const d=Ye.union([nt.RemoteReferenceSchema,nt.LocalValueSchema]),l=Ye.object({functionDeclaration:Ye.string(),target:r,arguments:Ye.array(d).optional(),this:d.optional(),awaitPromise:Ye.boolean(),resultOwnership:i.optional()});e.parseCallFunctionParams=function(e){return tt(e,l)}}(st||(st={})),function(e){const t=Ye.object({maxDepth:Ye.number().int().nonnegative().max(9007199254740991).optional(),root:nt.BrowsingContextSchema.optional()});e.parseGetTreeParams=function(e){return tt(e,t)};const n=Ye.enum(["none","interactive","complete"]),s=Ye.object({context:nt.BrowsingContextSchema,url:Ye.string().url(),wait:n.optional()});e.parseNavigateParams=function(e){return tt(e,s)};const a=Ye.object({type:Ye.enum(["tab","window"])});e.parseCreateParams=function(e){return tt(e,a)};const r=Ye.object({context:nt.BrowsingContextSchema});e.parseCloseParams=function(e){return tt(e,r)};class o extends i{static method="browsingContext.load";constructor(e){super(o.method,e)}}e.LoadEvent=o;class c extends i{static method="browsingContext.domContentLoaded";constructor(e){super(c.method,e)}}e.DomContentLoadedEvent=c;class d extends i{static method="browsingContext.contextCreated";constructor(e){super(d.method,e)}}e.ContextCreatedEvent=d;class l extends i{static method="browsingContext.contextDestroyed";constructor(e){super(l.method,e)}}e.ContextDestroyedEvent=l,function(e){const t=Ye.object({context:nt.BrowsingContextSchema,selector:Ye.string()});e.parseFindElementParams=function(e){return tt(e,t)}}(e.PROTO||(e.PROTO={})),e.EventNames=[o.method,c.method,d.method,l.method]}(at||(at={})),function(e){class t extends i{static method="log.entryAdded";constructor(e){super(t.method,e)}}e.LogEntryAddedEvent=t,e.EventNames=[t.method]}(rt||(rt={})),function(e){const t=Ye.object({cdpMethod:Ye.string(),cdpParams:Ye.object({}).passthrough(),cdpSession:Ye.string().optional()});e.parseSendCommandParams=function(e){return tt(e,t)};const n=Ye.object({context:nt.BrowsingContextSchema});e.parseGetSessionParams=function(e){return tt(e,n)};class s extends i{static method="cdp.eventReceived";constructor(e){super(s.method,e)}}e.EventReceivedEvent=s,e.EventNames=[s.method]}(it||(it={})),function(e){const t=Ye.enum([...at.EventNames,...rt.EventNames,...it.EventNames]),n=Ye.object({events:Ye.array(t),contexts:Ye.array(nt.BrowsingContextSchema).optional()});e.parseSubscribeParams=function(e){return tt(e,n)}}(ot||(ot={}));class ct{#e=()=>{};#t=()=>{};#n;#s=!1;get isFinished(){return this.#s}constructor(){this.#n=new Promise(((e,t)=>{this.#e=e,this.#t=t}))}then(e,t){return this.#n.then(e,t)}catch(e){return this.#n.catch(e)}resolve(e){this.#s=!0,this.#e(e)}reject(e){this.#s=!0,this.#t(e)}finally(e){return this.#n.finally(e)}[Symbol.toStringTag]="Promise"}const dt=["%s","%d","%i","%f","%o","%O","%c"];function lt(e){return dt.some((t=>e.includes(t)))}function ut(e){if(!["array","bigint","date","number","object","string"].includes(e.type))return pt(e);if("bigint"===e.type)return e.value.toString()+"n";if("number"===e.type)return e.value.toString();if(["date","string"].includes(e.type))return JSON.stringify(e.value);if("object"===e.type)return"{"+e.value.map((e=>`${JSON.stringify(e[0])}:${ut(e[1])}`)).join(",")+"}";if("array"===e.type)return"["+e.value.map((e=>ut(e))).join(",")+"]";throw Error("Invalid value type: "+e.toString())}function pt(e){if(!e.hasOwnProperty("value"))return e.type;switch(e.type){case"string":case"number":case"boolean":case"bigint":return e.value;case"regexp":return`/${e.value.pattern}/${e.value.flags}`;case"date":return new Date(e.value).toString();case"object":return`Object(${e.value.length})`;case"array":return`Array(${e.value.length})`;case"map":return`Map(${e.value.length})`;case"set":return`Set(${e.value.length})`;case"node":return"node";default:return e.type}}function ht(e,t){return 0==e.length?"":"string"===e[0].type&&lt(e[0].value.toString())&&t?function(e){let t="";const n=e[0].value.toString(),s=e.slice(1,void 0),a=n.split(new RegExp(dt.map((e=>"("+e+")")).join("|"),"g"));for(const n of a)if(void 0!==n&&""!=n)if(lt(n)){const a=s.shift();if(void 0===a)throw new Error('Less value is provided: "'+ht(e,!1)+'"');"%s"===n?t+=pt(a):"%d"===n||"%i"===n?["bigint","number","string"].includes(a.type)?t+=parseInt(a.value.toString(),10):t+="NaN":"%f"===n?["bigint","number","string"].includes(a.type)?t+=parseFloat(a.value.toString()):t+="NaN":t+=ut(a)}else t+=n;if(s.length>0)throw new Error('More value is provided: "'+ht(e,!1)+'"');return t}(e):e.map((e=>pt(e))).join(" ")}class mt{static#a=0;static#r=1;static#i=new Map;static async serializeCdpObject(e,t,n){const s=await n.cdpClient.Runtime.callFunctionOn({functionDeclaration:String((e=>e)),awaitPromise:!1,arguments:[e],generateWebDriverValue:!0,executionContextId:n.executionContextId});return await this.#o(s,n,t)}static async stringifyObject(e,t){return(await t.cdpClient.Runtime.callFunctionOn({functionDeclaration:String((function(e){return String(e)})),awaitPromise:!1,arguments:[e],returnByValue:!0,executionContextId:t.executionContextId})).result.value}static async callFunction(e,t,n,s,r,i){const o=`(...args)=>{ return _callFunction((\n${t}\n), args);\n      function _callFunction(f, args) {\n        const deserializedThis = args.shift();\n        const deserializedArgs = args;\n        return f.apply(deserializedThis, deserializedArgs);\n      }}`,c=[await this.#c(n,e)];let d;c.push(...await Promise.all(s.map((async t=>await this.#c(t,e)))));try{d=await e.cdpClient.Runtime.callFunctionOn({functionDeclaration:o,awaitPromise:r,arguments:c,generateWebDriverValue:!0,executionContextId:e.executionContextId})}catch(e){if(-32e3===e.code&&["Could not find object with given id","Argument should belong to the same JavaScript world as target object"].includes(e.message))throw new a("Handle was not found.");throw e}return d.exceptionDetails?{exceptionDetails:await this.#d(d.exceptionDetails,this.#r,i,e),realm:e.realmId}:{result:await mt.#o(d,e,i),realm:e.realmId}}static realmDestroyed(e){return Array.from(this.#i.entries()).filter((([t,n])=>n===e.realmId)).map((([e,t])=>this.#i.delete(e)))}static async disown(e,t){if(mt.#i.get(t)===e.realmId){try{await e.cdpClient.Runtime.releaseObject({objectId:t})}catch(e){if(-32e3!==e.code||"Invalid remote object id"!==e.message)throw e}this.#i.delete(t)}}static async#d(e,t,n,s){const a=e.stackTrace?.callFrames.map((e=>({url:e.url,functionName:e.functionName,lineNumber:e.lineNumber-t,columnNumber:e.columnNumber}))),r=await this.serializeCdpObject(e.exception,n,s),i=await this.stringifyObject(e.exception,s);return{exception:r,columnNumber:e.columnNumber,lineNumber:e.lineNumber-t,stackTrace:{callFrames:a||[]},text:i||e.text}}static async#o(e,t,n){const s=e.result.webDriverValue;if(!e.result.objectId)return s;const a=e.result.objectId,r=s;return"root"===n?(r.handle=a,this.#i.set(a,t.realmId)):await t.cdpClient.Runtime.releaseObject({objectId:a}),r}static async scriptEvaluate(e,t,n,s){let a=await e.cdpClient.Runtime.evaluate({contextId:e.executionContextId,expression:t,awaitPromise:n,generateWebDriverValue:!0});return a.exceptionDetails?{exceptionDetails:await this.#d(a.exceptionDetails,this.#a,s,e),realm:e.realmId}:{result:await mt.#o(a,e,s),realm:e.realmId}}static async#c(e,t){if("handle"in e)return{objectId:e.handle};switch(e.type){case"undefined":return{unserializableValue:"undefined"};case"null":return{unserializableValue:"null"};case"string":return{value:e.value};case"number":return"NaN"===e.value?{unserializableValue:"NaN"}:"-0"===e.value?{unserializableValue:"-0"}:"+Infinity"===e.value?{unserializableValue:"+Infinity"}:"Infinity"===e.value?{unserializableValue:"Infinity"}:"-Infinity"===e.value?{unserializableValue:"-Infinity"}:{value:e.value};case"boolean":return{value:!!e.value};case"bigint":return{unserializableValue:`BigInt(${JSON.stringify(e.value)})`};case"date":return{unserializableValue:`new Date(Date.parse(${JSON.stringify(e.value)}))`};case"regexp":return{unserializableValue:`new RegExp(${JSON.stringify(e.value.pattern)}, ${JSON.stringify(e.value.flags)})`};case"map":{const n=await this.#l(e.value,t);return{objectId:(await t.cdpClient.Runtime.callFunctionOn({functionDeclaration:String((function(...e){const t=new Map;for(let n=0;n<e.length;n+=2)t.set(e[n],e[n+1]);return t})),awaitPromise:!1,arguments:n,returnByValue:!1,executionContextId:t.executionContextId})).result.objectId}}case"object":{const n=await this.#l(e.value,t);return{objectId:(await t.cdpClient.Runtime.callFunctionOn({functionDeclaration:String((function(...e){const t={};for(let n=0;n<e.length;n+=2){t[e[n]]=e[n+1]}return t})),awaitPromise:!1,arguments:n,returnByValue:!1,executionContextId:t.executionContextId})).result.objectId}}case"array":{const n=await mt.#u(e.value,t);return{objectId:(await t.cdpClient.Runtime.callFunctionOn({functionDeclaration:String((function(...e){return e})),awaitPromise:!1,arguments:n,returnByValue:!1,executionContextId:t.executionContextId})).result.objectId}}case"set":{const n=await this.#u(e.value,t);return{objectId:(await t.cdpClient.Runtime.callFunctionOn({functionDeclaration:String((function(...e){return new Set(e)})),awaitPromise:!1,arguments:n,returnByValue:!1,executionContextId:t.executionContextId})).result.objectId}}default:throw new Error(`Value ${JSON.stringify(e)} is not deserializable.`)}}static async#l(e,t){const n=[];for(let s of e){const e=s[0],a=s[1];let r,i;r="string"==typeof e?{value:e}:await this.#c(e,t),i=await this.#c(a,t),n.push(r),n.push(i)}return n}static async#u(e,t){const n=[];for(let s of e)n.push(await this.#c(s,t));return n}}class gt{static#p=new Map;static getTopLevelContexts(){return Array.from(gt.#p.values()).filter((e=>null===e.parentId))}static removeContext(e){gt.#p.delete(e)}static addContext(e){gt.#p.set(e.contextId,e),null!==e.parentId&&gt.getKnownContext(e.parentId).addChild(e)}static hasKnownContext(e){return gt.#p.has(e)}static findContext(e){return gt.#p.get(e)}static getKnownContext(e){const t=gt.findContext(e);if(void 0===t)throw new r(`Context ${e} not found`);return t}}var ft;!function(e){e.window="window"}(ft||(ft={}));class vt{static#h=new Map;static create(e,t,n,s,a,r,i,o){const c=new vt(e,t,n,s,a,r,i,o);return vt.#h.set(c.realmId,c),c}static findRealms(e={}){return Array.from(vt.#h.values()).filter((t=>(void 0===e.realmId||e.realmId===t.realmId)&&((void 0===e.browsingContextId||e.browsingContextId===t.browsingContextId)&&((void 0===e.executionContextId||e.executionContextId===t.executionContextId)&&((void 0===e.type||e.type===t.type)&&((void 0===e.sandbox||e.sandbox===t.#m)&&(void 0===e.cdpSessionId||e.cdpSessionId===t.#g)))))))}static findRealm(e){const t=vt.findRealms(e);if(1===t.length)return t[0]}static getRealm(e){const t=vt.findRealm(e);if(void 0===t)throw new r(`Realm ${JSON.stringify(e)} not found`);return t}static clearBrowsingContext(e){vt.findRealms({browsingContextId:e}).map((e=>e.delete()))}delete(){vt.#h.delete(this.realmId),mt.realmDestroyed(this)}#f;#v;#y;#b;#w;#m;#g;#_;constructor(e,t,n,s,a,r,i,o){this.#f=e,this.#v=t,this.#y=n,this.#m=r,this.#b=s,this.#w=a,this.#g=i,this.#_=o}toBiDi(){return{realm:this.realmId,origin:this.origin,type:this.type,context:this.browsingContextId,...void 0!==this.#m?{sandbox:this.#m}:{}}}get realmId(){return this.#f}get browsingContextId(){return this.#v}get executionContextId(){return this.#y}get origin(){return this.#b}get type(){return this.#w}get cdpClient(){return this.#_}async callFunction(e,t,n,s,a){const r=gt.getKnownContext(this.browsingContextId);return await r.awaitUnblocked(),{result:await mt.callFunction(this,e,t,n,s,a)}}async scriptEvaluate(e,t,n){const s=gt.getKnownContext(this.browsingContextId);return await s.awaitUnblocked(),{result:await mt.scriptEvaluate(this,e,t,n)}}async disown(e){await mt.disown(this,e)}async serializeCdpObject(e,t){return await mt.serializeCdpObject(e,t,this)}async stringifyObject(e,t){return mt.stringifyObject(e,this)}}class yt{#x;#_;#g;#C;constructor(e,t,n,s){this.#g=n,this.#_=t,this.#x=e,this.#C=s}static create(e,t,n,s){const a=new yt(e,t,n,s);return a.#I(),a}#I(){this.#S()}#S(){this.#T()}#T(){this.#_.Runtime.on("consoleAPICalled",(async e=>{const t=vt.findRealm({cdpSessionId:this.#g,executionContextId:e.executionContextId}),n=void 0===t?e.args:await Promise.all(e.args.map((async e=>t.serializeCdpObject(e,"none"))));await this.#C.sendEvent(new rt.LogEntryAddedEvent({level:yt.#k(e.type),source:{realm:t?.realmId??"UNKNOWN",context:t?.browsingContextId??"UNKNOWN"},text:ht(n,!0),timestamp:Math.round(e.timestamp),stackTrace:yt.#E(e.stackTrace),type:"console",method:"warning"===e.type?"warn":e.type,args:n}),t?.browsingContextId??"UNKNOWN")})),this.#_.Runtime.on("exceptionThrown",(async e=>{const t=vt.findRealm({cdpSessionId:this.#g,executionContextId:e.exceptionDetails.executionContextId}),n=await(async()=>e.exceptionDetails.exception?void 0===t?JSON.stringify(e.exceptionDetails.exception):await t.stringifyObject(e.exceptionDetails.exception,t):e.exceptionDetails.text)();await this.#C.sendEvent(new rt.LogEntryAddedEvent({level:"error",source:{realm:t?.realmId??"UNKNOWN",context:t?.browsingContextId??"UNKNOWN"},text:n,timestamp:Math.round(e.timestamp),stackTrace:yt.#E(e.exceptionDetails.stackTrace),type:"javascript"}),t?.browsingContextId??"UNKNOWN")}))}static#k(e){return["assert","error"].includes(e)?"error":["debug","trace"].includes(e)?"debug":["warn","warning"].includes(e)?"warning":"info"}static#E(e){const t=e?.callFrames.map((e=>({columnNumber:e.columnNumber,functionName:e.functionName,lineNumber:e.lineNumber,url:e.url})));return t?{callFrames:t}:void 0}}var bt=at.LoadEvent;class wt{#O={documentInitialized:new ct,targetUnblocked:new ct,Page:{navigatedWithinDocument:new ct,lifecycleEvent:{DOMContentLoaded:new ct,load:new ct}}};#x;#P;#D="about:blank";#N=null;#g;#_;#M;#C;#j=new Map;#R;get#A(){if(void 0===this.#R)throw new Error(`No default realm for browsing context ${this.#x}`);return this.#R}constructor(e,t,n,s,a,r){this.#x=e,this.#P=t,this.#_=n,this.#C=r,this.#g=a,this.#M=s,this.#L(),gt.addContext(this)}static async createFrameContext(e,t,n,s,a,r){const i=new wt(e,t,n,s,a,r);i.#O.targetUnblocked.resolve(),await r.sendEvent(new at.ContextCreatedEvent(i.serializeToBidiValue()),i.contextId)}static async createTargetContext(e,t,n,s,a,r){const i=new wt(e,t,n,s,a,r);i.#Z(),await r.sendEvent(new at.ContextCreatedEvent(i.serializeToBidiValue()),i.contextId)}convertFrameToTargetContext(e,t){this.#B(e,t),this.#Z()}async delete(){if(await this.#F(),null!==this.parentId){gt.getKnownContext(this.parentId).#j.delete(this.contextId)}await this.#C.sendEvent(new at.ContextDestroyedEvent(this.serializeToBidiValue()),this.contextId),gt.removeContext(this.contextId)}async#F(){await Promise.all(this.children.map((e=>e.delete())))}#B(e,t){this.#O.targetUnblocked.isFinished||this.#O.targetUnblocked.reject("OOPiF"),this.#O.targetUnblocked=new ct,this.#_=e,this.#g=t,this.#L()}async#Z(){yt.create(this.#x,this.#_,this.#g,this.#C),await this.#_.Runtime.enable(),await this.#_.Page.enable(),await this.#_.Page.setLifecycleEventsEnabled({enabled:!0}),await this.#_.Target.setAutoAttach({autoAttach:!0,waitForDebuggerOnStart:!0,flatten:!0}),await this.#_.Runtime.runIfWaitingForDebugger(),this.#O.targetUnblocked.resolve()}get contextId(){return this.#x}get parentId(){return this.#P}get cdpSessionId(){return this.#g}get children(){return Array.from(this.#j.values())}get url(){return this.#D}addChild(e){this.#j.set(e.contextId,e)}async awaitLoaded(){await this.#O.Page.lifecycleEvent.load}async awaitUnblocked(){await this.#O.targetUnblocked}serializeToBidiValue(e=0,t=!0){return{context:this.#x,url:this.url,children:e>0?this.children.map((t=>t.serializeToBidiValue(e-1,!1))):null,...t?{parent:this.#P}:{}}}#L(){this.#_.Target.on("targetInfoChanged",(e=>{this.contextId===e.targetInfo.targetId&&(this.#D=e.targetInfo.url)})),this.#_.Page.on("frameNavigated",(async e=>{this.contextId===e.frame.id&&(this.#D=e.frame.url+(e.frame.urlFragment??""),await this.#F(),vt.clearBrowsingContext(this.contextId))})),this.#_.Page.on("navigatedWithinDocument",(e=>{this.contextId===e.frameId&&(this.#D=e.url,this.#O.Page.navigatedWithinDocument.resolve(e))})),this.#_.Page.on("lifecycleEvent",(async e=>{if(this.contextId===e.frameId)if("init"===e.name&&(this.#z(e.loaderId),this.#O.documentInitialized.resolve()),"commit"!==e.name){if(e.loaderId===this.#N)switch(e.name){case"DOMContentLoaded":this.#O.Page.lifecycleEvent.DOMContentLoaded.resolve(e),await this.#C.sendEvent(new at.DomContentLoadedEvent({context:this.contextId,navigation:this.#N,url:this.#D}),this.contextId);break;case"load":this.#O.Page.lifecycleEvent.load.resolve(e),await this.#C.sendEvent(new bt({context:this.contextId,navigation:this.#N,url:this.#D}),this.contextId)}}else this.#N=e.loaderId})),this.#_.Runtime.on("executionContextCreated",(e=>{if(e.context.auxData.frameId!==this.contextId)return;if(!["default","isolated"].includes(e.context.auxData.type))return;const t=vt.create(e.context.uniqueId,this.contextId,e.context.id,this.#V(e),ft.window,"isolated"===e.context.auxData.type?e.context.name:void 0,this.#g,this.#_);e.context.auxData.isDefault&&(this.#R=t)})),this.#_.Runtime.on("executionContextDestroyed",(e=>{vt.findRealms({cdpSessionId:this.#g,executionContextId:e.executionContextId}).map((e=>e.delete()))}))}#V(e){return"isolated"===e.context.auxData.type?this.#A.origin:["://",""].includes(e.context.origin)?"null":e.context.origin}#z(e){this.#N!==e&&(this.#O.documentInitialized.isFinished||this.#O.documentInitialized.reject("Document changed"),this.#O.documentInitialized=new ct,this.#O.Page.navigatedWithinDocument.isFinished||this.#O.Page.navigatedWithinDocument.reject("Document changed"),this.#O.Page.navigatedWithinDocument=new ct,this.#O.Page.lifecycleEvent.DOMContentLoaded.isFinished||this.#O.Page.lifecycleEvent.DOMContentLoaded.reject("Document changed"),this.#O.Page.lifecycleEvent.DOMContentLoaded=new ct,this.#O.Page.lifecycleEvent.load.isFinished||this.#O.Page.lifecycleEvent.load.reject("Document changed"),this.#O.Page.lifecycleEvent.load=new ct,this.#N=e)}async navigate(e,t){await this.#O.targetUnblocked;const s=await this.#_.Page.navigate({url:e,frameId:this.contextId});if(s.errorText)throw new n(s.errorText);switch(void 0!==s.loaderId&&s.loaderId!==this.#N&&this.#z(s.loaderId),t){case"none":break;case"interactive":void 0===s.loaderId?await this.#O.Page.navigatedWithinDocument:await this.#O.Page.lifecycleEvent.DOMContentLoaded;break;case"complete":void 0===s.loaderId?await this.#O.Page.navigatedWithinDocument:await this.#O.Page.lifecycleEvent.load;break;default:throw new Error(`Not implemented wait '${t}'`)}return{result:{navigation:s.loaderId||null,url:e}}}async findElement(e){await this.#O.targetUnblocked;const t=String((e=>document.querySelector(e))),n=[{type:"string",value:e}];return await this.#A.callFunction(t,{type:"undefined"},n,!0,"root")}async getOrCreateSandbox(e){if(void 0===e||""===e)return this.#A;let t=vt.findRealms({browsingContextId:this.contextId,sandbox:e});if(0==t.length&&(await this.#_.Page.createIsolatedWorld({frameId:this.contextId,worldName:e}),t=vt.findRealms({browsingContextId:this.contextId,sandbox:e})),1!==t.length)throw Error(`Sandbox ${e} wasn't created.`);return t[0]}}const _t=e("context");class xt{sessions=new Set;#U;#$;#M;#C;constructor(e,t,n,s){this.#U=e,this.#$=t,this.#M=n,this.#C=s,this.#W(this.#U.browserClient())}#W(e){this.#K(e)}#K(e){e.Target.on("attachedToTarget",(async t=>{await this.#H(t,e)})),e.Target.on("detachedFromTarget",(async e=>{await xt.#J(e)}))}#q(e){if(this.sessions.has(e))return;this.sessions.add(e);const t=this.#U.getCdpClient(e);this.#K(t),t.on("event",(async(t,n)=>{await this.#C.sendEvent({method:"cdp.eventReceived",params:{cdpMethod:t,cdpParams:n,cdpSession:e}},null)})),t.Page.on("frameAttached",(async n=>{await wt.createFrameContext(n.frameId,n.parentFrameId,t,this.#M,e,this.#C)}))}async#H(e,t){_t("AttachedToTarget event received: "+JSON.stringify(e));const{sessionId:n,targetInfo:s}=e;let a=this.#U.getCdpClient(n);if(!this.#G(s))return await a.Runtime.runIfWaitingForDebugger(),void await t.Target.detachFromTarget(e);this.#q(n),gt.hasKnownContext(s.targetId)?gt.getKnownContext(s.targetId).convertFrameToTargetContext(a,n):await wt.createTargetContext(s.targetId,null,a,this.#M,n,this.#C)}static async#J(e){const t=e.targetId;await(gt.findContext(t)?.delete())}async process_browsingContext_getTree(e){return{result:{contexts:(void 0===e.root?gt.getTopLevelContexts():[gt.getKnownContext(e.root)]).map((t=>t.serializeToBidiValue(e.maxDepth??Number.MAX_VALUE)))}}}async process_browsingContext_create(e){const t=this.#U.browserClient(),n=(await t.Target.createTarget({url:"about:blank",newWindow:"window"===e.type})).targetId,s=gt.getKnownContext(n);return await s.awaitLoaded(),{result:s.serializeToBidiValue(1)}}async process_browsingContext_navigate(e){const t=gt.getKnownContext(e.context);return await t.navigate(e.url,void 0!==e.wait?e.wait:"none")}static async#X(e){if("realm"in e)return vt.getRealm({realmId:e.realm});const t=gt.getKnownContext(e.context);return await t.getOrCreateSandbox(e.sandbox)}async process_script_evaluate(e){const t=await xt.#X(e.target);return await t.scriptEvaluate(e.expression,e.awaitPromise,e.resultOwnership??"none")}process_script_getRealms(e){void 0!==e.context&&gt.getKnownContext(e.context);return{result:{realms:vt.findRealms({browsingContextId:e.context,type:e.type}).map((e=>e.toBiDi()))}}}async process_script_callFunction(e){const t=await xt.#X(e.target);return await t.callFunction(e.functionDeclaration,e.this||{type:"undefined"},e.arguments||[],e.awaitPromise,e.resultOwnership??"none")}async process_script_disown(e){const t=await xt.#X(e.target);return await Promise.all(e.handles.map((async e=>await t.disown(e)))),{result:{}}}async process_PROTO_browsingContext_findElement(e){const t=gt.getKnownContext(e.context);return await t.findElement(e.selector)}async process_browsingContext_close(e){const t=this.#U.browserClient();if(null!==gt.getKnownContext(e.context).parentId)throw new a("Not a top-level browsing context cannot be closed.");const n=new Promise((async n=>{const s=a=>{a.targetId===e.context&&(t.Target.removeListener("detachedFromTarget",s),n())};t.Target.on("detachedFromTarget",s)}));return await this.#U.browserClient().Target.closeTarget({targetId:e.context}),await n,{result:{}}}#G(e){return e.targetId!==this.#$&&["page","iframe"].includes(e.type)}async process_cdp_sendCommand(e){return{result:await this.#U.sendCommand(e.cdpMethod,e.cdpParams,e.cdpSession??null),cdpSession:e.cdpSession}}async process_cdp_getSession(e){const t=e.context,n=gt.getKnownContext(t).cdpSessionId;return void 0===n?{result:{cdpSession:null}}:{result:{cdpSession:n}}}}class Ct{#Q;#M;#C;static run(e,t,n,s){new Ct(e,t,n,s).#Y()}constructor(e,t,n,s){this.#C=n,this.#M=t,this.#Q=new xt(e,s,t,n)}#Y(){this.#M.on("message",(e=>this.#ee(e)))}async#te(){return{result:{ready:!1,message:"already connected"}}}async#ne(e,t){return await this.#C.subscribe(e.events,e.contexts??[null],t),{result:{}}}async#se(e,t){return await this.#C.unsubscribe(e.events,e.contexts??[null],t),{result:{}}}async#ae(e){switch(e.method){case"session.status":return await this.#te();case"session.subscribe":return await this.#ne(ot.parseSubscribeParams(e.params),e.channel??null);case"session.unsubscribe":return await this.#se(ot.parseSubscribeParams(e.params),e.channel??null);case"browsingContext.create":return await this.#Q.process_browsingContext_create(at.parseCreateParams(e.params));case"browsingContext.close":return await this.#Q.process_browsingContext_close(at.parseCloseParams(e.params));case"browsingContext.getTree":return await this.#Q.process_browsingContext_getTree(at.parseGetTreeParams(e.params));case"browsingContext.navigate":return await this.#Q.process_browsingContext_navigate(at.parseNavigateParams(e.params));case"script.getRealms":return this.#Q.process_script_getRealms(st.parseGetRealmsParams(e.params));case"script.callFunction":return await this.#Q.process_script_callFunction(st.parseCallFunctionParams(e.params));case"script.evaluate":return await this.#Q.process_script_evaluate(st.parseEvaluateParams(e.params));case"script.disown":return await this.#Q.process_script_disown(st.parseDisownParams(e.params));case"PROTO.browsingContext.findElement":return await this.#Q.process_PROTO_browsingContext_findElement(at.PROTO.parseFindElementParams(e.params));case"cdp.sendCommand":return await this.#Q.process_cdp_sendCommand(it.parseSendCommandParams(e.params));case"cdp.getSession":return await this.#Q.process_cdp_getSession(it.parseGetSessionParams(e.params));default:throw new s(`Unknown command '${e.method}'.`)}}#ee=async e=>{try{const t=await this.#ae(e),n={id:e.id,...t};await this.#M.sendMessage(n,e.channel??null)}catch(s){if(s instanceof t){const t=s;await this.#M.sendMessage(t.toErrorResponse(e.id),e.channel??null)}else{const t=s;console.error(t),await this.#M.sendMessage(new n(t.message).toErrorResponse(e.id),e.channel??null)}}}}function It(){}function St(){St.init.call(this)}function Tt(e){return void 0===e._maxListeners?St.defaultMaxListeners:e._maxListeners}function kt(e,t,n){if(t)e.call(n);else for(var s=e.length,a=Rt(e,s),r=0;r<s;++r)a[r].call(n)}function Et(e,t,n,s){if(t)e.call(n,s);else for(var a=e.length,r=Rt(e,a),i=0;i<a;++i)r[i].call(n,s)}function Ot(e,t,n,s,a){if(t)e.call(n,s,a);else for(var r=e.length,i=Rt(e,r),o=0;o<r;++o)i[o].call(n,s,a)}function Pt(e,t,n,s,a,r){if(t)e.call(n,s,a,r);else for(var i=e.length,o=Rt(e,i),c=0;c<i;++c)o[c].call(n,s,a,r)}function Dt(e,t,n,s){if(t)e.apply(n,s);else for(var a=e.length,r=Rt(e,a),i=0;i<a;++i)r[i].apply(n,s)}function Nt(e,t,n,s){var a,r,i,o;if("function"!=typeof n)throw new TypeError('"listener" argument must be a function');if((r=e._events)?(r.newListener&&(e.emit("newListener",t,n.listener?n.listener:n),r=e._events),i=r[t]):(r=e._events=new It,e._eventsCount=0),i){if("function"==typeof i?i=r[t]=s?[n,i]:[i,n]:s?i.unshift(n):i.push(n),!i.warned&&(a=Tt(e))&&a>0&&i.length>a){i.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+i.length+" "+t+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=e,c.type=t,c.count=i.length,o=c,"function"==typeof console.warn?console.warn(o):console.log(o)}}else i=r[t]=n,++e._eventsCount;return e}function Mt(e,t,n){var s=!1;function a(){e.removeListener(t,a),s||(s=!0,n.apply(e,arguments))}return a.listener=n,a}function jt(e){var t=this._events;if(t){var n=t[e];if("function"==typeof n)return 1;if(n)return n.length}return 0}function Rt(e,t){for(var n=new Array(t);t--;)n[t]=e[t];return n}It.prototype=Object.create(null),St.EventEmitter=St,St.usingDomains=!1,St.prototype.domain=void 0,St.prototype._events=void 0,St.prototype._maxListeners=void 0,St.defaultMaxListeners=10,St.init=function(){this.domain=null,St.usingDomains&&undefined.active,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new It,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},St.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=e,this},St.prototype.getMaxListeners=function(){return Tt(this)},St.prototype.emit=function(e){var t,n,s,a,r,i,o,c="error"===e;if(i=this._events)c=c&&null==i.error;else if(!c)return!1;if(o=this.domain,c){if(t=arguments[1],!o){if(t instanceof Error)throw t;var d=new Error('Uncaught, unspecified "error" event. ('+t+")");throw d.context=t,d}return t||(t=new Error('Uncaught, unspecified "error" event')),t.domainEmitter=this,t.domain=o,t.domainThrown=!1,o.emit("error",t),!1}if(!(n=i[e]))return!1;var l="function"==typeof n;switch(s=arguments.length){case 1:kt(n,l,this);break;case 2:Et(n,l,this,arguments[1]);break;case 3:Ot(n,l,this,arguments[1],arguments[2]);break;case 4:Pt(n,l,this,arguments[1],arguments[2],arguments[3]);break;default:for(a=new Array(s-1),r=1;r<s;r++)a[r-1]=arguments[r];Dt(n,l,this,a)}return!0},St.prototype.addListener=function(e,t){return Nt(this,e,t,!1)},St.prototype.on=St.prototype.addListener,St.prototype.prependListener=function(e,t){return Nt(this,e,t,!0)},St.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,Mt(this,e,t)),this},St.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,Mt(this,e,t)),this},St.prototype.removeListener=function(e,t){var n,s,a,r,i;if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');if(!(s=this._events))return this;if(!(n=s[e]))return this;if(n===t||n.listener&&n.listener===t)0==--this._eventsCount?this._events=new It:(delete s[e],s.removeListener&&this.emit("removeListener",e,n.listener||t));else if("function"!=typeof n){for(a=-1,r=n.length;r-- >0;)if(n[r]===t||n[r].listener&&n[r].listener===t){i=n[r].listener,a=r;break}if(a<0)return this;if(1===n.length){if(n[0]=void 0,0==--this._eventsCount)return this._events=new It,this;delete s[e]}else!function(e,t){for(var n=t,s=n+1,a=e.length;s<a;n+=1,s+=1)e[n]=e[s];e.pop()}(n,a);s.removeListener&&this.emit("removeListener",e,i||t)}return this},St.prototype.removeAllListeners=function(e){var t,n;if(!(n=this._events))return this;if(!n.removeListener)return 0===arguments.length?(this._events=new It,this._eventsCount=0):n[e]&&(0==--this._eventsCount?this._events=new It:delete n[e]),this;if(0===arguments.length){for(var s,a=Object.keys(n),r=0;r<a.length;++r)"removeListener"!==(s=a[r])&&this.removeAllListeners(s);return this.removeAllListeners("removeListener"),this._events=new It,this._eventsCount=0,this}if("function"==typeof(t=n[e]))this.removeListener(e,t);else if(t)do{this.removeListener(e,t[t.length-1])}while(t[0]);return this},St.prototype.listeners=function(e){var t,n=this._events;return n&&(t=n[e])?"function"==typeof t?[t.listener||t]:function(e){for(var t=new Array(e.length),n=0;n<t.length;++n)t[n]=e[n].listener||e[n];return t}(t):[]},St.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):jt.call(e,t)},St.prototype.listenerCount=jt,St.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};const At=[{domain:"Accessibility",commands:["disable","enable","getPartialAXTree","getFullAXTree","getRootAXNode","getAXNodeAndAncestors","getChildAXNodes","queryAXTree"]},{domain:"Animation",commands:["disable","enable","getCurrentTime","getPlaybackRate","releaseAnimations","resolveAnimation","seekAnimations","setPaused","setPlaybackRate","setTiming"]},{domain:"Audits",commands:["getEncodedResponse","disable","enable","checkContrast"]},{domain:"BackgroundService",commands:["startObserving","stopObserving","setRecording","clearEvents"]},{domain:"Browser",commands:["setPermission","grantPermissions","resetPermissions","setDownloadBehavior","cancelDownload","close","crash","crashGpuProcess","getVersion","getBrowserCommandLine","getHistograms","getHistogram","getWindowBounds","getWindowForTarget","setWindowBounds","setDockTile","executeBrowserCommand"]},{domain:"CSS",commands:["addRule","collectClassNames","createStyleSheet","disable","enable","forcePseudoState","getBackgroundColors","getComputedStyleForNode","getInlineStylesForNode","getMatchedStylesForNode","getMediaQueries","getPlatformFontsForNode","getStyleSheetText","getLayersForNode","trackComputedStyleUpdates","takeComputedStyleUpdates","setEffectivePropertyValueForNode","setKeyframeKey","setMediaText","setContainerQueryText","setSupportsText","setRuleSelector","setStyleSheetText","setStyleTexts","startRuleUsageTracking","stopRuleUsageTracking","takeCoverageDelta","setLocalFontsEnabled"]},{domain:"CacheStorage",commands:["deleteCache","deleteEntry","requestCacheNames","requestCachedResponse","requestEntries"]},{domain:"Cast",commands:["enable","disable","setSinkToUse","startDesktopMirroring","startTabMirroring","stopCasting"]},{domain:"DOM",commands:["collectClassNamesFromSubtree","copyTo","describeNode","scrollIntoViewIfNeeded","disable","discardSearchResults","enable","focus","getAttributes","getBoxModel","getContentQuads","getDocument","getFlattenedDocument","getNodesForSubtreeByStyle","getNodeForLocation","getOuterHTML","getRelayoutBoundary","getSearchResults","hideHighlight","highlightNode","highlightRect","markUndoableState","moveTo","performSearch","pushNodeByPathToFrontend","pushNodesByBackendIdsToFrontend","querySelector","querySelectorAll","redo","removeAttribute","removeNode","requestChildNodes","requestNode","resolveNode","setAttributeValue","setAttributesAsText","setFileInputFiles","setNodeStackTracesEnabled","getNodeStackTraces","getFileInfo","setInspectedNode","setNodeName","setNodeValue","setOuterHTML","undo","getFrameOwner","getContainerForNode","getQueryingDescendantsForContainer"]},{domain:"DOMDebugger",commands:["getEventListeners","removeDOMBreakpoint","removeEventListenerBreakpoint","removeInstrumentationBreakpoint","removeXHRBreakpoint","setBreakOnCSPViolation","setDOMBreakpoint","setEventListenerBreakpoint","setInstrumentationBreakpoint","setXHRBreakpoint"]},{domain:"EventBreakpoints",commands:["setInstrumentationBreakpoint","removeInstrumentationBreakpoint"]},{domain:"DOMSnapshot",commands:["disable","enable","getSnapshot","captureSnapshot"]},{domain:"DOMStorage",commands:["clear","disable","enable","getDOMStorageItems","removeDOMStorageItem","setDOMStorageItem"]},{domain:"Database",commands:["disable","enable","executeSQL","getDatabaseTableNames"]},{domain:"DeviceOrientation",commands:["clearDeviceOrientationOverride","setDeviceOrientationOverride"]},{domain:"Emulation",commands:["canEmulate","clearDeviceMetricsOverride","clearGeolocationOverride","resetPageScaleFactor","setFocusEmulationEnabled","setAutoDarkModeOverride","setCPUThrottlingRate","setDefaultBackgroundColorOverride","setDeviceMetricsOverride","setScrollbarsHidden","setDocumentCookieDisabled","setEmitTouchEventsForMouse","setEmulatedMedia","setEmulatedVisionDeficiency","setGeolocationOverride","setIdleOverride","clearIdleOverride","setNavigatorOverrides","setPageScaleFactor","setScriptExecutionDisabled","setTouchEmulationEnabled","setVirtualTimePolicy","setLocaleOverride","setTimezoneOverride","setVisibleSize","setDisabledImageTypes","setHardwareConcurrencyOverride","setUserAgentOverride","setAutomationOverride"]},{domain:"HeadlessExperimental",commands:["beginFrame","disable","enable"]},{domain:"IO",commands:["close","read","resolveBlob"]},{domain:"IndexedDB",commands:["clearObjectStore","deleteDatabase","deleteObjectStoreEntries","disable","enable","requestData","getMetadata","requestDatabase","requestDatabaseNames"]},{domain:"Input",commands:["dispatchDragEvent","dispatchKeyEvent","insertText","imeSetComposition","dispatchMouseEvent","dispatchTouchEvent","emulateTouchFromMouseEvent","setIgnoreInputEvents","setInterceptDrags","synthesizePinchGesture","synthesizeScrollGesture","synthesizeTapGesture"]},{domain:"Inspector",commands:["disable","enable"]},{domain:"LayerTree",commands:["compositingReasons","disable","enable","loadSnapshot","makeSnapshot","profileSnapshot","releaseSnapshot","replaySnapshot","snapshotCommandLog"]},{domain:"Log",commands:["clear","disable","enable","startViolationsReport","stopViolationsReport"]},{domain:"Memory",commands:["getDOMCounters","prepareForLeakDetection","forciblyPurgeJavaScriptMemory","setPressureNotificationsSuppressed","simulatePressureNotification","startSampling","stopSampling","getAllTimeSamplingProfile","getBrowserSamplingProfile","getSamplingProfile"]},{domain:"Network",commands:["setAcceptedEncodings","clearAcceptedEncodingsOverride","canClearBrowserCache","canClearBrowserCookies","canEmulateNetworkConditions","clearBrowserCache","clearBrowserCookies","continueInterceptedRequest","deleteCookies","disable","emulateNetworkConditions","enable","getAllCookies","getCertificate","getCookies","getResponseBody","getRequestPostData","getResponseBodyForInterception","takeResponseBodyForInterceptionAsStream","replayXHR","searchInResponseBody","setBlockedURLs","setBypassServiceWorker","setCacheDisabled","setCookie","setCookies","setExtraHTTPHeaders","setAttachDebugStack","setRequestInterception","setUserAgentOverride","getSecurityIsolationStatus","enableReportingApi","loadNetworkResource"]},{domain:"Overlay",commands:["disable","enable","getHighlightObjectForTest","getGridHighlightObjectsForTest","getSourceOrderHighlightObjectForTest","hideHighlight","highlightFrame","highlightNode","highlightQuad","highlightRect","highlightSourceOrder","setInspectMode","setShowAdHighlights","setPausedInDebuggerMessage","setShowDebugBorders","setShowFPSCounter","setShowGridOverlays","setShowFlexOverlays","setShowScrollSnapOverlays","setShowContainerQueryOverlays","setShowPaintRects","setShowLayoutShiftRegions","setShowScrollBottleneckRects","setShowHitTestBorders","setShowWebVitals","setShowViewportSizeOnResize","setShowHinge","setShowIsolatedElements"]},{domain:"Page",commands:["addScriptToEvaluateOnLoad","addScriptToEvaluateOnNewDocument","bringToFront","captureScreenshot","captureSnapshot","clearDeviceMetricsOverride","clearDeviceOrientationOverride","clearGeolocationOverride","createIsolatedWorld","deleteCookie","disable","enable","getAppManifest","getInstallabilityErrors","getManifestIcons","getAppId","getCookies","getFrameTree","getLayoutMetrics","getNavigationHistory","resetNavigationHistory","getResourceContent","getResourceTree","handleJavaScriptDialog","navigate","navigateToHistoryEntry","printToPDF","reload","removeScriptToEvaluateOnLoad","removeScriptToEvaluateOnNewDocument","screencastFrameAck","searchInResource","setAdBlockingEnabled","setBypassCSP","getPermissionsPolicyState","getOriginTrials","setDeviceMetricsOverride","setDeviceOrientationOverride","setFontFamilies","setFontSizes","setDocumentContent","setDownloadBehavior","setGeolocationOverride","setLifecycleEventsEnabled","setTouchEmulationEnabled","startScreencast","stopLoading","crash","close","setWebLifecycleState","stopScreencast","produceCompilationCache","addCompilationCache","clearCompilationCache","setSPCTransactionMode","generateTestReport","waitForDebugger","setInterceptFileChooserDialog"]},{domain:"Performance",commands:["disable","enable","setTimeDomain","getMetrics"]},{domain:"PerformanceTimeline",commands:["enable"]},{domain:"Security",commands:["disable","enable","setIgnoreCertificateErrors","handleCertificateError","setOverrideCertificateErrors"]},{domain:"ServiceWorker",commands:["deliverPushMessage","disable","dispatchSyncEvent","dispatchPeriodicSyncEvent","enable","inspectWorker","setForceUpdateOnPageLoad","skipWaiting","startWorker","stopAllWorkers","stopWorker","unregister","updateRegistration"]},{domain:"Storage",commands:["getStorageKeyForFrame","clearDataForOrigin","getCookies","setCookies","clearCookies","getUsageAndQuota","overrideQuotaForOrigin","trackCacheStorageForOrigin","trackIndexedDBForOrigin","untrackCacheStorageForOrigin","untrackIndexedDBForOrigin","getTrustTokens","clearTrustTokens","getInterestGroupDetails","setInterestGroupTracking"]},{domain:"SystemInfo",commands:["getInfo","getProcessInfo"]},{domain:"Target",commands:["activateTarget","attachToTarget","attachToBrowserTarget","closeTarget","exposeDevToolsProtocol","createBrowserContext","getBrowserContexts","createTarget","detachFromTarget","disposeBrowserContext","getTargetInfo","getTargets","sendMessageToTarget","setAutoAttach","autoAttachRelated","setDiscoverTargets","setRemoteLocations"]},{domain:"Tethering",commands:["bind","unbind"]},{domain:"Tracing",commands:["end","getCategories","recordClockSyncMarker","requestMemoryDump","start"]},{domain:"Fetch",commands:["disable","enable","failRequest","fulfillRequest","continueRequest","continueWithAuth","continueResponse","getResponseBody","takeResponseBodyAsStream"]},{domain:"WebAudio",commands:["enable","disable","getRealtimeData"]},{domain:"WebAuthn",commands:["enable","disable","addVirtualAuthenticator","removeVirtualAuthenticator","addCredential","getCredential","getCredentials","removeCredential","clearCredentials","setUserVerified","setAutomaticPresenceSimulation"]},{domain:"Media",commands:["enable","disable"]},{domain:"Console",commands:["clearMessages","disable","enable"]},{domain:"Debugger",commands:["continueToLocation","disable","enable","evaluateOnCallFrame","getPossibleBreakpoints","getScriptSource","getWasmBytecode","getStackTrace","pause","pauseOnAsyncCall","removeBreakpoint","restartFrame","resume","searchInContent","setAsyncCallStackDepth","setBlackboxPatterns","setBlackboxedRanges","setBreakpoint","setInstrumentationBreakpoint","setBreakpointByUrl","setBreakpointOnFunctionCall","setBreakpointsActive","setPauseOnExceptions","setReturnValue","setScriptSource","setSkipAllPauses","setVariableValue","stepInto","stepOut","stepOver"]},{domain:"HeapProfiler",commands:["addInspectedHeapObject","collectGarbage","disable","enable","getHeapObjectId","getObjectByHeapObjectId","getSamplingProfile","startSampling","startTrackingHeapObjects","stopSampling","stopTrackingHeapObjects","takeHeapSnapshot"]},{domain:"Profiler",commands:["disable","enable","getBestEffortCoverage","setSamplingInterval","start","startPreciseCoverage","startTypeProfile","stop","stopPreciseCoverage","stopTypeProfile","takePreciseCoverage","takeTypeProfile"]},{domain:"Runtime",commands:["awaitPromise","callFunctionOn","compileScript","disable","discardConsoleEntries","enable","evaluate","getIsolateId","getHeapUsage","getProperties","globalLexicalScopeNames","queryObjects","releaseObject","releaseObjectGroup","runIfWaitingForDebugger","runScript","setAsyncCallStackDepth","setCustomObjectFormatterEnabled","setMaxCallStackSizeToCapture","terminateExecution","addBinding","removeBinding","getExceptionDetails"]},{domain:"Schema",commands:["getDomains"]}],Lt=new Map;class Zt extends St{_client;constructor(e){super(),this._client=e}}for(let e of At){class t extends Zt{constructor(e){super(e)}}for(let n of e.commands)Object.defineProperty(t.prototype,n,{value:async function(t){return await this._client.sendCommand(`${e.domain}.${n}`,t)}});Lt.set(e.domain,t)}class Bt extends St{_cdpConnection;_sessionId;_domains;constructor(e,t){super(),this._cdpConnection=e,this._sessionId=t,this._domains=new Map;for(const[e,t]of Lt.entries())this._domains.set(e,new t(this)),Object.defineProperty(this,e,{get(){return this._domains.get(e)}})}sendCommand(e,t){return this._cdpConnection.sendCommand(e,t,this._sessionId)}_onCdpEvent(e,t){this.emit("event",e,t);const[n,s]=e.split("."),a=this._domains.get(n);a&&a.emit(s,t)}}function Ft(e,t){return new Bt(e,t)}const zt=e("cdp");class Vt{_transport;_browserCdpClient;_sessionCdpClients=new Map;_commandCallbacks=new Map;_nextId;constructor(e){this._transport=e,this._nextId=0,this._transport.setOnMessage(this._onMessage),this._browserCdpClient=Ft(this,null)}close(){this._transport.close();for(const[e,{reject:t}]of this._commandCallbacks)t(new Error("Disconnected"));this._commandCallbacks.clear(),this._sessionCdpClients.clear()}browserClient(){return this._browserCdpClient}getCdpClient(e){const t=this._sessionCdpClients.get(e);if(!t)throw new Error("Unknown CDP session ID");return t}sendCommand(e,t,n){return new Promise(((s,a)=>{const r=this._nextId++;this._commandCallbacks.set(r,{resolve:s,reject:a});let i={id:r,method:e,params:t};n&&(i.sessionId=n);const o=JSON.stringify(i);this._transport.sendMessage(o),zt("sent > "+o)}))}_onMessage=async e=>{zt("received < "+e);const t=JSON.parse(e);if("Target.attachedToTarget"===t.method){const{sessionId:e}=t.params;this._sessionCdpClients.set(e,Ft(this,e))}else if("Target.detachedFromTarget"===t.method){const{sessionId:e}=t.params;this._sessionCdpClients.get(e)&&this._sessionCdpClients.delete(e)}if(void 0!==t.id){const e=this._commandCallbacks.get(t.id);e&&(t.result?e.resolve(t.result):t.error&&e.reject(t.error))}else if(t.method){const e=t.sessionId?this._sessionCdpClients.get(t.sessionId):this._browserCdpClient;e&&e._onCdpEvent(t.method,t.params||{})}}}const Ut=e("bidi");class $t extends St{_transport;constructor(e){super(),this._transport=e,this._transport.setOnMessage(this.#ee)}async sendMessage(e,t){null!==t&&(e.channel=t);const n=JSON.stringify(e);Ut("sent > "+n),this._transport.sendMessage(n)}close(){this._transport.close()}#ee=async e=>{let t;Ut("received < "+e);try{t=this.#re(e)}catch(t){return void this.#ie(e,"invalid argument",t.message,null)}this.emit("message",t)};#ie(e,t,n,s){const a=this.#oe(e,t,n);this.sendMessage(a,s)}#ce(e){return null===e?"null":Array.isArray(e)?"array":typeof e}#oe(e,t,n){let s;try{const t=JSON.parse(e);"object"===this.#ce(t)&&"id"in t&&(s=t.id)}catch{}return{id:s,error:t,message:n}}#re(e){let t;try{t=JSON.parse(e)}catch{throw new Error("Cannot parse data as JSON")}const n=this.#ce(t);if("object"!==n)throw new Error(`Expected JSON object but got ${n}`);const{id:s,method:a,params:r,channel:i}=t,o=this.#ce(s);if("number"!==o||!Number.isInteger(s)||s<0)throw new Error(`Expected unsigned integer but got ${o}`);const c=this.#ce(a);if("string"!==c)throw new Error(`Expected string method but got ${c}`);const d=this.#ce(r);if("object"!==d)throw new Error(`Expected object params but got ${d}`);if(void 0!==i){const e=this.#ce(i);if("string"!==e)throw new Error(`Expected string channel but got ${e}`)}return{id:s,method:a,params:r,channel:i}}}class Wt{#de=0;#le=new Map;getChannelsSubscribedToEvent(e,t){return Array.from(this.#le.keys()).map((n=>({priority:this.#ue(e,t,n),channel:n}))).filter((({priority:e,channel:t})=>null!==e)).sort(((e,t)=>e.priority-t.priority)).map((({priority:e,channel:t})=>t))}#ue(e,t,n){const s=this.#le.get(n);if(void 0===s)return null;let a=[s.get(null)?.get(e),s.get(t)?.get(e)].filter((e=>void 0!==e));return 0===a.length?null:Math.min(...a)}subscribe(e,t,n){this.#le.has(n)||this.#le.set(n,new Map);const s=this.#le.get(n);s.has(t)||s.set(t,new Map);const a=s.get(t);a.has(e)||a.set(e,this.#de++)}unsubscribe(e,t,n){if(!this.#le.has(n))return;const s=this.#le.get(n);if(!s.has(t))return;const a=s.get(t);a.delete(e),0===a.size&&s.delete(e),0===s.size&&this.#le.delete(n)}}class Kt{#pe;#M;constructor(e){this.#M=e,this.#pe=new Wt}async sendEvent(e,t){const n=this.#pe.getChannelsSubscribedToEvent(e.method,t);for(const t of n)await this.#M.sendMessage(e,t)}async subscribe(e,t,n){for(let s of e)for(let e of t)this.#pe.subscribe(s,e,n)}async unsubscribe(e,t,n){for(let s of e)for(let e of t)this.#pe.unsubscribe(s,e,n)}}
 /**
      * Copyright 2021 Google LLC.
      * Copyright (c) Microsoft Corporation.
@@ -16,5 +16,5 @@
      * limitations under the License.
      *
      * @license
-     */const Kt=e("system"),Ht=async function(){return await new Promise((e=>{window.setSelfTargetId=function(t){Kt("current target ID: "+t),e(t)}}))}();(async()=>{window.document.documentElement.innerHTML="<h1>Bidi mapper runs here!</h1><h2>Don't close.</h2>",window.document.title="BiDi Mapper";const e=function(){class e{_onMessage=null;constructor(){window.cdp.onmessage=e=>{this._onMessage&&this._onMessage.call(null,e)}}setOnMessage(e){this._onMessage=e}async sendMessage(e){window.cdp.send(e)}close(){this._onMessage=null,window.cdp.onmessage=null}}return new Vt(new e)}(),t=e.browserClient(),n=function(){class e{_onMessage=null;constructor(){window.onBidiMessage=e=>{this._onMessage&&this._onMessage.call(null,e)}}setOnMessage(e){this._onMessage=e}async sendMessage(e){window.sendBidiResponse(e)}close(){this._onMessage=null,window.onBidiMessage=null}}return new Ut(new e)}(),s=new Wt(n),a=await Ht;Ct.run(e,n,s,a),await async function(e){await e.Target.setDiscoverTargets({discover:!0}),await e.Target.setAutoAttach({autoAttach:!0,waitForDebuggerOnStart:!0,flatten:!0}),await Promise.all(gt.getTopLevelContexts().map((e=>e.awaitLoaded())))}(t),Kt("launched"),n.sendMessage({launched:!0})})()}();
+     */const Ht=e("system"),Jt=async function(){return await new Promise((e=>{window.setSelfTargetId=function(t){Ht("current target ID: "+t),e(t)}}))}();(async()=>{window.document.documentElement.innerHTML="<h1>Bidi mapper runs here!</h1><h2>Don't close.</h2>",window.document.title="BiDi Mapper";const e=function(){class e{_onMessage=null;constructor(){window.cdp.onmessage=e=>{this._onMessage&&this._onMessage.call(null,e)}}setOnMessage(e){this._onMessage=e}async sendMessage(e){window.cdp.send(e)}close(){this._onMessage=null,window.cdp.onmessage=null}}return new Vt(new e)}(),t=e.browserClient(),n=function(){class e{_onMessage=null;constructor(){window.onBidiMessage=e=>{this._onMessage&&this._onMessage.call(null,e)}}setOnMessage(e){this._onMessage=e}async sendMessage(e){window.sendBidiResponse(e)}close(){this._onMessage=null,window.onBidiMessage=null}}return new $t(new e)}(),s=new Kt(n),a=await Jt;Ct.run(e,n,s,a),await async function(e){await e.Target.setDiscoverTargets({discover:!0}),await e.Target.setAutoAttach({autoAttach:!0,waitForDebuggerOnStart:!0,flatten:!0}),await Promise.all(gt.getTopLevelContexts().map((e=>e.awaitLoaded())))}(t),Ht("launched"),n.sendMessage({launched:!0},null)})()}();
 //# sourceMappingURL=mapper.js.map
diff --git a/third_party/blink/common/README.md b/third_party/blink/common/README.md
index 8dadb84..97f0f3b 100644
--- a/third_party/blink/common/README.md
+++ b/third_party/blink/common/README.md
@@ -18,4 +18,4 @@
 * Use Chromium's common types (e.g. //base ones) rather than Blink's ones
   (e.g. WTF types)
 
-* Follow [Chromium's common coding style guide](https://chromium.googlesource.com/chromium/src/+/master/styleguide/c++/c++.md)
+* Follow [Chromium's common coding style guide](https://chromium.googlesource.com/chromium/src/+/main/styleguide/c++/c++.md)
diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/features.cc
index 998a1b0..043ccce 100644
--- a/third_party/blink/common/features.cc
+++ b/third_party/blink/common/features.cc
@@ -1644,7 +1644,7 @@
              base::FEATURE_DISABLED_BY_DEFAULT);
 
 const base::FeatureParam<int> kDocumentMaxEventNodePathCachedEntries{
-    &kDocumentEventNodePathCaching, "max-cache-entries", 100};
+    &kDocumentEventNodePathCaching, "max-cache-entries", 10};
 
 BASE_FEATURE(kPostMessageDifferentPartitionSameOriginBlocked,
              "PostMessageDifferentPartitionSameOriginBlocked",
diff --git a/third_party/blink/perf_tests/layout/multicol/balance-list-items-with-tall-marker.html b/third_party/blink/perf_tests/layout/multicol/balance-list-items-with-tall-marker.html
new file mode 100644
index 0000000..96b0156
--- /dev/null
+++ b/third_party/blink/perf_tests/layout/multicol/balance-list-items-with-tall-marker.html
@@ -0,0 +1,117 @@
+<!DOCTYPE html>
+<script src="../../resources/runner.js"></script>
+<style>
+  ul li li::marker {
+    content:'x';
+    font-size: 120%;
+  }
+  #target > * {
+    break-before: avoid;
+    break-inside: avoid;
+  }
+</style>
+<pre id="log"></pre>
+<div style="overflow:hidden; width:0; height:0;">
+  <ul id="target" style="columns:3; orphans:1; widows:1; width:40em;">
+    <li>
+      <ul>
+        <li>List item 1</li>
+        <li>List item 2</li>
+        <li>List item 3</li>
+      </ul>
+    </li>
+    <li>
+      <ul>
+        <li>List item 4</li>
+        <li>List item 5</li>
+        <li>List item 6</li>
+        <li>List item 7</li>
+        <li>List item 8</li>
+        <li>List item 9</li>
+        <li>List item 10</li>
+        <li>List item 11</li>
+        <li>List item 12</li>
+        <li>List item 13</li>
+        <li>List item 14</li>
+        <li>List item 15</li>
+        <li>List item 16</li>
+        <li>List item 17</li>
+        <li>List item 18</li>
+        <li>List item 19</li>
+        <li>List item 20</li>
+        <li>List item 21</li>
+        <li>List item 22</li>
+        <li>List item 23</li>
+        <li>List item 24</li>
+        <li>List item 25</li>
+        <li>List item 26</li>
+        <li>List item 27</li>
+      </ul>
+    </li>
+    <li>
+      <ul>
+        <li>List item 28</li>
+        <li>List item 29</li>
+        <li>List item 30</li>
+        <li>List item 31</li>
+        <li>List item 32</li>
+        <li>List item 33</li>
+        <li>List item 34</li>
+        <li>List item 35</li>
+        <li>List item 36</li>
+      </ul>
+    </li>
+    <li>
+      <ul>
+        <li>List item 37</li>
+        <li>List item 38</li>
+        <li>List item 39</li>
+        <li>List item 40</li>
+        <li>List item 41</li>
+        <li>List item 42</li>
+        <li>List item 43</li>
+        <li>List item 44</li>
+        <li>List item 45</li>
+        <li>List item 46</li>
+        <li>List item 47</li>
+        <li>List item 48</li>
+        <li>List item 49</li>
+        <li>List item 50</li>
+        <li>List item 51</li>
+        <li>List item 52</li>
+        <li>List item 53</li>
+        <li>List item 54</li>
+        <li>List item 55</li>
+        <li>List item 56</li>
+        <li>List item 57</li>
+      </ul>
+    </li>
+    <li>
+      <h4>Heading</h4>
+      <ul>
+        <li>List item 58</li>
+        <li>List item 59</li>
+        <li>List item 60</li>
+        <li>List item 61</li>
+        <li>List item 62</li>
+        <li>List item 63</li>
+      </ul>
+    </li>
+  </ul>
+</div>
+<script>
+  var target = document.getElementById("target");
+  var style = target.style;
+
+  function test() {
+    style.display = "block";
+    PerfTestRunner.forceLayout();
+    style.display = "none";
+    PerfTestRunner.forceLayout();
+  }
+
+  PerfTestRunner.measureRunsPerSecond({
+    description: "Lists items with tall markers in balanced multicol.",
+    run: test
+  });
+</script>
diff --git a/third_party/blink/public/devtools_protocol/browser_protocol.pdl b/third_party/blink/public/devtools_protocol/browser_protocol.pdl
index e93ce386..7fea61a2 100644
--- a/third_party/blink/public/devtools_protocol/browser_protocol.pdl
+++ b/third_party/blink/public/devtools_protocol/browser_protocol.pdl
@@ -10036,7 +10036,10 @@
       optional array of HeaderEntry responseHeaders
       # If the intercepted request had a corresponding Network.requestWillBeSent event fired for it,
       # then this networkId will be the same as the requestId present in the requestWillBeSent event.
-      optional RequestId networkId
+      optional Network.RequestId networkId
+      # If the request is due to a redirect response from the server, the id of the request that
+      # has caused the redirect.
+      experimental optional RequestId redirectedRequestId
 
   # Issued when the domain is enabled with handleAuthRequests set to true.
   # The request is paused until client responds with continueWithAuth.
diff --git a/third_party/blink/public/mojom/manifest/manifest.mojom b/third_party/blink/public/mojom/manifest/manifest.mojom
index 798ab076..a5e91fe 100644
--- a/third_party/blink/public/mojom/manifest/manifest.mojom
+++ b/third_party/blink/public/mojom/manifest/manifest.mojom
@@ -186,6 +186,9 @@
 
   // The form factor for which a given screenshot applies.
   FormFactor form_factor;
+
+  // This serves as the accessible name of the screenshot.
+  mojo_base.mojom.String16? label;
 };
 
 // Structure representing a share target file.
diff --git a/third_party/blink/renderer/core/animation/document_animations.cc b/third_party/blink/renderer/core/animation/document_animations.cc
index a6988a0..6dfcaf0 100644
--- a/third_party/blink/renderer/core/animation/document_animations.cc
+++ b/third_party/blink/renderer/core/animation/document_animations.cc
@@ -45,6 +45,7 @@
 #include "third_party/blink/renderer/core/dom/document.h"
 #include "third_party/blink/renderer/core/dom/element.h"
 #include "third_party/blink/renderer/core/dom/node_computed_style.h"
+#include "third_party/blink/renderer/core/execution_context/agent.h"
 #include "third_party/blink/renderer/core/frame/local_frame.h"
 #include "third_party/blink/renderer/core/frame/local_frame_view.h"
 #include "third_party/blink/renderer/core/frame/settings.h"
@@ -52,8 +53,8 @@
 #include "third_party/blink/renderer/core/page/page.h"
 #include "third_party/blink/renderer/core/page/page_animator.h"
 #include "third_party/blink/renderer/core/style/computed_style.h"
-#include "third_party/blink/renderer/platform/bindings/microtask.h"
 #include "third_party/blink/renderer/platform/heap/persistent.h"
+#include "third_party/blink/renderer/platform/scheduler/public/event_loop.h"
 
 namespace blink {
 
@@ -101,7 +102,7 @@
   // This is to ensure that any microtasks queued up as a result of resolving or
   // rejecting Promise objects as part of updating timelines run their callbacks
   // prior to dispatching animation events and generating the next main frame.
-  Microtask::PerformCheckpoint(V8PerIsolateData::MainThreadIsolate());
+  document_->GetAgent()->event_loop()->PerformMicrotaskCheckpoint();
 }
 
 bool DocumentAnimations::NeedsAnimationTimingUpdate() {
@@ -180,13 +181,17 @@
   return animations;
 }
 
-void DocumentAnimations::ValidateTimelines() {
+bool DocumentAnimations::ValidateTimelines() {
+  bool all_timelines_valid = true;
   for (auto& timeline : unvalidated_timelines_) {
-    if (auto* scroll_timeline = DynamicTo<ScrollTimeline>(timeline.Get()))
-      scroll_timeline->ValidateState();
+    if (auto* scroll_timeline = DynamicTo<ScrollTimeline>(timeline.Get())) {
+      bool timeline_valid = scroll_timeline->ValidateState();
+      all_timelines_valid &= timeline_valid;
+    }
   }
 
   unvalidated_timelines_.clear();
+  return all_timelines_valid;
 }
 
 void DocumentAnimations::DetachCompositorTimelines() {
@@ -279,6 +284,8 @@
         animations_to_remove.push_back(*anim_it);
     }
   }
+  scoped_refptr<scheduler::EventLoop> event_loop =
+      document_->GetAgent()->event_loop();
 
   // The list of animations for removal is constructed in reverse composite
   // ordering for efficiency. Flip the ordering to ensure that events are
@@ -287,7 +294,7 @@
   for (auto it = animations_to_remove.rbegin();
        it != animations_to_remove.rend(); it++) {
     Animation* animation = *it;
-    Microtask::EnqueueMicrotask(WTF::BindOnce(
+    event_loop->EnqueueMicrotask(WTF::BindOnce(
         &Animation::RemoveReplacedAnimation, WrapWeakPersistent(animation)));
   }
 }
diff --git a/third_party/blink/renderer/core/animation/document_animations.h b/third_party/blink/renderer/core/animation/document_animations.h
index a8aed33..75787fc2 100644
--- a/third_party/blink/renderer/core/animation/document_animations.h
+++ b/third_party/blink/renderer/core/animation/document_animations.h
@@ -89,8 +89,10 @@
   // the timeline are marked for recalc, which causes the style/layout phase
   // to run again.
   //
+  // Returns true if all timeline states are correct, otherwise returns false.
+  //
   // https://github.com/w3c/csswg-drafts/issues/5261
-  void ValidateTimelines();
+  bool ValidateTimelines();
 
   // Detach compositor timelines to prevent further ticking of any animations
   // associated with the timelines.  Detached timelines may be subsequently
diff --git a/third_party/blink/renderer/core/animation/scroll_timeline.cc b/third_party/blink/renderer/core/animation/scroll_timeline.cc
index 471de17..57b6f4a4 100644
--- a/third_party/blink/renderer/core/animation/scroll_timeline.cc
+++ b/third_party/blink/renderer/core/animation/scroll_timeline.cc
@@ -495,12 +495,13 @@
     animation->InvalidateEffectTargetStyle();
 }
 
-void ScrollTimeline::ValidateState() {
+bool ScrollTimeline::ValidateState() {
   auto state = ComputeTimelineState();
   if (timeline_state_snapshotted_ == state)
-    return;
+    return true;
   timeline_state_snapshotted_ = state;
   InvalidateEffectTargetStyle();
+  return false;
 }
 
 cc::AnimationTimeline* ScrollTimeline::EnsureCompositorTimeline() {
diff --git a/third_party/blink/renderer/core/animation/scroll_timeline.h b/third_party/blink/renderer/core/animation/scroll_timeline.h
index f063869..d1ebc757 100644
--- a/third_party/blink/renderer/core/animation/scroll_timeline.h
+++ b/third_party/blink/renderer/core/animation/scroll_timeline.h
@@ -118,7 +118,7 @@
   void InvalidateEffectTargetStyle();
 
   // See DocumentAnimations::ValidateTimelines
-  void ValidateState();
+  bool ValidateState();
 
   cc::AnimationTimeline* EnsureCompositorTimeline() override;
   void UpdateCompositorTimeline() override;
diff --git a/third_party/blink/renderer/core/animation_frame/worker_animation_frame_provider.cc b/third_party/blink/renderer/core/animation_frame/worker_animation_frame_provider.cc
index c2ae1f7..f2e69a1f 100644
--- a/third_party/blink/renderer/core/animation_frame/worker_animation_frame_provider.cc
+++ b/third_party/blink/renderer/core/animation_frame/worker_animation_frame_provider.cc
@@ -5,9 +5,10 @@
 #include "third_party/blink/renderer/core/animation_frame/worker_animation_frame_provider.h"
 
 #include "base/trace_event/trace_event.h"
+#include "third_party/blink/renderer/core/execution_context/agent.h"
 #include "third_party/blink/renderer/core/offscreencanvas/offscreen_canvas.h"
 #include "third_party/blink/renderer/core/timing/worker_global_scope_performance.h"
-#include "third_party/blink/renderer/platform/bindings/microtask.h"
+#include "third_party/blink/renderer/platform/scheduler/public/event_loop.h"
 #include "third_party/blink/renderer/platform/wtf/cross_thread_functional.h"
 
 namespace blink {
@@ -42,7 +43,7 @@
                          TRACE_ID_GLOBAL(args.trace_id),
                          TRACE_EVENT_FLAG_FLOW_IN | TRACE_EVENT_FLAG_FLOW_OUT);
 
-  Microtask::EnqueueMicrotask(WTF::BindOnce(
+  context_->GetAgent()->event_loop()->EnqueueMicrotask(WTF::BindOnce(
       [](WeakPersistent<WorkerAnimationFrameProvider> provider,
          const viz::BeginFrameArgs& args) {
         if (!provider)
diff --git a/third_party/blink/renderer/core/dom/character_data.h b/third_party/blink/renderer/core/dom/character_data.h
index ac0212c..09a10d86 100644
--- a/third_party/blink/renderer/core/dom/character_data.h
+++ b/third_party/blink/renderer/core/dom/character_data.h
@@ -78,6 +78,17 @@
            type == kCreateProcessingInstruction || type == kCreateEditingText);
   }
 
+  CharacterData(TreeScope& tree_scope, String&& text, ConstructionType type)
+      : Node(&tree_scope, type), data_(std::move(text)) {
+    DCHECK(type == kCreateComment || type == kCreateText ||
+           type == kCreateCdataSection ||
+           type == kCreateProcessingInstruction || type == kCreateEditingText);
+    DCHECK(absl::holds_alternative<String>(data_));
+    if (absl::get<String>(data_).IsNull()) {
+      data_ = g_empty_string;
+    }
+  }
+
   void SetDataWithoutUpdate(const String& data) {
     DCHECK(!data.IsNull());
     data_ = data;
diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc
index 11c80b9..ac49e72 100644
--- a/third_party/blink/renderer/core/dom/document.cc
+++ b/third_party/blink/renderer/core/dom/document.cc
@@ -703,6 +703,7 @@
       pending_sheet_layout_(kNoLayoutWithPendingSheets),
       dom_window_(initializer.GetWindow()),
       execution_context_(initializer.GetExecutionContext()),
+      agent_(execution_context_ ? execution_context_->GetAgent() : nullptr),
       context_features_(ContextFeatures::DefaultSwitch()),
       http_refresh_scheduler_(MakeGarbageCollected<HttpRefreshScheduler>(this)),
       well_formed_(false),
@@ -6905,6 +6906,10 @@
   return execution_context_.Get();
 }
 
+Agent* Document::GetAgent() const {
+  return agent_.Get();
+}
+
 Attr* Document::createAttribute(const AtomicString& name,
                                 ExceptionState& exception_state) {
   if (!IsValidName(name)) {
@@ -8416,6 +8421,7 @@
   visitor->Trace(pending_animations_);
   visitor->Trace(worklet_animation_controller_);
   visitor->Trace(execution_context_);
+  visitor->Trace(agent_);
   visitor->Trace(canvas_font_cache_);
   visitor->Trace(intersection_observer_controller_);
   visitor->Trace(snap_coordinator_);
diff --git a/third_party/blink/renderer/core/dom/document.h b/third_party/blink/renderer/core/dom/document.h
index 02d56c9f..e61fdc8 100644
--- a/third_party/blink/renderer/core/dom/document.h
+++ b/third_party/blink/renderer/core/dom/document.h
@@ -121,6 +121,7 @@
 
 namespace blink {
 
+class Agent;
 class AnchorElementInteractionTracker;
 class AnimationClock;
 class AXContext;
@@ -1294,6 +1295,9 @@
   // See `execution_context_` for details.
   ExecutionContext* GetExecutionContext() const final;
 
+  // Return the agent. Can only be null in unit tests.
+  Agent* GetAgent() const;
+
   ScriptRunner* GetScriptRunner() { return script_runner_.Get(); }
   const base::ElapsedTimer& GetStartTime() const { return start_time_; }
 
@@ -2167,6 +2171,10 @@
   // in unit tests).
   Member<ExecutionContext> execution_context_;
 
+  // Documents should always have an agent except those created with
+  // DocumentInit::ForTest.
+  Member<Agent> agent_;
+
   Member<ResourceFetcher> fetcher_;
   Member<DocumentParser> parser_;
   Member<ContextFeatures> context_features_;
diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/renderer/core/dom/element.cc
index 1938f92..0f95e75 100644
--- a/third_party/blink/renderer/core/dom/element.cc
+++ b/third_party/blink/renderer/core/dom/element.cc
@@ -861,22 +861,7 @@
     return;
   }
 
-  const AtomicString id = element->GetIdAttribute();
-
-  // In order to sprout a non-empty content attribute from an explicitly set
-  // attr-element, |element| must:
-  //  1) have a valid ID attribute, and
-  //  2) be the first element in tree order with this ID.
-  // Otherwise the content attribute will reflect the empty string.
-  //
-  // Note that the explicitly set attr-element is still set. See the spec for
-  // more details:
-  // https://whatpr.org/html/3917/common-dom-interfaces.html#reflecting-content-attributes-in-idl-attributes
-  if (id.IsNull() || GetTreeScope() != element->GetTreeScope() ||
-      GetTreeScope().getElementById(id) != element)
-    setAttribute(name, g_empty_atom);
-  else
-    setAttribute(name, id);
+  setAttribute(name, g_empty_atom);
 
   auto result = explicitly_set_attr_elements_map->insert(name, nullptr);
   if (result.is_new_entry) {
@@ -931,6 +916,8 @@
     return;
   }
 
+  setAttribute(name, g_empty_atom);
+
   // Get or create element array, and remove any pre-existing elements.
   //
   // Note that this code intentionally performs two look ups on |name| within
@@ -947,39 +934,11 @@
   } else {
     stored_elements->clear();
   }
-  SpaceSplitString value;
 
   for (auto element : *given_elements) {
-    // If |value| is null and |stored_elements| is non-empty, then a previous
-    // element must have been invalid wrt. the content attribute string rules,
-    // and therefore the content attribute string should reflect the empty
-    // string. This means we can stop trying to compute the content attribute
-    // string.
-    if (value.IsNull() && !stored_elements->empty()) {
-      stored_elements->insert(element);
-      continue;
-    }
-
     stored_elements->insert(element);
-    const AtomicString given_element_id = element->GetIdAttribute();
-
-    // We compute the content attribute string as a space separated string of
-    // the given |element| ids. Every |element| in |given_elements| must have an
-    // id, must be in the same tree scope and must be the first id in tree order
-    // with that id, otherwise the content attribute should reflect the empty
-    // string.
-    if (given_element_id.IsNull() ||
-        GetTreeScope() != element->GetTreeScope() ||
-        GetTreeScope().getElementById(given_element_id) != element) {
-      value.Clear();
-      continue;
-    }
-
-    // Whitespace between elements is added when the string is serialized.
-    value.Add(given_element_id);
   }
 
-  setAttribute(name, value.SerializeToString());
   if (isConnected()) {
     if (AXObjectCache* cache = GetDocument().ExistingAXObjectCache())
       cache->HandleAttributeChanged(name, this);
@@ -4065,7 +4024,16 @@
     // If we are re-attaching us or any of our descendants, we need to attach
     // the descendants before we know if this element generates a ::first-letter
     // and which element the ::first-letter inherits style from.
-    if (!child_change.ReattachLayoutTree() && !ChildNeedsReattachLayoutTree()) {
+    if (child_change.ReattachLayoutTree()) {
+      // Make sure we reach this element during reattachment. There are cases
+      // where we compute and store the styles for a subtree but stop attaching
+      // layout objects at an element that does not allow child boxes. Marking
+      // dirty for re-attachment means we AttachLayoutTree() will still traverse
+      // down to all elements with a ComputedStyle which clears the
+      // NeedsStyleRecalc() flag.
+      if (PseudoElement* first_letter = GetPseudoElement(kPseudoIdFirstLetter))
+        first_letter->SetNeedsReattachLayoutTree();
+    } else if (!ChildNeedsReattachLayoutTree()) {
       UpdateFirstLetterPseudoElement(StyleUpdatePhase::kRecalc,
                                      child_recalc_context);
     }
diff --git a/third_party/blink/renderer/core/dom/text.cc b/third_party/blink/renderer/core/dom/text.cc
index b3fd1a4..0a8a5ea 100644
--- a/third_party/blink/renderer/core/dom/text.cc
+++ b/third_party/blink/renderer/core/dom/text.cc
@@ -49,6 +49,10 @@
   return MakeGarbageCollected<Text>(document, data, kCreateText);
 }
 
+Text* Text::Create(Document& document, String&& data) {
+  return MakeGarbageCollected<Text>(document, std::move(data), kCreateText);
+}
+
 Text* Text::CreateEditingText(Document& document, const String& data) {
   return MakeGarbageCollected<Text>(document, data, kCreateEditingText);
 }
diff --git a/third_party/blink/renderer/core/dom/text.h b/third_party/blink/renderer/core/dom/text.h
index da6c7a0..ecda807 100644
--- a/third_party/blink/renderer/core/dom/text.h
+++ b/third_party/blink/renderer/core/dom/text.h
@@ -42,11 +42,15 @@
   static const unsigned kDefaultLengthLimit = 1 << 16;
 
   static Text* Create(Document&, const String&);
+  static Text* Create(Document&, String&&);
   static Text* CreateEditingText(Document&, const String&);
 
   Text(TreeScope& tree_scope, const String& data, ConstructionType type)
       : CharacterData(tree_scope, data, type) {}
 
+  Text(TreeScope& tree_scope, String&& data, ConstructionType type)
+      : CharacterData(tree_scope, std::move(data), type) {}
+
   LayoutText* GetLayoutObject() const;
 
   // mergeNextSiblingNodesIfPossible() merges next sibling nodes if possible
diff --git a/third_party/blink/renderer/core/frame/local_dom_window.cc b/third_party/blink/renderer/core/frame/local_dom_window.cc
index a032a06d..fe5e2a6 100644
--- a/third_party/blink/renderer/core/frame/local_dom_window.cc
+++ b/third_party/blink/renderer/core/frame/local_dom_window.cc
@@ -131,7 +131,6 @@
 #include "third_party/blink/renderer/core/trustedtypes/trusted_types_util.h"
 #include "third_party/blink/renderer/platform/back_forward_cache_buffer_limit_tracker.h"
 #include "third_party/blink/renderer/platform/bindings/exception_messages.h"
-#include "third_party/blink/renderer/platform/bindings/microtask.h"
 #include "third_party/blink/renderer/platform/bindings/script_state.h"
 #include "third_party/blink/renderer/platform/bindings/source_location.h"
 #include "third_party/blink/renderer/platform/heap/garbage_collected.h"
@@ -139,6 +138,7 @@
 #include "third_party/blink/renderer/platform/network/network_state_notifier.h"
 #include "third_party/blink/renderer/platform/runtime_enabled_features.h"
 #include "third_party/blink/renderer/platform/scheduler/public/dummy_schedulers.h"
+#include "third_party/blink/renderer/platform/scheduler/public/event_loop.h"
 #include "third_party/blink/renderer/platform/scheduler/public/post_cross_thread_task.h"
 #include "third_party/blink/renderer/platform/scheduler/public/thread_scheduler.h"
 #include "third_party/blink/renderer/platform/storage/blink_storage_key.h"
@@ -1882,7 +1882,7 @@
   if (tracker && script_state->World().IsMainWorld()) {
     callback->SetParentTaskId(tracker->RunningTaskAttributionId(script_state));
   }
-  Microtask::EnqueueMicrotask(
+  GetAgent()->event_loop()->EnqueueMicrotask(
       WTF::BindOnce(&V8VoidFunction::InvokeAndReportException,
                     WrapPersistent(callback), nullptr));
 }
diff --git a/third_party/blink/renderer/core/frame/local_frame_back_forward_cache_test.cc b/third_party/blink/renderer/core/frame/local_frame_back_forward_cache_test.cc
index d219489..4a492ad 100644
--- a/third_party/blink/renderer/core/frame/local_frame_back_forward_cache_test.cc
+++ b/third_party/blink/renderer/core/frame/local_frame_back_forward_cache_test.cc
@@ -10,6 +10,7 @@
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/blink/public/platform/scheduler/test/renderer_scheduler_test_support.h"
 #include "third_party/blink/renderer/bindings/core/v8/v8_binding_for_core.h"
+#include "third_party/blink/renderer/core/execution_context/agent.h"
 #include "third_party/blink/renderer/core/frame/frame_test_helpers.h"
 #include "third_party/blink/renderer/core/frame/local_dom_window.h"
 #include "third_party/blink/renderer/core/frame/settings.h"
@@ -18,6 +19,7 @@
 #include "third_party/blink/renderer/core/testing/dummy_page_holder.h"
 #include "third_party/blink/renderer/core/testing/fake_local_frame_host.h"
 #include "third_party/blink/renderer/platform/bindings/microtask.h"
+#include "third_party/blink/renderer/platform/scheduler/public/event_loop.h"
 #include "third_party/blink/renderer/platform/testing/runtime_enabled_features_test_helpers.h"
 
 namespace blink {
@@ -104,7 +106,7 @@
   //   2) C++ closure
   // The case 1) should never happen when the frame is in bfcache. On the other
   // hand, the case 2) can happen. See https://crbug.com/994169
-  Microtask::EnqueueMicrotask(base::BindOnce(
+  frame->DomWindow()->GetAgent()->event_loop()->EnqueueMicrotask(base::BindOnce(
       [](LocalFrame* frame) {
         ClassicScript::CreateUnspecifiedScript("console.log('hi');")
             ->RunScript(frame->DomWindow());
diff --git a/third_party/blink/renderer/core/frame/local_frame_view.cc b/third_party/blink/renderer/core/frame/local_frame_view.cc
index c808b4e..63fde0a 100644
--- a/third_party/blink/renderer/core/frame/local_frame_view.cc
+++ b/third_party/blink/renderer/core/frame/local_frame_view.cc
@@ -2394,6 +2394,20 @@
       return;
     DCHECK(Lifecycle().GetState() >= DocumentLifecycle::kLayoutClean);
 
+    // ScrollTimelines may be associated with a source that never had a
+    // a chance to get a layout box at the time style was calculated; when
+    // this situation happens, RunScrollTimelineSteps will re-snapshot all
+    // affected timelines and dirty style for associated effect targets.
+    //
+    // https://github.com/w3c/csswg-drafts/issues/5261
+    if (RuntimeEnabledFeatures::CSSScrollTimelineEnabled() &&
+        should_run_scroll_timeline_steps) {
+      should_run_scroll_timeline_steps = false;
+      bool needs_to_repeat_lifecycle = RunScrollTimelineSteps();
+      if (needs_to_repeat_lifecycle)
+        continue;
+    }
+
     if (!GetLayoutView())
       return;
 
@@ -2437,20 +2451,6 @@
     // within the same lifecycle update.
     bool needs_to_repeat_lifecycle = false;
 
-    // ScrollTimelines may be associated with a source that never had a
-    // a chance to get a layout box at the time style was calculated; when
-    // this situation happens, RunScrollTimelineSteps will re-snapshot all
-    // affected timelines and dirty style for associated effect targets.
-    //
-    // https://github.com/w3c/csswg-drafts/issues/5261
-    if (RuntimeEnabledFeatures::CSSScrollTimelineEnabled() &&
-        should_run_scroll_timeline_steps) {
-      should_run_scroll_timeline_steps = false;
-      needs_to_repeat_lifecycle = RunScrollTimelineSteps();
-      if (needs_to_repeat_lifecycle)
-        continue;
-    }
-
     // ResizeObserver and post-layout IntersectionObserver observation
     // deliveries may dirty style and layout. RunResizeObserverSteps will return
     // true if any observer ran that may have dirtied style or layout;
@@ -2518,17 +2518,16 @@
   // TODO(crbug.com/1329159): Determine if the source for a view timeline has
   // changed, which may in turn require a fresh style/layout cycle.
 
-  DCHECK_GE(Lifecycle().GetState(), DocumentLifecycle::kPrePaintClean);
+  DCHECK_GE(Lifecycle().GetState(), DocumentLifecycle::kLayoutClean);
   bool re_run_lifecycles = false;
-  ForAllNonThrottledLocalFrameViews([&re_run_lifecycles](
-                                        LocalFrameView& frame_view) {
-    frame_view.GetFrame()
-        .GetDocument()
-        ->GetDocumentAnimations()
-        .ValidateTimelines();
-    re_run_lifecycles |=
-        (frame_view.Lifecycle().GetState() < DocumentLifecycle::kPrePaintClean);
-  });
+  ForAllNonThrottledLocalFrameViews(
+      [&re_run_lifecycles](LocalFrameView& frame_view) {
+        bool timelines_valid = frame_view.GetFrame()
+                                   .GetDocument()
+                                   ->GetDocumentAnimations()
+                                   .ValidateTimelines();
+        re_run_lifecycles |= !timelines_valid;
+      });
   return re_run_lifecycles;
 }
 
diff --git a/third_party/blink/renderer/core/fullscreen/fullscreen.cc b/third_party/blink/renderer/core/fullscreen/fullscreen.cc
index f2814d1..627bd4d 100644
--- a/third_party/blink/renderer/core/fullscreen/fullscreen.cc
+++ b/third_party/blink/renderer/core/fullscreen/fullscreen.cc
@@ -40,6 +40,7 @@
 #include "third_party/blink/renderer/core/dom/element_traversal.h"
 #include "third_party/blink/renderer/core/dom/events/event.h"
 #include "third_party/blink/renderer/core/dom/shadow_root.h"
+#include "third_party/blink/renderer/core/execution_context/agent.h"
 #include "third_party/blink/renderer/core/frame/local_dom_window.h"
 #include "third_party/blink/renderer/core/frame/local_frame.h"
 #include "third_party/blink/renderer/core/frame/local_frame_view.h"
@@ -55,10 +56,10 @@
 #include "third_party/blink/renderer/core/page/page.h"
 #include "third_party/blink/renderer/core/svg/svg_svg_element.h"
 #include "third_party/blink/renderer/platform/bindings/exception_messages.h"
-#include "third_party/blink/renderer/platform/bindings/microtask.h"
 #include "third_party/blink/renderer/platform/heap/garbage_collected.h"
 #include "third_party/blink/renderer/platform/instrumentation/use_counter.h"
 #include "third_party/blink/renderer/platform/runtime_enabled_features.h"
+#include "third_party/blink/renderer/platform/scheduler/public/event_loop.h"
 
 namespace blink {
 
@@ -745,7 +746,7 @@
   // but must still not synchronously change the fullscreen element. Instead
   // enqueue a microtask to continue.
   if (RequestFullscreenScope::RunningRequestFullscreen()) {
-    Microtask::EnqueueMicrotask(WTF::BindOnce(
+    document.GetAgent()->event_loop()->EnqueueMicrotask(WTF::BindOnce(
         [](Document* document, bool granted) {
           DCHECK(document);
           DidResolveEnterFullscreenRequest(*document, granted);
@@ -970,7 +971,7 @@
     // Note: We are past the "in parallel" point, and |ContinueExitFullscreen()|
     // will change script-observable state (document.fullscreenElement)
     // synchronously, so we have to continue asynchronously.
-    Microtask::EnqueueMicrotask(
+    doc.GetAgent()->event_loop()->EnqueueMicrotask(
         WTF::BindOnce(ContinueExitFullscreen, WrapPersistent(&doc),
                       WrapPersistent(resolver), false /* resize */));
   }
diff --git a/third_party/blink/renderer/core/html/custom/custom_element_definition_test.cc b/third_party/blink/renderer/core/html/custom/custom_element_definition_test.cc
index e20c3c69..0334426 100644
--- a/third_party/blink/renderer/core/html/custom/custom_element_definition_test.cc
+++ b/third_party/blink/renderer/core/html/custom/custom_element_definition_test.cc
@@ -10,11 +10,14 @@
 #include "third_party/blink/renderer/core/html/custom/custom_element_descriptor.h"
 #include "third_party/blink/renderer/core/html/custom/custom_element_reaction_test_helpers.h"
 #include "third_party/blink/renderer/core/html/custom/custom_element_test_helpers.h"
+#include "third_party/blink/renderer/core/testing/page_test_base.h"
 
 namespace blink {
 
 namespace {
 
+using CustomElementDefinitionTest = PageTestBase;
+
 class ConstructorFails : public TestCustomElementDefinition {
  public:
   ConstructorFails(const CustomElementDescriptor& descriptor)
@@ -27,8 +30,8 @@
 
 }  // namespace
 
-TEST(CustomElementDefinitionTest, upgrade_clearsReactionQueueOnFailure) {
-  Element& element = *CreateElement("a-a");
+TEST_F(CustomElementDefinitionTest, upgrade_clearsReactionQueueOnFailure) {
+  Element& element = *CreateElement("a-a").InDocument(&GetDocument());
   EXPECT_EQ(CustomElementState::kUndefined, element.GetCustomElementState())
       << "sanity check: this element should be ready to upgrade";
   {
@@ -45,9 +48,9 @@
       << "failing to construct should have set the 'failed' element state";
 }
 
-TEST(CustomElementDefinitionTest,
-     upgrade_clearsReactionQueueOnFailure_backupStack) {
-  Element& element = *CreateElement("a-a");
+TEST_F(CustomElementDefinitionTest,
+       upgrade_clearsReactionQueueOnFailure_backupStack) {
+  Element& element = *CreateElement("a-a").InDocument(&GetDocument());
   EXPECT_EQ(CustomElementState::kUndefined, element.GetCustomElementState())
       << "sanity check: this element should be ready to upgrade";
   ResetCustomElementReactionStackForTest reset_reaction_stack;
diff --git a/third_party/blink/renderer/core/html/custom/custom_element_reaction_stack.cc b/third_party/blink/renderer/core/html/custom/custom_element_reaction_stack.cc
index a36bceb..b9b1e81 100644
--- a/third_party/blink/renderer/core/html/custom/custom_element_reaction_stack.cc
+++ b/third_party/blink/renderer/core/html/custom/custom_element_reaction_stack.cc
@@ -4,11 +4,13 @@
 
 #include "third_party/blink/renderer/core/html/custom/custom_element_reaction_stack.h"
 
+#include "third_party/blink/renderer/core/dom/document.h"
 #include "third_party/blink/renderer/core/dom/element.h"
+#include "third_party/blink/renderer/core/execution_context/agent.h"
 #include "third_party/blink/renderer/core/html/custom/ce_reactions_scope.h"
 #include "third_party/blink/renderer/core/html/custom/custom_element_reaction_queue.h"
-#include "third_party/blink/renderer/platform/bindings/microtask.h"
 #include "third_party/blink/renderer/platform/heap/persistent.h"
+#include "third_party/blink/renderer/platform/scheduler/public/event_loop.h"
 
 namespace blink {
 
@@ -93,7 +95,7 @@
 
   // If the processing the backup element queue is not set:
   if (!backup_queue_ || backup_queue_->empty()) {
-    Microtask::EnqueueMicrotask(
+    element.GetDocument().GetAgent()->event_loop()->EnqueueMicrotask(
         WTF::BindOnce(&CustomElementReactionStack::InvokeBackupQueue,
                       Persistent<CustomElementReactionStack>(this)));
   }
diff --git a/third_party/blink/renderer/core/html/media/html_media_element.cc b/third_party/blink/renderer/core/html/media/html_media_element.cc
index 2a9b100..f1c50e5 100644
--- a/third_party/blink/renderer/core/html/media/html_media_element.cc
+++ b/third_party/blink/renderer/core/html/media/html_media_element.cc
@@ -63,6 +63,7 @@
 #include "third_party/blink/renderer/core/dom/events/event.h"
 #include "third_party/blink/renderer/core/dom/events/event_queue.h"
 #include "third_party/blink/renderer/core/dom/shadow_root.h"
+#include "third_party/blink/renderer/core/execution_context/agent.h"
 #include "third_party/blink/renderer/core/fileapi/url_file_api.h"
 #include "third_party/blink/renderer/core/frame/csp/content_security_policy.h"
 #include "third_party/blink/renderer/core/frame/local_dom_window.h"
@@ -105,7 +106,6 @@
 #include "third_party/blink/renderer/platform/audio/audio_source_provider_client.h"
 #include "third_party/blink/renderer/platform/bindings/exception_messages.h"
 #include "third_party/blink/renderer/platform/bindings/exception_state.h"
-#include "third_party/blink/renderer/platform/bindings/microtask.h"
 #include "third_party/blink/renderer/platform/heap/garbage_collected.h"
 #include "third_party/blink/renderer/platform/instrumentation/use_counter.h"
 #include "third_party/blink/renderer/platform/mediastream/media_stream_descriptor.h"
@@ -114,6 +114,7 @@
 #include "third_party/blink/renderer/platform/network/network_state_notifier.h"
 #include "third_party/blink/renderer/platform/privacy_budget/identifiability_digest_helpers.h"
 #include "third_party/blink/renderer/platform/runtime_enabled_features.h"
+#include "third_party/blink/renderer/platform/scheduler/public/event_loop.h"
 #include "third_party/blink/renderer/platform/weborigin/security_origin.h"
 #include "third_party/blink/renderer/platform/wtf/functional.h"
 #include "third_party/blink/renderer/platform/wtf/vector.h"
@@ -2510,7 +2511,7 @@
   // needed, the update is applied in the next call to
   // officialPlaybackPosition().
   official_playback_position_needs_update_ = false;
-  Microtask::EnqueueMicrotask(
+  GetDocument().GetAgent()->event_loop()->EnqueueMicrotask(
       WTF::BindOnce(&HTMLMediaElement::RequireOfficialPlaybackPositionUpdate,
                     WrapWeakPersistent(this)));
 }
diff --git a/third_party/blink/renderer/core/html/parser/html_construction_site.cc b/third_party/blink/renderer/core/html/parser/html_construction_site.cc
index 3fbb1a7d..a1a8cb3 100644
--- a/third_party/blink/renderer/core/html/parser/html_construction_site.cc
+++ b/third_party/blink/renderer/core/html/parser/html_construction_site.cc
@@ -103,13 +103,26 @@
 }
 
 static bool ShouldUseLengthLimit(const ContainerNode& node) {
-  return !IsA<HTMLScriptElement>(node) && !IsA<HTMLStyleElement>(node) &&
-         !IsA<SVGScriptElement>(node);
+  if (auto* html_element = DynamicTo<HTMLElement>(&node)) {
+    return !html_element->HasTagName(html_names::kScriptTag) &&
+           !html_element->HasTagName(html_names::kStyleTag);
+  }
+  return !IsA<SVGScriptElement>(node);
 }
 
-static unsigned TextLengthLimitForContainer(const ContainerNode& node) {
-  return ShouldUseLengthLimit(node) ? Text::kDefaultLengthLimit
-                                    : std::numeric_limits<unsigned>::max();
+static unsigned NextTextBreakPositionForContainer(
+    const ContainerNode& node,
+    unsigned current_position,
+    unsigned string_length,
+    absl::optional<unsigned>& length_limit) {
+  if (string_length < Text::kDefaultLengthLimit)
+    return string_length;
+  if (!length_limit) {
+    length_limit = ShouldUseLengthLimit(node)
+                       ? Text::kDefaultLengthLimit
+                       : std::numeric_limits<unsigned>::max();
+  }
+  return std::min(current_position + *length_limit, string_length);
 }
 
 static inline bool IsAllWhitespace(const String& string) {
@@ -149,6 +162,13 @@
   }
 }
 
+static inline unsigned TextFitsInContainer(const ContainerNode& node,
+                                           unsigned length) {
+  // Common case is all text fits in the default text limit. Only lookup length
+  // limit when necessary as it is costly.
+  return length < Text::kDefaultLengthLimit || !ShouldUseLengthLimit(node);
+}
+
 static inline void ExecuteInsertTextTask(HTMLConstructionSiteTask& task) {
   DCHECK_EQ(task.operation, HTMLConstructionSiteTask::kInsertText);
 
@@ -158,8 +178,8 @@
   Node* previous_child = task.next_child ? task.next_child->previousSibling()
                                          : task.parent->lastChild();
   if (auto* previous_text = DynamicTo<Text>(previous_child)) {
-    unsigned length_limit = TextLengthLimitForContainer(*task.parent);
-    if (previous_text->length() + new_text->length() < length_limit) {
+    if (TextFitsInContainer(*task.parent,
+                            previous_text->length() + new_text->length())) {
       previous_text->ParserAppendData(new_text->data());
       return;
     }
@@ -248,16 +268,6 @@
   return 0;
 }
 
-static String AtomizeIfAllWhitespace(const String& string,
-                                     WhitespaceMode whitespace_mode) {
-  // Strings composed entirely of whitespace are likely to be repeated. Turn
-  // them into AtomicString so we share a single string for each.
-  if (whitespace_mode == kAllWhitespace ||
-      (whitespace_mode == kWhitespaceUnknown && IsAllWhitespace(string)))
-    return AtomicString(string).GetString();
-  return string;
-}
-
 void HTMLConstructionSite::FlushPendingText() {
   if (pending_text_.IsEmpty())
     return;
@@ -271,13 +281,17 @@
   // Splitting text nodes into smaller chunks contradicts HTML5 spec, but is
   // necessary for performance, see:
   // https://bugs.webkit.org/show_bug.cgi?id=55898
-  unsigned length_limit = TextLengthLimitForContainer(*pending_text.parent);
+
+  // Lazily determine the line limit as it's non-trivial, and in the typical
+  // case not necessary. Note that this is faster than using a ternary operator
+  // to determine limit.
+  absl::optional<unsigned> length_limit;
 
   unsigned current_position = 0;
   const StringBuilder& string = pending_text.string_builder;
   while (current_position < string.length()) {
-    unsigned proposed_break_index =
-        std::min(current_position + length_limit, string.length());
+    unsigned proposed_break_index = NextTextBreakPositionForContainer(
+        *pending_text.parent, current_position, string.length(), length_limit);
     unsigned break_index =
         FindBreakIndexBetween(string, current_position, proposed_break_index);
     DCHECK_LE(break_index, string.length());
@@ -288,17 +302,23 @@
     }
     String substring =
         string.Substring(current_position, break_index - current_position);
-    substring = AtomizeIfAllWhitespace(substring, pending_text.whitespace_mode);
-
-    HTMLConstructionSiteTask task(HTMLConstructionSiteTask::kInsertText);
-    task.parent = pending_text.parent;
-    task.next_child = pending_text.next_child;
-    task.child = Text::Create(task.parent->GetDocument(), substring);
-    QueueTask(task);
+    // Strings composed entirely of whitespace are likely to be repeated. Turn
+    // them into AtomicString so we share a single string for each.
+    if (pending_text.whitespace_mode == kAllWhitespace ||
+        (pending_text.whitespace_mode == kWhitespaceUnknown &&
+         IsAllWhitespace(substring))) {
+      substring = AtomicString(substring).GetString();
+    }
 
     DCHECK_GT(break_index, current_position);
     DCHECK_EQ(break_index - current_position, substring.length());
-    DCHECK_EQ(To<Text>(task.child.Get())->length(), substring.length());
+    HTMLConstructionSiteTask task(HTMLConstructionSiteTask::kInsertText);
+    task.parent = pending_text.parent;
+    task.next_child = pending_text.next_child;
+    task.child = Text::Create(task.parent->GetDocument(), std::move(substring));
+    QueueTask(task);
+    DCHECK_EQ(To<Text>(task.child.Get())->length(),
+              break_index - current_position);
     current_position = break_index;
   }
 }
diff --git a/third_party/blink/renderer/core/html/parser/html_construction_site.h b/third_party/blink/renderer/core/html/parser/html_construction_site.h
index 63eca87..3c8c1f7 100644
--- a/third_party/blink/renderer/core/html/parser/html_construction_site.h
+++ b/third_party/blink/renderer/core/html/parser/html_construction_site.h
@@ -311,6 +311,9 @@
     }
 
     void Discard() {
+      if (IsEmpty())
+        return;
+
       PendingText discarded_text;
       Swap(discarded_text);
     }
diff --git a/third_party/blink/renderer/core/layout/layout_box_model_object.h b/third_party/blink/renderer/core/layout/layout_box_model_object.h
index dc01a51..a1c81486 100644
--- a/third_party/blink/renderer/core/layout/layout_box_model_object.h
+++ b/third_party/blink/renderer/core/layout/layout_box_model_object.h
@@ -124,7 +124,7 @@
 //   "LogicalLeft" and "LogicalRight".
 //
 // For more information, see the following doc about coordinate spaces:
-// https://chromium.googlesource.com/chromium/src.git/+/master/third_party/blink/renderer/core/layout/README.md#coordinate-spaces
+// https://chromium.googlesource.com/chromium/src.git/+/main/third_party/blink/renderer/core/layout/README.md#coordinate-spaces
 class CORE_EXPORT LayoutBoxModelObject : public LayoutObject {
  public:
   LayoutBoxModelObject(ContainerNode*);
diff --git a/third_party/blink/renderer/core/loader/image_loader.cc b/third_party/blink/renderer/core/loader/image_loader.cc
index d570b5b5..7930473 100644
--- a/third_party/blink/renderer/core/loader/image_loader.cc
+++ b/third_party/blink/renderer/core/loader/image_loader.cc
@@ -38,6 +38,7 @@
 #include "third_party/blink/renderer/core/dom/element.h"
 #include "third_party/blink/renderer/core/dom/events/event.h"
 #include "third_party/blink/renderer/core/dom/increment_load_event_delay_count.h"
+#include "third_party/blink/renderer/core/execution_context/agent.h"
 #include "third_party/blink/renderer/core/frame/attribution_src_loader.h"
 #include "third_party/blink/renderer/core/frame/frame_owner.h"
 #include "third_party/blink/renderer/core/frame/local_frame.h"
@@ -57,7 +58,6 @@
 #include "third_party/blink/renderer/core/probe/core_probes.h"
 #include "third_party/blink/renderer/core/svg/graphics/svg_image.h"
 #include "third_party/blink/renderer/platform/bindings/exception_state.h"
-#include "third_party/blink/renderer/platform/bindings/microtask.h"
 #include "third_party/blink/renderer/platform/bindings/script_state.h"
 #include "third_party/blink/renderer/platform/bindings/v8_per_isolate_data.h"
 #include "third_party/blink/renderer/platform/heap/garbage_collected.h"
@@ -67,6 +67,7 @@
 #include "third_party/blink/renderer/platform/loader/fetch/memory_cache.h"
 #include "third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h"
 #include "third_party/blink/renderer/platform/loader/fetch/resource_loading_log.h"
+#include "third_party/blink/renderer/platform/scheduler/public/event_loop.h"
 #include "third_party/blink/renderer/platform/weborigin/security_origin.h"
 #include "third_party/blink/renderer/platform/weborigin/security_policy.h"
 
@@ -421,7 +422,8 @@
     network::mojom::ReferrerPolicy referrer_policy) {
   auto task = std::make_unique<Task>(this, update_behavior, referrer_policy);
   pending_task_ = task->GetWeakPtr();
-  Microtask::EnqueueMicrotask(WTF::BindOnce(&Task::Run, std::move(task)));
+  element_->GetDocument().GetAgent()->event_loop()->EnqueueMicrotask(
+      WTF::BindOnce(&Task::Run, std::move(task)));
   delay_until_do_update_from_element_ =
       std::make_unique<IncrementLoadEventDelayCount>(element_->GetDocument());
 }
@@ -924,23 +926,24 @@
 
 ScriptPromise ImageLoader::Decode(ScriptState* script_state,
                                   ExceptionState& exception_state) {
+  ExecutionContext* execution_context = ExecutionContext::From(script_state);
   // It's possible that |script_state|'s context isn't valid, which means we
   // should immediately reject the request. This is possible in situations like
   // the document that created this image was already destroyed (like an img
   // that comes from iframe.contentDocument.createElement("img") and the iframe
   // is destroyed).
-  if (!script_state->ContextIsValid()) {
+  if (!script_state->ContextIsValid() || !execution_context) {
     exception_state.ThrowDOMException(DOMExceptionCode::kEncodingError,
                                       "The source image cannot be decoded.");
     return ScriptPromise();
   }
 
-  UseCounter::Count(GetElement()->GetDocument(), WebFeature::kImageDecodeAPI);
+  UseCounter::Count(execution_context, WebFeature::kImageDecodeAPI);
 
   auto* request = MakeGarbageCollected<DecodeRequest>(
       this, MakeGarbageCollected<ScriptPromiseResolver>(script_state));
-  Microtask::EnqueueMicrotask(WTF::BindOnce(&DecodeRequest::ProcessForTask,
-                                            WrapWeakPersistent(request)));
+  execution_context->GetAgent()->event_loop()->EnqueueMicrotask(WTF::BindOnce(
+      &DecodeRequest::ProcessForTask, WrapWeakPersistent(request)));
   decode_requests_.push_back(request);
   return request->promise();
 }
diff --git a/third_party/blink/renderer/core/paint/paint_layer.h b/third_party/blink/renderer/core/paint/paint_layer.h
index f2c576c3..8d707f5 100644
--- a/third_party/blink/renderer/core/paint/paint_layer.h
+++ b/third_party/blink/renderer/core/paint/paint_layer.h
@@ -604,7 +604,7 @@
   }
 
   // See
-  // https://chromium.googlesource.com/chromium/src.git/+/master/third_party/blink/renderer/core/paint/README.md
+  // https://chromium.googlesource.com/chromium/src.git/+/main/third_party/blink/renderer/core/paint/README.md
   // for the definition of a replaced normal-flow stacking element.
   bool IsReplacedNormalFlowStacking() const;
 
diff --git a/third_party/blink/renderer/core/paint/paint_layer_stacking_node.h b/third_party/blink/renderer/core/paint/paint_layer_stacking_node.h
index e859891..b6e5755 100644
--- a/third_party/blink/renderer/core/paint/paint_layer_stacking_node.h
+++ b/third_party/blink/renderer/core/paint/paint_layer_stacking_node.h
@@ -62,7 +62,7 @@
 // PaintLayerStackingNode represents a stacked element which is either a
 // stacking context or a positioned element.
 // See
-// https://chromium.googlesource.com/chromium/src.git/+/master/third_party/blink/renderer/core/paint/README.md
+// https://chromium.googlesource.com/chromium/src.git/+/main/third_party/blink/renderer/core/paint/README.md
 // for more details of stacked elements.
 //
 // Stacked elements are the basis for the CSS painting algorithm. The paint
diff --git a/third_party/blink/renderer/core/paint/paint_property_tree_builder.cc b/third_party/blink/renderer/core/paint/paint_property_tree_builder.cc
index 5eb8d8e..51011c6 100644
--- a/third_party/blink/renderer/core/paint/paint_property_tree_builder.cc
+++ b/third_party/blink/renderer/core/paint/paint_property_tree_builder.cc
@@ -1591,6 +1591,16 @@
         mask_state.blend_mode = SkBlendMode::kDstIn;
         mask_state.compositor_element_id = mask_compositor_element_id;
         mask_state.direct_compositing_reasons = mask_direct_compositing_reasons;
+
+        if (const auto* old_mask = properties_->Mask()) {
+          // The mask node's output clip is used in the property tree state
+          // when painting the mask, so the impact of its change should be the
+          // same as a clip change in LocalBorderBoxProperties (see
+          // UpdateLocalBorderBoxContext()).
+          if (old_mask->OutputClip() != mask_state.output_clip)
+            OnUpdateClip(PaintPropertyChangeType::kNodeAddedOrRemoved);
+        }
+
         OnUpdateEffect(properties_->UpdateMask(*properties_->Effect(),
                                                std::move(mask_state)));
       } else {
diff --git a/third_party/blink/renderer/core/paint/paint_property_tree_update_tests.cc b/third_party/blink/renderer/core/paint/paint_property_tree_update_tests.cc
index ba1d707..8642c9e 100644
--- a/third_party/blink/renderer/core/paint/paint_property_tree_update_tests.cc
+++ b/third_party/blink/renderer/core/paint/paint_property_tree_update_tests.cc
@@ -1973,4 +1973,31 @@
   EXPECT_EQ(200, div_properties->Transform()->Translation2D().x());
 }
 
+TEST_P(PaintPropertyTreeUpdateTest, ChangeMaskOutputClip) {
+  SetBodyInnerHTML(R"HTML(
+    <div id="container" style="width: 100px; height: 10px; overflow: hidden">
+      <div id="masked"
+           style="height: 100px; background: red; -webkit-mask: url()"></div>
+    </div>
+  )HTML");
+
+  auto* container_properties = PaintPropertiesForElement("container");
+  ASSERT_TRUE(container_properties);
+  auto* masked_properties = PaintPropertiesForElement("masked");
+  ASSERT_TRUE(masked_properties);
+  ASSERT_TRUE(masked_properties->Mask());
+  EXPECT_EQ(container_properties->OverflowClip(),
+            masked_properties->Mask()->OutputClip());
+
+  GetDocument()
+      .getElementById("container")
+      ->setAttribute(html_names::kStyleAttr, "width: 100px; height: 100px");
+  UpdateAllLifecyclePhasesExceptPaint();
+
+  EXPECT_FALSE(PaintPropertiesForElement("container"));
+  EXPECT_EQ(masked_properties, PaintPropertiesForElement("masked"));
+  EXPECT_EQ(DocContentClip(), masked_properties->Mask()->OutputClip());
+  EXPECT_TRUE(GetPaintLayerByElementId("masked")->SelfNeedsRepaint());
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/permissions_policy/feature_policy_corpus/17 b/third_party/blink/renderer/core/permissions_policy/feature_policy_corpus/17
new file mode 100644
index 0000000..bf8f81ab
--- /dev/null
+++ b/third_party/blink/renderer/core/permissions_policy/feature_policy_corpus/17
@@ -0,0 +1 @@
+camera 'self' https://*.example.com/; gyroscope 'src' https://*.example.net/
diff --git a/third_party/blink/renderer/core/permissions_policy/feature_policy_corpus/18 b/third_party/blink/renderer/core/permissions_policy/feature_policy_corpus/18
new file mode 100644
index 0000000..9f75df49
--- /dev/null
+++ b/third_party/blink/renderer/core/permissions_policy/feature_policy_corpus/18
@@ -0,0 +1 @@
+camera 'self' *://example.com/ https://example.net:*/; gyroscope 'src' https://*/ https://foo.*.example.net/ https://*.*.example.net/
diff --git a/third_party/blink/renderer/core/permissions_policy/permissions_policy_attr_fuzzer.cc b/third_party/blink/renderer/core/permissions_policy/permissions_policy_attr_fuzzer.cc
index 6a4950d..c781495 100644
--- a/third_party/blink/renderer/core/permissions_policy/permissions_policy_attr_fuzzer.cc
+++ b/third_party/blink/renderer/core/permissions_policy/permissions_policy_attr_fuzzer.cc
@@ -13,7 +13,6 @@
 #include "third_party/blink/renderer/platform/wtf/vector.h"
 
 extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
-  // TODO(crbug.com/1345994): Add seed corpus w/ wildcards.
   static blink::BlinkFuzzerTestSupport test_support =
       blink::BlinkFuzzerTestSupport();
   blink::PolicyParserMessageBuffer logger;
diff --git a/third_party/blink/renderer/core/permissions_policy/permissions_policy_corpus/17 b/third_party/blink/renderer/core/permissions_policy/permissions_policy_corpus/17
new file mode 100644
index 0000000..1afdc31b
--- /dev/null
+++ b/third_party/blink/renderer/core/permissions_policy/permissions_policy_corpus/17
@@ -0,0 +1 @@
+camera=(self "https://*.example.com/"), gyroscope=(self "https://*.example.net/")
diff --git a/third_party/blink/renderer/core/permissions_policy/permissions_policy_corpus/18 b/third_party/blink/renderer/core/permissions_policy/permissions_policy_corpus/18
new file mode 100644
index 0000000..c8a1bfb
--- /dev/null
+++ b/third_party/blink/renderer/core/permissions_policy/permissions_policy_corpus/18
@@ -0,0 +1 @@
+camera=(self "*://example.com/" "https://example.net:*/"), gyroscope=(self "https://*/" "https://foo.*.example.net/" "https://*.*.example.net/")
diff --git a/third_party/blink/renderer/core/permissions_policy/permissions_policy_fuzzer.cc b/third_party/blink/renderer/core/permissions_policy/permissions_policy_fuzzer.cc
index 8c92154..8ce5275 100644
--- a/third_party/blink/renderer/core/permissions_policy/permissions_policy_fuzzer.cc
+++ b/third_party/blink/renderer/core/permissions_policy/permissions_policy_fuzzer.cc
@@ -14,7 +14,6 @@
 #include "third_party/blink/renderer/platform/wtf/vector.h"
 
 extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
-  // TODO(crbug.com/1345994): Add seed corpus w/ wildcards.
   static blink::BlinkFuzzerTestSupport test_support =
       blink::BlinkFuzzerTestSupport();
   blink::PolicyParserMessageBuffer logger;
diff --git a/third_party/blink/renderer/core/speculation_rules/document_speculation_rules.cc b/third_party/blink/renderer/core/speculation_rules/document_speculation_rules.cc
index 3d67d313..4d83e1c4 100644
--- a/third_party/blink/renderer/core/speculation_rules/document_speculation_rules.cc
+++ b/third_party/blink/renderer/core/speculation_rules/document_speculation_rules.cc
@@ -9,10 +9,11 @@
 #include "third_party/blink/public/common/browser_interface_broker_proxy.h"
 #include "third_party/blink/public/common/features.h"
 #include "third_party/blink/public/mojom/devtools/console_message.mojom-blink.h"
+#include "third_party/blink/renderer/core/execution_context/agent.h"
 #include "third_party/blink/renderer/core/execution_context/execution_context.h"
 #include "third_party/blink/renderer/core/frame/local_frame.h"
 #include "third_party/blink/renderer/core/loader/speculation_rule_loader.h"
-#include "third_party/blink/renderer/platform/bindings/microtask.h"
+#include "third_party/blink/renderer/platform/scheduler/public/event_loop.h"
 #include "third_party/blink/renderer/platform/weborigin/referrer.h"
 #include "third_party/blink/renderer/platform/weborigin/security_policy.h"
 #include "third_party/blink/renderer/platform/wtf/vector.h"
@@ -125,8 +126,11 @@
   if (has_pending_update_)
     return;
 
+  auto* execution_context = GetSupplementable()->GetExecutionContext();
+  if (!execution_context)
+    return;
   has_pending_update_ = true;
-  Microtask::EnqueueMicrotask(
+  execution_context->GetAgent()->event_loop()->EnqueueMicrotask(
       WTF::BindOnce(&DocumentSpeculationRules::UpdateSpeculationCandidates,
                     WrapWeakPersistent(this)));
 }
diff --git a/third_party/blink/renderer/core/speculation_rules/speculation_rule_set_test.cc b/third_party/blink/renderer/core/speculation_rules/speculation_rule_set_test.cc
index 7309bad4..a7b6ba6 100644
--- a/third_party/blink/renderer/core/speculation_rules/speculation_rule_set_test.cc
+++ b/third_party/blink/renderer/core/speculation_rules/speculation_rule_set_test.cc
@@ -17,6 +17,7 @@
 #include "third_party/blink/public/common/browser_interface_broker_proxy.h"
 #include "third_party/blink/public/mojom/speculation_rules/speculation_rules.mojom-blink.h"
 #include "third_party/blink/public/web/blink.h"
+#include "third_party/blink/renderer/core/execution_context/agent.h"
 #include "third_party/blink/renderer/core/frame/local_dom_window.h"
 #include "third_party/blink/renderer/core/frame/local_frame.h"
 #include "third_party/blink/renderer/core/frame/settings.h"
@@ -27,7 +28,7 @@
 #include "third_party/blink/renderer/core/speculation_rules/document_speculation_rules.h"
 #include "third_party/blink/renderer/core/speculation_rules/stub_speculation_host.h"
 #include "third_party/blink/renderer/core/testing/dummy_page_holder.h"
-#include "third_party/blink/renderer/platform/bindings/microtask.h"
+#include "third_party/blink/renderer/platform/scheduler/public/event_loop.h"
 #include "third_party/blink/renderer/platform/testing/runtime_enabled_features_test_helpers.h"
 #include "third_party/blink/renderer/platform/wtf/vector.h"
 
@@ -665,17 +666,19 @@
       InsertSpeculationRules(page_holder.GetDocument(),
                              R"({"prefetch": [
              {"source": "list", "urls": ["https://example.com/bar"]}]})");
-  Microtask::PerformCheckpoint(MainThreadIsolate());
+  scoped_refptr<scheduler::EventLoop> event_loop =
+      frame.DomWindow()->GetAgent()->event_loop();
+  event_loop->PerformMicrotaskCheckpoint();
 
   // Second simulated task removes the rule sets, then adds another one in a
   // microtask which is queued later than any queued during the removal.
   to_remove->remove();
-  Microtask::EnqueueMicrotask(base::BindLambdaForTesting([&] {
+  event_loop->EnqueueMicrotask(base::BindLambdaForTesting([&] {
     InsertSpeculationRules(page_holder.GetDocument(),
                            R"({"prefetch": [
            {"source": "list", "urls": ["https://example.com/baz"]}]})");
   }));
-  Microtask::PerformCheckpoint(MainThreadIsolate());
+  event_loop->PerformMicrotaskCheckpoint();
 
   run_loop.Run();
   broker.SetBinderForTesting(mojom::blink::SpeculationHost::Name_, {});
diff --git a/third_party/blink/renderer/core/trustedtypes/trusted_type_policy_factory.cc b/third_party/blink/renderer/core/trustedtypes/trusted_type_policy_factory.cc
index 62a2370..6cec7d0 100644
--- a/third_party/blink/renderer/core/trustedtypes/trusted_type_policy_factory.cc
+++ b/third_party/blink/renderer/core/trustedtypes/trusted_type_policy_factory.cc
@@ -62,45 +62,62 @@
   UseCounter::Count(GetExecutionContext(),
                     WebFeature::kTrustedTypesCreatePolicy);
 
+  // TT requires two validity checks: One against the CSP, and one for the
+  // default policy. Use |disallowed| (and |violation_details|) to aggregate
+  // these, so we can have unified error handling.
+  //
+  // Spec ref:
+  // https://www.w3.org/TR/2022/WD-trusted-types-20220927/#create-trusted-type-policy-algorithm,
+  // steps 2 + 3
+  bool disallowed = false;
+  ContentSecurityPolicy::AllowTrustedTypePolicyDetails violation_details =
+      ContentSecurityPolicy::AllowTrustedTypePolicyDetails::kAllowed;
+
   // This issue_id is used to generate a link in the DevTools front-end from
   // the JavaScript TypeError to the inspector issue which is reported by
   // ContentSecurityPolicy::ReportViolation via the call to
   // AllowTrustedTypeAssignmentFailure below.
   base::UnguessableToken issue_id = base::UnguessableToken::Create();
+
   if (GetExecutionContext()->GetContentSecurityPolicy()) {
-    ContentSecurityPolicy::AllowTrustedTypePolicyDetails violation_details =
-        ContentSecurityPolicy::AllowTrustedTypePolicyDetails::kAllowed;
-    bool disallowed = !GetExecutionContext()
-                           ->GetContentSecurityPolicy()
-                           ->AllowTrustedTypePolicy(
-                               policy_name, policy_map_.Contains(policy_name),
-                               violation_details, issue_id);
-    if (violation_details != ContentSecurityPolicy::ContentSecurityPolicy::
-                                 AllowTrustedTypePolicyDetails::kAllowed) {
-      // We may report a violation here even when disallowed is false
-      // in case policy is a report-only one.
-      probe::OnContentSecurityPolicyViolation(
-          GetExecutionContext(),
-          ContentSecurityPolicyViolationType::kTrustedTypesPolicyViolation);
-    }
-    if (disallowed) {
-      // For a better error message, we'd like to disambiguate between
-      // "disallowed" and "disallowed because of a duplicate name".
-      bool disallowed_because_of_duplicate_name =
-          violation_details ==
-          ContentSecurityPolicy::AllowTrustedTypePolicyDetails::
-              kDisallowedDuplicateName;
-      const String message =
-          disallowed_because_of_duplicate_name
-              ? "Policy with name \"" + policy_name + "\" already exists."
-              : "Policy \"" + policy_name + "\" disallowed.";
-      exception_state.ThrowTypeError(message);
-      MaybeAssociateExceptionMetaData(
-          exception_state, "issueId",
-          IdentifiersFactory::IdFromToken(issue_id));
-      return nullptr;
-    }
+    disallowed = !GetExecutionContext()
+                      ->GetContentSecurityPolicy()
+                      ->AllowTrustedTypePolicy(
+                          policy_name, policy_map_.Contains(policy_name),
+                          violation_details, issue_id);
   }
+  if (!disallowed && policy_name == "default" &&
+      policy_map_.Contains("default")) {
+    disallowed = true;
+    violation_details = ContentSecurityPolicy::AllowTrustedTypePolicyDetails::
+        kDisallowedDuplicateName;
+  }
+
+  if (violation_details != ContentSecurityPolicy::ContentSecurityPolicy::
+                               AllowTrustedTypePolicyDetails::kAllowed) {
+    // We may report a violation here even when disallowed is false
+    // in case policy is a report-only one.
+    probe::OnContentSecurityPolicyViolation(
+        GetExecutionContext(),
+        ContentSecurityPolicyViolationType::kTrustedTypesPolicyViolation);
+  }
+  if (disallowed) {
+    // For a better error message, we'd like to disambiguate between
+    // "disallowed" and "disallowed because of a duplicate name".
+    bool disallowed_because_of_duplicate_name =
+        violation_details ==
+        ContentSecurityPolicy::AllowTrustedTypePolicyDetails::
+            kDisallowedDuplicateName;
+    const String message =
+        disallowed_because_of_duplicate_name
+            ? "Policy with name \"" + policy_name + "\" already exists."
+            : "Policy \"" + policy_name + "\" disallowed.";
+    exception_state.ThrowTypeError(message);
+    MaybeAssociateExceptionMetaData(exception_state, "issueId",
+                                    IdentifiersFactory::IdFromToken(issue_id));
+    return nullptr;
+  }
+
   UseCounter::Count(GetExecutionContext(),
                     WebFeature::kTrustedTypesPolicyCreated);
   if (policy_name == "default") {
diff --git a/third_party/blink/renderer/modules/credentialmanagement/credentials_container.cc b/third_party/blink/renderer/modules/credentialmanagement/credentials_container.cc
index 7bd4215..7a29020 100644
--- a/third_party/blink/renderer/modules/credentialmanagement/credentials_container.cc
+++ b/third_party/blink/renderer/modules/credentialmanagement/credentials_container.cc
@@ -1670,7 +1670,7 @@
               "default algorithm identifiers: ES256 and RS256. This can "
               "result in registration failures on incompatible "
               "authenticators. See "
-              "https://chromium.googlesource.com/chromium/src/+/master/"
+              "https://chromium.googlesource.com/chromium/src/+/main/"
               "content/browser/webauth/pub_key_cred_params.md for details"));
     }
   }
diff --git a/third_party/blink/renderer/modules/imagecapture/README.md b/third_party/blink/renderer/modules/imagecapture/README.md
index c59d6c9..90bdda1b 100644
--- a/third_party/blink/renderer/modules/imagecapture/README.md
+++ b/third_party/blink/renderer/modules/imagecapture/README.md
@@ -126,7 +126,7 @@
 Image Capture web tests are located in [web_tests/imagecapture],
 [web_tests/fast/imagecapture] and [web_tests/external/mediacapture-image].
 
-[web_tests/imagecapture]: https://chromium.googlesource.com/chromium/src/+/master/third_party/blink/web_tests/imagecapture
-[web_tests/fast/imagecapture]: https://chromium.googlesource.com/chromium/src/+/master/third_party/blink/web_tests/fast/imagecapture/
-[web_tests/external/mediacapture-image]: https://chromium.googlesource.com/chromium/src/+/master/third_party/blink/web_tests/external/wpt/mediacapture-image/
+[web_tests/imagecapture]: https://chromium.googlesource.com/chromium/src/+/main/third_party/blink/web_tests/imagecapture
+[web_tests/fast/imagecapture]: https://chromium.googlesource.com/chromium/src/+/main/third_party/blink/web_tests/fast/imagecapture/
+[web_tests/external/mediacapture-image]: https://chromium.googlesource.com/chromium/src/+/main/third_party/blink/web_tests/external/wpt/mediacapture-image/
 
diff --git a/third_party/blink/renderer/modules/manifest/manifest_parser.cc b/third_party/blink/renderer/modules/manifest/manifest_parser.cc
index 7587c233..8832a86 100644
--- a/third_party/blink/renderer/modules/manifest/manifest_parser.cc
+++ b/third_party/blink/renderer/modules/manifest/manifest_parser.cc
@@ -681,6 +681,11 @@
   return mojom::blink::ManifestScreenshot::FormFactor::kUnknown;
 }
 
+String ManifestParser::ParseScreenshotLabel(const JSONObject* object) {
+  absl::optional<String> label = ParseString(object, "label", Trim(true));
+  return label.has_value() ? *label : String();
+}
+
 Vector<mojom::blink::ManifestImageResourcePtr> ManifestParser::ParseIcons(
     const JSONObject* object) {
   return ParseImageResourceArray("icons", object);
@@ -711,6 +716,7 @@
 
     screenshot->image = std::move(*image);
     screenshot->form_factor = ParseScreenshotFormFactor(screenshot_object);
+    screenshot->label = ParseScreenshotLabel(screenshot_object);
 
     screenshots.push_back(std::move(screenshot));
   }
diff --git a/third_party/blink/renderer/modules/manifest/manifest_parser.h b/third_party/blink/renderer/modules/manifest/manifest_parser.h
index 05dd23f..f82f3200 100644
--- a/third_party/blink/renderer/modules/manifest/manifest_parser.h
+++ b/third_party/blink/renderer/modules/manifest/manifest_parser.h
@@ -228,6 +228,10 @@
   mojom::blink::ManifestScreenshot::FormFactor ParseScreenshotFormFactor(
       const JSONObject* screenshot);
 
+  // Parse the 'label' field of 'screenshots' as defined in:
+  // https://www.w3.org/TR/manifest-app-info/#label-member
+  String ParseScreenshotLabel(const JSONObject* object);
+
   // A helper function for parsing ImageResources under |key| in the manifest.
   Vector<mojom::blink::ManifestImageResourcePtr> ParseImageResourceArray(
       const String& key,
diff --git a/third_party/blink/renderer/modules/manifest/manifest_parser_unittest.cc b/third_party/blink/renderer/modules/manifest/manifest_parser_unittest.cc
index d2a2fc91..920db9a7 100644
--- a/third_party/blink/renderer/modules/manifest/manifest_parser_unittest.cc
+++ b/third_party/blink/renderer/modules/manifest/manifest_parser_unittest.cc
@@ -1224,6 +1224,57 @@
   }
 }
 
+TEST_F(ManifestParserTest, ScreenshotLabelRules) {
+  // Smoke test.
+  {
+    auto& manifest = ParseManifest(
+        R"({ "screenshots": [{ "src": "foo.jpg", "label": "example screenshot." }] })");
+    EXPECT_FALSE(manifest->screenshots.empty());
+
+    auto& screenshots = manifest->screenshots;
+    EXPECT_EQ(screenshots.size(), 1u);
+    EXPECT_EQ(screenshots[0]->label, "example screenshot.");
+    EXPECT_FALSE(IsManifestEmpty(manifest));
+    EXPECT_EQ(0u, GetErrorCount());
+  }
+  // Unspecified.
+  {
+    auto& manifest =
+        ParseManifest(R"({ "screenshots": [{ "src": "foo.jpg"}] })");
+    EXPECT_FALSE(manifest->screenshots.empty());
+
+    auto& screenshots = manifest->screenshots;
+    EXPECT_EQ(screenshots.size(), 1u);
+    EXPECT_TRUE(screenshots[0]->label.IsNull());
+    EXPECT_FALSE(IsManifestEmpty(manifest));
+    EXPECT_EQ(0u, GetErrorCount());
+  }
+  // Empty string.
+  {
+    auto& manifest = ParseManifest(
+        R"({ "screenshots": [{ "src": "foo.jpg", "label": "" }] })");
+    EXPECT_FALSE(manifest->screenshots.empty());
+
+    auto& screenshots = manifest->screenshots;
+    EXPECT_EQ(screenshots.size(), 1u);
+    EXPECT_EQ(screenshots[0]->label, "");
+    EXPECT_FALSE(IsManifestEmpty(manifest));
+    EXPECT_EQ(0u, GetErrorCount());
+  }
+  // Invalid type.
+  {
+    auto& manifest = ParseManifest(
+        R"({ "screenshots": [{ "src": "foo.jpg", "label": 2 }] })");
+    EXPECT_FALSE(manifest->screenshots.empty());
+
+    auto& screenshots = manifest->screenshots;
+    EXPECT_EQ(screenshots.size(), 1u);
+    EXPECT_TRUE(screenshots[0]->label.IsNull());
+    EXPECT_FALSE(IsManifestEmpty(manifest));
+    EXPECT_EQ(1u, GetErrorCount());
+  }
+}
+
 TEST_F(ManifestParserTest, IconSrcParseRules) {
   // Smoke test.
   {
diff --git a/third_party/blink/renderer/modules/media_controls/elements/media_control_input_element.cc b/third_party/blink/renderer/modules/media_controls/elements/media_control_input_element.cc
index ac107e71..611c0b3 100644
--- a/third_party/blink/renderer/modules/media_controls/elements/media_control_input_element.cc
+++ b/third_party/blink/renderer/modules/media_controls/elements/media_control_input_element.cc
@@ -236,10 +236,8 @@
     return;
 
   if (!display_recorded_) {
-    // The only valid reason to not have the display recorded at this point is
-    // if it wasn't allowed. Regardless, the display will now be recorded.
-    DCHECK(!ShouldRecordDisplayStates(MediaElement()));
     RecordCTREvent(CTREvent::kDisplayed);
+    display_recorded_ = true;
   }
 
   RecordCTREvent(CTREvent::kInteracted);
diff --git a/third_party/blink/renderer/modules/mediarecorder/README.md b/third_party/blink/renderer/modules/mediarecorder/README.md
index c8cd593b0..33499092 100644
--- a/third_party/blink/renderer/modules/mediarecorder/README.md
+++ b/third_party/blink/renderer/modules/mediarecorder/README.md
@@ -49,7 +49,7 @@
 recorded `Blob`.
 
 [`MediaRecorderOptions`]: https://w3c.github.io/mediacapture-record/#mediarecorderoptions-section
-[isTypeSupported()]: https://chromium.googlesource.com/chromium/src/+/master/third_party/blink/web_tests/fast/mediarecorder/MediaRecorder-isTypeSupported.html
+[isTypeSupported()]: https://chromium.googlesource.com/chromium/src/+/main/third_party/blink/web_tests/fast/mediarecorder/MediaRecorder-isTypeSupported.html
 
 ## Implementation in Chromium
 
@@ -62,8 +62,8 @@
 
 [MediaRecorder class]: https://w3c.github.io/mediacapture-record/#mediarecorder-api
 [`MediaRecorder()`]: (https://w3c.github.io/mediacapture-record/#mediarecorder-constructor)
-[`MediaRecorderHandler`]: (https://chromium.googlesource.com/chromium/src/+/master/content/renderer/media_recorder/media_recorder_handler.h)
-[`VideoTrackRecorder`]: https://chromium.googlesource.com/chromium/src/+/master/content/renderer/media_recorder/video_track_recorder.h
+[`MediaRecorderHandler`]: (https://chromium.googlesource.com/chromium/src/+/main/content/renderer/media_recorder/media_recorder_handler.h)
+[`VideoTrackRecorder`]: https://chromium.googlesource.com/chromium/src/+/main/content/renderer/media_recorder/video_track_recorder.h
 [diagram]: http://ibb.co/mLK4Y5
 
 ![MediaRecorder classes](http://preview.ibb.co/j1RjY5/DD_Media_Capabilities_Encoding.png)
@@ -94,9 +94,9 @@
 [web_tests/external/mediacapture-record], unittests in [content] and [media]
 and [browsertests].
 
-[web_tests/fast/mediarecorder]: https://chromium.googlesource.com/chromium/src/+/master/third_party/blink/web_tests/fast/mediarecorder/
-[web_tests/external/mediacapture-record]: https://chromium.googlesource.com/chromium/src/+/master/third_party/blink/web_tests/external/wpt/mediacapture-record/
-[content]: https://chromium.googlesource.com/chromium/src/+/master/content/renderer/media_recorder/
-[media]: https://chromium.googlesource.com/chromium/src/+/master/media/muxers
-[browsertests]: https://chromium.googlesource.com/chromium/src/+/master/content/browser/webrtc/webrtc_media_recorder_browsertest.cc
+[web_tests/fast/mediarecorder]: https://chromium.googlesource.com/chromium/src/+/main/third_party/blink/web_tests/fast/mediarecorder/
+[web_tests/external/mediacapture-record]: https://chromium.googlesource.com/chromium/src/+/main/third_party/blink/web_tests/external/wpt/mediacapture-record/
+[content]: https://chromium.googlesource.com/chromium/src/+/main/content/renderer/media_recorder/
+[media]: https://chromium.googlesource.com/chromium/src/+/main/media/muxers
+[browsertests]: https://chromium.googlesource.com/chromium/src/+/main/content/browser/webrtc/webrtc_media_recorder_browsertest.cc
 
diff --git a/third_party/blink/renderer/modules/presentation/presentation_availability_state.cc b/third_party/blink/renderer/modules/presentation/presentation_availability_state.cc
index 74981bf5..d105e4a 100644
--- a/third_party/blink/renderer/modules/presentation/presentation_availability_state.cc
+++ b/third_party/blink/renderer/modules/presentation/presentation_availability_state.cc
@@ -6,7 +6,6 @@
 
 #include "base/ranges/algorithm.h"
 #include "third_party/blink/renderer/modules/presentation/presentation_availability_observer.h"
-#include "third_party/blink/renderer/platform/bindings/microtask.h"
 
 namespace blink {
 
@@ -22,10 +21,7 @@
   auto screen_availability = GetScreenAvailability(urls);
   // Reject Promise if screen availability is unsupported for all URLs.
   if (screen_availability == mojom::blink::ScreenAvailability::DISABLED) {
-    Microtask::EnqueueMicrotask(WTF::BindOnce(
-        &PresentationAvailabilityCallbacks::RejectAvailabilityNotSupported,
-        WrapPersistent(callback)));
-    // Do not listen to urls if we reject the promise.
+    callback->RejectAvailabilityNotSupported();
     return;
   }
 
@@ -36,9 +32,8 @@
   }
 
   if (screen_availability != mojom::blink::ScreenAvailability::UNKNOWN) {
-    Microtask::EnqueueMicrotask(WTF::BindOnce(
-        &PresentationAvailabilityCallbacks::Resolve, WrapPersistent(callback),
-        screen_availability == mojom::blink::ScreenAvailability::AVAILABLE));
+    callback->Resolve(screen_availability ==
+                      mojom::blink::ScreenAvailability::AVAILABLE);
   } else {
     listener->availability_callbacks.push_back(callback);
   }
diff --git a/third_party/blink/renderer/modules/scheduler/task_attribution_tracker_impl.cc b/third_party/blink/renderer/modules/scheduler/task_attribution_tracker_impl.cc
index 9e3064c7..d697b71 100644
--- a/third_party/blink/renderer/modules/scheduler/task_attribution_tracker_impl.cc
+++ b/third_party/blink/renderer/modules/scheduler/task_attribution_tracker_impl.cc
@@ -43,6 +43,10 @@
   }
 }
 
+int64_t TaskAttributionIdToInt(absl::optional<TaskAttributionId> id) {
+  return id ? static_cast<int64_t>(id.value().value()) : -1;
+}
+
 }  // namespace
 
 TaskAttributionTrackerImpl::TaskAttributionTrackerImpl()
@@ -206,15 +210,10 @@
         data->set_type(ToProtoEnum(type));
         data->set_scope_task_id(scope_task_id_.value());
         data->set_running_task_id_to_be_restored(
-            running_task_id_to_be_restored_
-                ? running_task_id_to_be_restored_.value().value()
-                : -1);
+            TaskAttributionIdToInt(running_task_id_to_be_restored_));
         data->set_continuation_task_id_to_be_restored(
-            continuation_task_id_to_be_restored_
-                ? continuation_task_id_to_be_restored_.value().value()
-                : -1);
-        data->set_parent_task_id(parent_task_id ? parent_task_id.value().value()
-                                                : -1);
+            TaskAttributionIdToInt(continuation_task_id_to_be_restored_));
+        data->set_parent_task_id(TaskAttributionIdToInt(parent_task_id));
       });
 }
 
diff --git a/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc b/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc
index 360a4f9c..d9d5c8cc 100644
--- a/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc
+++ b/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc
@@ -55,6 +55,12 @@
   }
 }
 
+// Returns x if x is finite (not NaN or infinite), otherwise returns
+// default_value
+float EnsureFinite(float x, float default_value) {
+  return std::isfinite(x) ? x : default_value;
+}
+
 }  // namespace
 
 RealtimeAnalyser::RealtimeAnalyser(unsigned render_quantum_frames)
@@ -275,8 +281,8 @@
   for (size_t i = 0; i < n; ++i) {
     std::complex<double> c(real_p_data[i], imag_p_data[i]);
     double scalar_magnitude = abs(c) * magnitude_scale;
-    destination[i] =
-        static_cast<float>(k * destination[i] + (1 - k) * scalar_magnitude);
+    destination[i] = EnsureFinite(
+        static_cast<float>(k * destination[i] + (1 - k) * scalar_magnitude), 0);
   }
 }
 
diff --git a/third_party/blink/renderer/modules/webcodecs/audio_data.cc b/third_party/blink/renderer/modules/webcodecs/audio_data.cc
index e570ac3..f8b40b9 100644
--- a/third_party/blink/renderer/modules/webcodecs/audio_data.cc
+++ b/third_party/blink/renderer/modules/webcodecs/audio_data.cc
@@ -63,6 +63,7 @@
     case media::SampleFormat::kUnknownSampleFormat:
     case media::SampleFormat::kSampleFormatDts:
     case media::SampleFormat::kSampleFormatDtsxP2:
+    case media::SampleFormat::kSampleFormatIECDts:
       return absl::nullopt;
   }
 }
diff --git a/third_party/blink/renderer/modules/webgpu/gpu_canvas_context.cc b/third_party/blink/renderer/modules/webgpu/gpu_canvas_context.cc
index 0ee9b63..8343a65 100644
--- a/third_party/blink/renderer/modules/webgpu/gpu_canvas_context.cc
+++ b/third_party/blink/renderer/modules/webgpu/gpu_canvas_context.cc
@@ -598,7 +598,11 @@
       "Calling getPreferredFormat() on a GPUCanvasContext is deprecated and "
       "will soon be removed. Call navigator.gpu.getPreferredCanvasFormat() "
       "instead, which no longer requires an adapter.");
+#if BUILDFLAG(IS_ANDROID)
+  return "rgba8unorm";
+#else
   return "bgra8unorm";
+#endif
 }
 
 GPUTexture* GPUCanvasContext::getCurrentTexture(
diff --git a/third_party/blink/renderer/modules/webusb/usb.cc b/third_party/blink/renderer/modules/webusb/usb.cc
index 9de463e..90018f4 100644
--- a/third_party/blink/renderer/modules/webusb/usb.cc
+++ b/third_party/blink/renderer/modules/webusb/usb.cc
@@ -333,16 +333,19 @@
 
 bool USB::IsContextSupported() const {
   // Since WebUSB on Web Workers is in the process of being implemented, we
-  // check here if the runtime flag for the appropriate worker is enabled..
+  // check here if the runtime flag for the appropriate worker is enabled.
   // TODO(https://crbug.com/837406): Remove this check once the feature has
   // shipped.
   ExecutionContext* context = GetExecutionContext();
   if (!context)
     return false;
 
-  DCHECK(context->IsWindow() || context->IsDedicatedWorkerGlobalScope());
+  DCHECK(context->IsWindow() || context->IsDedicatedWorkerGlobalScope() ||
+         context->IsServiceWorkerGlobalScope());
   DCHECK(!context->IsDedicatedWorkerGlobalScope() ||
          RuntimeEnabledFeatures::WebUSBOnDedicatedWorkersEnabled());
+  DCHECK(!context->IsServiceWorkerGlobalScope() ||
+         RuntimeEnabledFeatures::WebUSBOnServiceWorkersEnabled());
 
   return true;
 }
diff --git a/third_party/blink/renderer/modules/xr/xr_session.h b/third_party/blink/renderer/modules/xr/xr_session.h
index c151f41..804e5dd 100644
--- a/third_party/blink/renderer/modules/xr/xr_session.h
+++ b/third_party/blink/renderer/modules/xr/xr_session.h
@@ -535,7 +535,7 @@
   // on the device - this is done in |hit_test_source_ids_| and
   // |hit_test_source_for_transient_input_ids_|.
   // For the specifics of HeapHashMap<Key, WeakMember<Value>> behavior, see:
-  // https://chromium.googlesource.com/chromium/src/+/master/third_party/blink/renderer/platform/heap/BlinkGCAPIReference.md#weak-collections
+  // https://chromium.googlesource.com/chromium/src/+/main/third_party/blink/renderer/platform/heap/BlinkGCAPIReference.md#weak-collections
   HeapHashMap<uint64_t, WeakMember<XRHitTestSource>>
       hit_test_source_ids_to_hit_test_sources_;
   HeapHashMap<uint64_t, WeakMember<XRTransientInputHitTestSource>>
diff --git a/third_party/blink/renderer/platform/instrumentation/tracing/traced_value_test.cc b/third_party/blink/renderer/platform/instrumentation/tracing/traced_value_test.cc
index 192bf20..f090fc7c 100644
--- a/third_party/blink/renderer/platform/instrumentation/tracing/traced_value_test.cc
+++ b/third_party/blink/renderer/platform/instrumentation/tracing/traced_value_test.cc
@@ -26,13 +26,14 @@
 
   absl::optional<base::Value> parsed = ParseTracedValue(std::move(value));
   ASSERT_TRUE(parsed->is_dict());
-  absl::optional<int> int_value = parsed->FindIntKey("int");
+  const base::Value::Dict& dict = parsed->GetDict();
+  absl::optional<int> int_value = dict.FindInt("int");
   ASSERT_TRUE(int_value.has_value());
   EXPECT_EQ(2014, *int_value);
-  absl::optional<double> double_value = parsed->FindDoubleKey("double");
+  absl::optional<double> double_value = dict.FindDouble("double");
   ASSERT_TRUE(double_value.has_value());
   EXPECT_EQ(0.0, *double_value);
-  std::string* string_value = parsed->FindStringKey("string");
+  const std::string* string_value = dict.FindString("string");
   ASSERT_NE(nullptr, string_value);
   EXPECT_EQ("string", *string_value);
 }
@@ -60,40 +61,39 @@
 
   absl::optional<base::Value> parsed = ParseTracedValue(std::move(value));
   ASSERT_TRUE(parsed->is_dict());
-  absl::optional<int> i0 = parsed->FindIntKey("i0");
+  const base::Value::Dict& dict = parsed->GetDict();
+  absl::optional<int> i0 = dict.FindInt("i0");
   ASSERT_TRUE(i0.has_value());
   EXPECT_EQ(2014, *i0);
-  absl::optional<int> i1 = parsed->FindIntPath("dict1.i1");
+  absl::optional<int> i1 = dict.FindIntByDottedPath("dict1.i1");
   ASSERT_TRUE(i1.has_value());
   EXPECT_EQ(2014, *i1);
-  absl::optional<bool> b2 = parsed->FindBoolPath("dict1.dict2.b2");
+  absl::optional<bool> b2 = dict.FindBoolByDottedPath("dict1.dict2.b2");
   ASSERT_TRUE(b2.has_value());
   EXPECT_FALSE(*b2);
-  std::string* s1 = parsed->FindStringPath("dict1.s1");
+  const std::string* s1 = dict.FindStringByDottedPath("dict1.s1");
   ASSERT_NE(nullptr, s1);
   EXPECT_EQ("foo", *s1);
-  absl::optional<double> d0 = parsed->FindDoubleKey("d0");
+  absl::optional<double> d0 = dict.FindDouble("d0");
   ASSERT_TRUE(d0.has_value());
   EXPECT_EQ(0.0, *d0);
-  absl::optional<bool> b0 = parsed->FindBoolKey("b0");
+  absl::optional<bool> b0 = dict.FindBool("b0");
   ASSERT_TRUE(b0.has_value());
   EXPECT_TRUE(*b0);
-  base::Value* a1_value = parsed->FindListKey("a1");
-  ASSERT_NE(nullptr, a1_value);
-  ASSERT_TRUE(a1_value->is_list());
-  base::Value::ListView a1 = a1_value->GetListDeprecated();
-  absl::optional<int> a1i0 = a1[0].GetIfInt();
+  const base::Value::List* a1 = dict.FindList("a1");
+  ASSERT_NE(nullptr, a1);
+  absl::optional<int> a1i0 = (*a1)[0].GetIfInt();
   ASSERT_TRUE(a1i0.has_value());
   EXPECT_EQ(1, *a1i0);
-  absl::optional<bool> a1b1 = a1[1].GetIfBool();
+  absl::optional<bool> a1b1 = (*a1)[1].GetIfBool();
   ASSERT_TRUE(a1b1.has_value());
   EXPECT_TRUE(*a1b1);
-  const base::Value& a1d2 = a1[2];
+  const base::Value& a1d2 = (*a1)[2];
   ASSERT_TRUE(a1d2.is_dict());
-  absl::optional<int> i2 = a1d2.FindIntKey("i2");
+  absl::optional<int> i2 = a1d2.GetDict().FindInt("i2");
   ASSERT_TRUE(i2.has_value());
   EXPECT_EQ(3, *i2);
-  std::string* s0 = parsed->FindStringKey("s0");
+  const std::string* s0 = dict.FindString("s0");
   ASSERT_NE(nullptr, s0);
   EXPECT_EQ("foo", *s0);
 }
@@ -108,19 +108,20 @@
 
   absl::optional<base::Value> parsed = ParseTracedValue(std::move(value));
   ASSERT_TRUE(parsed->is_dict());
-  std::string* s0 = parsed->FindStringKey("s0");
+  const base::Value::Dict& dict = parsed->GetDict();
+  const std::string* s0 = dict.FindString("s0");
   ASSERT_NE(nullptr, s0);
   EXPECT_EQ("value0\\", *s0);
-  std::string* s1 = parsed->FindStringKey("s1");
+  const std::string* s1 = dict.FindString("s1");
   ASSERT_NE(nullptr, s1);
   EXPECT_EQ("value\n1", *s1);
-  std::string* s2 = parsed->FindStringKey("s2");
+  const std::string* s2 = dict.FindString("s2");
   ASSERT_NE(nullptr, s2);
   EXPECT_EQ("\"value2\"", *s2);
-  std::string* s3 = parsed->FindStringKey("s3\\");
+  const std::string* s3 = dict.FindString("s3\\");
   ASSERT_NE(nullptr, s3);
   EXPECT_EQ("value3", *s3);
-  std::string* s4 = parsed->FindStringKey("\"s4\"");
+  const std::string* s4 = dict.FindString("\"s4\"");
   ASSERT_NE(nullptr, s4);
   EXPECT_EQ("value4", *s4);
 }
@@ -143,23 +144,24 @@
 
   absl::optional<base::Value> parsed = ParseTracedValue(std::move(value));
   ASSERT_TRUE(parsed->is_dict());
-  absl::optional<int> int_value = parsed->FindIntKey(int_str);
+  const base::Value::Dict& dict = parsed->GetDict();
+  absl::optional<int> int_value = dict.FindInt(int_str);
   ASSERT_TRUE(int_value.has_value());
   EXPECT_EQ(2014, *int_value);
-  absl::optional<double> double_value = parsed->FindDoubleKey(double_str);
+  absl::optional<double> double_value = dict.FindDouble(double_str);
   ASSERT_TRUE(double_value.has_value());
   EXPECT_EQ(0.0, *double_value);
-  absl::optional<bool> bool_value = parsed->FindBoolKey(bool_str);
+  absl::optional<bool> bool_value = dict.FindBool(bool_str);
   ASSERT_TRUE(bool_value.has_value());
   EXPECT_TRUE(*bool_value);
-  std::string* string_value = parsed->FindStringKey(string_str);
+  const std::string* string_value = dict.FindString(string_str);
   ASSERT_NE(nullptr, string_value);
   EXPECT_EQ("string", *string_value);
-  base::Value* a1_value = parsed->FindListKey(array_str);
-  ASSERT_TRUE(a1_value->is_list());
-  base::Value::ListView a1 = a1_value->GetListDeprecated();
-  absl::optional<int> el0 = a1[0].GetIfInt();
-  absl::optional<int> el1 = a1[1].GetIfInt();
+  const base::Value::List* a1 = dict.FindList(array_str);
+  ASSERT_TRUE(a1);
+  ASSERT_FALSE(a1->empty());
+  absl::optional<int> el0 = (*a1)[0].GetIfInt();
+  absl::optional<int> el1 = (*a1)[1].GetIfInt();
   ASSERT_TRUE(el0.has_value());
   ASSERT_TRUE(el1.has_value());
   EXPECT_EQ(1, *el0);
diff --git a/third_party/blink/renderer/platform/scheduler/common/event_loop.cc b/third_party/blink/renderer/platform/scheduler/common/event_loop.cc
index 8a63f9e9..bd379d6 100644
--- a/third_party/blink/renderer/platform/scheduler/common/event_loop.cc
+++ b/third_party/blink/renderer/platform/scheduler/common/event_loop.cc
@@ -30,16 +30,25 @@
 void EventLoop::EnqueueMicrotask(base::OnceClosure task) {
   pending_microtasks_.push_back(std::move(task));
   if (microtask_queue_) {
+    // Since the microtask queue won't outlive this object we do not need
+    // to increment a ref count.
     microtask_queue_->EnqueueMicrotask(isolate_,
                                        &EventLoop::RunPendingMicrotask, this);
   } else {
+    // Since we are handing out a ptr to this object to an object that can
+    // outlive this object increment the ref count. It will be decremented after
+    // the task runs. See `RunPendingMicrotask` for the decrement.
+    AddRef();
     isolate_->EnqueueMicrotask(&EventLoop::RunPendingMicrotask, this);
   }
 }
 
 void EventLoop::PerformMicrotaskCheckpoint() {
-  if (microtask_queue_)
+  if (microtask_queue_) {
     microtask_queue_->PerformCheckpoint(isolate_);
+  } else {
+    v8::MicrotasksScope::PerformCheckpoint(isolate_);
+  }
 }
 
 // static
@@ -90,6 +99,11 @@
   base::OnceClosure task = std::move(self->pending_microtasks_.front());
   self->pending_microtasks_.pop_front();
   std::move(task).Run();
+
+  // If we had incremented the ref count decrement it. See `EnqueueMicrotask`.
+  if (!self->microtask_queue_) {
+    self->Release();
+  }
 }
 
 }  // namespace scheduler
diff --git a/third_party/blink/tools/blinkpy/common/net/network_transaction.py b/third_party/blink/tools/blinkpy/common/net/network_transaction.py
index d1284e5..2629ab6 100644
--- a/third_party/blink/tools/blinkpy/common/net/network_transaction.py
+++ b/third_party/blink/tools/blinkpy/common/net/network_transaction.py
@@ -29,7 +29,7 @@
 import logging
 import random
 import time
-import requests.exceptions
+import urllib.error
 
 _log = logging.getLogger(__name__)
 
@@ -58,19 +58,15 @@
         while True:
             try:
                 return request()
-            except requests.exceptions.RequestException as error:
-                if hasattr(error, 'response'):
-                    code = error.response.status_code
-                    if self._return_none_on_404 and code == 404:
-                        return None
-                    _log.warning('Received HTTP status %s loading "%s": %s. ',
-                                 code, error.response.url,
-                                 error.response.reason)
-                else:
-                    _log.warning('Received RequestException: %s ...', error)
-                _log.warning('Retrying in %.3f seconds...',
-                             self._backoff_seconds)
+            except urllib.error.URLError as error:
+                code = getattr(error, 'code', None)
+                if self._return_none_on_404 and code == 404:
+                    return None
                 self._check_for_timeout()
+                _log.warning(
+                    'Received HTTP status %s loading "%s": %s. '
+                    'Retrying in %.3f seconds...', code, error.filename,
+                    error.reason, self._backoff_seconds)
                 self._sleep()
 
     def _check_for_timeout(self):
diff --git a/third_party/blink/tools/blinkpy/common/net/network_transaction_unittest.py b/third_party/blink/tools/blinkpy/common/net/network_transaction_unittest.py
index 8262c23d..b1c19f9 100644
--- a/third_party/blink/tools/blinkpy/common/net/network_transaction_unittest.py
+++ b/third_party/blink/tools/blinkpy/common/net/network_transaction_unittest.py
@@ -29,8 +29,7 @@
 from blinkpy.common.net.network_transaction import NetworkTransaction, NetworkTimeout
 from blinkpy.common.system.log_testing import LoggingTestCase
 
-from requests.exceptions import HTTPError
-from requests import Response
+from six.moves.urllib.error import HTTPError
 
 
 class NetworkTransactionTest(LoggingTestCase):
@@ -63,29 +62,22 @@
     def _raise_500_error(self):
         self._run_count += 1
         if self._run_count < 3:
-            response = Response()
-            response.status_code = 500
-            response.reason = 'internal server error'
-            response.url = 'http://example.com/'
-            raise HTTPError(response=response)
+            raise HTTPError('http://example.com/', 500,
+                            'internal server error', None, None)
         return 42
 
     def _raise_404_error(self):
-        response = Response()
-        response.status_code = 404
-        response.reason = 'not found'
-        response.url = 'http://foo.com/'
-        raise HTTPError(response=response)
+        raise HTTPError('http://foo.com/', 404, 'not found', None, None)
 
     def test_retry(self):
         transaction = NetworkTransaction(initial_backoff_seconds=0)
         self.assertEqual(transaction.run(self._raise_500_error), 42)
         self.assertEqual(self._run_count, 3)
         self.assertLog([
-            'WARNING: Received HTTP status 500 loading "http://example.com/": internal server error. \n',
-            'WARNING: Retrying in 0.000 seconds...\n',
-            'WARNING: Received HTTP status 500 loading "http://example.com/": internal server error. \n',
-            'WARNING: Retrying in 0.000 seconds...\n'
+            'WARNING: Received HTTP status 500 loading "http://example.com/": '
+            'internal server error. Retrying in 0.000 seconds...\n',
+            'WARNING: Received HTTP status 500 loading "http://example.com/": '
+            'internal server error. Retrying in 0.000 seconds...\n'
         ])
 
     def test_convert_404_to_none(self):
diff --git a/third_party/blink/tools/blinkpy/common/net/web.py b/third_party/blink/tools/blinkpy/common/net/web.py
index 049f8af..3f579c8 100644
--- a/third_party/blink/tools/blinkpy/common/net/web.py
+++ b/third_party/blink/tools/blinkpy/common/net/web.py
@@ -27,8 +27,10 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 import functools
+import gzip
+import io
 import logging
-import requests
+import urllib.request
 
 from blinkpy.common.net.network_transaction import NetworkTransaction
 
@@ -36,9 +38,13 @@
 
 
 class Web(object):
+    class _HTTPRedirectHandler2(urllib.request.HTTPRedirectHandler):  # pylint:disable=no-init
+        """A subclass of HTTPRedirectHandler to support 308 Permanent Redirect."""
 
-    def __init__(self):
-        self.session = requests.Session()
+        def http_error_308(self, req, fp, code, msg, headers):  # pylint:disable=unused-argument
+            # We have to override the code to 301 (Moved Permanently);
+            # otherwise, HTTPRedirectHandler will throw a HTTPError.
+            return self.http_error_301(req, fp, 301, msg, headers)
 
     def get_binary(self, url, return_none_on_404=False):
         make_request = functools.partial(self.request_and_read,
@@ -49,15 +55,24 @@
             return_none_on_404=return_none_on_404).run(make_request)
 
     def request(self, method, url, data=None, headers=None):
-        return self.session.request(method.lower(),
-                                    url,
-                                    data=data,
-                                    headers=headers,
-                                    stream=True)
+        opener = urllib.request.build_opener(Web._HTTPRedirectHandler2)
+        request = urllib.request.Request(url=url, data=data)
+
+        request.get_method = lambda: method
+
+        if headers:
+            for key, value in headers.items():
+                request.add_header(key, value)
+
+        return opener.open(request)
 
     def request_and_read(self, *args, **kwargs):
+        # TODO(crbug.com/1213998): Consider a higher-level HTTP client like
+        # `requests` that handles retries and decoding automatically.
         response = self.request(*args, **kwargs)
-        buf = bytearray()
-        for section in response.iter_content(chunk_size=None):
-            buf.extend(section)
-        return buf
+        if response.headers.get('Content-Encoding') == 'gzip':
+            # Wrap the HTTP response, which is not fully file-like.
+            buf = io.BytesIO(response.read())
+            gzip_decoder = gzip.GzipFile(fileobj=buf)
+            return gzip_decoder.read()
+        return response.read()
diff --git a/third_party/blink/tools/blinkpy/common/net/web_mock.py b/third_party/blink/tools/blinkpy/common/net/web_mock.py
index a83fae5..51bc546 100644
--- a/third_party/blink/tools/blinkpy/common/net/web_mock.py
+++ b/third_party/blink/tools/blinkpy/common/net/web_mock.py
@@ -27,8 +27,7 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 import json
-from requests.exceptions import HTTPError
-from requests import Response
+from six.moves.urllib.error import HTTPError
 
 from blinkpy.common.net.rpc import RESPONSE_PREFIX
 
@@ -82,12 +81,12 @@
         self._info = MockInfo(self.headers)
 
         if int(self.status_code) >= 400:
-            response = Response()
-            response.status_code = self.status_code
-            response.reason = 'Received error status code: {}'.format(
-                self.status_code)
-            response.url = self.url
-            raise HTTPError(response=response)
+            raise HTTPError(url=self.url,
+                            code=self.status_code,
+                            msg='Received error status code: {}'.format(
+                                self.status_code),
+                            hdrs={},
+                            fp=None)
 
     def getcode(self):
         return self.status_code
diff --git a/third_party/blink/tools/blinkpy/w3c/gerrit.py b/third_party/blink/tools/blinkpy/w3c/gerrit.py
index 4755ad2..9ee094c 100644
--- a/third_party/blink/tools/blinkpy/w3c/gerrit.py
+++ b/third_party/blink/tools/blinkpy/w3c/gerrit.py
@@ -5,7 +5,7 @@
 import base64
 import json
 import logging
-from requests.exceptions import HTTPError
+from six.moves.urllib.error import HTTPError
 
 from blinkpy.common.net.network_transaction import NetworkTimeout
 from blinkpy.common.path_finder import RELATIVE_WPT_TESTS
@@ -162,13 +162,9 @@
         try:
             return self.api.post(path, {'message': message})
         except HTTPError as e:
-            message = 'Failed to post a comment to issue {}'.format(
-                self.change_id)
-            if hasattr(e, 'response'):
-                message += ' (code {})'.format(e.response.status_code)
-            else:
-                message += ' (error {})'.format(e.response.status_code)
-            raise GerritError(message)
+            raise GerritError(
+                'Failed to post a comment to issue {} (code {}).'.format(
+                    self.change_id, e.code))
 
     def is_exportable(self):
         # TODO(robertma): Consolidate with the related part in chromium_exportable_commits.py.
diff --git a/third_party/blink/tools/blinkpy/w3c/wpt_github.py b/third_party/blink/tools/blinkpy/w3c/wpt_github.py
index 9da3b7d..e1bbe27 100644
--- a/third_party/blink/tools/blinkpy/w3c/wpt_github.py
+++ b/third_party/blink/tools/blinkpy/w3c/wpt_github.py
@@ -10,8 +10,8 @@
 import six
 
 from collections import namedtuple
-from requests.exceptions import HTTPError
-from requests.exceptions import InvalidURL
+from six.moves.urllib.error import HTTPError
+from six.moves.urllib.error import URLError
 from six.moves.urllib.parse import quote
 
 from blinkpy.common.memoized import memoized
@@ -137,17 +137,13 @@
         try:
             response = self.request(path, method='POST', body=body)
         except HTTPError as e:
-            if hasattr(e, 'response'):
-                _log.error(e.response.reason)
-                if e.response.status_code == 422:
-                    _log.error('Please check if branch already exists; If so, '
-                               'please remove the PR description and '
-                               'delete the branch')
-                raise GitHubError(201, e.response.status_code,
-                                  'create PR branch %s' % remote_branch_name)
-            else:
-                raise GitHubError(201, e,
-                                  'create PR branch %s' % remote_branch_name)
+            _log.error(e.reason)
+            if e.code == 422:
+                _log.error('Please check if branch already exists; If so, '
+                           'please remove the PR description and '
+                           'delete the branch')
+            raise GitHubError(201, e.code,
+                              'create PR branch %s' % remote_branch_name)
 
         if response.status_code != 201:
             raise GitHubError(201, response.status_code, 'create PR')
@@ -388,11 +384,11 @@
                     raise GitHubError(204, response.status_code,
                                       'check if PR %d is merged' % pr_number)
             except HTTPError as e:
-                if hasattr(e, 'response') and e.response.status_code == 404:
+                if e.code == 404:
                     return False
                 else:
                     raise
-            except InvalidURL as e:
+            except URLError as e:
                 # After migrate to py3 we met random timeout issue here,
                 # Retry this request in this case
                 _log.warning("Meet URLError...")
@@ -417,7 +413,7 @@
         try:
             response = self.request(path, method='PUT', body=body)
         except HTTPError as e:
-            if hasattr(e, 'response') and e.response.status_code == 405:
+            if e.code == 405:
                 raise MergeError(pr_number)
             else:
                 raise
@@ -476,10 +472,10 @@
         """Initializes a JSONResponse instance.
 
         Args:
-            raw_response: a response object returned by requests.
+            raw_response: a response object returned by open methods in urllib2.
         """
         self._raw_response = raw_response
-        self.status_code = raw_response.status_code
+        self.status_code = raw_response.getcode()
         try:
             self.data = json.load(raw_response)
         except ValueError:
diff --git a/third_party/blink/tools/blinkpy/web_tests/port/base.py b/third_party/blink/tools/blinkpy/web_tests/port/base.py
index f9c557a0..157f685 100644
--- a/third_party/blink/tools/blinkpy/web_tests/port/base.py
+++ b/third_party/blink/tools/blinkpy/web_tests/port/base.py
@@ -334,7 +334,6 @@
         for config in json_configs:
             name = config['name']
             args = config['args']
-            smoke_file = config.get('smoke_file')
             if not VALID_FILE_NAME_REGEX.match(name):
                 raise ValueError(
                     '{}: name "{}" contains invalid characters'.format(
@@ -342,11 +341,11 @@
             if name in configs:
                 raise ValueError('{} contains duplicated name {}.'.format(
                     config_file, name))
-            if args in [x for x, _ in configs.values()]:
+            if args in configs.values():
                 raise ValueError(
                     '{}: name "{}" has the same args as another entry.'.format(
                         config_file, name))
-            configs[name] = (args, smoke_file)
+            configs[name] = args
         return configs
 
     def _specified_additional_driver_flags(self):
@@ -364,7 +363,7 @@
 
         flag_specific_option = self.flag_specific_config_name()
         if flag_specific_option:
-            flags += self.flag_specific_configs()[flag_specific_option][0]
+            flags += self.flag_specific_configs()[flag_specific_option]
 
         flags += self.get_option('additional_driver_flag', [])
         return flags
@@ -398,6 +397,9 @@
     def supports_per_test_timeout(self):
         return False
 
+    def default_smoke_test_only(self):
+        return False
+
     def _default_timeout_ms(self):
         return 6000
 
@@ -1387,26 +1389,7 @@
         smoke_tests = self._tests_from_file(smoke_test_filename)
         return test not in smoke_tests
 
-    def default_smoke_test_only(self):
-        config_name = self.flag_specific_config_name()
-        if config_name:
-            _, smoke_file = self.flag_specific_configs()[config_name]
-            if smoke_file is None:
-                return False
-            if not self._filesystem.exists(
-                    self._filesystem.join(self.web_tests_dir(), smoke_file)):
-                _log.error('Unable to find smoke file(%s) for %s', smoke_file,
-                           config_name)
-                return False
-            return True
-        return False
-
     def path_to_smoke_tests_file(self):
-        config_name = self.flag_specific_config_name()
-        if config_name:
-            _, smoke_file = self.flag_specific_configs()[config_name]
-            return self._filesystem.join(self.web_tests_dir(), smoke_file)
-
         # Historically we only have one smoke tests list. That one now becomes
         # the default
         return self._filesystem.join(self.web_tests_dir(), 'SmokeTests',
diff --git a/third_party/blink/tools/blinkpy/web_tests/port/mac.py b/third_party/blink/tools/blinkpy/web_tests/port/mac.py
index fc9cde0..5a7975a70 100644
--- a/third_party/blink/tools/blinkpy/web_tests/port/mac.py
+++ b/third_party/blink/tools/blinkpy/web_tests/port/mac.py
@@ -112,15 +112,11 @@
 
     def default_smoke_test_only(self):
         # only run platform specific tests on older mac versions
-        if self._version in {'mac10.13', 'mac10.14'}:
-            return True
-        return super().default_smoke_test_only()
+        return self._version in {'mac10.13', 'mac10.14'}
 
     def path_to_smoke_tests_file(self):
-        if self._version in {'mac10.13', 'mac10.14'}:
-            return self._filesystem.join(self.web_tests_dir(), 'SmokeTests',
-                                         'Mac.txt')
-        return super().path_to_smoke_tests_file()
+        return self._filesystem.join(self.web_tests_dir(), 'SmokeTests',
+                                     'Mac.txt')
 
     def _path_to_driver(self, target=None):
         return self._build_path_with_target(target,
diff --git a/third_party/blink/tools/run_wpt_tests.py b/third_party/blink/tools/run_wpt_tests.py
index 6fafbb6c..eb77a9f 100755
--- a/third_party/blink/tools/run_wpt_tests.py
+++ b/third_party/blink/tools/run_wpt_tests.py
@@ -161,7 +161,7 @@
         if self.options.flag_specific:
             configs = self.port.flag_specific_configs()
             rest_args.extend('--binary-arg=%s' % arg
-                             for arg in configs[self.options.flag_specific][0])
+                             for arg in configs[self.options.flag_specific])
 
         if self.options.test_filter:
             for pattern in self.options.test_filter.split(':'):
diff --git a/third_party/blink/web_tests/FlagExpectations/highdpi b/third_party/blink/web_tests/FlagExpectations/highdpi
index d4a7825..4422fa9 100644
--- a/third_party/blink/web_tests/FlagExpectations/highdpi
+++ b/third_party/blink/web_tests/FlagExpectations/highdpi
@@ -1,12 +1,1303 @@
 # results: [ Timeout Crash Pass Failure Slow Skip ]
 
-external/wpt/html/rendering/non-replaced-elements/tables/table-row-pagination-001-print.html [ Failure ]
+# Skip all tests for high DPI test suite unless specified below.
+* [ Skip ]
 
+# Tests to be run on Highdpi. Trying to restrict this list to ~3000.
+# Only small number of tests are picked to run on HighDPI not to burden
+# the CQ/CI resources.
+animations/skew-notsequential-compositor.html [ Pass ]
+animations/state-at-end-event.html [ Pass ]
+animations/3d/matrix-transform-type-animation.html [ Pass ]
+animations/composition/background-position-composition.html [ Pass ]
+animations/composition/clip-composition.html [ Pass ]
+animations/composition/font-size-composition.html [ Pass ]
+animations/custom-properties/angle-type-interpolation.html [ Pass ]
+animations/custom-properties/animate-high-priority.html [ Pass ]
+animations/custom-properties/color-type-interpolation.html [ Pass ]
+animations/direction-and-fill/animation-direction-normal.html [ Pass ]
+animations/direction-and-fill/animation-direction-reverse-fill-mode.html [ Pass ]
+animations/interpolation/border-interpolation.html [ Pass ]
+animations/interpolation/clip-path-interpolation.html [ Pass ]
+animations/interpolation/color-interpolation.html [ Pass ]
+animations/responsive/responsive-neutral-keyframes.html [ Pass ]
+animations/responsive/stacked-visibility-animations-responsive.html [ Pass ]
+animations/responsive/zoom-responsive-transform-animation-001.html [ Pass ]
+animations/responsive/interpolation/fill-responsive.html [ Pass ]
+animations/responsive/interpolation/transform-responsive.html [ Pass ]
+animations/stability/font-builder-crash.html [ Pass ]
+animations/svg/animated-filter-svg-element.html [ Pass ]
+animations/svg-attribute-composition/svg-amplitude-composition.html [ Pass ]
+animations/svg-attribute-composition/svg-azimuth-composition.html [ Pass ]
+animations/svg-attribute-composition/svg-baseFrequency-composition.html [ Pass ]
+animations/svg-attribute-composition/svg-bias-composition.html [ Pass ]
+animations/svg-attribute-interpolation/svg-edgeMode-interpolation.html [ Pass ]
+animations/svg-attribute-interpolation/svg-elevation-interpolation.html [ Pass ]
+animations/svg-attribute-interpolation/svg-exponent-interpolation.html [ Pass ]
+animations/svg-attribute-interpolation/svg-viewBox-interpolation.html [ Pass ]
+animations/web-animations/KeyframeEffect-animation.html [ Pass ]
+compositing/3d-cube.html [ Pass ]
+compositing/checkerboard.html [ Pass ]
+compositing/absolute-inside-out-of-view-fixed.html [ Pass ]
+compositing/backface-visibility-transformed.html [ Pass ]
+compositing/compositing-visible-descendant.html [ Pass ]
+compositing/fixed-background-composited-html.html [ Pass ]
+compositing/perspective-origin-with-scrollbars.html [ Pass ]
+compositing/preserve-3d-toggle.html [ Pass ]
+compositing/render-surface-alpha-blending.html [ Pass ]
+compositing/scroll-with-ancestor-clip.html [ Pass ]
+compositing/scroll-with-inner-clip.html [ Pass ]
+compositing/scrollbar-painting.html [ Pass ]
+compositing/self-painting-layers.html [ Pass ]
+compositing/text-on-scaled-surface.html [ Pass ]
+compositing/tiled-layers-hidpi.html [ Pass ]
+compositing/toggle-compositing.html [ Pass ]
+compositing/transform-complex-page.html [ Pass ]
+compositing/animation/animation-compositing.html [ Pass ]
+compositing/animation/animations-establish-stacking-context.html [ Pass ]
+compositing/backface-visibility/backface-visibility-3d.html [ Pass ]
+compositing/backface-visibility/backface-visibility-image.html [ Pass ]
+compositing/background-color/background-color-alpha.html [ Pass ]
+compositing/background-color/background-color-change-to-text.html [ Pass ]
+compositing/background-color/background-color-change-to-transparent.html [ Pass ]
+compositing/background-color/background-color-container.html [ Pass ]
+compositing/background-color/background-color-content-clip.html [ Pass ]
+compositing/background-color/background-color-text-change.html [ Pass ]
+compositing/background-color/background-color-text-clip.html [ Pass ]
+compositing/background-color/view-blending-base-background.html [ Pass ]
+compositing/backgrounds/fixed-backgrounds.html [ Pass ]
+compositing/backgrounds/local-background.html [ Pass ]
+compositing/contents-opaque/background-clip.html [ Pass ]
+compositing/contents-opaque/background-color.html [ Pass ]
+compositing/culling/filter-occlusion-alpha-large.html [ Pass ]
+compositing/culling/filter-occlusion-alpha.html [ Pass ]
+compositing/culling/filter-occlusion-blur-large.html [ Pass ]
+compositing/filters/sw-layer-overlaps-hw-shadow.html [ Pass ]
+compositing/filters/sw-nested-shadow-overlaps-hw-nested-shadow.html [ Pass ]
+compositing/force-compositing-mode/no-overflow-iframe-layer.html [ Pass ]
+compositing/force-compositing-mode/overflow-hidden-iframe-layer.html [ Pass ]
+compositing/force-compositing-mode/overflow-iframe-layer.html [ Pass ]
+compositing/geometry/clip-inside.html [ Pass ]
+compositing/geometry/clip-with-shadow.html [ Pass ]
+compositing/geometry/clip.html [ Pass ]
+compositing/geometry/clipped-video-controller.html [ Pass ]
+compositing/geometry/fixed-position.html [ Pass ]
+compositing/geometry/flipped-blocks-inline-mapping.html [ Pass ]
+compositing/geometry/flipped-writing-mode.html [ Pass ]
+compositing/geometry/foreground-layer.html [ Pass ]
+compositing/geometry/horizontal-scroll-composited.html [ Pass ]
+compositing/geometry/vertical-scroll-composited.html [ Pass ]
+compositing/geometry/video-fixed-scrolling.html [ Pass ]
+compositing/geometry/video-opacity-overlay.html [ Pass ]
+compositing/gestures/gesture-tapHighlight-1-iframe-composited-scrolled-clipped.html [ Pass ]
+compositing/gestures/gesture-tapHighlight-1-iframe-composited-scrolled-late-composite.html [ Pass ]
+compositing/gestures/gesture-tapHighlight-1-iframe-composited-scrolled-late-noncomposite.html [ Pass ]
+compositing/gestures/gesture-tapHighlight-1-iframe-composited-scrolled.html [ Pass ]
+compositing/gestures/gesture-tapHighlight-1-iframe-composited.html [ Pass ]
+compositing/gestures/gesture-tapHighlight-1-iframe-scrolled.html [ Pass ]
+compositing/gestures/gesture-tapHighlight-1-iframe.html [ Pass ]
+compositing/gestures/gesture-tapHighlight-1-overflow-div-composited-scroll-clip.html [ Pass ]
+compositing/gestures/gesture-tapHighlight-1-overflow-div-layout-change-2.html [ Pass ]
+compositing/gestures/gesture-tapHighlight-1-overflow-div-layout-change.html [ Pass ]
+compositing/gestures/gesture-tapHighlight-1-overflow-div-scrolled-late-composite.html [ Pass ]
+compositing/gestures/gesture-tapHighlight-1-overflow-div-scrolled.html [ Pass ]
+compositing/gestures/gesture-tapHighlight-1-overflow-div.html [ Pass ]
+compositing/gestures/gesture-tapHighlight-adjustment-clipping.html [ Pass ]
+compositing/gestures/gesture-tapHighlight-block-in-multicol.html [ Pass ]
+compositing/gestures/gesture-tapHighlight-composited-img.html [ Pass ]
+compositing/gestures/gesture-tapHighlight-display-contents.html [ Pass ]
+compositing/gestures/gesture-tapHighlight-form-input-text.html [ Pass ]
+compositing/gestures/gesture-tapHighlight-nested-cursor.html [ Pass ]
+compositing/gestures/gesture-tapHighlight-simple-div-boxshadow-fixed.html [ Pass ]
+compositing/gestures/gesture-tapHighlight-simple-div-boxshadow-static.html [ Pass ]
+compositing/gestures/gesture-tapHighlight-simple-div-boxshadow.html [ Pass ]
+compositing/gestures/gesture-tapHighlight-simple-navigate.html [ Pass ]
+compositing/gestures/gesture-tapHighlight-simple-scaled-document.html [ Pass ]
+compositing/gestures/gesture-tapHighlight-simple-scaledX.html [ Pass ]
+compositing/gestures/gesture-tapHighlight-skew-matrix.html [ Pass ]
+css1/box_properties/border.html [ Pass ]
+css1/box_properties/border_color_inline.html [ Pass ]
+css1/box_properties/border_style_inline.html [ Pass ]
+css1/box_properties/clear.html [ Pass ]
+css1/box_properties/float.html [ Pass ]
+css1/box_properties/float_on_text_elements.html [ Pass ]
+css1/box_properties/margin.html [ Pass ]
+css1/box_properties/padding_inline.html [ Pass ]
+css1/cascade/cascade_order.html [ Pass ]
+css1/classification/display.html [ Pass ]
+css1/classification/list_style_image.html [ Pass ]
+css1/color_and_background/background.html [ Pass ]
+css1/color_and_background/color.html [ Pass ]
+css1/font_properties/font.html [ Pass ]
+css1/formatting_model/horizontal_formatting.html [ Pass ]
+css1/formatting_model/vertical_formatting.html [ Pass ]
+css1/pseudo/multiple_pseudo_elements.html [ Pass ]
+css1/text_properties/text_align.html [ Pass ]
+css1/units/color_units.html [ Pass ]
+css2.1/t010403-shand-border-00-c.html [ Pass ]
+css2.1/t010403-shand-font-00-b.html [ Pass ]
+css2.1/t040103-escapes-00-b.html [ Pass ]
+css2.1/t040103-ident-00-c.html [ Pass ]
+css2.1/t0803-c5501-imrgn-t-00-b-ag.html [ Pass ]
+css2.1/t0803-c5501-mrgn-t-00-b-a.html [ Pass ]
+css2.1/t0804-c5506-padn-t-00-b-a.html [ Pass ]
+css2.1/t0804-c5507-ipadn-r-00-b-ag.html [ Pass ]
+css2.1/t0805-c5517-brdr-s-00-c.html [ Pass ]
+css2.1/t0805-c5517-ibrdr-s-00-a.html [ Pass ]
+css2.1/t0905-c5525-flthw-00-c-g.html [ Pass ]
+css2.1/t0905-c5525-fltinln-00-c-ag.html [ Pass ]
+css2.1/t1202-counters-00-b.html [ Pass ]
+css2.1/t140201-c533-bgimage-00-a.html [ Pass ]
+css2.1/t1504-c523-font-style-00-b.html [ Pass ]
+css2.1/t170602-bdr-conflct-w-00-d.html [ Pass ]
+css2.1/20110323/background-intrinsic-001.htm [ Pass ]
+css2.1/20110323/border-conflict-style-079.htm [ Pass ]
+css2.1/20110323/inline-table-001.htm [ Pass ]
+css2.1/20110323/margin-applies-to-001.htm [ Pass ]
+css2.1/20110323/outline-color-applies-to-014.htm [ Pass ]
+css2.1/20110323/table-caption-001.htm [ Pass ]
+css3/font-feature-settings-rendering.html [ Pass ]
+css3/background/background-color-gradient-alignment.html [ Pass ]
+css3/blending/background-blend-mode-crossfade-image-gradient.html [ Pass ]
+css3/blending/mix-blend-mode-composited-layers.html [ Pass ]
+css3/blending/svg-blend-color.html [ Pass ]
+css3/filters/add-filter-rendering.html [ Pass ]
+css3/filters/backdrop-filter-basic-blur.html [ Pass ]
+css3/filters/effect-blur.html [ Pass ]
+css3/filters/effect-combined.html [ Pass ]
+css3/masking/clip-path-circle.html [ Pass ]
+css3/masking/mask-repeat-round-border.html [ Pass ]
+editing/composition-underline-color.html [ Pass ]
+editing/caret/caret-color.html [ Pass ]
+editing/input/caret-at-the-edge-of-input.html [ Pass ]
+editing/inserting/insert-space-in-empty-doc.html [ Pass ]
+editing/pasteboard/drag-image-to-contenteditable-in-iframe.html [ Pass ]
+editing/selection/selection-background.html [ Pass ]
+external/wpt/accelerometer/Accelerometer.https.html [ Pass ]
+external/wpt/accessibility/crashtests/computed-accessible-child-of-pseudo-element.html [ Pass ]
+external/wpt/ambient-light/AmbientLightSensor-iframe-access.https.html [ Pass ]
+external/wpt/animation-worklet/worklet-animation-with-fill-mode.https.html [ Pass ]
+external/wpt/apng/animated-png-timeout.html [ Pass ]
+external/wpt/appmanifest/id-member/id-member-manifest-update-manual-v2.html [ Pass ]
+external/wpt/appmanifest/start_url-member/pass.html [ Pass ]
+external/wpt/audio-output/selectAudioOutput-sans-user-activation.https.html [ Pass ]
+external/wpt/badging/badge-success.https.html [ Pass ]
+external/wpt/battery-status/battery-allowed-by-feature-policy-attribute.https.sub.html [ Pass ]
+external/wpt/beacon/headers/header-referrer-no-referrer-when-downgrade.https.html [ Pass ]
+external/wpt/close-watcher/basic.html [ Pass ]
+external/wpt/common/blank.html [ Pass ]
+external/wpt/common/dispatcher/executor.html [ Pass ]
+external/wpt/compat/webkit-radial-gradient-radii.html [ Pass ]
+external/wpt/content-dpr/image-with-content-dpr-and-explicit-dimensions.html [ Pass ]
+external/wpt/contenteditable/plaintext-only.html [ Pass ]
+external/wpt/cors/image-tainting-in-cross-origin-iframe.sub.html [ Pass ]
+external/wpt/credential-management/fedcm-revoke.https.html [ Pass ]
+external/wpt/css/CSS2/abspos/remove-block-between-inline-and-abspos.html [ Pass ]
+external/wpt/css/CSS2/borders/ridge-default.html [ Pass ]
+external/wpt/css/CSS2/cascade/inherit-computed-002.html [ Pass ]
+external/wpt/css/CSS2/floats/float-nowrap-3.html [ Pass ]
+external/wpt/css/CSS2/linebox/inline-children-root-linebox-crash-001.html [ Pass ]
+external/wpt/css/CSS2/linebox/crashtests/inline-block-baseline-crash.html [ Pass ]
+external/wpt/css/CSS2/normal-flow/block-in-inline-client-rects-001.html [ Pass ]
+external/wpt/css/CSS2/normal-flow/crashtests/block-in-inline-ax-crash.html [ Pass ]
+external/wpt/css/CSS2/positioning/detach-abspos-before-layout.html [ Pass ]
+external/wpt/css/CSS2/stacking-context/opacity-change-parent-stacking-context.html [ Pass ]
+external/wpt/css/CSS2/tables/border-collapse-005.html [ Pass ]
+external/wpt/css/CSS2/text/bidi-span-003.html [ Pass ]
+external/wpt/css/CSS2/text/crashtests/bidi-inline-fragment-oof-crash.html [ Pass ]
+external/wpt/css/compositing/background-blending/background-blend-mode-gradient-image.html [ Pass ]
+external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-blended-with-transform-and-perspective.html [ Pass ]
+external/wpt/css/compositing/parsing/background-blend-mode-valid.html [ Pass ]
+external/wpt/css/compositing/svg/mix-blend-mode-svg-rectangle.html [ Pass ]
+external/wpt/css/css-align/ttwf-reftest-alignContent.html [ Pass ]
+external/wpt/css/css-align/baseline-rules/synthesized-baseline-grid-001.html [ Pass ]
+external/wpt/css/css-align/content-distribution/parse-align-content-002.html [ Pass ]
+external/wpt/css/css-align/default-alignment/parse-justify-items-005.html [ Pass ]
+external/wpt/css/css-align/distribution-values/space-evenly-001.html [ Pass ]
+external/wpt/css/css-align/gaps/gap-normal-used-001.html [ Pass ]
+external/wpt/css/css-align/parsing/column-gap-invalid.html [ Pass ]
+external/wpt/css/css-align/self-alignment/parse-justify-self-001.html [ Pass ]
+external/wpt/css/css-animations/animation-important-002.html [ Pass ]
+external/wpt/css/css-animations/crashtests/replace-keyframes-animating-filter-001.html [ Pass ]
+external/wpt/css/css-animations/parsing/animation-invalid.html [ Pass ]
+external/wpt/css/css-animations/responsive/column-width-001.html [ Pass ]
+external/wpt/css/css-backgrounds/background-size-008.html [ Pass ]
+external/wpt/css/css-backgrounds/animations/background-color-transition-currentcolor.html [ Pass ]
+external/wpt/css/css-backgrounds/animations/invalidation/background-color-transition-with-initially-transparent.html [ Pass ]
+external/wpt/css/css-backgrounds/background-clip/clip-content-box_with_size.html [ Pass ]
+external/wpt/css/css-backgrounds/background-origin/origin-content-box_with_size.html [ Pass ]
+external/wpt/css/css-backgrounds/background-position/subpixel-position-center.tentative.html [ Pass ]
+external/wpt/css/css-backgrounds/box-shadow/tools/box-shadow-blur-definition-001-image-generator.html [ Pass ]
+external/wpt/css/css-backgrounds/hidpi/simple-bg-color.html [ Pass ]
+external/wpt/css/css-backgrounds/parsing/background-image-invalid.html [ Pass ]
+external/wpt/css/css-box/inheritance.html [ Pass ]
+external/wpt/css/css-box/parsing/height-valid.html [ Pass ]
+external/wpt/css/css-break/out-of-flow-in-multicolumn-082.html [ Pass ]
+external/wpt/css/css-break/flexbox/button-in-multicol-crash.html [ Pass ]
+external/wpt/css/css-break/grid/grid-item-fragmentation-023.html [ Pass ]
+external/wpt/css/css-break/parsing/widows-invalid.html [ Pass ]
+external/wpt/css/css-break/table/table-cell-expansion-003.html [ Pass ]
+external/wpt/css/css-cascade/revert-layer-010.html [ Pass ]
+external/wpt/css/css-cascade/parsing/layer-import-parsing.html [ Pass ]
+external/wpt/css/css-color/rgb-003.html [ Pass ]
+external/wpt/css/css-color-adjust/inheritance.html [ Pass ]
+external/wpt/css/css-color-adjust/parsing/print-color-adjust.html [ Pass ]
+external/wpt/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-table-border-currentcolor-responsive.html [ Pass ]
+external/wpt/css/css-color/parsing/color-contrast-valid.html [ Pass ]
+external/wpt/css/css-contain/contain-paint-011.html [ Pass ]
+external/wpt/css/css-contain/container-queries/canvas-as-container-002.html [ Pass ]
+external/wpt/css/css-contain/container-queries/crashtests/math-block-container-child-crash.html [ Pass ]
+external/wpt/css/css-contain/content-visibility/slot-content-visibility-6-crash.html [ Pass ]
+external/wpt/css/css-contain/content-visibility/parsing/content-visibility-valid.html [ Pass ]
+external/wpt/css/css-contain/crashtests/contain-nested-crash-001.html [ Pass ]
+external/wpt/css/css-contain/parsing/contain-invalid.html [ Pass ]
+external/wpt/css/css-content/quotes-018.html [ Pass ]
+external/wpt/css/css-counter-styles/idlharness.html [ Pass ]
+external/wpt/css/css-counter-styles/arabic-indic/css3-counter-styles-101.html [ Pass ]
+external/wpt/css/css-counter-styles/bengali/css3-counter-styles-116.html [ Pass ]
+external/wpt/css/css-counter-styles/cambodian/css3-counter-styles-160.html [ Pass ]
+external/wpt/css/css-counter-styles/cjk-decimal/css3-counter-styles-004.html [ Pass ]
+external/wpt/css/css-counter-styles/cjk-earthly-branch/css3-counter-styles-203.html [ Pass ]
+external/wpt/css/css-counter-styles/cjk-heavenly-stem/css3-counter-styles-205.html [ Pass ]
+external/wpt/css/css-counter-styles/counter-style-at-rule/descriptor-fallback-invalid.html [ Pass ]
+external/wpt/css/css-counter-styles/cssom/cssom-system-setter-2.html [ Pass ]
+external/wpt/css/css-counter-styles/devanagari/css3-counter-styles-120.html [ Pass ]
+external/wpt/css/css-counter-styles/ethiopic-numeric/css3-counter-styles-069.html [ Pass ]
+external/wpt/css/css-counter-styles/georgian/css3-counter-styles-014.html [ Pass ]
+external/wpt/css/css-counter-styles/gujarati/css3-counter-styles-122.html [ Pass ]
+external/wpt/css/css-counter-styles/gurmukhi/css3-counter-styles-126.html [ Pass ]
+external/wpt/css/css-counter-styles/hebrew/css3-counter-styles-015.html [ Pass ]
+external/wpt/css/css-counter-styles/hiragana/css3-counter-styles-032.html [ Pass ]
+external/wpt/css/css-counter-styles/hiragana-iroha/css3-counter-styles-034.html [ Pass ]
+external/wpt/css/css-counter-styles/japanese-formal/css3-counter-styles-049.html [ Pass ]
+external/wpt/css/css-counter-styles/japanese-informal/css3-counter-styles-043.html [ Pass ]
+external/wpt/css/css-counter-styles/kannada/css3-counter-styles-130.html [ Pass ]
+external/wpt/css/css-counter-styles/katakana/css3-counter-styles-038.html [ Pass ]
+external/wpt/css/css-counter-styles/katakana-iroha/css3-counter-styles-039.html [ Pass ]
+external/wpt/css/css-counter-styles/khmer/css3-counter-styles-161.html [ Pass ]
+external/wpt/css/css-counter-styles/korean-hangul-formal/css3-counter-styles-055.html [ Pass ]
+external/wpt/css/css-counter-styles/korean-hanja-formal/css3-counter-styles-063.html [ Pass ]
+external/wpt/css/css-counter-styles/korean-hanja-informal/css3-counter-styles-059.html [ Pass ]
+external/wpt/css/css-counter-styles/lao/css3-counter-styles-131.html [ Pass ]
+external/wpt/css/css-counter-styles/lower-armenian/css3-counter-styles-111.html [ Pass ]
+external/wpt/css/css-counter-styles/lower-greek/css3-counter-styles-028.html [ Pass ]
+external/wpt/css/css-counter-styles/lower-roman/css3-counter-styles-022.html [ Pass ]
+external/wpt/css/css-counter-styles/malayalam/css3-counter-styles-136.html [ Pass ]
+external/wpt/css/css-counter-styles/mongolian/css3-counter-styles-137.html [ Pass ]
+external/wpt/css/css-counter-styles/myanmar/css3-counter-styles-141.html [ Pass ]
+external/wpt/css/css-counter-styles/oriya/css3-counter-styles-143.html [ Pass ]
+external/wpt/css/css-counter-styles/persian/css3-counter-styles-106.html [ Pass ]
+external/wpt/css/css-counter-styles/simp-chinese-formal/css3-counter-styles-080.html [ Pass ]
+external/wpt/css/css-counter-styles/simp-chinese-informal/css3-counter-styles-075.html [ Pass ]
+external/wpt/css/css-counter-styles/tamil/css3-counter-styles-147.html [ Pass ]
+external/wpt/css/css-counter-styles/telugu/css3-counter-styles-151.html [ Pass ]
+external/wpt/css/css-counter-styles/thai/css3-counter-styles-154.html [ Pass ]
+external/wpt/css/css-counter-styles/tibetan/css3-counter-styles-157.html [ Pass ]
+external/wpt/css/css-counter-styles/trad-chinese-formal/css3-counter-styles-086.html [ Pass ]
+external/wpt/css/css-counter-styles/trad-chinese-informal/css3-counter-styles-081.html [ Pass ]
+external/wpt/css/css-counter-styles/upper-armenian/css3-counter-styles-110.html [ Pass ]
+external/wpt/css/css-counter-styles/upper-roman/css3-counter-styles-023.html [ Pass ]
+external/wpt/css/css-device-adapt/viewport-user-scalable-no-wide-content.tentative.html [ Pass ]
+external/wpt/css/css-display/display-with-float-dynamic.html [ Pass ]
+external/wpt/css/css-display/parsing/display-invalid.html [ Pass ]
+external/wpt/css/css-easing/step-timing-functions-output.html [ Pass ]
+external/wpt/css/css-env/fallback-nested-var.tentative.html [ Pass ]
+external/wpt/css/css-flexbox/relayout-align-items.html [ Pass ]
+external/wpt/css/css-flexbox/flex-lines/multi-line-wrap-with-column-reverse.html [ Pass ]
+external/wpt/css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-direction-column-reverse.html [ Pass ]
+external/wpt/css/css-flexbox/order/order-with-column-reverse.html [ Pass ]
+external/wpt/css/css-flexbox/parsing/flex-grow-invalid.html [ Pass ]
+external/wpt/css/css-font-loading/fontfacesetloadevent-constructor.html [ Pass ]
+external/wpt/css/css-fonts/font-variant-ligatures-02.html [ Pass ]
+external/wpt/css/css-fonts/animations/system-fonts.html [ Pass ]
+external/wpt/css/css-fonts/font-display/font-display.html [ Pass ]
+external/wpt/css/css-fonts/matching/fixed-stretch-style-over-weight.html [ Pass ]
+external/wpt/css/css-fonts/math-script-level-and-math-style/math-script-level-auto-and-math-style-002.tentative.html [ Pass ]
+external/wpt/css/css-fonts/parsing/font-synthesis-weight-valid.html [ Pass ]
+external/wpt/css/css-forced-color-adjust/inheritance.html [ Pass ]
+external/wpt/css/css-grid/grid-item-percentage-quirk-002.html [ Pass ]
+external/wpt/css/css-grid/abspos/descendant-static-position-003.html [ Pass ]
+external/wpt/css/css-grid/alignment/grid-row-axis-alignment-sticky-positioned-items-001.html [ Pass ]
+external/wpt/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-005.html [ Pass ]
+external/wpt/css/css-grid/grid-definition/grid-auto-fit-columns-001.html [ Pass ]
+external/wpt/css/css-grid/grid-items/percentage-size-subitems-002.html [ Pass ]
+external/wpt/css/css-grid/grid-model/grid-item-accepts-first-letter-001.html [ Pass ]
+external/wpt/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-006.html [ Pass ]
+external/wpt/css/css-grid/parsing/grid-auto-flow-invalid.html [ Pass ]
+external/wpt/css/css-grid/placement/grid-placement-using-named-grid-lines-006.html [ Pass ]
+external/wpt/css/css-highlight-api/highlight-pseudo-parsing.html [ Pass ]
+external/wpt/css/css-images/conic-gradient-angle.html [ Pass ]
+external/wpt/css/css-images/gradient/color-stops-parsing.html [ Pass ]
+external/wpt/css/css-images/image-set/image-set-resolution-003.html [ Pass ]
+external/wpt/css/css-images/parsing/image-orientation-valid.html [ Pass ]
+external/wpt/css/css-inline/inline-crash.html [ Pass ]
+external/wpt/css/css-inline/parsing/vertical-align-valid.html [ Pass ]
+external/wpt/css/css-layout-api/input-text-crash.https.html [ Pass ]
+external/wpt/css/css-layout-api/fallback-intrinsic-sizes/no-promise.https.html [ Pass ]
+external/wpt/css/css-layout-api/fallback-layout/no-promise.https.html [ Pass ]
+external/wpt/css/css-lists/content-property/marker-text-matches-disc.html [ Pass ]
+external/wpt/css/css-lists/crashtests/chrome-legacy-propagation-remove-body-crash.html [ Pass ]
+external/wpt/css/css-lists/parsing/list-style-position-valid.html [ Pass ]
+external/wpt/css/css-logical/logicalprops-with-deferred-writing-mode.html [ Pass ]
+external/wpt/css/css-logical/parsing/border-inline-width-invalid.html [ Pass ]
+external/wpt/css/css-masking/inheritance.sub.html [ Pass ]
+external/wpt/css/css-masking/animations/clip-path-interpolation-002.html [ Pass ]
+external/wpt/css/css-masking/clip/clip-rect-comma-001.html [ Pass ]
+external/wpt/css/css-masking/clip-path/animations/clip-path-animation-three-keyframes1.html [ Pass ]
+external/wpt/css/css-masking/clip-path/svg-clip-path-fixed-values.html [ Pass ]
+external/wpt/css/css-masking/clip-rule/clip-rule-001.html [ Pass ]
+external/wpt/css/css-masking/hit-test/clip-path-element-objectboundingbox-001.html [ Pass ]
+external/wpt/css/css-masking/mask-image/mask-image-3c.html [ Pass ]
+external/wpt/css/css-masking/parsing/mask-type-invalid.html [ Pass ]
+external/wpt/css/css-multicol/column-balancing-with-overflow-auto-crash.html [ Pass ]
+external/wpt/css/css-multicol/crashtests/nested-oof-multicol-with-oof-needing-additional-columns.html [ Pass ]
+external/wpt/css/css-multicol/parsing/column-rule-shorthand.html [ Pass ]
+external/wpt/css/css-multicol/table/balance-table-with-fractional-height-row.html [ Pass ]
+external/wpt/css/css-overflow/overflow-clip-margin-005.html [ Pass ]
+external/wpt/css/css-overflow/parsing/scrollbar-gutter-valid.html [ Pass ]
+external/wpt/css/css-overscroll-behavior/inheritance.html [ Pass ]
+external/wpt/css/css-overscroll-behavior/parsing/overscroll-behavior-invalid.html [ Pass ]
+external/wpt/css/css-page/page-rule-declarations-001.html [ Pass ]
+external/wpt/css/css-page/parsing/page-invalid.html [ Pass ]
+external/wpt/css/css-paint-api/parse-input-arguments-003.https.html [ Pass ]
+external/wpt/css/css-parser-api/idlharness.html [ Pass ]
+external/wpt/css/css-position/position-relative-007.html [ Pass ]
+external/wpt/css/css-position/crashtests/position-absolute-crash-014.html [ Pass ]
+external/wpt/css/css-position/multicol/vrl-rtl-rtl-in-multicols.html [ Pass ]
+external/wpt/css/css-position/multicol/static-position/vrl-ltr-rtl-in-multicol.tentative.html [ Pass ]
+external/wpt/css/css-position/parsing/inset-invalid.html [ Pass ]
+external/wpt/css/css-position/sticky/position-sticky-top-002.html [ Pass ]
+external/wpt/css/css-properties-values-api/at-property-non-matching-media-crash.html [ Pass ]
+external/wpt/css/css-pseudo/marker-text-emphasis.html [ Pass ]
+external/wpt/css/css-pseudo/parsing/tree-abiding-pseudo-elements.html [ Pass ]
+external/wpt/css/css-ruby/parsing/ruby-merge-invalid.html [ Pass ]
+external/wpt/css/css-scoping/css-scoping-shadow-host-functional-rule.html [ Pass ]
+external/wpt/css/css-scroll-anchoring/basic.html [ Pass ]
+external/wpt/css/css-scroll-anchoring/parsing/overflow-anchor-invalid.html [ Pass ]
+external/wpt/css/css-scroll-snap/scroll-target-padding-001.html [ Pass ]
+external/wpt/css/css-scroll-snap/parsing/scroll-snap-type-valid.html [ Pass ]
+external/wpt/css/css-scroll-snap/snap-after-initial-layout/writing-mode-horizontal-tb.html [ Pass ]
+external/wpt/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type.html [ Pass ]
+external/wpt/css/css-scrollbars/scrollbar-width-004.html [ Pass ]
+external/wpt/css/css-shadow-parts/invalidation-complex-selector.html [ Pass ]
+external/wpt/css/css-shapes/shape-outside-invalid-ellipse-002.html [ Pass ]
+external/wpt/css/css-shapes/parsing/shape-image-threshold-valid.html [ Pass ]
+external/wpt/css/css-shapes/shape-outside/assorted/float-should-push.html [ Pass ]
+external/wpt/css/css-shapes/shape-outside/formatting-context/shape-outside-formatting-context.tentative.html [ Pass ]
+external/wpt/css/css-shapes/shape-outside/shape-image/shape-image-017.html [ Pass ]
+external/wpt/css/css-shapes/shape-outside/shape-image/gradients/shape-outside-radial-gradient-001.html [ Pass ]
+external/wpt/css/css-shapes/shape-outside/values/shape-image-threshold-000.html [ Pass ]
+external/wpt/css/css-shapes/spec-examples/shape-outside-005.html [ Pass ]
+external/wpt/css/css-size-adjust/inheritance.html [ Pass ]
+external/wpt/css/css-size-adjust/parsing/text-size-adjust-invalid.html [ Pass ]
+external/wpt/css/css-sizing/available-height-for-replaced-content-001.html [ Pass ]
+external/wpt/css/css-sizing/aspect-ratio/replaced-element-023.html [ Pass ]
+external/wpt/css/css-sizing/aspect-ratio/parsing/aspect-ratio-valid.html [ Pass ]
+external/wpt/css/css-sizing/contain-intrinsic-size/* [ Pass ]
+external/wpt/css/css-sizing/parsing/height-valid.html [ Pass ]
+external/wpt/css/css-syntax/declarations-trim-whitespace.html [ Pass ]
+external/wpt/css/css-syntax/charset/page-windows-1251-css-at-charset-utf16-ascii-only.html [ Pass ]
+external/wpt/css/css-tables/border-collapse-dynamic-col-001.html [ Pass ]
+external/wpt/css/css-tables/crashtests/empty_cells_crash.html [ Pass ]
+external/wpt/css/css-tables/height-distribution/td-different-subpixel-padding-in-same-row.html [ Pass ]
+external/wpt/css/css-tables/parsing/empty-cells-valid.html [ Pass ]
+external/wpt/css/css-tables/tentative/table-width-redistribution-fixed-padding.html [ Pass ]
+external/wpt/css/css-tables/tentative/paint/background-image-row.html [ Pass ]
+external/wpt/css/css-tables/tools/markup-generator.html [ Pass ]
+external/wpt/css/css-tables/width-distribution/distribution-algo-1.html [ Pass ]
+external/wpt/css/css-text/removing-collapsible-crash.html [ Pass ]
+external/wpt/css/css-text-decor/invalidation/text-decoration-invalidation-double.html [ Pass ]
+external/wpt/css/css-text-decor/parsing/text-decoration-style-valid.html [ Pass ]
+external/wpt/css/css-text-decor/text-shadow/basic.html [ Pass ]
+external/wpt/css/css-text-decor/text-shadow/parsing/text-shadow-invalid.html [ Pass ]
+external/wpt/css/css-text/boundary-shaping/boundary-shaping-002.html [ Pass ]
+external/wpt/css/css-text/crashtests/white-space-pre-wrap-chash.html [ Pass ]
+external/wpt/css/css-text/i18n/css3-text-line-break-baspglwj-042.html [ Pass ]
+external/wpt/css/css-text/i18n/ja/css-text-line-break-ja-cpm-strict.html [ Pass ]
+external/wpt/css/css-text/i18n/unknown-lang/css-text-line-break-in-strict.html [ Pass ]
+external/wpt/css/css-text/i18n/zh/css-text-line-break-zh-iteration-loose.html [ Pass ]
+external/wpt/css/css-text/line-break/line-break-anywhere-007.html [ Pass ]
+external/wpt/css/css-text/line-breaking/segment-break-transformation-rules-032.html [ Pass ]
+external/wpt/css/css-text/overflow-wrap/overflow-wrap-anywhere-008.html [ Pass ]
+external/wpt/css/css-text/parsing/text-align-all-valid.html [ Pass ]
+external/wpt/css/css-text/tab-size/tab-size-integer-002.html [ Pass ]
+external/wpt/css/css-text/text-align/text-align-last-012.html [ Pass ]
+external/wpt/css/css-text/text-encoding/shaping-join-002.html [ Pass ]
+external/wpt/css/css-text/text-justify/text-justify-005.html [ Pass ]
+external/wpt/css/css-text/text-transform/text-transform-upperlower-004.html [ Pass ]
+external/wpt/css/css-text/text-transform/math/text-transform-math-auto-001.tentative.html [ Pass ]
+external/wpt/css/css-text/white-space/white-space-nowrap-011.html [ Pass ]
+external/wpt/css/css-text/word-spacing/word-spacing-negative-value-001.html [ Pass ]
+external/wpt/css/css-transforms/ttwf-transform-translatey-001.html [ Pass ]
+external/wpt/css/css-transforms/crashtests/preserve3d-scene-002.html [ Pass ]
+external/wpt/css/css-transforms/document-styles/svg-document-styles-001.html [ Pass ]
+external/wpt/css/css-transforms/external-styles/svg-external-styles-014.html [ Pass ]
+external/wpt/css/css-transforms/gradientTransform/svg-gradientTransform-combination-003.html [ Pass ]
+external/wpt/css/css-transforms/group/svg-transform-nested-028.html [ Pass ]
+external/wpt/css/css-transforms/individual-transform/individual-transform-1.html [ Pass ]
+external/wpt/css/css-transforms/inline-styles/svg-inline-styles-001.html [ Pass ]
+external/wpt/css/css-transforms/matrix/svg-matrix-038.html [ Pass ]
+external/wpt/css/css-transforms/parsing/backface-visibility-valid.html [ Pass ]
+external/wpt/css/css-transforms/patternTransform/svg-patternTransform-combination-001.html [ Pass ]
+external/wpt/css/css-transforms/rotate/svg-rotate-3args-invalid-003.html [ Pass ]
+external/wpt/css/css-transforms/scale/svg-scale-013.html [ Pass ]
+external/wpt/css/css-transforms/skewX/svg-skewx-with-units.html [ Pass ]
+external/wpt/css/css-transforms/skewY/svg-skewy-with-units.html [ Pass ]
+external/wpt/css/css-transforms/transform-list-separation/svg-transform-list-separations-003.html [ Pass ]
+external/wpt/css/css-transforms/translate/translate-and-transform-css-property-in-svg.html [ Pass ]
+external/wpt/css/css-transitions/non-rendered-element-004.tentative.html [ Pass ]
+external/wpt/css/css-transitions/animations/transition-end-event-shorthands.html [ Pass ]
+external/wpt/css/css-transitions/crashtests/transition-large-word-spacing-001.html [ Pass ]
+external/wpt/css/css-transitions/parsing/transition-invalid.html [ Pass ]
+external/wpt/css/css-typed-om/rotate-by-added-angle.html [ Pass ]
+external/wpt/css/css-typed-om/stylevalue-normalization/normalize-image.html [ Pass ]
+external/wpt/css/css-typed-om/stylevalue-objects/parse-invalid.html [ Pass ]
+external/wpt/css/css-typed-om/stylevalue-serialization/cssUnitValue.tentative.html [ Pass ]
+external/wpt/css/css-typed-om/stylevalue-serialization/crashtests/cssInvertValue-convert-crash.html [ Pass ]
+external/wpt/css/css-typed-om/stylevalue-subclasses/cssKeywordValue.html [ Pass ]
+external/wpt/css/css-typed-om/stylevalue-subclasses/numeric-objects/cssUnitValue-value.html [ Pass ]
+external/wpt/css/css-typed-om/the-stylepropertymap/computed/iterable.tentative.html [ Pass ]
+external/wpt/css/css-typed-om/the-stylepropertymap/declared/declared.tentative.html [ Pass ]
+external/wpt/css/css-typed-om/the-stylepropertymap/inline/iterable.tentative.html [ Pass ]
+external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-overflow.html [ Pass ]
+external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-start-start-radius-001.html [ Pass ]
+external/wpt/css/css-ui/parsing/outline-offset-invalid.html [ Pass ]
+external/wpt/css/css-values/minmax-length-serialize.html [ Pass ]
+external/wpt/css/css-values/urls/resolve-relative-to-base.html [ Pass ]
+external/wpt/css/css-variables/variable-presentation-attribute.html [ Pass ]
+external/wpt/css/css-will-change/parsing/will-change-invalid.html [ Pass ]
+external/wpt/css/css-writing-modes/bidi-normal-002.html [ Pass ]
+external/wpt/css/css-writing-modes/astral-bidi/cypriot.html [ Pass ]
+external/wpt/css/css-writing-modes/crashtests/wm-body-propagation-crash.html [ Pass ]
+external/wpt/css/css-writing-modes/parsing/text-orientation-valid.html [ Pass ]
+external/wpt/css/css-writing-modes/test-plan/req-tcu-font.html [ Pass ]
+external/wpt/css/cssom/style-sheet-interfaces-002.html [ Pass ]
+external/wpt/css/cssom-view/pt-to-px-width.html [ Pass ]
+external/wpt/css/cssom-view/table-border-collapse-client-width-height.html [ Pass ]
+external/wpt/css/cssom-view/parsing/scroll-behavior-valid.html [ Pass ]
+external/wpt/css/filter-effects/svg-shorthand-drop-shadow-001.html [ Pass ]
+external/wpt/css/filter-effects/animation/backdrop-filter-interpolation-004.html [ Pass ]
+external/wpt/css/filter-effects/parsing/backdrop-filter-parsing-valid.html [ Pass ]
+external/wpt/css/geometry/DOMMatrix2DInit-validate-fixup.html [ Pass ]
+external/wpt/css/mediaqueries/mq-calc-005.html [ Pass ]
+external/wpt/css/motion/animation/offset-path-interpolation-002.html [ Pass ]
+external/wpt/css/motion/animation/reftests/offset-path-path-interpolation-001.html [ Pass ]
+external/wpt/css/motion/parsing/offset-distance-parsing-valid.html [ Pass ]
+external/wpt/css/printing/fragmented-inline-block-001-print.html [ Pass ]
+external/wpt/css/selectors/x-pseudo-element.html [ Pass ]
+external/wpt/css/selectors/attribute-selectors/style-attribute-selector.html [ Pass ]
+external/wpt/css/selectors/attribute-selectors/attribute-case/syntax.html [ Pass ]
+external/wpt/css/selectors/i18n/css3-selectors-lang-002.html [ Pass ]
+external/wpt/css/selectors/invalidation/class-id-attr.html [ Pass ]
+external/wpt/css/selectors/parsing/parse-child.html [ Pass ]
+external/wpt/css/selectors/query/query-is.html [ Pass ]
+external/wpt/custom-elements/prevent-extensions-crash.html [ Pass ]
+external/wpt/custom-elements/custom-element-registry/upgrade.html [ Pass ]
+external/wpt/custom-elements/form-associated/form-disabled-callback.html [ Pass ]
+external/wpt/custom-elements/parser/parser-fallsback-to-unknown-element.html [ Pass ]
+external/wpt/custom-elements/reactions/HTMLProgressElement.html [ Pass ]
+external/wpt/custom-elements/state/tentative/state-pseudo-class.html [ Pass ]
+external/wpt/custom-elements/upgrading/upgrading-parser-created-element.html [ Pass ]
+external/wpt/delegated-ink/exception-thrown-bad-color.tentative.html [ Pass ]
+external/wpt/density-size-correction/srcset-cross-origin.sub.html [ Pass ]
+external/wpt/direct-sockets/open-securecontext.http.html [ Pass ]
+external/wpt/document-policy/experimental-features/document-domain/document-domain.tentative.sub.html [ Pass ]
+external/wpt/document-policy/font-display/reporting-blank.tentative.html [ Pass ]
+external/wpt/document-policy/reporting/lossy-images-max-bpp-reporting-tentative.html [ Pass ]
+external/wpt/document-policy/required-policy/document-policy.html [ Pass ]
+external/wpt/dom/interface-objects.html [ Pass ]
+external/wpt/dom/abort/reason-constructor.html [ Pass ]
+external/wpt/dom/collections/HTMLCollection-own-props.html [ Pass ]
+external/wpt/dom/events/EventListener-incumbent-global-subsubframe.sub.html [ Pass ]
+external/wpt/dom/events/mouse-event-retarget.html [ Pass ]
+external/wpt/dom/events/scrolling/scrollend-event-fired-to-document.html [ Pass ]
+external/wpt/dom/lists/DOMTokenList-Iterable.html [ Pass ]
+external/wpt/dom/nodes/Element-matches-namespaced-elements.html [ Pass ]
+external/wpt/dom/nodes/Document-contentType/contentType/contenttype_jpg.html [ Pass ]
+external/wpt/dom/nodes/Document-createElement-namespace-tests/svg.html [ Pass ]
+external/wpt/dom/ranges/Range-cloneRange.html [ Pass ]
+external/wpt/dom/traversal/TreeWalker-acceptNode-filter-cross-realm-null-browsing-context.html [ Pass ]
+external/wpt/dom/xslt/transformToFragment-on-node-from-inactive-document-crash.html [ Pass ]
+external/wpt/domparsing/DOMParser-parseFromString-encoding.html [ Pass ]
+external/wpt/domxpath/fn-starts-with.html [ Pass ]
+external/wpt/editing/event.html [ Pass ]
+external/wpt/editing/crashtests/fixed-property-for-svg-element-001.html [ Pass ]
+external/wpt/editing/other/white-spaces-after-execCommand-insertparagraph.tentative.html [ Pass ]
+external/wpt/editing/run/multitest.html [ Pass ]
+external/wpt/element-timing/css-generated-text.html [ Pass ]
+external/wpt/encoding/eof-utf-8-one.html [ Pass ]
+external/wpt/encoding-detection/nbsp-even-windows-1252.tentative.html [ Pass ]
+external/wpt/encoding/legacy-mb-japanese/euc-jp/eucjp-decode-cseucpkdfmtjapanese.html [ Pass ]
+external/wpt/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-errors-misc.html [ Pass ]
+external/wpt/encoding/legacy-mb-japanese/shift_jis/sjis_chars-ms932.html [ Pass ]
+external/wpt/encoding/legacy-mb-korean/euc-kr/euckr-decode-ksc5601.html [ Pass ]
+external/wpt/encoding/legacy-mb-tchinese/big5/big5-decode.html [ Pass ]
+external/wpt/encrypted-media/clearkey-mp4-playback-temporary-waitingforkey.https.html [ Pass ]
+external/wpt/event-timing/only-observe-firstInput.html [ Pass ]
+external/wpt/eyedropper/eye-dropper-abort-signal.tentative.https.html [ Pass ]
+external/wpt/eyedropper/manual/eye-dropper.tentative.html [ Pass ]
+external/wpt/fetch/content-length/content-length.html [ Pass ]
+external/wpt/fetch/cross-origin-resource-policy/fetch-in-iframe.html [ Pass ]
+external/wpt/fetch/http-cache/split-cache.html [ Pass ]
+external/wpt/fetch/images/canvas-remote-read-remote-image-redirect.html [ Pass ]
+external/wpt/fetch/metadata/preload.https.sub.html [ Pass ]
+external/wpt/fetch/nosniff/image.html [ Pass ]
+external/wpt/fetch/range/non-matching-range-response.html [ Pass ]
+external/wpt/fetch/redirect-navigate/302-found-post.html [ Pass ]
+external/wpt/fetch/redirects/subresource-fragments.html [ Pass ]
+external/wpt/fetch/security/embedded-credentials.tentative.sub.html [ Pass ]
+external/wpt/fetch/stale-while-revalidate/stale-image.html [ Pass ]
+external/wpt/file-system-access/local_FileSystemBaseHandle-postMessage-frames-manual.https.html [ Pass ]
+external/wpt/focus/iframe-focuses-parent-different-site.html [ Pass ]
+external/wpt/fullscreen/api/element-request-fullscreen-dialog.html [ Pass ]
+external/wpt/fullscreen/crashtests/chrome-1312699.html [ Pass ]
+external/wpt/gamepad/not-fully-active.https.html [ Pass ]
+external/wpt/generic-sensor/SensorErrorEvent-constructor.https.html [ Pass ]
+external/wpt/geolocation-sensor/GeolocationSensor_read.https.html [ Pass ]
+external/wpt/gyroscope/Gyroscope.https.html [ Pass ]
+external/wpt/hr-time/clamped-time-origin-isolated.https.html [ Pass ]
+external/wpt/html-media-capture/capture_reflect.html [ Pass ]
+external/wpt/html/browsers/browsing-the-web/back-forward-cache/pushstate.https.html [ Pass ]
+external/wpt/html/browsers/browsing-the-web/back-forward-cache/eligibility/inflight-fetch-1.html [ Pass ]
+external/wpt/html/browsers/browsing-the-web/history-traversal/browsing_context_name-2.html [ Pass ]
+external/wpt/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-basic.html [ Pass ]
+external/wpt/html/browsers/browsing-the-web/navigating-across-documents/004.html [ Pass ]
+external/wpt/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-event-iframe-element.html [ Pass ]
+external/wpt/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-undefined.tentative.html [ Pass ]
+external/wpt/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/window-open-popup-during-pageshow.html [ Pass ]
+external/wpt/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-parent-then-fragment.html [ Pass ]
+external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-stop.html [ Pass ]
+external/wpt/html/browsers/browsing-the-web/read-media/pageload-image-in-popup.html [ Pass ]
+external/wpt/html/browsers/browsing-the-web/scroll-to-fragid/scroll-position-vertical-lr.html [ Pass ]
+external/wpt/html/browsers/browsing-the-web/unloading-documents/004.html [ Pass ]
+external/wpt/html/browsers/browsing-the-web/unloading-documents/prompt/004.html [ Pass ]
+external/wpt/html/browsers/browsing-the-web/unloading-documents/unload/004.html [ Pass ]
+external/wpt/html/browsers/history/joint-session-history/joint-session-history-child2.html [ Pass ]
+external/wpt/html/browsers/history/the-history-interface/history_go_undefined-1.html [ Pass ]
+external/wpt/html/browsers/history/the-history-interface/joint_session_history/002-1.html [ Pass ]
+external/wpt/html/browsers/history/the-history-interface/non-automated/traverse_the_history_unload_prompt_2-1.html [ Pass ]
+external/wpt/html/browsers/history/the-location-interface/location-valueof.html [ Pass ]
+external/wpt/html/browsers/history/the-session-history-of-browsing-contexts/navigation-in-onload.html [ Pass ]
+external/wpt/html/browsers/origin/origin-of-data-document.html [ Pass ]
+external/wpt/html/browsers/origin/cross-origin-objects/cross-origin-objects-function-caching.html [ Pass ]
+external/wpt/html/browsers/origin/inheritance/about-blank-window.html [ Pass ]
+external/wpt/html/browsers/origin/origin-keyed-agent-clusters/document-domain.sub.https.html [ Pass ]
+external/wpt/html/browsers/origin/origin-keyed-agent-clusters/1-iframe/parent-yes-child-no-subdomain.sub.https.html [ Pass ]
+external/wpt/html/browsers/origin/origin-keyed-agent-clusters/getter-special-cases/sandboxed-same-origin-iframe-yes.https.html [ Pass ]
+external/wpt/html/browsers/origin/origin-keyed-agent-clusters/iframe-navigation/parent-no-1-yes-subdomain-2-no-subdomain.sub.https.html [ Pass ]
+external/wpt/html/browsers/origin/origin-keyed-agent-clusters/popups/opener-yes-openee-no-port.sub.https.html [ Pass ]
+external/wpt/html/browsers/origin/relaxing-the-same-origin-restriction/document_domain_setter_srcdoc.html [ Pass ]
+external/wpt/html/browsers/sandboxing/sandbox-navigation-timing-iframe.tentative.html [ Pass ]
+external/wpt/html/browsers/the-window-object/proxy-getOwnPropertyDescriptor.html [ Pass ]
+external/wpt/html/browsers/the-window-object/accessing-other-browsing-contexts/test3.html [ Pass ]
+external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/non_automated/002-1.html [ Pass ]
+external/wpt/html/browsers/the-window-object/garbage-collection-and-browsing-contexts/discard_iframe_history_2.html [ Pass ]
+external/wpt/html/browsers/the-window-object/named-access-on-the-window-object/prototype.html [ Pass ]
+external/wpt/html/browsers/the-window-object/security-window/window-security.https.html [ Pass ]
+external/wpt/html/browsers/the-windowproxy-exotic-object/windowproxy-prototype-setting-goes-cross-origin-domain.sub.html [ Pass ]
+external/wpt/html/browsers/windows/embedded-opener-remove-frame.html [ Pass ]
+external/wpt/html/browsers/windows/auxiliary-browsing-contexts/opener-multiple.html [ Pass ]
+external/wpt/html/browsers/windows/browsing-context-names/choose-_parent-003.html [ Pass ]
+external/wpt/html/browsers/windows/nested-browsing-contexts/frameElement.sub.html [ Pass ]
+external/wpt/html/canvas/element/2d.conformance.requirements.basics.html [ Pass ]
+external/wpt/html/canvas/element/compositing/2d.composite.clip.xor.html [ Pass ]
+external/wpt/html/canvas/element/conformance-requirements/2d.conformance.requirements.basics.html [ Pass ]
+external/wpt/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.negativedest.html [ Pass ]
+external/wpt/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.basic.html [ Pass ]
+external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.emHeights.html [ Pass ]
+external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.html [ Pass ]
+external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.html [ Pass ]
+external/wpt/html/canvas/element/line-styles/2d.line.width.invalid.html [ Pass ]
+external/wpt/html/canvas/element/manual/compositing/alpha_filter_shadow.html [ Pass ]
+external/wpt/html/canvas/element/manual/context-attributes/drawImage_alpha_false.html [ Pass ]
+external/wpt/html/canvas/element/manual/drawing-images-to-the-canvas/drawimage_svg_image_with_foreign_object_does_not_taint.html [ Pass ]
+external/wpt/html/canvas/element/manual/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap-orientation-none.tentative.html [ Pass ]
+external/wpt/html/canvas/element/manual/drawing-paths-to-the-canvas/drawFocusIfNeeded_005.html [ Pass ]
+external/wpt/html/canvas/element/manual/filters/canvas-filter-object-convolve-matrix.html [ Pass ]
+external/wpt/html/canvas/element/manual/image-smoothing/imagesmoothing.html [ Pass ]
+external/wpt/html/canvas/element/manual/imagebitmap/createImageBitmap-drawImage.html [ Pass ]
+external/wpt/html/canvas/element/manual/layers/layers-alpha-filter-shadow.html [ Pass ]
+external/wpt/html/canvas/element/manual/line-styles/setLineDash.html [ Pass ]
+external/wpt/html/canvas/element/manual/shadows/shadowBlur_gaussian_tolerance.1.html [ Pass ]
+external/wpt/html/canvas/element/manual/the-canvas-state/2d.zero.size.canvas.html [ Pass ]
+external/wpt/html/canvas/element/manual/wide-gamut-canvas/canvas-createImageBitmap-e_srgb.html [ Pass ]
+external/wpt/html/canvas/element/path-objects/2d.path.arc.angle.2.html [ Pass ]
+external/wpt/html/canvas/element/pixel-manipulation/2d.imageData.get.range.html [ Pass ]
+external/wpt/html/canvas/element/reset/2d.reset.basic.html [ Pass ]
+external/wpt/html/canvas/element/scroll/2d.scrollPathIntoView.basic.html [ Pass ]
+external/wpt/html/canvas/element/shadows/2d.shadow.image.scale.html [ Pass ]
+external/wpt/html/canvas/element/text-styles/2d.text.draw.space.collapse.end.html [ Pass ]
+external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.strokeStyle.html [ Pass ]
+external/wpt/html/canvas/element/transformations/2d.transformation.scale.nonfinite.html [ Pass ]
+external/wpt/html/canvas/element/video/2d.video.invalid.html [ Pass ]
+external/wpt/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.fillText.html [ Pass ]
+external/wpt/html/canvas/offscreen/2d.conformance.requirements.basics.html [ Pass ]
+external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.xor.html [ Pass ]
+external/wpt/html/canvas/offscreen/conformance-requirements/2d.conformance.requirements.basics.html [ Pass ]
+external/wpt/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedest.html [ Pass ]
+external/wpt/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.basic.html [ Pass ]
+external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.html [ Pass ]
+external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.html [ Pass ]
+external/wpt/html/canvas/offscreen/line-styles/2d.line.width.invalid.html [ Pass ]
+external/wpt/html/canvas/offscreen/manual/convert-to-blob/offscreencanvas.convert.to.blob.w.html [ Pass ]
+external/wpt/html/canvas/offscreen/manual/draw-generic-family/2d.text.draw.generic.family.w.html [ Pass ]
+external/wpt/html/canvas/offscreen/manual/filter/offscreencanvas.filter.w.html [ Pass ]
+external/wpt/html/canvas/offscreen/manual/image-smoothing/image.smoothing.html [ Pass ]
+external/wpt/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.transfer.lowlatency.nocrash.html [ Pass ]
+external/wpt/html/canvas/offscreen/manual/wide-gamut-canvas/2d.color.space.p3.convertToBlobp3.canvas.html [ Pass ]
+external/wpt/html/canvas/offscreen/path-objects/2d.path.arc.angle.2.html [ Pass ]
+external/wpt/html/canvas/offscreen/pixel-manipulation/2d.imageData.get.range.html [ Pass ]
+external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.scale.html [ Pass ]
+external/wpt/html/canvas/offscreen/text/2d.text.measure.emHeights.html [ Pass ]
+external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.strokeStyle.html [ Pass ]
+external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.extraargs.create.html [ Pass ]
+external/wpt/html/canvas/offscreen/transformations/2d.transformation.scale.nonfinite.html [ Pass ]
+external/wpt/html/canvas/offscreen/wide-gamut-canvas/2d.color.space.p3.to.srgb.html [ Pass ]
+external/wpt/html/dom/reflection-text.html [ Pass ]
+external/wpt/html/dom/documents/dom-tree-accessors/document.head-02.html [ Pass ]
+external/wpt/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-interface.html [ Pass ]
+external/wpt/html/dom/documents/resource-metadata-management/document-readyState.html [ Pass ]
+external/wpt/html/dom/elements/name-content-attribute-and-property.html [ Pass ]
+external/wpt/html/dom/elements/elements-in-the-dom/unknown-element.html [ Pass ]
+external/wpt/html/dom/elements/global-attributes/dir_auto-input-script-N-L.html [ Pass ]
+external/wpt/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-005b.html [ Pass ]
+external/wpt/html/editing/activation/click_checkbox.html [ Pass ]
+external/wpt/html/editing/dnd/crashers/dialog-001.html [ Pass ]
+external/wpt/html/editing/dnd/cross-document/003.html [ Pass ]
+external/wpt/html/editing/dnd/datastore/053.html [ Pass ]
+external/wpt/html/editing/dnd/dom/specials.html [ Pass ]
+external/wpt/html/editing/dnd/draggable-areas/outline.html [ Pass ]
+external/wpt/html/editing/dnd/drop/028.html [ Pass ]
+external/wpt/html/editing/dnd/dropzone/008.html [ Pass ]
+external/wpt/html/editing/dnd/events/032.html [ Pass ]
+external/wpt/html/editing/dnd/file/004.html [ Pass ]
+external/wpt/html/editing/dnd/file/prompt/004.html [ Pass ]
+external/wpt/html/editing/dnd/interactive/plugins.html [ Pass ]
+external/wpt/html/editing/dnd/interactiveelements/004.html [ Pass ]
+external/wpt/html/editing/dnd/microdata/004.html [ Pass ]
+external/wpt/html/editing/dnd/overlay/heavy-styling-003.html [ Pass ]
+external/wpt/html/editing/dnd/platform/alttab.html [ Pass ]
+external/wpt/html/editing/dnd/platform/cursors/004.html [ Pass ]
+external/wpt/html/editing/dnd/platform/interrupt/004.html [ Pass ]
+external/wpt/html/editing/dnd/platform/modifiers/link.html [ Pass ]
+external/wpt/html/editing/dnd/remove/022.html [ Pass ]
+external/wpt/html/editing/dnd/selection/147.html [ Pass ]
+external/wpt/html/editing/dnd/synthetic/001.html [ Pass ]
+external/wpt/html/editing/dnd/target-origin/110-1.html [ Pass ]
+external/wpt/html/editing/dnd/the-draggable-attribute/draggable_attribute.html [ Pass ]
+external/wpt/html/editing/dnd/the-dropzone-attribute/dropzone_attribute.html [ Pass ]
+external/wpt/html/editing/editing-0/autocapitalization/autocapitalize.html [ Pass ]
+external/wpt/html/editing/editing-0/contenteditable/contenteditable-with-empty-block.html [ Pass ]
+external/wpt/html/editing/editing-0/making-entire-documents-editable-the-designmode-idl-attribute/user-interaction-editing-designMode.html [ Pass ]
+external/wpt/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-001.html [ Pass ]
+external/wpt/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-event.html [ Pass ]
+external/wpt/html/editing/the-hidden-attribute/hidden-1e.html [ Pass ]
+external/wpt/html/infrastructure/common-dom-interfaces/collections/radionodelist.html [ Pass ]
+external/wpt/html/infrastructure/common-microsyntaxes/colours/parsing-legacy-colour-value-ascii-case-insensitive.html [ Pass ]
+external/wpt/html/infrastructure/safe-passing-of-structured-data/structuredclone_0.html [ Pass ]
+external/wpt/html/infrastructure/urls/dynamic-changes-to-base-urls/dynamic-urls.sub.html [ Pass ]
+external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/utf-8.html [ Pass ]
+external/wpt/html/infrastructure/urls/terminology-0/multiple-base.sub.html [ Pass ]
+external/wpt/html/interaction/focus/focus-input-type-switch.html [ Pass ]
+external/wpt/html/interaction/focus/focus-management/focus-event-targets-simple.html [ Pass ]
+external/wpt/html/interaction/focus/processing-model/legend.html [ Pass ]
+external/wpt/html/interaction/focus/sequential-focus-navigation-and-the-tabindex-attribute/tabindex-getter-frame.html [ Pass ]
+external/wpt/html/interaction/focus/the-autofocus-attribute/same-origin-autofocus.html [ Pass ]
+external/wpt/html/links/icon/no-error-event.sub.html [ Pass ]
+external/wpt/html/links/manifest/link-relationship/link-rel-manifest.html [ Pass ]
+external/wpt/html/obsolete/requirements-for-implementations/other-elements-attributes-and-apis/heading-obsolete-attributes-01.html [ Pass ]
+external/wpt/html/obsolete/requirements-for-implementations/the-marquee-element-0/marquee-loop.html [ Pass ]
+external/wpt/html/obsolete/requirements-for-implementations/the-marquee-element-0/crashtests/marquee-with-table.html [ Pass ]
+external/wpt/html/rendering/bindings/the-input-element-as-a-text-entry-widget/unrecognized-type-should-fallback-as-text-type.html [ Pass ]
+external/wpt/html/rendering/bindings/the-textarea-element-0/rows-default.html [ Pass ]
+external/wpt/html/rendering/non-replaced-elements/hidden-elements.html [ Pass ]
+external/wpt/html/rendering/non-replaced-elements/flow-content-0/dialog-display.html [ Pass ]
+external/wpt/html/rendering/non-replaced-elements/form-controls/input-line-height.html [ Pass ]
+external/wpt/html/rendering/non-replaced-elements/lists/ol-start-reversed-display-contents.html [ Pass ]
+external/wpt/html/rendering/non-replaced-elements/margin-collapsing-quirks/multicol-quirks-mode.html [ Pass ]
+external/wpt/html/rendering/non-replaced-elements/phrasing-content-0/font-element-text-decoration-color/font-face.html [ Pass ]
+external/wpt/html/rendering/non-replaced-elements/tables/table-row-pagination-001-print.html [ Failure ]
+external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-margin-inline.html [ Pass ]
+external/wpt/html/rendering/non-replaced-elements/the-frameset-and-frame-elements/large-rows-abssize.html [ Pass ]
+external/wpt/html/rendering/non-replaced-elements/the-hr-element-0/setting-overflow-visible.html [ Pass ]
+external/wpt/html/rendering/non-replaced-elements/the-page/body-margin-1h.html [ Pass ]
+external/wpt/html/rendering/non-replaced-elements/the-page/crashtests/body-huge-attr-value-crash.html [ Pass ]
+external/wpt/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/input-align-right-1.html [ Pass ]
+external/wpt/html/rendering/replaced-elements/embedded-content/video-controls-vertical-writing-mode.html [ Pass ]
+external/wpt/html/rendering/replaced-elements/embedded-content-rendering-rules/audio-controls-002.html [ Pass ]
+external/wpt/html/rendering/replaced-elements/images/revoked-blob-print.html [ Pass ]
+external/wpt/html/rendering/replaced-elements/svg-embedded-sizing/svg-in-img-auto.html [ Pass ]
+external/wpt/html/rendering/replaced-elements/svg-inline-sizing/svg-inline.html [ Pass ]
+external/wpt/html/rendering/replaced-elements/the-option-element/option-with-br.html [ Pass ]
+external/wpt/html/rendering/replaced-elements/the-select-element/select-1-block-size.html [ Pass ]
+external/wpt/html/rendering/the-css-user-agent-style-sheet-and-presentational-hints/body-bgcolor-attribute-change.html [ Pass ]
+external/wpt/html/rendering/the-details-element/details-page-break-after-1-print.html [ Pass ]
+external/wpt/html/rendering/widgets/input-time-content-size.html [ Pass ]
+external/wpt/html/rendering/widgets/button-layout/computed-style.html [ Pass ]
+external/wpt/html/rendering/widgets/the-select-element/select-size-002.html [ Pass ]
+external/wpt/html/semantics/disabled-elements/disabledElement.html [ Pass ]
+external/wpt/html/semantics/document-metadata/interactions-of-styling-and-scripting/style-element-media-match-block-script.html [ Pass ]
+external/wpt/html/semantics/document-metadata/the-base-element/base_href_empty.html [ Pass ]
+external/wpt/html/semantics/document-metadata/the-link-element/link-style-error-01.html [ Pass ]
+external/wpt/html/semantics/document-metadata/the-meta-element/the-lang-attribute-012.html [ Pass ]
+external/wpt/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-remove.html [ Pass ]
+external/wpt/html/semantics/document-metadata/the-meta-element/pragma-directives/http-equiv-enumerated-ascii-case-insensitive.html [ Pass ]
+external/wpt/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-1.html [ Pass ]
+external/wpt/html/semantics/document-metadata/the-style-element/style_load_event.html [ Pass ]
+external/wpt/html/semantics/document-metadata/the-title-element/title.text-01.html [ Pass ]
+external/wpt/html/semantics/edits/the-del-element/del_effect.html [ Pass ]
+external/wpt/html/semantics/edits/the-ins-element/ins_effect.html [ Pass ]
+external/wpt/html/semantics/embedded-content/media-elements/volume_nonfinite.html [ Pass ]
+external/wpt/html/semantics/embedded-content/media-elements/error-codes/error.html [ Pass ]
+external/wpt/html/semantics/embedded-content/media-elements/interfaces/HTMLElement/HTMLMediaElement/addTextTrack.html [ Pass ]
+external/wpt/html/semantics/embedded-content/media-elements/interfaces/HTMLElement/HTMLTrackElement/default.html [ Pass ]
+external/wpt/html/semantics/embedded-content/media-elements/interfaces/TextTrack/addCue.html [ Pass ]
+external/wpt/html/semantics/embedded-content/media-elements/interfaces/TextTrackCue/id.html [ Pass ]
+external/wpt/html/semantics/embedded-content/media-elements/interfaces/TextTrackCueList/getCueById.html [ Pass ]
+external/wpt/html/semantics/embedded-content/media-elements/interfaces/TextTrackList/getTrackById.html [ Pass ]
+external/wpt/html/semantics/embedded-content/media-elements/interfaces/TrackEvent/constructor.html [ Pass ]
+external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-in-sync-event.html [ Pass ]
+external/wpt/html/semantics/embedded-content/media-elements/offsets-into-the-media-resource/currentTime.html [ Pass ]
+external/wpt/html/semantics/embedded-content/media-elements/playing-the-media-resource/playbackRate.html [ Pass ]
+external/wpt/html/semantics/embedded-content/media-elements/ready-states/autoplay-with-slow-text-tracks.html [ Pass ]
+external/wpt/html/semantics/embedded-content/media-elements/seeking/seek-to-currentTime.html [ Pass ]
+external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-node-add-remove.html [ Pass ]
+external/wpt/html/semantics/embedded-content/the-area-element/area-download-click.html [ Pass ]
+external/wpt/html/semantics/embedded-content/the-audio-element/audio-play-in-inactive-document-crash.html [ Pass ]
+external/wpt/html/semantics/embedded-content/the-canvas-element/2d.getcontext.invalid.args.html [ Pass ]
+external/wpt/html/semantics/embedded-content/the-embed-element/embed-network-error.sub.html [ Pass ]
+external/wpt/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html [ Pass ]
+external/wpt/html/semantics/embedded-content/the-img-element/null-image-source.html [ Pass ]
+external/wpt/html/semantics/embedded-content/the-img-element/current-pixel-density/basic.html [ Pass ]
+external/wpt/html/semantics/embedded-content/the-img-element/decode/image-decode-path-changes-svg.tentative.html [ Pass ]
+external/wpt/html/semantics/embedded-content/the-img-element/environment-changes/iframed.sub.html [ Pass ]
+external/wpt/html/semantics/embedded-content/the-img-element/ismap/img-ismap-coordinates-iframe-inside.html [ Pass ]
+external/wpt/html/semantics/embedded-content/the-img-element/sizes/implicit-sizes-ignores-width.html [ Pass ]
+external/wpt/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute.html [ Pass ]
+external/wpt/html/semantics/embedded-content/the-img-element/update-the-image-data/fail-to-resolve.html [ Pass ]
+external/wpt/html/semantics/embedded-content/the-video-element/video-poster-shown-preload-auto.html [ Pass ]
+external/wpt/html/semantics/forms/historical-search-event.html [ Pass ]
+external/wpt/html/semantics/forms/attributes-common-to-form-controls/disabled-elements-01.html [ Pass ]
+external/wpt/html/semantics/forms/constraints/form-validation-validity-valid.html [ Pass ]
+external/wpt/html/semantics/forms/form-control-infrastructure/form_owner_and_table_3.html [ Pass ]
+external/wpt/html/semantics/forms/form-submission-target/form-target-iframe.html [ Pass ]
+external/wpt/html/semantics/forms/resetting-a-form/reset-event.html [ Pass ]
+external/wpt/html/semantics/forms/textfieldselection/selection-start-end.html [ Pass ]
+external/wpt/html/semantics/forms/the-button-element/button-type.html [ Pass ]
+external/wpt/html/semantics/forms/the-datalist-element/remove-datalist-crash.html [ Pass ]
+external/wpt/html/semantics/forms/the-fieldset-element/fieldset-validationmessage.html [ Pass ]
+external/wpt/html/semantics/forms/the-form-element/form-length.html [ Pass ]
+external/wpt/html/semantics/forms/the-input-element/invalid-datalist-options-crash.html [ Pass ]
+external/wpt/html/semantics/forms/the-label-element/clicking-interactive-content.html [ Pass ]
+external/wpt/html/semantics/forms/the-legend-element/HTMLLegendElement.html [ Pass ]
+external/wpt/html/semantics/forms/the-meter-element/meter-min-rendering.html [ Pass ]
+external/wpt/html/semantics/forms/the-option-element/option-text-backslash.html [ Pass ]
+external/wpt/html/semantics/forms/the-output-element/output-setcustomvalidity.html [ Pass ]
+external/wpt/html/semantics/forms/the-progress-element/progress.html [ Pass ]
+external/wpt/html/semantics/forms/the-select-element/select-add.html [ Pass ]
+external/wpt/html/semantics/forms/the-selectmenu-element/selectmenu-events.tentative.html [ Pass ]
+external/wpt/html/semantics/forms/the-textarea-element/wrap-enumerated-ascii-case-insensitive.html [ Pass ]
+external/wpt/html/semantics/grouping-content/the-dd-element/grouping-dd.html [ Pass ]
+external/wpt/html/semantics/grouping-content/the-div-element/grouping-div.html [ Pass ]
+external/wpt/html/semantics/grouping-content/the-dt-element/grouping-dt.html [ Pass ]
+external/wpt/html/semantics/grouping-content/the-hr-element/grouping-hr.html [ Pass ]
+external/wpt/html/semantics/grouping-content/the-li-element/grouping-li-reftest-005.html [ Pass ]
+external/wpt/html/semantics/grouping-content/the-ol-element/reversed-1e.html [ Pass ]
+external/wpt/html/semantics/grouping-content/the-p-element/grouping-p.html [ Pass ]
+external/wpt/html/semantics/grouping-content/the-pre-element/pre-newline-bidi.html [ Pass ]
+external/wpt/html/semantics/interactive-elements/the-details-element/auto-expand-window-find-crash.html [ Pass ]
+external/wpt/html/semantics/interactive-elements/the-dialog-element/dialogs-with-no-backdrop.html [ Pass ]
+external/wpt/html/semantics/interactive-elements/the-popup-element/popup-stacking-context-ref.tentative.html [ Pass ]
+external/wpt/html/semantics/interactive-elements/the-summary-element/anchor-with-inline-element.html [ Pass ]
+external/wpt/html/semantics/links/links-created-by-a-and-area-elements/target_blank_implicit_noopener_base.html [ Pass ]
+external/wpt/html/semantics/links/linktypes/alternate-css.html [ Pass ]
+external/wpt/html/semantics/links/linktypes/link-type-stylesheet/process-stylesheet-linked-resource-ascii-case-insensitive.html [ Pass ]
+external/wpt/html/semantics/popups/popup-attribute-basic.tentative.html [ Pass ]
+external/wpt/html/semantics/scripting-1/the-noscript-element/non-html-noscript.html [ Pass ]
+external/wpt/html/semantics/scripting-1/the-script-element/load-error-events-2.html [ Pass ]
+external/wpt/html/semantics/scripting-1/the-script-element/css-module/integrity.html [ Pass ]
+external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/086.html [ Pass ]
+external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/pages/helloworld-postMessage.html [ Pass ]
+external/wpt/html/semantics/scripting-1/the-script-element/fetch-src/empty-with-base.html [ Pass ]
+external/wpt/html/semantics/scripting-1/the-script-element/fetch-src/alpha/base.html [ Pass ]
+external/wpt/html/semantics/scripting-1/the-script-element/import-assertions/empty-assertion-clause.html [ Pass ]
+external/wpt/html/semantics/scripting-1/the-script-element/json-module/valid-content-type.html [ Pass ]
+external/wpt/html/semantics/scripting-1/the-script-element/microtasks/checkpoint-after-workerglobalscope-onerror.html [ Pass ]
+external/wpt/html/semantics/scripting-1/the-script-element/module/single-evaluation-1.html [ Pass ]
+external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/code-cache-nonce.html [ Pass ]
+external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/alpha/base-url.sub.html [ Pass ]
+external/wpt/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-createHTMLDocument-success-empty-src-module.html [ Pass ]
+external/wpt/html/semantics/scripting-1/the-template-element/template-table-crash.html [ Pass ]
+external/wpt/html/semantics/scripting-1/the-template-element/additions-to-parsing-xhtml-documents/node-document.html [ Pass ]
+external/wpt/html/semantics/scripting-1/the-template-element/additions-to-the-css-user-agent-style-sheet/css-user-agent-style-sheet-test-001.html [ Pass ]
+external/wpt/html/semantics/scripting-1/the-template-element/definitions/template-contents-owner-test-002.html [ Pass ]
+external/wpt/html/semantics/scripting-1/the-template-element/template-element/template-descendant-body.html [ Pass ]
+external/wpt/html/semantics/selectors/pseudo-classes/indeterminate-radio.html [ Pass ]
+external/wpt/html/semantics/tabular-data/processing-model-1/col-span-limits.html [ Pass ]
+external/wpt/html/semantics/tabular-data/the-caption-element/caption_001.html [ Pass ]
+external/wpt/html/semantics/tabular-data/the-table-element/insertRow-method-02.html [ Pass ]
+external/wpt/html/semantics/tabular-data/the-tbody-element/deleteRow.html [ Pass ]
+external/wpt/html/semantics/tabular-data/the-tfoot-element/rows.html [ Pass ]
+external/wpt/html/semantics/tabular-data/the-thead-element/rows.html [ Pass ]
+external/wpt/html/semantics/tabular-data/the-tr-element/cells.html [ Pass ]
+external/wpt/html/semantics/text-level-semantics/the-a-element/a.text-getter-01.html [ Pass ]
+external/wpt/html/semantics/text-level-semantics/the-b-element/b-usage.html [ Pass ]
+external/wpt/html/semantics/text-level-semantics/the-bdi-element/bdi-neutral-separate.html [ Pass ]
+external/wpt/html/semantics/text-level-semantics/the-bdo-element/bidi-001.html [ Pass ]
+external/wpt/html/semantics/text-level-semantics/the-br-element/br-bidi.html [ Pass ]
+external/wpt/html/semantics/text-level-semantics/the-ruby-element/rt-without-ruby-crash.html [ Pass ]
+external/wpt/html/semantics/text-level-semantics/the-time-element/001.html [ Pass ]
+external/wpt/html/syntax/charset/after-head-in-1kb.html [ Pass ]
+external/wpt/html/syntax/parsing/html5lib_adoption02.html [ Pass ]
+external/wpt/html/syntax/parsing-html-fragments/the-input-byte-stream-030.html [ Pass ]
+external/wpt/html/syntax/parsing/template/additions-to-foster-parenting/template-is-a-foster-parent-element.html [ Pass ]
+external/wpt/html/syntax/parsing/template/additions-to-the-in-body-insertion-mode/generating-of-implied-end-tags.html [ Pass ]
+external/wpt/html/syntax/parsing/template/additions-to-the-in-head-insertion-mode/generating-of-implied-end-tags.html [ Pass ]
+external/wpt/html/syntax/parsing/template/additions-to-the-in-table-insertion-mode/end-tag-table.html [ Pass ]
+external/wpt/html/syntax/parsing/template/clearing-the-stack-back-to-a-given-context/clearing-stack-back-to-a-table-context.html [ Pass ]
+external/wpt/html/syntax/parsing/template/creating-an-element-for-the-token/template-owner-document.html [ Pass ]
+external/wpt/html/syntax/serializing-html-fragments/serializing.html [ Pass ]
+external/wpt/html/syntax/serializing-xml-fragments/outerHTML.html [ Pass ]
+external/wpt/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-crossorigin.tentative.sub.html [ Pass ]
+external/wpt/html/syntax/speculative-parsing/generated/page-load/script-src-integrity.tentative.html [ Pass ]
+external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/adopt-while-parsing-001.html [ Pass ]
+external/wpt/html/user-activation/activation-trigger-mouse-right.html [ Pass ]
+external/wpt/idle-detection/idle-detection-allowed-by-feature-policy-attribute.https.sub.html [ Pass ]
+external/wpt/imagebitmap-renderingcontext/context-preserves-canvas.html [ Pass ]
+external/wpt/import-maps/acquiring/worker-request.html [ Pass ]
+external/wpt/import-maps/csp/unsafe-inline.html [ Pass ]
+external/wpt/import-maps/data-driven/parsing-internal.https.html [ Pass ]
+external/wpt/import-maps/multiple-import-maps/basic.html [ Pass ]
+external/wpt/inert/inert-iframe-hittest.html [ Pass ]
+external/wpt/infrastructure/reftest-wait.html [ Pass ]
+external/wpt/infrastructure/assumptions/document-fonts-ready.html [ Pass ]
+external/wpt/infrastructure/channels/child_script.html [ Pass ]
+external/wpt/infrastructure/crashtests/example.html [ Pass ]
+external/wpt/infrastructure/expected-fail/unhandled-rejection-single-test.html [ Pass ]
+external/wpt/infrastructure/reftest/reftest.www.sub.html [ Pass ]
+external/wpt/infrastructure/reftest/legacy/reftest_cycle.html [ Pass ]
+external/wpt/infrastructure/server/wpt-server-http.sub.html [ Pass ]
+external/wpt/infrastructure/testdriver/bless.html [ Pass ]
+external/wpt/intersection-observer/nested-cross-origin-iframe.sub.html [ Pass ]
+external/wpt/intersection-observer/v2/position-relative.html [ Pass ]
+external/wpt/is-input-pending/security/cross-origin-subframe-pointer-events-none.sub.html [ Pass ]
+external/wpt/keyboard-lock/navigator-keyboard-lock-two-parallel-requests.https.html [ Pass ]
+external/wpt/keyboard-map/navigator-keyboard-map.https.html [ Pass ]
+external/wpt/largest-contentful-paint/observe-svg-background-image.html [ Pass ]
+external/wpt/largest-contentful-paint/animated/observe-non-animated-image.tentative.html [ Pass ]
+external/wpt/layout-instability/transform-above-filter-dynamic.html [ Pass ]
+external/wpt/lifecycle/freeze.html [ Pass ]
+external/wpt/loading/preloader-css-import-no-semicolon.tentative.html [ Pass ]
+external/wpt/longtask-timing/longtask-in-childiframe.html [ Pass ]
+external/wpt/longtask-timing/shared-renderer/longtask-in-new-window.html [ Pass ]
+external/wpt/magnetometer/Magnetometer-enabled-by-feature-policy-attribute-redirect-on-load.https.html [ Pass ]
+external/wpt/mathml/crashtests/mathml-in-svg-001.html [ Pass ]
+external/wpt/mathml/presentation-markup/direction/direction-007.html [ Pass ]
+external/wpt/mathml/presentation-markup/mpadded/mpadded-003.html [ Pass ]
+external/wpt/mathml/presentation-markup/mrow/stretch-along-block-axis-001.html [ Pass ]
+external/wpt/mathml/presentation-markup/operators/operator-dictionary-movablelimits-005.html [ Pass ]
+external/wpt/mathml/presentation-markup/radicals/dynamic-radical-paint-invalidation-001.html [ Pass ]
+external/wpt/mathml/presentation-markup/scripts/underover-parameters-3.html [ Pass ]
+external/wpt/mathml/presentation-markup/spaces/space-like-002.html [ Pass ]
+external/wpt/mathml/presentation-markup/tables/table-002.html [ Pass ]
+external/wpt/mathml/presentation-markup/tokens/ms-001.html [ Pass ]
+external/wpt/mathml/relations/css-styling/dynamic-dir-1.html [ Pass ]
+external/wpt/mathml/relations/css-styling/padding-border-margin/margin-002.html [ Pass ]
+external/wpt/mathml/relations/css-styling/writing-mode/writing-mode-002.html [ Pass ]
+external/wpt/mathml/relations/html5-tree/unique-identifier-1-iframe-2.html [ Pass ]
+external/wpt/mathml/relations/text-and-math/use-typo-metrics-1.html [ Pass ]
+external/wpt/media-capabilities/decodingInfoEncryptedMedia.https.html [ Pass ]
+external/wpt/media-source/mediasource-endofstream-invaliderror.html [ Pass ]
+external/wpt/media-source/dedicated-worker/mediasource-worker-play.html [ Pass ]
+external/wpt/media-source/mse-for-webcodecs/tentative/mediasource-webcodecs-appendencodedchunks-play.html [ Pass ]
+external/wpt/mediacapture-fromelement/HTMLCanvasElement-getImageData-noframe.html [ Pass ]
+external/wpt/mediacapture-image/MediaStreamTrack-getCapabilities-fast.html [ Pass ]
+external/wpt/mediacapture-insertable-streams/MediaStreamTrackGenerator-in-service-worker.https.html [ Pass ]
+external/wpt/mediacapture-record/passthrough/MediaRecorder-passthrough.https.html [ Pass ]
+external/wpt/mediacapture-region/CropTarget-fromElement.https.html [ Pass ]
+external/wpt/mediacapture-streams/MediaStream-clone.https.html [ Pass ]
+external/wpt/mediacapture-streams/crashtests/enumerateDevices-after-discard-1.https.html [ Pass ]
+external/wpt/mediasession/setmicrophoneactive.html [ Pass ]
+external/wpt/mediasession/helper/artwork-generator.html [ Pass ]
+external/wpt/merchant-validation/constructor.tentative.http.html [ Pass ]
+external/wpt/mixed-content/blob.https.sub.html [ Pass ]
+external/wpt/navigation-api/currententrychange-event/navigate-from-initial-about-blank-same-doc.html [ Pass ]
+external/wpt/navigation-api/focus-reset/basic.html [ Pass ]
+external/wpt/navigation-api/navigate-event/navigate-history-back-after-fragment.html [ Pass ]
+external/wpt/navigation-api/navigation-history-entry/entries-after-navigations-in-multiple-windows.html [ Pass ]
+external/wpt/navigation-api/navigation-methods/traverseTo-after-adding-iframe.html [ Pass ]
+external/wpt/navigation-api/navigation-methods/return-value/navigate-preventDefault.html [ Pass ]
+external/wpt/navigation-api/ordering-and-transition/transition-cross-document.html [ Pass ]
+external/wpt/navigation-api/per-entry-events/dispose-after-bfcache.html [ Pass ]
+external/wpt/navigation-api/scroll-restoration/after-transition-timing.html [ Pass ]
+external/wpt/navigation-api/state/same-document-away-and-back-navigation-api.html [ Pass ]
+external/wpt/navigation-api/updateCurrentEntry-method/basic.html [ Pass ]
+external/wpt/navigation-timing/test_performance_attributes.sub.html [ Pass ]
+external/wpt/orientation-event/device-orientation-events-of-detached-documents.https.html [ Pass ]
+external/wpt/orientation-event/motion/create-event.https.html [ Pass ]
+external/wpt/orientation-event/orientation/t012-manual.https.html [ Pass ]
+external/wpt/orientation-sensor/RelativeOrientationSensor-enabled-on-self-origin-by-feature-policy.https.html [ Pass ]
+external/wpt/page-lifecycle/idlharness.html [ Pass ]
+external/wpt/page-visibility/minimize.html [ Pass ]
+external/wpt/paint-timing/replaced-content-image.html [ Pass ]
+external/wpt/paint-timing/fcp-only/fcp-video-frame.html [ Pass ]
+external/wpt/paint-timing/with-first-paint/basetest.html [ Pass ]
+external/wpt/payment-handler/payment-request-event-manual.https.html [ Pass ]
+external/wpt/payment-handler/payment-app/payment.html [ Pass ]
+external/wpt/payment-method-id/payment-request-ctor-pmi-handling.https.sub.html [ Pass ]
+external/wpt/payment-request/constructor_convert_method_data.https.html [ Pass ]
+external/wpt/payment-request/PaymentMethodChangeEvent/methodName-attribute.https.html [ Pass ]
+external/wpt/payment-request/PaymentRequestUpdateEvent/constructor.http.html [ Pass ]
+external/wpt/performance-timeline/not-clonable.html [ Pass ]
+external/wpt/permissions/all-permissions.html [ Pass ]
+external/wpt/permissions-policy/permissions-policy-nested-header-policy-disallowed-for-all.https.sub.html [ Pass ]
+external/wpt/permissions-policy/experimental-features/vertical-scroll-disabled-frame-no-scroll-manual.tentative.html [ Pass ]
+external/wpt/permissions-policy/reporting/geolocation-report-only.https.html [ Pass ]
+external/wpt/picture-in-picture/picture-in-picture-window.html [ Pass ]
+external/wpt/pointerevents/pointerevent_suppress_compat_events_on_drag_mouse.html [ Pass ]
+external/wpt/pointerevents/compat/pointerevent_mouse-pointer-on-scrollbar.html [ Pass ]
+external/wpt/pointerevents/parsing/touch-action-valid.html [ Pass ]
+external/wpt/pointerevents/pointerlock/pointerevent_pointermove_in_pointerlock.html [ Pass ]
+external/wpt/pointerlock/movementX_Y_basic.html [ Pass ]
+external/wpt/preload/link-header-preload-nonce.html [ Pass ]
+external/wpt/priority-hints/link-attr.tentative.html [ Pass ]
+external/wpt/push-api/permission.https.html [ Pass ]
+external/wpt/quirks/body-fills-html-quirk-inline.html [ Pass ]
+external/wpt/quirks/crashtests/list-item-whole-line-quirks-crash.html [ Pass ]
+external/wpt/quirks/hashless-hex-color/quirks.html [ Pass ]
+external/wpt/quirks/historical/vertical-align-in-quirks.html [ Pass ]
+external/wpt/quirks/text-decoration-doesnt-propagate-into-tables/standards.html [ Pass ]
+external/wpt/quirks/unitless-length/excluded-properties-001.html [ Pass ]
+external/wpt/reporting/same-origin-report-credentials.https.sub.html [ Pass ]
+external/wpt/sanitizer-api/element-set-sanitized-html.https.tentative.html [ Pass ]
+external/wpt/scheduler/post-task-with-signal-from-detached-iframe.html [ Pass ]
+external/wpt/scroll-animations/css/progress-based-animation-timeline.html [ Pass ]
+external/wpt/scroll-animations/scroll-timelines/setting-playback-rate.html [ Pass ]
+external/wpt/scroll-to-text-fragment/iframe-scroll.sub.html [ Pass ]
+external/wpt/secure-contexts/shared-worker-insecure-first.https.html [ Pass ]
+external/wpt/secure-payment-confirmation/authentication-cross-origin.sub.https.html [ Pass ]
+external/wpt/selection/addRange-40.html [ Pass ]
+external/wpt/selection/anonymous/details-ancestor.html [ Pass ]
+external/wpt/selection/bidi/modify.tentative.html [ Pass ]
+external/wpt/selection/caret/collapse-pre-linestart-2.html [ Pass ]
+external/wpt/selection/contenteditable/initial-selection-on-focus.tentative.html [ Pass ]
+external/wpt/selection/crashtests/table.html [ Pass ]
+external/wpt/shadow-dom/input-element-list.html [ Pass ]
+external/wpt/shadow-dom/declarative/declarative-shadow-dom-opt-in.tentative.html [ Pass ]
+external/wpt/shadow-dom/focus/focus-tabindex-order-shadow-slot-one.html [ Pass ]
+external/wpt/shadow-dom/leaktests/get-elements.html [ Pass ]
+external/wpt/shadow-dom/untriaged/elements-and-dom-objects/extensions-to-element-interface/attributes/test-006.html [ Pass ]
+external/wpt/shadow-dom/untriaged/elements-and-dom-objects/extensions-to-element-interface/methods/test-002.html [ Pass ]
+external/wpt/shadow-dom/untriaged/elements-and-dom-objects/shadowroot-object/shadowroot-attributes/test-012.html [ Pass ]
+external/wpt/shadow-dom/untriaged/elements-and-dom-objects/shadowroot-object/shadowroot-methods/test-004.html [ Pass ]
+external/wpt/shadow-dom/untriaged/events/test-001.html [ Pass ]
+external/wpt/shadow-dom/untriaged/events/event-dispatch/test-002.html [ Pass ]
+external/wpt/shadow-dom/untriaged/events/event-retargeting/test-003.html [ Pass ]
+external/wpt/shadow-dom/untriaged/events/retargeting-focus-events/test-002.html [ Pass ]
+external/wpt/shadow-dom/untriaged/events/retargeting-relatedtarget/test-002.html [ Pass ]
+external/wpt/shadow-dom/untriaged/html-elements-in-shadow-trees/html-forms/test-002.html [ Pass ]
+external/wpt/shadow-dom/untriaged/html-elements-in-shadow-trees/inert-html-elements/test-002.html [ Pass ]
+external/wpt/shadow-dom/untriaged/shadow-trees/shadow-root-001.html [ Pass ]
+external/wpt/shadow-dom/untriaged/shadow-trees/nested-shadow-trees/nested_tree_reftest.html [ Pass ]
+external/wpt/shadow-dom/untriaged/shadow-trees/reprojection/reprojection-001.html [ Pass ]
+external/wpt/shadow-dom/untriaged/shadow-trees/upper-boundary-encapsulation/shadow-root-001.html [ Pass ]
+external/wpt/shadow-dom/untriaged/styles/test-008.html [ Pass ]
+external/wpt/shadow-dom/untriaged/user-interaction/active-element/test-002.html [ Pass ]
+external/wpt/shadow-dom/untriaged/user-interaction/editing/inheritance-of-content-editable-001.html [ Pass ]
+external/wpt/shadow-dom/untriaged/user-interaction/ranges-and-selections/test-002.html [ Pass ]
+external/wpt/shape-detection/detection-ImageBitmap.https.html [ Pass ]
+external/wpt/storage/persist-permission-manual.https.html [ Pass ]
+external/wpt/streams/readable-streams/crashtests/strategy-worker-terminate.html [ Pass ]
+external/wpt/streams/transferable/service-worker.https.html [ Pass ]
+external/wpt/subapps/add-error.tentative.https.html [ Pass ]
+external/wpt/subresource-integrity/subresource-integrity.html [ Pass ]
+external/wpt/svg/animations/svgenum-animation-7.html [ Pass ]
+external/wpt/svg/animations/scripted/SVGAnimationElement-getStartTime.html [ Pass ]
+external/wpt/svg/coordinate-systems/viewBox-scaling-text-001.html [ Pass ]
+external/wpt/svg/crashtests/firefox-bug-1688293.html [ Pass ]
+external/wpt/svg/extensibility/foreignObject/filter-repaint.html [ Pass ]
+external/wpt/svg/geometry/svg-baseval-in-display-none.html [ Pass ]
+external/wpt/svg/layout/svg-use-symbol-width-print.html [ Pass ]
+external/wpt/svg/linking/reftests/href-feImage-element.html [ Pass ]
+external/wpt/svg/linking/scripted/href-script-element-markup.html [ Pass ]
+external/wpt/svg/painting/svg-with-outline.html [ Pass ]
+external/wpt/svg/painting/marker-with-mask-cycle-crash.html [ Pass ]
+external/wpt/svg/path/property/test_style_flush_on_dom_api_with_d_property.html [ Pass ]
+external/wpt/svg/print/svg-use-page-break-crash-print.html [ Pass ]
+external/wpt/svg/pservers/pattern-with-invalid-base-cloned-thcrash.html [ Pass ]
+external/wpt/svg/render/foreignObject-in-non-rendered-getComputedStyle.html [ Pass ]
+external/wpt/svg/render/reftests/render-sync-with-font-size.html [ Pass ]
+external/wpt/svg/scripted/script-style-attribute-csp.html [ Pass ]
+external/wpt/svg/struct/use-getComputedStyle.html [ Pass ]
+external/wpt/svg/struct/reftests/use-external-resource-with-revalidation.tentative.html [ Pass ]
+external/wpt/svg/styling/css-selectors-case-sensitivity.html [ Pass ]
+external/wpt/svg/text/reftests/text-display-contents-crash.html [ Pass ]
+external/wpt/svg/text/scripted/lengthadjust.html [ Pass ]
+external/wpt/svg/types/scripted/SVGAnimatedLengthList.html [ Pass ]
+external/wpt/touch-events/touch-globaleventhandler-interface.html [ Pass ]
+external/wpt/trusted-types/block-string-assignment-to-Element-setAttribute.tentative.html [ Pass ]
+external/wpt/url/a-element.html [ Pass ]
+external/wpt/user-timing/measure-exceptions.html [ Pass ]
+external/wpt/vibration/api-is-present.html [ Pass ]
+external/wpt/video-rvfc/request-video-frame-callback-repeating.html [ Pass ]
+external/wpt/virtual-keyboard/virtual-keyboard-policy.html [ Pass ]
+external/wpt/visual-viewport/viewport-segments.tentative.html [ Pass ]
+external/wpt/web-animations/animation-model/animation-types/accumulation-per-property-001.html [ Pass ]
+external/wpt/web-animations/animation-model/combining-effects/applying-the-composited-result.html [ Pass ]
+external/wpt/web-animations/animation-model/keyframe-effects/computed-keyframes-shorthands.html [ Pass ]
+external/wpt/web-animations/crashtests/reparent-animating-element-001.html [ Pass ]
+external/wpt/web-animations/interfaces/Animatable/animate-no-browsing-context.html [ Pass ]
+external/wpt/web-animations/interfaces/Animation/pause.html [ Pass ]
+external/wpt/web-animations/interfaces/AnimationEffect/getComputedTiming.html [ Pass ]
+external/wpt/web-animations/interfaces/AnimationPlaybackEvent/constructor.html [ Pass ]
+external/wpt/web-animations/interfaces/Document/timeline.html [ Pass ]
+external/wpt/web-animations/interfaces/DocumentOrShadowRoot/getAnimations.html [ Pass ]
+external/wpt/web-animations/interfaces/DocumentTimeline/constructor.html [ Pass ]
+external/wpt/web-animations/interfaces/KeyframeEffect/copy-constructor.html [ Pass ]
+external/wpt/web-animations/responsive/offset-path.html [ Pass ]
+external/wpt/web-animations/timing-model/animation-effects/simple-iteration-progress.html [ Pass ]
+external/wpt/web-animations/timing-model/animations/update-playback-rate-fast.html [ Pass ]
+external/wpt/web-animations/timing-model/time-transformations/transformed-progress.html [ Pass ]
+external/wpt/web-animations/timing-model/timelines/update-and-send-events-replacement.html [ Pass ]
+external/wpt/web-bundle/subresource-loading/script-static-element.https.tentative.sub.html [ Pass ]
+external/wpt/web-locks/partitioned-web-locks.tentative.https.html [ Pass ]
+external/wpt/web-locks/bfcache/held.tentative.https.html [ Pass ]
+external/wpt/web-locks/crashtests/iframe-append.https.html [ Pass ]
+external/wpt/web-nfc/NDEFReader_write.https.html [ Pass ]
+external/wpt/webcodecs/videoFrame-canvasImageSource.html [ Pass ]
+external/wpt/webidl/ecmascript-binding/window-named-properties-object.html [ Pass ]
+external/wpt/webidl/ecmascript-binding/es-exceptions/exceptions.html [ Pass ]
+external/wpt/webidl/ecmascript-binding/legacy-platform-object/OwnPropertyKeys.html [ Pass ]
+external/wpt/webtransport/in-removed-iframe.https.html [ Pass ]
+external/wpt/webvtt/api/VTTCue/size.html [ Pass ]
+external/wpt/webvtt/api/VTTRegion/id.html [ Pass ]
+external/wpt/webvtt/parsing/cue-text-parsing/tests/text.html [ Pass ]
+external/wpt/webvtt/parsing/file-parsing/signature-invalid.html [ Pass ]
+external/wpt/webvtt/parsing/file-parsing/tests/timings-negative.html [ Pass ]
+external/wpt/webxr/xrSession_sameObject.https.html [ Pass ]
+external/wpt/webxr/anchors/ar_anchor_freefloating_failure.https.html [ Pass ]
+external/wpt/webxr/ar-module/xrDevice_isSessionSupported_immersive-ar.https.html [ Pass ]
+external/wpt/webxr/depth-sensing/depth_sensing_notEnabled.https.html [ Pass ]
+external/wpt/webxr/depth-sensing/cpu/depth_sensing_cpu_staleView.https.html [ Pass ]
+external/wpt/webxr/gamepads-module/xrInputSource_gamepad_input_registered.https.html [ Pass ]
+external/wpt/webxr/hit-test/xrRay_matrix.https.html [ Pass ]
+external/wpt/webxr/layers/xrWebGLBinding_constructor.https.html [ Pass ]
+external/wpt/webxr/light-estimation/xrSession_getLightProbe_ended.https.html [ Pass ]
+external/wpt/window-placement/multi-screen-window-open-manual.tentative.https.html [ Pass ]
+external/wpt/x-frame-options/get-decode-split.html [ Pass ]
+external/wpt/xhr/overridemimetype-blob.html [ Pass ]
+external/wpt/xhr/formdata/get-formelement.html [ Pass ]
+fast/backgrounds/background-origin-root-element.html [ Pass ]
+fast/block/basic/001.html [ Pass ]
+fast/block/float/float-in-float-painting.html [ Pass ]
+fast/block/margin-collapse/001.html [ Pass ]
+fast/block/positioning/001.html [ Pass ]
+fast/body-propagation/background-color/001.html [ Pass ]
+fast/body-propagation/background-image/009.html [ Pass ]
+fast/body-propagation/overflow/001.html [ Pass ]
+fast/borders/bidi-002.html [ Pass ]
+fast/borders/border-image-outset.html [ Pass ]
+fast/box-shadow/box-shadow.html [ Pass ]
+fast/box-sizing/box-sizing.html [ Pass ]
+fast/css/001.html [ Pass ]
+fast/css/color-correction.html [ Pass ]
+fast/css-generated-content/001.html [ Pass ]
+fast/events/pointer-events-2.html [ Pass ]
+fast/forms/color-scheme/color/color-picker-appearance.html [ Pass ]
+fast/forms/color-scheme/color/color-suggestion-picker-appearance-with-scrollbar.html [ Pass ]
+fast/forms/form-element-geometry.html [ Pass ]
+fast/forms/accent-color/accent-color-contrast-dark.html [ Pass ]
+fast/forms/button/button-align.html [ Pass ]
+fast/forms/calendar-picker/calendar-picker-appearance.html [ Pass ]
+fast/forms/checkbox/checkbox-appearance-basic.html [ Pass ]
+fast/forms/color/input-appearance-color.html [ Pass ]
+fast/forms/color-scheme/button/button-appearance-basic.html [ Pass ]
+fast/forms/datalist/input-appearance-range-with-datalist.html [ Pass ]
+fast/forms/fieldset/fieldset-align.html [ Pass ]
+fast/forms/file/file-appearance-basic.html [ Pass ]
+fast/forms/focus-rect/textarea-with-scrollbar.html [ Pass ]
+fast/forms/image/input-align-image.html [ Pass ]
+fast/forms/month/month-picker-appearance-step.html [ Pass ]
+fast/forms/number/number-appearance-rtl.html [ Pass ]
+fast/forms/password/password-alt-f8.html [ Pass ]
+fast/forms/radio/radio-appearance-basic.html [ Pass ]
+fast/forms/range/input-appearance-range.html [ Pass ]
+fast/forms/search/search-rtl.html [ Pass ]
+fast/forms/select/basic-selects.html [ Pass ]
+fast/forms/text/input-baseline.html [ Pass ]
+fast/forms/textarea/textarea-align.html [ Pass ]
+fonts/default.html [ Pass ]
+fragmentation/outline-crossing-columns.html [ Pass ]
+html/details_summary/details-add-summary.html [ Pass ]
+html/document_metadata/head-has-text-1.html [ Pass ]
+html/grouping_content/listing.html [ Pass ]
+html/tabular_data/table_createcaption.html [ Pass ]
+html/text_level_semantics/font-weight-bold-for-b-and-strong.html [ Pass ]
+http/tests/csspaint/border-color.html [ Pass ]
+http/tests/images/jpeg-partial-load.html [ Pass ]
+http/tests/images/png-animated-partial-load.html [ Pass ]
+http/tests/images/png-partial-load-as-document.html [ Pass ]
+http/tests/inspector-protocol/page/page-captureScreenshot-clip.js [ Pass ]
+http/tests/media/video-buffered-range-contains-currentTime.html [ Pass ]
+http/tests/webfont/popup-menu-load-webfont-after-open.html [ Pass ]
+ietestcenter/css3/bordersbackgrounds/background-color-border-box.htm [ Pass ]
+ietestcenter/css3/text/textshadow-001.htm [ Pass ]
+images/color-profile-animate.html [ Pass ]
+images/cross-fade-blending.html [ Pass ]
+images/drag-image.html [ Pass ]
+images/jpeg-with-color-profile.html [ Pass ]
+images/png-with-color-profile.html [ Pass ]
+images/jxl/jxl-images.html [ Pass ]
+images/png-suite/test.html [ Pass ]
+images/yuv-decode-eligible/color-profile-border-radius.html [ Pass ]
+inspector-protocol/dom/dom-scrollIntoViewIfNeeded.js [ Pass ]
+inspector-protocol/dom-snapshot/dom-snapshot-captureSnapshot-details.js [ Pass ]
+inspector-protocol/emulation/device-emulation-desktop.js [ Pass ]
 crbug.com/1313282 inspector-protocol/input/dispatchMouseEvent.js [ Skip ]
+inspector-protocol/layers/paint-profiler.js [ Pass ]
+inspector-protocol/layout-fonts/languages-emoji-rare-glyphs.js [ Pass ]
+inspector-protocol/page/get-layout-metrics.js [ Pass ]
+paint/background/fieldset-legend-background-shadow-border-radius.html [ Pass ]
+paint/clipath/clip-path-with-background-and-box-behind.html [ Pass ]
+paint/filters/clip-under-filter.html [ Pass ]
+paint/float/float-under-inline-self-painting-change.html [ Pass ]
+paint/frames/frameset-with-stacking-contexts.html [ Pass ]
+paint/inline/outline-offset.html [ Pass ]
+paint/invalidation/canvas-resize.html [ Pass ]
+paint/invalidation/background/viewport-gradient-background-html-resize-overflow.html [ Pass ]
+paint/invalidation/box/border-radius-repaint-2.html [ Pass ]
+paint/invalidation/clip/background-clip-text.html [ Pass ]
+paint/invalidation/compositing/layer-repaint.html [ Pass ]
+paint/invalidation/css-grid-layout/grid-element-change-columns-repaint.html [ Pass ]
+paint/invalidation/filters/effect-reference-repaint-composite-1.html [ Pass ]
+paint/invalidation/flexbox/repaint-during-resize-no-flex.html [ Pass ]
+paint/invalidation/forms/textarea-caret.html [ Pass ]
+paint/invalidation/image/image-resize.html [ Pass ]
+paint/invalidation/multicol/column-rules-fixed-height.html [ Pass ]
+paint/invalidation/outline/focus-layers.html [ Pass ]
+paint/invalidation/overflow/composited-overflow-with-borderbox-background.html [ Pass ]
+paint/invalidation/position/absolute-position-changed.html [ Pass ]
 
 # TODO(michaelludwig): Suppressed for Skia roll, see crbug.com/1354678
 paint/invalidation/reflection/reflection-with-rotation.html [ Failure Pass ]
 
+paint/invalidation/scroll/destroy-composited-scrollbar.html [ Pass ]
+paint/invalidation/selection/selection-within-composited-scroller.html [ Pass ]
+paint/invalidation/svg/animate-path-morphing.svg [ Pass ]
+paint/invalidation/table/composited-table-background.html [ Pass ]
+paint/invalidation/transform/caret-with-transformation.html [ Pass ]
+paint/markers/composition-marker-basic.html [ Pass ]
+paint/masks/fieldset-mask.html [ Pass ]
+paint/overflow/composited-rounded-clip-floating-element.html [ Pass ]
+paint/printing/print-text-shadow.html [ Pass ]
+paint/roundedrects/input-with-rounded-rect-and-shadow.html [ Pass ]
+paint/selection/text-selection-drag-in-frame-scrolled.html [ Pass ]
+paint/subpixel/transform-inside-clip.html [ Pass ]
+paint/tables/composited-collapsed-table-borders.html [ Pass ]
+paint/text/selection-no-clip-text.html [ Pass ]
+paint/theme/adjust-progress-bar-size.html [ Pass ]
+paint/transforms/percentage-transform-fractional-box-size.html [ Pass ]
+printing/fixed-positioned-headers-and-footers.html [ Pass ]
+printing/width-overflow.html [ Pass ]
+printing/css2.1/page-break-inside-000.html [ Pass ]
+svg/W3C-I18N/text-anchor-dirLTR-anchorMiddle.svg [ Pass ]
+svg/W3C-I18N/text-anchor-dirRTL-anchorMiddle.svg [ Pass ]
+svg/W3C-SVG-1.1/animate-elem-03-t.svg [ Pass ]
+svg/W3C-SVG-1.1-SE/filters-image-03-f.svg [ Pass ]
+svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t.svg [ Pass ]
+svg/animations/animateMotion-accumulate-1a.svg [ Pass ]
+svg/as-background-image/animated-svg-as-background.html [ Pass ]
+svg/as-border-image/svg-as-border-image.html [ Pass ]
+svg/as-image/svg-as-relative-image.html [ Pass ]
+svg/as-object/svg-embedded-in-html-in-iframe.html [ Pass ]
+svg/batik/paints/patternRegions.svg [ Pass ]
+svg/batik/text/textEffect.svg [ Pass ]
+svg/canvas/canvas-pattern-svg.html [ Pass ]
+svg/carto.net/selectionlist.svg [ Pass ]
+svg/clip-path/clip-path-on-svg.svg [ Pass ]
+svg/css/background-image-svg.html [ Pass ]
+svg/custom/SVGRect-interface.svg [ Pass ]
+svg/dom/css-transforms.xhtml [ Pass ]
+svg/dynamic-updates/SVGFilterElement-dom-filterUnits-attr.html [ Pass ]
+svg/filters/feGaussianBlur.svg [ Pass ]
+svg/foreignObject/filter.html [ Pass ]
+svg/hittest/text-small-font-size-and-viewbox.html [ Pass ]
+svg/hixie/dynamic/002.xml [ Pass ]
+svg/hixie/error/001.xml [ Pass ]
+svg/hixie/links/001.xml [ Pass ]
+svg/hixie/mixed/003.xml [ Pass ]
+svg/hixie/rendering-model/001.xml [ Pass ]
+svg/hixie/viewbox/001.xml [ Pass ]
+svg/in-html/circle.html [ Pass ]
+svg/overflow/overflow-on-foreignObject.svg [ Pass ]
+svg/stroke/zero-length-arc-linecaps-rendering.svg [ Pass ]
+svg/text/bbox-with-glyph-overflow.html [ Pass ]
+svg/text/text-decorations-in-scaled-pattern.svg [ Pass ]
+svg/transforms/text-with-pattern-inside-transformed-html.xhtml [ Pass ]
+svg/wicd/test-scalable-background-image1.xhtml [ Pass ]
+svg/zoom/page/zoom-background-images.html [ Pass ]
+svg/zoom/text/zoom-svg-float-border-padding.xml [ Pass ]
+tables/layering/paint-test-layering-1.html [ Pass ]
+transforms/svg-vs-css.xhtml [ Pass ]
+transforms/transform-on-inline.html [ Pass ]
+transforms/2d/transform-borderbox.html [ Pass ]
+transforms/3d/general/perspective-units.html [ Pass ]
+transforms/3d/hit-testing/backface-hit-test.html [ Pass ]
+virtual/document-transition/wpt_internal/document-transition/* [ Pass ]
+
+virtual/compositor-threaded-percent-based-scrolling/fast/events/wheel/continuous-platform-wheelevent-in-scrolling-div.html [ Pass ]
+virtual/compositor_threaded_scrollbar_scrolling/paint/invalidation/scroll/sticky/invalidate-after-composited-scroll-with-sticky.html [ Pass ]
+virtual/fenced-frame-shadow-dom/wpt_internal/fenced_frame/opaque-ad-sizes.https.html [ Pass ]
+virtual/fenced-frame-shadow-dom/wpt_internal/fenced_frame/nested-opaque-ad-sizes.https.html [ Pass ]
+virtual/fenced-frame-mparch/wpt_internal/fenced_frame/opaque-ad-sizes.https.html [ Pass ]
+virtual/fenced-frame-mparch/wpt_internal/fenced_frame/nested-opaque-ad-sizes.https.html [ Pass ]
+virtual/forced-high-contrast-colors/fast/css/forced-colors-mode/backplate/forced-colors-mode-backplate-11.html [ Pass ]
+virtual/forced-high-contrast-colors/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-03.html [ Pass ]
+virtual/forced-high-contrast-colors/html/details_summary/color-scheme-validation/details-with-summary-open.html [ Pass ]
+virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/color-profile-image.html [ Pass ]
+virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/jpeg-missing-eoi.html [ Pass ]
+virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/webp-color-profile-lossy.html [ Pass ]
+virtual/jxl-enabled/images/jxl/jxl-images.html [ Pass ]
+virtual/main-threaded-percent-based-scrolling/fast/events/wheel/continuous-platform-wheelevent-in-scrolling-div.html [ Pass ]
+virtual/no-forced-frame-updates/external/wpt/html/dom/render-blocking/parser-inserted-preload-link.tentative.html [ Pass ]
+virtual/off-main-thread-css-paint/http/tests/csspaint/border-color.html [ Pass ]
+virtual/stable/compositing/filters/sw-layer-overlaps-hw-shadow.html [ Pass ]
+virtual/stable/compositing/filters/sw-nested-shadow-overlaps-hw-nested-shadow.html [ Pass ]
+virtual/stable/inspector-protocol/dom-snapshot/captureSnapshot-ua-shadow-tree3.js [ Pass ]
+virtual/stable/inspector-protocol/dom-snapshot/dom-snapshot-captureSnapshot-details.js [ Pass ]
+virtual/text-antialias/align-center-rtl-spill.html [ Pass ]
+virtual/text-antialias/apply-start-width-after-skipped-text.html [ Pass ]
+virtual/text-antialias/bidi-embedding-pop-and-push-same.html [ Pass ]
+virtual/text-antialias/complex-text-opacity.html [ Pass ]
+virtual/text-antialias/ellipsis-ltr-text-in-ltr-flow-underline.html [ Pass ]
+virtual/text-antialias/ellipsis-mixed-text-in-ltr-flow-underline.html [ Pass ]
+virtual/text-antialias/ellipsis-mixed-text-in-rtl-flow-underline.html [ Pass ]
+virtual/text-antialias/basic/001.html [ Pass ]
+virtual/text-antialias/basic/002.html [ Pass ]
+virtual/text-antialias/firstline/001.html [ Pass ]
+virtual/text-antialias/firstline/002.html [ Pass ]
+virtual/text-antialias/font-features/caps-casemapping.html [ Pass ]
+virtual/text-antialias/international/bidi-layout-across-linebreak.html [ Pass ]
+virtual/text-antialias/international/bidi-linebreak-001.html [ Pass ]
+virtual/text-antialias/international/unicode-bidi-plaintext-in-textarea.html [ Pass ]
+virtual/text-antialias/selection/atsui-partial-selection.html [ Pass ]
+virtual/text-antialias/selection/flexbox-selection-nested.html [ Pass ]
+virtual/text-antialias/selection/selection-multiple-runs.html [ Pass ]
+virtual/text-antialias/selection/selection-painted-separately.html [ Pass ]
+virtual/text-antialias/selection/selection-painting-hidpi.html [ Pass ]
+virtual/text-antialias/shaping/same-script-different-lang.html [ Pass ]
+virtual/text-antialias/sub-pixel/text-scaling-rtl.html [ Pass ]
+virtual/text-antialias/sub-pixel/text-scaling-vertical.html [ Pass ]
+virtual/text-antialias/whitespace/002.html [ Pass ]
+virtual/text-antialias/whitespace/004.html [ Pass ]
+virtual/text-antialias/whitespace/005.html [ Pass ]
+virtual/text-antialias/whitespace/024.html [ Pass ]
+virtual/text-antialias/whitespace/025.html [ Pass ]
+virtual/text-antialias/whitespace/nowrap-clear-float.html [ Pass ]
+virtual/text-antialias/whitespace/pre-newline-box-test.html [ Pass ]
+virtual/threaded-composited-iframes/external/wpt/is-input-pending/tentative/same-origin-subframe.sub.html [ Pass ]
+virtual/threaded/external/wpt/requestidlecallback/basic.html [ Pass ]
+
 # Layout tests significatly differ from non scale baseline
 crbug.com/1105168 fast/sub-pixel/sub-pixel-accumulates-to-layers.html [ Failure ]
 crbug.com/1107570 fast/text-autosizing/* [ Failure ]
diff --git a/third_party/blink/web_tests/FlagSpecificConfig b/third_party/blink/web_tests/FlagSpecificConfig
index 623cc3f..ce944319 100644
--- a/third_party/blink/web_tests/FlagSpecificConfig
+++ b/third_party/blink/web_tests/FlagSpecificConfig
@@ -33,8 +33,7 @@
   },
   {
     "name": "highdpi",
-    "args": ["--force-device-scale-factor=1.5"],
-    "smoke_file": "SmokeTests/highdpi"
+    "args": ["--force-device-scale-factor=1.5"]
   },
   {
     "name": "skia-vulkan-swiftshader",
diff --git a/third_party/blink/web_tests/SmokeTests/highdpi b/third_party/blink/web_tests/SmokeTests/highdpi
deleted file mode 100644
index b8d1e12..0000000
--- a/third_party/blink/web_tests/SmokeTests/highdpi
+++ /dev/null
@@ -1,1717 +0,0 @@
-accessibility/click-event.html
-animations/3d/matrix-transform-type-animation.html
-animations/composition/background-position-composition.html
-animations/composition/clip-composition.html
-animations/composition/font-size-composition.html
-animations/cross-fade-webkit-mask-box-image.html
-animations/custom-properties/angle-type-interpolation.html
-animations/custom-properties/animate-high-priority.html
-animations/custom-properties/color-type-interpolation.html
-animations/direction-and-fill/animation-direction-normal.html
-animations/direction-and-fill/animation-direction-reverse-fill-mode.html
-animations/interpolation/border-interpolation.html
-animations/interpolation/clip-path-interpolation.html
-animations/interpolation/color-interpolation.html
-animations/responsive/interpolation/fill-responsive.html
-animations/responsive/interpolation/transform-responsive.html
-animations/responsive/responsive-neutral-keyframes.html
-animations/responsive/stacked-visibility-animations-responsive.html
-animations/responsive/zoom-responsive-transform-animation-001.html
-animations/skew-notsequential-compositor.html
-animations/stability/font-builder-crash.html
-animations/state-at-end-event.html
-animations/svg-attribute-composition/svg-amplitude-composition.html
-animations/svg-attribute-composition/svg-azimuth-composition.html
-animations/svg-attribute-composition/svg-baseFrequency-composition.html
-animations/svg-attribute-composition/svg-bias-composition.html
-animations/svg-attribute-interpolation/svg-edgeMode-interpolation.html
-animations/svg-attribute-interpolation/svg-elevation-interpolation.html
-animations/svg-attribute-interpolation/svg-exponent-interpolation.html
-animations/svg-attribute-interpolation/svg-viewBox-interpolation.html
-animations/svg/animated-filter-svg-element.html
-animations/web-animations/KeyframeEffect-animation.html
-clipboard/copy-image-at.html
-compositing/3d-corners.html
-compositing/3d-cube.html
-compositing/absolute-inside-out-of-view-fixed.html
-compositing/animation/animation-compositing.html
-compositing/animation/animations-establish-stacking-context.html
-compositing/backface-visibility-transformed.html
-compositing/backface-visibility/backface-visibility-3d.html
-compositing/backface-visibility/backface-visibility-image.html
-compositing/background-color/background-color-alpha.html
-compositing/background-color/background-color-change-to-text.html
-compositing/background-color/background-color-change-to-transparent.html
-compositing/background-color/background-color-container.html
-compositing/background-color/background-color-content-clip.html
-compositing/background-color/background-color-text-change.html
-compositing/background-color/background-color-text-clip.html
-compositing/background-color/view-blending-base-background.html
-compositing/backgrounds/fixed-backgrounds.html
-compositing/backgrounds/local-background.html
-compositing/canvas-with-object-fit-contain-in-composited-layer.html
-compositing/checkerboard.html
-compositing/composited-replaced-subpixel-location.html
-compositing/composited-scaled-child-with-border-radius-parent-clip.html
-compositing/compositing-visible-descendant.html
-compositing/contents-opaque/background-clip.html
-compositing/contents-opaque/background-color.html
-compositing/culling/filter-occlusion-alpha-large.html
-compositing/culling/filter-occlusion-alpha.html
-compositing/culling/filter-occlusion-blur-large.html
-compositing/direct-image-compositing.html
-compositing/draws-content/canvas-simple-background.html
-compositing/draws-content/webgl-simple-background.html
-compositing/filters/sw-layer-overlaps-hw-shadow.html
-compositing/filters/sw-nested-shadow-overlaps-hw-nested-shadow.html
-compositing/fixed-background-composited-html.html
-compositing/force-compositing-mode/no-overflow-iframe-layer.html
-compositing/force-compositing-mode/overflow-hidden-iframe-layer.html
-compositing/force-compositing-mode/overflow-iframe-layer.html
-compositing/geometry/clip-inside.html
-compositing/geometry/clip-with-shadow.html
-compositing/geometry/clip.html
-compositing/geometry/clipped-video-controller.html
-compositing/geometry/fixed-position.html
-compositing/geometry/flipped-blocks-inline-mapping.html
-compositing/geometry/flipped-writing-mode.html
-compositing/geometry/foreground-layer.html
-compositing/geometry/horizontal-scroll-composited.html
-compositing/geometry/layer-due-to-layer-children-deep.html
-compositing/geometry/layer-due-to-layer-children.html
-compositing/geometry/require-own-backing-recalc-order.html
-compositing/geometry/vertical-scroll-composited.html
-compositing/geometry/video-fixed-scrolling.html
-compositing/geometry/video-opacity-overlay.html
-compositing/gestures/gesture-tapHighlight-1-iframe-composited-scrolled-clipped.html
-compositing/gestures/gesture-tapHighlight-1-iframe-composited-scrolled-late-composite.html
-compositing/gestures/gesture-tapHighlight-1-iframe-composited-scrolled-late-noncomposite.html
-compositing/gestures/gesture-tapHighlight-1-iframe-composited-scrolled.html
-compositing/gestures/gesture-tapHighlight-1-iframe-composited.html
-compositing/gestures/gesture-tapHighlight-1-iframe-scrolled.html
-compositing/gestures/gesture-tapHighlight-1-iframe.html
-compositing/gestures/gesture-tapHighlight-1-overflow-div-composited-scroll-clip.html
-compositing/gestures/gesture-tapHighlight-1-overflow-div-composited-scrolled.html
-compositing/gestures/gesture-tapHighlight-1-overflow-div-composited.html
-compositing/gestures/gesture-tapHighlight-1-overflow-div-layout-change-2.html
-compositing/gestures/gesture-tapHighlight-1-overflow-div-layout-change.html
-compositing/gestures/gesture-tapHighlight-1-overflow-div-scrolled-late-composite.html
-compositing/gestures/gesture-tapHighlight-1-overflow-div-scrolled-late-noncomposite.html
-compositing/gestures/gesture-tapHighlight-1-overflow-div-scrolled.html
-compositing/gestures/gesture-tapHighlight-1-overflow-div.html
-compositing/gestures/gesture-tapHighlight-adjustment-clipping.html
-compositing/gestures/gesture-tapHighlight-block-in-multicol.html
-compositing/gestures/gesture-tapHighlight-composited-img.html
-compositing/gestures/gesture-tapHighlight-display-contents.html
-compositing/gestures/gesture-tapHighlight-form-input-text.html
-compositing/gestures/gesture-tapHighlight-imagemap.html
-compositing/gestures/gesture-tapHighlight-lines-and-float-in-multicol-2.html
-compositing/gestures/gesture-tapHighlight-nested-cursor.html
-compositing/gestures/gesture-tapHighlight-on-promoted-overflow-div-scrolled.html
-compositing/gestures/gesture-tapHighlight-pixel-rotated-div.html
-compositing/gestures/gesture-tapHighlight-pixel-rotated-link.html
-compositing/gestures/gesture-tapHighlight-pixel-transparent.html
-compositing/gestures/gesture-tapHighlight-simple-div-boxshadow-fixed.html
-compositing/gestures/gesture-tapHighlight-simple-div-boxshadow-static.html
-compositing/gestures/gesture-tapHighlight-simple-div-boxshadow.html
-compositing/gestures/gesture-tapHighlight-simple-margin.html
-compositing/gestures/gesture-tapHighlight-simple-multi-line.html
-compositing/gestures/gesture-tapHighlight-simple-navigate.html
-compositing/gestures/gesture-tapHighlight-simple-nested.html
-compositing/gestures/gesture-tapHighlight-simple-scaled-document.html
-compositing/gestures/gesture-tapHighlight-simple-scaledX.html
-compositing/gestures/gesture-tapHighlight-simple-scaledY.html
-compositing/gestures/gesture-tapHighlight-simple-window-scroll.html
-compositing/gestures/gesture-tapHighlight-simple.html
-compositing/gestures/gesture-tapHighlight-skew-matrix.html
-compositing/gestures/gesture-tapHighlight-with-filter.html
-compositing/lots-of-img-layers-with-opacity.html
-compositing/lots-of-img-layers.html
-compositing/masks/direct-image-mask.html
-compositing/masks/mask-with-added-filters.html
-compositing/masks/mask-with-removed-filters.html
-compositing/masks/masked-ancestor.html
-compositing/masks/simple-composited-mask.html
-compositing/nested-direct-image-compositing.html
-compositing/overflow-trumps-transform-style.html
-compositing/overflow/border-radius-clip-subpixel-accumulation.html
-compositing/overflow/border-radius-composited-subframe.html
-compositing/overflow/border-radius-styles-with-composited-child.html
-compositing/overflow/composited-sticky-element-with-non-integer-relative-position-to-container.html
-compositing/overflow/nested-render-surfaces-with-rotation.html
-compositing/overflow/non-reparented-overlay-scrollbars.html
-compositing/overflow/overflow-scroll-background-fractional-offset.html
-compositing/overflow/overflow-scroll-content-fractional-offset.html
-compositing/overflow/reflected-overlay-scrollbars-should-appear-without-compositing.html
-compositing/overflow/reflected-overlay-scrollbars-should-respect-ancestor-clip.html
-compositing/overflow/reparented-unclipped-overlay-scrollbars-with-offset-from-renderer.html
-compositing/overflow/rotate-clip.html
-compositing/overflow/rotate-then-clip.html
-compositing/overflow/tiled-mask.html
-compositing/perpendicular-layer-sorting.html
-compositing/perspective-origin-with-scrollbars.html
-compositing/preserve-3d-toggle.html
-compositing/render-surface-alpha-blending.html
-compositing/scroll-with-ancestor-clip.html
-compositing/scroll-with-inner-clip.html
-compositing/scrollbar-painting.html
-compositing/self-painting-layers.html
-compositing/text-on-scaled-layer.html
-compositing/text-on-scaled-surface.html
-compositing/tiled-layers-hidpi.html
-compositing/toggle-compositing.html
-compositing/transform-complex-page.html
-compositing/transform-gained-3d.html
-css1/box_properties/border.html
-css1/box_properties/border_color_inline.html
-css1/box_properties/border_style_inline.html
-css1/box_properties/clear.html
-css1/box_properties/float.html
-css1/box_properties/float_on_text_elements.html
-css1/box_properties/margin.html
-css1/box_properties/padding_inline.html
-css1/cascade/cascade_order.html
-css1/classification/display.html
-css1/classification/list_style_image.html
-css1/color_and_background/background.html
-css1/color_and_background/color.html
-css1/font_properties/font.html
-css1/formatting_model/horizontal_formatting.html
-css1/formatting_model/vertical_formatting.html
-css1/pseudo/multiple_pseudo_elements.html
-css1/text_properties/text_align.html
-css1/units/color_units.html
-css2.1/20110323/background-intrinsic-001.htm
-css2.1/20110323/border-conflict-style-079.htm
-css2.1/20110323/c541-word-sp-001.htm
-css2.1/20110323/inline-table-001.htm
-css2.1/20110323/margin-applies-to-001.htm
-css2.1/20110323/outline-color-applies-to-014.htm
-css2.1/20110323/table-caption-001.htm
-css2.1/t010403-shand-border-00-c.html
-css2.1/t010403-shand-font-00-b.html
-css2.1/t040103-escapes-00-b.html
-css2.1/t040103-ident-00-c.html
-css2.1/t0803-c5501-imrgn-t-00-b-ag.html
-css2.1/t0803-c5501-mrgn-t-00-b-a.html
-css2.1/t0804-c5506-padn-t-00-b-a.html
-css2.1/t0804-c5507-ipadn-r-00-b-ag.html
-css2.1/t0805-c5517-brdr-s-00-c.html
-css2.1/t0805-c5517-ibrdr-s-00-a.html
-css2.1/t0905-c5525-flthw-00-c-g.html
-css2.1/t0905-c5525-fltinln-00-c-ag.html
-css2.1/t1202-counters-00-b.html
-css2.1/t140201-c533-bgimage-00-a.html
-css2.1/t1504-c523-font-style-00-b.html
-css2.1/t170602-bdr-conflct-w-00-d.html
-css3/background/background-color-gradient-alignment.html
-css3/background/background-right-bottom-subpixel-position.html
-css3/blending/background-blend-mode-crossfade-image-gradient.html
-css3/blending/background-blend-mode-overlapping-accelerated-elements.html
-css3/blending/mix-blend-mode-composited-layers.html
-css3/blending/svg-blend-color.html
-css3/blending/svg-blend-overlapping-elements.html
-css3/calc/css3-radial-gradients.html
-css3/calc/gradient-color-stops.html
-css3/filters/add-filter-rendering.html
-css3/filters/backdrop-filter-basic-blur.html
-css3/filters/backdrop-filter-border-radius.html
-css3/filters/backdrop-filter-clip-rect-zoom.html
-css3/filters/composited-layer-promotion-after-outset-overlap-change-using-composited-shadow.html
-css3/filters/composited-layer-promotion-after-outset-overlap-change-using-sw-shadow.html
-css3/filters/effect-blur.html
-css3/filters/effect-brightness-clamping-hw.html
-css3/filters/effect-brightness-hw.html
-css3/filters/effect-combined-hw.html
-css3/filters/effect-combined.html
-css3/filters/effect-grayscale-hw.html
-css3/filters/effect-hue-rotate-hw.html
-css3/filters/effect-opacity-hw.html
-css3/filters/effect-reference-colorspace-hw.html
-css3/filters/effect-reference-hw.html
-css3/filters/effect-reference-subregion-hw.html
-css3/filters/effect-reference-subregion-zoom-hw.html
-css3/filters/effect-reference-subregion-zoom.html
-css3/filters/effect-reference-zoom-hw.html
-css3/filters/effect-saturate-hw.html
-css3/filters/effect-sepia-hw.html
-css3/filters/filterRegions.html
-css3/font-feature-settings-rendering.html
-css3/masking/clip-path-circle.html
-css3/masking/clip-path-reference-userSpaceOnUse.html
-css3/masking/clip-path-reference.html
-css3/masking/mask-repeat-round-border.html
-editing/caret/bidi_hit_test_caret_consistency.html
-editing/caret/caret-color.html
-editing/composition-underline-color.html
-editing/input/caret-at-the-edge-of-input.html
-editing/input/editable-container-with-word-wrap-normal.html
-editing/input/reveal-edit-on-input-vertically.html
-editing/inserting/caret-position.html
-editing/inserting/insert-space-in-empty-doc.html
-editing/pasteboard/drag-image-to-contenteditable-in-iframe.html
-editing/selection/caret-at-bidi-boundary.html
-editing/selection/caret-in-empty-inline-1.html
-editing/selection/caret-in-empty-inline-2.html
-editing/selection/internal-caret-rect.html
-editing/selection/mixed-editability-inline-height.html
-editing/selection/select-out-of-floated-input.html
-editing/selection/selection-background.html
-editing/style/text-indent.html
-external/wpt/accelerometer/Accelerometer.https.html
-external/wpt/accessibility/crashtests/computed-accessible-child-of-pseudo-element.html
-external/wpt/acid/acid3/test.html
-external/wpt/ambient-light/AmbientLightSensor-iframe-access.https.html
-external/wpt/animation-worklet/worklet-animation-with-fill-mode.https.html
-external/wpt/apng/animated-png-timeout.html
-external/wpt/appmanifest/id-member/id-member-manifest-update-manual-v2.html
-external/wpt/appmanifest/start_url-member/pass.html
-external/wpt/audio-output/selectAudioOutput-sans-user-activation.https.html
-external/wpt/badging/badge-success.https.html
-external/wpt/battery-status/battery-allowed-by-feature-policy-attribute.https.sub.html
-external/wpt/beacon/headers/header-referrer-no-referrer-when-downgrade.https.html
-external/wpt/close-watcher/basic.html
-external/wpt/common/blank.html
-external/wpt/common/dispatcher/executor.html
-external/wpt/compat/webkit-radial-gradient-radii.html
-external/wpt/content-dpr/image-with-content-dpr-and-explicit-dimensions.html
-external/wpt/contenteditable/plaintext-only.html
-external/wpt/cors/image-tainting-in-cross-origin-iframe.sub.html
-external/wpt/credential-management/fedcm-revoke.https.html
-external/wpt/css/CSS2/abspos/remove-block-between-inline-and-abspos.html
-external/wpt/css/CSS2/borders/ridge-default.html
-external/wpt/css/CSS2/cascade/inherit-computed-002.html
-external/wpt/css/CSS2/floats/float-nowrap-3.html
-external/wpt/css/CSS2/linebox/crashtests/inline-block-baseline-crash.html
-external/wpt/css/CSS2/linebox/inline-children-root-linebox-crash-001.html
-external/wpt/css/CSS2/normal-flow/block-in-inline-client-rects-001.html
-external/wpt/css/CSS2/normal-flow/crashtests/block-in-inline-ax-crash.html
-external/wpt/css/CSS2/positioning/detach-abspos-before-layout.html
-external/wpt/css/CSS2/stacking-context/opacity-change-parent-stacking-context.html
-external/wpt/css/CSS2/tables/border-collapse-005.html
-external/wpt/css/CSS2/text/bidi-span-003.html
-external/wpt/css/CSS2/text/crashtests/bidi-inline-fragment-oof-crash.html
-external/wpt/css/compositing/background-blending/background-blend-mode-gradient-image.html
-external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-blended-with-transform-and-perspective.html
-external/wpt/css/compositing/parsing/background-blend-mode-valid.html
-external/wpt/css/compositing/svg/mix-blend-mode-svg-rectangle.html
-external/wpt/css/css-align/baseline-rules/synthesized-baseline-grid-001.html
-external/wpt/css/css-align/content-distribution/parse-align-content-002.html
-external/wpt/css/css-align/default-alignment/parse-justify-items-005.html
-external/wpt/css/css-align/distribution-values/space-evenly-001.html
-external/wpt/css/css-align/gaps/gap-normal-used-001.html
-external/wpt/css/css-align/parsing/column-gap-invalid.html
-external/wpt/css/css-align/self-alignment/parse-justify-self-001.html
-external/wpt/css/css-align/ttwf-reftest-alignContent.html
-external/wpt/css/css-animations/animation-important-002.html
-external/wpt/css/css-animations/crashtests/replace-keyframes-animating-filter-001.html
-external/wpt/css/css-animations/parsing/animation-invalid.html
-external/wpt/css/css-animations/responsive/column-width-001.html
-external/wpt/css/css-backgrounds/animations/background-color-transition-currentcolor.html
-external/wpt/css/css-backgrounds/animations/invalidation/background-color-transition-with-initially-transparent.html
-external/wpt/css/css-backgrounds/background-attachment-local/attachment-local-clipping-image-6.html
-external/wpt/css/css-backgrounds/background-clip/clip-content-box_with_size.html
-external/wpt/css/css-backgrounds/background-origin/origin-content-box_with_size.html
-external/wpt/css/css-backgrounds/background-position/subpixel-position-center.tentative.html
-external/wpt/css/css-backgrounds/background-size-008.html
-external/wpt/css/css-backgrounds/background-size/background-size-near-zero-png.html
-external/wpt/css/css-backgrounds/background-size/vector/tall--auto--percent-width-nonpercent-height-viewbox.html
-external/wpt/css/css-backgrounds/box-shadow/tools/box-shadow-blur-definition-001-image-generator.html
-external/wpt/css/css-backgrounds/hidpi/simple-bg-color.html
-external/wpt/css/css-backgrounds/parsing/background-image-invalid.html
-external/wpt/css/css-borders/subpixel-borders-with-child-border-box-sizing.html
-external/wpt/css/css-box/inheritance.html
-external/wpt/css/css-box/parsing/height-valid.html
-external/wpt/css/css-break/flexbox/button-in-multicol-crash.html
-external/wpt/css/css-break/grid/grid-item-fragmentation-023.html
-external/wpt/css/css-break/out-of-flow-in-multicolumn-082.html
-external/wpt/css/css-break/parsing/widows-invalid.html
-external/wpt/css/css-break/table/table-cell-expansion-003.html
-external/wpt/css/css-cascade/parsing/layer-import-parsing.html
-external/wpt/css/css-cascade/revert-layer-010.html
-external/wpt/css/css-color-adjust/inheritance.html
-external/wpt/css/css-color-adjust/parsing/print-color-adjust.html
-external/wpt/css/css-color-adjust/rendering/dark-color-scheme/color-scheme-table-border-currentcolor-responsive.html
-external/wpt/css/css-color/parsing/color-contrast-valid.html
-external/wpt/css/css-color/rgb-003.html
-external/wpt/css/css-contain/contain-paint-011.html
-external/wpt/css/css-contain/container-queries/canvas-as-container-002.html
-external/wpt/css/css-contain/container-queries/crashtests/math-block-container-child-crash.html
-external/wpt/css/css-contain/content-visibility/parsing/content-visibility-valid.html
-external/wpt/css/css-contain/content-visibility/slot-content-visibility-6-crash.html
-external/wpt/css/css-contain/crashtests/contain-nested-crash-001.html
-external/wpt/css/css-contain/parsing/contain-invalid.html
-external/wpt/css/css-content/quotes-018.html
-external/wpt/css/css-counter-styles/arabic-indic/css3-counter-styles-101.html
-external/wpt/css/css-counter-styles/armenian/css3-counter-styles-008.html
-external/wpt/css/css-counter-styles/bengali/css3-counter-styles-116.html
-external/wpt/css/css-counter-styles/cambodian/css3-counter-styles-160.html
-external/wpt/css/css-counter-styles/cjk-decimal/css3-counter-styles-004.html
-external/wpt/css/css-counter-styles/cjk-earthly-branch/css3-counter-styles-203.html
-external/wpt/css/css-counter-styles/cjk-heavenly-stem/css3-counter-styles-205.html
-external/wpt/css/css-counter-styles/counter-style-at-rule/descriptor-fallback-invalid.html
-external/wpt/css/css-counter-styles/cssom/cssom-system-setter-2.html
-external/wpt/css/css-counter-styles/devanagari/css3-counter-styles-120.html
-external/wpt/css/css-counter-styles/ethiopic-numeric/css3-counter-styles-069.html
-external/wpt/css/css-counter-styles/georgian/css3-counter-styles-014.html
-external/wpt/css/css-counter-styles/gujarati/css3-counter-styles-122.html
-external/wpt/css/css-counter-styles/gurmukhi/css3-counter-styles-126.html
-external/wpt/css/css-counter-styles/hebrew/css3-counter-styles-015.html
-external/wpt/css/css-counter-styles/hiragana-iroha/css3-counter-styles-034.html
-external/wpt/css/css-counter-styles/hiragana/css3-counter-styles-032.html
-external/wpt/css/css-counter-styles/idlharness.html
-external/wpt/css/css-counter-styles/japanese-formal/css3-counter-styles-049.html
-external/wpt/css/css-counter-styles/japanese-informal/css3-counter-styles-043.html
-external/wpt/css/css-counter-styles/kannada/css3-counter-styles-130.html
-external/wpt/css/css-counter-styles/katakana-iroha/css3-counter-styles-039.html
-external/wpt/css/css-counter-styles/katakana/css3-counter-styles-038.html
-external/wpt/css/css-counter-styles/khmer/css3-counter-styles-161.html
-external/wpt/css/css-counter-styles/korean-hangul-formal/css3-counter-styles-055.html
-external/wpt/css/css-counter-styles/korean-hanja-formal/css3-counter-styles-063.html
-external/wpt/css/css-counter-styles/korean-hanja-informal/css3-counter-styles-059.html
-external/wpt/css/css-counter-styles/lao/css3-counter-styles-131.html
-external/wpt/css/css-counter-styles/lower-armenian/css3-counter-styles-111.html
-external/wpt/css/css-counter-styles/lower-greek/css3-counter-styles-028.html
-external/wpt/css/css-counter-styles/lower-roman/css3-counter-styles-022.html
-external/wpt/css/css-counter-styles/malayalam/css3-counter-styles-136.html
-external/wpt/css/css-counter-styles/mongolian/css3-counter-styles-137.html
-external/wpt/css/css-counter-styles/myanmar/css3-counter-styles-141.html
-external/wpt/css/css-counter-styles/oriya/css3-counter-styles-143.html
-external/wpt/css/css-counter-styles/persian/css3-counter-styles-106.html
-external/wpt/css/css-counter-styles/simp-chinese-formal/css3-counter-styles-080.html
-external/wpt/css/css-counter-styles/simp-chinese-informal/css3-counter-styles-075.html
-external/wpt/css/css-counter-styles/tamil/css3-counter-styles-147.html
-external/wpt/css/css-counter-styles/telugu/css3-counter-styles-151.html
-external/wpt/css/css-counter-styles/thai/css3-counter-styles-154.html
-external/wpt/css/css-counter-styles/tibetan/css3-counter-styles-157.html
-external/wpt/css/css-counter-styles/trad-chinese-formal/css3-counter-styles-086.html
-external/wpt/css/css-counter-styles/trad-chinese-informal/css3-counter-styles-081.html
-external/wpt/css/css-counter-styles/upper-armenian/css3-counter-styles-110.html
-external/wpt/css/css-counter-styles/upper-roman/css3-counter-styles-023.html
-external/wpt/css/css-device-adapt/viewport-user-scalable-no-wide-content.tentative.html
-external/wpt/css/css-display/display-with-float-dynamic.html
-external/wpt/css/css-display/parsing/display-invalid.html
-external/wpt/css/css-easing/step-timing-functions-output.html
-external/wpt/css/css-env/fallback-nested-var.tentative.html
-external/wpt/css/css-fill-stroke/paint-order-001.tentative.html
-external/wpt/css/css-flexbox/flex-lines/multi-line-wrap-with-column-reverse.html
-external/wpt/css/css-flexbox/getcomputedstyle/flexbox_computedstyle_flex-direction-column-reverse.html
-external/wpt/css/css-flexbox/intrinsic-size/row-001.html
-external/wpt/css/css-flexbox/order/order-with-column-reverse.html
-external/wpt/css/css-flexbox/parsing/flex-grow-invalid.html
-external/wpt/css/css-flexbox/relayout-align-items.html
-external/wpt/css/css-font-loading/fontfacesetloadevent-constructor.html
-external/wpt/css/css-fonts/animations/system-fonts.html
-external/wpt/css/css-fonts/font-display/font-display.html
-external/wpt/css/css-fonts/font-variant-ligatures-02.html
-external/wpt/css/css-fonts/matching/fixed-stretch-style-over-weight.html
-external/wpt/css/css-fonts/math-script-level-and-math-style/math-script-level-auto-and-math-style-002.tentative.html
-external/wpt/css/css-fonts/parsing/font-synthesis-weight-valid.html
-external/wpt/css/css-forced-color-adjust/inheritance.html
-external/wpt/css/css-grid/abspos/descendant-static-position-003.html
-external/wpt/css/css-grid/alignment/grid-row-axis-alignment-sticky-positioned-items-001.html
-external/wpt/css/css-grid/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-005.html
-external/wpt/css/css-grid/animation/grid-template-rows-001.html
-external/wpt/css/css-grid/grid-definition/grid-auto-fit-columns-001.html
-external/wpt/css/css-grid/grid-item-percentage-quirk-002.html
-external/wpt/css/css-grid/grid-items/percentage-size-subitems-002.html
-external/wpt/css/css-grid/grid-model/grid-item-accepts-first-letter-001.html
-external/wpt/css/css-grid/layout-algorithm/grid-as-flex-item-should-not-shrink-to-fit-006.html
-external/wpt/css/css-grid/parsing/grid-auto-flow-invalid.html
-external/wpt/css/css-grid/placement/grid-placement-using-named-grid-lines-006.html
-external/wpt/css/css-highlight-api/highlight-pseudo-parsing.html
-external/wpt/css/css-images/conic-gradient-angle.html
-external/wpt/css/css-images/gradient/color-stops-parsing.html
-external/wpt/css/css-images/image-set/image-set-resolution-003.html
-external/wpt/css/css-images/object-view-box-fit-fill-canvas.html
-external/wpt/css/css-images/object-view-box-fit-fill-img.html
-external/wpt/css/css-images/object-view-box-fit-fill-svg.html
-external/wpt/css/css-images/object-view-box-fit-fill-video.html
-external/wpt/css/css-images/parsing/image-orientation-valid.html
-external/wpt/css/css-inline/inline-crash.html
-external/wpt/css/css-inline/parsing/vertical-align-valid.html
-external/wpt/css/css-layout-api/auto-block-size/absolute.https.html
-external/wpt/css/css-layout-api/baseline/no-baseline.https.html
-external/wpt/css/css-layout-api/child-constraints/available-size-for-percentages-invalid.https.html
-external/wpt/css/css-layout-api/constraints/fixed-inline-size-absolute-top-bottom-vrl.https.html
-external/wpt/css/css-layout-api/edges/border-vrl.https.html
-external/wpt/css/css-layout-api/fallback-intrinsic-sizes/no-promise.https.html
-external/wpt/css/css-layout-api/fallback-layout/no-promise.https.html
-external/wpt/css/css-layout-api/input-text-crash.https.html
-external/wpt/css/css-layout-api/intrinsic-sizes/child-replaced-percentage-01.https.html
-external/wpt/css/css-layout-api/layout-child/before-after.https.html
-external/wpt/css/css-layout-api/position-fragment/vrl-ltr.https.html
-external/wpt/css/css-lists/content-property/marker-text-matches-disc.html
-external/wpt/css/css-lists/crashtests/chrome-legacy-propagation-remove-body-crash.html
-external/wpt/css/css-lists/parsing/list-style-position-valid.html
-external/wpt/css/css-logical/logicalprops-with-deferred-writing-mode.html
-external/wpt/css/css-logical/parsing/border-inline-width-invalid.html
-external/wpt/css/css-masking/animations/clip-path-interpolation-002.html
-external/wpt/css/css-masking/clip-path/animations/clip-path-animation-three-keyframes1.html
-external/wpt/css/css-masking/clip-path/clip-path-viewBox-1b.html
-external/wpt/css/css-masking/clip-path/svg-clip-path-fixed-values.html
-external/wpt/css/css-masking/clip-rule/clip-rule-001.html
-external/wpt/css/css-masking/clip/clip-rect-comma-001.html
-external/wpt/css/css-masking/hit-test/clip-path-element-objectboundingbox-001.html
-external/wpt/css/css-masking/inheritance.sub.html
-external/wpt/css/css-masking/mask-image/mask-image-3c.html
-external/wpt/css/css-masking/parsing/mask-type-invalid.html
-external/wpt/css/css-multicol/column-balancing-with-overflow-auto-crash.html
-external/wpt/css/css-multicol/crashtests/nested-oof-multicol-with-oof-needing-additional-columns.html
-external/wpt/css/css-multicol/parsing/column-rule-shorthand.html
-external/wpt/css/css-multicol/table/balance-table-with-fractional-height-row.html
-external/wpt/css/css-overflow/overflow-clip-margin-005.html
-external/wpt/css/css-overflow/parsing/scrollbar-gutter-valid.html
-external/wpt/css/css-overscroll-behavior/inheritance.html
-external/wpt/css/css-overscroll-behavior/parsing/overscroll-behavior-invalid.html
-external/wpt/css/css-page/page-rule-declarations-001.html
-external/wpt/css/css-page/parsing/page-invalid.html
-external/wpt/css/css-paint-api/parse-input-arguments-003.https.html
-external/wpt/css/css-parser-api/idlharness.html
-external/wpt/css/css-position/crashtests/position-absolute-crash-014.html
-external/wpt/css/css-position/multicol/static-position/vrl-ltr-rtl-in-multicol.tentative.html
-external/wpt/css/css-position/multicol/vrl-rtl-rtl-in-multicols.html
-external/wpt/css/css-position/parsing/inset-invalid.html
-external/wpt/css/css-position/position-relative-007.html
-external/wpt/css/css-position/sticky/position-sticky-top-002.html
-external/wpt/css/css-properties-values-api/at-property-non-matching-media-crash.html
-external/wpt/css/css-pseudo/marker-text-emphasis.html
-external/wpt/css/css-pseudo/parsing/tree-abiding-pseudo-elements.html
-external/wpt/css/css-ruby/parsing/ruby-merge-invalid.html
-external/wpt/css/css-scoping/css-scoping-shadow-host-functional-rule.html
-external/wpt/css/css-scroll-anchoring/basic.html
-external/wpt/css/css-scroll-anchoring/parsing/overflow-anchor-invalid.html
-external/wpt/css/css-scroll-snap/parsing/scroll-snap-type-valid.html
-external/wpt/css/css-scroll-snap/scroll-target-padding-001.html
-external/wpt/css/css-scroll-snap/snap-after-initial-layout/writing-mode-horizontal-tb.html
-external/wpt/css/css-scroll-snap/snap-after-relayout/changing-scroll-snap-type.html
-external/wpt/css/css-scrollbars/scrollbar-width-004.html
-external/wpt/css/css-shadow-parts/invalidation-complex-selector.html
-external/wpt/css/css-shapes/parsing/shape-image-threshold-valid.html
-external/wpt/css/css-shapes/shape-outside-invalid-ellipse-002.html
-external/wpt/css/css-shapes/shape-outside/assorted/float-should-push.html
-external/wpt/css/css-shapes/shape-outside/formatting-context/shape-outside-formatting-context.tentative.html
-external/wpt/css/css-shapes/shape-outside/shape-box/shape-outside-border-box-border-radius-011.html
-external/wpt/css/css-shapes/shape-outside/shape-image/gradients/shape-outside-radial-gradient-001.html
-external/wpt/css/css-shapes/shape-outside/shape-image/shape-image-017.html
-external/wpt/css/css-shapes/shape-outside/values/shape-image-threshold-000.html
-external/wpt/css/css-shapes/spec-examples/shape-outside-005.html
-external/wpt/css/css-size-adjust/inheritance.html
-external/wpt/css/css-size-adjust/parsing/text-size-adjust-invalid.html
-external/wpt/css/css-sizing/aspect-ratio/parsing/aspect-ratio-valid.html
-external/wpt/css/css-sizing/aspect-ratio/replaced-element-023.html
-external/wpt/css/css-sizing/available-height-for-replaced-content-001.html
-external/wpt/css/css-sizing/contain-intrinsic-size/*
-external/wpt/css/css-sizing/parsing/height-valid.html
-external/wpt/css/css-syntax/charset/page-windows-1251-css-at-charset-utf16-ascii-only.html
-external/wpt/css/css-syntax/declarations-trim-whitespace.html
-external/wpt/css/css-tables/border-collapse-dynamic-col-001.html
-external/wpt/css/css-tables/crashtests/empty_cells_crash.html
-external/wpt/css/css-tables/height-distribution/td-different-subpixel-padding-in-same-row.html
-external/wpt/css/css-tables/parsing/empty-cells-valid.html
-external/wpt/css/css-tables/tentative/paint/background-image-row.html
-external/wpt/css/css-tables/tentative/table-width-redistribution-fixed-padding.html
-external/wpt/css/css-tables/tools/markup-generator.html
-external/wpt/css/css-tables/width-distribution/distribution-algo-1.html
-external/wpt/css/css-text-decor/invalidation/text-decoration-invalidation-double.html
-external/wpt/css/css-text-decor/parsing/text-decoration-style-valid.html
-external/wpt/css/css-text-decor/text-shadow/basic.html
-external/wpt/css/css-text-decor/text-shadow/parsing/text-shadow-invalid.html
-external/wpt/css/css-text/boundary-shaping/boundary-shaping-002.html
-external/wpt/css/css-text/crashtests/white-space-pre-wrap-chash.html
-external/wpt/css/css-text/hyphens/hyphenate-character-004.html
-external/wpt/css/css-text/i18n/css3-text-line-break-baspglwj-042.html
-external/wpt/css/css-text/i18n/ja/css-text-line-break-ja-cpm-strict.html
-external/wpt/css/css-text/i18n/unknown-lang/css-text-line-break-in-strict.html
-external/wpt/css/css-text/i18n/zh/css-text-line-break-zh-iteration-loose.html
-external/wpt/css/css-text/letter-spacing/letter-spacing-201.html
-external/wpt/css/css-text/line-break/line-break-anywhere-007.html
-external/wpt/css/css-text/line-breaking/segment-break-transformation-rules-032.html
-external/wpt/css/css-text/overflow-wrap/overflow-wrap-anywhere-008.html
-external/wpt/css/css-text/parsing/text-align-all-valid.html
-external/wpt/css/css-text/removing-collapsible-crash.html
-external/wpt/css/css-text/shaping/shaping-011.html
-external/wpt/css/css-text/tab-size/tab-size-integer-002.html
-external/wpt/css/css-text/text-align/text-align-last-012.html
-external/wpt/css/css-text/text-encoding/shaping-join-002.html
-external/wpt/css/css-text/text-indent/text-indent-tab-positions-001.html
-external/wpt/css/css-text/text-justify/text-justify-005.html
-external/wpt/css/css-text/text-transform/math/text-transform-math-auto-001.tentative.html
-external/wpt/css/css-text/text-transform/text-transform-upperlower-004.html
-external/wpt/css/css-text/white-space/white-space-nowrap-011.html
-external/wpt/css/css-text/word-boundary/word-boundary-009.html
-external/wpt/css/css-text/word-break/word-break-normal-tdd-000.html
-external/wpt/css/css-text/word-spacing/word-spacing-negative-value-001.html
-external/wpt/css/css-transforms/animation/transform-interpolation-perspective.html
-external/wpt/css/css-transforms/crashtests/preserve3d-scene-002.html
-external/wpt/css/css-transforms/document-styles/svg-document-styles-001.html
-external/wpt/css/css-transforms/external-styles/svg-external-styles-014.html
-external/wpt/css/css-transforms/gradientTransform/svg-gradientTransform-combination-003.html
-external/wpt/css/css-transforms/group/svg-transform-nested-028.html
-external/wpt/css/css-transforms/individual-transform/individual-transform-1.html
-external/wpt/css/css-transforms/inline-styles/svg-inline-styles-001.html
-external/wpt/css/css-transforms/matrix/svg-matrix-038.html
-external/wpt/css/css-transforms/parsing/backface-visibility-valid.html
-external/wpt/css/css-transforms/patternTransform/svg-patternTransform-combination-001.html
-external/wpt/css/css-transforms/rotate/svg-rotate-3args-invalid-003.html
-external/wpt/css/css-transforms/scale/svg-scale-013.html
-external/wpt/css/css-transforms/skewX/svg-skewx-with-units.html
-external/wpt/css/css-transforms/skewY/svg-skewy-with-units.html
-external/wpt/css/css-transforms/transform-list-separation/svg-transform-list-separations-003.html
-external/wpt/css/css-transforms/translate/translate-and-transform-css-property-in-svg.html
-external/wpt/css/css-transforms/ttwf-transform-translatey-001.html
-external/wpt/css/css-transitions/animations/transition-end-event-shorthands.html
-external/wpt/css/css-transitions/crashtests/transition-large-word-spacing-001.html
-external/wpt/css/css-transitions/non-rendered-element-004.tentative.html
-external/wpt/css/css-transitions/parsing/transition-invalid.html
-external/wpt/css/css-typed-om/rotate-by-added-angle.html
-external/wpt/css/css-typed-om/stylevalue-normalization/normalize-image.html
-external/wpt/css/css-typed-om/stylevalue-objects/parse-invalid.html
-external/wpt/css/css-typed-om/stylevalue-serialization/crashtests/cssInvertValue-convert-crash.html
-external/wpt/css/css-typed-om/stylevalue-serialization/cssUnitValue.tentative.html
-external/wpt/css/css-typed-om/stylevalue-subclasses/cssKeywordValue.html
-external/wpt/css/css-typed-om/stylevalue-subclasses/numeric-objects/cssUnitValue-value.html
-external/wpt/css/css-typed-om/the-stylepropertymap/computed/iterable.tentative.html
-external/wpt/css/css-typed-om/the-stylepropertymap/declared/declared.tentative.html
-external/wpt/css/css-typed-om/the-stylepropertymap/inline/iterable.tentative.html
-external/wpt/css/css-typed-om/the-stylepropertymap/properties/text-overflow.html
-external/wpt/css/css-ui/compute-kind-widget-generated/kind-of-widget-fallback-checkbox-input-border-start-start-radius-001.html
-external/wpt/css/css-ui/parsing/outline-offset-invalid.html
-external/wpt/css/css-values/minmax-length-serialize.html
-external/wpt/css/css-values/urls/resolve-relative-to-base.html
-external/wpt/css/css-variables/variable-presentation-attribute.html
-external/wpt/css/css-will-change/parsing/will-change-invalid.html
-external/wpt/css/css-will-change/will-change-fixpos-cb-position-1.html
-external/wpt/css/css-writing-modes/astral-bidi/cypriot.html
-external/wpt/css/css-writing-modes/bidi-normal-002.html
-external/wpt/css/css-writing-modes/crashtests/wm-body-propagation-crash.html
-external/wpt/css/css-writing-modes/parsing/text-orientation-valid.html
-external/wpt/css/css-writing-modes/test-plan/req-tcu-font.html
-external/wpt/css/cssom-view/parsing/scroll-behavior-valid.html
-external/wpt/css/cssom-view/pt-to-px-width.html
-external/wpt/css/cssom-view/table-border-collapse-client-width-height.html
-external/wpt/css/cssom/style-sheet-interfaces-002.html
-external/wpt/css/filter-effects/animation/backdrop-filter-interpolation-004.html
-external/wpt/css/filter-effects/filter-function/filter-function-007.html
-external/wpt/css/filter-effects/parsing/backdrop-filter-parsing-valid.html
-external/wpt/css/filter-effects/svg-shorthand-drop-shadow-001.html
-external/wpt/css/geometry/DOMMatrix2DInit-validate-fixup.html
-external/wpt/css/mediaqueries/mq-calc-005.html
-external/wpt/css/motion/animation/offset-path-interpolation-002.html
-external/wpt/css/motion/animation/reftests/offset-path-path-interpolation-001.html
-external/wpt/css/motion/offset-path-ray-005.html
-external/wpt/css/motion/parsing/offset-distance-parsing-valid.html
-external/wpt/css/printing/fragmented-inline-block-001-print.html
-external/wpt/css/selectors/attribute-selectors/attribute-case/syntax.html
-external/wpt/css/selectors/attribute-selectors/style-attribute-selector.html
-external/wpt/css/selectors/i18n/css3-selectors-lang-002.html
-external/wpt/css/selectors/invalidation/class-id-attr.html
-external/wpt/css/selectors/parsing/parse-child.html
-external/wpt/css/selectors/query/query-is.html
-external/wpt/css/selectors/x-pseudo-element.html
-external/wpt/custom-elements/custom-element-registry/upgrade.html
-external/wpt/custom-elements/form-associated/form-disabled-callback.html
-external/wpt/custom-elements/parser/parser-fallsback-to-unknown-element.html
-external/wpt/custom-elements/prevent-extensions-crash.html
-external/wpt/custom-elements/reactions/HTMLProgressElement.html
-external/wpt/custom-elements/state/tentative/state-pseudo-class.html
-external/wpt/custom-elements/upgrading/upgrading-parser-created-element.html
-external/wpt/delegated-ink/exception-thrown-bad-color.tentative.html
-external/wpt/density-size-correction/srcset-cross-origin.sub.html
-external/wpt/direct-sockets/open-securecontext.http.html
-external/wpt/document-policy/experimental-features/document-domain/document-domain.tentative.sub.html
-external/wpt/document-policy/font-display/reporting-blank.tentative.html
-external/wpt/document-policy/reporting/lossy-images-max-bpp-reporting-tentative.html
-external/wpt/document-policy/required-policy/document-policy.html
-external/wpt/dom/abort/reason-constructor.html
-external/wpt/dom/collections/HTMLCollection-own-props.html
-external/wpt/dom/events/EventListener-incumbent-global-subsubframe.sub.html
-external/wpt/dom/events/mouse-event-retarget.html
-external/wpt/dom/events/scrolling/scrollend-event-fired-to-document.html
-external/wpt/dom/interface-objects.html
-external/wpt/dom/lists/DOMTokenList-Iterable.html
-external/wpt/dom/nodes/Document-contentType/contentType/contenttype_jpg.html
-external/wpt/dom/nodes/Document-createElement-namespace-tests/svg.html
-external/wpt/dom/nodes/Element-matches-namespaced-elements.html
-external/wpt/dom/ranges/Range-cloneRange.html
-external/wpt/dom/traversal/TreeWalker-acceptNode-filter-cross-realm-null-browsing-context.html
-external/wpt/dom/xslt/transformToFragment-on-node-from-inactive-document-crash.html
-external/wpt/domparsing/DOMParser-parseFromString-encoding.html
-external/wpt/domxpath/fn-starts-with.html
-external/wpt/editing/crashtests/fixed-property-for-svg-element-001.html
-external/wpt/editing/event.html
-external/wpt/editing/other/white-spaces-after-execCommand-insertparagraph.tentative.html
-external/wpt/editing/run/multitest.html
-external/wpt/element-timing/css-generated-text.html
-external/wpt/encoding-detection/nbsp-even-windows-1252.tentative.html
-external/wpt/encoding/eof-utf-8-one.html
-external/wpt/encoding/legacy-mb-japanese/euc-jp/eucjp-decode-cseucpkdfmtjapanese.html
-external/wpt/encoding/legacy-mb-japanese/iso-2022-jp/iso2022jp-encode-form-errors-misc.html
-external/wpt/encoding/legacy-mb-japanese/shift_jis/sjis_chars-ms932.html
-external/wpt/encoding/legacy-mb-korean/euc-kr/euckr-decode-ksc5601.html
-external/wpt/encoding/legacy-mb-tchinese/big5/big5-decode.html
-external/wpt/encrypted-media/clearkey-mp4-playback-temporary-waitingforkey.https.html
-external/wpt/event-timing/only-observe-firstInput.html
-external/wpt/eyedropper/eye-dropper-abort-signal.tentative.https.html
-external/wpt/eyedropper/manual/eye-dropper.tentative.html
-external/wpt/fetch/content-length/content-length.html
-external/wpt/fetch/cross-origin-resource-policy/fetch-in-iframe.html
-external/wpt/fetch/http-cache/split-cache.html
-external/wpt/fetch/images/canvas-remote-read-remote-image-redirect.html
-external/wpt/fetch/metadata/preload.https.sub.html
-external/wpt/fetch/nosniff/image.html
-external/wpt/fetch/range/non-matching-range-response.html
-external/wpt/fetch/redirect-navigate/302-found-post.html
-external/wpt/fetch/redirects/subresource-fragments.html
-external/wpt/fetch/security/embedded-credentials.tentative.sub.html
-external/wpt/fetch/stale-while-revalidate/stale-image.html
-external/wpt/file-system-access/local_FileSystemBaseHandle-postMessage-frames-manual.https.html
-external/wpt/focus/iframe-focuses-parent-different-site.html
-external/wpt/fullscreen/api/element-request-fullscreen-dialog.html
-external/wpt/fullscreen/crashtests/chrome-1312699.html
-external/wpt/gamepad/not-fully-active.https.html
-external/wpt/generic-sensor/SensorErrorEvent-constructor.https.html
-external/wpt/geolocation-sensor/GeolocationSensor_read.https.html
-external/wpt/gyroscope/Gyroscope.https.html
-external/wpt/hr-time/clamped-time-origin-isolated.https.html
-external/wpt/html-media-capture/capture_reflect.html
-external/wpt/html/browsers/browsing-the-web/back-forward-cache/eligibility/inflight-fetch-1.html
-external/wpt/html/browsers/browsing-the-web/back-forward-cache/pushstate.https.html
-external/wpt/html/browsers/browsing-the-web/history-traversal/browsing_context_name-2.html
-external/wpt/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-basic.html
-external/wpt/html/browsers/browsing-the-web/navigating-across-documents/004.html
-external/wpt/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-event-iframe-element.html
-external/wpt/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-undefined.tentative.html
-external/wpt/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/window-open-popup-during-pageshow.html
-external/wpt/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-parent-then-fragment.html
-external/wpt/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-traversal-stop.html
-external/wpt/html/browsers/browsing-the-web/read-media/pageload-image-in-popup.html
-external/wpt/html/browsers/browsing-the-web/scroll-to-fragid/scroll-position-vertical-lr.html
-external/wpt/html/browsers/browsing-the-web/unloading-documents/004.html
-external/wpt/html/browsers/browsing-the-web/unloading-documents/prompt/004.html
-external/wpt/html/browsers/browsing-the-web/unloading-documents/unload/004.html
-external/wpt/html/browsers/history/joint-session-history/joint-session-history-child2.html
-external/wpt/html/browsers/history/the-history-interface/history_go_undefined-1.html
-external/wpt/html/browsers/history/the-history-interface/joint_session_history/002-1.html
-external/wpt/html/browsers/history/the-history-interface/non-automated/traverse_the_history_unload_prompt_2-1.html
-external/wpt/html/browsers/history/the-location-interface/location-valueof.html
-external/wpt/html/browsers/history/the-session-history-of-browsing-contexts/navigation-in-onload.html
-external/wpt/html/browsers/origin/cross-origin-objects/cross-origin-objects-function-caching.html
-external/wpt/html/browsers/origin/inheritance/about-blank-window.html
-external/wpt/html/browsers/origin/origin-keyed-agent-clusters/1-iframe/parent-yes-child-no-subdomain.sub.https.html
-external/wpt/html/browsers/origin/origin-keyed-agent-clusters/document-domain.sub.https.html
-external/wpt/html/browsers/origin/origin-keyed-agent-clusters/getter-special-cases/sandboxed-same-origin-iframe-yes.https.html
-external/wpt/html/browsers/origin/origin-keyed-agent-clusters/iframe-navigation/parent-no-1-yes-subdomain-2-no-subdomain.sub.https.html
-external/wpt/html/browsers/origin/origin-keyed-agent-clusters/popups/opener-yes-openee-no-port.sub.https.html
-external/wpt/html/browsers/origin/origin-of-data-document.html
-external/wpt/html/browsers/origin/relaxing-the-same-origin-restriction/document_domain_setter_srcdoc.html
-external/wpt/html/browsers/sandboxing/sandbox-navigation-timing-iframe.tentative.html
-external/wpt/html/browsers/the-window-object/accessing-other-browsing-contexts/test3.html
-external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/non_automated/002-1.html
-external/wpt/html/browsers/the-window-object/garbage-collection-and-browsing-contexts/discard_iframe_history_2.html
-external/wpt/html/browsers/the-window-object/named-access-on-the-window-object/prototype.html
-external/wpt/html/browsers/the-window-object/proxy-getOwnPropertyDescriptor.html
-external/wpt/html/browsers/the-window-object/security-window/window-security.https.html
-external/wpt/html/browsers/the-windowproxy-exotic-object/windowproxy-prototype-setting-goes-cross-origin-domain.sub.html
-external/wpt/html/browsers/windows/auxiliary-browsing-contexts/opener-multiple.html
-external/wpt/html/browsers/windows/browsing-context-names/choose-_parent-003.html
-external/wpt/html/browsers/windows/embedded-opener-remove-frame.html
-external/wpt/html/browsers/windows/nested-browsing-contexts/frameElement.sub.html
-external/wpt/html/canvas/element/2d.conformance.requirements.basics.html
-external/wpt/html/canvas/element/compositing/2d.composite.clip.xor.html
-external/wpt/html/canvas/element/conformance-requirements/2d.conformance.requirements.basics.html
-external/wpt/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.negativedest.html
-external/wpt/html/canvas/element/drawing-rectangles-to-the-canvas/2d.clearRect.basic.html
-external/wpt/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.emHeights.html
-external/wpt/html/canvas/element/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.html
-external/wpt/html/canvas/element/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.html
-external/wpt/html/canvas/element/line-styles/2d.line.width.invalid.html
-external/wpt/html/canvas/element/manual/compositing/alpha_filter_shadow.html
-external/wpt/html/canvas/element/manual/context-attributes/drawImage_alpha_false.html
-external/wpt/html/canvas/element/manual/drawing-images-to-the-canvas/drawimage_svg_image_with_foreign_object_does_not_taint.html
-external/wpt/html/canvas/element/manual/drawing-images-to-the-canvas/image-orientation/drawImage-from-bitmap-orientation-none.tentative.html
-external/wpt/html/canvas/element/manual/drawing-paths-to-the-canvas/drawFocusIfNeeded_005.html
-external/wpt/html/canvas/element/manual/filters/canvas-filter-object-convolve-matrix.html
-external/wpt/html/canvas/element/manual/image-smoothing/imagesmoothing.html
-external/wpt/html/canvas/element/manual/imagebitmap/createImageBitmap-drawImage.html
-external/wpt/html/canvas/element/manual/layers/layers-alpha-filter-shadow.html
-external/wpt/html/canvas/element/manual/line-styles/setLineDash.html
-external/wpt/html/canvas/element/manual/shadows/shadowBlur_gaussian_tolerance.1.html
-external/wpt/html/canvas/element/manual/the-canvas-state/2d.zero.size.canvas.html
-external/wpt/html/canvas/element/manual/wide-gamut-canvas/canvas-createImageBitmap-e_srgb.html
-external/wpt/html/canvas/element/path-objects/2d.path.arc.angle.2.html
-external/wpt/html/canvas/element/pixel-manipulation/2d.imageData.get.range.html
-external/wpt/html/canvas/element/reset/2d.reset.basic.html
-external/wpt/html/canvas/element/scroll/2d.scrollPathIntoView.basic.html
-external/wpt/html/canvas/element/shadows/2d.shadow.image.scale.html
-external/wpt/html/canvas/element/text-styles/2d.text.draw.space.collapse.end.html
-external/wpt/html/canvas/element/the-canvas-state/2d.state.saverestore.strokeStyle.html
-external/wpt/html/canvas/element/transformations/2d.transformation.scale.nonfinite.html
-external/wpt/html/canvas/element/video/2d.video.invalid.html
-external/wpt/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.fillText.html
-external/wpt/html/canvas/offscreen/2d.conformance.requirements.basics.html
-external/wpt/html/canvas/offscreen/compositing/2d.composite.clip.xor.html
-external/wpt/html/canvas/offscreen/conformance-requirements/2d.conformance.requirements.basics.html
-external/wpt/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedest.html
-external/wpt/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.clearRect.basic.html
-external/wpt/html/canvas/offscreen/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.html
-external/wpt/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.discrete.html
-external/wpt/html/canvas/offscreen/line-styles/2d.line.width.invalid.html
-external/wpt/html/canvas/offscreen/manual/convert-to-blob/offscreencanvas.convert.to.blob.w.html
-external/wpt/html/canvas/offscreen/manual/draw-generic-family/2d.text.draw.generic.family.w.html
-external/wpt/html/canvas/offscreen/manual/filter/offscreencanvas.filter.w.html
-external/wpt/html/canvas/offscreen/manual/image-smoothing/image.smoothing.html
-external/wpt/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.transfer.lowlatency.nocrash.html
-external/wpt/html/canvas/offscreen/manual/wide-gamut-canvas/2d.color.space.p3.convertToBlobp3.canvas.html
-external/wpt/html/canvas/offscreen/path-objects/2d.path.arc.angle.2.html
-external/wpt/html/canvas/offscreen/pixel-manipulation/2d.imageData.get.range.html
-external/wpt/html/canvas/offscreen/shadows/2d.shadow.image.scale.html
-external/wpt/html/canvas/offscreen/text/2d.text.measure.emHeights.html
-external/wpt/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.strokeStyle.html
-external/wpt/html/canvas/offscreen/the-offscreen-canvas/2d.getcontext.extraargs.create.html
-external/wpt/html/canvas/offscreen/transformations/2d.transformation.scale.nonfinite.html
-external/wpt/html/canvas/offscreen/wide-gamut-canvas/2d.color.space.p3.to.srgb.html
-external/wpt/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-interface.html
-external/wpt/html/dom/documents/dom-tree-accessors/document.head-02.html
-external/wpt/html/dom/documents/resource-metadata-management/document-readyState.html
-external/wpt/html/dom/elements/elements-in-the-dom/unknown-element.html
-external/wpt/html/dom/elements/global-attributes/dir_auto-input-script-N-L.html
-external/wpt/html/dom/elements/name-content-attribute-and-property.html
-external/wpt/html/dom/elements/requirements-relating-to-bidirectional-algorithm-formatting-characters/dir-isolation-005b.html
-external/wpt/html/dom/reflection-text.html
-external/wpt/html/editing/activation/click_checkbox.html
-external/wpt/html/editing/dnd/crashers/dialog-001.html
-external/wpt/html/editing/dnd/cross-document/003.html
-external/wpt/html/editing/dnd/datastore/053.html
-external/wpt/html/editing/dnd/dom/specials.html
-external/wpt/html/editing/dnd/draggable-areas/outline.html
-external/wpt/html/editing/dnd/drop/028.html
-external/wpt/html/editing/dnd/dropzone/008.html
-external/wpt/html/editing/dnd/events/032.html
-external/wpt/html/editing/dnd/file/004.html
-external/wpt/html/editing/dnd/file/prompt/004.html
-external/wpt/html/editing/dnd/interactive/plugins.html
-external/wpt/html/editing/dnd/interactiveelements/004.html
-external/wpt/html/editing/dnd/microdata/004.html
-external/wpt/html/editing/dnd/overlay/heavy-styling-003.html
-external/wpt/html/editing/dnd/platform/alttab.html
-external/wpt/html/editing/dnd/platform/cursors/004.html
-external/wpt/html/editing/dnd/platform/interrupt/004.html
-external/wpt/html/editing/dnd/platform/modifiers/link.html
-external/wpt/html/editing/dnd/remove/022.html
-external/wpt/html/editing/dnd/selection/147.html
-external/wpt/html/editing/dnd/synthetic/001.html
-external/wpt/html/editing/dnd/target-origin/110-1.html
-external/wpt/html/editing/dnd/the-draggable-attribute/draggable_attribute.html
-external/wpt/html/editing/dnd/the-dropzone-attribute/dropzone_attribute.html
-external/wpt/html/editing/editing-0/autocapitalization/autocapitalize.html
-external/wpt/html/editing/editing-0/contenteditable/contenteditable-with-empty-block.html
-external/wpt/html/editing/editing-0/making-entire-documents-editable-the-designmode-idl-attribute/user-interaction-editing-designMode.html
-external/wpt/html/editing/editing-0/spelling-and-grammar-checking/spelling-markers-001.html
-external/wpt/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-event.html
-external/wpt/html/editing/the-hidden-attribute/hidden-1e.html
-external/wpt/html/infrastructure/common-dom-interfaces/collections/radionodelist.html
-external/wpt/html/infrastructure/common-microsyntaxes/colours/parsing-legacy-colour-value-ascii-case-insensitive.html
-external/wpt/html/infrastructure/safe-passing-of-structured-data/structuredclone_0.html
-external/wpt/html/infrastructure/urls/dynamic-changes-to-base-urls/dynamic-urls.sub.html
-external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/utf-8.html
-external/wpt/html/infrastructure/urls/terminology-0/multiple-base.sub.html
-external/wpt/html/interaction/focus/focus-input-type-switch.html
-external/wpt/html/interaction/focus/focus-management/focus-event-targets-simple.html
-external/wpt/html/interaction/focus/processing-model/legend.html
-external/wpt/html/interaction/focus/sequential-focus-navigation-and-the-tabindex-attribute/tabindex-getter-frame.html
-external/wpt/html/interaction/focus/the-autofocus-attribute/same-origin-autofocus.html
-external/wpt/html/links/icon/no-error-event.sub.html
-external/wpt/html/links/manifest/link-relationship/link-rel-manifest.html
-external/wpt/html/obsolete/requirements-for-implementations/other-elements-attributes-and-apis/heading-obsolete-attributes-01.html
-external/wpt/html/obsolete/requirements-for-implementations/the-marquee-element-0/crashtests/marquee-with-table.html
-external/wpt/html/obsolete/requirements-for-implementations/the-marquee-element-0/marquee-loop.html
-external/wpt/html/rendering/bindings/the-input-element-as-a-text-entry-widget/unrecognized-type-should-fallback-as-text-type.html
-external/wpt/html/rendering/bindings/the-textarea-element-0/rows-default.html
-external/wpt/html/rendering/non-replaced-elements/flow-content-0/dialog-display.html
-external/wpt/html/rendering/non-replaced-elements/form-controls/input-line-height.html
-external/wpt/html/rendering/non-replaced-elements/hidden-elements.html
-external/wpt/html/rendering/non-replaced-elements/lists/ol-start-reversed-display-contents.html
-external/wpt/html/rendering/non-replaced-elements/margin-collapsing-quirks/multicol-quirks-mode.html
-external/wpt/html/rendering/non-replaced-elements/phrasing-content-0/font-element-text-decoration-color/font-face.html
-external/wpt/html/rendering/non-replaced-elements/tables/table-row-pagination-001-print.html
-external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-margin-inline.html
-external/wpt/html/rendering/non-replaced-elements/the-frameset-and-frame-elements/large-rows-abssize.html
-external/wpt/html/rendering/non-replaced-elements/the-hr-element-0/setting-overflow-visible.html
-external/wpt/html/rendering/non-replaced-elements/the-page/body-margin-1h.html
-external/wpt/html/rendering/non-replaced-elements/the-page/crashtests/body-huge-attr-value-crash.html
-external/wpt/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/input-align-right-1.html
-external/wpt/html/rendering/replaced-elements/embedded-content-rendering-rules/audio-controls-002.html
-external/wpt/html/rendering/replaced-elements/embedded-content/video-controls-vertical-writing-mode.html
-external/wpt/html/rendering/replaced-elements/images/revoked-blob-print.html
-external/wpt/html/rendering/replaced-elements/svg-embedded-sizing/svg-in-img-auto.html
-external/wpt/html/rendering/replaced-elements/svg-inline-sizing/svg-inline.html
-external/wpt/html/rendering/replaced-elements/the-option-element/option-with-br.html
-external/wpt/html/rendering/replaced-elements/the-select-element/select-1-block-size.html
-external/wpt/html/rendering/the-css-user-agent-style-sheet-and-presentational-hints/body-bgcolor-attribute-change.html
-external/wpt/html/rendering/the-details-element/details-page-break-after-1-print.html
-external/wpt/html/rendering/widgets/button-layout/computed-style.html
-external/wpt/html/rendering/widgets/input-time-content-size.html
-external/wpt/html/rendering/widgets/the-select-element/select-size-002.html
-external/wpt/html/semantics/disabled-elements/disabledElement.html
-external/wpt/html/semantics/document-metadata/interactions-of-styling-and-scripting/style-element-media-match-block-script.html
-external/wpt/html/semantics/document-metadata/the-base-element/base_href_empty.html
-external/wpt/html/semantics/document-metadata/the-link-element/link-style-error-01.html
-external/wpt/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-remove.html
-external/wpt/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-1.html
-external/wpt/html/semantics/document-metadata/the-meta-element/pragma-directives/http-equiv-enumerated-ascii-case-insensitive.html
-external/wpt/html/semantics/document-metadata/the-meta-element/the-lang-attribute-012.html
-external/wpt/html/semantics/document-metadata/the-style-element/style_load_event.html
-external/wpt/html/semantics/document-metadata/the-title-element/title.text-01.html
-external/wpt/html/semantics/edits/the-del-element/del_effect.html
-external/wpt/html/semantics/edits/the-ins-element/ins_effect.html
-external/wpt/html/semantics/embedded-content/media-elements/error-codes/error.html
-external/wpt/html/semantics/embedded-content/media-elements/interfaces/HTMLElement/HTMLMediaElement/addTextTrack.html
-external/wpt/html/semantics/embedded-content/media-elements/interfaces/HTMLElement/HTMLTrackElement/default.html
-external/wpt/html/semantics/embedded-content/media-elements/interfaces/TextTrack/addCue.html
-external/wpt/html/semantics/embedded-content/media-elements/interfaces/TextTrackCue/id.html
-external/wpt/html/semantics/embedded-content/media-elements/interfaces/TextTrackCueList/getCueById.html
-external/wpt/html/semantics/embedded-content/media-elements/interfaces/TextTrackList/getTrackById.html
-external/wpt/html/semantics/embedded-content/media-elements/interfaces/TrackEvent/constructor.html
-external/wpt/html/semantics/embedded-content/media-elements/loading-the-media-resource/resource-selection-invoke-in-sync-event.html
-external/wpt/html/semantics/embedded-content/media-elements/offsets-into-the-media-resource/currentTime.html
-external/wpt/html/semantics/embedded-content/media-elements/playing-the-media-resource/playbackRate.html
-external/wpt/html/semantics/embedded-content/media-elements/ready-states/autoplay-with-slow-text-tracks.html
-external/wpt/html/semantics/embedded-content/media-elements/seeking/seek-to-currentTime.html
-external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-node-add-remove.html
-external/wpt/html/semantics/embedded-content/media-elements/volume_nonfinite.html
-external/wpt/html/semantics/embedded-content/the-area-element/area-download-click.html
-external/wpt/html/semantics/embedded-content/the-audio-element/audio-play-in-inactive-document-crash.html
-external/wpt/html/semantics/embedded-content/the-canvas-element/2d.getcontext.invalid.args.html
-external/wpt/html/semantics/embedded-content/the-embed-element/embed-network-error.sub.html
-external/wpt/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html
-external/wpt/html/semantics/embedded-content/the-img-element/current-pixel-density/basic.html
-external/wpt/html/semantics/embedded-content/the-img-element/decode/image-decode-path-changes-svg.tentative.html
-external/wpt/html/semantics/embedded-content/the-img-element/environment-changes/iframed.sub.html
-external/wpt/html/semantics/embedded-content/the-img-element/ismap/img-ismap-coordinates-iframe-inside.html
-external/wpt/html/semantics/embedded-content/the-img-element/null-image-source.html
-external/wpt/html/semantics/embedded-content/the-img-element/sizes/implicit-sizes-ignores-width.html
-external/wpt/html/semantics/embedded-content/the-img-element/srcset/parse-a-srcset-attribute.html
-external/wpt/html/semantics/embedded-content/the-img-element/update-the-image-data/fail-to-resolve.html
-external/wpt/html/semantics/embedded-content/the-video-element/video-poster-shown-preload-auto.html
-external/wpt/html/semantics/forms/attributes-common-to-form-controls/disabled-elements-01.html
-external/wpt/html/semantics/forms/constraints/form-validation-validity-valid.html
-external/wpt/html/semantics/forms/form-control-infrastructure/form_owner_and_table_3.html
-external/wpt/html/semantics/forms/form-submission-target/form-target-iframe.html
-external/wpt/html/semantics/forms/historical-search-event.html
-external/wpt/html/semantics/forms/resetting-a-form/reset-event.html
-external/wpt/html/semantics/forms/textfieldselection/selection-start-end.html
-external/wpt/html/semantics/forms/the-button-element/button-type.html
-external/wpt/html/semantics/forms/the-datalist-element/remove-datalist-crash.html
-external/wpt/html/semantics/forms/the-fieldset-element/fieldset-validationmessage.html
-external/wpt/html/semantics/forms/the-form-element/form-length.html
-external/wpt/html/semantics/forms/the-input-element/invalid-datalist-options-crash.html
-external/wpt/html/semantics/forms/the-label-element/clicking-interactive-content.html
-external/wpt/html/semantics/forms/the-legend-element/HTMLLegendElement.html
-external/wpt/html/semantics/forms/the-meter-element/meter-min-rendering.html
-external/wpt/html/semantics/forms/the-option-element/option-text-backslash.html
-external/wpt/html/semantics/forms/the-output-element/output-setcustomvalidity.html
-external/wpt/html/semantics/forms/the-progress-element/progress.html
-external/wpt/html/semantics/forms/the-select-element/select-add.html
-external/wpt/html/semantics/forms/the-selectmenu-element/selectmenu-events.tentative.html
-external/wpt/html/semantics/forms/the-textarea-element/wrap-enumerated-ascii-case-insensitive.html
-external/wpt/html/semantics/grouping-content/the-dd-element/grouping-dd.html
-external/wpt/html/semantics/grouping-content/the-div-element/grouping-div.html
-external/wpt/html/semantics/grouping-content/the-dt-element/grouping-dt.html
-external/wpt/html/semantics/grouping-content/the-hr-element/grouping-hr.html
-external/wpt/html/semantics/grouping-content/the-li-element/grouping-li-reftest-005.html
-external/wpt/html/semantics/grouping-content/the-ol-element/reversed-1e.html
-external/wpt/html/semantics/grouping-content/the-p-element/grouping-p.html
-external/wpt/html/semantics/grouping-content/the-pre-element/pre-newline-bidi.html
-external/wpt/html/semantics/interactive-elements/the-details-element/auto-expand-window-find-crash.html
-external/wpt/html/semantics/interactive-elements/the-dialog-element/dialogs-with-no-backdrop.html
-external/wpt/html/semantics/interactive-elements/the-popup-element/popup-stacking-context-ref.tentative.html
-external/wpt/html/semantics/interactive-elements/the-summary-element/anchor-with-inline-element.html
-external/wpt/html/semantics/links/links-created-by-a-and-area-elements/target_blank_implicit_noopener_base.html
-external/wpt/html/semantics/links/linktypes/alternate-css.html
-external/wpt/html/semantics/links/linktypes/link-type-stylesheet/process-stylesheet-linked-resource-ascii-case-insensitive.html
-external/wpt/html/semantics/popups/popup-attribute-basic.tentative.html
-external/wpt/html/semantics/scripting-1/the-noscript-element/non-html-noscript.html
-external/wpt/html/semantics/scripting-1/the-script-element/css-module/integrity.html
-external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/086.html
-external/wpt/html/semantics/scripting-1/the-script-element/execution-timing/pages/helloworld-postMessage.html
-external/wpt/html/semantics/scripting-1/the-script-element/fetch-src/alpha/base.html
-external/wpt/html/semantics/scripting-1/the-script-element/fetch-src/empty-with-base.html
-external/wpt/html/semantics/scripting-1/the-script-element/import-assertions/empty-assertion-clause.html
-external/wpt/html/semantics/scripting-1/the-script-element/json-module/valid-content-type.html
-external/wpt/html/semantics/scripting-1/the-script-element/load-error-events-2.html
-external/wpt/html/semantics/scripting-1/the-script-element/microtasks/checkpoint-after-workerglobalscope-onerror.html
-external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/alpha/base-url.sub.html
-external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/code-cache-nonce.html
-external/wpt/html/semantics/scripting-1/the-script-element/module/single-evaluation-1.html
-external/wpt/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-createHTMLDocument-success-empty-src-module.html
-external/wpt/html/semantics/scripting-1/the-template-element/additions-to-parsing-xhtml-documents/node-document.html
-external/wpt/html/semantics/scripting-1/the-template-element/additions-to-the-css-user-agent-style-sheet/css-user-agent-style-sheet-test-001.html
-external/wpt/html/semantics/scripting-1/the-template-element/definitions/template-contents-owner-test-002.html
-external/wpt/html/semantics/scripting-1/the-template-element/template-element/template-descendant-body.html
-external/wpt/html/semantics/scripting-1/the-template-element/template-table-crash.html
-external/wpt/html/semantics/selectors/pseudo-classes/indeterminate-radio.html
-external/wpt/html/semantics/tabular-data/processing-model-1/col-span-limits.html
-external/wpt/html/semantics/tabular-data/the-caption-element/caption_001.html
-external/wpt/html/semantics/tabular-data/the-table-element/insertRow-method-02.html
-external/wpt/html/semantics/tabular-data/the-tbody-element/deleteRow.html
-external/wpt/html/semantics/tabular-data/the-tfoot-element/rows.html
-external/wpt/html/semantics/tabular-data/the-thead-element/rows.html
-external/wpt/html/semantics/tabular-data/the-tr-element/cells.html
-external/wpt/html/semantics/text-level-semantics/the-a-element/a.text-getter-01.html
-external/wpt/html/semantics/text-level-semantics/the-b-element/b-usage.html
-external/wpt/html/semantics/text-level-semantics/the-bdi-element/bdi-neutral-separate.html
-external/wpt/html/semantics/text-level-semantics/the-bdo-element/bidi-001.html
-external/wpt/html/semantics/text-level-semantics/the-br-element/br-bidi.html
-external/wpt/html/semantics/text-level-semantics/the-ruby-element/rt-without-ruby-crash.html
-external/wpt/html/semantics/text-level-semantics/the-time-element/001.html
-external/wpt/html/syntax/charset/after-head-in-1kb.html
-external/wpt/html/syntax/parsing-html-fragments/the-input-byte-stream-030.html
-external/wpt/html/syntax/parsing/html5lib_adoption02.html
-external/wpt/html/syntax/parsing/template/additions-to-foster-parenting/template-is-a-foster-parent-element.html
-external/wpt/html/syntax/parsing/template/additions-to-the-in-body-insertion-mode/generating-of-implied-end-tags.html
-external/wpt/html/syntax/parsing/template/additions-to-the-in-head-insertion-mode/generating-of-implied-end-tags.html
-external/wpt/html/syntax/parsing/template/additions-to-the-in-table-insertion-mode/end-tag-table.html
-external/wpt/html/syntax/parsing/template/clearing-the-stack-back-to-a-given-context/clearing-stack-back-to-a-table-context.html
-external/wpt/html/syntax/parsing/template/creating-an-element-for-the-token/template-owner-document.html
-external/wpt/html/syntax/serializing-html-fragments/serializing.html
-external/wpt/html/syntax/serializing-xml-fragments/outerHTML.html
-external/wpt/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-crossorigin.tentative.sub.html
-external/wpt/html/syntax/speculative-parsing/generated/page-load/script-src-integrity.tentative.html
-external/wpt/html/the-xhtml-syntax/parsing-xhtml-documents/adopt-while-parsing-001.html
-external/wpt/html/user-activation/activation-trigger-mouse-right.html
-external/wpt/idle-detection/idle-detection-allowed-by-feature-policy-attribute.https.sub.html
-external/wpt/imagebitmap-renderingcontext/context-preserves-canvas.html
-external/wpt/import-maps/acquiring/worker-request.html
-external/wpt/import-maps/csp/unsafe-inline.html
-external/wpt/import-maps/data-driven/parsing-internal.https.html
-external/wpt/import-maps/multiple-import-maps/basic.html
-external/wpt/inert/inert-iframe-hittest.html
-external/wpt/infrastructure/assumptions/document-fonts-ready.html
-external/wpt/infrastructure/channels/child_script.html
-external/wpt/infrastructure/crashtests/example.html
-external/wpt/infrastructure/expected-fail/unhandled-rejection-single-test.html
-external/wpt/infrastructure/reftest-wait.html
-external/wpt/infrastructure/reftest/legacy/reftest_cycle.html
-external/wpt/infrastructure/reftest/reftest.www.sub.html
-external/wpt/infrastructure/server/wpt-server-http.sub.html
-external/wpt/infrastructure/testdriver/bless.html
-external/wpt/intersection-observer/nested-cross-origin-iframe.sub.html
-external/wpt/intersection-observer/v2/position-relative.html
-external/wpt/is-input-pending/security/cross-origin-subframe-pointer-events-none.sub.html
-external/wpt/keyboard-lock/navigator-keyboard-lock-two-parallel-requests.https.html
-external/wpt/keyboard-map/navigator-keyboard-map.https.html
-external/wpt/largest-contentful-paint/animated/observe-non-animated-image.tentative.html
-external/wpt/largest-contentful-paint/observe-svg-background-image.html
-external/wpt/layout-instability/transform-above-filter-dynamic.html
-external/wpt/lifecycle/freeze.html
-external/wpt/loading/preloader-css-import-no-semicolon.tentative.html
-external/wpt/longtask-timing/longtask-in-childiframe.html
-external/wpt/longtask-timing/shared-renderer/longtask-in-new-window.html
-external/wpt/magnetometer/Magnetometer-enabled-by-feature-policy-attribute-redirect-on-load.https.html
-external/wpt/mathml/crashtests/mathml-in-svg-001.html
-external/wpt/mathml/presentation-markup/direction/direction-007.html
-external/wpt/mathml/presentation-markup/mpadded/mpadded-003.html
-external/wpt/mathml/presentation-markup/mrow/stretch-along-block-axis-001.html
-external/wpt/mathml/presentation-markup/operators/operator-dictionary-movablelimits-005.html
-external/wpt/mathml/presentation-markup/radicals/dynamic-radical-paint-invalidation-001.html
-external/wpt/mathml/presentation-markup/scripts/underover-parameters-3.html
-external/wpt/mathml/presentation-markup/spaces/space-like-002.html
-external/wpt/mathml/presentation-markup/tables/table-002.html
-external/wpt/mathml/presentation-markup/tokens/ms-001.html
-external/wpt/mathml/relations/css-styling/dynamic-dir-1.html
-external/wpt/mathml/relations/css-styling/padding-border-margin/margin-002.html
-external/wpt/mathml/relations/css-styling/writing-mode/writing-mode-002.html
-external/wpt/mathml/relations/html5-tree/unique-identifier-1-iframe-2.html
-external/wpt/mathml/relations/text-and-math/use-typo-metrics-1.html
-external/wpt/media-capabilities/decodingInfoEncryptedMedia.https.html
-external/wpt/media-source/dedicated-worker/mediasource-worker-play.html
-external/wpt/media-source/mediasource-endofstream-invaliderror.html
-external/wpt/media-source/mse-for-webcodecs/tentative/mediasource-webcodecs-appendencodedchunks-play.html
-external/wpt/mediacapture-fromelement/HTMLCanvasElement-getImageData-noframe.html
-external/wpt/mediacapture-image/MediaStreamTrack-getCapabilities-fast.html
-external/wpt/mediacapture-insertable-streams/MediaStreamTrackGenerator-in-service-worker.https.html
-external/wpt/mediacapture-record/passthrough/MediaRecorder-passthrough.https.html
-external/wpt/mediacapture-region/CropTarget-fromElement.https.html
-external/wpt/mediacapture-streams/MediaStream-clone.https.html
-external/wpt/mediacapture-streams/crashtests/enumerateDevices-after-discard-1.https.html
-external/wpt/mediasession/helper/artwork-generator.html
-external/wpt/mediasession/setmicrophoneactive.html
-external/wpt/merchant-validation/constructor.tentative.http.html
-external/wpt/mixed-content/blob.https.sub.html
-external/wpt/navigation-api/currententrychange-event/navigate-from-initial-about-blank-same-doc.html
-external/wpt/navigation-api/focus-reset/basic.html
-external/wpt/navigation-api/navigate-event/navigate-history-back-after-fragment.html
-external/wpt/navigation-api/navigation-history-entry/entries-after-navigations-in-multiple-windows.html
-external/wpt/navigation-api/navigation-methods/return-value/navigate-preventDefault.html
-external/wpt/navigation-api/navigation-methods/traverseTo-after-adding-iframe.html
-external/wpt/navigation-api/ordering-and-transition/transition-cross-document.html
-external/wpt/navigation-api/per-entry-events/dispose-after-bfcache.html
-external/wpt/navigation-api/scroll-restoration/after-transition-timing.html
-external/wpt/navigation-api/state/same-document-away-and-back-navigation-api.html
-external/wpt/navigation-api/updateCurrentEntry-method/basic.html
-external/wpt/navigation-timing/test_performance_attributes.sub.html
-external/wpt/orientation-event/device-orientation-events-of-detached-documents.https.html
-external/wpt/orientation-event/motion/create-event.https.html
-external/wpt/orientation-event/orientation/t012-manual.https.html
-external/wpt/orientation-sensor/RelativeOrientationSensor-enabled-on-self-origin-by-feature-policy.https.html
-external/wpt/page-lifecycle/idlharness.html
-external/wpt/page-visibility/minimize.html
-external/wpt/paint-timing/fcp-only/fcp-video-frame.html
-external/wpt/paint-timing/replaced-content-image.html
-external/wpt/paint-timing/with-first-paint/basetest.html
-external/wpt/payment-handler/payment-app/payment.html
-external/wpt/payment-handler/payment-request-event-manual.https.html
-external/wpt/payment-method-id/payment-request-ctor-pmi-handling.https.sub.html
-external/wpt/payment-request/PaymentMethodChangeEvent/methodName-attribute.https.html
-external/wpt/payment-request/PaymentRequestUpdateEvent/constructor.http.html
-external/wpt/payment-request/constructor_convert_method_data.https.html
-external/wpt/performance-timeline/not-clonable.html
-external/wpt/permissions-policy/experimental-features/vertical-scroll-disabled-frame-no-scroll-manual.tentative.html
-external/wpt/permissions-policy/permissions-policy-nested-header-policy-disallowed-for-all.https.sub.html
-external/wpt/permissions-policy/reporting/geolocation-report-only.https.html
-external/wpt/permissions/all-permissions.html
-external/wpt/picture-in-picture/picture-in-picture-window.html
-external/wpt/pointerevents/compat/pointerevent_mouse-pointer-on-scrollbar.html
-external/wpt/pointerevents/parsing/touch-action-valid.html
-external/wpt/pointerevents/pointerevent_suppress_compat_events_on_drag_mouse.html
-external/wpt/pointerevents/pointerlock/pointerevent_pointermove_in_pointerlock.html
-external/wpt/pointerlock/movementX_Y_basic.html
-external/wpt/preload/link-header-preload-nonce.html
-external/wpt/priority-hints/link-attr.tentative.html
-external/wpt/push-api/permission.https.html
-external/wpt/quirks/body-fills-html-quirk-inline.html
-external/wpt/quirks/crashtests/list-item-whole-line-quirks-crash.html
-external/wpt/quirks/hashless-hex-color/quirks.html
-external/wpt/quirks/historical/vertical-align-in-quirks.html
-external/wpt/quirks/text-decoration-doesnt-propagate-into-tables/standards.html
-external/wpt/quirks/unitless-length/excluded-properties-001.html
-external/wpt/reporting/same-origin-report-credentials.https.sub.html
-external/wpt/resize-observer/scrollbars-2.html
-external/wpt/resource-timing/object-not-found-after-TAO-cross-origin-redirect.html
-external/wpt/sanitizer-api/element-set-sanitized-html.https.tentative.html
-external/wpt/scheduler/post-task-with-signal-from-detached-iframe.html
-external/wpt/scroll-animations/css/progress-based-animation-timeline.html
-external/wpt/scroll-animations/scroll-timelines/setting-playback-rate.html
-external/wpt/scroll-to-text-fragment/iframe-scroll.sub.html
-external/wpt/secure-contexts/shared-worker-insecure-first.https.html
-external/wpt/secure-payment-confirmation/authentication-cross-origin.sub.https.html
-external/wpt/selection/addRange-40.html
-external/wpt/selection/anonymous/details-ancestor.html
-external/wpt/selection/bidi/modify.tentative.html
-external/wpt/selection/caret/collapse-pre-linestart-2.html
-external/wpt/selection/contenteditable/initial-selection-on-focus.tentative.html
-external/wpt/selection/crashtests/table.html
-external/wpt/shadow-dom/declarative/declarative-shadow-dom-opt-in.tentative.html
-external/wpt/shadow-dom/focus/focus-tabindex-order-shadow-slot-one.html
-external/wpt/shadow-dom/input-element-list.html
-external/wpt/shadow-dom/leaktests/get-elements.html
-external/wpt/shadow-dom/untriaged/elements-and-dom-objects/extensions-to-element-interface/attributes/test-006.html
-external/wpt/shadow-dom/untriaged/elements-and-dom-objects/extensions-to-element-interface/methods/test-002.html
-external/wpt/shadow-dom/untriaged/elements-and-dom-objects/shadowroot-object/shadowroot-attributes/test-012.html
-external/wpt/shadow-dom/untriaged/elements-and-dom-objects/shadowroot-object/shadowroot-methods/test-004.html
-external/wpt/shadow-dom/untriaged/events/event-dispatch/test-002.html
-external/wpt/shadow-dom/untriaged/events/event-retargeting/test-003.html
-external/wpt/shadow-dom/untriaged/events/retargeting-focus-events/test-002.html
-external/wpt/shadow-dom/untriaged/events/retargeting-relatedtarget/test-002.html
-external/wpt/shadow-dom/untriaged/events/test-001.html
-external/wpt/shadow-dom/untriaged/html-elements-in-shadow-trees/html-forms/test-002.html
-external/wpt/shadow-dom/untriaged/html-elements-in-shadow-trees/inert-html-elements/test-002.html
-external/wpt/shadow-dom/untriaged/shadow-trees/nested-shadow-trees/nested_tree_reftest.html
-external/wpt/shadow-dom/untriaged/shadow-trees/reprojection/reprojection-001.html
-external/wpt/shadow-dom/untriaged/shadow-trees/shadow-root-001.html
-external/wpt/shadow-dom/untriaged/shadow-trees/upper-boundary-encapsulation/shadow-root-001.html
-external/wpt/shadow-dom/untriaged/styles/test-008.html
-external/wpt/shadow-dom/untriaged/user-interaction/active-element/test-002.html
-external/wpt/shadow-dom/untriaged/user-interaction/editing/inheritance-of-content-editable-001.html
-external/wpt/shadow-dom/untriaged/user-interaction/ranges-and-selections/test-002.html
-external/wpt/shape-detection/detection-ImageBitmap.https.html
-external/wpt/storage/persist-permission-manual.https.html
-external/wpt/streams/readable-streams/crashtests/strategy-worker-terminate.html
-external/wpt/streams/transferable/service-worker.https.html
-external/wpt/subapps/add-error.tentative.https.html
-external/wpt/subresource-integrity/subresource-integrity.html
-external/wpt/svg/animations/scripted/SVGAnimationElement-getStartTime.html
-external/wpt/svg/animations/svgenum-animation-7.html
-external/wpt/svg/coordinate-systems/viewBox-scaling-text-001.html
-external/wpt/svg/crashtests/firefox-bug-1688293.html
-external/wpt/svg/extensibility/foreignObject/filter-repaint.html
-external/wpt/svg/geometry/svg-baseval-in-display-none.html
-external/wpt/svg/layout/svg-use-symbol-width-print.html
-external/wpt/svg/linking/reftests/href-feImage-element.html
-external/wpt/svg/linking/scripted/href-script-element-markup.html
-external/wpt/svg/painting/marker-with-mask-cycle-crash.html
-external/wpt/svg/painting/reftests/display-none-mask.html
-external/wpt/svg/painting/svg-with-outline.html
-external/wpt/svg/path/property/test_style_flush_on_dom_api_with_d_property.html
-external/wpt/svg/print/svg-use-page-break-crash-print.html
-external/wpt/svg/pservers/pattern-with-invalid-base-cloned-thcrash.html
-external/wpt/svg/render/foreignObject-in-non-rendered-getComputedStyle.html
-external/wpt/svg/render/reftests/render-sync-with-font-size.html
-external/wpt/svg/scripted/script-style-attribute-csp.html
-external/wpt/svg/struct/reftests/use-external-resource-with-revalidation.tentative.html
-external/wpt/svg/struct/use-getComputedStyle.html
-external/wpt/svg/styling/css-selectors-case-sensitivity.html
-external/wpt/svg/text/reftests/text-display-contents-crash.html
-external/wpt/svg/text/scripted/lengthadjust.html
-external/wpt/svg/types/scripted/SVGAnimatedLengthList.html
-external/wpt/touch-events/touch-globaleventhandler-interface.html
-external/wpt/trusted-types/block-string-assignment-to-Element-setAttribute.tentative.html
-external/wpt/url/a-element.html
-external/wpt/user-timing/measure-exceptions.html
-external/wpt/vibration/api-is-present.html
-external/wpt/video-rvfc/request-video-frame-callback-repeating.html
-external/wpt/virtual-keyboard/virtual-keyboard-policy.html
-external/wpt/visual-viewport/viewport-segments.tentative.html
-external/wpt/web-animations/animation-model/animation-types/accumulation-per-property-001.html
-external/wpt/web-animations/animation-model/combining-effects/applying-the-composited-result.html
-external/wpt/web-animations/animation-model/keyframe-effects/computed-keyframes-shorthands.html
-external/wpt/web-animations/crashtests/reparent-animating-element-001.html
-external/wpt/web-animations/interfaces/Animatable/animate-no-browsing-context.html
-external/wpt/web-animations/interfaces/Animation/pause.html
-external/wpt/web-animations/interfaces/AnimationEffect/getComputedTiming.html
-external/wpt/web-animations/interfaces/AnimationPlaybackEvent/constructor.html
-external/wpt/web-animations/interfaces/Document/timeline.html
-external/wpt/web-animations/interfaces/DocumentOrShadowRoot/getAnimations.html
-external/wpt/web-animations/interfaces/DocumentTimeline/constructor.html
-external/wpt/web-animations/interfaces/KeyframeEffect/copy-constructor.html
-external/wpt/web-animations/responsive/offset-path.html
-external/wpt/web-animations/timing-model/animation-effects/simple-iteration-progress.html
-external/wpt/web-animations/timing-model/animations/update-playback-rate-fast.html
-external/wpt/web-animations/timing-model/time-transformations/transformed-progress.html
-external/wpt/web-animations/timing-model/timelines/update-and-send-events-replacement.html
-external/wpt/web-bundle/subresource-loading/script-static-element.https.tentative.sub.html
-external/wpt/web-locks/bfcache/held.tentative.https.html
-external/wpt/web-locks/crashtests/iframe-append.https.html
-external/wpt/web-locks/partitioned-web-locks.tentative.https.html
-external/wpt/web-nfc/NDEFReader_write.https.html
-external/wpt/webcodecs/videoFrame-canvasImageSource.html
-external/wpt/webidl/ecmascript-binding/es-exceptions/exceptions.html
-external/wpt/webidl/ecmascript-binding/legacy-platform-object/OwnPropertyKeys.html
-external/wpt/webidl/ecmascript-binding/window-named-properties-object.html
-external/wpt/webtransport/in-removed-iframe.https.html
-external/wpt/webvtt/api/VTTCue/size.html
-external/wpt/webvtt/api/VTTRegion/id.html
-external/wpt/webvtt/parsing/cue-text-parsing/tests/text.html
-external/wpt/webvtt/parsing/file-parsing/signature-invalid.html
-external/wpt/webvtt/parsing/file-parsing/tests/timings-negative.html
-external/wpt/webvtt/rendering/cues-with-video/processing-model/regions/basic.html
-external/wpt/webxr/anchors/ar_anchor_freefloating_failure.https.html
-external/wpt/webxr/ar-module/xrDevice_isSessionSupported_immersive-ar.https.html
-external/wpt/webxr/depth-sensing/cpu/depth_sensing_cpu_staleView.https.html
-external/wpt/webxr/depth-sensing/depth_sensing_notEnabled.https.html
-external/wpt/webxr/dom-overlay/ar_dom_overlay.https.html
-external/wpt/webxr/gamepads-module/xrInputSource_gamepad_input_registered.https.html
-external/wpt/webxr/hit-test/xrRay_matrix.https.html
-external/wpt/webxr/layers/xrWebGLBinding_constructor.https.html
-external/wpt/webxr/light-estimation/xrSession_getLightProbe_ended.https.html
-external/wpt/webxr/xrSession_sameObject.https.html
-external/wpt/window-placement/multi-screen-window-open-manual.tentative.https.html
-external/wpt/x-frame-options/get-decode-split.html
-external/wpt/xhr/formdata/get-formelement.html
-external/wpt/xhr/overridemimetype-blob.html
-fast/backgrounds/background-attachment-fixed-on-abs-pos.html
-fast/backgrounds/background-cover-rounding.html
-fast/backgrounds/background-opaque-clipped-gradients.html
-fast/backgrounds/background-origin-root-element.html
-fast/backgrounds/root-background-fixed-attachment-positioning.html
-fast/block/basic/001.html
-fast/block/float/float-in-float-painting.html
-fast/block/float/floats-offset-image-strict.html
-fast/block/float/logical-bottom-exceeds-layoutunit-max.html
-fast/block/margin-collapse/001.html
-fast/block/margin-collapse/030.html
-fast/block/margin-collapse/031.html
-fast/block/margin-collapse/038.html
-fast/block/margin-collapse/block-inside-inline/006.html
-fast/block/positioning/001.html
-fast/block/positioning/002.html
-fast/block/positioning/offsetLeft-offsetTop-multicolumn.html
-fast/body-propagation/background-color/001.html
-fast/body-propagation/background-image/009.html
-fast/body-propagation/overflow/001.html
-fast/borders/bidi-002.html
-fast/borders/border-image-outset.html
-fast/borders/border-image-width-rounding.html
-fast/borders/border-radius-mask-canvas-with-mask.html
-fast/borders/border-radius-mask-canvas.html
-fast/borders/border-radius-with-composited-child.html
-fast/borders/border-width-below-1.html
-fast/box-shadow/box-shadow.html
-fast/box-shadow/image-box-shadow.html
-fast/box-sizing/box-sizing.html
-fast/css-generated-content/001.html
-fast/css-grid-layout/grid-item-grid-container-percentage-rows.html
-fast/css/001.html
-fast/css/color-correction.html
-fast/css/font-face-character-fallback.html
-fast/css/font-face-default-font.html
-fast/css/font-face-in-media-rule.html
-fast/css/logical-box-border-color-visited-link-001.html
-fast/css/logical-box-border-color-visited-link-002.html
-fast/css/logical-box-border-color-visited-link-003.html
-fast/css/margin-collapse-top-margin-clearance-with-sibling.html
-fast/css/object-fit-embed.html
-fast/css/object-fit-img.html
-fast/css/object-fit-input-image.html
-fast/css/object-fit-object.html
-fast/css/object-fit-shrink.html
-fast/css/object-fit-video-poster.html
-fast/css/object-position-with-fit-contain.html
-fast/css/object-position-with-fit-cover.html
-fast/css/object-position-with-fit-none.html
-fast/css/sticky/inline-sticky-abspos-child.html
-fast/css/sticky/sticky-normal-scroller.html
-fast/css/sticky/sticky-overflow-hidden.html
-fast/css/table-rules-attribute-none-with-cell-borders.html
-fast/css/vertical-align-baseline-rowspan-008.htm
-fast/css/zoom-background-repeat-x.html
-fast/css/zoom-background-repeat-y.html
-fast/deprecated-flexbox/009-horizontal.html
-fast/deprecated-flexbox/009.html
-fast/events/pointer-events-2.html
-fast/events/wheel/wheelevent-in-scrolling-div.html
-fast/forms/001.html
-fast/forms/accent-color/accent-color-contrast-dark.html
-fast/forms/button/button-align.html
-fast/forms/calendar-picker/calendar-picker-appearance.html
-fast/forms/checkbox/checkbox-appearance-basic.html
-fast/forms/color-scheme/button/button-appearance-basic.html
-fast/forms/color-scheme/color/color-picker-appearance.html
-fast/forms/color-scheme/color/color-suggestion-picker-appearance-with-scrollbar.html
-fast/forms/color-scheme/date/date-appearance-basic.html
-fast/forms/color-scheme/media/video-overlay-menu.html
-fast/forms/color-scheme/media/video-overlay-play-button.html
-fast/forms/color-scheme/month/month-appearance-basic.html
-fast/forms/color/color-picker-top-left-selection-position-after-reopen.html
-fast/forms/color/input-appearance-color.html
-fast/forms/datalist/input-appearance-range-with-datalist.html
-fast/forms/date/date-appearance-basic.html
-fast/forms/date/date-appearance-l10n.html
-fast/forms/date/date-with-csp.html
-fast/forms/datetimelocal/datetimelocal-appearance-basic.html
-fast/forms/fieldset/fieldset-align.html
-fast/forms/file/file-appearance-basic.html
-fast/forms/focus-rect/textarea-with-scrollbar.html
-fast/forms/form-element-geometry.html
-fast/forms/image/input-align-image.html
-fast/forms/month/month-picker-appearance-step.html
-fast/forms/number/number-appearance-datalist.html
-fast/forms/number/number-appearance-rtl.html
-fast/forms/password/password-alt-f8.html
-fast/forms/radio/radio-appearance-basic.html
-fast/forms/range/input-appearance-range.html
-fast/forms/search/search-rtl.html
-fast/forms/select-popup/popup-menu-appearance-coarse.html
-fast/forms/select-popup/popup-menu-move-after-open.html
-fast/forms/select/basic-selects.html
-fast/forms/suggestion-picker/date-suggestion-picker-mouse-operations.html
-fast/forms/suggestion-picker/datetimelocal-suggestion-picker-mouse-operations.html
-fast/forms/suggestion-picker/month-suggestion-picker-appearance-rtl.html
-fast/forms/suggestion-picker/month-suggestion-picker-mouse-operations.html
-fast/forms/suggestion-picker/time-suggestion-picker-mouse-operations.html
-fast/forms/suggestion-picker/week-suggestion-picker-mouse-operations.html
-fast/forms/text/input-baseline.html
-fast/forms/text/text-appearance-datalist.html
-fast/forms/textarea/basic-textareas-quirks.html
-fast/forms/textarea/textarea-align.html
-fast/forms/textarea/textarea-scrolled-type.html
-fast/forms/time/time-appearance-basic.html
-fast/forms/week/week-appearance-basic.html
-fast/gradients/large-vertical-gradient.html
-fast/media/mq-pixel-ratio.html
-fast/media/mq-resolution-pagezoom.html
-fast/overflow/002.html
-fast/overflow/006.html
-fast/overflow/overflow-clamp-after-transform-related-content-size-change.html
-fast/overflow/scrollbar-drag-origin.html
-fast/overflow/unreachable-overflow-rtl-bug.html
-fast/replaced/replaced-child-of-absolute-with-auto-height.html
-fast/shapes/shape-outside-floats/shape-outside-boxes-002.html
-fast/shapes/shape-outside-floats/shape-outside-linear-gradient.html
-fast/sub-pixel/clip-rect-box-consistent-rounding.html
-fast/sub-pixel/iframe-overflow-due-to-snapping.html
-fast/sub-pixel/input-caret-on-subpixel-bound.html
-fast/sub-pixel/save-layer-bounds-should-snap.html
-fast/sub-pixel/size-of-box-with-zoom.html
-fast/sub-pixel/sub-pixel-accumulates-to-layers.html
-fast/sub-pixel/sub-pixel-border-2.html
-fast/sub-pixel/sub-pixel-border-overflow.html
-fast/sub-pixel/sub-pixel-composited-layer-with-transform.html
-fast/sub-pixel/sub-pixel-root-layer.html
-fast/sub-pixel/sub-pixel-transparency-layer.html
-fast/sub-pixel/sub-pixel-will-change-transform.html
-fast/sub-pixel/transformed-iframe-copy-on-scroll.html
-fast/table/inline-table-in-inline-block-last-baseline-align.html
-fast/table/percent-widths-stretch-vertical.html
-fast/table/percent-widths-stretch.html
-fast/table/tbody-background-image-fills-tbody.html
-fast/table/tbody-background-image-repeat-y.html
-fast/text-autosizing/*
-fast/writing-mode/english-lr-text.html
-fonts/default.html
-fragmentation/multi-line-cells.html
-fragmentation/nested-repeating-thead-3.html
-fragmentation/outline-crossing-columns.html
-fragmentation/repeating-thead-multiple-tables.html
-fragmentation/single-cells-multiple-tables-no-repeating-thead.html
-fragmentation/single-large-cell-with-header.html
-fragmentation/single-line-cells-multiple-tables-caption-repeating-thead-tfoot-with-border-spacing-at-top-of-row-2.html
-fragmentation/single-line-cells-multiple-tables-caption-repeating-thead-tfoot-with-border-spacing-at-top-of-row-3.html
-fragmentation/single-line-cells-multiple-tables-caption-repeating-thead-tfoot-with-border-spacing-at-top-of-row-4.html
-fragmentation/single-line-cells-multiple-tables-caption-repeating-thead-tfoot-with-border-spacing-at-top-of-row.html
-fragmentation/single-line-cells-paginated-with-text.html
-fragmentation/single-line-cells-paginated.html
-fragmentation/single-line-cells-repeating-thead-cell-straddles-page-unsplittable-div.html
-fragmentation/single-line-cells-repeating-thead-cell-straddles-page.html
-fragmentation/single-line-cells-repeating-thead-starts-middle-of-page-break-after-avoid-2.html
-fragmentation/single-line-cells-repeating-thead-starts-middle-of-page-break-after-avoid-3.html
-fragmentation/single-line-cells-repeating-thead-tfoot-starts-middle-of-page-break-after-avoid-2.html
-fragmentation/single-line-cells-repeating-thead-tfoot-starts-middle-of-page-break-after-avoid-3.html
-fragmentation/single-line-cells-repeating-thead-tfoot-starts-middle-of-page-break-after-avoid.html
-fragmentation/single-line-cells-repeating-thead-tfoot-starts-middle-of-page.html
-fragmentation/single-line-cells-repeating-thead-tfoot-with-border-spacing-at-top-of-row.html
-fragmentation/single-line-cells-repeating-thead-tfoot-with-caption.html
-fragmentation/single-line-cells-repeating-thead-tfoot-with-two-captions.html
-fragmentation/single-line-cells-repeating-thead-tfoot.html
-fragmentation/single-line-cells-repeating-thead-with-caption.html
-fragmentation/single-line-cells-repeating-thead-with-two-captions.html
-fragmentation/table-row-page-break-collapsed-border.html
-fullscreen/video-controls-timeline.html
-html/details_summary/details-add-summary.html
-html/document_metadata/head-has-text-1.html
-html/grouping_content/listing.html
-html/tabular_data/table_createcaption.html
-html/text_level_semantics/font-weight-bold-for-b-and-strong.html
-http/tests/css/css-resources-referrer.html
-http/tests/csspaint/border-color.html
-http/tests/csspaint/entire-canvas-visible-zoom.html
-http/tests/csspaint/geometry-background-image-zoom.html
-http/tests/csspaint/geometry-border-image-zoom.html
-http/tests/csspaint/invalidation-background-image.html
-http/tests/csspaint/invalidation-border-image.html
-http/tests/csspaint/invalidation-content-image.html
-http/tests/csspaint/line-dash-scale-with-page-zoom.html
-http/tests/csspaint/paint2d-zoom.html
-http/tests/csspaint/shadow-scale-with-page-zoom.html
-http/tests/csspaint/transform-with-page-zoom-002.html
-http/tests/csspaint/transform-with-page-zoom-003.html
-http/tests/document-policy/document-policy-in-xsl.php
-http/tests/document-policy/document-policy-report-only-in-xsl.php
-http/tests/images/document-policy-oversized-images-forced-layout.php
-http/tests/images/document-policy-oversized-images-resize.php
-http/tests/images/document-policy-oversized-images-responsive-image.php
-http/tests/images/document-policy-oversized-images-styles.php
-http/tests/images/jpeg-partial-load.html
-http/tests/images/png-animated-partial-load.html
-http/tests/images/png-partial-load-as-document.html
-http/tests/inspector-protocol/page/page-captureScreenshot-clip.js
-http/tests/media/video-buffered-range-contains-currentTime.html
-http/tests/misc/destroy-middle-click-locked-target-crash.html
-http/tests/text-autosizing/narrow-iframe.html
-http/tests/text-autosizing/wide-iframe.html
-http/tests/webfont/popup-menu-load-webfont-after-open.html
-ietestcenter/css3/bordersbackgrounds/background-color-border-box.htm
-ietestcenter/css3/flexbox/flexbox-align-baseline-001.htm
-ietestcenter/css3/flexbox/flexbox-align-center-001.htm
-ietestcenter/css3/flexbox/flexbox-align-center-002.htm
-ietestcenter/css3/text/textshadow-001.htm
-images/color-profile-animate.html
-images/cross-fade-blending.html
-images/directly-composited-image-orientation.html
-images/drag-image.html
-images/jpeg-with-color-profile.html
-images/jxl/jxl-images.html
-images/png-suite/test.html
-images/png-with-color-profile.html
-images/yuv-decode-eligible/color-profile-border-radius.html
-inspector-protocol/dom-snapshot/dom-snapshot-captureSnapshot-details.js
-inspector-protocol/dom/dom-scrollIntoViewIfNeeded.js
-inspector-protocol/emulation/device-emulation-desktop.js
-inspector-protocol/layers/paint-profiler.js
-inspector-protocol/layout-fonts/languages-emoji-rare-glyphs.js
-inspector-protocol/overlay/overlay-viewport.js
-inspector-protocol/page/get-layout-metrics.js
-overflow/overflow-transform-perspective.html
-paint/background/fieldset-legend-background-shadow-border-radius.html
-paint/caret/multicol_block_children.html
-paint/clipath/clip-path-with-background-and-box-behind.html
-paint/filters/clip-under-filter.html
-paint/float/float-under-inline-self-painting-change.html
-paint/frames/frameset-with-stacking-contexts.html
-paint/inline/outline-offset.html
-paint/invalidation/background/background-scaling.html
-paint/invalidation/background/obscured-background-no-repaint.html
-paint/invalidation/background/viewport-gradient-background-html-resize-overflow.html
-paint/invalidation/box/border-radius-repaint-2.html
-paint/invalidation/canvas-resize.html
-paint/invalidation/caret-composited-scrolled.html
-paint/invalidation/caret-scrolled.html
-paint/invalidation/clip/background-clip-text.html
-paint/invalidation/compositing/become-composited-zero-offset.html
-paint/invalidation/compositing/composited-layer-contents-move-in-subpixels.html
-paint/invalidation/compositing/composited-layer-move-in-subpixels-contents.html
-paint/invalidation/compositing/composited-layers-move-in-subpixels.html
-paint/invalidation/compositing/layer-repaint.html
-paint/invalidation/compositing/repaint-squashed-layer-in-rect.html
-paint/invalidation/compositing/subpixel-offset-scaled-will-change-transform.html
-paint/invalidation/css-grid-layout/grid-element-change-columns-repaint.html
-paint/invalidation/filters/effect-reference-repaint-composite-1.html
-paint/invalidation/flexbox/repaint-during-resize-no-flex.html
-paint/invalidation/forms/checkbox-focus-by-mouse-then-keydown.html
-paint/invalidation/forms/textarea-caret.html
-paint/invalidation/image/image-resize.html
-paint/invalidation/multicol/column-rules-fixed-height.html
-paint/invalidation/outline/focus-layers.html
-paint/invalidation/overflow/composited-overflow-with-borderbox-background.html
-paint/invalidation/position/absolute-position-changed.html
-paint/invalidation/position/fixed-scale.html
-paint/invalidation/position/relayout-fixed-position-after-scale.html
-paint/invalidation/reflection/reflection-with-rotation.html
-paint/invalidation/scroll/destroy-composited-scrollbar.html
-paint/invalidation/scroll/scrollbar-damage-and-full-viewport-repaint.html
-paint/invalidation/selection/selection-within-composited-scroller.html
-paint/invalidation/svg/absolute-sized-content-with-resources.xhtml
-paint/invalidation/svg/animate-path-morphing.svg
-paint/invalidation/svg/js-late-mask-and-object-creation.svg
-paint/invalidation/svg/js-late-mask-creation.svg
-paint/invalidation/svg/mask-child-changes.svg
-paint/invalidation/svg/non-scaling-stroke-change-container-transform.html
-paint/invalidation/table/collapsed-border-cell-change-width-composited-row.html
-paint/invalidation/table/collapsed-border-cell-change-width-composited-section.html
-paint/invalidation/table/composited-table-background-section-composited-row-initial-empty.html
-paint/invalidation/table/composited-table-background-section-composited-row.html
-paint/invalidation/table/composited-table-background.html
-paint/invalidation/table/scroll-relative-table-inside-table-cell.html
-paint/invalidation/transform/caret-with-transformation.html
-paint/invalidation/transform/change-transform.html
-paint/invalidation/transform/subpixel-offset-scaled-transform.html
-paint/invalidation/window-resize/window-resize-background-image-fixed-centered-composited.html
-paint/invalidation/window-resize/window-resize-background-image-fixed-centered.html
-paint/invalidation/window-resize/window-resize-background-image-fixed-generated.html
-paint/invalidation/window-resize/window-resize-background-image-fixed-scrolling-contents.html
-paint/invalidation/window-resize/window-resize-background-image-non-fixed.html
-paint/invalidation/window-resize/window-resize-centered-inline-under-fixed-pos.html
-paint/invalidation/window-resize/window-resize-child-background-image-fixed-centered.html
-paint/invalidation/window-resize/window-resize-child-background-image-fixed-tiled.html
-paint/invalidation/window-resize/window-resize-frameset.html
-paint/invalidation/window-resize/window-resize-no-layout-change1.html
-paint/invalidation/window-resize/window-resize-no-layout-change2.html
-paint/invalidation/window-resize/window-resize-percent-html.html
-paint/invalidation/window-resize/window-resize-percent-width-height.html
-paint/invalidation/window-resize/window-resize-positioned-bottom.html
-paint/invalidation/window-resize/window-resize-positioned-percent-top.html
-paint/invalidation/window-resize/window-resize-vertical-writing-mode.html
-paint/invalidation/window-resize/window-resize-viewport-percent.html
-paint/markers/composition-marker-basic.html
-paint/masks/fieldset-mask.html
-paint/overflow/composited-rounded-clip-floating-element.html
-paint/printing/print-text-shadow.html
-paint/roundedrects/input-with-rounded-rect-and-shadow.html
-paint/selection/text-selection-drag-in-frame-scrolled.html
-paint/subpixel/subpixel-accumulation-with-fixedpos.html
-paint/subpixel/subpixel-accumulation-with-layer.html
-paint/subpixel/subpixel-composited-iframe.html
-paint/subpixel/transform-inside-clip.html
-paint/tables/collapsed-border-layered-table-and-cells.html
-paint/tables/composited-collapsed-table-borders.html
-paint/text/selection-no-clip-text.html
-paint/theme/adjust-progress-bar-size.html
-paint/transforms/percentage-transform-fractional-box-size.html
-paint/transforms/subpixel-scale-align.html
-printing/block-width-relayout-shrink.html
-printing/css2.1/page-break-inside-000.html
-printing/fixed-positioned-headers-and-footers.html
-printing/multicol-2-pages.html
-printing/thead-repeats-with-translucent-text-and-borders.html
-printing/vertical-lr.html
-printing/vertical-rl.html
-printing/width-overflow.html
-svg/W3C-I18N/text-anchor-dirLTR-anchorMiddle.svg
-svg/W3C-I18N/text-anchor-dirRTL-anchorMiddle.svg
-svg/W3C-SVG-1.1-SE/filters-image-03-f.svg
-svg/W3C-SVG-1.1/animate-elem-03-t.svg
-svg/W3C-SVG-1.1/masking-intro-01-f.svg
-svg/W3C-SVG-1.1/masking-mask-01-b.svg
-svg/W3C-SVG-1.2-Tiny/struct-use-recursion-01-t.svg
-svg/animations/animateMotion-accumulate-1a.svg
-svg/animations/mozilla/animateMotion-indefinite-to-1.svg
-svg/animations/mozilla/animateMotion-indefinite-to-2.svg
-svg/animations/no-attr-lineargradient-spreadmethod.svg
-svg/as-background-image/animated-svg-as-background.html
-svg/as-background-image/svg-as-background-6.html
-svg/as-border-image/svg-as-border-image.html
-svg/as-image/default-font-settings-external.html
-svg/as-image/default-font-size.html
-svg/as-image/default-monospace-font.html
-svg/as-image/default-sans-serif-font.html
-svg/as-image/svg-as-relative-image.html
-svg/as-object/svg-embedded-in-html-in-iframe.html
-svg/batik/masking/maskRegions.svg
-svg/batik/paints/patternRegions.svg
-svg/batik/text/textEffect.svg
-svg/canvas/canvas-pattern-svg.html
-svg/canvas/image-svg-intrinsic-size.html
-svg/carto.net/selectionlist.svg
-svg/clip-path/clip-path-clipped-shape.html
-svg/clip-path/clip-path-on-svg.svg
-svg/clip-path/clip-path-shape-circle-2.svg
-svg/clip-path/clip-path-shape-ellipse-2.svg
-svg/clip-path/clip-path-shape-polygon-1.svg
-svg/clip-path/clip-path-shape-polygon-2.svg
-svg/clip-path/clip-path-shape-polygon-3.svg
-svg/clip-path/clipper-placement-issue.svg
-svg/css/background-image-svg.html
-svg/css/background-non-integer-viewbox.html
-svg/css/max-width-2.html
-svg/custom/SVGRect-interface.svg
-svg/custom/anchor-on-use.svg
-svg/custom/focus-ring-2.svg
-svg/custom/grayscale-gradient-mask-2.svg
-svg/custom/grayscale-gradient-mask.svg
-svg/custom/mask-changes.svg
-svg/custom/mask-colorspace.svg
-svg/custom/rgba-color-outline.svg
-svg/custom/svg-root-padding-border-margin.html
-svg/dom/css-transforms.xhtml
-svg/dom/filter-reference-in-shadow-tree.html
-svg/dynamic-updates/SVGFilterElement-dom-filterUnits-attr.html
-svg/filters/color-space-conversion.svg
-svg/filters/feComposite-operator-lighter.svg
-svg/filters/feDisplacementMap-filterUnits.svg
-svg/filters/feGaussianBlur.svg
-svg/filters/feOffset-nonuniform-scale.svg
-svg/filters/filter-clip.svg
-svg/foreignObject/filter.html
-svg/foreignObject/repaint-rect-coordinates.html
-svg/foreignObject/transformed-text-invalidation.html
-svg/hittest/text-small-font-size-and-viewbox.html
-svg/hixie/dynamic/002.xml
-svg/hixie/error/001.xml
-svg/hixie/links/001.xml
-svg/hixie/mixed/003.xml
-svg/hixie/rendering-model/001.xml
-svg/hixie/viewbox/001.xml
-svg/in-html/circle.html
-svg/markers/marker-orientation-02.svg
-svg/overflow/overflow-on-foreignObject.svg
-svg/stroke/non-scaling-stroke-gradient-text.html
-svg/stroke/non-scaling-stroke-paintserver-same-as-fill.html
-svg/stroke/non-scaling-stroke-text-decoration-dashed.html
-svg/stroke/non-scaling-stroke-text-decoration.html
-svg/stroke/non-scaling-stroke-text.html
-svg/stroke/stroke-width-ch-type.svg
-svg/stroke/zero-length-arc-linecaps-rendering.svg
-svg/text/bbox-with-glyph-overflow.html
-svg/text/text-decorations-in-scaled-pattern.svg
-svg/text/text-outline-2.html
-svg/text/text-outline-rgba.html
-svg/text/textpath-outline.svg
-svg/text/textpath-pattern.svg
-svg/text/tspan-multiple-outline.svg
-svg/transforms/change-transform-origin-css.xhtml
-svg/transforms/change-transform-origin-presentation-attribute.xhtml
-svg/transforms/text-with-mask-with-svg-transform.svg
-svg/transforms/text-with-pattern-inside-transformed-html.xhtml
-svg/transforms/transform-origin-css-property.xhtml
-svg/wicd/test-scalable-background-image1.xhtml
-svg/wicd/test-scalable-background-image2.xhtml
-svg/zoom/page/zoom-background-images.html
-svg/zoom/page/zoom-mask-with-percentages.svg
-svg/zoom/text/zoom-svg-float-border-padding.xml
-tables/layering/paint-test-layering-1.html
-tables/mozilla/bugs/bug12384.html
-tables/mozilla/bugs/bug12910-2.html
-tables/mozilla/bugs/bug157890.html
-tables/mozilla/bugs/bug2886-2.html
-tables/mozilla/bugs/bug29058-1.html
-tables/mozilla/bugs/bug4427.html
-tables/mozilla/bugs/bug4527.html
-transforms/2d/transform-borderbox.html
-transforms/3d/general/perspective-units.html
-transforms/3d/hit-testing/backface-hit-test.html
-transforms/3d/point-mapping/3d-point-mapping-3.html
-transforms/3d/point-mapping/3d-point-mapping-preserve-3d.html
-transforms/3d/point-mapping/3d-point-mapping.html
-transforms/combine-transforms-properties-transform.html
-transforms/perspective-fixed-pos-descendant.html
-transforms/svg-vs-css.xhtml
-transforms/transform-on-inline.html
-transforms/transformed-document-element.html
-virtual/android/fullscreen/video-controls-timeline.html
-virtual/compositor-threaded-percent-based-scrolling/fast/events/wheel/continuous-platform-wheelevent-in-scrolling-div.html
-virtual/compositor_threaded_scrollbar_scrolling/paint/invalidation/scroll/sticky/invalidate-after-composited-scroll-with-sticky.html
-virtual/document-transition-wide-gamut/wpt_internal/document-transition/content-visibility-auto-shared-element.html
-virtual/document-transition-wide-gamut/wpt_internal/document-transition/content-with-clip-max-texture-size.html
-virtual/document-transition-wide-gamut/wpt_internal/document-transition/new-content-with-overflow-zoomed.html
-virtual/document-transition-wide-gamut/wpt_internal/document-transition/old-content-with-overflow-zoomed.html
-virtual/document-transition/wpt_internal/document-transition/*
-virtual/fenced-frame-mparch/wpt_internal/fenced_frame/nested-opaque-ad-sizes.https.html
-virtual/fenced-frame-mparch/wpt_internal/fenced_frame/opaque-ad-sizes.https.html
-virtual/fenced-frame-shadow-dom/wpt_internal/fenced_frame/nested-opaque-ad-sizes.https.html
-virtual/fenced-frame-shadow-dom/wpt_internal/fenced_frame/opaque-ad-sizes.https.html
-virtual/forced-high-contrast-colors/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-03.html
-virtual/forced-high-contrast-colors/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-10.html
-virtual/forced-high-contrast-colors/fast/css/forced-colors-mode/backplate/forced-colors-mode-backplate-11.html
-virtual/forced-high-contrast-colors/fast/css/forced-colors-mode/forced-colors-mode-04.html
-virtual/forced-high-contrast-colors/fast/css/forced-colors-mode/forced-colors-mode-32.html
-virtual/forced-high-contrast-colors/html/details_summary/color-scheme-validation/details-with-summary-open.html
-virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/color-profile-image.html
-virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/color-profile-layer.html
-virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/jpeg-missing-eoi.html
-virtual/gpu-rasterization-disable-yuv/images/yuv-decode-eligible/webp-color-profile-lossy.html
-virtual/jxl-enabled/images/jxl/jxl-images.html
-virtual/main-threaded-percent-based-scrolling/fast/events/wheel/continuous-platform-wheelevent-in-scrolling-div.html
-virtual/no-forced-frame-updates/external/wpt/html/dom/render-blocking/parser-inserted-preload-link.tentative.html
-virtual/off-main-thread-css-paint/http/tests/csspaint/border-color.html
-virtual/off-main-thread-css-paint/http/tests/csspaint/entire-canvas-visible-zoom.html
-virtual/off-main-thread-css-paint/http/tests/csspaint/geometry-background-image-zoom.html
-virtual/off-main-thread-css-paint/http/tests/csspaint/geometry-border-image-zoom.html
-virtual/off-main-thread-css-paint/http/tests/csspaint/invalidation-background-image.html
-virtual/off-main-thread-css-paint/http/tests/csspaint/invalidation-border-image.html
-virtual/off-main-thread-css-paint/http/tests/csspaint/invalidation-content-image.html
-virtual/off-main-thread-css-paint/http/tests/csspaint/line-dash-scale-with-page-zoom.html
-virtual/off-main-thread-css-paint/http/tests/csspaint/paint2d-zoom.html
-virtual/off-main-thread-css-paint/http/tests/csspaint/shadow-scale-with-page-zoom.html
-virtual/off-main-thread-css-paint/http/tests/csspaint/transform-with-page-zoom-002.html
-virtual/off-main-thread-css-paint/http/tests/csspaint/transform-with-page-zoom-003.html
-virtual/stable/compositing/filters/sw-layer-overlaps-hw-shadow.html
-virtual/stable/compositing/filters/sw-nested-shadow-overlaps-hw-nested-shadow.html
-virtual/stable/inspector-protocol/dom-snapshot/captureSnapshot-ua-shadow-tree3.js
-virtual/stable/inspector-protocol/dom-snapshot/dom-snapshot-captureSnapshot-details.js
-virtual/stable/media/stable/video-object-fit-stable.html
-virtual/text-antialias/align-center-rtl-spill.html
-virtual/text-antialias/apply-start-width-after-skipped-text.html
-virtual/text-antialias/basic/001.html
-virtual/text-antialias/basic/002.html
-virtual/text-antialias/bidi-embedding-pop-and-push-same.html
-virtual/text-antialias/complex-text-opacity.html
-virtual/text-antialias/ellipsis-ltr-text-in-ltr-flow-underline.html
-virtual/text-antialias/ellipsis-mixed-text-in-ltr-flow-underline.html
-virtual/text-antialias/ellipsis-mixed-text-in-rtl-flow-underline.html
-virtual/text-antialias/ellipsis-stroked.html
-virtual/text-antialias/ellipsis-with-self-painting-layer.html
-virtual/text-antialias/firstline/001.html
-virtual/text-antialias/firstline/002.html
-virtual/text-antialias/font-features/caps-casemapping.html
-virtual/text-antialias/incorrect-fixed-pitch-font.html
-virtual/text-antialias/international/bidi-layout-across-linebreak.html
-virtual/text-antialias/international/bidi-linebreak-001.html
-virtual/text-antialias/international/unicode-bidi-plaintext-in-textarea.html
-virtual/text-antialias/selection/atsui-partial-selection.html
-virtual/text-antialias/selection/flexbox-selection-nested.html
-virtual/text-antialias/selection/selection-multiple-runs.html
-virtual/text-antialias/selection/selection-painted-separately.html
-virtual/text-antialias/selection/selection-painting-hidpi.html
-virtual/text-antialias/shaping/same-script-different-lang.html
-virtual/text-antialias/sub-pixel/text-scaling-rtl.html
-virtual/text-antialias/sub-pixel/text-scaling-vertical.html
-virtual/text-antialias/whitespace/002.html
-virtual/text-antialias/whitespace/004.html
-virtual/text-antialias/whitespace/005.html
-virtual/text-antialias/whitespace/024.html
-virtual/text-antialias/whitespace/025.html
-virtual/text-antialias/whitespace/nowrap-clear-float.html
-virtual/text-antialias/whitespace/pre-newline-box-test.html
-virtual/threaded-composited-iframes/external/wpt/is-input-pending/tentative/same-origin-subframe.sub.html
-virtual/threaded/external/wpt/requestidlecallback/basic.html
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations
index 68568baf..70b226fd 100644
--- a/third_party/blink/web_tests/TestExpectations
+++ b/third_party/blink/web_tests/TestExpectations
@@ -7243,4 +7243,10 @@
 crbug.com/1363138 http/tests/inspector-protocol/cachestorage/read-cached-response.js [ Skip ]
 
 # Investigate the flake
-crbug.com/1371395 virtual/not-restored-reasons/external/wpt/performance-timeline/not-restored-reasons/performance-navigation-timing-same-origin-bfcache.window.html [ Failure Pass ]
\ No newline at end of file
+crbug.com/1371395 virtual/not-restored-reasons/external/wpt/performance-timeline/not-restored-reasons/performance-navigation-timing-same-origin-bfcache.window.html [ Failure Pass ]
+
+crbug.com/1370050 http/tests/devtools/network/network-columns-sorted.js [ Skip ]
+crbug.com/1370050 http/tests/devtools/network/waterfall-header-height-updates.js [ Skip ]
+
+# Sheriff 2022-10-07
+crbug.com/1372556 [ Linux ] external/wpt/css/css-text/text-transform/text-transform-capitalize-* [ Failure Pass ]
diff --git a/third_party/blink/web_tests/dom/element/aria-element-reflection-garbagecollection.html b/third_party/blink/web_tests/dom/element/aria-element-reflection-garbagecollection.html
index 110676c..41bb9e2 100644
--- a/third_party/blink/web_tests/dom/element/aria-element-reflection-garbagecollection.html
+++ b/third_party/blink/web_tests/dom/element/aria-element-reflection-garbagecollection.html
@@ -136,7 +136,7 @@
     // Set describedBy based on the order of my fruit preferences.
     fruitBowl.ariaDescribedByElements = [pear, apple, banana];
     assert_array_equals(fruitBowl.ariaDescribedByElements, [pear, apple, banana]);
-    assert_equals(fruitBowl.getAttribute("aria-describedby"), "pear apple banana");
+    assert_equals(fruitBowl.getAttribute("aria-describedby"), "");
 
     // Someone else comes along and eats the apple.
     apple.remove();
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/README.md b/third_party/blink/web_tests/external/wpt/bluetooth/README.md
index 8d0f063..027b606 100644
--- a/third_party/blink/web_tests/external/wpt/bluetooth/README.md
+++ b/third_party/blink/web_tests/external/wpt/bluetooth/README.md
@@ -95,7 +95,7 @@
 
 [MojoJS]: https://chromium.googlesource.com/chromium/src/+/refs/heads/main/docs/testing/web_platform_tests.md#mojojs
 [Web Bluetooth Service README]:
-https://chromium.googlesource.com/chromium/src.git/+/master/content/browser/bluetooth/README.md
+https://chromium.googlesource.com/chromium/src.git/+/main/content/browser/bluetooth/README.md
 
 # Resources and Documentation
 
diff --git a/third_party/blink/web_tests/external/wpt/common/dispatcher/dispatcher.js b/third_party/blink/web_tests/external/wpt/common/dispatcher/dispatcher.js
index 7c51fa6..4b9b18d 100644
--- a/third_party/blink/web_tests/external/wpt/common/dispatcher/dispatcher.js
+++ b/third_party/blink/web_tests/external/wpt/common/dispatcher/dispatcher.js
@@ -127,6 +127,26 @@
 // This script requires
 // - `/common/utils.js` for `token()`.
 
+// Returns the URL of a document that can be used as a `RemoteContext`.
+//
+// `uuid` should be a UUID uniquely identifying the given remote context.
+// `options` has the following shape:
+//
+// {
+//   host: (optional) Sets the returned URL's `host` property. Useful for
+//     cross-origin executors.
+// }
+function remoteExecutorUrl(uuid, options) {
+  const url = new URL("/common/dispatcher/remote-executor.html", location);
+  url.searchParams.set("uuid", uuid);
+
+  if (options?.host) {
+    url.host = options.host;
+  }
+
+  return url;
+}
+
 // Represents a remote executor. For more detailed explanation see `README.md`.
 class RemoteContext {
   // `uuid` is a UUID string that identifies the remote context and should
diff --git a/third_party/blink/web_tests/external/wpt/content-security-policy/frame-src/frame-src-cross-origin-same-document-navigation.window.js b/third_party/blink/web_tests/external/wpt/content-security-policy/frame-src/frame-src-cross-origin-same-document-navigation.window.js
index a03a310..4c77193 100644
--- a/third_party/blink/web_tests/external/wpt/content-security-policy/frame-src/frame-src-cross-origin-same-document-navigation.window.js
+++ b/third_party/blink/web_tests/external/wpt/content-security-policy/frame-src/frame-src-cross-origin-same-document-navigation.window.js
@@ -12,9 +12,9 @@
   const child_token = token();
   const child = new RemoteContext(child_token);
   const iframe = document.createElement("iframe");
-  iframe.src = get_host_info().REMOTE_ORIGIN +
-      "/content-security-policy/frame-src/support/executor.html" +
-      `?uuid=${child_token}`;
+  iframe.src = remoteExecutorUrl(child_token, {
+    host: get_host_info().REMOTE_HOST
+  });
   document.body.appendChild(iframe);
 
   // Install a promise waiting for a same-document navigation to happen in the
diff --git a/third_party/blink/web_tests/external/wpt/content-security-policy/frame-src/support/executor.html b/third_party/blink/web_tests/external/wpt/content-security-policy/frame-src/support/executor.html
deleted file mode 100644
index 4ab5745..0000000
--- a/third_party/blink/web_tests/external/wpt/content-security-policy/frame-src/support/executor.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<!--
-  TODO(arthursonzogni) Consider deduplicating all these helper files to
-  /common/dispatcher/
--->
-<script src="/common/dispatcher/dispatcher.js"></script>
-<script>
-  const params = new URLSearchParams(window.location.search);
-  const uuid = params.get("uuid");
-  const executor = new Executor(uuid);
-  executor.execute();
-</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-pseudo/chrome-first-letter-inside-replaced-crash.html b/third_party/blink/web_tests/external/wpt/css/css-pseudo/chrome-first-letter-inside-replaced-crash.html
new file mode 100644
index 0000000..cf9e2d71
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-pseudo/chrome-first-letter-inside-replaced-crash.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<title>Chrome issue 1370386</title>
+<link rel="help" href="https://crbug.com/1370386">
+<style>
+  #fl::first-letter {
+    float: right;
+  }
+</style>
+<body>
+  <div id="outer">
+    <div style="display:table-column;float:left">
+      <span id="fl" style="display:inline-block">x</span>
+    </div>
+  </div>
+</body>
+<script>
+  document.body.offsetTop;
+  outer.style.content = "url(data:text/plain,x)";
+  fl.firstChild.remove();
+  document.body.offsetTop;
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/custom-elements/reactions/AriaMixin-element-attributes.html b/third_party/blink/web_tests/external/wpt/custom-elements/reactions/AriaMixin-element-attributes.html
index b8f14273..09e62b2d 100644
--- a/third_party/blink/web_tests/external/wpt/custom-elements/reactions/AriaMixin-element-attributes.html
+++ b/third_party/blink/web_tests/external/wpt/custom-elements/reactions/AriaMixin-element-attributes.html
@@ -16,7 +16,7 @@
 <div id="parentElement"></div>
 <script>
 
-function testElementReflectAttribute(jsAttributeName, contentAttributeName, validValue1, contentValue1, validValue2, contentValue2, name, getParentElement) {
+function testElementReflectAttribute(jsAttributeName, contentAttributeName, validValue1, validValue2, name, getParentElement) {
     test(function () {
         let element = define_new_custom_element([contentAttributeName]);
         let instance = document.createElement(element.name);
@@ -27,7 +27,7 @@
         let logEntries = element.takeLog();
         assert_array_equals(logEntries.types(), ['attributeChanged']);
 
-        assert_attribute_log_entry(logEntries.last(), {name: contentAttributeName, oldValue: null, newValue: contentValue1, namespace: null});
+        assert_attribute_log_entry(logEntries.last(), {name: contentAttributeName, oldValue: null, newValue: "", namespace: null});
     }, name + ' must enqueue an attributeChanged reaction when adding ' + contentAttributeName + ' content attribute');
 
     test(function () {
@@ -39,7 +39,7 @@
         instance[jsAttributeName] = validValue2;
         var logEntries = element.takeLog();
         assert_array_equals(logEntries.types(), ['attributeChanged']);
-        assert_attribute_log_entry(logEntries.last(), {name: contentAttributeName, oldValue: contentValue1, newValue: contentValue2, namespace: null});
+        assert_attribute_log_entry(logEntries.last(), {name: contentAttributeName, oldValue: "", newValue: "", namespace: null});
     }, name + ' must enqueue an attributeChanged reaction when replacing an existing attribute');
 }
 
@@ -51,14 +51,14 @@
 dummy2.id = 'dummy2';
 document.body.appendChild(dummy2);
 
-testElementReflectAttribute('ariaActiveDescendantElement', 'aria-activedescendant', dummy1, 'dummy1', dummy2, 'dummy2', 'ariaActiveDescendantElement in Element');
-testElementReflectAttribute('ariaControlsElements', 'aria-controls', [dummy1], 'dummy1', [dummy2], 'dummy2', 'ariaControlsElements in Element');
-testElementReflectAttribute('ariaDescribedByElements', 'aria-describedby', [dummy1], 'dummy1', [dummy2], 'dummy2', 'ariaDescribedByElements in Element');
-testElementReflectAttribute('ariaDetailsElements', 'aria-details', [dummy1], 'dummy1', [dummy2], 'dummy2', 'ariaDetailsElements in Element');
-testElementReflectAttribute('ariaErrorMessageElement', 'aria-errormessage', dummy1, 'dummy1', dummy2, 'dummy2', 'ariaErrorMessageElement in Element');
-testElementReflectAttribute('ariaFlowToElements', 'aria-flowto', [dummy1], 'dummy1', [dummy2], 'dummy2', 'ariaFlowToElements in Element');
-testElementReflectAttribute('ariaLabelledByElements', 'aria-labelledby', [dummy1], 'dummy1', [dummy2], 'dummy2', 'ariaLabelledByElements in Element')
-testElementReflectAttribute('ariaOwnsElements', 'aria-owns', [dummy1], 'dummy1', [dummy2], 'dummy2', 'ariaOwnsElements in Element')
+testElementReflectAttribute('ariaActiveDescendantElement', 'aria-activedescendant', dummy1, dummy2, 'ariaActiveDescendantElement in Element');
+testElementReflectAttribute('ariaControlsElements', 'aria-controls', [dummy1], [dummy2], 'ariaControlsElements in Element');
+testElementReflectAttribute('ariaDescribedByElements', 'aria-describedby', [dummy1], [dummy2], 'ariaDescribedByElements in Element');
+testElementReflectAttribute('ariaDetailsElements', 'aria-details', [dummy1], [dummy2], 'ariaDetailsElements in Element');
+testElementReflectAttribute('ariaErrorMessageElement', 'aria-errormessage', dummy1, dummy2, 'ariaErrorMessageElement in Element');
+testElementReflectAttribute('ariaFlowToElements', 'aria-flowto', [dummy1], [dummy2], 'ariaFlowToElements in Element');
+testElementReflectAttribute('ariaLabelledByElements', 'aria-labelledby', [dummy1], [dummy2], 'ariaLabelledByElements in Element')
+testElementReflectAttribute('ariaOwnsElements', 'aria-owns', [dummy1], [dummy2], 'ariaOwnsElements in Element')
 
 </script>
 </body>
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/sandboxing/popup-from-initial-empty-sandboxed-document.window.js b/third_party/blink/web_tests/external/wpt/html/browsers/sandboxing/popup-from-initial-empty-sandboxed-document.window.js
index e70a52a..1ae4fad 100644
--- a/third_party/blink/web_tests/external/wpt/html/browsers/sandboxing/popup-from-initial-empty-sandboxed-document.window.js
+++ b/third_party/blink/web_tests/external/wpt/html/browsers/sandboxing/popup-from-initial-empty-sandboxed-document.window.js
@@ -8,9 +8,6 @@
 // popup using the WindowProxy of a new iframe that is still on the initial
 // empty document. Check that the sandbox flags are properly inherited.
 
-const executorUrl = uuid =>
-  (new URL(`./resources/executor.html?uuid=${uuid}`, window.location)).href;
-
 // Return true if the execution context is sandboxed.
 const isSandboxed = () => {
   try {
@@ -26,7 +23,7 @@
   // 1. Create a sandboxed iframe, allowing popups, same-origin and scripts.
   const iframe_token = token();
   const iframe_document = new RemoteContext(iframe_token);
-  const iframe_url = executorUrl(iframe_token);
+  const iframe_url = remoteExecutorUrl(iframe_token);
   const iframe = document.createElement("iframe");
   iframe.sandbox = "allow-same-origin allow-scripts allow-popups";
   iframe.src = iframe_url;
@@ -38,12 +35,12 @@
   //    using it's WindowProxy. The popup must inherit sandbox flags.
   const popup_token = token();
   const popup_document = new RemoteContext(popup_token);
-  const popup_url = executorUrl(popup_token);
+  const popup_url = remoteExecutorUrl(popup_token);
   iframe_document.execute_script((popup_url) => {
     let iframe = document.createElement("iframe");
     iframe.name = "iframe_name";
     document.body.appendChild(iframe);
     iframe_name.open(popup_url);
-  }, [popup_url]);
+  }, [popup_url.href]);
   assert_true(await popup_document.execute_script(isSandboxed), "popup is sandboxed");
 });
diff --git a/third_party/blink/web_tests/external/wpt/html/browsers/sandboxing/resources/executor.html b/third_party/blink/web_tests/external/wpt/html/browsers/sandboxing/resources/executor.html
deleted file mode 100644
index 67b9783..0000000
--- a/third_party/blink/web_tests/external/wpt/html/browsers/sandboxing/resources/executor.html
+++ /dev/null
@@ -1,7 +0,0 @@
-<script src="/common/dispatcher/dispatcher.js"></script>
-<script>
-  const params = new URLSearchParams(window.location.search);
-  const uuid = params.get("uuid");
-  const executor = new Executor(uuid);
-  executor.execute();
-</script>
diff --git a/third_party/blink/web_tests/external/wpt/html/dom/aria-element-reflection-expected.txt b/third_party/blink/web_tests/external/wpt/html/dom/aria-element-reflection-expected.txt
index e5b83c9..8f79e66 100644
--- a/third_party/blink/web_tests/external/wpt/html/dom/aria-element-reflection-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/html/dom/aria-element-reflection-expected.txt
@@ -5,8 +5,8 @@
 PASS Setting an element reference that crosses into a shadow tree is disallowed, but setting one that is in a shadow inclusive ancestor is allowed.
 PASS aria-errormessage
 PASS aria-details
-PASS Deleting a reflected element should return null for the IDL attribute and cause the content attribute to become stale.
-PASS Changing the ID of an element causes the content attribute to become out of sync.
+PASS Deleting a reflected element should return null for the IDL attribute and the content attribute will be empty.
+PASS Changing the ID of an element doesn't lose the reference.
 PASS Reparenting an element into a descendant shadow scope hides the element reference.
 PASS Reparenting referenced element cannot cause retargeting of reference.
 PASS Element reference set in invalid scope remains intact throughout move to valid scope.
diff --git a/third_party/blink/web_tests/external/wpt/html/dom/aria-element-reflection.html b/third_party/blink/web_tests/external/wpt/html/dom/aria-element-reflection.html
index 742c015..991f7c7 100644
--- a/third_party/blink/web_tests/external/wpt/html/dom/aria-element-reflection.html
+++ b/third_party/blink/web_tests/external/wpt/html/dom/aria-element-reflection.html
@@ -31,10 +31,10 @@
     assert_equals(parentListbox.ariaActiveDescendantElement, i2, "setting the content attribute updates the element reference.");
     assert_equals(parentListbox.ariaActiveDescendantElement, parentListbox.ariaActiveDescendantElement, "check idl attribute caching after update.");
 
-    // Setting the element reference should be reflected in the content attribute.
+    // Setting the element reference should set the empty string in the content attribute.
     parentListbox.ariaActiveDescendantElement = i1;
     assert_equals(parentListbox.ariaActiveDescendantElement, i1, "getter should return the right element reference.");
-    assert_equals(parentListbox.getAttribute("aria-activedescendant"), "i1", "content attribute should reflect the element reference.");
+    assert_equals(parentListbox.getAttribute("aria-activedescendant"), "", "content attribute should be empty.");
 
     // Both content and IDL attribute should be nullable.
     parentListbox.ariaActiveDescendantElement = null;
@@ -123,7 +123,8 @@
   <script>
   test(function(t) {
     startTime.ariaErrorMessageElement = errorMessage;
-    assert_equals(startTime.getAttribute("aria-errormessage"), "errorMessage");
+    assert_equals(startTime.getAttribute("aria-errormessage"), "");
+    assert_equals(startTime.ariaErrorMessageElement, errorMessage);
 
     startTime.ariaErrorMessageElement = null;
     assert_equals(startTime.ariaErrorMessageElement, null, "blah");
@@ -151,10 +152,12 @@
   test(function(t) {
     assert_array_equals(passwordField.ariaDetailsElements, []);
     passwordField.ariaDetailsElements = [ listItem1 ];
-    assert_equals(passwordField.getAttribute("aria-details"), "listItem1");
+    assert_equals(passwordField.getAttribute("aria-details"), "");
+    assert_array_equals(passwordField.ariaDetailsElements, [ listItem1 ]);
 
     passwordField.ariaDetailsElements = [ listItem2 ];
-    assert_equals(passwordField.getAttribute("aria-details"), "listItem2");
+    assert_equals(passwordField.getAttribute("aria-details"), "");
+    assert_array_equals(passwordField.ariaDetailsElements, [ listItem2 ]);
   }, "aria-details");
   </script>
 
@@ -182,14 +185,14 @@
 
     // Deleting an element set via the IDL attribute.
     deletionParent.ariaActiveDescendantElement = idlAttrElement;
-    assert_equals(deletionParent.getAttribute("aria-activedescendant"), "idlAttrElement");
+    assert_equals(deletionParent.getAttribute("aria-activedescendant"), "");
 
     deletionParent.removeChild(idlAttrElement);
     assert_equals(deletionParent.ariaActiveDescendantElement, null);
 
-    // The content attribute will still reflect the id.
-    assert_equals(deletionParent.getAttribute("aria-activedescendant"), "idlAttrElement");
-  }, "Deleting a reflected element should return null for the IDL attribute and cause the content attribute to become stale.");
+    // The content attribute is still empty.
+    assert_equals(deletionParent.getAttribute("aria-activedescendant"), "");
+  }, "Deleting a reflected element should return null for the IDL attribute and the content attribute will be empty.");
   </script>
 
   <div id="parentNode" role="listbox" aria-activedescendant="changingIdElement">
@@ -211,15 +214,16 @@
     assert_equals(parentNode.ariaActiveDescendantElement, null, "Element set via content attribute with a changed id will return null on getting");
 
     parentNode.ariaActiveDescendantElement = changingIdElement;
-    assert_equals(parentNode.getAttribute("aria-activedescendant"), "new-id");
+    assert_equals(parentNode.getAttribute("aria-activedescendant"), "");
+    assert_equals(parentNode.ariaActiveDescendantElement, changingIdElement);
 
     // The explicitly set element takes precendance over the content attribute.
     // This means that we still return the same element reference, but the
-    // content attribute reflects the old id.
+    // content attribute is empty.
     changingIdElement.setAttribute("id", "newer-id");
     assert_equals(parentNode.ariaActiveDescendantElement, changingIdElement, "explicitly set element is still present even after the id has been changed");
-    assert_equals(parentNode.getAttribute("aria-activedescendant"), "new-id", "content attribute reflects the id that was present upon explicitly setting the element reference.");
-  }, "Changing the ID of an element causes the content attribute to become out of sync.");
+    assert_equals(parentNode.getAttribute("aria-activedescendant"), "", "content attribute is empty.");
+  }, "Changing the ID of an element doesn't lose the reference.");
   </script>
 
   <!-- TODO(chrishall): change naming scheme to inner/outer -->
@@ -238,7 +242,7 @@
 
     lightParent.ariaActiveDescendantElement = lightElement;
     assert_equals(lightParent.ariaActiveDescendantElement, lightElement);
-    assert_equals(lightParent.getAttribute('aria-activedescendant'), "lightElement");
+    assert_equals(lightParent.getAttribute('aria-activedescendant'), "");
 
     // Move the referenced element into shadow DOM.
     // This will cause the computed attr-associated element to be null as the
@@ -248,7 +252,7 @@
     // then reflect
     shadowRoot.appendChild(lightElement);
     assert_equals(lightParent.ariaActiveDescendantElement, null, "computed attr-assoc element should be null as referenced element is in an invalid scope");
-    assert_equals(lightParent.getAttribute("aria-activedescendant"), "lightElement");
+    assert_equals(lightParent.getAttribute("aria-activedescendant"), "");
 
     // Move the referenced element back into light DOM.
     // Since the underlying reference was kept intact, after moving the
@@ -256,7 +260,7 @@
     // computed attr-associated element.
     lightParent.appendChild(lightElement);
     assert_equals(lightParent.ariaActiveDescendantElement, lightElement, "computed attr-assoc element should be restored as referenced element is back in a valid scope");
-    assert_equals(lightParent.getAttribute("aria-activedescendant"), "lightElement");
+    assert_equals(lightParent.getAttribute("aria-activedescendant"), "");
   }, "Reparenting an element into a descendant shadow scope hides the element reference.");
   </script>
 
@@ -274,13 +278,13 @@
 
     fruitbowl.ariaActiveDescendantElement = apple;
     assert_equals(fruitbowl.ariaActiveDescendantElement, apple);
-    assert_equals(fruitbowl.getAttribute("aria-activedescendant"), "apple");
+    assert_equals(fruitbowl.getAttribute("aria-activedescendant"), "");
 
     // Move the referenced element into shadow DOM.
     shadowRoot.appendChild(apple);
     assert_equals(fruitbowl.ariaActiveDescendantElement, null, "computed attr-assoc element should be null as referenced element is in an invalid scope");
-    // Note that the content attribute is NOT cleared.
-    assert_equals(fruitbowl.getAttribute("aria-activedescendant"), "apple");
+    // The content attribute is still empty.
+    assert_equals(fruitbowl.getAttribute("aria-activedescendant"), "");
 
     // let us rename our banana to an apple
     banana.setAttribute("id", "apple");
@@ -289,12 +293,10 @@
 
     // our ariaActiveDescendantElement thankfully isn't tricked.
     // this is thanks to the underlying reference being kept intact, it is
-    // checked and found to be in an invalid scope and therefore the content
-    // attribute fallback isn't used.
+    // checked and found to be in an invalid scope.
     assert_equals(fruitbowl.ariaActiveDescendantElement, null);
-    // our content attribute still returns "apple",
-    // even though fetching that by id would give us our lying banana.
-    assert_equals(fruitbowl.getAttribute("aria-activedescendant"), "apple");
+    // our content attribute is empty.
+    assert_equals(fruitbowl.getAttribute("aria-activedescendant"), "");
 
     // when we remove our IDL attribute, the content attribute is also thankfully cleared.
     fruitbowl.ariaActiveDescendantElement = null;
@@ -350,7 +352,7 @@
     input2.ariaLabelledByElements = [billingElement, addressElement];
     assert_array_equals(input2.ariaLabelledByElements, [billingElement, addressElement], "Testing IDL setter/getter.");
     assert_equals(input1.ariaLabelledByElements, input1.ariaLabelledByElements, "check idl attribute caching after update");
-    assert_equals(input2.getAttribute("aria-labelledby"), "billingElement addressElement");
+    assert_equals(input2.getAttribute("aria-labelledby"), "");
 
     // Remove the billingElement from the DOM.
     // As it was explicitly set the underlying association will remain intact,
@@ -399,13 +401,15 @@
     assert_equals(link1.getAttribute("aria-controls"), "");
 
     link2.ariaControlsElements = [panel1, panel2];
-    assert_equals(link2.getAttribute("aria-controls"), "panel1 panel2");
+    assert_equals(link2.getAttribute("aria-controls"), "");
+    assert_array_equals(link2.ariaControlsElements, [panel1, panel2]);
 
     link2.removeAttribute("aria-controls");
     assert_equals(link2.ariaControlsElements, null);
 
     link2.ariaControlsElements = [panel1, panel2];
-    assert_equals(link2.getAttribute("aria-controls"), "panel1 panel2");
+    assert_equals(link2.getAttribute("aria-controls"), "");
+    assert_array_equals(link2.ariaControlsElements, [panel1, panel2]);
 
     link2.ariaControlsElements = null;
     assert_false(link2.hasAttribute("aria-controls", "Nullifying the IDL attribute should remove the content attribute."));
@@ -421,7 +425,8 @@
     assert_array_equals(describedLink.ariaDescribedByElements, [description1, description2]);
 
     describedLink.ariaDescribedByElements = [description1, description2];
-    assert_equals(describedLink.getAttribute("aria-describedby"), "description1 description2");
+    assert_equals(describedLink.getAttribute("aria-describedby"), "");
+    assert_array_equals(describedLink.ariaDescribedByElements, [description1, description2]);
 
     describedLink.ariaDescribedByElements = [];
     assert_equals(describedLink.getAttribute("aria-describedby"), "");
@@ -433,7 +438,8 @@
     assert_equals(describedLink.ariaDescribedByElements, null);
 
     describedLink.ariaDescribedByElements = [description1, description2];
-    assert_equals(describedLink.getAttribute("aria-describedby"), "description1 description2");
+    assert_equals(describedLink.getAttribute("aria-describedby"), "");
+    assert_array_equals(describedLink.ariaDescribedByElements, [description1, description2]);
 
     describedLink.ariaDescribedByElements = null;
     assert_false(describedLink.hasAttribute("aria-describedby", "Nullifying the IDL attribute should remove the content attribute."));
@@ -453,7 +459,8 @@
     assert_array_equals(titleHeading.ariaFlowToElements, [article1, article2]);
 
     titleHeading.ariaFlowToElements = [article1, article2];
-    assert_equals(titleHeading.getAttribute("aria-flowto"), "article1 article2");
+    assert_equals(titleHeading.getAttribute("aria-flowto"), "");
+    assert_array_equals(titleHeading.ariaFlowToElements, [article1, article2]);
 
     titleHeading.ariaFlowToElements = [];
     assert_equals(titleHeading.getAttribute("aria-flowto"), "");
@@ -465,7 +472,8 @@
     assert_equals(titleHeading.ariaFlowToElements, null);
 
     titleHeading.ariaFlowToElements = [article1, article2];
-    assert_equals(titleHeading.getAttribute("aria-flowto"), "article1 article2");
+    assert_equals(titleHeading.getAttribute("aria-flowto"), "");
+    assert_array_equals(titleHeading.ariaFlowToElements, [article1, article2]);
 
     titleHeading.ariaFlowToElements = null;
     assert_false(titleHeading.hasAttribute("aria-flowto", "Nullifying the IDL attribute should remove the content attribute."));
@@ -487,7 +495,8 @@
     assert_equals(listItemOwner.ariaOwnsElements, null);
 
     listItemOwner.ariaOwnsElements = [child1, child2];
-    assert_equals(listItemOwner.getAttribute("aria-owns"), "child1 child2");
+    assert_equals(listItemOwner.getAttribute("aria-owns"), "");
+    assert_array_equals(listItemOwner.ariaOwnsElements, [child1, child2]);
 
     listItemOwner.ariaOwnsElements = [];
     assert_equals(listItemOwner.getAttribute("aria-owns"), "");
@@ -496,7 +505,8 @@
     assert_array_equals(listItemOwner.ariaOwnsElements, [child1]);
 
     listItemOwner.ariaOwnsElements = [child1, child2];
-    assert_equals(listItemOwner.getAttribute("aria-owns"), "child1 child2");
+    assert_equals(listItemOwner.getAttribute("aria-owns"), "");
+    assert_array_equals(listItemOwner.ariaOwnsElements, [child1, child2]);
 
     listItemOwner.ariaOwnsElements = null;
     assert_false(listItemOwner.hasAttribute("aria-owns", "Nullifying the IDL attribute should remove the content attribute."));
@@ -570,16 +580,16 @@
     describedButtonContainer.appendChild(describedElement);
     describedElement.ariaDescribedByElements = [description1, description2];
 
-    // All elements were in the same scope, so elements are gettable and the content attribute reflects the ids.
+    // All elements were in the same scope, so elements are gettable and the content attribute is empty.
     assert_array_equals(describedElement.ariaDescribedByElements, [description1, description2], "same scope reference");
-    assert_equals(describedElement.getAttribute("aria-describedby"), "buttonDescription1 buttonDescription2");
+    assert_equals(describedElement.getAttribute("aria-describedby"), "");
 
     outerShadowRoot.appendChild(describedElement);
 
     // Explicitly set attr-associated-elements should still be gettable because we are referencing elements in a lighter scope.
-    // The content attr still reflects the ids from the explicit elements because they were in a valid scope at the time of setting.
+    // The content attr is empty.
     assert_array_equals(describedElement.ariaDescribedByElements, [description1, description2], "lighter scope reference");
-    assert_equals(describedElement.getAttribute("aria-describedby"), "buttonDescription1 buttonDescription2");
+    assert_equals(describedElement.getAttribute("aria-describedby"), "");
 
     // Move the explicitly set elements into a deeper shadow DOM to test the relationship should not be gettable.
     innerShadowRoot.appendChild(description1);
@@ -587,13 +597,12 @@
 
     // Explicitly set elements are no longer retrievable, because they are no longer in a valid scope.
     assert_array_equals(describedElement.ariaDescribedByElements, [], "invalid scope reference");
-    assert_equals(describedElement.getAttribute("aria-describedby"), "buttonDescription1 buttonDescription2");
+    assert_equals(describedElement.getAttribute("aria-describedby"), "");
 
-    // Move into the same shadow scope as the explicitly set elements to test that the elements are gettable
-    // and reflect the correct IDs onto the content attribute.
+    // Move into the same shadow scope as the explicitly set elements to test that the elements are gettable.
     innerShadowRoot.appendChild(describedElement);
     assert_array_equals(describedElement.ariaDescribedByElements, [description1, description2], "restored valid scope reference");
-    assert_equals(describedElement.getAttribute("aria-describedby"), "buttonDescription1 buttonDescription2");
+    assert_equals(describedElement.getAttribute("aria-describedby"), "");
   }, "Moving explicitly set elements across shadow DOM boundaries.");
   </script>
 
@@ -618,38 +627,38 @@
       // Explicitly set elements are in a lighter shadow DOM, so that's ok.
       headingElement.ariaLabelledByElements = [headingLabel1, headingLabel2];
       assert_array_equals(headingElement.ariaLabelledByElements, [headingLabel1, headingLabel2], "Lighter elements are gettable when explicitly set.");
-      assert_equals(headingElement.getAttribute("aria-labelledby"), "", "Crosses shadow DOM boundary, so content attribute should be empty string.");
+      assert_equals(headingElement.getAttribute("aria-labelledby"), "");
 
       // Move into Light DOM, explicitly set elements should still be gettable.
-      // Note that the content attribute still reflects the element ids - when scope changes it becomes stale.
+      // Note that the content attribute is still empty.
       sameScopeContainer.appendChild(headingElement);
       assert_array_equals(headingElement.ariaLabelledByElements, [headingLabel1, headingLabel2], "Elements are all in same scope, so gettable.");
-      assert_equals(headingElement.getAttribute("aria-labelledby"), "", "Content attribute is empty, as on setting the explicitly set elements they were in a different scope.");
+      assert_equals(headingElement.getAttribute("aria-labelledby"), "", "Content attribute is empty.");
 
-      // Reset the association, to update the content attribute.
+      // Reset the association, the content attribute is sitll empty.
       headingElement.ariaLabelledByElements = [headingLabel1, headingLabel2];
-      assert_equals(headingElement.getAttribute("aria-labelledby"), "headingLabel1 headingLabel2", "Elements are set again, so the content attribute is updated.");
+      assert_equals(headingElement.getAttribute("aria-labelledby"), "");
 
       // Remove the referring element from the DOM, elements are no longer longer exposed,
       // underlying internal reference is still kept intact.
       headingElement.remove();
       assert_array_equals(headingElement.ariaLabelledByElements, [], "Element is no longer in the document, so references should no longer be exposed.");
-      assert_equals(headingElement.getAttribute("aria-labelledby"), "headingLabel1 headingLabel2");
+      assert_equals(headingElement.getAttribute("aria-labelledby"), "");
 
       // Insert it back in.
       sameScopeContainer.appendChild(headingElement);
       assert_array_equals(headingElement.ariaLabelledByElements, [headingLabel1, headingLabel2], "Element is restored to valid scope, so should be gettable.");
-      assert_equals(headingElement.getAttribute("aria-labelledby"), "headingLabel1 headingLabel2");
+      assert_equals(headingElement.getAttribute("aria-labelledby"), "");
 
       // Remove everything from the DOM, nothing is exposed again.
       headingLabel1.remove();
       headingLabel2.remove();
       assert_array_equals(headingElement.ariaLabelledByElements, []);
-      assert_equals(headingElement.getAttribute("aria-labelledby"), "headingLabel1 headingLabel2");
+      assert_equals(headingElement.getAttribute("aria-labelledby"), "");
       assert_equals(document.getElementById("headingLabel1"), null);
       assert_equals(document.getElementById("headingLabel2"), null);
 
-      // Reset the association to update the content attribute.
+      // Reset the association.
       headingElement.ariaLabelledByElements = [headingLabel1, headingLabel2];
       assert_array_equals(headingElement.ariaLabelledByElements, []);
       assert_equals(headingElement.getAttribute("aria-labelledby"), "");
diff --git a/third_party/blink/web_tests/external/wpt/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/crbug-583445-regression.window.js b/third_party/blink/web_tests/external/wpt/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/crbug-583445-regression.window.js
index 0332483..3809c2e0 100644
--- a/third_party/blink/web_tests/external/wpt/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/crbug-583445-regression.window.js
+++ b/third_party/blink/web_tests/external/wpt/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/crbug-583445-regression.window.js
@@ -10,18 +10,6 @@
 // introduced the precursor to this test:
 // https://codereview.chromium.org/1675473002.
 
-function executorUrl(uuid, options) {
-  const url =
-      new URL("/common/dispatcher/remote-executor.html", window.location);
-  url.searchParams.set("uuid", uuid);
-
-  if (options?.host) {
-    url.host = options.host;
-  }
-
-  return url;
-}
-
 function nextMessage() {
   return new Promise((resolve) => {
     window.addEventListener("message", (e) => { resolve(e.data); }, {
@@ -36,7 +24,7 @@
   t.add_cleanup(() => { iframeA.remove(); });
 
   const uuidA = token();
-  iframeA.src = executorUrl(uuidA, { host: get_host_info().REMOTE_HOST });
+  iframeA.src = remoteExecutorUrl(uuidA, { host: get_host_info().REMOTE_HOST });
   const ctxA = new RemoteContext(uuidA);
 
   // Frame A embeds a cross-origin frame B, which is same-origin with the
@@ -51,7 +39,7 @@
     const iframeB = document.createElement("iframe");
     iframeB.src = url;
     document.body.appendChild(iframeB);
-  }, [executorUrl(uuidB).href]);
+  }, [remoteExecutorUrl(uuidB).href]);
 
   // Start listening for a message, which will come as a result of executing
   // the code below in frame B.
diff --git a/third_party/blink/web_tests/external/wpt/navigation-timing/nested-unload-timing.html b/third_party/blink/web_tests/external/wpt/navigation-timing/nested-unload-timing.html
index 8b67771..1130fb68 100644
--- a/third_party/blink/web_tests/external/wpt/navigation-timing/nested-unload-timing.html
+++ b/third_party/blink/web_tests/external/wpt/navigation-timing/nested-unload-timing.html
@@ -33,7 +33,7 @@
         const popupContext = new RemoteContext(token());
         const iframeContext = new RemoteContext(token());
         const finalContext = new RemoteContext(token());
-        const popup = window.open(`resources/exec.html?uuid=${popupContext.context_id}`);
+        const popup = window.open(remoteExecutorUrl(popupContext.context_id));
         t.add_cleanup(() => popup.close());
         const registerBusyWaitUnload = duration => window.addEventListener('unload', () => {
             const buffer = 3;
@@ -46,17 +46,17 @@
         const unloadIframe = iframeContext.execute_script(registerBusyWaitUnload, [iframeUnloadDuration]);
         const loadPopup = popupContext.execute_script(async iframeUid => {
             const iframe = document.createElement('iframe');
-            iframe.src = `./exec.html?uuid=${iframeUid}`;
+            iframe.src = `/common/dispatcher/remote-executor.html?uuid=${iframeUid}`;
             document.body.appendChild(iframe);
             await new Promise(resolve => iframe.addEventListener('load', resolve));
         }, [iframeContext.context_id]);
 
         await Promise.all([unloadIframe, loadPopup]);
-        await popupContext.execute_script((uid) => location.href = `./exec.html?uuid=${uid}`, [finalContext.context_id]);
+        await popupContext.execute_script((uid) => location.href = `/common/dispatcher/remote-executor.html?uuid=${uid}`, [finalContext.context_id]);
         const navigationTimingEntry = await finalContext.execute_script(() => performance.getEntriesByType('navigation')[0].toJSON());
         const unloadDuration = navigationTimingEntry.unloadEventEnd - navigationTimingEntry.unloadEventStart;
         assert_greater_than_equal(unloadDuration, mainWindowUnloadDuration);
         assert_less_than(unloadDuration, mainWindowUnloadDuration + iframeUnloadDuration);
     });
 </script>
-</body>
\ No newline at end of file
+</body>
diff --git a/third_party/blink/web_tests/external/wpt/navigation-timing/resources/exec.html b/third_party/blink/web_tests/external/wpt/navigation-timing/resources/exec.html
deleted file mode 100644
index 67b9783..0000000
--- a/third_party/blink/web_tests/external/wpt/navigation-timing/resources/exec.html
+++ /dev/null
@@ -1,7 +0,0 @@
-<script src="/common/dispatcher/dispatcher.js"></script>
-<script>
-  const params = new URLSearchParams(window.location.search);
-  const uuid = params.get("uuid");
-  const executor = new Executor(uuid);
-  executor.execute();
-</script>
diff --git a/third_party/blink/web_tests/external/wpt/service-workers/cache-storage/cache-put.https.any.js b/third_party/blink/web_tests/external/wpt/service-workers/cache-storage/cache-put.https.any.js
index 15aadc9..e4675d9 100644
--- a/third_party/blink/web_tests/external/wpt/service-workers/cache-storage/cache-put.https.any.js
+++ b/third_party/blink/web_tests/external/wpt/service-workers/cache-storage/cache-put.https.any.js
@@ -390,4 +390,38 @@
   assert_true(cachedResponseText.indexOf("name=\"name\"\r\n\r\nvalue") !== -1);
 }, 'Cache.put called with simple Request and form data Response');
 
+promise_test(async function(test) {
+  var inboxBucket = await navigator.storageBuckets.open('inbox');
+  var draftsBucket = await navigator.storageBuckets.open('drafts');
+
+  test.add_cleanup(async function() {
+    await navigator.storageBuckets.delete('inbox');
+    await navigator.storageBuckets.delete('drafts');
+  });
+
+  const cacheName = 'attachments';
+  const cacheKey = 'receipt1.txt';
+
+  var inboxCache = await inboxBucket.caches.open(cacheName);
+  var draftsCache = await draftsBucket.caches.open(cacheName);
+
+  await inboxCache.put(cacheKey, new Response('bread x 2'))
+  await draftsCache.put(cacheKey, new Response('eggs x 1'));
+
+  return inboxCache.match(cacheKey)
+      .then(function(result) {
+        return result.text();
+      })
+      .then(function(body) {
+        assert_equals(body, 'bread x 2', 'Wrong cache contents');
+        return draftsCache.match(cacheKey);
+      })
+      .then(function(result) {
+        return result.text();
+      })
+      .then(function(body) {
+        assert_equals(body, 'eggs x 1', 'Wrong cache contents');
+      });
+}, 'caches from different buckets have different contents');
+
 done();
diff --git a/third_party/blink/web_tests/external/wpt/trusted-types/trusted-types-duplicate-names-without-enforcement.tentative.html b/third_party/blink/web_tests/external/wpt/trusted-types/trusted-types-duplicate-names-without-enforcement.tentative.html
new file mode 100644
index 0000000..afef457
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/trusted-types/trusted-types-duplicate-names-without-enforcement.tentative.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<head>
+  <script src="/resources/testharness.js"></script>
+  <script src="/resources/testharnessreport.js"></script>
+</head>
+<body>
+<script>
+const policy = { createHTML: a => a };
+
+test(t => {
+  // The spec demands that duplicate policies are allowed when TT is not
+  // enforced in the CSP.
+  let a = trustedTypes.createPolicy("duplicatename", policy);
+  let b = trustedTypes.createPolicy("duplicatename", policy);
+  assert_not_equals(a, b);
+  assert_true(a instanceof TrustedTypePolicy);
+  assert_true(b instanceof TrustedTypePolicy);
+}, "createPolicy - duplicate policies are allowed when Trusted Types are not enforced.");
+
+test(t => {
+  // The spec demands that duplicate "default" policy creation fails, even
+  // when TT is not enforced.
+  let p = trustedTypes.createPolicy("default", policy);
+  assert_true(p instanceof TrustedTypePolicy);
+
+  // The second instance should throw:
+  assert_throws_js(TypeError, _ => trustedTypes.createPolicy("default", policy));
+}, "createPolicy - duplicate \"default\" policy is never allowed.");
+</script>
+</body>
diff --git a/third_party/blink/web_tests/flag-specific/disable-site-isolation-trials/external/wpt/html/dom/aria-element-reflection-expected.txt b/third_party/blink/web_tests/flag-specific/disable-site-isolation-trials/external/wpt/html/dom/aria-element-reflection-expected.txt
deleted file mode 100644
index e5b83c9..0000000
--- a/third_party/blink/web_tests/flag-specific/disable-site-isolation-trials/external/wpt/html/dom/aria-element-reflection-expected.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-This is a testharness.js-based test.
-PASS aria-activedescendant element reflection
-PASS If the content attribute is set directly, the IDL attribute getter always returns the first element whose ID matches the content attribute.
-PASS Setting the IDL attribute to an element which is not the first element in DOM order with its ID causes the content attribute to be an empty string
-PASS Setting an element reference that crosses into a shadow tree is disallowed, but setting one that is in a shadow inclusive ancestor is allowed.
-PASS aria-errormessage
-PASS aria-details
-PASS Deleting a reflected element should return null for the IDL attribute and cause the content attribute to become stale.
-PASS Changing the ID of an element causes the content attribute to become out of sync.
-PASS Reparenting an element into a descendant shadow scope hides the element reference.
-PASS Reparenting referenced element cannot cause retargeting of reference.
-PASS Element reference set in invalid scope remains intact throughout move to valid scope.
-FAIL aria-labelledby. assert_equals: check idl attribute caching after parsing expected [Element node <div id="billingElement">Billing</div>, Element node <div id="nameElement">Name</div>] but got [Element node <div id="billingElement">Billing</div>, Element node <div id="nameElement">Name</div>]
-PASS aria-controls.
-PASS aria-describedby.
-PASS aria-flowto.
-PASS aria-owns.
-PASS shadow DOM behaviour for FrozenArray element reflection.
-PASS Moving explicitly set elements across shadow DOM boundaries.
-PASS Moving explicitly set elements around within the same scope, and removing from the DOM.
-PASS Reparenting.
-PASS Attaching element reference before it's inserted into the DOM.
-PASS Cross-document references and moves.
-PASS Adopting element keeps references.
-FAIL Caching invariant different attributes. assert_equals: Caching invariant for ariaControlsElements expected [Element node <div id="cachingInvariantElement1"></div>, Element node <div id="cachingInvariantElement2"></div>] but got [Element node <div id="cachingInvariantElement1"></div>, Element node <div id="cachingInvariantElement2"></div>]
-FAIL Caching invariant different elements. assert_equals: Caching invariant for ariaDescribedByElements in one elemnt expected [Element node <div id="cachingInvariantElement1"></div>, Element node <div id="cachingInvariantElement2"></div>] but got [Element node <div id="cachingInvariantElement1"></div>, Element node <div id="cachingInvariantElement2"></div>]
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/fetch/redirected-request-id-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/fetch/redirected-request-id-expected.txt
new file mode 100644
index 0000000..907ce62
--- /dev/null
+++ b/third_party/blink/web_tests/http/tests/inspector-protocol/fetch/redirected-request-id-expected.txt
@@ -0,0 +1,6 @@
+Tests requestPaused.redirectedRequestId.
+requestPaused.redirectedRequesId at hop 0: as expected
+requestPaused.redirectedRequesId at hop 1: as expected
+requestPaused.redirectedRequesId at hop 2: as expected
+http://127.0.0.1:8000/protocol/inspector-protocol-page.html
+
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/fetch/redirected-request-id.js b/third_party/blink/web_tests/http/tests/inspector-protocol/fetch/redirected-request-id.js
new file mode 100644
index 0000000..0da5ffc7
--- /dev/null
+++ b/third_party/blink/web_tests/http/tests/inspector-protocol/fetch/redirected-request-id.js
@@ -0,0 +1,27 @@
+(async function(testRunner) {
+  const {session, dp} = await testRunner.startBlank(
+      `Tests requestPaused.redirectedRequestId.`);
+
+  const redirect = 'http://127.0.0.1:8000/inspector-protocol/fetch/resources/redirect.pl';
+  const hop2 = 'http://127.0.0.1:8000/protocol/inspector-protocol-page.html';
+  const hop1 = `${redirect}?${hop2}`;
+  const hop0 = `${redirect}?${hop1}`;
+
+  await dp.Fetch.enable();
+  const navigationPromise = session.navigate(hop0);
+  let expectedRedirectedRequestId = undefined;
+
+  for (let i = 0; i < 3; ++i) {
+    const params = (await dp.Fetch.onceRequestPaused()).params;
+    testRunner.log(`requestPaused.redirectedRequesId at hop ${i}: ` +
+        (expectedRedirectedRequestId === params.redirectedRequestId
+            ? 'as expected'
+            : `unexpected (${params.redirectedRequestId})`));
+    const requestId = params.requestId;
+    dp.Fetch.continueRequest({requestId});
+    expectedRedirectedRequestId = requestId;
+  }
+  await navigationPromise;
+  testRunner.log(await session.evaluate(`location.href`));
+  testRunner.completeTest();
+})
diff --git a/third_party/grpc-java/.clang-format b/third_party/grpc-java/.clang-format
new file mode 100644
index 0000000..e384528
--- /dev/null
+++ b/third_party/grpc-java/.clang-format
@@ -0,0 +1 @@
+DisableFormat: true
diff --git a/third_party/grpc-java/BUILD.gn b/third_party/grpc-java/BUILD.gn
new file mode 100644
index 0000000..1c8bfd8
--- /dev/null
+++ b/third_party/grpc-java/BUILD.gn
@@ -0,0 +1,35 @@
+# Copyright 2022 Google Inc. All Rights Reserved.
+# Use of this source code is governed by a BSD - style license that can be
+# found in the LICENSE file.
+
+if (is_android) {
+  import("//build/config/android/rules.gni")
+  java_group("grpc_runtime_java") {
+    deps = [
+      "//third_party/android_deps:com_google_guava_listenablefuture_java",
+      "//third_party/android_deps:io_grpc_grpc_api_java",
+      "//third_party/android_deps:io_grpc_grpc_protobuf_lite_java",
+      "//third_party/android_deps:io_grpc_grpc_stub_java",
+      "//third_party/android_deps:javax_annotation_javax_annotation_api_java",
+    ]
+  }
+}
+
+# Only compile the plugin for the host architecture.
+if (current_toolchain == host_toolchain) {
+  config("grpc_java_plugin_internal_config") {
+    cflags = [ "-Wno-implicit-fallthrough" ]
+  }
+  executable("grpc_java_plugin") {
+    sources = [
+      "compiler_plugin/java_generator.cpp",
+      "compiler_plugin/java_generator.h",
+      "compiler_plugin/java_plugin.cpp",
+    ]
+    deps = [ "//third_party/protobuf:protoc_lib" ]
+    configs += [
+      "//third_party/protobuf:protobuf_config",
+      ":grpc_java_plugin_internal_config",
+    ]
+  }
+}
diff --git a/third_party/grpc-java/LICENSE b/third_party/grpc-java/LICENSE
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/third_party/grpc-java/LICENSE
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/third_party/grpc-java/OWNERS b/third_party/grpc-java/OWNERS
new file mode 100644
index 0000000..fe6d6df0
--- /dev/null
+++ b/third_party/grpc-java/OWNERS
@@ -0,0 +1,3 @@
+dbengoa@google.com
+file://components/autofill_assistant/OWNERS
+file://third_party/android_deps/OWNERS
diff --git a/third_party/grpc-java/README.chromium b/third_party/grpc-java/README.chromium
new file mode 100644
index 0000000..9c6a5dbe
--- /dev/null
+++ b/third_party/grpc-java/README.chromium
@@ -0,0 +1,32 @@
+Name: grpc-java
+URL: https://github.com/grpc/grpc-java
+License: Apache 2.0
+Version: v1.49.0
+Revision: dfbdfe82278a717896fac584fe0dd090493cd6a4
+Security Critical: yes
+
+Description:
+This directory contains build rules and the grpc-java protoc plugin source code.
+
+The gRPC runtime lives in //third_party/android_deps/libs/io_grpc_grpc_*
+
+Please note that the use of gRPC is not generally allowed within Chromium.
+Before integrating with this library, consult with the security team.
+See go/chrome-grpc-advice for more details.
+
+The only currently allowed use case is for inter-app communication in android
+using on-device binder channel transport.
+
+Steps to upgrade:
+- Follow the instructions in //third_party/android_deps/README.md to update the
+  runtime.
+- Download the source code of the same version and copy the files from
+  <grpc-java root>/compiler/src/java_plugin/cpp/ to
+  //third_party/grpc-java/compiler_plugin/
+- You might need to update the compiler plugin's build configuration
+  (//third_party/grpc-java/BUILD), for example if files were added or renamed.
+- Update this file (README.chromium) with the new metadata (version, revision,
+  source url and SHA-512 hash).
+
+Source: https://github.com/grpc/grpc-java/archive/refs/tags/v1.49.0.tar.gz
+SHA-512: ff65a31246566ceb3a4dd9d5a2245693a74e46e8f9d7d47ba55a8ed08ab6e77a8260fdce6c3a4e3357463e5deb120bdb21f895e9a8a3414fd4779b1814710d95
diff --git a/third_party/grpc-java/compiler_plugin/java_generator.cpp b/third_party/grpc-java/compiler_plugin/java_generator.cpp
new file mode 100644
index 0000000..3bb56ae1
--- /dev/null
+++ b/third_party/grpc-java/compiler_plugin/java_generator.cpp
@@ -0,0 +1,1248 @@
+/*
+ * Copyright 2019 The gRPC Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "java_generator.h"
+
+#include <algorithm>
+#include <iostream>
+#include <iterator>
+#include <map>
+#include <set>
+#include <vector>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/descriptor.pb.h>
+#include <google/protobuf/io/printer.h>
+#include <google/protobuf/io/zero_copy_stream.h>
+#include <google/protobuf/stubs/common.h>
+
+// Protobuf 3.21 changed the name of this file.
+#if GOOGLE_PROTOBUF_VERSION >= 3021000
+  #include <google/protobuf/compiler/java/names.h>
+#else
+  #include <google/protobuf/compiler/java/java_names.h>
+#endif
+
+// Stringify helpers used solely to cast GRPC_VERSION
+#ifndef STR
+#define STR(s) #s
+#endif
+
+#ifndef XSTR
+#define XSTR(s) STR(s)
+#endif
+
+#ifdef ABSL_FALLTHROUGH_INTENDED
+#define FALLTHROUGH ABSL_FALLTHROUGH_INTENDED
+#else
+#define FALLTHROUGH
+#endif
+
+namespace java_grpc_generator {
+
+namespace protobuf = google::protobuf;
+
+using protobuf::Descriptor;
+using protobuf::FileDescriptor;
+using protobuf::MethodDescriptor;
+using protobuf::ServiceDescriptor;
+using protobuf::SourceLocation;
+using protobuf::io::Printer;
+using std::to_string;
+
+// java keywords from: https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.9
+static std::set<std::string> java_keywords = {
+  "abstract",
+  "assert",
+  "boolean",
+  "break",
+  "byte",
+  "case",
+  "catch",
+  "char",
+  "class",
+  "const",
+  "continue",
+  "default",
+  "do",
+  "double",
+  "else",
+  "enum",
+  "extends",
+  "final",
+  "finally",
+  "float",
+  "for",
+  "goto",
+  "if",
+  "implements",
+  "import",
+  "instanceof",
+  "int",
+  "interface",
+  "long",
+  "native",
+  "new",
+  "package",
+  "private",
+  "protected",
+  "public",
+  "return",
+  "short",
+  "static",
+  "strictfp",
+  "super",
+  "switch",
+  "synchronized",
+  "this",
+  "throw",
+  "throws",
+  "transient",
+  "try",
+  "void",
+  "volatile",
+  "while",
+  // additional ones added by us
+  "true",
+  "false",
+};
+
+// Adjust a method name prefix identifier to follow the JavaBean spec:
+//   - decapitalize the first letter
+//   - remove embedded underscores & capitalize the following letter
+//  Finally, if the result is a reserved java keyword, append an underscore.
+static std::string MixedLower(const std::string& word) {
+  std::string w;
+  w += tolower(word[0]);
+  bool after_underscore = false;
+  for (size_t i = 1; i < word.length(); ++i) {
+    if (word[i] == '_') {
+      after_underscore = true;
+    } else {
+      w += after_underscore ? toupper(word[i]) : word[i];
+      after_underscore = false;
+    }
+  }
+  if (java_keywords.find(w) != java_keywords.end()) {
+    return w + "_";
+  }
+  return w;
+}
+
+// Converts to the identifier to the ALL_UPPER_CASE format.
+//   - An underscore is inserted where a lower case letter is followed by an
+//     upper case letter.
+//   - All letters are converted to upper case
+static std::string ToAllUpperCase(const std::string& word) {
+  std::string w;
+  for (size_t i = 0; i < word.length(); ++i) {
+    w += toupper(word[i]);
+    if ((i < word.length() - 1) && islower(word[i]) && isupper(word[i + 1])) {
+      w += '_';
+    }
+  }
+  return w;
+}
+
+static inline std::string LowerMethodName(const MethodDescriptor* method) {
+  return MixedLower(method->name());
+}
+
+static inline std::string MethodPropertiesFieldName(const MethodDescriptor* method) {
+  return "METHOD_" + ToAllUpperCase(method->name());
+}
+
+static inline std::string MethodPropertiesGetterName(const MethodDescriptor* method) {
+  return MixedLower("get_" + method->name() + "_method");
+}
+
+static inline std::string MethodIdFieldName(const MethodDescriptor* method) {
+  return "METHODID_" + ToAllUpperCase(method->name());
+}
+
+static inline std::string MessageFullJavaName(const Descriptor* desc) {
+  return protobuf::compiler::java::ClassName(desc);
+}
+
+// TODO(nmittler): Remove once protobuf includes javadoc methods in distribution.
+template <typename ITR>
+static void GrpcSplitStringToIteratorUsing(const std::string& full,
+                                       const char* delim,
+                                       ITR& result) {
+  // Optimize the common case where delim is a single character.
+  if (delim[0] != '\0' && delim[1] == '\0') {
+    char c = delim[0];
+    const char* p = full.data();
+    const char* end = p + full.size();
+    while (p != end) {
+      if (*p == c) {
+        ++p;
+      } else {
+        const char* start = p;
+        while (++p != end && *p != c);
+        *result++ = std::string(start, p - start);
+      }
+    }
+    return;
+  }
+
+  std::string::size_type begin_index, end_index;
+  begin_index = full.find_first_not_of(delim);
+  while (begin_index != std::string::npos) {
+    end_index = full.find_first_of(delim, begin_index);
+    if (end_index == std::string::npos) {
+      *result++ = full.substr(begin_index);
+      return;
+    }
+    *result++ = full.substr(begin_index, (end_index - begin_index));
+    begin_index = full.find_first_not_of(delim, end_index);
+  }
+}
+
+// TODO(nmittler): Remove once protobuf includes javadoc methods in distribution.
+static void GrpcSplitStringUsing(const std::string& full,
+                             const char* delim,
+                             std::vector<std::string>* result) {
+  std::back_insert_iterator< std::vector<std::string> > it(*result);
+  GrpcSplitStringToIteratorUsing(full, delim, it);
+}
+
+// TODO(nmittler): Remove once protobuf includes javadoc methods in distribution.
+static std::vector<std::string> GrpcSplit(const std::string& full, const char* delim) {
+  std::vector<std::string> result;
+  GrpcSplitStringUsing(full, delim, &result);
+  return result;
+}
+
+// TODO(nmittler): Remove once protobuf includes javadoc methods in distribution.
+static std::string GrpcEscapeJavadoc(const std::string& input) {
+  std::string result;
+  result.reserve(input.size() * 2);
+
+  char prev = '*';
+
+  for (std::string::size_type i = 0; i < input.size(); i++) {
+    char c = input[i];
+    switch (c) {
+      case '*':
+        // Avoid "/*".
+        if (prev == '/') {
+          result.append("&#42;");
+        } else {
+          result.push_back(c);
+        }
+        break;
+      case '/':
+        // Avoid "*/".
+        if (prev == '*') {
+          result.append("&#47;");
+        } else {
+          result.push_back(c);
+        }
+        break;
+      case '@':
+        // '@' starts javadoc tags including the @deprecated tag, which will
+        // cause a compile-time error if inserted before a declaration that
+        // does not have a corresponding @Deprecated annotation.
+        result.append("&#64;");
+        break;
+      case '<':
+        // Avoid interpretation as HTML.
+        result.append("&lt;");
+        break;
+      case '>':
+        // Avoid interpretation as HTML.
+        result.append("&gt;");
+        break;
+      case '&':
+        // Avoid interpretation as HTML.
+        result.append("&amp;");
+        break;
+      case '\\':
+        // Java interprets Unicode escape sequences anywhere!
+        result.append("&#92;");
+        break;
+      default:
+        result.push_back(c);
+        break;
+    }
+
+    prev = c;
+  }
+
+  return result;
+}
+
+// TODO(nmittler): Remove once protobuf includes javadoc methods in distribution.
+template <typename DescriptorType>
+static std::string GrpcGetCommentsForDescriptor(const DescriptorType* descriptor) {
+  SourceLocation location;
+  if (descriptor->GetSourceLocation(&location)) {
+    return location.leading_comments.empty() ?
+      location.trailing_comments : location.leading_comments;
+  }
+  return std::string();
+}
+
+// TODO(nmittler): Remove once protobuf includes javadoc methods in distribution.
+static std::vector<std::string> GrpcGetDocLines(const std::string& comments) {
+  if (!comments.empty()) {
+    // TODO(kenton):  Ideally we should parse the comment text as Markdown and
+    //   write it back as HTML, but this requires a Markdown parser.  For now
+    //   we just use <pre> to get fixed-width text formatting.
+
+    // If the comment itself contains block comment start or end markers,
+    // HTML-escape them so that they don't accidentally close the doc comment.
+    std::string escapedComments = GrpcEscapeJavadoc(comments);
+
+    std::vector<std::string> lines = GrpcSplit(escapedComments, "\n");
+    while (!lines.empty() && lines.back().empty()) {
+      lines.pop_back();
+    }
+    return lines;
+  }
+  return std::vector<std::string>();
+}
+
+// TODO(nmittler): Remove once protobuf includes javadoc methods in distribution.
+template <typename DescriptorType>
+static std::vector<std::string> GrpcGetDocLinesForDescriptor(const DescriptorType* descriptor) {
+  return GrpcGetDocLines(GrpcGetCommentsForDescriptor(descriptor));
+}
+
+// TODO(nmittler): Remove once protobuf includes javadoc methods in distribution.
+static void GrpcWriteDocCommentBody(Printer* printer,
+                                    const std::vector<std::string>& lines,
+                                    bool surroundWithPreTag) {
+  if (!lines.empty()) {
+    if (surroundWithPreTag) {
+      printer->Print(" * <pre>\n");
+    }
+
+    for (size_t i = 0; i < lines.size(); i++) {
+      // Most lines should start with a space.  Watch out for lines that start
+      // with a /, since putting that right after the leading asterisk will
+      // close the comment.
+      if (!lines[i].empty() && lines[i][0] == '/') {
+        printer->Print(" * $line$\n", "line", lines[i]);
+      } else {
+        printer->Print(" *$line$\n", "line", lines[i]);
+      }
+    }
+
+    if (surroundWithPreTag) {
+      printer->Print(" * </pre>\n");
+    }
+  }
+}
+
+// TODO(nmittler): Remove once protobuf includes javadoc methods in distribution.
+static void GrpcWriteDocComment(Printer* printer, const std::string& comments) {
+  printer->Print("/**\n");
+  std::vector<std::string> lines = GrpcGetDocLines(comments);
+  GrpcWriteDocCommentBody(printer, lines, false);
+  printer->Print(" */\n");
+}
+
+// TODO(nmittler): Remove once protobuf includes javadoc methods in distribution.
+static void GrpcWriteServiceDocComment(Printer* printer,
+                                       const ServiceDescriptor* service) {
+  // Deviating from protobuf to avoid extraneous docs
+  // (see https://github.com/google/protobuf/issues/1406);
+  printer->Print("/**\n");
+  std::vector<std::string> lines = GrpcGetDocLinesForDescriptor(service);
+  GrpcWriteDocCommentBody(printer, lines, true);
+  printer->Print(" */\n");
+}
+
+// TODO(nmittler): Remove once protobuf includes javadoc methods in distribution.
+void GrpcWriteMethodDocComment(Printer* printer,
+                           const MethodDescriptor* method) {
+  // Deviating from protobuf to avoid extraneous docs
+  // (see https://github.com/google/protobuf/issues/1406);
+  printer->Print("/**\n");
+  std::vector<std::string> lines = GrpcGetDocLinesForDescriptor(method);
+  GrpcWriteDocCommentBody(printer, lines, true);
+  printer->Print(" */\n");
+}
+
+static void PrintMethodFields(
+    const ServiceDescriptor* service, std::map<std::string, std::string>* vars,
+    Printer* p, ProtoFlavor flavor) {
+  p->Print("// Static method descriptors that strictly reflect the proto.\n");
+  (*vars)["service_name"] = service->name();
+  for (int i = 0; i < service->method_count(); ++i) {
+    const MethodDescriptor* method = service->method(i);
+    (*vars)["arg_in_id"] = to_string(2 * i);
+    (*vars)["arg_out_id"] = to_string(2 * i + 1);
+    (*vars)["method_name"] = method->name();
+    (*vars)["input_type"] = MessageFullJavaName(method->input_type());
+    (*vars)["output_type"] = MessageFullJavaName(method->output_type());
+    (*vars)["method_field_name"] = MethodPropertiesFieldName(method);
+    (*vars)["method_new_field_name"] = MethodPropertiesGetterName(method);
+    (*vars)["method_method_name"] = MethodPropertiesGetterName(method);
+    bool client_streaming = method->client_streaming();
+    bool server_streaming = method->server_streaming();
+    if (client_streaming) {
+      if (server_streaming) {
+        (*vars)["method_type"] = "BIDI_STREAMING";
+      } else {
+        (*vars)["method_type"] = "CLIENT_STREAMING";
+      }
+    } else {
+      if (server_streaming) {
+        (*vars)["method_type"] = "SERVER_STREAMING";
+      } else {
+        (*vars)["method_type"] = "UNARY";
+      }
+    }
+
+    if (flavor == ProtoFlavor::LITE) {
+      (*vars)["ProtoUtils"] = "io.grpc.protobuf.lite.ProtoLiteUtils";
+    } else {
+      (*vars)["ProtoUtils"] = "io.grpc.protobuf.ProtoUtils";
+    }
+    p->Print(
+        *vars,
+        "private static volatile $MethodDescriptor$<$input_type$,\n"
+        "    $output_type$> $method_new_field_name$;\n"
+        "\n"
+        "@$RpcMethod$(\n"
+        "    fullMethodName = SERVICE_NAME + '/' + \"$method_name$\",\n"
+        "    requestType = $input_type$.class,\n"
+        "    responseType = $output_type$.class,\n"
+        "    methodType = $MethodType$.$method_type$)\n"
+        "public static $MethodDescriptor$<$input_type$,\n"
+        "    $output_type$> $method_method_name$() {\n"
+        "  $MethodDescriptor$<$input_type$, $output_type$> $method_new_field_name$;\n"
+        "  if (($method_new_field_name$ = $service_class_name$.$method_new_field_name$) == null) {\n"
+        "    synchronized ($service_class_name$.class) {\n"
+        "      if (($method_new_field_name$ = $service_class_name$.$method_new_field_name$) == null) {\n"
+        "        $service_class_name$.$method_new_field_name$ = $method_new_field_name$ =\n"
+        "            $MethodDescriptor$.<$input_type$, $output_type$>newBuilder()\n"
+        "            .setType($MethodType$.$method_type$)\n"
+        "            .setFullMethodName(generateFullMethodName(SERVICE_NAME, \"$method_name$\"))\n");
+        
+    bool safe = method->options().idempotency_level()
+        == protobuf::MethodOptions_IdempotencyLevel_NO_SIDE_EFFECTS;
+    if (safe) {
+      p->Print(*vars, "            .setSafe(true)\n");
+    } else {
+      bool idempotent = method->options().idempotency_level()
+          == protobuf::MethodOptions_IdempotencyLevel_IDEMPOTENT;
+      if (idempotent) {
+        p->Print(*vars, "            .setIdempotent(true)\n");
+      }
+    }
+        
+    p->Print(
+        *vars,
+        "            .setSampledToLocalTracing(true)\n"
+        "            .setRequestMarshaller($ProtoUtils$.marshaller(\n"
+        "                $input_type$.getDefaultInstance()))\n"
+        "            .setResponseMarshaller($ProtoUtils$.marshaller(\n"
+        "                $output_type$.getDefaultInstance()))\n");
+
+    (*vars)["proto_method_descriptor_supplier"] = service->name() + "MethodDescriptorSupplier";
+    if (flavor == ProtoFlavor::NORMAL) {
+      p->Print(
+          *vars,
+        "            .setSchemaDescriptor(new $proto_method_descriptor_supplier$(\"$method_name$\"))\n");
+    }
+
+    p->Print(
+        *vars,
+        "            .build();\n");
+    p->Print(*vars,
+        "      }\n"
+        "    }\n"
+        "  }\n"
+        "  return $method_new_field_name$;\n"
+        "}\n"
+        "\n");
+  }
+}
+
+enum StubType {
+  ASYNC_INTERFACE = 0,
+  BLOCKING_CLIENT_INTERFACE = 1,
+  FUTURE_CLIENT_INTERFACE = 2,
+  BLOCKING_SERVER_INTERFACE = 3,
+  ASYNC_CLIENT_IMPL = 4,
+  BLOCKING_CLIENT_IMPL = 5,
+  FUTURE_CLIENT_IMPL = 6,
+  ABSTRACT_CLASS = 7,
+};
+
+enum CallType {
+  ASYNC_CALL = 0,
+  BLOCKING_CALL = 1,
+  FUTURE_CALL = 2
+};
+
+static void PrintBindServiceMethodBody(const ServiceDescriptor* service,
+                                   std::map<std::string, std::string>* vars,
+                                   Printer* p);
+
+// Prints a StubFactory for given service / stub type.
+static void PrintStubFactory(
+    const ServiceDescriptor* service,
+    std::map<std::string, std::string>* vars,
+    Printer* p, StubType type) {
+  std::string stub_type_name;
+  switch (type) {
+    case ASYNC_CLIENT_IMPL:
+      stub_type_name = "";
+      break;
+    case FUTURE_CLIENT_IMPL:
+      stub_type_name = "Future";
+      break;
+    case BLOCKING_CLIENT_IMPL:
+      stub_type_name = "Blocking";
+      break;
+    default:
+      GRPC_CODEGEN_FAIL << "Cannot generate StubFactory for StubType: " << type;
+  }
+  (*vars)["stub_full_name"] = (*vars)["service_name"] + stub_type_name + "Stub";
+  p->Print(
+    *vars,
+    "$StubFactory$<$stub_full_name$> factory =\n"
+    "  new $StubFactory$<$stub_full_name$>() {\n"
+    "    @$Override$\n"
+    "    public $stub_full_name$ newStub($Channel$ channel, $CallOptions$ callOptions) {\n"
+    "      return new $stub_full_name$(channel, callOptions);\n"
+    "    }\n"
+    "  };\n");
+}
+
+// Prints a client interface or implementation class, or a server interface.
+static void PrintStub(
+    const ServiceDescriptor* service,
+    std::map<std::string, std::string>* vars,
+    Printer* p, StubType type) {
+  const std::string service_name = service->name();
+  (*vars)["service_name"] = service_name;
+  (*vars)["abstract_name"] = service_name + "ImplBase";
+  std::string stub_name = service_name;
+  std::string client_name = service_name;
+  std::string stub_base_class_name = "AbstractStub";
+  CallType call_type;
+  bool impl_base = false;
+  bool interface = false;
+  switch (type) {
+    case ABSTRACT_CLASS:
+      call_type = ASYNC_CALL;
+      impl_base = true;
+      break;
+    case ASYNC_CLIENT_IMPL:
+      call_type = ASYNC_CALL;
+      stub_name += "Stub";
+      stub_base_class_name = "AbstractAsyncStub";
+      break;
+    case BLOCKING_CLIENT_INTERFACE:
+      interface = true;
+      FALLTHROUGH;
+    case BLOCKING_CLIENT_IMPL:
+      call_type = BLOCKING_CALL;
+      stub_name += "BlockingStub";
+      client_name += "BlockingClient";
+      stub_base_class_name = "AbstractBlockingStub";
+      break;
+    case FUTURE_CLIENT_INTERFACE:
+      interface = true;
+      FALLTHROUGH;
+    case FUTURE_CLIENT_IMPL:
+      call_type = FUTURE_CALL;
+      stub_name += "FutureStub";
+      client_name += "FutureClient";
+      stub_base_class_name = "AbstractFutureStub";
+      break;
+    case ASYNC_INTERFACE:
+      call_type = ASYNC_CALL;
+      interface = true;
+      stub_name += "Stub";
+      stub_base_class_name = "AbstractAsyncStub";
+      break;
+    default:
+      GRPC_CODEGEN_FAIL << "Cannot determine class name for StubType: " << type;
+  }
+  (*vars)["stub_name"] = stub_name;
+  (*vars)["client_name"] = client_name;
+  (*vars)["stub_base_class_name"] = (*vars)[stub_base_class_name];
+
+  // Class head
+  if (!interface) {
+    GrpcWriteServiceDocComment(p, service);
+  }
+
+  if (service->options().deprecated()) {
+    p->Print(*vars, "@$Deprecated$\n");
+  }
+
+  if (impl_base) {
+    p->Print(
+        *vars,
+        "public static abstract class $abstract_name$"
+        " implements $BindableService$ {\n");
+  } else {
+    p->Print(
+        *vars,
+        "public static final class $stub_name$"
+        " extends $stub_base_class_name$<$stub_name$> {\n");
+  }
+  p->Indent();
+
+  // Constructor and build() method
+  if (!impl_base && !interface) {
+    p->Print(
+        *vars,
+        "private $stub_name$(\n"
+        "    $Channel$ channel, $CallOptions$ callOptions) {"
+        "\n");
+    p->Indent();
+    p->Print("super(channel, callOptions);\n");
+    p->Outdent();
+    p->Print("}\n\n");
+    p->Print(
+        *vars,
+        "@$Override$\n"
+        "protected $stub_name$ build(\n"
+        "    $Channel$ channel, $CallOptions$ callOptions) {"
+        "\n");
+    p->Indent();
+    p->Print(
+        *vars,
+        "return new $stub_name$(channel, callOptions);\n");
+    p->Outdent();
+    p->Print("}\n");
+  }
+
+  // RPC methods
+  for (int i = 0; i < service->method_count(); ++i) {
+    const MethodDescriptor* method = service->method(i);
+    (*vars)["input_type"] = MessageFullJavaName(method->input_type());
+    (*vars)["output_type"] = MessageFullJavaName(method->output_type());
+    (*vars)["lower_method_name"] = LowerMethodName(method);
+    (*vars)["method_method_name"] = MethodPropertiesGetterName(method);
+    bool client_streaming = method->client_streaming();
+    bool server_streaming = method->server_streaming();
+
+    if (call_type == BLOCKING_CALL && client_streaming) {
+      // Blocking client interface with client streaming is not available
+      continue;
+    }
+
+    if (call_type == FUTURE_CALL && (client_streaming || server_streaming)) {
+      // Future interface doesn't support streaming.
+      continue;
+    }
+
+    // Method signature
+    p->Print("\n");
+    // TODO(nmittler): Replace with WriteMethodDocComment once included by the protobuf distro.
+    if (!interface) {
+      GrpcWriteMethodDocComment(p, method);
+    }
+
+    if (method->options().deprecated()) {
+      p->Print(*vars, "@$Deprecated$\n");
+    }
+
+    p->Print("public ");
+    switch (call_type) {
+      case BLOCKING_CALL:
+        GRPC_CODEGEN_CHECK(!client_streaming)
+            << "Blocking client interface with client streaming is unavailable";
+        if (server_streaming) {
+          // Server streaming
+          p->Print(
+              *vars,
+              "$Iterator$<$output_type$> $lower_method_name$(\n"
+              "    $input_type$ request)");
+        } else {
+          // Simple RPC
+          p->Print(
+              *vars,
+              "$output_type$ $lower_method_name$($input_type$ request)");
+        }
+        break;
+      case ASYNC_CALL:
+        if (client_streaming) {
+          // Bidirectional streaming or client streaming
+          p->Print(
+              *vars,
+              "$StreamObserver$<$input_type$> $lower_method_name$(\n"
+              "    $StreamObserver$<$output_type$> responseObserver)");
+        } else {
+          // Server streaming or simple RPC
+          p->Print(
+              *vars,
+              "void $lower_method_name$($input_type$ request,\n"
+              "    $StreamObserver$<$output_type$> responseObserver)");
+        }
+        break;
+      case FUTURE_CALL:
+        GRPC_CODEGEN_CHECK(!client_streaming && !server_streaming)
+            << "Future interface doesn't support streaming. "
+            << "client_streaming=" << client_streaming << ", "
+            << "server_streaming=" << server_streaming;
+        p->Print(
+            *vars,
+            "$ListenableFuture$<$output_type$> $lower_method_name$(\n"
+            "    $input_type$ request)");
+        break;
+    }
+
+    if (interface) {
+      p->Print(";\n");
+      continue;
+    }
+    // Method body.
+    p->Print(" {\n");
+    p->Indent();
+    if (impl_base) {
+      switch (call_type) {
+        // NB: Skipping validation of service methods. If something is wrong, we wouldn't get to
+        // this point as compiler would return errors when generating service interface.
+        case ASYNC_CALL:
+          if (client_streaming) {
+            p->Print(
+                *vars,
+                "return io.grpc.stub.ServerCalls.asyncUnimplementedStreamingCall("
+                "$method_method_name$(), responseObserver);\n");
+          } else {
+            p->Print(
+                *vars,
+                "io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall("
+                "$method_method_name$(), responseObserver);\n");
+          }
+          break;
+        default:
+          break;
+      }
+    } else if (!interface) {
+      switch (call_type) {
+        case BLOCKING_CALL:
+          GRPC_CODEGEN_CHECK(!client_streaming)
+              << "Blocking client streaming interface is not available";
+          if (server_streaming) {
+            (*vars)["calls_method"] = "io.grpc.stub.ClientCalls.blockingServerStreamingCall";
+            (*vars)["params"] = "request";
+          } else {
+            (*vars)["calls_method"] = "io.grpc.stub.ClientCalls.blockingUnaryCall";
+            (*vars)["params"] = "request";
+          }
+          p->Print(
+              *vars,
+              "return $calls_method$(\n"
+              "    getChannel(), $method_method_name$(), getCallOptions(), $params$);\n");
+          break;
+        case ASYNC_CALL:
+          if (server_streaming) {
+            if (client_streaming) {
+              (*vars)["calls_method"] = "io.grpc.stub.ClientCalls.asyncBidiStreamingCall";
+              (*vars)["params"] = "responseObserver";
+            } else {
+              (*vars)["calls_method"] = "io.grpc.stub.ClientCalls.asyncServerStreamingCall";
+              (*vars)["params"] = "request, responseObserver";
+            }
+          } else {
+            if (client_streaming) {
+              (*vars)["calls_method"] = "io.grpc.stub.ClientCalls.asyncClientStreamingCall";
+              (*vars)["params"] = "responseObserver";
+            } else {
+              (*vars)["calls_method"] = "io.grpc.stub.ClientCalls.asyncUnaryCall";
+              (*vars)["params"] = "request, responseObserver";
+            }
+          }
+          (*vars)["last_line_prefix"] = client_streaming ? "return " : "";
+          p->Print(
+              *vars,
+              "$last_line_prefix$$calls_method$(\n"
+              "    getChannel().newCall($method_method_name$(), getCallOptions()), $params$);\n");
+          break;
+        case FUTURE_CALL:
+          GRPC_CODEGEN_CHECK(!client_streaming && !server_streaming)
+              << "Future interface doesn't support streaming. "
+              << "client_streaming=" << client_streaming << ", "
+              << "server_streaming=" << server_streaming;
+          (*vars)["calls_method"] = "io.grpc.stub.ClientCalls.futureUnaryCall";
+          p->Print(
+              *vars,
+              "return $calls_method$(\n"
+              "    getChannel().newCall($method_method_name$(), getCallOptions()), request);\n");
+          break;
+      }
+    }
+    p->Outdent();
+    p->Print("}\n");
+  }
+
+  if (impl_base) {
+    p->Print("\n");
+    p->Print(
+        *vars,
+        "@$Override$ public final $ServerServiceDefinition$ bindService() {\n");
+    (*vars)["instance"] = "this";
+    PrintBindServiceMethodBody(service, vars, p);
+    p->Print("}\n");
+  }
+
+  p->Outdent();
+  p->Print("}\n\n");
+}
+
+static bool CompareMethodClientStreaming(const MethodDescriptor* method1,
+                                         const MethodDescriptor* method2)
+{
+  return method1->client_streaming() < method2->client_streaming();
+}
+
+// Place all method invocations into a single class to reduce memory footprint
+// on Android.
+static void PrintMethodHandlerClass(const ServiceDescriptor* service,
+                                   std::map<std::string, std::string>* vars,
+                                   Printer* p) {
+  // Sort method ids based on client_streaming() so switch tables are compact.
+  std::vector<const MethodDescriptor*> sorted_methods(service->method_count());
+  for (int i = 0; i < service->method_count(); ++i) {
+    sorted_methods[i] = service->method(i);
+  }
+  stable_sort(sorted_methods.begin(), sorted_methods.end(),
+              CompareMethodClientStreaming);
+  for (size_t i = 0; i < sorted_methods.size(); i++) {
+    const MethodDescriptor* method = sorted_methods[i];
+    (*vars)["method_id"] = to_string(i);
+    (*vars)["method_id_name"] = MethodIdFieldName(method);
+    p->Print(
+        *vars,
+        "private static final int $method_id_name$ = $method_id$;\n");
+  }
+  p->Print("\n");
+  (*vars)["service_name"] = service->name() + "ImplBase";
+  p->Print(
+      *vars,
+      "private static final class MethodHandlers<Req, Resp> implements\n"
+      "    io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>,\n"
+      "    io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>,\n"
+      "    io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>,\n"
+      "    io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {\n"
+      "  private final $service_name$ serviceImpl;\n"
+      "  private final int methodId;\n"
+      "\n"
+      "  MethodHandlers($service_name$ serviceImpl, int methodId) {\n"
+      "    this.serviceImpl = serviceImpl;\n"
+      "    this.methodId = methodId;\n"
+      "  }\n\n");
+  p->Indent();
+  p->Print(
+      *vars,
+      "@$Override$\n"
+      "@java.lang.SuppressWarnings(\"unchecked\")\n"
+      "public void invoke(Req request, $StreamObserver$<Resp> responseObserver) {\n"
+      "  switch (methodId) {\n");
+  p->Indent();
+  p->Indent();
+
+  for (int i = 0; i < service->method_count(); ++i) {
+    const MethodDescriptor* method = service->method(i);
+    if (method->client_streaming()) {
+      continue;
+    }
+    (*vars)["method_id_name"] = MethodIdFieldName(method);
+    (*vars)["lower_method_name"] = LowerMethodName(method);
+    (*vars)["input_type"] = MessageFullJavaName(method->input_type());
+    (*vars)["output_type"] = MessageFullJavaName(method->output_type());
+    p->Print(
+        *vars,
+        "case $method_id_name$:\n"
+        "  serviceImpl.$lower_method_name$(($input_type$) request,\n"
+        "      ($StreamObserver$<$output_type$>) responseObserver);\n"
+        "  break;\n");
+  }
+  p->Print("default:\n"
+           "  throw new AssertionError();\n");
+
+  p->Outdent();
+  p->Outdent();
+  p->Print("  }\n"
+           "}\n\n");
+
+  p->Print(
+      *vars,
+      "@$Override$\n"
+      "@java.lang.SuppressWarnings(\"unchecked\")\n"
+      "public $StreamObserver$<Req> invoke(\n"
+      "    $StreamObserver$<Resp> responseObserver) {\n"
+      "  switch (methodId) {\n");
+  p->Indent();
+  p->Indent();
+
+  for (int i = 0; i < service->method_count(); ++i) {
+    const MethodDescriptor* method = service->method(i);
+    if (!method->client_streaming()) {
+      continue;
+    }
+    (*vars)["method_id_name"] = MethodIdFieldName(method);
+    (*vars)["lower_method_name"] = LowerMethodName(method);
+    (*vars)["input_type"] = MessageFullJavaName(method->input_type());
+    (*vars)["output_type"] = MessageFullJavaName(method->output_type());
+    p->Print(
+        *vars,
+        "case $method_id_name$:\n"
+        "  return ($StreamObserver$<Req>) serviceImpl.$lower_method_name$(\n"
+        "      ($StreamObserver$<$output_type$>) responseObserver);\n");
+  }
+  p->Print("default:\n"
+           "  throw new AssertionError();\n");
+
+  p->Outdent();
+  p->Outdent();
+  p->Print("  }\n"
+           "}\n");
+
+
+  p->Outdent();
+  p->Print("}\n\n");
+}
+
+static void PrintGetServiceDescriptorMethod(const ServiceDescriptor* service,
+                                   std::map<std::string, std::string>* vars,
+                                   Printer* p,
+                                   ProtoFlavor flavor) {
+  (*vars)["service_name"] = service->name();
+
+
+  if (flavor == ProtoFlavor::NORMAL) {
+    (*vars)["proto_base_descriptor_supplier"] = service->name() + "BaseDescriptorSupplier";
+    (*vars)["proto_file_descriptor_supplier"] = service->name() + "FileDescriptorSupplier";
+    (*vars)["proto_method_descriptor_supplier"] = service->name() + "MethodDescriptorSupplier";
+    (*vars)["proto_class_name"] = protobuf::compiler::java::ClassName(service->file());
+    p->Print(
+        *vars,
+        "private static abstract class $proto_base_descriptor_supplier$\n"
+        "    implements $ProtoFileDescriptorSupplier$, $ProtoServiceDescriptorSupplier$ {\n"
+        "  $proto_base_descriptor_supplier$() {}\n"
+        "\n"
+        "  @$Override$\n"
+        "  public com.google.protobuf.Descriptors.FileDescriptor getFileDescriptor() {\n"
+        "    return $proto_class_name$.getDescriptor();\n"
+        "  }\n"
+        "\n"
+        "  @$Override$\n"
+        "  public com.google.protobuf.Descriptors.ServiceDescriptor getServiceDescriptor() {\n"
+        "    return getFileDescriptor().findServiceByName(\"$service_name$\");\n"
+        "  }\n"
+        "}\n"
+        "\n"
+        "private static final class $proto_file_descriptor_supplier$\n"
+        "    extends $proto_base_descriptor_supplier$ {\n"
+        "  $proto_file_descriptor_supplier$() {}\n"
+        "}\n"
+        "\n"
+        "private static final class $proto_method_descriptor_supplier$\n"
+        "    extends $proto_base_descriptor_supplier$\n"
+        "    implements $ProtoMethodDescriptorSupplier$ {\n"
+        "  private final String methodName;\n"
+        "\n"
+        "  $proto_method_descriptor_supplier$(String methodName) {\n"
+        "    this.methodName = methodName;\n"
+        "  }\n"
+        "\n"
+        "  @$Override$\n"
+        "  public com.google.protobuf.Descriptors.MethodDescriptor getMethodDescriptor() {\n"
+        "    return getServiceDescriptor().findMethodByName(methodName);\n"
+        "  }\n"
+        "}\n\n");
+  }
+
+  p->Print(
+      *vars,
+      "private static volatile $ServiceDescriptor$ serviceDescriptor;\n\n");
+
+  p->Print(
+      *vars,
+      "public static $ServiceDescriptor$ getServiceDescriptor() {\n");
+  p->Indent();
+  p->Print(
+      *vars,
+      "$ServiceDescriptor$ result = serviceDescriptor;\n");
+  p->Print("if (result == null) {\n");
+  p->Indent();
+  p->Print(
+      *vars,
+      "synchronized ($service_class_name$.class) {\n");
+  p->Indent();
+  p->Print("result = serviceDescriptor;\n");
+  p->Print("if (result == null) {\n");
+  p->Indent();
+
+  p->Print(
+      *vars,
+      "serviceDescriptor = result = $ServiceDescriptor$.newBuilder(SERVICE_NAME)");
+  p->Indent();
+  p->Indent();
+  if (flavor == ProtoFlavor::NORMAL) {
+    p->Print(
+        *vars,
+        "\n.setSchemaDescriptor(new $proto_file_descriptor_supplier$())");
+  }
+  for (int i = 0; i < service->method_count(); ++i) {
+    const MethodDescriptor* method = service->method(i);
+    (*vars)["method_method_name"] = MethodPropertiesGetterName(method);
+    p->Print(*vars, "\n.addMethod($method_method_name$())");
+  }
+  p->Print("\n.build();\n");
+  p->Outdent();
+  p->Outdent();
+
+  p->Outdent();
+  p->Print("}\n");
+  p->Outdent();
+  p->Print("}\n");
+  p->Outdent();
+  p->Print("}\n");
+  p->Print("return result;\n");
+  p->Outdent();
+  p->Print("}\n");
+}
+
+static void PrintBindServiceMethodBody(const ServiceDescriptor* service,
+                                   std::map<std::string, std::string>* vars,
+                                   Printer* p) {
+  (*vars)["service_name"] = service->name();
+  p->Indent();
+  p->Print(*vars,
+           "return "
+           "$ServerServiceDefinition$.builder(getServiceDescriptor())\n");
+  p->Indent();
+  p->Indent();
+  for (int i = 0; i < service->method_count(); ++i) {
+    const MethodDescriptor* method = service->method(i);
+    (*vars)["lower_method_name"] = LowerMethodName(method);
+    (*vars)["method_method_name"] = MethodPropertiesGetterName(method);
+    (*vars)["input_type"] = MessageFullJavaName(method->input_type());
+    (*vars)["output_type"] = MessageFullJavaName(method->output_type());
+    (*vars)["method_id_name"] = MethodIdFieldName(method);
+    bool client_streaming = method->client_streaming();
+    bool server_streaming = method->server_streaming();
+    if (client_streaming) {
+      if (server_streaming) {
+        (*vars)["calls_method"] = "io.grpc.stub.ServerCalls.asyncBidiStreamingCall";
+      } else {
+        (*vars)["calls_method"] = "io.grpc.stub.ServerCalls.asyncClientStreamingCall";
+      }
+    } else {
+      if (server_streaming) {
+        (*vars)["calls_method"] = "io.grpc.stub.ServerCalls.asyncServerStreamingCall";
+      } else {
+        (*vars)["calls_method"] = "io.grpc.stub.ServerCalls.asyncUnaryCall";
+      }
+    }
+    p->Print(*vars, ".addMethod(\n");
+    p->Indent();
+    p->Print(
+        *vars,
+        "$method_method_name$(),\n"
+        "$calls_method$(\n");
+    p->Indent();
+    p->Print(
+        *vars,
+        "new MethodHandlers<\n"
+        "  $input_type$,\n"
+        "  $output_type$>(\n"
+        "    $instance$, $method_id_name$)))\n");
+    p->Outdent();
+    p->Outdent();
+  }
+  p->Print(".build();\n");
+  p->Outdent();
+  p->Outdent();
+  p->Outdent();
+}
+
+static void PrintService(const ServiceDescriptor* service,
+                         std::map<std::string, std::string>* vars,
+                         Printer* p,
+                         ProtoFlavor flavor,
+                         bool disable_version) {
+  (*vars)["service_name"] = service->name();
+  (*vars)["file_name"] = service->file()->name();
+  (*vars)["service_class_name"] = ServiceClassName(service);
+  (*vars)["grpc_version"] = "";
+  #ifdef GRPC_VERSION
+  if (!disable_version) {
+    (*vars)["grpc_version"] = " (version " XSTR(GRPC_VERSION) ")";
+  }
+  #endif
+  // TODO(nmittler): Replace with WriteServiceDocComment once included by protobuf distro.
+  GrpcWriteServiceDocComment(p, service);
+  p->Print(
+      *vars,
+      "@$Generated$(\n"
+      "    value = \"by gRPC proto compiler$grpc_version$\",\n"
+      "    comments = \"Source: $file_name$\")\n"
+      "@$GrpcGenerated$\n");
+
+  if (service->options().deprecated()) {
+    p->Print(*vars, "@$Deprecated$\n");
+  }
+
+  p->Print(
+      *vars,
+      "public final class $service_class_name$ {\n\n");
+  p->Indent();
+  p->Print(
+      *vars,
+      "private $service_class_name$() {}\n\n");
+
+  p->Print(
+      *vars,
+      "public static final String SERVICE_NAME = "
+      "\"$Package$$service_name$\";\n\n");
+
+  PrintMethodFields(service, vars, p, flavor);
+
+  // TODO(nmittler): Replace with WriteDocComment once included by protobuf distro.
+  GrpcWriteDocComment(p, " Creates a new async stub that supports all call types for the service");
+  p->Print(
+      *vars,
+      "public static $service_name$Stub newStub($Channel$ channel) {\n");
+  p->Indent();
+  PrintStubFactory(service, vars, p, ASYNC_CLIENT_IMPL);
+  p->Print(*vars, "return $service_name$Stub.newStub(factory, channel);\n");
+  p->Outdent();
+  p->Print("}\n\n");
+
+  // TODO(nmittler): Replace with WriteDocComment once included by protobuf distro.
+  GrpcWriteDocComment(p, " Creates a new blocking-style stub that supports unary and streaming "
+                         "output calls on the service");
+  p->Print(
+      *vars,
+      "public static $service_name$BlockingStub newBlockingStub(\n"
+      "    $Channel$ channel) {\n");
+  p->Indent();
+  PrintStubFactory(service, vars, p, BLOCKING_CLIENT_IMPL);
+  p->Print(
+      *vars,
+      "return $service_name$BlockingStub.newStub(factory, channel);\n");
+  p->Outdent();
+  p->Print("}\n\n");
+
+  // TODO(nmittler): Replace with WriteDocComment once included by protobuf distro.
+  GrpcWriteDocComment(p, " Creates a new ListenableFuture-style stub that supports unary calls "
+                         "on the service");
+  p->Print(
+      *vars,
+      "public static $service_name$FutureStub newFutureStub(\n"
+      "    $Channel$ channel) {\n");
+  p->Indent();
+  PrintStubFactory(service, vars, p, FUTURE_CLIENT_IMPL);
+  p->Print(
+      *vars,
+      "return $service_name$FutureStub.newStub(factory, channel);\n");
+  p->Outdent();
+  p->Print("}\n\n");
+
+  PrintStub(service, vars, p, ABSTRACT_CLASS);
+  PrintStub(service, vars, p, ASYNC_CLIENT_IMPL);
+  PrintStub(service, vars, p, BLOCKING_CLIENT_IMPL);
+  PrintStub(service, vars, p, FUTURE_CLIENT_IMPL);
+
+  PrintMethodHandlerClass(service, vars, p);
+  PrintGetServiceDescriptorMethod(service, vars, p, flavor);
+  p->Outdent();
+  p->Print("}\n");
+}
+
+void PrintImports(Printer* p) {
+  p->Print(
+      "import static "
+      "io.grpc.MethodDescriptor.generateFullMethodName;\n\n");
+}
+
+void GenerateService(const ServiceDescriptor* service,
+                     protobuf::io::ZeroCopyOutputStream* out,
+                     ProtoFlavor flavor,
+                     bool disable_version) {
+  // All non-generated classes must be referred by fully qualified names to
+  // avoid collision with generated classes.
+  std::map<std::string, std::string> vars;
+  vars["String"] = "java.lang.String";
+  vars["Deprecated"] = "java.lang.Deprecated";
+  vars["Override"] = "java.lang.Override";
+  vars["Channel"] = "io.grpc.Channel";
+  vars["CallOptions"] = "io.grpc.CallOptions";
+  vars["MethodType"] = "io.grpc.MethodDescriptor.MethodType";
+  vars["ServerMethodDefinition"] =
+      "io.grpc.ServerMethodDefinition";
+  vars["BindableService"] = "io.grpc.BindableService";
+  vars["ServerServiceDefinition"] =
+      "io.grpc.ServerServiceDefinition";
+  vars["ServiceDescriptor"] =
+      "io.grpc.ServiceDescriptor";
+  vars["ProtoFileDescriptorSupplier"] =
+      "io.grpc.protobuf.ProtoFileDescriptorSupplier";
+  vars["ProtoServiceDescriptorSupplier"] =
+      "io.grpc.protobuf.ProtoServiceDescriptorSupplier";
+  vars["ProtoMethodDescriptorSupplier"] =
+      "io.grpc.protobuf.ProtoMethodDescriptorSupplier";
+  vars["AbstractStub"] = "io.grpc.stub.AbstractStub";
+  vars["AbstractAsyncStub"] = "io.grpc.stub.AbstractAsyncStub";
+  vars["AbstractFutureStub"] = "io.grpc.stub.AbstractFutureStub";
+  vars["AbstractBlockingStub"] = "io.grpc.stub.AbstractBlockingStub";
+  vars["StubFactory"] = "io.grpc.stub.AbstractStub.StubFactory";
+  vars["RpcMethod"] = "io.grpc.stub.annotations.RpcMethod";
+  vars["MethodDescriptor"] = "io.grpc.MethodDescriptor";
+  vars["StreamObserver"] = "io.grpc.stub.StreamObserver";
+  vars["Iterator"] = "java.util.Iterator";
+  vars["Generated"] = "javax.annotation.Generated";
+  vars["GrpcGenerated"] = "io.grpc.stub.annotations.GrpcGenerated";
+  vars["ListenableFuture"] =
+      "com.google.common.util.concurrent.ListenableFuture";
+
+  Printer printer(out, '$');
+  std::string package_name = ServiceJavaPackage(service->file());
+  if (!package_name.empty()) {
+    printer.Print(
+        "package $package_name$;\n\n",
+        "package_name", package_name);
+  }
+  PrintImports(&printer);
+
+  // Package string is used to fully qualify method names.
+  vars["Package"] = service->file()->package();
+  if (!vars["Package"].empty()) {
+    vars["Package"].append(".");
+  }
+  PrintService(service, &vars, &printer, flavor, disable_version);
+}
+
+std::string ServiceJavaPackage(const FileDescriptor* file) {
+  std::string result = protobuf::compiler::java::ClassName(file);
+  size_t last_dot_pos = result.find_last_of('.');
+  if (last_dot_pos != std::string::npos) {
+    result.resize(last_dot_pos);
+  } else {
+    result = "";
+  }
+  return result;
+}
+
+std::string ServiceClassName(const ServiceDescriptor* service) {
+  return service->name() + "Grpc";
+}
+
+}  // namespace java_grpc_generator
diff --git a/third_party/grpc-java/compiler_plugin/java_generator.h b/third_party/grpc-java/compiler_plugin/java_generator.h
new file mode 100644
index 0000000..b499c49
--- /dev/null
+++ b/third_party/grpc-java/compiler_plugin/java_generator.h
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2019 The gRPC Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef NET_GRPC_COMPILER_JAVA_GENERATOR_H_
+#define NET_GRPC_COMPILER_JAVA_GENERATOR_H_
+
+#include <stdlib.h>  // for abort()
+#include <iostream>
+#include <string>
+
+#include <google/protobuf/io/zero_copy_stream.h>
+#include <google/protobuf/descriptor.h>
+
+class LogHelper {
+  std::ostream* os;
+
+ public:
+  LogHelper(std::ostream* os) : os(os) {}
+  ~LogHelper() {
+    *os << std::endl;
+    ::abort();
+  }
+  std::ostream& get_os() {
+    return *os;
+  }
+};
+
+// Abort the program after logging the message if the given condition is not
+// true. Otherwise, do nothing.
+#define GRPC_CODEGEN_CHECK(x) !(x) && LogHelper(&std::cerr).get_os() \
+                             << "CHECK FAILED: " << __FILE__ << ":" \
+                             << __LINE__ << ": "
+
+// Abort the program after logging the message.
+#define GRPC_CODEGEN_FAIL GRPC_CODEGEN_CHECK(false)
+
+namespace java_grpc_generator {
+
+namespace impl {
+namespace protobuf = google::protobuf;
+} // namespace impl
+
+enum ProtoFlavor {
+  NORMAL, LITE
+};
+
+// Returns the package name of the gRPC services defined in the given file.
+std::string ServiceJavaPackage(const impl::protobuf::FileDescriptor* file);
+
+// Returns the name of the outer class that wraps in all the generated code for
+// the given service.
+std::string ServiceClassName(const impl::protobuf::ServiceDescriptor* service);
+
+// Writes the generated service interface into the given ZeroCopyOutputStream
+void GenerateService(const impl::protobuf::ServiceDescriptor* service,
+                     impl::protobuf::io::ZeroCopyOutputStream* out,
+                     ProtoFlavor flavor,
+                     bool disable_version);
+
+}  // namespace java_grpc_generator
+
+#endif  // NET_GRPC_COMPILER_JAVA_GENERATOR_H_
diff --git a/third_party/grpc-java/compiler_plugin/java_plugin.cpp b/third_party/grpc-java/compiler_plugin/java_plugin.cpp
new file mode 100644
index 0000000..2eed9d26
--- /dev/null
+++ b/third_party/grpc-java/compiler_plugin/java_plugin.cpp
@@ -0,0 +1,89 @@
+/*
+ * Copyright 2019 The gRPC Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Generates Java gRPC service interface out of Protobuf IDL.
+//
+// This is a Proto2 compiler plugin.  See net/proto2/compiler/proto/plugin.proto
+// and net/proto2/compiler/public/plugin.h for more information on plugins.
+
+#include <memory>
+
+#include "java_generator.h"
+#include <google/protobuf/compiler/code_generator.h>
+#include <google/protobuf/compiler/plugin.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/io/zero_copy_stream.h>
+
+namespace protobuf = google::protobuf;
+
+static std::string JavaPackageToDir(const std::string& package_name) {
+  std::string package_dir = package_name;
+  for (size_t i = 0; i < package_dir.size(); ++i) {
+    if (package_dir[i] == '.') {
+      package_dir[i] = '/';
+    }
+  }
+  if (!package_dir.empty()) package_dir += "/";
+  return package_dir;
+}
+
+class JavaGrpcGenerator : public protobuf::compiler::CodeGenerator {
+ public:
+  JavaGrpcGenerator() {}
+  virtual ~JavaGrpcGenerator() {}
+
+  uint64_t GetSupportedFeatures() const override {
+    return FEATURE_PROTO3_OPTIONAL;
+  }
+
+  virtual bool Generate(const protobuf::FileDescriptor* file,
+                        const std::string& parameter,
+                        protobuf::compiler::GeneratorContext* context,
+                        std::string* error) const override {
+    std::vector<std::pair<std::string, std::string> > options;
+    protobuf::compiler::ParseGeneratorParameter(parameter, &options);
+
+    java_grpc_generator::ProtoFlavor flavor =
+        java_grpc_generator::ProtoFlavor::NORMAL;
+
+    bool disable_version = false;
+    for (size_t i = 0; i < options.size(); i++) {
+      if (options[i].first == "lite") {
+        flavor = java_grpc_generator::ProtoFlavor::LITE;
+      } else if (options[i].first == "noversion") {
+        disable_version = true;
+      }
+    }
+
+    std::string package_name = java_grpc_generator::ServiceJavaPackage(file);
+    std::string package_filename = JavaPackageToDir(package_name);
+    for (int i = 0; i < file->service_count(); ++i) {
+      const protobuf::ServiceDescriptor* service = file->service(i);
+      std::string filename = package_filename
+          + java_grpc_generator::ServiceClassName(service) + ".java";
+      std::unique_ptr<protobuf::io::ZeroCopyOutputStream> output(
+          context->Open(filename));
+      java_grpc_generator::GenerateService(
+          service, output.get(), flavor, disable_version);
+    }
+    return true;
+  }
+};
+
+int main(int argc, char* argv[]) {
+  JavaGrpcGenerator generator;
+  return protobuf::compiler::PluginMain(argc, argv, &generator);
+}
diff --git a/third_party/grpc-java/grpc_java_library.gni b/third_party/grpc-java/grpc_java_library.gni
new file mode 100644
index 0000000..620acb3b
--- /dev/null
+++ b/third_party/grpc-java/grpc_java_library.gni
@@ -0,0 +1,27 @@
+# Copyright 2022 Google Inc. All Rights Reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# Compile a java grpc service.
+#
+# Example:
+#  grpc_java_library("mylib") {
+#    sources = [
+#      "foo.proto",
+#    ]
+#  }
+
+import("//build/config/android/rules.gni")
+
+template("grpc_java_library") {
+  assert(defined(invoker.sources), "Need sources for proto_library")
+  proto_java_library(target_name) {
+    forward_variables_from(invoker, "*", TESTONLY_AND_VISIBILITY + [ "deps" ])
+    forward_variables_from(invoker, TESTONLY_AND_VISIBILITY)
+    generator_plugin_label = "//third_party/grpc-java:grpc_java_plugin"
+    deps = [ "//third_party/grpc-java:grpc_runtime_java" ]
+    if (defined(invoker.deps)) {
+      deps += invoker.deps
+    }
+  }
+}
diff --git a/third_party/junit/BUILD.gn b/third_party/junit/BUILD.gn
index e0559f5..41f90415 100644
--- a/third_party/junit/BUILD.gn
+++ b/third_party/junit/BUILD.gn
@@ -19,11 +19,25 @@
     "src/src/main/java/junit/extensions/TestDecorator.java",
     "src/src/main/java/junit/extensions/TestSetup.java",
     "src/src/main/java/junit/extensions/package-info.java",
+    "src/src/main/java/junit/framework/Assert.java",
+    "src/src/main/java/junit/framework/AssertionFailedError.java",
     "src/src/main/java/junit/framework/ComparisonCompactor.java",
+    "src/src/main/java/junit/framework/ComparisonFailure.java",
     "src/src/main/java/junit/framework/JUnit4TestAdapter.java",
     "src/src/main/java/junit/framework/JUnit4TestAdapterCache.java",
     "src/src/main/java/junit/framework/JUnit4TestCaseFacade.java",
+    "src/src/main/java/junit/framework/Protectable.java",
+    "src/src/main/java/junit/framework/Test.java",
+    "src/src/main/java/junit/framework/TestCase.java",
+    "src/src/main/java/junit/framework/TestFailure.java",
+    "src/src/main/java/junit/framework/TestListener.java",
+    "src/src/main/java/junit/framework/TestResult.java",
+    "src/src/main/java/junit/framework/TestSuite.java",
     "src/src/main/java/junit/framework/package-info.java",
+    "src/src/main/java/junit/runner/BaseTestRunner.java",
+    "src/src/main/java/junit/runner/TestRunListener.java",
+    "src/src/main/java/junit/runner/Version.java",
+    "src/src/main/java/junit/runner/package-info.java",
     "src/src/main/java/junit/textui/ResultPrinter.java",
     "src/src/main/java/junit/textui/TestRunner.java",
     "src/src/main/java/junit/textui/package-info.java",
diff --git a/third_party/lzma_sdk/google/seven_zip_reader_fuzzer.cc b/third_party/lzma_sdk/google/seven_zip_reader_fuzzer.cc
index f3f6a93..1554fa2 100644
--- a/third_party/lzma_sdk/google/seven_zip_reader_fuzzer.cc
+++ b/third_party/lzma_sdk/google/seven_zip_reader_fuzzer.cc
@@ -1,3 +1,7 @@
+// Copyright 2022 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
 #include <stddef.h>
 #include <stdint.h>
 
diff --git a/third_party/metrics_proto/README.chromium b/third_party/metrics_proto/README.chromium
index 3796492..f5aec4c 100644
--- a/third_party/metrics_proto/README.chromium
+++ b/third_party/metrics_proto/README.chromium
@@ -1,7 +1,7 @@
 Name: Metrics Protos
 Short Name: metrics_proto
 URL: This is the canonical public repository
-Version: 479183391
+Version: 479379075
 Date: 2022/10/06 UTC
 License: BSD
 Security Critical: Yes
diff --git a/third_party/metrics_proto/omnibox_event.proto b/third_party/metrics_proto/omnibox_event.proto
index 3a27adf..6578836d 100644
--- a/third_party/metrics_proto/omnibox_event.proto
+++ b/third_party/metrics_proto/omnibox_event.proto
@@ -333,7 +333,9 @@
                                    // contains the input (the input might or
                                    // might not also match the title or URL of
                                    // this page).
-      OPEN_TAB = 32;  // A currently open tab whose URL contains the input.
+      OPEN_TAB = 32;      // A currently open tab whose URL contains the input.
+      STARTER_PACK = 33;  // A built-in URL suggestion specifically created for
+                          // the starter pack keyword mode chip to attach to.
     }
     optional ResultType result_type = 2;
 
diff --git a/third_party/metrics_proto/system_profile.proto b/third_party/metrics_proto/system_profile.proto
index 435f8f1..8cb41d1 100644
--- a/third_party/metrics_proto/system_profile.proto
+++ b/third_party/metrics_proto/system_profile.proto
@@ -153,7 +153,7 @@
   repeated fixed32 command_line_key_hash = 38 [packed = true];
 
   // Information on the user's operating system.
-  // Next tag: 9
+  // Next tag: 11
   message OS {
     // The user's operating system. This should be one of:
     // - 'Android'
@@ -225,6 +225,38 @@
       LIGHT_MODE_APP = 4;
     }
     optional DarkModeState dark_mode_state = 8 [default = UNKNOWN];
+
+    // The value returned by the "XDG_SESSION_TYPE" environment variable, as
+    // translated to a base::nix::SessionType, this field is only set on Linux.
+    // Some features are enabled/disabled depending on this value.
+    enum XdgSessionType {
+      UNSET = 0;
+      OTHER_SESSION_TYPE = 1;
+      UNSPECIFIED = 2;
+      TTY = 3;
+      X11 = 4;
+      WAYLAND = 5;
+      MIR = 6;
+    }
+    optional XdgSessionType xdg_session_type = 9;
+
+    // The value returned by the "XDG_CURRENT_DESKTOP" environment variable, as
+    // translated to a base::nix::DesktopEnvironment. Note that all KDE values
+    // from that enum are bucketed together. This field is only set on Linux.
+    // Some bugs reproduce only in particular desktop environments.
+    enum XdgCurrentDesktop {
+      OTHER = 0;
+      CINNAMON = 1;
+      DEEPIN = 2;
+      GNOME = 3;
+      KDE = 4;
+      PANTHEON = 5;
+      UKUI = 6;
+      UNITY = 7;
+      XFCE = 8;
+      LXQT = 9;
+    }
+    optional XdgCurrentDesktop xdg_current_desktop = 10;
   }
   optional OS os = 5;
 
diff --git a/third_party/omnibox_proto/README.chromium b/third_party/omnibox_proto/README.chromium
index 6cff4369..594f50f 100644
--- a/third_party/omnibox_proto/README.chromium
+++ b/third_party/omnibox_proto/README.chromium
@@ -1,8 +1,8 @@
 Name: Omnibox Protos
 Short Name: omnibox_proto
 URL: This is the canonical public repository
-Version: 477549277
-Date: 2022/09/28 UTC
+Version: 479680458
+Date: 2022/10/07 UTC
 License: BSD
 Security Critical: Yes
 
diff --git a/third_party/omnibox_proto/groups.proto b/third_party/omnibox_proto/groups.proto
index d00e9fb0..22e4bed2 100644
--- a/third_party/omnibox_proto/groups.proto
+++ b/third_party/omnibox_proto/groups.proto
@@ -94,26 +94,33 @@
   // Mobile-specific auxiliary suggestions. These suggestions are sourced on
   // device, and appear above any other content.
   // SECTION_MOBILE_VERBATIM hosts:
-  // - Search Ready Omnibox / Verbatim match
-  // - Clipboard suggestions
+  // Search Ready Omnibox / Verbatim match
   SECTION_MOBILE_VERBATIM = 1;
+
+  // SECTION_MOBILE_CLIPBOARD hosts:
+  // - Text you copied
+  // - Link you copied
+  // - Image you copied
+  SECTION_MOBILE_CLIPBOARD = 2;
+
+  // Clipboard suggestions
   // SECTION_MOBILE_MOST_VISITED hosts a horizontal carousel with:
   // - Most Visited Tiles
   // - Organic Repeatable Queries
-  SECTION_MOBILE_MOST_VISITED = 2;
+  SECTION_MOBILE_MOST_VISITED = 3;
 
   // A contiguous range reserved for remote zero-prefix suggestions.
   // The sections are dynamically assigned to the groups found in the server
   // response based on the order in which they appear in the results.
   // Accommodates up to 10 distinct suggestion groups in the server response.
-  SECTION_REMOTE_ZPS_1 = 3;
-  SECTION_REMOTE_ZPS_2 = 4;
-  SECTION_REMOTE_ZPS_3 = 5;
-  SECTION_REMOTE_ZPS_4 = 6;
-  SECTION_REMOTE_ZPS_5 = 7;
-  SECTION_REMOTE_ZPS_6 = 8;
-  SECTION_REMOTE_ZPS_7 = 9;
-  SECTION_REMOTE_ZPS_8 = 10;
-  SECTION_REMOTE_ZPS_9 = 11;
-  SECTION_REMOTE_ZPS_10 = 12;
+  SECTION_REMOTE_ZPS_1 = 4;
+  SECTION_REMOTE_ZPS_2 = 5;
+  SECTION_REMOTE_ZPS_3 = 6;
+  SECTION_REMOTE_ZPS_4 = 7;
+  SECTION_REMOTE_ZPS_5 = 8;
+  SECTION_REMOTE_ZPS_6 = 9;
+  SECTION_REMOTE_ZPS_7 = 10;
+  SECTION_REMOTE_ZPS_8 = 11;
+  SECTION_REMOTE_ZPS_9 = 12;
+  SECTION_REMOTE_ZPS_10 = 13;
 }
diff --git a/tools/mb/mb_config.pyl b/tools/mb/mb_config.pyl
index 086ac24a..1a155ca 100644
--- a/tools/mb/mb_config.pyl
+++ b/tools/mb/mb_config.pyl
@@ -108,13 +108,6 @@
       'android-cronet-marshmallow-arm64-perf-rel': 'android_cronet_release_bot_minimal_symbols_arm64_reclient',
       'android-cronet-x86-dbg': 'android_cronet_debug_static_bot_x86_reclient',
       'android-cronet-x86-rel': 'android_cronet_release_bot_minimal_symbols_x86_reclient',
-
-      # This bot must use the gpu_tests mixin to match 'Android FYI Release (Nexus 5X)'
-      # on the chromium.gpu waterfall, which it mirrors via trybots.pyl.
-      'android-marshmallow-arm64-rel': 'gpu_tests_android_release_bot_minimal_symbols_arm64_fastbuild_reclient',
-
-      'android-marshmallow-x86-rel': 'android_release_bot_minimal_symbols_x86_fastbuild_webview_google_reclient',
-      'android-marshmallow-x86-rel-non-cq': 'android_release_bot_minimal_symbols_x86_fastbuild_webview_google_reclient',
       'android-nougat-x86-rel': 'android_release_bot_minimal_symbols_x86_fastbuild_webview_monochrome_reclient',
       # TODO(crbug/1182468) Remove android coverage bots after coverage is
       # running on CQ.
@@ -285,7 +278,7 @@
       'fuchsia-fyi-x64-dbg': 'debug_bot_fuchsia',
       # TODO(crbug.com/1294938): Move to 'chromium.fuchsia'.
       'fuchsia-x64-cast-receiver-rel': 'release_bot_fuchsia_cast_receiver',
-      'fuchsia-x64-chrome-rel': 'release_bot_fuchsia_cfv2_script',
+      'fuchsia-x64-chrome-rel': 'release_bot_fuchsia_cfv2_script_chrome',
       'fuchsia-x64-rel': 'release_bot_fuchsia',
     },
 
@@ -1007,9 +1000,6 @@
       'android-deterministic-rel': 'android_without_codecs_release_trybot',
       'android-fieldtrial-rel': 'android_release_trybot_minimal_symbols_x86_fastbuild_disable_proguard_chrome_google',
       'android-inverse-fieldtrials-pie-x86-fyi-rel': 'android_release_trybot_x86_fastbuild_webview_google_invert_fieldtrials',
-      'android-marshmallow-arm64-rel': 'gpu_tests_android_release_trybot_arm64_fastbuild_java_coverage',
-      'android-marshmallow-x86-rel': 'android_release_trybot_x86_fastbuild_webview_google_coverage',
-      'android-marshmallow-x86-rel-non-cq': 'android_release_trybot_x86_fastbuild_webview_google',
       'android-nougat-x86-rel': 'android_release_trybot_x86_fastbuild_webview_monochrome',
       'android-nougat-x86-rel-reclient': 'android_release_trybot_x86_fastbuild_webview_monochrome_reclient',
       'android-oreo-arm64-cts-networkservice-dbg': 'android_debug_trybot_arm64',
@@ -1153,7 +1143,7 @@
       # TODO(crbug.com/1294938): Remove this bot after the transition.
       'fuchsia-x64-cast': 'release_trybot_fuchsia_cast_receiver',
       'fuchsia-x64-cast-receiver-rel': 'release_trybot_fuchsia_cast_receiver',
-      'fuchsia-x64-chrome-rel': 'release_trybot_fuchsia_cfv2_script',
+      'fuchsia-x64-chrome-rel': 'release_trybot_fuchsia_cfv2_script_chrome',
       'fuchsia-x64-rel': 'release_trybot_fuchsia',
       # TODO(crbug.com/1294938): Remove this bot after the transition.
       'fuchsia_arm64': 'release_trybot_fuchsia_arm64',
@@ -1712,11 +1702,6 @@
       'chrome_google'
     ],
 
-    'android_release_bot_minimal_symbols_x86_fastbuild_webview_google_reclient': [
-      'android', 'release_bot_reclient', 'minimal_symbols', 'x86',
-      'android_fastbuild', 'strip_debug_info', 'webview_google',
-    ],
-
     'android_release_bot_minimal_symbols_x86_fastbuild_webview_monochrome_reclient': [
       'android', 'release_bot_reclient', 'minimal_symbols', 'x86',
       'strip_debug_info', 'android_fastbuild', 'webview_monochrome',
@@ -1818,17 +1803,6 @@
       'no_secondary_abi',
     ],
 
-    'android_release_trybot_x86_fastbuild_webview_google': [
-      'android', 'release_trybot', 'x86', 'android_fastbuild',
-      'strip_debug_info', 'webview_google',
-    ],
-
-    'android_release_trybot_x86_fastbuild_webview_google_coverage': [
-      'android', 'release_trybot', 'x86', 'android_fastbuild',
-      'strip_debug_info', 'webview_google', 'use_java_coverage',
-      'partial_code_coverage_instrumentation',
-    ],
-
     'android_release_trybot_x86_fastbuild_webview_google_invert_fieldtrials': [
       'android', 'release_trybot', 'strip_debug_info', 'x86',
       'android_fastbuild', 'webview_google', 'invert_fieldtrials'
@@ -2696,12 +2670,6 @@
       'android_no_proguard', 'use_java_coverage',
     ],
 
-    'gpu_tests_android_release_bot_minimal_symbols_arm64_fastbuild_reclient': [
-      'gpu_tests', 'android', 'release_bot_reclient', 'minimal_symbols', 'arm64',
-      'resource_allowlisting', 'static_angle', 'android_fastbuild',
-      'webview_google',
-    ],
-
     # No symbols to prevent linker file too large error on
     # android_webview_unittests target.
     'gpu_tests_android_release_bot_no_symbols_arm64_fastbuild_native_coverage_reclient': [
@@ -2723,12 +2691,6 @@
       'android_fastbuild',
     ],
 
-    'gpu_tests_android_release_trybot_arm64_fastbuild_java_coverage': [
-      'gpu_tests', 'android', 'release_trybot', 'arm64', 'static_angle',
-      'strip_debug_info', 'android_fastbuild', 'webview_google',
-      'use_java_coverage', 'partial_code_coverage_instrumentation',
-    ],
-
     'gpu_tests_android_release_trybot_arm64_reclient': [
       'gpu_tests', 'android', 'release_trybot_minimal_symbols_reclient', 'arm64', 'static_angle',
     ],
@@ -3515,6 +3477,10 @@
       'release_bot', 'fuchsia', 'arm64', 'arm64_host', 'fuchsia_cfv2_script',
     ],
 
+    'release_bot_fuchsia_cfv2_script_chrome': [
+      'release_bot', 'fuchsia',  'fuchsia_cfv2_script', 'fuchsia_chrome',
+    ],
+
     'release_bot_mac_strip_minimal_symbols': [
       'release_bot', 'mac_strip', 'minimal_symbols',
     ],
@@ -3656,8 +3622,8 @@
       'release_trybot', 'fuchsia', 'cast_receiver_size_optimized',
     ],
 
-    'release_trybot_fuchsia_cfv2_script': [
-      'release_trybot', 'fuchsia', 'fuchsia_cfv2_script',
+    'release_trybot_fuchsia_cfv2_script_chrome': [
+      'release_trybot', 'fuchsia', 'fuchsia_cfv2_script', 'fuchsia_chrome',
     ],
 
     'release_trybot_minimal_symbols_reclient': [
diff --git a/tools/mb/mb_config_expectations/chromium.android.json b/tools/mb/mb_config_expectations/chromium.android.json
index 29c11ea..c3acf28 100644
--- a/tools/mb/mb_config_expectations/chromium.android.json
+++ b/tools/mb/mb_config_expectations/chromium.android.json
@@ -467,58 +467,6 @@
       "use_thin_lto": false
     }
   },
-  "android-marshmallow-arm64-rel": {
-    "gn_args": {
-      "android_static_analysis": "off",
-      "dcheck_always_on": false,
-      "debuggable_apks": false,
-      "enable_resource_allowlist_generation": true,
-      "ffmpeg_branding": "Chrome",
-      "is_component_build": false,
-      "is_debug": false,
-      "proprietary_codecs": true,
-      "symbol_level": 1,
-      "system_webview_package_name": "com.google.android.webview",
-      "target_cpu": "arm64",
-      "target_os": "android",
-      "use_remoteexec": true,
-      "use_static_angle": true
-    }
-  },
-  "android-marshmallow-x86-rel": {
-    "gn_args": {
-      "android_static_analysis": "off",
-      "dcheck_always_on": false,
-      "debuggable_apks": false,
-      "ffmpeg_branding": "Chrome",
-      "is_component_build": false,
-      "is_debug": false,
-      "proprietary_codecs": true,
-      "strip_debug_info": true,
-      "symbol_level": 1,
-      "system_webview_package_name": "com.google.android.webview",
-      "target_cpu": "x86",
-      "target_os": "android",
-      "use_remoteexec": true
-    }
-  },
-  "android-marshmallow-x86-rel-non-cq": {
-    "gn_args": {
-      "android_static_analysis": "off",
-      "dcheck_always_on": false,
-      "debuggable_apks": false,
-      "ffmpeg_branding": "Chrome",
-      "is_component_build": false,
-      "is_debug": false,
-      "proprietary_codecs": true,
-      "strip_debug_info": true,
-      "symbol_level": 1,
-      "system_webview_package_name": "com.google.android.webview",
-      "target_cpu": "x86",
-      "target_os": "android",
-      "use_remoteexec": true
-    }
-  },
   "android-nougat-x86-rel": {
     "gn_args": {
       "android_static_analysis": "off",
diff --git a/tools/mb/mb_config_expectations/chromium.fuchsia.fyi.json b/tools/mb/mb_config_expectations/chromium.fuchsia.fyi.json
index 8fde656..940b1002 100644
--- a/tools/mb/mb_config_expectations/chromium.fuchsia.fyi.json
+++ b/tools/mb/mb_config_expectations/chromium.fuchsia.fyi.json
@@ -79,6 +79,7 @@
   "fuchsia-x64-chrome-rel": {
     "gn_args": {
       "dcheck_always_on": false,
+      "fuchsia_browser_type": "chrome",
       "is_component_build": false,
       "is_debug": false,
       "target_os": "fuchsia",
diff --git a/tools/mb/mb_config_expectations/tryserver.chromium.android.json b/tools/mb/mb_config_expectations/tryserver.chromium.android.json
index 1f5e53d..4bc61fd 100644
--- a/tools/mb/mb_config_expectations/tryserver.chromium.android.json
+++ b/tools/mb/mb_config_expectations/tryserver.chromium.android.json
@@ -588,62 +588,6 @@
       "use_goma": true
     }
   },
-  "android-marshmallow-arm64-rel": {
-    "gn_args": {
-      "android_static_analysis": "off",
-      "coverage_instrumentation_input_file": "//.code-coverage/files_to_instrument.txt",
-      "dcheck_always_on": true,
-      "debuggable_apks": false,
-      "ffmpeg_branding": "Chrome",
-      "is_component_build": false,
-      "is_debug": false,
-      "proprietary_codecs": true,
-      "strip_debug_info": true,
-      "symbol_level": 0,
-      "system_webview_package_name": "com.google.android.webview",
-      "target_cpu": "arm64",
-      "target_os": "android",
-      "use_goma": true,
-      "use_jacoco_coverage": true,
-      "use_static_angle": true
-    }
-  },
-  "android-marshmallow-x86-rel": {
-    "gn_args": {
-      "android_static_analysis": "off",
-      "coverage_instrumentation_input_file": "//.code-coverage/files_to_instrument.txt",
-      "dcheck_always_on": true,
-      "debuggable_apks": false,
-      "ffmpeg_branding": "Chrome",
-      "is_component_build": false,
-      "is_debug": false,
-      "proprietary_codecs": true,
-      "strip_debug_info": true,
-      "symbol_level": 0,
-      "system_webview_package_name": "com.google.android.webview",
-      "target_cpu": "x86",
-      "target_os": "android",
-      "use_goma": true,
-      "use_jacoco_coverage": true
-    }
-  },
-  "android-marshmallow-x86-rel-non-cq": {
-    "gn_args": {
-      "android_static_analysis": "off",
-      "dcheck_always_on": true,
-      "debuggable_apks": false,
-      "ffmpeg_branding": "Chrome",
-      "is_component_build": false,
-      "is_debug": false,
-      "proprietary_codecs": true,
-      "strip_debug_info": true,
-      "symbol_level": 0,
-      "system_webview_package_name": "com.google.android.webview",
-      "target_cpu": "x86",
-      "target_os": "android",
-      "use_goma": true
-    }
-  },
   "android-nougat-x86-rel": {
     "gn_args": {
       "android_static_analysis": "off",
diff --git a/tools/mb/mb_config_expectations/tryserver.chromium.fuchsia.json b/tools/mb/mb_config_expectations/tryserver.chromium.fuchsia.json
index 57ab656..b90966d 100644
--- a/tools/mb/mb_config_expectations/tryserver.chromium.fuchsia.json
+++ b/tools/mb/mb_config_expectations/tryserver.chromium.fuchsia.json
@@ -121,6 +121,7 @@
   "fuchsia-x64-chrome-rel": {
     "gn_args": {
       "dcheck_always_on": true,
+      "fuchsia_browser_type": "chrome",
       "is_component_build": false,
       "is_debug": false,
       "symbol_level": 0,
diff --git a/tools/metrics/actions/actions.xml b/tools/metrics/actions/actions.xml
index 8b3c2ee..2e01872 100644
--- a/tools/metrics/actions/actions.xml
+++ b/tools/metrics/actions/actions.xml
@@ -3812,6 +3812,135 @@
   <description>Please enter the description of this user action.</description>
 </action>
 
+<action name="Autofill.FastCheckout.Accepted">
+  <owner>bwolfgang@google.com</owner>
+  <owner>jkeitel@google.com</owner>
+  <owner>vizcay@google.com</owner>
+  <description>
+    The user accepted their selections of profile and credit card.
+  </description>
+</action>
+
+<action name="Autofill.FastCheckout.Destroyed" not_user_triggered="true">
+  <owner>bwolfgang@google.com</owner>
+  <owner>jkeitel@google.com</owner>
+  <owner>vizcay@google.com</owner>
+  <description>The bottomsheet was destroyed.</description>
+</action>
+
+<action name="Autofill.FastCheckout.Dismissed">
+  <owner>bwolfgang@google.com</owner>
+  <owner>jkeitel@google.com</owner>
+  <owner>vizcay@google.com</owner>
+  <description>The bottomsheet was dismissed by the user.</description>
+</action>
+
+<action name="Autofill.FastCheckout.Initialized">
+  <owner>bwolfgang@google.com</owner>
+  <owner>jkeitel@google.com</owner>
+  <owner>vizcay@google.com</owner>
+  <description>The FastCheckout bottomsheet was initialized.</description>
+</action>
+
+<action name="Autofill.FastCheckout.NavigatedBackHome">
+  <owner>bwolfgang@google.com</owner>
+  <owner>jkeitel@google.com</owner>
+  <owner>vizcay@google.com</owner>
+  <description>The user tapped the back button on a detail sheet.</description>
+</action>
+
+<action name="Autofill.FastCheckout.NavigatedToAddresses">
+  <owner>bwolfgang@google.com</owner>
+  <owner>jkeitel@google.com</owner>
+  <owner>vizcay@google.com</owner>
+  <description>The user navigated to the addresses details sheet.</description>
+</action>
+
+<action name="Autofill.FastCheckout.NavigatedToAddressesSettingsViaFooter">
+  <owner>bwolfgang@google.com</owner>
+  <owner>jkeitel@google.com</owner>
+  <owner>vizcay@google.com</owner>
+  <description>
+    The user tapped the &quot;Add new address&quot; footer.
+  </description>
+</action>
+
+<action name="Autofill.FastCheckout.NavigatedToAddressesSettingsViaIcon">
+  <owner>bwolfgang@google.com</owner>
+  <owner>jkeitel@google.com</owner>
+  <owner>vizcay@google.com</owner>
+  <description>
+    The user tapped the settings icon on the addresses details sheet.
+  </description>
+</action>
+
+<action name="Autofill.FastCheckout.NavigatedToCreditCards">
+  <owner>bwolfgang@google.com</owner>
+  <owner>jkeitel@google.com</owner>
+  <owner>vizcay@google.com</owner>
+  <description>
+    The user navigated to the credit cards details sheet.
+  </description>
+</action>
+
+<action name="Autofill.FastCheckout.NavigatedToCreditCardsSettingsViaFooter">
+  <owner>bwolfgang@google.com</owner>
+  <owner>jkeitel@google.com</owner>
+  <owner>vizcay@google.com</owner>
+  <description>
+    The user tapped the &quot;Add new credit card&quot; footer.
+  </description>
+</action>
+
+<action name="Autofill.FastCheckout.NavigatedToCreditCardsSettingsViaIcon">
+  <owner>bwolfgang@google.com</owner>
+  <owner>jkeitel@google.com</owner>
+  <owner>vizcay@google.com</owner>
+  <description>
+    The user tapped the settings icon on the credit cards details sheet.
+  </description>
+</action>
+
+<action name="Autofill.FastCheckout.SelectedDifferentAddress">
+  <owner>bwolfgang@google.com</owner>
+  <owner>jkeitel@google.com</owner>
+  <owner>vizcay@google.com</owner>
+  <description>
+    The user selected a different address from the already selected one
+    (navigates back to home screen).
+  </description>
+</action>
+
+<action name="Autofill.FastCheckout.SelectedDifferentCreditCard">
+  <owner>bwolfgang@google.com</owner>
+  <owner>jkeitel@google.com</owner>
+  <owner>vizcay@google.com</owner>
+  <description>
+    The user selected a different credit card from the already selected one
+    (navigates back to home screen).
+  </description>
+</action>
+
+<action name="Autofill.FastCheckout.SelectedSameAddress">
+  <owner>bwolfgang@google.com</owner>
+  <owner>jkeitel@google.com</owner>
+  <owner>vizcay@google.com</owner>
+  <description>
+    The user selected the same address that was already selected (navigates back
+    to home screen).
+  </description>
+</action>
+
+<action name="Autofill.FastCheckout.SelectedSameCreditCard">
+  <owner>bwolfgang@google.com</owner>
+  <owner>jkeitel@google.com</owner>
+  <owner>vizcay@google.com</owner>
+  <description>
+    The user selected the same credit card that was already selected (navigates
+    back to home screen).
+  </description>
+</action>
+
 <action name="Autofill_BrandingTapped">
   <owner>ginnyhuang@chromium.org</owner>
   <description>
@@ -18595,6 +18724,12 @@
   <description>User pressed 'Voice Search' in the app menu.</description>
 </action>
 
+<action name="MobileMenuWhatsNew">
+  <owner>cheickcisse@google.com</owner>
+  <owner>sebsg@google.com</owner>
+  <description>User pressed 'What's New' in the app menu.</description>
+</action>
+
 <action name="MobileMenuWindowManager">
   <owner>jinsukkim@chromium.org</owner>
   <owner>twellington@chromium.org</owner>
@@ -34180,6 +34315,52 @@
   </description>
 </action>
 
+<action name="WhatsNew.AddPasswordManually">
+  <owner>cheickcisse@google.com</owner>
+  <owner>sebsg@chromium.org</owner>
+  <description>
+    The user opened Add Password Manually in What's New.
+  </description>
+</action>
+
+<action name="WhatsNew.Autofill">
+  <owner>cheickcisse@google.com</owner>
+  <owner>sebsg@chromium.org</owner>
+  <description>The user opened Autofill in What's New.</description>
+</action>
+
+<action name="WhatsNew.NewOverflowMenu">
+  <owner>cheickcisse@google.com</owner>
+  <owner>sebsg@chromium.org</owner>
+  <description>The user opened New Overflow Menu in What's New.</description>
+</action>
+
+<action name="WhatsNew.PasswordsInOtherApps">
+  <owner>cheickcisse@google.com</owner>
+  <owner>sebsg@chromium.org</owner>
+  <description>
+    The user opened Passwords In Other Apps in What's New.
+  </description>
+</action>
+
+<action name="WhatsNew.SearchTabs">
+  <owner>cheickcisse@google.com</owner>
+  <owner>sebsg@chromium.org</owner>
+  <description>The user opened Search Tabs in What's New.</description>
+</action>
+
+<action name="WhatsNew.SharedHighlighting">
+  <owner>cheickcisse@google.com</owner>
+  <owner>sebsg@chromium.org</owner>
+  <description>The user opened Shared Highlighting in What's New.</description>
+</action>
+
+<action name="WhatsNew.UseChromeByDefault">
+  <owner>cheickcisse@google.com</owner>
+  <owner>sebsg@chromium.org</owner>
+  <description>The user opened Chrome By Default in What's New.</description>
+</action>
+
 <action name="Win10WelcomePage_SetAsDefaultBrowser">
   <owner>pmonette@chromium.org</owner>
   <description>
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index 3e1a174..e4a781c 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -11480,7 +11480,7 @@
   <int value="2" label="Settings - pairing dialog"/>
   <int value="3" label="Bluetooth Quick Settings"/>
   <int value="4" label="Standalone Pairing dialog"/>
-  <int value="5" label="Paired notification"/>
+  <int value="5" label="Paired notification (obsolete)"/>
   <int value="6" label="Connected toast"/>
   <int value="7" label="Disconnected toast"/>
   <int value="8" label="OOBE HID Detection"/>
@@ -28033,6 +28033,19 @@
   <int value="1" label="Size Unknown"/>
 </enum>
 
+<enum name="DownloadInterstitialUIAction">
+  <int value="0" label="Interstitial opened"/>
+  <int value="1" label="Download completed"/>
+  <int value="2" label="Download cancelled"/>
+  <int value="3" label="Download paused"/>
+  <int value="4" label="Download resumed"/>
+  <int value="5" label="Download opened"/>
+  <int value="6" label="Download deleted"/>
+  <int value="7" label="Download reinitiated"/>
+  <int value="8" label="Download shared"/>
+  <int value="9" label="Download renamed"/>
+</enum>
+
 <enum name="DownloadItem.DangerousFileType">
   <int value="0" label="unknown"/>
   <int value="1" label="ad"/>
@@ -58179,6 +58192,7 @@
       label="CryptAuthV2DeviceActivityStatusUseConnectivity:enabled"/>
   <int value="-1156179600" label="OmniboxRichEntitySuggestions:enabled"/>
   <int value="-1155543191" label="CopylessPaste:disabled"/>
+  <int value="-1155411808" label="HoldingSpacePredictability:enabled"/>
   <int value="-1155071457"
       label="CCTResizableAllowResizeByUserGesture:disabled"/>
   <int value="-1154834060" label="OmniboxRichAutocompletion:disabled"/>
@@ -58307,6 +58321,7 @@
   <int value="-1074107607" label="data-reduction-proxy-experiment"/>
   <int value="-1073479583" label="ShowArcFilesApp:disabled"/>
   <int value="-1073388569" label="TerminalDev:enabled"/>
+  <int value="-1072911844" label="HoldingSpaceSuggestions:enabled"/>
   <int value="-1072337227" label="FilesArchivemount2:disabled"/>
   <int value="-1071471678" label="enable-finch-seed-delta-compression"/>
   <int value="-1071043945" label="VerticalSnap:enabled"/>
@@ -59275,6 +59290,7 @@
   <int value="-498740735" label="ArcUsbHost:disabled"/>
   <int value="-498463128" label="MacSystemShareMenu:enabled"/>
   <int value="-498412005" label="EnableDrDc:disabled"/>
+  <int value="-497986393" label="HoldingSpacePredictability:disabled"/>
   <int value="-497571337" label="SkipUndecryptablePasswords:enabled"/>
   <int value="-496989565"
       label="DesktopPWAsFlashAppNameInsteadOfOrigin:disabled"/>
@@ -59368,6 +59384,7 @@
   <int value="-433879402"
       label="EnableAmbientAuthenticationInIncognito:disabled"/>
   <int value="-432612065" label="AImageReader:enabled"/>
+  <int value="-432358189" label="ShelfFocusOrderV1:disabled"/>
   <int value="-431553693" label="ChangePasswordAffiliationInfo:disabled"/>
   <int value="-430369215" label="AssistPersonalInfo:disabled"/>
   <int value="-430360431" label="disable-password-generation"/>
@@ -59538,6 +59555,7 @@
   <int value="-325271559" label="NtpRepeatableQueries:enabled"/>
   <int value="-324786035"
       label="EnableAmbientAuthenticationInGuestSession:enabled"/>
+  <int value="-324099334" label="HatsUseNewHistograms:disabled"/>
   <int value="-323913169" label="PasswordNotesWithBackup:enabled"/>
   <int value="-323831744" label="token-binding:enabled"/>
   <int value="-323508281" label="VrWebInputEditing:disabled"/>
@@ -61070,6 +61088,7 @@
   <int value="620189062" label="TabFreeze:enabled"/>
   <int value="620989380" label="ImeInputLogicFst:enabled"/>
   <int value="621484660" label="ReorderBookmarks:disabled"/>
+  <int value="622027416" label="HoldingSpaceSuggestions:disabled"/>
   <int value="623112705"
       label="IPH_KeyboardAccessoryPaymentVirtualCard:disabled"/>
   <int value="623772100" label="EnableIncognitoWindowCounter:disabled"/>
@@ -62401,6 +62420,7 @@
   <int value="1419984081"
       label="DesktopPWAsFlashAppNameInsteadOfOrigin:enabled"/>
   <int value="1420007919" label="SyncTrustedVaultPassphrasePromo:disabled"/>
+  <int value="1421267643" label="HoldingSpaceRefresh:disabled"/>
   <int value="1421620678" label="simple-clear-browsing-data-support-string"/>
   <int value="1422421509" label="SetTimeoutWithoutClamp:disabled"/>
   <int value="1422462035" label="PaymentRequestBasicCard:disabled"/>
@@ -62569,6 +62589,7 @@
   <int value="1520754417" label="ConfirmationChip:enabled"/>
   <int value="1524178643" label="AppServiceExternalProtocol:enabled"/>
   <int value="1526489044" label="NtpRealboxMatchSearchboxTheme:disabled"/>
+  <int value="1526574513" label="HoldingSpaceRefresh:enabled"/>
   <int value="1526718531"
       label="DarkenWebsitesCheckboxInThemesSetting:enabled"/>
   <int value="1527172748" label="disable-http2-grease-settings"/>
@@ -62979,6 +63000,7 @@
   <int value="1795214277" label="SupportForAddPasswordsInSettings:disabled"/>
   <int value="1796436890" label="MinorModeSupport:enabled"/>
   <int value="1796592669" label="InstalledAppsInCbd:disabled"/>
+  <int value="1797002314" label="HatsUseNewHistograms:enabled"/>
   <int value="1798347197"
       label="ContextualSuggestionsIPHReverseScroll:disabled"/>
   <int value="1799521026" label="LegacyTLSEnforced:disabled"/>
@@ -63312,6 +63334,7 @@
   <int value="1990528959" label="SchemefulSameSite:disabled"/>
   <int value="1990562608"
       label="LinkManagedNoticeToChromeUIManagementURL:enabled"/>
+  <int value="1990656254" label="ShelfFocusOrderV1:enabled"/>
   <int value="1990670943"
       label="AutofillEnableLocalCardMigrationForNonSyncUser:disabled"/>
   <int value="1990873642"
@@ -67926,6 +67949,12 @@
   <int value="2" label="Unified mode"/>
 </enum>
 
+<enum name="MultipleUserProfilesState">
+  <int value="0" label="Unknown"/>
+  <int value="1" label="Single user profile"/>
+  <int value="2" label="Multiple user profiles"/>
+</enum>
+
 <enum name="MultiProfileSessionMode">
   <obsolete>
     Deprecated 09/2017. See histogram MultiProfile.SessionMode.
@@ -86304,6 +86333,7 @@
   <int value="2" label="Settings"/>
   <int value="3" label="Shown"/>
   <int value="4" label="Rejected"/>
+  <int value="5" label="ClosedByAnotherDialog"/>
 </enum>
 
 <enum name="SafeBrowsingUserConsentVsUrlCheckRaceResult">
@@ -97318,119 +97348,137 @@
   =====>
 -->
 
+  <int value="13666299" label="CROS Cr50 0.5.6"/>
   <int value="29785307" label="CROS Cr50 0.1.2"/>
+  <int value="31386678" label="CROS Cr50 0.6.91"/>
   <int value="67287287" label="CROS Cr50 0.4.26 aka 0.6.0"/>
   <int value="91611772" label="CROS Cr50 0.4.21"/>
   <int value="91664959" label="CROS Cr50 0.0.16"/>
   <int value="113099773" label="CROS Cr50 0.0.23 Eve Flags 0x7f00(prod)"/>
   <int value="125416236" label="CROS Cr50 0.3.7"/>
+  <int value="137227137" label="CROS Cr50 0.6.92"/>
   <int value="157181839" label="IFX 9655 rev 41 fw 4.34 build 03f2"/>
-  <int value="161246193" label="CROS Cr50 0.6.73"/>
   <int value="189188535" label="CROS Cr50 0.4.19"/>
   <int value="228456405" label="CROS Cr50 0.3.11"/>
   <int value="230386903" label="CROS Cr50 0.0.24 Eve Flags 0x7f00(prod)"/>
   <int value="245471087" label="CROS Cr50 0.4.25"/>
-  <int value="258802378" label="CROS Cr50 0.6.8"/>
+  <int value="267286010" label="CROS Cr50 0.6.40"/>
   <int value="276176597" label="CROS Cr50 0.1.0 Flags 0x10(pre-pvt)"/>
+  <int value="297017579" label="CROS Cr50 0.6.60 aka 0.6.80"/>
   <int value="305524852" label="IFX 9655 rev 41 fw 4.32 build 036f"/>
-  <int value="313880666" label="CROS Cr50 0.5.60"/>
   <int value="313962517" label="CROS Cr50 0.3.16"/>
-  <int value="326080143" label="CROS Cr50 0.6.5"/>
   <int value="337883107" label="CROS Cr50 0.4.20"/>
   <int value="368058567" label="STM d08"/>
   <int value="379654202" label="CROS Cr50 0.0.13"/>
   <int value="399636984" label="CROS Cr50 0.0.18"/>
+  <int value="415762088" label="CROS Cr50 0.5.5"/>
   <int value="431107149" label="CROS Cr50 ro 0.0.11 rw 0.3.22"/>
-  <int value="458627356" label="CROS Cr50 0.6.70"/>
-  <int value="477471965" label="CROS Cr50 0.5.30"/>
+  <int value="437666420" label="CROS Cr50 0.6.90"/>
+  <int value="477803868" label="CROS Cr50 0.5.112"/>
   <int value="487001745" label="IFX 9655 rev 38 fw 4.34 build 03f2"/>
+  <int value="498251593" label="CROS Cr50 0.5.4"/>
   <int value="517482723" label="IFX 9655 rev 38 fw 4.32 build 036f"/>
+  <int value="533446617" label="CROS Cr50 0.5.111"/>
   <int value="545386023" label="IFX 9670 rev 15 fw 6.43 build 00f3"/>
   <int value="562513455" label="CROS Cr50 0.4.12"/>
-  <int value="599422883" label="CROS Cr50 0.5.40"/>
+  <int value="563952990" label="CROS Cr50 0.6.51"/>
   <int value="618235807" label="CROS Cr50 0.3.18"/>
   <int value="639195905" label="IFX 9655 rev 35 fw 4.32 build 036f"/>
+  <int value="640048866" label="CROS Cr50 0.4.8"/>
+  <int value="679016111" label="CROS Cr50 0.5.60"/>
   <int value="691364586" label="CROS Cr50 0.0.22 Eve Flags 0xff00(unknown)"/>
+  <int value="705140733" label="CROS Cr50 0.6.111"/>
   <int value="707846933" label="CROS Cr50 0.1.1 Flags 0x10(pre-pvt)"/>
+  <int value="719751295" label="CROS Cr50 0.6.120"/>
   <int value="752842103" label="CROS Cr50 0.0.25 Flags 0x10(pre-pvt)"/>
+  <int value="817381184" label="CROS Cr50 0.5.2"/>
+  <int value="823358270" label="CROS Cr50 0.6.93"/>
   <int value="832251848" label="CROS Cr50 0.4.18"/>
   <int value="839444603" label="CROS Cr50 0.3.21"/>
   <int value="847042924" label="IFX 9645 rev 78 fw 133.33 build 00e3"/>
-  <int value="864316587" label="CROS Cr50 0.6.7"/>
-  <int value="873026328" label="CROS Cr50 0.6.80"/>
-  <int value="888518203" label="CROS Cr50 0.6.72"/>
+  <int value="849048014" label="CROS Cr50 0.6.5"/>
+  <int value="867657196" label="CROS Cr50 0.2.2"/>
+  <int value="888846912" label="CROS Cr50 0.6.50"/>
   <int value="893364096" label="CROS Cr50 0.3.3"/>
+  <int value="894811053" label="CROS Cr50 0.5.100"/>
+  <int value="907257449" label="CROS Cr50 0.6.9"/>
+  <int value="921986551" label="CROS Cr50 0.6.70"/>
   <int value="928190862" label="CROS Cr50 0.0.17"/>
   <int value="928401938" label="CROS Cr50 ro 0.0.11 rw w0.4.24"/>
-  <int value="952515232" label="CROS Cr50 0.6.9"/>
+  <int value="961500628" label="CROS Cr50 0.5.11"/>
   <int value="969849518" label="CROS Cr50 0.4.9 Flags 0x10(pre-pvt)"/>
   <int value="987235505" label="CROS Cr50 0.0.20"/>
   <int value="987973414" label="IFX 9670 rev 15 fw 6.40 build 00be"/>
   <int value="1001367086" label="CROS Cr50 0.3.15"/>
   <int value="1009763914" label="CROS Cr50 0.4.10"/>
   <int value="1013730596" label="CROS Cr50 0.0.26 Flags 0x10(pre-pvt)"/>
-  <int value="1017773041" label="CROS Cr50 0.5.4"/>
-  <int value="1026125897" label="CROS Cr50 0.5.5"/>
+  <int value="1026059105" label="CROS Cr50 0.3.4"/>
   <int value="1039624416" label="CROS Cr50 0.3.10"/>
-  <int value="1046053465" label="CROS Cr50 0.5.93"/>
   <int value="1048372479" label="CROS Cr50 0.6.4"/>
   <int value="1065916186" label="CROS Cr50 0.0.19"/>
+  <int value="1069046756" label="CROS Cr50 0.5.51"/>
   <int value="1080347583" label="CROS Cr50 0.6.2"/>
   <int value="1123680979" label="CROS Cr50 0.3.4"/>
-  <int value="1180480129" label="CROS Cr50 0.5.100"/>
   <int value="1184698907" label="CROS Cr50 0.3.23"/>
   <int value="1190683265" label="CROS Cr50 0.0.14"/>
   <int value="1204349964" label="CROS Cr50 0.6.3"/>
-  <int value="1247494716" label="CROS Cr50 0.5.6"/>
-  <int value="1260163786" label="CROS Cr50 0.5.9"/>
+  <int value="1243686976" label="CROS Cr50 0.4.17"/>
   <int value="1290177221" label="CROS Cr50 0.4.6 Flags 0x10(pre-pvt)"/>
+  <int value="1294717337" label="CROS Cr50 0.6.30"/>
   <int value="1311411160" label="WEC 345"/>
-  <int value="1319687001" label="CROS Cr50 0.5.51"/>
-  <int value="1334316191" label="CROS Cr50 0.5.20"/>
+  <int value="1318849875" label="CROS Cr50 0.6.100"/>
   <int value="1353576267" label="IFX 9635 fw 3.18 build 0009"/>
+  <int value="1374260250" label="CROS Cr50 0.6.7"/>
+  <int value="1394118225" label="CROS Cr50 0.6.6"/>
   <int value="1395572841" label="CROS Cr50 0.4.15 Flags 0x10(pre-pvt)"/>
-  <int value="1417513178" label="CROS Cr50 0.6.40"/>
+  <int value="1419460966" label="CROS Cr50 0.6.71"/>
+  <int value="1432238438" label="CROS Cr50 0.5.92"/>
   <int value="1437720528" label="IFX 9645 rev 78 fw 133.32 build 0050"/>
+  <int value="1440786499" label="CROS Cr50 0.6.72"/>
   <int value="1451134301" label="IFX 9635 147.18 build 000f"/>
-  <int value="1468283044" label="CROS Cr50 0.6.93"/>
+  <int value="1451860784" label="CROS Cr50 0.6.110"/>
+  <int value="1478323543" label="CROS Cr50 0.5.120"/>
   <int value="1490841853" label="IFX 9645 rev 49 fw 133.32 build 0050"/>
-  <int value="1508422391" label="CROS Cr50 0.6.6"/>
+  <int value="1514324233" label="CROS Cr50 0.5.1"/>
   <int value="1520081310" label="CROS Cr50 0.0.22 variant"/>
   <int value="1521866659" label="CROS Cr50 0.4.13 Flags 0x10(pre-pvt)"/>
-  <int value="1591615950" label="CROS Cr50 0.6.51"/>
+  <int value="1567731004" label="CROS Cr50 0.5.9"/>
   <int value="1607230944" label="CROS Cr50 0.4.5 Flags 0x10(pre-pvt)"/>
   <int value="1632371059" label="CROS Cr50 0.0.22"/>
-  <int value="1639930613" label="CROS Cr50 0.6.30"/>
   <int value="1716634300" label="IFX 9645 rev 45 fw 133.32 build 0050"/>
   <int value="1717226620" label="CROS Cr50 0.4.14 Flags 0x10(pre-pvt)"/>
   <int value="1733077393" label="IFX 9645 rev 49 fw 133.33 build 00e3"/>
+  <int value="1758758919" label="CROS Cr50 0.6.130"/>
   <int value="1774347833" label="CROS Cr50 0.0.15"/>
   <int value="1787609211" label="CROS Cr50 0.3.26 aka 0.5.0"/>
   <int value="1799811131" label="CROS Cr50 0.3.9"/>
+  <int value="1800672648" label="CROS Cr50 0.5.30"/>
+  <int value="1820069194" label="CROS Cr50 0.6.10 aka 0.6.20"/>
   <int value="1828625721" label="IFX 9655 rev 32 fw 4.31 build 02c2"/>
-  <int value="1845731594" label="CROS Cr50 0.6.92"/>
+  <int value="1841636222" label="CROS Cr50 0.5.7"/>
   <int value="1848357394" label="CROS Cr50 0.4.11 Flags 0x10(pre-pvt)"/>
   <int value="1861735666" label="CROS Cr50 0.2.1 Flags 0x10(pre-pvt)"/>
+  <int value="1862442392" label="CROS Cr50 0.5.40"/>
   <int value="1865292977" label="CROS Cr50 0.0.24 aka 0.3.0"/>
   <int value="1887455524" label="CROS Cr50 0.0.21"/>
   <int value="1897824456" label="CROS Cr50 0.4.23"/>
   <int value="1902169266" label="CROS Cr50 0.4.16"/>
   <int value="1903933708" label="CROS Cr50 0.4.3 Flags 0x10(pre-pvt)"/>
-  <int value="1929704419" label="CROS Cr50 0.5.11"/>
   <int value="1935803215" label="CROS Cr50 0.3.25"/>
   <int value="1941011596" label="IFX 9655 rev 35 fw 4.34 build 03f2"/>
   <int value="1953654937" label="IFX 9645 rev 45 fw 133.33 build 00e3"/>
-  <int value="1955921646" label="CROS Cr50 0.6.100"/>
+  <int value="1994299966" label="CROS Cr50 0.4.27"/>
   <int value="2024714959" label="IFX 9655 rev 32 fw 4.34 build 03f2"/>
+  <int value="2025600313" label="CROS Cr50 0.5.10 aka 0.5.20"/>
   <int value="2036182876" label="CROS Cr50 0.3.24"/>
-  <int value="2053502708" label="CROS Cr50 0.6.20"/>
   <int value="2061474747"
       label="CROS Cr50 0.2.2 aka 0.4.4 Flags 0x10(pre-pvt)"/>
-  <int value="2064557869" label="CROS Cr50 0.5.7"/>
+  <int value="2077540682" label="CROS Cr50 0.6.73"/>
+  <int value="2088913185" label="CROS Cr50 0.6.8"/>
   <int value="2104725364" label="CROS Cr50 0.3.20"/>
   <int value="2109398286" label="CROS Cr50 0.4.7"/>
-  <int value="2115590734" label="CROS Cr50 0.6.91"/>
   <int value="2127616984" label="CROS Cr50 0.6.1"/>
+  <int value="2128561741" label="CROS Cr50 0.5.93"/>
 </enum>
 
 <enum name="TracingFinalizationDisallowedReason">
diff --git a/tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS b/tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS
index 7d8b833..c9dd8fe 100644
--- a/tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS
+++ b/tools/metrics/histograms/metadata/METRIC_REVIEWER_OWNERS
@@ -8,6 +8,7 @@
 andzaytsev@google.com
 ckitagawa@chromium.org
 sinansahin@google.com
+mvanouwerkerk@chromium.org
 # apps
 nancylingwang@chromium.org
 tby@chromium.org
diff --git a/tools/metrics/histograms/metadata/android/OWNERS b/tools/metrics/histograms/metadata/android/OWNERS
index df78a952..de26d622 100644
--- a/tools/metrics/histograms/metadata/android/OWNERS
+++ b/tools/metrics/histograms/metadata/android/OWNERS
@@ -6,3 +6,4 @@
 mthiesse@chromium.org
 andzaytsev@google.com
 ckitagawa@chromium.org
+mvanouwerkerk@chromium.org
diff --git a/tools/metrics/histograms/metadata/android/histograms.xml b/tools/metrics/histograms/metadata/android/histograms.xml
index eabd7d7..c53a78b0 100644
--- a/tools/metrics/histograms/metadata/android/histograms.xml
+++ b/tools/metrics/histograms/metadata/android/histograms.xml
@@ -2255,6 +2255,9 @@
 
 <histogram name="Android.MemoryPressureMonitor.GetMyMemoryState.Failed.Time"
     units="microseconds" expires_after="M77">
+  <obsolete>
+    Removed 09/2022. Expired and not needed anymore.
+  </obsolete>
   <owner>ssid@chromium.org</owner>
   <summary>
     The duration of each failed ActivityManager.getMyMemoryState() call made by
@@ -2270,6 +2273,9 @@
 
 <histogram name="Android.MemoryPressureMonitor.GetMyMemoryState.Succeeded.Time"
     units="microseconds" expires_after="2020-04-26">
+  <obsolete>
+    Removed 09/2022. Expired and not needed anymore.
+  </obsolete>
   <owner>ssid@chromium.org</owner>
   <summary>
     The duration of each successful ActivityManager.getMyMemoryState() call made
@@ -2460,6 +2466,17 @@
   </summary>
 </histogram>
 
+<histogram name="Android.MultipleUserProfilesState"
+    enum="MultipleUserProfilesState" expires_after="2023-03-23">
+  <owner>ckitagawa@chromium.org</owner>
+  <owner>yfriedman@chromium.org</owner>
+  <owner>chrome-metrics-team@google.com</owner>
+  <summary>
+    Records whether multiple user profiles are present in Android. This is
+    recorded every time a metrics log is closed.
+  </summary>
+</histogram>
+
 <histogram name="Android.MultiWindowMode.Active" enum="BooleanEnabled"
     expires_after="never">
 <!-- expires-never: topline metric for monitoring multi-window mode usage on Chrome for Android. -->
diff --git a/tools/metrics/histograms/metadata/ash/histograms.xml b/tools/metrics/histograms/metadata/ash/histograms.xml
index b2cc8ed..22276b2a 100644
--- a/tools/metrics/histograms/metadata/ash/histograms.xml
+++ b/tools/metrics/histograms/metadata/ash/histograms.xml
@@ -3520,6 +3520,22 @@
   </summary>
 </histogram>
 
+<histogram name="Ash.PrivacyIndicators.{Icon}.AnimationSmoothness" units="%"
+    expires_after="2023-09-19">
+  <owner>leandre@chromium.org</owner>
+  <owner>cros-status-area-eng@google.com</owner>
+  <summary>
+    Animation smoothness of the privacy indicators {Icon} fade in animation.
+    This occurs when an app is accessing camera/microphone or screen sharing and
+    a green indicator appears on the status area button.
+  </summary>
+  <token key="Icon">
+    <variant name="CameraIcon" summary="Camera icon"/>
+    <variant name="MicrophoneIcon" summary="Microphone icon"/>
+    <variant name="ScreenshareIcon" summary="Screen share icon"/>
+  </token>
+</histogram>
+
 <histogram name="Ash.Projector.CreationFlow.{TabletOrClamshell}"
     enum="ProjectorCreationFlow" expires_after="2022-12-01">
   <owner>tobyhuang@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/browser/histograms.xml b/tools/metrics/histograms/metadata/browser/histograms.xml
index 3393b33..6a7b7527 100644
--- a/tools/metrics/histograms/metadata/browser/histograms.xml
+++ b/tools/metrics/histograms/metadata/browser/histograms.xml
@@ -89,6 +89,9 @@
 
 <histogram name="Browser.ChromeOS.HatsSatisfaction{Survey}" units="score"
     expires_after="2023-01-01">
+  <obsolete>
+    M109; Replaced by &quot;ChromeOS.HaTS.*&quot;.
+  </obsolete>
   <owner>aalsum@chromium.org</owner>
   <owner>jackshira@google.org</owner>
   <owner>cros-telemetry@google.com</owner>
diff --git a/tools/metrics/histograms/metadata/chromeos/histograms.xml b/tools/metrics/histograms/metadata/chromeos/histograms.xml
index bddd54d..00df182 100644
--- a/tools/metrics/histograms/metadata/chromeos/histograms.xml
+++ b/tools/metrics/histograms/metadata/chromeos/histograms.xml
@@ -737,6 +737,7 @@
     <variant name="kCommandLogs"/>
     <variant name="kCommandLogsVerbose"/>
     <variant name="kFeedbackLogs"/>
+    <variant name="kVarLogFileLogs"/>
     <variant name="PopulateDictionaryValue"/>
     <variant name="SerializeLogsAsJSON"/>
   </token>
diff --git a/tools/metrics/histograms/metadata/compositing/histograms.xml b/tools/metrics/histograms/metadata/compositing/histograms.xml
index 565aadb..52cdc4d 100644
--- a/tools/metrics/histograms/metadata/compositing/histograms.xml
+++ b/tools/metrics/histograms/metadata/compositing/histograms.xml
@@ -511,11 +511,26 @@
     The time that the renderer's main thread blocked waiting for the impl thread
     to commit. This is only reported if the main thread blocked.
 
-    Warning: This metric may include reports from clients with low-resolution
-    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
-    will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
-    solution.
+    Drops reports on clients with low-resolution clocks, biasing to a portion of
+    the population on Windows. See Windows.HasHighResolutionTimeTicks for the
+    affected sample.
+  </summary>
+</histogram>
+
+<histogram
+    name="Compositing.MainThreadBlockedDuringCommitTime.ApplyCompositorChanges"
+    units="microseconds" expires_after="2023-03-19">
+  <owner>szager@chromium.org</owner>
+  <owner>pdr@chromium.org</owner>
+  <owner>paint-dev@chromium.org</owner>
+  <summary>
+    The time that ApplyCompositorChanges is blocked waiting for the impl thread
+    to commit. This is a subset of the total time spent in
+    Compositing.MainThreadBlockedDuringCommitTime.
+
+    Drops reports on clients with low-resolution clocks, biasing to a portion of
+    the population on Windows. See Windows.HasHighResolutionTimeTicks for the
+    affected sample.
   </summary>
 </histogram>
 
diff --git a/tools/metrics/histograms/metadata/download/histograms.xml b/tools/metrics/histograms/metadata/download/histograms.xml
index 1ed3437..ee419c6 100644
--- a/tools/metrics/histograms/metadata/download/histograms.xml
+++ b/tools/metrics/histograms/metadata/download/histograms.xml
@@ -450,6 +450,16 @@
   <summary>The reason that a download was interrupted.</summary>
 </histogram>
 
+<histogram name="Download.Interstitial.UIAction"
+    enum="DownloadInterstitialUIAction" expires_after="2023-09-26">
+  <owner>alexmitra@chromium.org</owner>
+  <owner>clank-downloads@google.com</owner>
+  <summary>
+    Records any user action taken within a download interstitial. Download
+    interstitials are shown only on Android inside CCTs.
+  </summary>
+</histogram>
+
 <histogram name="Download.IOSDownloadARModelState.USDZ"
     enum="DownloadARModelState" expires_after="2022-12-05">
   <owner>sdefresne@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/enterprise/histograms.xml b/tools/metrics/histograms/metadata/enterprise/histograms.xml
index e2caadd..7941e7bc 100644
--- a/tools/metrics/histograms/metadata/enterprise/histograms.xml
+++ b/tools/metrics/histograms/metadata/enterprise/histograms.xml
@@ -662,6 +662,21 @@
   </token>
 </histogram>
 
+<histogram name="Enterprise.DeviceSignals.Collection.Request.{Signal}.Items"
+    units="items" expires_after="2023-03-01">
+  <owner>seblalancette@chromium.org</owner>
+  <owner>cbe-device-trust-eng@google.com</owner>
+  <summary>
+    Captures the number of items as part of the {Signal} signal collection
+    response. Recorded when the collection request was received. This histogram
+    applies only to parameterized signals.
+  </summary>
+  <token key="Signal">
+    <variant name="FileSystemInfo" summary="file system items"/>
+    <variant name="SystemSettings" summary="system setting items"/>
+  </token>
+</histogram>
+
 <histogram name="Enterprise.DeviceSignals.Collection.Success.{Signal}.Items"
     units="items" expires_after="2023-03-01">
   <owner>seblalancette@chromium.org</owner>
@@ -673,12 +688,48 @@
   </summary>
   <token key="Signal">
     <variant name="AntiVirus" summary="AntiVirus"/>
-    <variant name="FileSystemInfo" summary="file system information"/>
+    <variant name="FileSystemInfo" summary="file system items"/>
     <variant name="Hotfixes" summary="Hotfixes"/>
     <variant name="SystemSettings" summary="system settings"/>
   </token>
 </histogram>
 
+<histogram
+    name="Enterprise.DeviceSignals.Collection.{Outcome}.{Signal}.Latency"
+    units="ms" expires_after="2023-03-01">
+  <owner>seblalancette@chromium.org</owner>
+  <owner>cbe-device-trust-eng@google.com</owner>
+  <summary>
+    Captures the signal collection latency for the {Signal} signal. Recorded
+    only when the collection {Outcome}.
+  </summary>
+  <token key="Outcome">
+    <variant name="Failure" summary="failed"/>
+    <variant name="Success" summary="succeeded"/>
+  </token>
+  <token key="Signal">
+    <variant name="AntiVirus" summary="AntiVirus"/>
+    <variant name="FileSystemInfo" summary="file system items"/>
+    <variant name="Hotfixes" summary="Hotfixes"/>
+    <variant name="SystemSettings" summary="system settings"/>
+  </token>
+</histogram>
+
+<histogram name="Enterprise.DeviceSignals.Collection.{Signal}.Delta"
+    units="items" expires_after="2023-03-01">
+  <owner>seblalancette@chromium.org</owner>
+  <owner>cbe-device-trust-eng@google.com</owner>
+  <summary>
+    Captures the number of delta between requested and returned items as part of
+    the {Signal} signal collection response. Recorded when the collection
+    request was completed. This histogram applies only to parameterized signals.
+  </summary>
+  <token key="Signal">
+    <variant name="FileSystemInfo" summary="file system items"/>
+    <variant name="SystemSettings" summary="system setting items"/>
+  </token>
+</histogram>
+
 <histogram name="Enterprise.DeviceSignals.Collection.{Variant}"
     enum="DeviceSignalsSignalName" expires_after="2023-03-01">
   <owner>seblalancette@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/ios/histograms.xml b/tools/metrics/histograms/metadata/ios/histograms.xml
index 0fb0bc8b..d12cb6c 100644
--- a/tools/metrics/histograms/metadata/ios/histograms.xml
+++ b/tools/metrics/histograms/metadata/ios/histograms.xml
@@ -73,7 +73,7 @@
 </histogram>
 
 <histogram name="IOS.CaptivePortal.SecureConnectionFailed"
-    enum="CaptivePortalStatus" expires_after="2022-10-16">
+    enum="CaptivePortalStatus" expires_after="2023-10-16">
   <owner>ajuma@chromium.org</owner>
   <owner>michaeldo@chromium.org</owner>
   <summary>
@@ -1674,7 +1674,7 @@
   </summary>
 </histogram>
 
-<histogram name="IOS.Snapshots.CacheSize" units="KB" expires_after="2022-11-14">
+<histogram name="IOS.Snapshots.CacheSize" units="KB" expires_after="2023-11-14">
   <owner>ajuma@chromium.org</owner>
   <owner>edchin@chromium.org</owner>
   <summary>
diff --git a/tools/metrics/histograms/metadata/leveldb_proto/histograms.xml b/tools/metrics/histograms/metadata/leveldb_proto/histograms.xml
index 663b8c1..57fb7088 100644
--- a/tools/metrics/histograms/metadata/leveldb_proto/histograms.xml
+++ b/tools/metrics/histograms/metadata/leveldb_proto/histograms.xml
@@ -104,7 +104,7 @@
 </variants>
 
 <histogram name="LevelDB.ApproximateMemTableMemoryUse.{LevelDBClient}"
-    units="bytes" expires_after="2022-10-23">
+    units="bytes" expires_after="2023-02-26">
   <owner>nyquist@chromium.org</owner>
   <owner>salg@google.com</owner>
   <owner>chrome-owp-storage@google.com</owner>
@@ -116,7 +116,7 @@
 </histogram>
 
 <histogram name="ProtoDB.DestroySuccess.{LevelDBClient}" enum="BooleanSuccess"
-    expires_after="2022-10-23">
+    expires_after="2023-02-26">
   <owner>nyquist@chromium.org</owner>
   <owner>ssid@chromium.org</owner>
   <summary>Whether a ProtoDB Destroy call was successful or not.</summary>
@@ -124,7 +124,7 @@
 </histogram>
 
 <histogram name="ProtoDB.GetErrorStatus.{LevelDBClient}" enum="LevelDBStatus"
-    expires_after="2022-10-23">
+    expires_after="2023-02-26">
   <owner>nyquist@chromium.org</owner>
   <owner>ssid@chromium.org</owner>
   <summary>
@@ -134,7 +134,7 @@
 </histogram>
 
 <histogram name="ProtoDB.GetFound.{LevelDBClient}" enum="Boolean"
-    expires_after="2022-10-23">
+    expires_after="2023-02-26">
   <owner>nyquist@chromium.org</owner>
   <owner>ssid@chromium.org</owner>
   <summary>Whether a ProtoDB Get call found what was requested.</summary>
@@ -142,7 +142,7 @@
 </histogram>
 
 <histogram name="ProtoDB.GetSuccess.{LevelDBClient}" enum="BooleanSuccess"
-    expires_after="2022-10-23">
+    expires_after="2023-02-26">
   <owner>nyquist@chromium.org</owner>
   <owner>ssid@chromium.org</owner>
   <summary>Whether a ProtoDB Get call was successful or not.</summary>
@@ -150,7 +150,7 @@
 </histogram>
 
 <histogram name="ProtoDB.InitStatus.{LevelDBClient}" enum="LevelDBStatus"
-    expires_after="2022-10-23">
+    expires_after="2023-02-26">
   <owner>nyquist@chromium.org</owner>
   <owner>ssid@chromium.org</owner>
   <summary>The LevelDB Status from a ProtoDatabase Init call.</summary>
@@ -158,7 +158,7 @@
 </histogram>
 
 <histogram name="ProtoDB.LoadEntriesSuccess.{LevelDBClient}"
-    enum="BooleanSuccess" expires_after="2022-10-23">
+    enum="BooleanSuccess" expires_after="2023-02-26">
   <owner>nyquist@chromium.org</owner>
   <owner>ssid@chromium.org</owner>
   <summary>Whether a ProtoDB LoadEntries call was successful or not.</summary>
@@ -166,7 +166,7 @@
 </histogram>
 
 <histogram name="ProtoDB.LoadKeysAndEntriesSuccess.{LevelDBClient}"
-    enum="BooleanSuccess" expires_after="2022-10-23">
+    enum="BooleanSuccess" expires_after="2023-02-26">
   <owner>nyquist@chromium.org</owner>
   <owner>ssid@chromium.org</owner>
   <summary>
@@ -176,7 +176,7 @@
 </histogram>
 
 <histogram name="ProtoDB.LoadKeysSuccess.{LevelDBClient}" enum="BooleanSuccess"
-    expires_after="2022-10-23">
+    expires_after="2023-02-26">
   <owner>nyquist@chromium.org</owner>
   <owner>ssid@chromium.org</owner>
   <summary>Whether a ProtoDB LoadKeys call was successful or not.</summary>
@@ -198,7 +198,7 @@
 </histogram>
 
 <histogram name="ProtoDB.UpdateErrorStatus.{LevelDBClient}"
-    enum="LevelDBStatus" expires_after="2022-10-23">
+    enum="LevelDBStatus" expires_after="2023-02-26">
   <owner>nyquist@chromium.org</owner>
   <owner>ssid@chromium.org</owner>
   <summary>
@@ -208,7 +208,7 @@
 </histogram>
 
 <histogram name="ProtoDB.UpdateSuccess.{LevelDBClient}" enum="BooleanSuccess"
-    expires_after="2022-10-23">
+    expires_after="2023-02-26">
   <owner>nyquist@chromium.org</owner>
   <owner>ssid@chromium.org</owner>
   <summary>Whether a ProtoDB UpdateEntries call was successful or not.</summary>
diff --git a/tools/metrics/histograms/metadata/others/histograms.xml b/tools/metrics/histograms/metadata/others/histograms.xml
index 003ab36..927bb284 100644
--- a/tools/metrics/histograms/metadata/others/histograms.xml
+++ b/tools/metrics/histograms/metadata/others/histograms.xml
@@ -15003,7 +15003,7 @@
 </histogram>
 
 <histogram name="Web.CurrentOriginEqualsLastCommittedOrigin"
-    enum="BooleanEqual" expires_after="2022-11-17">
+    enum="BooleanEqual" expires_after="2023-11-17">
   <owner>ajuma@chromium.org</owner>
   <owner>gambard@chromium.org</owner>
   <summary>
diff --git a/tools/metrics/histograms/metadata/performance_controls/histograms.xml b/tools/metrics/histograms/metadata/performance_controls/histograms.xml
index dd02b67..2eb449ae 100644
--- a/tools/metrics/histograms/metadata/performance_controls/histograms.xml
+++ b/tools/metrics/histograms/metadata/performance_controls/histograms.xml
@@ -27,6 +27,19 @@
   </summary>
 </histogram>
 
+<histogram name="PerformanceControls.BatterySaver.IPHOpenSettings"
+    units="BooleanSettingsOpened" expires_after="2023-03-01">
+  <owner>agale@chromium.org</owner>
+  <owner>estalin@chromium.org</owner>
+  <owner>chrome-performance-ui-sea@google.com</owner>
+  <summary>
+    Logged each time the user opens the settings page through the link on the
+    battery saver mode IPH. This will be combined with an existing histogram
+    measuring the number of times the IPH is open to measure how the user
+    responds to it.
+  </summary>
+</histogram>
+
 <histogram name="PerformanceControls.HighEfficiency.BubbleAction"
     enum="HighEfficiencyBubbleActionType" expires_after="2023-03-01">
   <owner>agale@chromium.org</owner>
@@ -39,6 +52,30 @@
   </summary>
 </histogram>
 
+<histogram name="PerformanceControls.HighEfficiency.InfoIPHOpenSettings"
+    units="BooleanSettingsOpened" expires_after="2023-03-01">
+  <owner>agale@chromium.org</owner>
+  <owner>chrome-performance-ui-sea@google.com</owner>
+  <summary>
+    Logged each time the user opens the settings page through the link on the
+    high efficiency mode IPH. This will be combined with an existing histogram
+    measuring the number of times the IPH is open to measure how the user
+    responds to it.
+  </summary>
+</histogram>
+
+<histogram name="PerformanceControls.HighEfficiency.IPHEnableMode"
+    units="BooleanEnableMode" expires_after="2023-03-01">
+  <owner>agale@chromium.org</owner>
+  <owner>chrome-performance-ui-sea@google.com</owner>
+  <summary>
+    Logged each time the user enables high efficiency mode through the link on
+    the high efficiency mode IPH. This will be combined with an existing
+    histogram measuring the number of times the IPH is open to measure how the
+    user responds to it.
+  </summary>
+</histogram>
+
 </histograms>
 
 </histogram-configuration>
diff --git a/tools/metrics/histograms/metadata/security/histograms.xml b/tools/metrics/histograms/metadata/security/histograms.xml
index 70e7362..39c8162e 100644
--- a/tools/metrics/histograms/metadata/security/histograms.xml
+++ b/tools/metrics/histograms/metadata/security/histograms.xml
@@ -201,7 +201,7 @@
 </histogram>
 
 <histogram base="true" name="Security.PageEndReason" enum="PageEndReason"
-    expires_after="2022-10-10">
+    expires_after="2023-03-10">
   <owner>cthomp@chromium.org</owner>
   <owner>trusty-transport@chromium.org</owner>
   <summary>
diff --git a/tools/metrics/histograms/metadata/session/histograms.xml b/tools/metrics/histograms/metadata/session/histograms.xml
index 69af137..132d4ecd 100644
--- a/tools/metrics/histograms/metadata/session/histograms.xml
+++ b/tools/metrics/histograms/metadata/session/histograms.xml
@@ -840,7 +840,7 @@
 </histogram>
 
 <histogram name="Session.WebStates.NativeRestoreSession" enum="BooleanSuccess"
-    expires_after="2022-10-16">
+    expires_after="2023-10-16">
   <owner>justincohen@chromium.org</owner>
   <owner>ajuma@chromium.org</owner>
   <summary>
diff --git a/tools/metrics/histograms/metadata/sharing/histograms.xml b/tools/metrics/histograms/metadata/sharing/histograms.xml
index 9d5d9b0..140074f 100644
--- a/tools/metrics/histograms/metadata/sharing/histograms.xml
+++ b/tools/metrics/histograms/metadata/sharing/histograms.xml
@@ -584,7 +584,7 @@
 </histogram>
 
 <histogram name="Sharing.SharingHubDesktop.TimeToFetchFaviconPreviewImage"
-    units="ms" expires_after="2022-10-08">
+    units="ms" expires_after="2023-01-12">
   <owner>ellyjones@chromium.org</owner>
   <owner>src/chrome/browser/share/OWNERS</owner>
   <summary>
@@ -597,7 +597,7 @@
 </histogram>
 
 <histogram name="Sharing.SharingHubDesktop.TimeToFetchHQPreviewImage"
-    units="ms" expires_after="2022-10-08">
+    units="ms" expires_after="2023-01-12">
   <owner>ellyjones@chromium.org</owner>
   <owner>src/chrome/browser/share/OWNERS</owner>
   <summary>
diff --git a/tools/metrics/ukm/ukm.xml b/tools/metrics/ukm/ukm.xml
index 91e3f87e..590a2a5b 100644
--- a/tools/metrics/ukm/ukm.xml
+++ b/tools/metrics/ukm/ukm.xml
@@ -13608,6 +13608,9 @@
 </event>
 
 <event name="PageContentAnnotations" singular="True">
+  <obsolete>
+    Removed in 10/2022.
+  </obsolete>
   <owner>chrome-intelligence-core@google.com</owner>
   <owner>mcrouse@chromium.org</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 2fdb9a6..eda9ccf 100644
--- a/tools/perf/core/perfetto_binary_roller/binary_deps.json
+++ b/tools/perf/core/perfetto_binary_roller/binary_deps.json
@@ -5,16 +5,16 @@
             "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/linux_arm64/49b4b5dcbc312d8d2c3751cf29238b8efeb4e494/trace_processor_shell"
         },
         "win": {
-            "hash": "be4872c1a4df41e8b5e751d85266d95d99fd27e1",
-            "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/win/6f9968b593b7f806a59655e7fa1f3682b5c2f5aa/trace_processor_shell.exe"
+            "hash": "d760068a8e7eaabca5f96ad7b866a3340d2ab722",
+            "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/win/626735b5d9b233ae6ce10bf70f7fa397398e103f/trace_processor_shell.exe"
         },
         "linux_arm": {
             "hash": "58893933be305d3bfe0a72ebebcacde2ac3ca893",
             "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/linux_arm/49b4b5dcbc312d8d2c3751cf29238b8efeb4e494/trace_processor_shell"
         },
         "mac": {
-            "hash": "182c1a852aee872ccc7fbc57972d077b17ea0198",
-            "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/mac/6f9968b593b7f806a59655e7fa1f3682b5c2f5aa/trace_processor_shell"
+            "hash": "6c96e3d9e1fd174f97bce857994c7d5d725f82ea",
+            "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/mac/626735b5d9b233ae6ce10bf70f7fa397398e103f/trace_processor_shell"
         },
         "mac_arm64": {
             "hash": "e1ad4861384b06d911a65f035317914b8cc975c6",
diff --git a/tools/perf/expectations.config b/tools/perf/expectations.config
index 6a78142..46264e7 100644
--- a/tools/perf/expectations.config
+++ b/tools/perf/expectations.config
@@ -707,6 +707,7 @@
 
 # Benchmark: wasmpspdfkit
 crbug.com/1211795 [ mac ] wasmpspdfkit/https://pspdfkit.com/webassembly-benchmark/ [ Skip ]
+crbug.com/1371621 [ android ] wasmpspdfkit/https://pspdfkit.com/webassembly-benchmark/ [ Skip ]
 
 # Benchmark: webrtc
 crbug.com/1051644 [ win ] webrtc/pause_play_peerconnections [ Skip ]
diff --git a/tools/traffic_annotation/auditor/chromeos/safe_list.txt b/tools/traffic_annotation/auditor/chromeos/safe_list.txt
index 1258cbd2..06685e3 100644
--- a/tools/traffic_annotation/auditor/chromeos/safe_list.txt
+++ b/tools/traffic_annotation/auditor/chromeos/safe_list.txt
@@ -8,7 +8,7 @@
 all,chrome/browser/ash/customization/customization_document.cc
 all,ash/webui/projector_app/projector_xhr_sender.cc
 all,chromeos/ash/components/geolocation/simple_geolocation_request.cc
-all,ash/components/trial_group/trial_group_checker.cc
+all,chromeos/ash/components/trial_group/trial_group_checker.cc
 all,chrome/browser/ash/net/network_portal_detector_impl.cc
 all,chrome/browser/ash/policy/uploading/system_log_uploader.cc
 all,chromeos/geolocation/simple_geolocation_request.cc
diff --git a/ui/accessibility/ax_node_data.cc b/ui/accessibility/ax_node_data.cc
index 10c84ae6..8455a74 100644
--- a/ui/accessibility/ax_node_data.cc
+++ b/ui/accessibility/ax_node_data.cc
@@ -688,12 +688,38 @@
 
 void AXNodeData::SetDescription(const std::string& description) {
   AddStringAttribute(ax::mojom::StringAttribute::kDescription, description);
+
+  // It is possible for `SetDescription` to be called after
+  // `SetDescriptionExplicitlyEmpty`.
+  if (!description.empty() &&
+      GetDescriptionFrom() ==
+          ax::mojom::DescriptionFrom::kAttributeExplicitlyEmpty) {
+    RemoveIntAttribute(ax::mojom::IntAttribute::kDescriptionFrom);
+  }
+
+  DCHECK_EQ(description.empty(),
+            GetDescriptionFrom() ==
+                ax::mojom::DescriptionFrom::kAttributeExplicitlyEmpty)
+      << "If the accessible description of Role::" << role << " class: '"
+      << GetStringAttribute(ax::mojom::StringAttribute::kClassName)
+      << "' is being set to an empty string to improve the user experience, "
+         "call SetDescriptionExplicitlyEmpty instead of SetDescription.";
+
+  if (HasIntAttribute(ax::mojom::IntAttribute::kDescriptionFrom))
+    return;
+
+  SetDescriptionFrom(ax::mojom::DescriptionFrom::kAriaDescription);
 }
 
 void AXNodeData::SetDescription(const std::u16string& description) {
   SetDescription(base::UTF16ToUTF8(description));
 }
 
+void AXNodeData::SetDescriptionExplicitlyEmpty() {
+  SetDescriptionFrom(ax::mojom::DescriptionFrom::kAttributeExplicitlyEmpty);
+  SetDescription(std::string());
+}
+
 void AXNodeData::SetValue(const std::string& value) {
   AddStringAttribute(ax::mojom::StringAttribute::kValue, value);
 }
diff --git a/ui/accessibility/ax_node_data.h b/ui/accessibility/ax_node_data.h
index 229c004b..b23f0390 100644
--- a/ui/accessibility/ax_node_data.h
+++ b/ui/accessibility/ax_node_data.h
@@ -190,10 +190,22 @@
   // practice that should not be applied in production code.
   void SetNameExplicitlyEmpty();
 
-  // Adds the description attribute or replaces it if already present.
+  // Adds the description attribute or replaces it if already present. Also
+  // sets the DescriptionFrom attribute if not already set. Note that
+  // `SetDescription` must only be used to set a non-empty description, a
+  // condition enforced by a DCHECK. If an object should not have an accessible
+  // description in order to improve the user experience, use
+  // `SetDescriptionExplicitlyEmpty`.
   void SetDescription(const std::string& description);
   void SetDescription(const std::u16string& description);
 
+  // Indicates this object should not have an accessible description. One use
+  // case is to prevent screen readers from speaking redundant information, for
+  // instance if a View's description comes from a tooltip whose content is
+  // similar to that View's accessible name, the screen reader presentation may
+  // be overly verbose.
+  void SetDescriptionExplicitlyEmpty();
+
   // Adds the value attribute or replaces it if already present.
   void SetValue(const std::string& value);
   void SetValue(const std::u16string& value);
diff --git a/ui/accessibility/ax_node_data_unittest.cc b/ui/accessibility/ax_node_data_unittest.cc
index e3e3d8f..630950a 100644
--- a/ui/accessibility/ax_node_data_unittest.cc
+++ b/ui/accessibility/ax_node_data_unittest.cc
@@ -414,6 +414,44 @@
   EXPECT_EQ(data.GetNameFrom(), ax::mojom::NameFrom::kContents);
 }
 
+TEST(AXNodeDataTest, SetDescription) {
+  AXNodeData data;
+  data.role = ax::mojom::Role::kButton;
+
+  // Initially there is no description and no DescriptionFrom.
+  EXPECT_EQ("",
+            data.GetStringAttribute(ax::mojom::StringAttribute::kDescription));
+  EXPECT_EQ(data.GetDescriptionFrom(), ax::mojom::DescriptionFrom::kNone);
+
+  // When the DescriptionFrom is not specified it defaults to kAriaDescription.
+  data.SetDescription("foo");
+  EXPECT_EQ("foo",
+            data.GetStringAttribute(ax::mojom::StringAttribute::kDescription));
+  EXPECT_EQ(data.GetDescriptionFrom(),
+            ax::mojom::DescriptionFrom::kAriaDescription);
+
+  // Setting the description explicitly empty should both clear the string
+  // and update the DescriptionFrom.
+  data.SetDescriptionExplicitlyEmpty();
+  EXPECT_EQ("",
+            data.GetStringAttribute(ax::mojom::StringAttribute::kDescription));
+  EXPECT_EQ(data.GetDescriptionFrom(),
+            ax::mojom::DescriptionFrom::kAttributeExplicitlyEmpty);
+
+  // We currently do not enforce that the description gets set prior to the
+  // DescriptionFrom. As a result it is possible to have a DescriptionFrom
+  // value other than kNone and kAttributeExplicitlyEmpty while the description
+  // is an empty string.
+  data.SetDescriptionFrom(ax::mojom::DescriptionFrom::kTitle);
+  EXPECT_EQ("",
+            data.GetStringAttribute(ax::mojom::StringAttribute::kDescription));
+  EXPECT_EQ(data.GetDescriptionFrom(), ax::mojom::DescriptionFrom::kTitle);
+
+  // Setting the description to the empty string should not be done by
+  // SetDescription, which enforces that expectation with a DCHECK.
+  EXPECT_DCHECK_DEATH(data.SetDescription(""));
+}
+
 TEST(AXNodeDataTest, BitFieldsSanityCheck) {
   EXPECT_LT(static_cast<size_t>(ax::mojom::State::kMaxValue),
             sizeof(AXNodeData::state) * 8);
diff --git a/ui/accessibility/platform/ax_platform_node_cocoa.mm b/ui/accessibility/platform/ax_platform_node_cocoa.mm
index 4b2eb19..f3becb8 100644
--- a/ui/accessibility/platform/ax_platform_node_cocoa.mm
+++ b/ui/accessibility/platform/ax_platform_node_cocoa.mm
@@ -1523,18 +1523,10 @@
 }
 
 - (NSString*)AXHelp {
-  // TODO(aleventhal) Key shortcuts attribute should eventually get
-  // its own field. Follow what WebKit does for aria-keyshortcuts, see
-  // https://bugs.webkit.org/show_bug.cgi?id=159215 (WebKit bug).
-  NSString* desc =
-      [self getStringAttribute:ax::mojom::StringAttribute::kDescription];
-  NSString* key =
-      [self getStringAttribute:ax::mojom::StringAttribute::kKeyShortcuts];
-  if (!desc.length)
-    return key.length ? key : @"";
-  if (!key.length)
-    return desc;
-  return [NSString stringWithFormat:@"%@ %@", desc, key];
+  if (![self instanceActive])
+    return nil;
+
+  return [self getStringAttribute:ax::mojom::StringAttribute::kDescription];
 }
 
 - (id)AXValue {
diff --git a/ui/chromeos/translations/ui_chromeos_strings_af.xtb b/ui/chromeos/translations/ui_chromeos_strings_af.xtb
index 6360298f..48fb2ee 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_af.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_af.xtb
@@ -365,6 +365,7 @@
 <translation id="4290535918735525311">1 vouer is met Linux gedeel</translation>
 <translation id="4299729908419173967">Brasiliaans</translation>
 <translation id="4302605047395093221">Enigiemand wat hierdie toestel gebruik, moet die PIN invoer om aan hierdie selnetwerk te koppel</translation>
+<translation id="4303531889494116116">Hierdie netwerk is besig. Probeer later weer.</translation>
 <translation id="4309915981827077375">Algemene inligting</translation>
 <translation id="432252891123397018">Roemeens met standaardsleutelbord</translation>
 <translation id="4325128273762811722">Sloweens</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_az.xtb b/ui/chromeos/translations/ui_chromeos_strings_az.xtb
index 88323059..608aff2 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_az.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_az.xtb
@@ -367,6 +367,7 @@
 <translation id="4290535918735525311">Linux'da 1 qovluq paylaşıldı</translation>
 <translation id="4299729908419173967">Braziliya</translation>
 <translation id="4302605047395093221">Bu cihazdan istifadə edən hər kəs bu mobil şəbəkəyə qoşulmaq üçün PİN kodu daxil etməlidir</translation>
+<translation id="4303531889494116116">Bu şəbəkə məşğuldur. Sonra cəhd edin.</translation>
 <translation id="4309915981827077375">Ümumi məlumat</translation>
 <translation id="432252891123397018">Standart klaviatura ilə rumın dili</translation>
 <translation id="4325128273762811722">Sloven</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_bg.xtb b/ui/chromeos/translations/ui_chromeos_strings_bg.xtb
index 9f8692e..0d1efef 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_bg.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_bg.xtb
@@ -162,6 +162,7 @@
 <translation id="2389832672041313158">Бирмански</translation>
 <translation id="2392369802118427583">Активиране</translation>
 <translation id="240770291734945588">Свободно място: <ph name="SPACE_AVAILABLE" /></translation>
+<translation id="2417486498593892439">Вход в мрежата</translation>
 <translation id="2425665904502185219">Общ размер на файловете</translation>
 <translation id="2428749644083375155"><ph name="NUMBER_OF_ITEMS" /> елемента се копират в(ъв) „<ph name="FOLDER_NAME" />“</translation>
 <translation id="2448312741937722512">Тип</translation>
@@ -326,6 +327,7 @@
 <translation id="3830674330436234648">Възпроизвеждането не е възможно</translation>
 <translation id="383652340667548381">сръбски</translation>
 <translation id="385051799172605136">Назад</translation>
+<translation id="3851491607336266896">Установена е връзка – свързаността е ограничена</translation>
 <translation id="3855472144336161447">Немска (Neo 2) клавиатура</translation>
 <translation id="3858860766373142691">Име</translation>
 <translation id="3866249974567520381">Описание</translation>
@@ -939,6 +941,7 @@
 <translation id="8903931173357132290">Абитуриент</translation>
 <translation id="8912078710089354287">Куче, което маха с опашка</translation>
 <translation id="8919081441417203123">датски</translation>
+<translation id="8949925099261528566">Установена е връзка – няма достъп до интернет</translation>
 <translation id="8965697826696209160">Няма достатъчно място.</translation>
 <translation id="8997962250644902079">Китайски (традиционен, пинин)</translation>
 <translation id="8998871447376656508">Няма достатъчно свободно място в Google Диск за завършване на качването.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_bs.xtb b/ui/chromeos/translations/ui_chromeos_strings_bs.xtb
index 5fdfe07a..40371c9 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_bs.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_bs.xtb
@@ -367,6 +367,7 @@
 <translation id="4290535918735525311">1 folder se dijeli s Linuxom</translation>
 <translation id="4299729908419173967">brazilski</translation>
 <translation id="4302605047395093221">Sve osobe koje koriste ovaj uređaj će morati unijeti PIN da se povežu s ovom mobilnom mrežom</translation>
+<translation id="4303531889494116116">Mreža je zauzeta. Pokušajte ponovo kasnije.</translation>
 <translation id="4309915981827077375">Opće informacije</translation>
 <translation id="432252891123397018">rumunski sa standardnom tastaturom</translation>
 <translation id="4325128273762811722">slovenački</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ca.xtb b/ui/chromeos/translations/ui_chromeos_strings_ca.xtb
index 12f2c1e..a600229 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ca.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ca.xtb
@@ -162,6 +162,7 @@
 <translation id="2389832672041313158">Birmà (Birmània)</translation>
 <translation id="2392369802118427583">Activa</translation>
 <translation id="240770291734945588"><ph name="SPACE_AVAILABLE" /> disponibles</translation>
+<translation id="2417486498593892439">Inicia la sessió a la xarxa</translation>
 <translation id="2425665904502185219">Mida total dels fitxers</translation>
 <translation id="2428749644083375155">S'estan copiant <ph name="NUMBER_OF_ITEMS" /> elements a la carpeta <ph name="FOLDER_NAME" /></translation>
 <translation id="2448312741937722512">Tipus</translation>
@@ -326,6 +327,7 @@
 <translation id="3830674330436234648">No hi ha cap reproducció disponible</translation>
 <translation id="383652340667548381">Serbi</translation>
 <translation id="385051799172605136">Enrere</translation>
+<translation id="3851491607336266896">Connectat, connectivitat limitada</translation>
 <translation id="3855472144336161447">Neo 2 alemany</translation>
 <translation id="3858860766373142691">Nom</translation>
 <translation id="3866249974567520381">Descripció</translation>
@@ -939,6 +941,7 @@
 <translation id="8903931173357132290">Graduat</translation>
 <translation id="8912078710089354287">Gos remenant la cua</translation>
 <translation id="8919081441417203123">Danès</translation>
+<translation id="8949925099261528566">Connectat, sense Internet</translation>
 <translation id="8965697826696209160">No hi ha prou espai.</translation>
 <translation id="8997962250644902079">Xinès tradicional (pinyin)</translation>
 <translation id="8998871447376656508">No hi ha prou espai lliure a Google Drive per completar la pujada.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_cy.xtb b/ui/chromeos/translations/ui_chromeos_strings_cy.xtb
index eeaed01..444d0aac 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_cy.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_cy.xtb
@@ -162,6 +162,7 @@
 <translation id="2389832672041313158">Byrmaneg/Myanmar</translation>
 <translation id="2392369802118427583">Gweithredu</translation>
 <translation id="240770291734945588">Mae <ph name="SPACE_AVAILABLE" /> ar gael</translation>
+<translation id="2417486498593892439">Mewngofnodwch i'r rhwydwaith</translation>
 <translation id="2425665904502185219">Cyfanswm maint y ffeil</translation>
 <translation id="2428749644083375155">Wrthi'n copïo <ph name="NUMBER_OF_ITEMS" /> eitem i <ph name="FOLDER_NAME" /></translation>
 <translation id="2448312741937722512">Math</translation>
@@ -326,6 +327,7 @@
 <translation id="3830674330436234648">Nid oes chwarae ar gael</translation>
 <translation id="383652340667548381">Serbaidd</translation>
 <translation id="385051799172605136">Nôl</translation>
+<translation id="3851491607336266896">Cysylltwyd, cysylltedd cyfyngedig</translation>
 <translation id="3855472144336161447">Almaeneg Neo 2</translation>
 <translation id="3858860766373142691">Enw</translation>
 <translation id="3866249974567520381">Disgrifiad</translation>
@@ -938,6 +940,7 @@
 <translation id="8903931173357132290">Graddedig</translation>
 <translation id="8912078710089354287">Ci yn siglo'i gynffon</translation>
 <translation id="8919081441417203123">Daneg</translation>
+<translation id="8949925099261528566">Cysylltwyd, dim rhyngrwyd</translation>
 <translation id="8965697826696209160">Nid oes digon o le.</translation>
 <translation id="8997962250644902079">Pinyin Tseinëeg (Traddodiadol)</translation>
 <translation id="8998871447376656508">Nid oes digon o le ar gael yn eich Google Drive i gwblhau'r uwchlwythiad.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_da.xtb b/ui/chromeos/translations/ui_chromeos_strings_da.xtb
index cb9f245b..8e0a99e 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_da.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_da.xtb
@@ -162,6 +162,7 @@
 <translation id="2389832672041313158">Burmesisk/myanmarsk</translation>
 <translation id="2392369802118427583">Aktivér</translation>
 <translation id="240770291734945588"><ph name="SPACE_AVAILABLE" /> ledig plads</translation>
+<translation id="2417486498593892439">Log ind på netværk</translation>
 <translation id="2425665904502185219">Samlet filstørrelse</translation>
 <translation id="2428749644083375155">Kopierer <ph name="NUMBER_OF_ITEMS" /> elementer til <ph name="FOLDER_NAME" /></translation>
 <translation id="2448312741937722512">Type</translation>
@@ -326,6 +327,7 @@
 <translation id="3830674330436234648">Der er ingen tilgængelig afspilning.</translation>
 <translation id="383652340667548381">Serbisk</translation>
 <translation id="385051799172605136">Tilbage</translation>
+<translation id="3851491607336266896">Forbundet – begrænset forbindelse</translation>
 <translation id="3855472144336161447">Tysk (Neo 2)</translation>
 <translation id="3858860766373142691">Navn</translation>
 <translation id="3866249974567520381">Beskrivelse</translation>
@@ -939,6 +941,7 @@
 <translation id="8903931173357132290">Dimittend</translation>
 <translation id="8912078710089354287">Hund, der logrer med halen</translation>
 <translation id="8919081441417203123">Dansk</translation>
+<translation id="8949925099261528566">Forbundet – intet internet</translation>
 <translation id="8965697826696209160">Der er ikke nok plads.</translation>
 <translation id="8997962250644902079">Kinesisk (traditionelt) pinyin</translation>
 <translation id="8998871447376656508">Der er ikke nok ledig plads i Google Drev til at gennemføre uploaden.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_el.xtb b/ui/chromeos/translations/ui_chromeos_strings_el.xtb
index bcd1eda3..80617ae 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_el.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_el.xtb
@@ -164,6 +164,7 @@
 <translation id="2389832672041313158">Βιρμανικά/Μιανμάρ</translation>
 <translation id="2392369802118427583">Ενεργοποίηση</translation>
 <translation id="240770291734945588"><ph name="SPACE_AVAILABLE" /> διαθέσιμα</translation>
+<translation id="2417486498593892439">Σύνδεση στο δίκτυο</translation>
 <translation id="2425665904502185219">Συνολικό μέγεθος αρχείου</translation>
 <translation id="2428749644083375155">Αντιγραφή <ph name="NUMBER_OF_ITEMS" /> στοιχείων στον φάκελο <ph name="FOLDER_NAME" /></translation>
 <translation id="2448312741937722512">Τύπος</translation>
@@ -334,6 +335,7 @@
 <translation id="383652340667548381">Σερβικά
 </translation>
 <translation id="385051799172605136">Πίσω</translation>
+<translation id="3851491607336266896">Συνδέθηκε, περιορισμένη συνδεσιμότητα</translation>
 <translation id="3855472144336161447">Γερμανικά Neo 2</translation>
 <translation id="3858860766373142691">Όνομα</translation>
 <translation id="3866249974567520381">Περιγραφή</translation>
@@ -962,6 +964,7 @@
 <translation id="8912078710089354287">Σκύλος που κουνάει την ουρά του</translation>
 <translation id="8919081441417203123">Δανικά
 </translation>
+<translation id="8949925099261528566">Συνδέθηκε, χωρίς σύνδεση στο διαδίκτυο</translation>
 <translation id="8965697826696209160">Δεν υπάρχει αρκετός χώρος.</translation>
 <translation id="8997962250644902079">Κινεζικά (Παραδοσιακά) Pinyin</translation>
 <translation id="8998871447376656508">Ο ελεύθερος χώρος στο Google Drive δεν επαρκεί για την ολοκλήρωση της μεταφόρτωσης.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_fi.xtb b/ui/chromeos/translations/ui_chromeos_strings_fi.xtb
index 0198997..094a4b2 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_fi.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_fi.xtb
@@ -162,6 +162,7 @@
 <translation id="2389832672041313158">burma (Myanmar)</translation>
 <translation id="2392369802118427583">Aktivoi</translation>
 <translation id="240770291734945588"><ph name="SPACE_AVAILABLE" /> käytettävissä</translation>
+<translation id="2417486498593892439">Kirjaudu verkkoon</translation>
 <translation id="2425665904502185219">Tiedostokoko yhteensä</translation>
 <translation id="2428749644083375155">Kopioidaan <ph name="NUMBER_OF_ITEMS" /> kohdetta kansioon <ph name="FOLDER_NAME" /></translation>
 <translation id="2448312741937722512">Tyyppi</translation>
@@ -326,6 +327,7 @@
 <translation id="3830674330436234648">Toistoa ei ole saatavilla.</translation>
 <translation id="383652340667548381">serbia</translation>
 <translation id="385051799172605136">Takaisin</translation>
+<translation id="3851491607336266896">Yhdistetty, rajoitettu yhteys</translation>
 <translation id="3855472144336161447">saksa, Neo 2</translation>
 <translation id="3858860766373142691">Nimi</translation>
 <translation id="3866249974567520381">Kuvaus</translation>
@@ -939,6 +941,7 @@
 <translation id="8903931173357132290">Valmistunut</translation>
 <translation id="8912078710089354287">Häntää heiluttava koira</translation>
 <translation id="8919081441417203123">tanska</translation>
+<translation id="8949925099261528566">Yhdistetty, ei internetyhteyttä</translation>
 <translation id="8965697826696209160">Tallennustila ei riitä.</translation>
 <translation id="8997962250644902079">kiina (perinteinen, pinyin)</translation>
 <translation id="8998871447376656508">Google Drivessasi ei ole tarpeeksi tilaa latausta varten.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_fil.xtb b/ui/chromeos/translations/ui_chromeos_strings_fil.xtb
index 583c9ec8..82f26e8c 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_fil.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_fil.xtb
@@ -162,6 +162,7 @@
 <translation id="2389832672041313158">Burmese/Myanmar</translation>
 <translation id="2392369802118427583">I-activate</translation>
 <translation id="240770291734945588"><ph name="SPACE_AVAILABLE" /> ang available</translation>
+<translation id="2417486498593892439">Mag-sign in sa network</translation>
 <translation id="2425665904502185219">Kabuuang laki ng file</translation>
 <translation id="2428749644083375155">Kinokopya ang <ph name="NUMBER_OF_ITEMS" /> (na) item sa <ph name="FOLDER_NAME" /></translation>
 <translation id="2448312741937722512">Uri</translation>
@@ -326,6 +327,7 @@
 <translation id="3830674330436234648">Walang available na playback</translation>
 <translation id="383652340667548381">Serbian</translation>
 <translation id="385051799172605136">Bumalik</translation>
+<translation id="3851491607336266896">Nakakonekta, limitado ang koneksyon</translation>
 <translation id="3855472144336161447">German Neo 2</translation>
 <translation id="3858860766373142691">Pangalan</translation>
 <translation id="3866249974567520381">Paglalarawan</translation>
@@ -939,6 +941,7 @@
 <translation id="8903931173357132290">Nagtapos</translation>
 <translation id="8912078710089354287">Asong kumakawag-kawag ang buntot</translation>
 <translation id="8919081441417203123">Danish</translation>
+<translation id="8949925099261528566">Nakakonekta, walang internet</translation>
 <translation id="8965697826696209160">Walang sapat na espasyo.</translation>
 <translation id="8997962250644902079">Chinese (Traditional) Pinyin</translation>
 <translation id="8998871447376656508">Walang sapat na bakanteng espasyo sa iyong Google Drive para makumpleto ang pag-upload.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_gu.xtb b/ui/chromeos/translations/ui_chromeos_strings_gu.xtb
index 6b86b31..b84fcb1 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_gu.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_gu.xtb
@@ -162,6 +162,7 @@
 <translation id="2389832672041313158">બર્મીઝ/મ્યાનમાર</translation>
 <translation id="2392369802118427583">સક્રિય કરો</translation>
 <translation id="240770291734945588"><ph name="SPACE_AVAILABLE" /> ઉપલબ્ધ</translation>
+<translation id="2417486498593892439">નેટવર્ક પર સાઇન ઇન કરો</translation>
 <translation id="2425665904502185219">કુલ ફાઇલ કદ</translation>
 <translation id="2428749644083375155"><ph name="NUMBER_OF_ITEMS" /> આઇટમની <ph name="FOLDER_NAME" />માં કૉપિ કરી રહ્યાં છીએ</translation>
 <translation id="2448312741937722512">પ્રકાર</translation>
@@ -326,6 +327,7 @@
 <translation id="3830674330436234648">કોઇ પ્લેબેક ઉપલબ્ધ નથી.</translation>
 <translation id="383652340667548381">સર્બિયન</translation>
 <translation id="385051799172605136">પાછળ</translation>
+<translation id="3851491607336266896">કનેક્ટ થયું, મર્યાદિત કનેક્ટિવિટી</translation>
 <translation id="3855472144336161447">જર્મન નીઓ 2</translation>
 <translation id="3858860766373142691">નામ</translation>
 <translation id="3866249974567520381">વર્ણન</translation>
@@ -937,6 +939,7 @@
 <translation id="8903931173357132290">સ્નાતક</translation>
 <translation id="8912078710089354287">પૂંછડી હલાવી રહેલો કૂતરો</translation>
 <translation id="8919081441417203123">ડેનિશ</translation>
+<translation id="8949925099261528566">કનેક્ટ કર્યું, કોઈ ઇન્ટરનેટ નથી</translation>
 <translation id="8965697826696209160">પર્યાપ્ત સ્થાન નથી.</translation>
 <translation id="8997962250644902079">ચાઇનીઝ (પરંપરાગત) પિનયિન</translation>
 <translation id="8998871447376656508">અપલોડ પૂર્ણ કરવા માટે તમારી Google Driveમાં પર્યાપ્ત સ્પેસ નથી.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_hr.xtb b/ui/chromeos/translations/ui_chromeos_strings_hr.xtb
index 4bc1f90..837282a7 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_hr.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_hr.xtb
@@ -365,6 +365,7 @@
 <translation id="4290535918735525311">Jedna mapa podijeljena s Linuxom</translation>
 <translation id="4299729908419173967">brazilski</translation>
 <translation id="4302605047395093221">Svi koji koriste ovaj uređaj trebat će unijeti PIN da bi se povezali s tom mobilnom mrežom</translation>
+<translation id="4303531889494116116">Mreža je zauzeta. Pokušajte ponovo poslije.</translation>
 <translation id="4309915981827077375">Opće informacije</translation>
 <translation id="432252891123397018">rumunjski sa standardnom tipkovnicom</translation>
 <translation id="4325128273762811722">slovenski</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_hu.xtb b/ui/chromeos/translations/ui_chromeos_strings_hu.xtb
index 47efafa..f076cef9 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_hu.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_hu.xtb
@@ -162,6 +162,7 @@
 <translation id="2389832672041313158">burmai (Mianmar)</translation>
 <translation id="2392369802118427583">Aktiválás</translation>
 <translation id="240770291734945588"><ph name="SPACE_AVAILABLE" /> áll rendelkezésre</translation>
+<translation id="2417486498593892439">Bejelentkezés a hálózatba</translation>
 <translation id="2425665904502185219">Teljes fájlméret</translation>
 <translation id="2428749644083375155"><ph name="NUMBER_OF_ITEMS" /> elem másolása ide: <ph name="FOLDER_NAME" /></translation>
 <translation id="2448312741937722512">Típus</translation>
@@ -326,6 +327,7 @@
 <translation id="3830674330436234648">Nincs lejátszási lehetőség</translation>
 <translation id="383652340667548381">szerb</translation>
 <translation id="385051799172605136">Vissza</translation>
+<translation id="3851491607336266896">Csatlakoztatva, korlátozott kapcsolat</translation>
 <translation id="3855472144336161447">német Neo 2</translation>
 <translation id="3858860766373142691">Név</translation>
 <translation id="3866249974567520381">Leírás</translation>
@@ -939,6 +941,7 @@
 <translation id="8903931173357132290">Diplomás</translation>
 <translation id="8912078710089354287">Kutya csóválja a farkát</translation>
 <translation id="8919081441417203123">dán</translation>
+<translation id="8949925099261528566">Csatlakozva, nincs internet-hozzáférés</translation>
 <translation id="8965697826696209160">Nincs elég tárhely.</translation>
 <translation id="8997962250644902079">kínai (hagyományos) pinjin</translation>
 <translation id="8998871447376656508">Nincs elég szabad tárhelye a Google Drive-on a feltöltés befejezéséhez.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_id.xtb b/ui/chromeos/translations/ui_chromeos_strings_id.xtb
index 51d92a1..ddf7e3a 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_id.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_id.xtb
@@ -162,6 +162,7 @@
 <translation id="2389832672041313158">Burma/Myanmar</translation>
 <translation id="2392369802118427583">Aktifkan</translation>
 <translation id="240770291734945588"><ph name="SPACE_AVAILABLE" /> tersedia</translation>
+<translation id="2417486498593892439">Login ke jaringan</translation>
 <translation id="2425665904502185219">Ukuran file total</translation>
 <translation id="2428749644083375155">Menyalin <ph name="NUMBER_OF_ITEMS" /> item ke <ph name="FOLDER_NAME" /></translation>
 <translation id="2448312741937722512">Jenis</translation>
@@ -326,6 +327,7 @@
 <translation id="3830674330436234648">Pemutaran tidak tersedia</translation>
 <translation id="383652340667548381">Serb</translation>
 <translation id="385051799172605136">Kembali</translation>
+<translation id="3851491607336266896">Terhubung, konektivitas terbatas</translation>
 <translation id="3855472144336161447">Neo 2 Jerman</translation>
 <translation id="3858860766373142691">Nama</translation>
 <translation id="3866249974567520381">Deskripsi</translation>
@@ -939,6 +941,7 @@
 <translation id="8903931173357132290">Wisudawan</translation>
 <translation id="8912078710089354287">Anjing mengibaskan ekor</translation>
 <translation id="8919081441417203123">Denmark</translation>
+<translation id="8949925099261528566">Terhubung, tidak ada internet</translation>
 <translation id="8965697826696209160">Ruang tidak cukup.</translation>
 <translation id="8997962250644902079">Pinyin (Aksara Tradisional) China</translation>
 <translation id="8998871447376656508">Ruang penyimpanan di Google Drive tidak cukup untuk menyelesaikan upload.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ja.xtb b/ui/chromeos/translations/ui_chromeos_strings_ja.xtb
index 5d125494..48bf0674 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ja.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ja.xtb
@@ -157,6 +157,7 @@
 <translation id="2377319039870049694">リスト表示に切り替え</translation>
 <translation id="2377590462528165447"><ph name="NUMBER_OF_ITEMS" /> 個のフォルダが Linux と共有されています</translation>
 <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> 個のファイルを選択</translation>
+<translation id="2383454254762599978">ゴミ箱に移動</translation>
 <translation id="2387458720915042159">プロキシ接続タイプ</translation>
 <translation id="2389832672041313158">ビルマ語 / ミャンマー語</translation>
 <translation id="2392369802118427583">有効にする</translation>
@@ -288,6 +289,7 @@
 <translation id="3549797760399244642">drive.google.com にアクセスします...</translation>
 <translation id="3553048479571901246"><ph name="APP_NAME" /> でファイルを開くには、まず [Windows ファイル] フォルダにファイルをコピーしてください。</translation>
 <translation id="3556731189587832921">英語(アメリカ)(インターナショナル PC)キーボード</translation>
+<translation id="3557414470514932909"><ph name="FILE_NAME" /> をゴミ箱に移動しています</translation>
 <translation id="3567221313191587603">ファイルにオフラインでアクセスするには、ファイルを選択し、[<ph name="OFFLINE_CHECKBOX_NAME" />] をオンに切り替えます。</translation>
 <translation id="357479282490346887">リトアニア語</translation>
 <translation id="3587482841069643663">すべて</translation>
@@ -339,6 +341,7 @@
 <translation id="3975895378829046965">ベンガル語(表音)</translation>
 <translation id="4002066346123236978">タイトル</translation>
 <translation id="4017788180641807848">英語(アメリカ)(Workman)キーボード</translation>
+<translation id="4019998208269143058">クイック ファイルに固定</translation>
 <translation id="4040753847560036377">PUK が正しくありません</translation>
 <translation id="4057991113334098539">有効にしています...</translation>
 <translation id="4092890906744441904">アイルランド語</translation>
@@ -348,6 +351,7 @@
 <translation id="4157569377477607576">管理者のポリシーでは、次のことは推奨されていません。</translation>
 <translation id="4159731583141908892"><ph name="FILE_NAME" /> を移動しました。</translation>
 <translation id="4176286497474237543">ゴミ箱を今すぐ空にする</translation>
+<translation id="4179621117429069925">このアイテムはゴミ箱にあります</translation>
 <translation id="4186579485882418952">オフラインを有効にする</translation>
 <translation id="4193154014135846272">Google ドキュメント</translation>
 <translation id="4197674956721858839">zip 圧縮</translation>
@@ -377,6 +381,7 @@
 <translation id="4387004326333427325">認証証明書がリモートで拒否されました</translation>
 <translation id="4394214039309501350">外部リンク</translation>
 <translation id="4394980935660306080">今週</translation>
+<translation id="4398096759193130964">アイテムを復元するか、ゴミ箱から新しいフォルダにドラッグしてください</translation>
 <translation id="4401287888955153199">すべて解凍</translation>
 <translation id="4410695710508688828">抽出操作が失敗しました。<ph name="ERROR_MESSAGE" /></translation>
 <translation id="4418686080762064601">ファイルのショートカットを作成</translation>
@@ -432,6 +437,7 @@
 <translation id="4790766916287588578">ヒンディー語(字母)キーボード</translation>
 <translation id="4801956050125744859">両方を保持</translation>
 <translation id="4804827417948292437">アボカド</translation>
+<translation id="4805966553127040832"><ph name="COUNT" /> 個のアイテムを復元しています</translation>
 <translation id="4823651846660089135">デバイスは読み取り専用です</translation>
 <translation id="4826849268470072925">タミル語(ITRANS)</translation>
 <translation id="4839847978919684242"><ph name="SELCTED_FILES_COUNT" /> 個のアイテムを選択</translation>
@@ -450,6 +456,7 @@
 <translation id="4935975195727477204">花</translation>
 <translation id="4943368462779413526">フットボール</translation>
 <translation id="4961158930123534723">1 個のフォルダが Parallels Desktop と共有されています</translation>
+<translation id="496656650103537022">「<ph name="FILE_NAME" />」を復元しました</translation>
 <translation id="4969785127455456148">アルバム</translation>
 <translation id="4973523518332075481">名前は <ph name="MAX_LENGTH" /> 文字以内で指定してください</translation>
 <translation id="4973970068702235170">圧縮できませんでした。予期しないエラー: <ph name="ERROR_MESSAGE" /></translation>
@@ -552,6 +559,7 @@
 <translation id="5691596662111998220"><ph name="FILE_NAME" /> が存在しません。</translation>
 <translation id="5698411045597658393"><ph name="NETWORK_NAME" />、ロックを解除</translation>
 <translation id="5700087501958648444">オーディオ情報</translation>
+<translation id="5720028165859493293"><ph name="FILE_NAME" /> をゴミ箱に移動しました</translation>
 <translation id="5724172041621205163">タイ語(Pattachote)キーボード</translation>
 <translation id="5756666464756035725">ハンガリー語 QWERTY</translation>
 <translation id="5763377084591234761">ドイツ語(スイス)</translation>
@@ -622,6 +630,7 @@
 <translation id="6320212353742551423"><ph name="ARCHIVE_TYPE" /> アーカイブ</translation>
 <translation id="6321303798550928047">手を振る</translation>
 <translation id="6327785803543103246">ウェブプロキシ自動検出</translation>
+<translation id="6337014272874260727">クイック ファイルへの固定を解除</translation>
 <translation id="6339145975392024142">US インターナショナル(PC)</translation>
 <translation id="6346310558342052870">アクセスが制限されています</translation>
 <translation id="6356685157277930264">ファイルのフィードバック ウィンドウ</translation>
@@ -662,6 +671,7 @@
 <translation id="6751256176799620176">1 個のフォルダを選択しました</translation>
 <translation id="6755827872271341378">ChromeOS Flex デバイス</translation>
 <translation id="6790428901817661496">再生</translation>
+<translation id="6794539005637808366">アイテムを復元するか、ゴミ箱から新しいフォルダにドラッグしてください</translation>
 <translation id="6795884519221689054">パンダ</translation>
 <translation id="6806699711453372963">Linux との共有を管理</translation>
 <translation id="6806796368146926706">英数字(日本語)キーボード</translation>
@@ -698,6 +708,7 @@
 <translation id="6979158407327259162">Google ドライブ</translation>
 <translation id="6989942356279143254">スウェーデン語</translation>
 <translation id="6990081529015358884">空き容量が不足しています</translation>
+<translation id="6993826899923627728">これらのアイテムはゴミ箱に入っています</translation>
 <translation id="6998711733709403587"><ph name="SELCTED_FOLDERS_COUNT" /> 個のフォルダを選択しました</translation>
 <translation id="7008426324576352165">アップロードを完了するには、組織で追加のストレージが必要です。</translation>
 <translation id="7012943028104619157"><ph name="ROOT_TITLE" />(<ph name="ROOT_SUMMARY" />)</translation>
@@ -743,6 +754,7 @@
 <translation id="7408870451288633753">チェコ語</translation>
 <translation id="7417453074306512035">エチオピア語キーボード</translation>
 <translation id="7417705661718309329">Google マップ</translation>
+<translation id="7419668828140929293">「<ph name="FILENAME" />」を復元しています</translation>
 <translation id="7458955835361612701">最近使用した画像はありません</translation>
 <translation id="7460898608667578234">ウクライナ語</translation>
 <translation id="7469894403370665791">このネットワークに自動接続する</translation>
@@ -771,6 +783,7 @@
 <translation id="7655441028674523381">Google フォトに簡単アクセス</translation>
 <translation id="7658239707568436148">キャンセル</translation>
 <translation id="7663224033570512922">ヒンディー語</translation>
+<translation id="7689532716264131859"><ph name="NUMBER_OF_ITEMS" /> 個のアイテムをゴミ箱に移動しました</translation>
 <translation id="7693909743393669729">ドライブをフォーマットすると、そのドライブに保存されているすべてのデータが消去され、既存のパーティションは非表示のパーティションを含めすべて削除されます。この操作は元に戻せません。</translation>
 <translation id="7695430100978772476">「<ph name="DRIVE_NAME" />」をフォーマットできませんでした</translation>
 <translation id="76959938259365003">ゴミ箱を空にできませんでした。</translation>
@@ -785,6 +798,7 @@
 <translation id="7760449188139285140">中国語(五筆)</translation>
 <translation id="7765158879357617694">移動</translation>
 <translation id="7774365994322694683">鳥</translation>
+<translation id="7780322752056734036"><ph name="NUMBER_OF_ITEMS" /> 個のアイテムを復元しました</translation>
 <translation id="7781829728241885113">昨日</translation>
 <translation id="7788080748068240085">「<ph name="FILE_NAME" />」をオフラインで保存するには、あと <ph name="TOTAL_FILE_SIZE" /> の空き領域が必要です。次をお試しください:<ph name="MARKUP_1" />
         <ph name="MARKUP_2" />オフライン アクセスが不要になったファイルの固定を解除する<ph name="MARKUP_3" />
@@ -965,6 +979,7 @@
 <translation id="947144732524271678"><ph name="ENTRY_COUNT" /> 項目を選択しました。範囲の先頭は <ph name="FROM_ENTRY_NAME" />、末尾は <ph name="TO_ENTRY_NAME" /> です。</translation>
 <translation id="954194396377670556">管理者のポリシーで禁止されていること:</translation>
 <translation id="965477715979482472">英語(南アフリカ)</translation>
+<translation id="976666271385981812"><ph name="NUMBER_OF_ITEMS" /> 個のアイテムをゴミ箱に移動しています</translation>
 <translation id="981121421437150478">オフライン</translation>
 <translation id="988685240266037636">「<ph name="FILE_NAME" />」という名前のファイルはすでに存在します。置き換えますか?</translation>
 <translation id="992401651319295351">入力できるのはあと <ph name="RETRIES" /> 回です。新しい PIN を設定するまでこのネットワークは使用できません。</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ka.xtb b/ui/chromeos/translations/ui_chromeos_strings_ka.xtb
index 6fb3038..b0bb57e3b 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ka.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ka.xtb
@@ -367,6 +367,7 @@
 <translation id="4290535918735525311">1 საქაღალდე გაზიარებულია Linux-თან</translation>
 <translation id="4299729908419173967">ბრაზილიური</translation>
 <translation id="4302605047395093221">ამ მობილურ ქსელთან დასაკავშირებლად მოწყობილობის ყველა მომხმარებელს მოუწევს PIN-კოდის შეყვანა</translation>
+<translation id="4303531889494116116">ეს ქსელი გადატვირთულია. ცადეთ მოგვიანებით.</translation>
 <translation id="4309915981827077375">ზოგადი ინფორმაცია</translation>
 <translation id="432252891123397018">რუმინული სტანდარტული კლავიატურით</translation>
 <translation id="4325128273762811722">სლოვენური</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_kn.xtb b/ui/chromeos/translations/ui_chromeos_strings_kn.xtb
index e27fcdb46..8d973373 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_kn.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_kn.xtb
@@ -162,6 +162,7 @@
 <translation id="2389832672041313158">ಬರ್ಮೀಸ್/ಮ್ಯಾನ್ಮಾರ್</translation>
 <translation id="2392369802118427583">ಸಕ್ರಿಯಗೊಳಿಸಿ</translation>
 <translation id="240770291734945588"><ph name="SPACE_AVAILABLE" /> ಲಭ್ಯವಿದೆ</translation>
+<translation id="2417486498593892439">ನೆಟ್‌ವರ್ಕ್‌ಗೆ ಸೈನ್ ಇನ್ ಮಾಡಿ</translation>
 <translation id="2425665904502185219">ಒಟ್ಟು ಫೈಲ್‌ನ ಗಾತ್ರ</translation>
 <translation id="2428749644083375155"><ph name="NUMBER_OF_ITEMS" /> ಐಟಂಗಳನ್ನು <ph name="FOLDER_NAME" /> ಗೆ ನಕಲಿಸಲಾಗುತ್ತಿದೆ</translation>
 <translation id="2448312741937722512">ಪ್ರಕಾರ</translation>
@@ -326,6 +327,7 @@
 <translation id="3830674330436234648">ಯಾವುದೇ ಪ್ಲೇಬ್ಯಾಕ್ ಲಭ್ಯವಿಲ್ಲ</translation>
 <translation id="383652340667548381">ಸೆರ್ಬಿಯನ್</translation>
 <translation id="385051799172605136">ಹಿಂದೆ</translation>
+<translation id="3851491607336266896">ಕನೆಕ್ಟ್ ಆಗಿದೆ, ಕನೆಕ್ಷನ್ ಸೀಮಿತವಾಗಿದೆ</translation>
 <translation id="3855472144336161447">ಜರ್ಮನ್ ನಿಯೊ 2</translation>
 <translation id="3858860766373142691">ಹೆಸರು</translation>
 <translation id="3866249974567520381">ವಿವರಣೆ</translation>
@@ -939,6 +941,7 @@
 <translation id="8903931173357132290">ಪದವೀಧರ</translation>
 <translation id="8912078710089354287">ಬಾಲ ಅಲ್ಲಾಡಿಸುತ್ತಿರುವ ನಾಯಿ</translation>
 <translation id="8919081441417203123">ಡ್ಯಾನಿಶ್</translation>
+<translation id="8949925099261528566">ಕನೆಕ್ಟ್ ಆಗಿದೆ, ಇಂಟರ್ನೆಟ್ ಇಲ್ಲ</translation>
 <translation id="8965697826696209160">ಸಾಕಷ್ಟು ಸ್ಥಳಾವಕಾಶವಿಲ್ಲ.</translation>
 <translation id="8997962250644902079">ಚೈನೀಸ್ (ಸಾಂಪ್ರದಾಯಿಕ) ಪಿನ್‌ಯಿನ್</translation>
 <translation id="8998871447376656508">ನಿಮ್ಮ Google Drive ನಲ್ಲಿ ಅಪ್‌ಲೋಡ್ ಪೂರ್ಣಗೊಳಿಸಲು ಸಾಕಾಗುವಷ್ಟು ಮುಕ್ತ ಸ್ಥಳಾವಕಾಶವಿಲ್ಲ.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ky.xtb b/ui/chromeos/translations/ui_chromeos_strings_ky.xtb
index 6618c6e6..a3df8967 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ky.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ky.xtb
@@ -365,6 +365,7 @@
 <translation id="4290535918735525311">1 папка Linux аркылуу бөлүшүлдү</translation>
 <translation id="4299729908419173967">Бразилияча</translation>
 <translation id="4302605047395093221">Бул түзмөктү колдонгон адамдардын бардыгы ушул мобилдик тармакка туташуу үчүн PIN кодду киргизиши керек болот</translation>
+<translation id="4303531889494116116">Бул тармак жеткиликсиз. Кийинчерээк кайталап көрүңүз.</translation>
 <translation id="4309915981827077375">Жалпы маалымат</translation>
 <translation id="432252891123397018">Румынча (стандарттуу баскычтоп)</translation>
 <translation id="4325128273762811722">Словенче</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_lo.xtb b/ui/chromeos/translations/ui_chromeos_strings_lo.xtb
index 27b8d863..b8e56a5 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_lo.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_lo.xtb
@@ -162,6 +162,7 @@
 <translation id="2389832672041313158">ພາສາມຽນມາ/ພະມ້າ</translation>
 <translation id="2392369802118427583">ເປີດໃຊ້ງານ</translation>
 <translation id="240770291734945588">ຍັງເຫຼືອ <ph name="SPACE_AVAILABLE" /></translation>
+<translation id="2417486498593892439">ເຂົ້າສູ່ລະບົບຫາເຄືອຂ່າຍ</translation>
 <translation id="2425665904502185219">ຂະຫນາດໄຟລ໌ທັງໝົດ</translation>
 <translation id="2428749644083375155">ກຳລັງສຳເນົາ <ph name="NUMBER_OF_ITEMS" /> ລາຍການໄວ້ໃນ <ph name="FOLDER_NAME" /></translation>
 <translation id="2448312741937722512">ປະ​ເພດ</translation>
@@ -326,6 +327,7 @@
 <translation id="3830674330436234648">ບໍ່ມີການຫຼິ້ນຄືນ</translation>
 <translation id="383652340667548381">ພາສາເຊີ​ເບຍ</translation>
 <translation id="385051799172605136">ກັບ​ຄືນ​</translation>
+<translation id="3851491607336266896">ເຊື່ອມຕໍ່ແລ້ວ, ການເຊື່ອມຕໍ່ຖືກຈຳກັດ</translation>
 <translation id="3855472144336161447">ພາສາເຢຍລະັມນ Neo 2</translation>
 <translation id="3858860766373142691">ຊື່</translation>
 <translation id="3866249974567520381">ລາຍ​ລະ​ອຽດ</translation>
@@ -938,6 +940,7 @@
 <translation id="8903931173357132290">ຈົບ​ການ​ສຶກ​ສາ</translation>
 <translation id="8912078710089354287">ໝາກະດິກຫາງ</translation>
 <translation id="8919081441417203123">ພາສາເດັນມາກ</translation>
+<translation id="8949925099261528566">ເຊື່ອມຕໍ່ແລ້ວ, ບໍ່ມີອິນເຕີເນັດ</translation>
 <translation id="8965697826696209160">ບໍ່ມີເນື້ອທີ່ພຽງພໍ.</translation>
 <translation id="8997962250644902079">ພາສາຈີນ (ຕົວຫຍໍ້) ພິນອິນ</translation>
 <translation id="8998871447376656508">ພື້ນທີ່ຫວ່າງບໍ່ພຽງພໍຢູ່ໃນ Google Drive ຂອງທ່ານເພື່ອສຳເລັດການອັບໂຫຼດ.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_mk.xtb b/ui/chromeos/translations/ui_chromeos_strings_mk.xtb
index 1b86316..0efcb3e 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_mk.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_mk.xtb
@@ -367,6 +367,7 @@
 <translation id="4290535918735525311">1 папка е споделена со Linux</translation>
 <translation id="4299729908419173967">бразилски</translation>
 <translation id="4302605047395093221">Секој што ќе го користи уредов ќе треба да го внесе PIN-кодот за да се поврзе на оваа мобилна мрежа</translation>
+<translation id="4303531889494116116">Мрежава не е достапна. Обидете се повторно подоцна.</translation>
 <translation id="4309915981827077375">Општи информации</translation>
 <translation id="432252891123397018">романски со стандардна тастатура</translation>
 <translation id="4325128273762811722">словенечки</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_mr.xtb b/ui/chromeos/translations/ui_chromeos_strings_mr.xtb
index ea75d36..5e7c615 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_mr.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_mr.xtb
@@ -162,6 +162,7 @@
 <translation id="2389832672041313158">बर्मीज/म्यानमार</translation>
 <translation id="2392369802118427583">सक्रिय करा</translation>
 <translation id="240770291734945588"><ph name="SPACE_AVAILABLE" /> उपलब्ध</translation>
+<translation id="2417486498593892439">नेटवर्कमध्ये साइन इन करा</translation>
 <translation id="2425665904502185219">एकूण फाइल आकार</translation>
 <translation id="2428749644083375155"><ph name="NUMBER_OF_ITEMS" /> आयटम <ph name="FOLDER_NAME" /> वर कॉपी करत आहे</translation>
 <translation id="2448312741937722512">प्रकार</translation>
@@ -326,6 +327,7 @@
 <translation id="3830674330436234648">प्लेबॅक उपलब्ध नाही</translation>
 <translation id="383652340667548381">सर्बियन</translation>
 <translation id="385051799172605136">मागील</translation>
+<translation id="3851491607336266896">कनेक्ट केले, मर्यादित कनेक्टिव्हिटी</translation>
 <translation id="3855472144336161447">जर्मन निओ 2</translation>
 <translation id="3858860766373142691">नाव</translation>
 <translation id="3866249974567520381">वर्णन</translation>
@@ -939,6 +941,7 @@
 <translation id="8903931173357132290">पदवीधर</translation>
 <translation id="8912078710089354287">शेपुट हलवत असलेला कुत्रा</translation>
 <translation id="8919081441417203123">डॅनिश</translation>
+<translation id="8949925099261528566">कनेक्‍ट केले, इंटरनेट नाही</translation>
 <translation id="8965697826696209160">पुरेशी जागा नाही.</translation>
 <translation id="8997962250644902079">चीनी (पारंपरिक) पिनयिन</translation>
 <translation id="8998871447376656508">अपलोड पूर्ण करण्यासाठी तुमच्या Google Drive मध्ये पुरेशी मोकळी जागा नाही.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_ms.xtb b/ui/chromeos/translations/ui_chromeos_strings_ms.xtb
index 7f0c9dd..560d60a 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_ms.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_ms.xtb
@@ -162,6 +162,7 @@
 <translation id="2389832672041313158">Burma/Myanmar</translation>
 <translation id="2392369802118427583">Aktifkan</translation>
 <translation id="240770291734945588"><ph name="SPACE_AVAILABLE" /> tersedia</translation>
+<translation id="2417486498593892439">Log masuk ke rangkaian</translation>
 <translation id="2425665904502185219">Jumlah saiz fail</translation>
 <translation id="2428749644083375155">Menyalin <ph name="NUMBER_OF_ITEMS" /> item ke <ph name="FOLDER_NAME" /></translation>
 <translation id="2448312741937722512">Jenis</translation>
@@ -326,6 +327,7 @@
 <translation id="3830674330436234648">Main balik tidak tersedia</translation>
 <translation id="383652340667548381">Bahasa Serbia</translation>
 <translation id="385051799172605136">Kembali</translation>
+<translation id="3851491607336266896">Disambungkan, kesambungan terhad</translation>
 <translation id="3855472144336161447">Bahasa Jerman Neo 2</translation>
 <translation id="3858860766373142691">Nama</translation>
 <translation id="3866249974567520381">Huraian</translation>
@@ -939,6 +941,7 @@
 <translation id="8903931173357132290">Graduan</translation>
 <translation id="8912078710089354287">Anjing menggoyang-goyangkan ekor</translation>
 <translation id="8919081441417203123">Bahasa Denmark</translation>
+<translation id="8949925099261528566">Disambungkan, tiada Internet</translation>
 <translation id="8965697826696209160">Tiada ruang yang mencukupi.</translation>
 <translation id="8997962250644902079">Pinyin Cina (Tradisional)</translation>
 <translation id="8998871447376656508">Ruang kosong tidak mencukupi dalam Google Drive anda untuk menyelesaikan muat naik.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_my.xtb b/ui/chromeos/translations/ui_chromeos_strings_my.xtb
index f5fd12f..29a407a8 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_my.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_my.xtb
@@ -162,6 +162,7 @@
 <translation id="2389832672041313158">ဗမာ/မြန်မာ</translation>
 <translation id="2392369802118427583">စသုံးရန်</translation>
 <translation id="240770291734945588"><ph name="SPACE_AVAILABLE" /> အသုံးပြုနိုင်သည်</translation>
+<translation id="2417486498593892439">ကွန်ရက်သို့ လက်မှတ်ထိုးဝင်ခြင်း</translation>
 <translation id="2425665904502185219">စုစုပေါင်းဖိုင် အရွယ်အစား</translation>
 <translation id="2428749644083375155"><ph name="NUMBER_OF_ITEMS" /> ခုကို <ph name="FOLDER_NAME" /> သို့ မိတ္တူကူးနေသည်</translation>
 <translation id="2448312741937722512">ပုံစံ</translation>
@@ -326,6 +327,7 @@
 <translation id="3830674330436234648">ဖွင့်ကြည့်၍မရပါ</translation>
 <translation id="383652340667548381">စာဘီယန်</translation>
 <translation id="385051799172605136">နောက်သို့</translation>
+<translation id="3851491607336266896">ချိတ်ဆက်ထားသည်၊ ချိတ်ဆက်နိုင်မှု ကန့်သတ်ထားသည်</translation>
 <translation id="3855472144336161447">German Neo 2</translation>
 <translation id="3858860766373142691">အမည်</translation>
 <translation id="3866249974567520381">ဖေါ်ပြချက်</translation>
@@ -938,6 +940,7 @@
 <translation id="8903931173357132290">ဘွဲ့ရပုဂ္ဂိုလ်</translation>
 <translation id="8912078710089354287">အမြီးလှုပ်နေသည့်ခွေး</translation>
 <translation id="8919081441417203123">ဒိန်းမတ်</translation>
+<translation id="8949925099261528566">ချိတ်ဆက်ထားသည်၊ အင်တာနက်မရှိပါ</translation>
 <translation id="8965697826696209160">နေရာ လုံလုံလောက်လောက် မရှိပါ။</translation>
 <translation id="8997962250644902079">တရုတ် (ရိုးရာ) ပင်ယင်</translation>
 <translation id="8998871447376656508">အပ်လုဒ်ပြီးစီးနိုင်ရန် သင်၏ Google Drive တွင် နေရာ မလုံလောက်ပါ။</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_nl.xtb b/ui/chromeos/translations/ui_chromeos_strings_nl.xtb
index 4a1c397..690e6fa 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_nl.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_nl.xtb
@@ -162,6 +162,7 @@
 <translation id="2389832672041313158">Birmaans/Myanmar</translation>
 <translation id="2392369802118427583">Activeren</translation>
 <translation id="240770291734945588"><ph name="SPACE_AVAILABLE" /> beschikbaar</translation>
+<translation id="2417486498593892439">Inloggen bij netwerk</translation>
 <translation id="2425665904502185219">Totale bestandsgrootte</translation>
 <translation id="2428749644083375155"><ph name="NUMBER_OF_ITEMS" /> items kopiëren naar <ph name="FOLDER_NAME" /></translation>
 <translation id="2448312741937722512">Type</translation>
@@ -326,6 +327,7 @@
 <translation id="3830674330436234648">Afspelen is niet beschikbaar</translation>
 <translation id="383652340667548381">Servisch</translation>
 <translation id="385051799172605136">Terug</translation>
+<translation id="3851491607336266896">Verbonden, beperkte connectiviteit</translation>
 <translation id="3855472144336161447">Duits Neo 2</translation>
 <translation id="3858860766373142691">Naam</translation>
 <translation id="3866249974567520381">Beschrijving</translation>
@@ -365,6 +367,7 @@
 <translation id="4290535918735525311">1 map gedeeld met Linux</translation>
 <translation id="4299729908419173967">Braziliaans</translation>
 <translation id="4302605047395093221">Iedereen die dit apparaat gebruikt, moet de pincode opgeven om verbinding te maken met dit mobiele netwerk</translation>
+<translation id="4303531889494116116">Dit netwerk is bezig. Probeer het later opnieuw.</translation>
 <translation id="4309915981827077375">Algemene informatie</translation>
 <translation id="432252891123397018">Roemeens met standaard toetsenbord</translation>
 <translation id="4325128273762811722">Sloveens</translation>
@@ -940,6 +943,7 @@
 <translation id="8903931173357132290">Afgestudeerde</translation>
 <translation id="8912078710089354287">Hond die kwispelt</translation>
 <translation id="8919081441417203123">Deens</translation>
+<translation id="8949925099261528566">Verbonden, geen internet</translation>
 <translation id="8965697826696209160">Er is onvoldoende ruimte.</translation>
 <translation id="8997962250644902079">Chinees (traditioneel, Pinyin)</translation>
 <translation id="8998871447376656508">Er is onvoldoende ruimte in je Google Drive beschikbaar om de upload af te ronden.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_no.xtb b/ui/chromeos/translations/ui_chromeos_strings_no.xtb
index 35fb4f7..9bb39c886 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_no.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_no.xtb
@@ -162,6 +162,7 @@
 <translation id="2389832672041313158">Burmesisk/myanmarsk</translation>
 <translation id="2392369802118427583">Aktiver</translation>
 <translation id="240770291734945588"><ph name="SPACE_AVAILABLE" /> tilgjengelig</translation>
+<translation id="2417486498593892439">Logg på nettverket</translation>
 <translation id="2425665904502185219">Total filstørrelse</translation>
 <translation id="2428749644083375155">Kopierer <ph name="NUMBER_OF_ITEMS" /> elementer til <ph name="FOLDER_NAME" /></translation>
 <translation id="2448312741937722512">Type</translation>
@@ -326,6 +327,7 @@
 <translation id="3830674330436234648">Ingen avspillinger er tilgjengelige</translation>
 <translation id="383652340667548381">Serbisk</translation>
 <translation id="385051799172605136">Tilbake</translation>
+<translation id="3851491607336266896">Tilkoblet – begrenset tilkobling</translation>
 <translation id="3855472144336161447">Tysk Neo 2</translation>
 <translation id="3858860766373142691">Navn</translation>
 <translation id="3866249974567520381">Beskrivelse</translation>
@@ -365,6 +367,7 @@
 <translation id="4290535918735525311">1 mappe er delt med Linux</translation>
 <translation id="4299729908419173967">Brasiliansk</translation>
 <translation id="4302605047395093221">Alle som bruker denne enheten, må oppgi PIN-koden for å koble til dette mobilnettverket</translation>
+<translation id="4303531889494116116">Dette nettverket er utilgjengelig. Prøv på nytt senere.</translation>
 <translation id="4309915981827077375">Generell informasjon</translation>
 <translation id="432252891123397018">Rumensk med standardtastatur</translation>
 <translation id="4325128273762811722">Slovensk</translation>
@@ -939,6 +942,7 @@
 <translation id="8903931173357132290">Avgangselev</translation>
 <translation id="8912078710089354287">Hund som logrer med halen</translation>
 <translation id="8919081441417203123">Dansk</translation>
+<translation id="8949925099261528566">Tilkoblet – ingen internettilgang</translation>
 <translation id="8965697826696209160">Du har ikke nok ledig plass.</translation>
 <translation id="8997962250644902079">Kinesisk (tradisjonell) pinyin</translation>
 <translation id="8998871447376656508">Det er ikke nok ledig plass på Google Disk til å fullføre opplastingen.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_or.xtb b/ui/chromeos/translations/ui_chromeos_strings_or.xtb
index 11826e9..11dc418 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_or.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_or.xtb
@@ -367,6 +367,7 @@
 <translation id="4290535918735525311">Linux ସହ 1ଟି ଫୋଲ୍ଡର୍ ସେୟାର୍ କରାଯାଇଛି</translation>
 <translation id="4299729908419173967">ବ୍ରାଜିଲିଆନ୍</translation>
 <translation id="4302605047395093221">ଏହି ଡିଭାଇସ୍ ବ୍ୟବହାର କରୁଥିବା ଯେ କୌଣସି ବ୍ୟକ୍ତିଙ୍କୁ ଏହି ମୋବାଇଲ ନେଟୱାର୍କ ସହ ସଂଯୋଗ କରିବା ପାଇଁ PIN ଲେଖିବାକୁ ପଡ଼ିବ</translation>
+<translation id="4303531889494116116">ଏହି ନେଟୱାର୍କ ବ୍ୟସ୍ତ ଅଛି। ପରେ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।</translation>
 <translation id="4309915981827077375">ସାଧାରଣ ସୂଚନା</translation>
 <translation id="432252891123397018">ଷ୍ଟାଣ୍ଡାର୍ଡ କୀବୋର୍ଡ ସହ ରୋମାନିଆନ୍</translation>
 <translation id="4325128273762811722">ସ୍ଲୋଭେନିଆନ୍</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_pa.xtb b/ui/chromeos/translations/ui_chromeos_strings_pa.xtb
index e4030af..632d3d1a 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_pa.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_pa.xtb
@@ -365,6 +365,7 @@
 <translation id="4290535918735525311">Linux ਨਾਲ ਇੱਕ ਫੋਲਡਰ ਸਾਂਝਾ ਕੀਤਾ ਗਿਆ</translation>
 <translation id="4299729908419173967">ਬ੍ਰਾਜ਼ਿਲਿਆਈ</translation>
 <translation id="4302605047395093221">ਇਹ ਡੀਵਾਈਸ ਵਰਤਣ ਵਾਲੇ ਹਰੇਕ ਵਿਅਕਤੀ ਨੂੰ ਇਸ ਮੋਬਾਈਲ ਨੈੱਟਵਰਕ ਨਾਲ ਕਨੈਕਟ ਕਰਨ ਲਈ ਪਿੰਨ ਦਾਖਲ ਕਰਨਾ ਪਵੇਗਾ</translation>
+<translation id="4303531889494116116">ਇਹ ਨੈੱਟਵਰਕ ਵਿਅਸਤ ਹੈ। ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।</translation>
 <translation id="4309915981827077375">ਸਧਾਰਨ ਜਾਣਕਾਰੀ</translation>
 <translation id="432252891123397018">ਮਿਆਰੀ ਕੀ-ਬੋਰਡ ਦੇ ਨਾਲ ਰੋਮਾਨੀਆਈ</translation>
 <translation id="4325128273762811722">ਸਲੋਵੀਨੀ</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_pl.xtb b/ui/chromeos/translations/ui_chromeos_strings_pl.xtb
index 7917789..d17d3c0 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_pl.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_pl.xtb
@@ -365,6 +365,7 @@
 <translation id="4290535918735525311">Folder udostępniono Linuksowi</translation>
 <translation id="4299729908419173967">brazylijski</translation>
 <translation id="4302605047395093221">Aby połączyć się z tą siecią komórkową, każda osoba używająca tego urządzenia będzie musiała wpisać kod PIN</translation>
+<translation id="4303531889494116116">Ta sieć jest zajęta. Spróbuj ponownie później.</translation>
 <translation id="4309915981827077375">Informacje ogólne</translation>
 <translation id="432252891123397018">Rumuński z klawiaturą standardową</translation>
 <translation id="4325128273762811722">Słoweński</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_pt-PT.xtb b/ui/chromeos/translations/ui_chromeos_strings_pt-PT.xtb
index 371fb2a3f7..6d3de25 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_pt-PT.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_pt-PT.xtb
@@ -162,6 +162,7 @@
 <translation id="2389832672041313158">Birmanês/Mianmar</translation>
 <translation id="2392369802118427583">Ativar</translation>
 <translation id="240770291734945588"><ph name="SPACE_AVAILABLE" /> disponível(eis)</translation>
+<translation id="2417486498593892439">Início de sessão na rede</translation>
 <translation id="2425665904502185219">Tamanho total do ficheiro</translation>
 <translation id="2428749644083375155">A copiar <ph name="NUMBER_OF_ITEMS" /> itens para <ph name="FOLDER_NAME" />…</translation>
 <translation id="2448312741937722512">Tipo</translation>
@@ -326,6 +327,7 @@
 <translation id="3830674330436234648">Reprodução não disponível</translation>
 <translation id="383652340667548381">Sérvio</translation>
 <translation id="385051799172605136">Anterior</translation>
+<translation id="3851491607336266896">Ligação estabelecida, conetividade limitada</translation>
 <translation id="3855472144336161447">Alemão Neo 2</translation>
 <translation id="3858860766373142691">Nome</translation>
 <translation id="3866249974567520381">Descrição</translation>
@@ -365,6 +367,7 @@
 <translation id="4290535918735525311">1 pasta partilhada com o Linux.</translation>
 <translation id="4299729908419173967">Português (Brasil)</translation>
 <translation id="4302605047395093221">Qualquer pessoa que utilize este dispositivo tem de introduzir o PIN para estabelecer ligação a esta rede móvel</translation>
+<translation id="4303531889494116116">Esta rede está ocupada. Tente novamente mais tarde.</translation>
 <translation id="4309915981827077375">Informação geral</translation>
 <translation id="432252891123397018">Romeno com teclado padrão</translation>
 <translation id="4325128273762811722">Esloveno</translation>
@@ -939,6 +942,7 @@
 <translation id="8903931173357132290">Graduado</translation>
 <translation id="8912078710089354287">Cão a abanar a cauda</translation>
 <translation id="8919081441417203123">Dinamarquês</translation>
+<translation id="8949925099261528566">Ligação estabelecida, sem Internet</translation>
 <translation id="8965697826696209160">Não existe espaço suficiente.</translation>
 <translation id="8997962250644902079">Pinyin chinês (tradicional)</translation>
 <translation id="8998871447376656508">Não existe espaço livre suficiente no Google Drive para concluir o carregamento.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sl.xtb b/ui/chromeos/translations/ui_chromeos_strings_sl.xtb
index 43823cd..e13604b 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_sl.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_sl.xtb
@@ -162,6 +162,7 @@
 <translation id="2389832672041313158">burmanščina/mjanmarščina</translation>
 <translation id="2392369802118427583">Aktiviraj</translation>
 <translation id="240770291734945588">Na voljo: <ph name="SPACE_AVAILABLE" /></translation>
+<translation id="2417486498593892439">Prijava v omrežje</translation>
 <translation id="2425665904502185219">Skupna velikost datotek</translation>
 <translation id="2428749644083375155">Kopiranje toliko elementov v mapo <ph name="FOLDER_NAME" />: <ph name="NUMBER_OF_ITEMS" /></translation>
 <translation id="2448312741937722512">Vrsta</translation>
@@ -326,6 +327,7 @@
 <translation id="3830674330436234648">Predvajanje ni na voljo</translation>
 <translation id="383652340667548381">srbščina</translation>
 <translation id="385051799172605136">Nazaj</translation>
+<translation id="3851491607336266896">Povezana, omejena povezava</translation>
 <translation id="3855472144336161447">nemščina (Neo 2)</translation>
 <translation id="3858860766373142691">Ime</translation>
 <translation id="3866249974567520381">Opis</translation>
@@ -365,6 +367,7 @@
 <translation id="4290535918735525311">1 mapa v skupni rabi z Linuxom</translation>
 <translation id="4299729908419173967">portugalščina (Brazilija)</translation>
 <translation id="4302605047395093221">Kdor koli bo uporabljal to napravo, bo moral vnesti kodo PIN, če se bo želel povezati z mobilnim omrežjem.</translation>
+<translation id="4303531889494116116">To omrežje je zasedeno. Poskusite znova pozneje.</translation>
 <translation id="4309915981827077375">Splošni podatki</translation>
 <translation id="432252891123397018">romunščina s standardno tipkovnico</translation>
 <translation id="4325128273762811722">slovenščina</translation>
@@ -939,6 +942,7 @@
 <translation id="8903931173357132290">Prehod na običajen račun Google</translation>
 <translation id="8912078710089354287">Kuža, ki maha z repom</translation>
 <translation id="8919081441417203123">danščina</translation>
+<translation id="8949925099261528566">Vzpostavljena povezava, brez interneta</translation>
 <translation id="8965697826696209160">Na voljo ni dovolj prostora.</translation>
 <translation id="8997962250644902079">kitajščina (tradicionalna), pinjin</translation>
 <translation id="8998871447376656508">V Googlu Drive ni dovolj prostora za dokončanje nalaganja.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sr-Latn.xtb b/ui/chromeos/translations/ui_chromeos_strings_sr-Latn.xtb
index f71f7156..91c68aa 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_sr-Latn.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_sr-Latn.xtb
@@ -367,6 +367,7 @@
 <translation id="4290535918735525311">1 direktorijum se deli sa Linux-om</translation>
 <translation id="4299729908419173967">portugalski (Brazil)</translation>
 <translation id="4302605047395093221">Svako ko koristi ovaj uređaj mora da unese PIN da bi se povezao na ovu mobilnu mrežu</translation>
+<translation id="4303531889494116116">Ova mreža je zauzeta. Probajte ponovo kasnije.</translation>
 <translation id="4309915981827077375">Opšte informacije</translation>
 <translation id="432252891123397018">rumunski sa standardnom tastaturom</translation>
 <translation id="4325128273762811722">slovenački</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sr.xtb b/ui/chromeos/translations/ui_chromeos_strings_sr.xtb
index 7cf57eaf..9c0741dd 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_sr.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_sr.xtb
@@ -367,6 +367,7 @@
 <translation id="4290535918735525311">1 директоријум се дели са Linux-ом</translation>
 <translation id="4299729908419173967">португалски (Бразил)</translation>
 <translation id="4302605047395093221">Свако ко користи овај уређај мора да унесе PIN да би се повезао на ову мобилну мрежу</translation>
+<translation id="4303531889494116116">Ова мрежа је заузета. Пробајте поново касније.</translation>
 <translation id="4309915981827077375">Опште информације</translation>
 <translation id="432252891123397018">румунски са стандардном тастатуром</translation>
 <translation id="4325128273762811722">словеначки</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_sv.xtb b/ui/chromeos/translations/ui_chromeos_strings_sv.xtb
index 6c75b03..8fb6961 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_sv.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_sv.xtb
@@ -162,6 +162,7 @@
 <translation id="2389832672041313158">burmesiska (Myanmar)</translation>
 <translation id="2392369802118427583">Aktivera</translation>
 <translation id="240770291734945588"><ph name="SPACE_AVAILABLE" /> tillgängligt</translation>
+<translation id="2417486498593892439">Logga in på nätverket</translation>
 <translation id="2425665904502185219">Total filstorlek</translation>
 <translation id="2428749644083375155"><ph name="NUMBER_OF_ITEMS" /> objekt kopieras till <ph name="FOLDER_NAME" /></translation>
 <translation id="2448312741937722512">Typ</translation>
@@ -326,6 +327,7 @@
 <translation id="3830674330436234648">Ingen uppspelning är tillgänglig</translation>
 <translation id="383652340667548381">serbiska</translation>
 <translation id="385051799172605136">Föregående</translation>
+<translation id="3851491607336266896">Ansluten, begränsad anslutning</translation>
 <translation id="3855472144336161447">Tyska (neo 2)</translation>
 <translation id="3858860766373142691">Namn</translation>
 <translation id="3866249974567520381">Beskrivning</translation>
@@ -939,6 +941,7 @@
 <translation id="8903931173357132290">Kandidat</translation>
 <translation id="8912078710089354287">Hund som viftar på svansen</translation>
 <translation id="8919081441417203123">danska</translation>
+<translation id="8949925099261528566">Ansluten, inget internet</translation>
 <translation id="8965697826696209160">Det finns inte tillräckligt med ledigt utrymme.</translation>
 <translation id="8997962250644902079">traditionell kinesiska (pinyin)</translation>
 <translation id="8998871447376656508">Det finns inte tillräckligt mycket ledigt utrymme på Google Drive för att slutföra uppladdningen.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_th.xtb b/ui/chromeos/translations/ui_chromeos_strings_th.xtb
index 0b35922..8811a65 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_th.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_th.xtb
@@ -162,6 +162,7 @@
 <translation id="2389832672041313158">พม่า/เมียนมา</translation>
 <translation id="2392369802118427583">เปิดใช้งาน</translation>
 <translation id="240770291734945588">ใช้ได้ <ph name="SPACE_AVAILABLE" /></translation>
+<translation id="2417486498593892439">ลงชื่อเข้าใช้เครือข่าย</translation>
 <translation id="2425665904502185219">ขนาดโดยรวมของไฟล์</translation>
 <translation id="2428749644083375155">กำลังคัดลอก <ph name="NUMBER_OF_ITEMS" /> รายการไปยัง <ph name="FOLDER_NAME" /></translation>
 <translation id="2448312741937722512">ประเภท</translation>
@@ -326,6 +327,7 @@
 <translation id="3830674330436234648">ไม่สามารถเล่นได้</translation>
 <translation id="383652340667548381">เซอร์เบีย</translation>
 <translation id="385051799172605136">กลับ</translation>
+<translation id="3851491607336266896">เชื่อมต่อแล้ว การเชื่อมต่อจํากัด</translation>
 <translation id="3855472144336161447">Neo 2 แบบเยอรมัน</translation>
 <translation id="3858860766373142691">ชื่อ</translation>
 <translation id="3866249974567520381">คำอธิบาย</translation>
@@ -365,6 +367,7 @@
 <translation id="4290535918735525311">แชร์กับ Linux แล้ว 1 โฟลเดอร์</translation>
 <translation id="4299729908419173967">บราซิล</translation>
 <translation id="4302605047395093221">ทุกคนที่ใช้อุปกรณ์นี้จะต้องป้อน PIN เพื่อเชื่อมต่อกับเครือข่ายมือถือนี้</translation>
+<translation id="4303531889494116116">เครือข่ายนี้ไม่ว่าง โปรดลองอีกครั้งในภายหลัง</translation>
 <translation id="4309915981827077375">ข้อมูลทั่วไป</translation>
 <translation id="432252891123397018">โรมาเนียด้วยแป้นพิมพ์มาตรฐาน</translation>
 <translation id="4325128273762811722">สโลวีเนีย</translation>
@@ -939,6 +942,7 @@
 <translation id="8903931173357132290">รับปริญญา</translation>
 <translation id="8912078710089354287">สุนัขกำลังกระดิกหาง</translation>
 <translation id="8919081441417203123">เดนมาร์ก</translation>
+<translation id="8949925099261528566">เชื่อมต่อแล้ว ไม่พบอินเทอร์เน็ต</translation>
 <translation id="8965697826696209160">พื้นที่ไม่เพียงพอ</translation>
 <translation id="8997962250644902079">พินอินภาษาจีน (ตัวเต็ม)</translation>
 <translation id="8998871447376656508">มีพื้นที่ว่างใน Google ไดรฟ์ไม่เพียงพอที่จะอัปโหลดให้เสร็จสิ้น</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_tr.xtb b/ui/chromeos/translations/ui_chromeos_strings_tr.xtb
index d45154e..8fbc9ed 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_tr.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_tr.xtb
@@ -162,6 +162,7 @@
 <translation id="2389832672041313158">Birmanca/Myanmar</translation>
 <translation id="2392369802118427583">Etkinleştir</translation>
 <translation id="240770291734945588"><ph name="SPACE_AVAILABLE" /> kullanılabilir</translation>
+<translation id="2417486498593892439">Ağda oturum açın</translation>
 <translation id="2425665904502185219">Toplam dosya boyutu</translation>
 <translation id="2428749644083375155"><ph name="NUMBER_OF_ITEMS" /> öğe <ph name="FOLDER_NAME" /> klasörüne kopyalanıyor</translation>
 <translation id="2448312741937722512">Tür</translation>
@@ -326,6 +327,7 @@
 <translation id="3830674330436234648">Oynatma mevcut değil</translation>
 <translation id="383652340667548381">Sırpça</translation>
 <translation id="385051799172605136">Geri</translation>
+<translation id="3851491607336266896">Bağlı, sınırlı bağlantı</translation>
 <translation id="3855472144336161447">Alman Neo 2</translation>
 <translation id="3858860766373142691">Ad</translation>
 <translation id="3866249974567520381">Açıklama</translation>
@@ -939,6 +941,7 @@
 <translation id="8903931173357132290">Mezun</translation>
 <translation id="8912078710089354287">Kuyruğunu sallayan bir köpek</translation>
 <translation id="8919081441417203123">Danca</translation>
+<translation id="8949925099261528566">Bağlı, internet yok</translation>
 <translation id="8965697826696209160">Yeterli alan yok.</translation>
 <translation id="8997962250644902079">Çince (Geleneksel) Pinyin</translation>
 <translation id="8998871447376656508">Google Drive'ınızda yükleme işlemini tamamlayacak kadar yeterli boş alan yok.</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_uz.xtb b/ui/chromeos/translations/ui_chromeos_strings_uz.xtb
index 85706843..51c1b38 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_uz.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_uz.xtb
@@ -367,6 +367,7 @@
 <translation id="4290535918735525311">1 ta jild Linuxga ulashilgan</translation>
 <translation id="4299729908419173967">Brazil</translation>
 <translation id="4302605047395093221">Bu qurilmaning har qaysi foydalanuvchisi mobil internetga ulanish uchun PIN kodni kiritishi lozim</translation>
+<translation id="4303531889494116116">Bu tarmoq band. Keyinroq qayta urining.</translation>
 <translation id="4309915981827077375">Umumiy tafsilotlar</translation>
 <translation id="432252891123397018">Rumin (Standart klaviatura)</translation>
 <translation id="4325128273762811722">Sloven</translation>
diff --git a/ui/chromeos/translations/ui_chromeos_strings_zh-TW.xtb b/ui/chromeos/translations/ui_chromeos_strings_zh-TW.xtb
index 849f3c34..69feacc 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_zh-TW.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_zh-TW.xtb
@@ -162,6 +162,7 @@
 <translation id="2389832672041313158">緬甸文</translation>
 <translation id="2392369802118427583">啟用</translation>
 <translation id="240770291734945588">可用空間:<ph name="SPACE_AVAILABLE" /></translation>
+<translation id="2417486498593892439">登入網路</translation>
 <translation id="2425665904502185219">總檔案大小</translation>
 <translation id="2428749644083375155">正在將 <ph name="NUMBER_OF_ITEMS" /> 個項目複製到「<ph name="FOLDER_NAME" />」</translation>
 <translation id="2448312741937722512">類型</translation>
@@ -326,6 +327,7 @@
 <translation id="3830674330436234648">無法播放</translation>
 <translation id="383652340667548381">塞爾維亞文</translation>
 <translation id="385051799172605136">返回</translation>
+<translation id="3851491607336266896">已連線,連線能力受限</translation>
 <translation id="3855472144336161447">德文 Neo 2</translation>
 <translation id="3858860766373142691">名稱</translation>
 <translation id="3866249974567520381">說明</translation>
@@ -939,6 +941,7 @@
 <translation id="8903931173357132290">畢業生</translation>
 <translation id="8912078710089354287">搖尾巴的狗</translation>
 <translation id="8919081441417203123">丹麥文</translation>
+<translation id="8949925099261528566">已連線,但沒有網際網路</translation>
 <translation id="8965697826696209160">空間不足。</translation>
 <translation id="8997962250644902079">中文 (繁體拼音)</translation>
 <translation id="8998871447376656508">你的 Google 雲端硬碟可用空間不足,無法完成上傳。</translation>
diff --git a/ui/display/win/display_info.cc b/ui/display/win/display_info.cc
index 84b1341..0d50360b 100644
--- a/ui/display/win/display_info.cc
+++ b/ui/display/win/display_info.cc
@@ -47,7 +47,8 @@
 
 // static
 int64_t DisplayInfo::DeviceIdFromDeviceName(const wchar_t* device_name) {
-  return static_cast<int64_t>(base::Hash(base::WideToUTF8(device_name)));
+  return static_cast<int64_t>(
+      base::PersistentHash(base::WideToUTF8(device_name)));
 }
 
 bool DisplayInfo::operator==(const DisplayInfo& rhs) const {
diff --git a/ui/display/win/screen_win.cc b/ui/display/win/screen_win.cc
index 77e2847d..951d909 100644
--- a/ui/display/win/screen_win.cc
+++ b/ui/display/win/screen_win.cc
@@ -723,6 +723,11 @@
                                                          : *it;
 }
 
+// static
+int64_t ScreenWin::DeviceIdFromDeviceName(const wchar_t* device_name) {
+  return display::win::DisplayInfo::DeviceIdFromDeviceName(device_name);
+}
+
 HWND ScreenWin::GetHWNDFromNativeWindow(gfx::NativeWindow window) const {
   NOTREACHED();
   return nullptr;
diff --git a/ui/display/win/screen_win.h b/ui/display/win/screen_win.h
index 9c052a6..fd88812 100644
--- a/ui/display/win/screen_win.h
+++ b/ui/display/win/screen_win.h
@@ -152,6 +152,9 @@
   // unrecognized id was specified or if this was called during a screen update.
   static ScreenWinDisplay GetScreenWinDisplayWithDisplayId(int64_t id);
 
+  // Returns the device id for the given `device_name`.
+  static int64_t DeviceIdFromDeviceName(const wchar_t* device_name);
+
   // Returns the HWND associated with the NativeWindow.
   virtual HWND GetHWNDFromNativeWindow(gfx::NativeWindow view) const;
 
diff --git a/ui/gfx/linux/gbm_wrapper.cc b/ui/gfx/linux/gbm_wrapper.cc
index cc490f7..df9736a5 100644
--- a/ui/gfx/linux/gbm_wrapper.cc
+++ b/ui/gfx/linux/gbm_wrapper.cc
@@ -30,56 +30,20 @@
 
 namespace {
 
-// Function availability can be tested by checking if the address of gbm_* is
-// not nullptr.
-#define WEAK_GBM_FN(x) extern "C" __attribute__((weak)) decltype(x) x
-
-// TODO(https://crbug.com/784010): Remove these once support for Ubuntu Trusty
-// is dropped.
-WEAK_GBM_FN(gbm_bo_map);
-WEAK_GBM_FN(gbm_bo_unmap);
-
-// TODO(https://crbug.com/784010): Remove these once support for Ubuntu Trusty
-// and Debian Stretch are dropped.
-WEAK_GBM_FN(gbm_bo_create_with_modifiers);
-WEAK_GBM_FN(gbm_bo_get_handle_for_plane);
-WEAK_GBM_FN(gbm_bo_get_modifier);
-WEAK_GBM_FN(gbm_bo_get_offset);
-WEAK_GBM_FN(gbm_bo_get_plane_count);
-WEAK_GBM_FN(gbm_bo_get_stride_for_plane);
-
-bool HaveGbmMap() {
-  return gbm_bo_map && gbm_bo_unmap;
-}
-
-bool HaveGbmModifiers() {
-  return gbm_bo_create_with_modifiers && gbm_bo_get_modifier;
-}
-
-bool HaveGbmMultiplane() {
-  return gbm_bo_get_handle_for_plane && gbm_bo_get_offset &&
-         gbm_bo_get_plane_count && gbm_bo_get_stride_for_plane;
-}
-
 uint32_t GetHandleForPlane(struct gbm_bo* bo, int plane) {
-  CHECK(HaveGbmMultiplane() || plane == 0);
-  return HaveGbmMultiplane() ? gbm_bo_get_handle_for_plane(bo, plane).u32
-                             : gbm_bo_get_handle(bo).u32;
+  return gbm_bo_get_handle_for_plane(bo, plane).u32;
 }
 
 uint32_t GetStrideForPlane(struct gbm_bo* bo, int plane) {
-  CHECK(HaveGbmMultiplane() || plane == 0);
-  return HaveGbmMultiplane() ? gbm_bo_get_stride_for_plane(bo, plane)
-                             : gbm_bo_get_stride(bo);
+  return gbm_bo_get_stride_for_plane(bo, plane);
 }
 
 uint32_t GetOffsetForPlane(struct gbm_bo* bo, int plane) {
-  CHECK(HaveGbmMultiplane() || plane == 0);
-  return HaveGbmMultiplane() ? gbm_bo_get_offset(bo, plane) : 0;
+  return gbm_bo_get_offset(bo, plane);
 }
 
 int GetPlaneCount(struct gbm_bo* bo) {
-  return HaveGbmMultiplane() ? gbm_bo_get_plane_count(bo) : 1;
+  return gbm_bo_get_plane_count(bo);
 }
 
 int GetPlaneFdForBo(gbm_bo* bo, size_t plane) {
@@ -227,7 +191,6 @@
   }
 
   sk_sp<SkSurface> GetSurface() override {
-    CHECK(HaveGbmMap());
     DCHECK(!mmap_data_);
     uint32_t stride;
     void* addr;
@@ -251,7 +214,6 @@
 
  private:
   static void UnmapGbmBo(void* pixels, void* context) {
-    CHECK(HaveGbmMap());
     Buffer* buffer = static_cast<Buffer*>(context);
     gbm_bo_unmap(buffer->bo_, buffer->mmap_data_);
     buffer->mmap_data_ = nullptr;
@@ -276,7 +238,7 @@
   DCHECK(bo);
   gfx::NativePixmapHandle handle;
 
-  const uint64_t modifier = HaveGbmModifiers() ? gbm_bo_get_modifier(bo) : 0;
+  const uint64_t modifier = gbm_bo_get_modifier(bo);
   const int plane_count = GetPlaneCount(bo);
   // The Mesa's gbm implementation explicitly checks whether plane count <= and
   // returns 1 if the condition is true. Nevertheless, use a DCHECK here to make
@@ -343,7 +305,6 @@
       const std::vector<uint64_t>& modifiers) override {
     if (modifiers.empty())
       return CreateBuffer(format, size, flags);
-    CHECK(HaveGbmModifiers());
     struct gbm_bo* bo = gbm_bo_create_with_modifiers(
         device_, size.width(), size.height(), format, modifiers.data(),
         modifiers.size());
diff --git a/ui/gl/gl_image_io_surface.mm b/ui/gl/gl_image_io_surface.mm
index 3edeb22..3487cbc 100644
--- a/ui/gl/gl_image_io_surface.mm
+++ b/ui/gl/gl_image_io_surface.mm
@@ -235,11 +235,6 @@
   format_ = format;
   io_surface_.reset(io_surface, base::scoped_policy::RETAIN);
   io_surface_id_ = io_surface_id;
-
-  // YUV_420_BIPLANAR and P010 are not supported by BindTexImage. A separate
-  // GLImage must be created for each of their planes.
-  DCHECK_NE(format_, BufferFormat::YUV_420_BIPLANAR);
-  DCHECK_NE(format_, BufferFormat::P010);
   io_surface_plane_ = io_surface_plane;
   return true;
 }
diff --git a/ui/gl/gl_switches.cc b/ui/gl/gl_switches.cc
index 8fedf161..e138cca 100644
--- a/ui/gl/gl_switches.cc
+++ b/ui/gl/gl_switches.cc
@@ -229,6 +229,12 @@
 const base::FeatureParam<int> kVerifyDrawOffsetY{
     &kDirectCompositionVerifyDrawOffset, "verify_draw_offset_y", 0};
 
+// Adjust the letterbox video size and position to the center of the screen so
+// that DWM power optimization can be turned on.
+BASE_FEATURE(kDirectCompositionLetterboxVideoOptimization,
+             "DirectCompositionLetterboxVideoOptimization",
+             base::FEATURE_DISABLED_BY_DEFAULT);
+
 // Allow dual GPU rendering through EGL where supported, i.e., allow a WebGL
 // or WebGPU context to be on the high performance GPU if preferred and Chrome
 // internal rendering to be on the low power GPU.
diff --git a/ui/gl/gl_switches.h b/ui/gl/gl_switches.h
index 3f90dc96..cd08370b 100644
--- a/ui/gl/gl_switches.h
+++ b/ui/gl/gl_switches.h
@@ -99,6 +99,7 @@
 GL_EXPORT extern const base::FeatureParam<int> kVerifyDrawOffsetX;
 GL_EXPORT extern const base::FeatureParam<int> kVerifyDrawOffsetY;
 GL_EXPORT BASE_DECLARE_FEATURE(kDirectCompositionSoftwareOverlays);
+GL_EXPORT BASE_DECLARE_FEATURE(kDirectCompositionLetterboxVideoOptimization);
 GL_EXPORT BASE_DECLARE_FEATURE(kEGLDualGpuRendering);
 GL_EXPORT BASE_DECLARE_FEATURE(kIntelVpSuperResolution);
 GL_EXPORT BASE_DECLARE_FEATURE(kDefaultANGLEOpenGL);
diff --git a/ui/gl/swap_chain_presenter.cc b/ui/gl/swap_chain_presenter.cc
index 1e97295..a96175b 100644
--- a/ui/gl/swap_chain_presenter.cc
+++ b/ui/gl/swap_chain_presenter.cc
@@ -584,6 +584,11 @@
     gfx::Size* swap_chain_size,
     gfx::Transform* visual_transform,
     gfx::Rect* visual_clip_rect) {
+  if (!base::FeatureList::IsEnabled(
+          features::kDirectCompositionLetterboxVideoOptimization)) {
+    return;
+  }
+
   if (monitor_size.IsEmpty())
     return;
 
diff --git a/ui/views/accessibility/view_accessibility.cc b/ui/views/accessibility/view_accessibility.cc
index 6dc6b89..d29bab7 100644
--- a/ui/views/accessibility/view_accessibility.cc
+++ b/ui/views/accessibility/view_accessibility.cc
@@ -205,10 +205,13 @@
       data->SetNameExplicitlyEmpty();
   }
 
-  if (custom_data_.HasStringAttribute(
-          ax::mojom::StringAttribute::kDescription)) {
-    data->SetDescription(custom_data_.GetStringAttribute(
-        ax::mojom::StringAttribute::kDescription));
+  std::string description;
+  if (custom_data_.GetStringAttribute(ax::mojom::StringAttribute::kDescription,
+                                      &description)) {
+    if (!description.empty())
+      data->SetDescription(description);
+    else
+      data->SetDescriptionExplicitlyEmpty();
   }
 
   if (custom_data_.GetHasPopup() != ax::mojom::HasPopup::kFalse)
@@ -241,8 +244,8 @@
     // accessible name. Only use the tooltip as the accessible description if
     // it's different from the name, otherwise users might be puzzled as to why
     // their screen reader is announcing the same thing twice.
-    if (tooltip !=
-        data->GetString16Attribute(ax::mojom::StringAttribute::kName)) {
+    if (!tooltip.empty() && tooltip != data->GetString16Attribute(
+                                           ax::mojom::StringAttribute::kName)) {
       data->SetDescription(base::UTF16ToUTF8(tooltip));
     }
   }
@@ -426,8 +429,8 @@
       description_from == ax::mojom::DescriptionFrom::kAttributeExplicitlyEmpty)
       << "If the description is being removed to improve the user experience, "
          "|description_from| should be set to |kAttributeExplicitlyEmpty|.";
-  custom_data_.SetDescription(description);
   custom_data_.SetDescriptionFrom(description_from);
+  custom_data_.SetDescription(description);
 }
 
 void ViewAccessibility::OverrideDescription(
diff --git a/ui/views/accessibility/view_ax_platform_node_delegate_mac_unittest.cc b/ui/views/accessibility/view_ax_platform_node_delegate_mac_unittest.cc
index c1cc0af..ba43319d 100644
--- a/ui/views/accessibility/view_ax_platform_node_delegate_mac_unittest.cc
+++ b/ui/views/accessibility/view_ax_platform_node_delegate_mac_unittest.cc
@@ -28,7 +28,10 @@
     node_data->role = role_;
     node_data->SetNameChecked(name_);
     if (description_) {
-      node_data->SetDescription(*description_);
+      if (description_->empty())
+        node_data->SetDescriptionExplicitlyEmpty();
+      else
+        node_data->SetDescription(*description_);
     }
   }
 
diff --git a/ui/views/bubble/bubble_dialog_model_host.cc b/ui/views/bubble/bubble_dialog_model_host.cc
index 8dcc2ba..50af229 100644
--- a/ui/views/bubble/bubble_dialog_model_host.cc
+++ b/ui/views/bubble/bubble_dialog_model_host.cc
@@ -41,11 +41,16 @@
 namespace views {
 namespace {
 
+// Extra margin to be added to contents view when it's inside a scroll view.
+constexpr int kScrollViewVerticalMargin = 2;
+
 BubbleDialogModelHost::ContentsView* SetAndGetContentsView(
     BubbleDialogModelHost* parent,
     ui::ModalType modal_type) {
+  const bool is_modal_dialog = modal_type != ui::MODAL_TYPE_NONE;
   auto contents_view_unique =
-      std::make_unique<BubbleDialogModelHost::ContentsView>(parent);
+      std::make_unique<BubbleDialogModelHost::ContentsView>(parent,
+                                                            is_modal_dialog);
   BubbleDialogModelHost::ContentsView* contents_view =
       contents_view_unique.get();
 
@@ -53,9 +58,7 @@
   // content. Thus, the content has to be manually set by the view inside a
   // scroll view. Modal dialogs handle their own size via constrained windows,
   // so we can add a scroll view to the DialogModel directly.
-  if (modal_type == ui::MODAL_TYPE_NONE) {
-    parent->SetContentsView(std::move(contents_view_unique));
-  } else {
+  if (is_modal_dialog) {
     constexpr int kMaxDialogHeight = 448;
     auto scroll_view = std::make_unique<views::ScrollView>();
     scroll_view->ClipHeightTo(0, kMaxDialogHeight);
@@ -63,6 +66,8 @@
         views::ScrollView::ScrollBarMode::kDisabled);
     scroll_view->SetContents(std::move(contents_view_unique));
     parent->SetContentsView(std::move(scroll_view));
+  } else {
+    parent->SetContentsView(std::move(contents_view_unique));
   }
   return contents_view;
 }
@@ -217,9 +222,22 @@
 // into this class. This was done in steps to limit the size of the diff.
 class BubbleDialogModelHost::ContentsView : public BoxLayoutView {
  public:
-  explicit ContentsView(BubbleDialogModelHost* parent) : parent_(parent) {
+  ContentsView(BubbleDialogModelHost* parent, bool is_modal_dialog)
+      : parent_(parent) {
     // Note that between-child spacing is manually handled using kMarginsKey.
     SetOrientation(views::BoxLayout::Orientation::kVertical);
+    // Margins are added directly in the dialog. When the dialog is modal, these
+    // contents are wrapped by a scroll view and margins are added outside of it
+    // (instead of outside this contents). This causes some items (e.g
+    // emphasized buttons) to be cut by the scroll view margins (see
+    // crbug.com/1360772). Since we do want the margins outside the scroll view
+    // (so they are always present when scrolling), we add
+    // `kScrollViewVerticalMargin` inside the contents view and later remove it
+    // from the dialog margins.
+    // TODO(crbug.com/1348165): Remove this workaround when contents view
+    // directly supports a scroll view.
+    if (is_modal_dialog)
+      SetInsideBorderInsets(gfx::Insets::VH(kScrollViewVerticalMargin, 0));
   }
 
   void OnThemeChanged() override {
@@ -632,17 +650,21 @@
   }
 
   contents_view_->InvalidateLayout();
-
-  // Since ContentsView can have ScrollView as a child view, dialog margins
-  // may not be taken into account by them. Thus, reset the dialog margins and
-  // add insets directly to contents view.
-  set_margins(gfx::Insets());
-  contents_view_->SetInsideBorderInsets(gfx::Insets::TLBR(
-      GetDialogTopMargins(layout_provider, first_field, GetPassKey()), 0,
+  // Set margins based on the first and last item. Note that we remove margins
+  // that were already added to contents view at construction.
+  // TODO(crbug.com/1348165): Remove the extra margin workaround when contents
+  // view directly supports a scroll view.
+  const int extra_margin = scroll_view ? kScrollViewVerticalMargin : 0;
+  const int top_margin =
+      GetDialogTopMargins(layout_provider, first_field, GetPassKey()) -
+      extra_margin;
+  const int bottom_margin =
       GetDialogBottomMargins(layout_provider, last_field,
                              GetDialogButtons() != ui::DIALOG_BUTTON_NONE,
-                             GetPassKey()),
-      0));
+                             GetPassKey()) -
+      extra_margin;
+  set_margins(gfx::Insets::TLBR(top_margin >= 0 ? top_margin : 0, 0,
+                                bottom_margin >= 0 ? bottom_margin : 0, 0));
 }
 
 void BubbleDialogModelHost::OnWindowClosing() {
diff --git a/ui/views/controls/button/image_button_factory.cc b/ui/views/controls/button/image_button_factory.cc
index 97050ed..f00466a 100644
--- a/ui/views/controls/button/image_button_factory.cc
+++ b/ui/views/controls/button/image_button_factory.cc
@@ -52,9 +52,14 @@
     Button::PressedCallback callback,
     const gfx::VectorIcon& icon,
     absl::optional<int> dip_size) {
+  // We can't use `value_or` as that ALWAYS evaluates the false case, which is
+  // undefined for some valid and commonly used Chrome vector icons.
+  const int dip_size_value = dip_size.has_value()
+                                 ? dip_size.value()
+                                 : GetDefaultSizeOfVectorIcon(icon);
+
   auto button = std::make_unique<ColorTrackingVectorImageButton>(
-      std::move(callback), icon,
-      dip_size.value_or(GetDefaultSizeOfVectorIcon(icon)));
+      std::move(callback), icon, dip_size_value);
   ConfigureVectorImageButton(button.get());
   return button;
 }
diff --git a/ui/views/widget/ax_native_widget_mac_unittest.mm b/ui/views/widget/ax_native_widget_mac_unittest.mm
index 106f6b1..c3c03f4 100644
--- a/ui/views/widget/ax_native_widget_mac_unittest.mm
+++ b/ui/views/widget/ax_native_widget_mac_unittest.mm
@@ -333,7 +333,7 @@
 TEST_F(AXNativeWidgetMacTest, HelpAttribute) {
   Label* label = new Label(base::SysNSStringToUTF16(kTestStringValue));
   label->SetSize(GetWidgetBounds().size());
-  EXPECT_NSEQ(@"", A11yElementAtMidpoint().accessibilityHelp);
+  EXPECT_NSEQ(nil, A11yElementAtMidpoint().accessibilityHelp);
   label->SetTooltipText(base::SysNSStringToUTF16(kTestPlaceholderText));
   widget()->GetContentsView()->AddChildView(label);
   EXPECT_NSEQ(kTestPlaceholderText, A11yElementAtMidpoint().accessibilityHelp);
diff --git a/ui/webui/resources/cr_components/localized_link/localized_link.html b/ui/webui/resources/cr_components/localized_link/localized_link.html
index ee9e52e..f74e6947 100644
--- a/ui/webui/resources/cr_components/localized_link/localized_link.html
+++ b/ui/webui/resources/cr_components/localized_link/localized_link.html
@@ -10,7 +10,6 @@
 
   a[href] {
     color: var(--cr-link-color);
-    text-decoration: none;
   }
 
   /**